1. 验证漏洞的真实性
根据针对公司多个项目的扫描,得到了几种常见的漏洞情况,以下是这几种漏洞的验证方法:
1.1 SQL盲注/SQL注入
验证方法:利用sqlmap,GET、POST方式可以直接sqlmap -u "url",cookie SQL注入新建txt文档把请求包大数据复制粘贴到里面,再利用sqlmap -r "xxx.txt",查寻是否存在注入点。
sqlmap使用教程可参考:
https://www.acunetix.com/vulnerability-scanner/
1.2 CSRF跨站伪造请求攻击
CSRF,利用已登录的用户身份,以用户的名义发送恶意请求,完成非法操作。
举例说明:用户如果浏览并信任了存在CSRF漏洞的网站A,浏览器产生了相应的cookie,用户在没有退出该网站的情况下,访问了危险网站B 。危险网站B要求访问网站A,发出一个请求。浏览器带着用户的cookie信息访问了网站A,因为网站A不知道是用户自身发出的请求还是危险网站B发出的请求,所以就会处理危险网站B的请求,这样就完成了模拟用户操作的目的。
验证方法:
· 同个浏览器打开两个页面,一个页面权限失效后,另一个页面是否可操作成功,如果仍然能操作成功即存在风险。
· 使用工具发送请求,在http请求头中不加入referer字段,检验返回消息的应答,应该重新定位到错误界面或者登录界面。
1.3 HTTP缓慢拒绝服务攻击
HTTP缓慢拒绝服务攻击是指以极低的速度往服务器发送HTTP请求。由于Web Server对于并发的连接数都有一定的上限,因此若是恶意地占用住这些连接不释放,那么Web Server的所有连接都将被恶意连接占用,从而无法接受新的请求,导致拒绝服务。要保持住这个连接,RSnake构造了一个畸形的HTTP请求,准确地说,是一个不完整的HTTP请求。
验证方法可参考:
https://www.acunetix.com/vulnerability-scanner/
1.4 源代码泄露
攻击者可以通过分析源代码来收集敏感信息(数据库连接字符串、应用程序逻辑)。此信息可用于进行进一步攻击。
验证方法:
在url后加/.svn/all-wcprops或者使用工具SvnExploit测试
例如:
1.5 文件信息泄露
开发人员很容易上传一些敏感信息如:邮箱信息、SVN信息、内部账号及密码、数据库连接信息、服务器配置信息,导致文件信息泄露。
验证方法可参考:
https://www.acunetix.com/vulnerability-scanner/
5. 总结
AWVS给出的扫描结果并不代表完全真实可靠,还需要依靠人工再次验证判断。在AWVS扫描结果基础上,根据不同的严重级别进行排序、手工+工具验证的方式对漏洞验证可靠性,排除误报的情况,并尽可能找出漏报的情况,把本次扫描结果汇总,对以上已验证存在的安全漏洞排列优先级、漏洞威胁程度,并提出每个漏洞的修复建议。总的来说我们可以借助这个工具来进行扫描分析,但不能完全依赖于这个工具。