Audit方法:不做说明。
Sniff方法:参数datapackage就是一个http数据包的内容,该数据包由软件主程序获得,为提高效率减少连接时间,只有在触发sniff方法时才会对该url进行连接抓包,之后将该数据包放到一个队列里,如果还需要该url的数据包时直接从队列中进行调用。Head和body参数就是将datapackage分割成消息头和内容两部分。
对于cms识别插件:有两个插件功能的设想。第一,可以在网页中查找特定标签下的关键字,比如使用Discuz!的网站一般会在页面中出现“Powered by Discuz!”,使用wordpress的网站会在页面中出现“Proudly powered by WordPress”,那么如果在特定HTML标签下出现了这样的关键字就可判断是何种系统。第二,可以比较静态文件的hash值是否与cms中的某静态文件的hash值相等,这样就算更改了文件名,其内容若没有更改也是可以判断的。
对于漏洞利用插件:漏洞利用插件有多种形式。要说明的是,理论上我们不编写钓鱼式的漏洞利用,比如储存型XSS漏洞,这类在时间上有延迟的利用程序,因为要等待触发,所以我们不能实时的知道漏洞是否被利用成功,所以是判断上有很大困难。但是web2.0时代的黑客技术偏向于钓鱼式的陷阱式的攻击,但是我确实没用想出如何编写这样的自动化利用程序,如果哪位基友有想法请联系我深入探讨。
3.关于爬虫的编写
扫描漏洞肯定是要有个爬虫的。
编写一个爬虫也不是什么费力气的活,我用的是一个开源的开发包Jsoup编写了一个爬虫,实现方法并不复杂,不做详细说明。
需要注意的一点是,爬虫需要一种模糊过滤机制,举个例子,针对news.php?id=11,这一参数的注入测试只要一次就可以了,我们只要检测了news.php?id=11就不需要检测news.php?id=22,那么我们应该避免爬虫抓取到大量此类重复的url,那么就要进行模糊过滤,我们首先把一个带参数的url分割成文件和参数的形式,之后把他储存到一个队列中,之后再抓取到带参url也行进分割之后进行匹配,如果发现队列中已经有了这个文件和这个参数的组合就抛弃这条url。
在skadi中爬虫默认最多爬行相似url三次。
4.Skadi tools
4.1目标搜集
不废话——集成Google、baidu、zoomeye、bing搜索引擎,特定URL网站搜集、特定cms网站搜集、C段、旁站、二级域名查询一条龙服务。
4.2 cms识别
1、构造特定url,判断http响应
首先我们收集了各种cms和框架的特征目录,当需要对一个网站进行指纹识别时,我们将作为参数的URL处理成根目录URL的形式,之后把处理后的URL与特征目录拼接起来,之后连接,得到HTTP响应代码,如果为200或者403则一般可以判断该目录是存在的,则存在该特征目录的可以确定采用了哪种cms。
2、爬行页面链接,匹配特征URL
第一种识别方式一个缺点是文件的上级目录不可确定,也就是说,如果我们把特征文件放到了一个自己命名的目录下,第一种识别方式是不能识别的。那么我们就使用一个spider来爬行网站上的链接,比如a标签下的href属性,src属性,link标签下的href属性,爬行到这些标签之后与特征目录进行匹配,判断是否包含特征目录,这样就可以确定为何种cms。
3、web指纹识别插件
4.3 漏洞扫描
内置基于get请求的反射型XSS和GET型sql注入模块,不做详细说明。
提供了漏洞扫描插件编写接口。
4.4 漏洞利用
1.低配置漏洞利用
我们搜集了一些使用url触发的cms漏洞,低配置漏洞利用会连接指定网站的漏洞触发url,如果存在会返回结果。当然,低配置漏洞利用是极不精确的,所以,我们编写了高配置漏洞利用模块。
2、高配置漏洞利用
高配置漏洞利用也就是使用插件编写的方法载入exp。我们提供了编写漏洞利用插件的接口。
5. 最后附上skadi工具
skadi度娘盘
提取码 kzlp
ps:本来里面有5个漏洞利用插件和一个工程的,但是由于一些隐晦的原因我最后删掉了。=_=
压缩包里有说明文件,插件接口和开发包(开发包没怎么写,就是一些很常用的功能,本来还行写发送http请求的方法来着,但是想想既然都有httpclient和curl了,就不写了了。
如果大家有兴趣为skadi开发插件或者希望添加什么功能,还有如果想要源码的话,发送邮件到我的邮箱hoerwing@foxmail.com。
微博:http://t.qq.com/HoerWing
(责任编辑:安博涛)