WEB渗透漏洞整理之SQL盲注

漏洞等级:高
漏洞风险:会使攻击者远程查看、修改或删除数据库内条目和表单
N-Base分类:远程命令执行----SQL注入
漏洞描述
SQL注入是一种WEB程序的漏洞,通过注射,攻击者可以获得数据库中存储的数据,造成机密数据的外泄。SQL注入攻击(SQL injection),是发生于应用程序至数据库层的安全漏洞。简而言之,是在输入的数据字符串之中夹带SQL指令,在安全不达标的程序中,开发者忽略了检查,那么这些夹带进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,导致灾难性后果发生。
测试工具:APPSCAN、AWVS、BURP、SQLMAP、PYTHON脚本
实战案例
SQL注入的威力就不用多说了,实际环境中的SQL注入基本都是盲注,很难找到直接返回查询结果的傻应用了。
本次提供的一个案例相对来说比较有趣,因为它存在在登录页面。
WEB渗透漏洞整理之SQL盲注
这个案例的前提是需要一个能正常登录的测试账号,任何权限的都可以,注入点就在username参数上,当把test改为test and 1=1,密码保持不变时,能够正常登录,当把test改为test and 1=2时,登录失败。很明显这是一个SQL盲注漏洞。当然实际的测试注入的payload的没有这么简单,会有一些特殊符号,这里为了方便演示。当把test改为a or 1=1时,有趣的事情发生了,还是依然可以登录。
WEB渗透漏洞整理之SQL盲注
我们可以做什么?我们可以不用知道任何一个用户名,用a or 1=1去**所有用户的密码了。假如这个注入点在password上,那就是另外一个故事了—认证绕过漏洞。可以使用任何用户名去配a or 1=1的密码去登录了。
当然,有人会说,都可以SQL注入了,何不直接提取用户名密码,还**和什么劲。哈哈,言之有理,我竟无言以对。
WEB渗透漏洞整理之SQL盲注
然而,数据库中的用户名密码加密了怎么办?????
解决建议
1.过滤特殊字符:| " ’ % ; () & + 等特殊字符;
2.过滤关键字:select delete insert and or 等SQL关键字;
3.屏蔽服务器返回的错误信息。
4.建议编写统一过滤系统进行过滤。