XSStrike 代码阅读

Posted by bfpiaoran on December 26, 2018

最近想要读一读关于高阶扫描器的实现原理,于是找了一个”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的拦截规则