手工测试,一般是指结合浏览器和burp的重放进行。
1、反射型xss手工测试
1.1 测试是否返回
如果测试参数在响应的体部中并未返回,那么基本可以判断不存在反射型xss。
问题1:测试参数在响应中固有
- 如果测试参数除了包含返回之外,还存在固有。这样的话,直接根据测试参数是否在响应体部中包含就没有意义。
- 解决办法是:样本请求一次,然后设置测试参数为适当值,再进行测试。比较后者参数值在两次请求的响应体部中的个数,如果在后者中的个数大于前者,说明存在返回。
问题2:跳转其它页面
- 由于测试参数包含敏感字符或者关键字,服务端转向到其它页面。
- 解决办法:会有一定影响,但一般不用过于担心,异常页面只要包含测试参数,那么也可以存在xss
1.2 测试敏感字符
xss的利用大多数情况下都需要基于敏感字符,而对敏感字符进行编码是xss的主要防护方式之一。
所以在构造更正式的脚本payload之前,一般会简单的对常见的几个敏感字符进行测试。'"<>/
1.3 测试关键词和其它
除了敏感字符过滤,服务端还可能过滤常见的html/js关键词,比如alert,window,eval等。
以及对参数字符长度的检查、设置响应头部等。
1.4 测试脚本payload
2、存储型xss手工测试
其测试过程和反射型xss手工测试基本一致,区别在于基于一个请求携带payload发送后,需要基于另一个请求以获取payload进行分析。
3、dom型xss手工测试
相对反射型和存储型的嵌入式解析,dom型的场景更加复杂,并没有太好的测试方法。
一般是在响应中搜索js关键词,比如document.write(,eval(。另一方面是聚焦攻击者可控制的参数,梳理数据流向。
4、反射型xss自动测试
标签:web,手工,字符,自动测试,参数,测试,xss,payload From: https://www.cnblogs.com/wd404/p/17777700.html