二、记录数据长度未做截断。这是我在对防注入程序影响论坛运行的测试中发现的。如图3所示,如果发帖内容中包含被过滤字符时,帖子内容会被完全记录到数据库中。一般的论坛或文章系统对发表文章的长度都是限定的,但SQL通用防注入程序并未对此做出限制。如果攻击者在被保护文件的url后提交一段超长的内容,很可能会导致程序的崩溃。因为危害较大,我没有试验,但我提交长达100K的内容却是被照常记录的。
图 3
三、数据内容的转换及爆库问题。从代码中看,程序对非法提交的数据是未经转换就完全直接记录到数据库中的。也就是说,无论你提交什么只要包含被过滤的内容程序就会把你提交的所有内容进行记录。这个问题本来是并无大碍的,但某些站长为了“安全”起见,喜欢把mdb文件一律改为asp后缀的。再加上防注入程序的数据库中只有一个表,我们就可以通过在被保护文件url后直接写入数据库获得webshell了,在测试过程中,我们把sqlin.mdb改为sqlin.asp,然后在被保护文件的url后输入了一个冰浪子微型ASP后门。用冰狐客户端进行连接后成功获得wedshll。
因为这种获取webshell的方法需要确定对方的数据库是以ASP形式运行的,并且知道数据路径,所以我们必须想办法得到这个数据库的路径。一般情况下,我们可以直接猜数据库路径,但其实这个路径是可以暴出来的,纵观整个防注入程序,并没有发现什么防爆库的语句,所以我们只须直接访问或用\大法就能爆出这个数据库了.而如果是把程序代码直接放到数据库连接文件后的话,由于数据连接文件一般都包含防爆语句,我们就不能爆出数据库的地址了。
上面说的都是数据记录过程中的问题,有能力的站长可以自己动手修补相关漏洞,比如对大量重复提交法数据的IP自动屏蔽等。其实,我们完全可以去掉数据记录部分代码,这样并不影响对变量的过滤,而且既使记录了攻击者的信息作用也不是很大的。所以我建议最好还是去掉这段代码,这样一来所有的漏洞就都不复存了。
好了,本文的分折就到此为止,最后提醒大家在使用安全防范程序时也要注意程序自身的安全问题
特别提示,防注入程序3.0也有漏洞,而且漏洞更为严重
