一、关于

本文尽量以覆盖常见web安全漏洞的测试为目的, 且以中高危漏洞的检测为主,低危漏洞暂不考虑.

建议测试的漏洞类型包含: 任意文件上传、SQL 注入、命令注入、代码执行、存储型 XSS、SSRF、XXE、任意文件读取.

二、流程

测试流程一般分为2步,扫描器测试和人工测试,如下分别介绍. 1、扫描器测试 扫描器选择Burpsuite(或者其他工具),Burpsuite可覆盖所有常见web漏洞. 使用流程如下:

1)选择Target功能标签

2)在需要扫描的的目标url上右键弹出菜单

3)在弹出的菜单上选择Spider this host

4)过一段时间后查看Spider功能标签查看是否完成爬虫

如果Requests queued和Forms queued都是0则代表完成了爬虫。

5)在Target功能标签里右键单击目标域名,并选择Actively scan this host

6)查看Scanner功能标签中的扫描情况,如下图所示

2、人工测试 扫描器的测试方法是污染参数的正常数据,通过服务器返回响应内容判断漏洞是否存在, 可覆盖大部分的测试范围,但存在下面几种情况无法直接被扫描器测试.

1)参数内容被加密(如对称加密,非对称加密)

2)参数有其他限制(如测试url有csrftoken等防御措施)

3)参数的内容不是正常的格式(如json格式,序列化字符串)

4)漏洞触发需要多个页面的联合操作(如存储型xss,二次sql注入)

5)逻辑漏洞(如整数溢出,越权)

6)通过js生成的请求(这种情况js生成post请求较多)

7)服务器前面有waf防护

可根据burpsuite的Proxy|HTTP history中的URL来检查有没有满足以上条件的请求,如下图:

现对这几种情况分别简单举例:

1)参数内容被加密 待测试url为:https://www.test.com/?a=bmloYW8=

这里参数a的值是bmloYW8=,猜测是base64编码后的内容,经检验可base64解码, 说明较大概率是服务器接收参数值后会先经过base64解码再响应, 于是测试时需要将污染数据先经过base64编码再发送到服务器. 可通过自行编码实现这个功能或通过sqlmap中的eval功能来实现测试.

2)参数有其他限制 待测试url有csrftoken保护,这种情况也可以通过自行编码或者sqlmap的csrf-token和csrf-url功能来实现测试,详情可参考 sqlmap –hh | grep csrf

3)参数的内容不是正常的格式 待测试url为:https://www.test.com/?a={‘p1’:v1,’p2’:v2}

这里参数 a 的值是{‘p1’:v1,’p2’:v2},也即通过字典类型传参, 这种情况可通过sqlmap检测或手动编码实现检测. Sqlmap 检测命令:(这里检测 a 参数中的 p1 参数) sqlmap –u “https://www.test.com/?a={‘p1’:v1*,’p2’:v2}”

4)漏洞触发需要多个页面的联合操作 待测试url为:https://www.test.com/?a=value

a 的内容会被存储到数据库中并在管理员后台显示,这种情况需要xss平台来检测 a 参数是否存在存储型 xss 漏洞.

5)逻辑漏洞 待测试url为:https://www.test.com/?a=value

这里的 a 传入的值为付款的值,如在前端页面正常的值是 100 元,测试时可通过burpsuite的proxy功能将100修改成0或-1等,通过查看响应是否支付成功判断是否存在逻辑漏洞.

6)通过js生成的请求 GET请求访问 https://www.test.com/?a=value 后发现响应内容中有js,

且js会自动生成一个如下的POST请求:

这种通过 js 生成的请求无法通过burpsuite等扫描器测试到,需要自行捕获并测试.

如在burpsuite中测试可通过右键Do an active scan功能实现.

7)服务器有waf防护 这种情况下只能靠个人经验测试,可尝试不同的waf绕过手段测试.

转载请注明来自FreeMe'S Blog,本文地址:https://freeme.cc/77.html

文章仅供学习研究,请遵守您当地的法律法规.