最近想要读一读关于高阶扫描器的实现原理,于是找了一个”python3″的代码来读一下
https://github.com/s0md3v/XSStrike
这个有近5700star的安全项目 还是挺厉害的
从头开始阅读
第一段 首先代码引入了相关的输出颜色的数值
这里从color.py可以看到
然后引入了urllib.parse 这个python3的官方库 如果引入失败会抛出一个ImportError的异常 意味着当前使用python版本为2.+
接下来是做一些初始化的东西
先是导入了 argparse来解析参数
然后引入了相关的配置文件和一些方法 比如base64编码之类的
先是判断headers接收的参数
如果不存在则调用prompt()生成一个headers
如果不能存在headers参数则使用默认的headers
接下来是一些赋值
之后作者做了一个奇怪的操作
core.config.globalVariables = vars(args)
也算写python一年多了 居然连vars方法都不知道
原来这个操作是吧传入参数做一个全局变量23333
下面这段先不读 因为没传参数
最基本的是 python xsstrike.py -u http://www.example.com
接下来判断是否fuzz 如果fuzz的话进入fuzz模式
先略过直接进入主题 scan
一块一块读 上来第一行就是一波骚操作
这么写判断请求方式 233333
看第二个方法 定睛一看 我擦 自己写了个请求库么
requester 实际上就是中心覆写了一遍requests

先是尝试https 如果抛出异常则尝试http
response = requester(target, {}, headers, GET, delay, timeout).text
最后获取http请求返回的结果
接下来
skipDOM 检测dom xss 其实就是寻找存在漏洞的标签
这里默认的话传参是Flase 所以默认检测
主要用的一个dom函数
这里跟进去

其实这个dom的功能就是按正则匹配一些危险的标签
然后输出出来
继续….
getParams方法解析参数

arjun函数则为寻找一些输入点之类的
wafDetector方法判断是否存在waf

其中用了一些 sqlmap的方法
然后在其中插入一些最基本的xss代码
然后正则匹配 一些waf的拦截规则