web基础漏洞-xss手工测试与自动测试

手工测试,一般是指结合浏览器和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和存储型xss自动测试

由于这两个类型高度一致,所以合并进行测试

(1)样本请求及标记判断

  • 如果请求的url未设置,或者未设任何标记,结束

(2)逐一参数进行测试

(3)测试是否返回

(4)测试敏感字符

为了减轻请求压力,可以先统一测试,如果出现全部被拒的情况,再询问逐一测试

(5)测试常见的关键词

该流程并不常见

(6)测试脚本payload

5、dom型xss自动测试

目前来说,很难写出自动化测试dom型xss的代码。

  • 样本请求,将响应体部导出为文件
  • 指定文件,批量搜索关键词的个数
  • 日志分析,手动查看和搜索报文内容
posted @ 2023-10-20 17:58  挖洞404  阅读(141)  评论(0编辑  收藏  举报