Skipfish简介
Skipfish是一款主动的、轻量级的Web应用程序安全侦察工具。它通过执行递归爬取和基于字典的探测来为目标站点准备交互式站点地图。该工具生成的最终报告旨在作为专业Web应用程序安全评估的基础,就是主要关注的点是程序代码层面的问题。
Skipfish特点
主要特征是这些:
- 高速:纯C代码,高度优化的HTTP处理,最小的CPU占用空间,能够轻松实现响应目标每秒两千个请求;
- 易于使用:启发式的使用方式,支持各种古怪的Web框架和混合技术站点,具有自动学习功能,动态词汇表创建和表单自动完成功能;
- 尖端的安全逻辑:高质量,低误报率,拆分安全检查,能够发现一系列细微的缺陷,包括矢量注入。
Skipfish实际操作
Skipfish在kali系统中是预装的,这里就不介绍具体安装了。
首先还是可以通过-h的命令查看Skipfish的帮助说明,可以看到支持的各种参数和使用方式:
其中有些比较实用的参数可以记一下:
-I 大写i,当传入url文档时,只检查包含'string'的 URL
-X 不检查包含'string'的URL,例如:logout
-K 不对指定参数进行Fuzz测试
-D 跨站点爬另外一个域
-l 每秒最大请求数
-m 每IP最大并发连接数
--config 指定配置文件
当遇到扫描速度太快,触发了目标站点的连接数限制,通过降低-m和-l数值即可。
扫描目标网址:
skipfish -o 扫描结果存放目录 目标地址
在正式开始扫描之前会有一些提示语,比如需要中途停止该怎么做、按空格可以切换到扫描详细信息之类的。
当被扫描的是多个url时,可以将这多个url写入到一个txt文档里,让skipfish遍历txt中的url进行扫描:
skipfish -o 扫描结果存放目录 @存了url的文档
如果url.txt文档中只有符合某些过滤条件的url才需要被扫描,skipfish也提供了过滤功能,可以通过参数-I实现:
# url中必须包含字符串:/dvwa/ 才会被扫描
skipfish -o 扫描结果存放目录 -I /dvwa/ http://192.168.98.169/dvwa/
扫描结束后会给出这个提示:
不过我这个是被手动停止的,因为完整扫描太耗时间了。
这是扫描后给出的报告:
前面说过skipfish可以使用字典可发现隐藏目录,具体方式如下:
skipfish -o 扫描结果存放目录 -S 字典 -W 将特殊的字符串写入到指定字典 http://192.168.98.169/dvwa/
kali中有一些提供给skipfish使用的字典:
上面这些字典都可以通过-S进行使用。
skipfish提供了有些身份认证的参数:
其中比较使用的是-A,直接跟用户名:密码,不过现在的很多web应该都不能使用了,所以这种方式做测试还行,对于真正的入侵、渗透,就不是很好用了。
还有一个-C可以直接使用本地的cookie,这个相对实用一下,前提是你有cookie。一般有账号就能在本地生成cookie,可以在浏览器上找到:
在skipfish中使用cookie:
skipfish -o dvwaResult1 -C "PHPSESSID=affdcb6c159f4e4524dde145a410f80c" -C "security=low" -I /dvwa/ http://192.168.0.101/dvwa/
除了上面两种认证方式,skipfish还有一种提交表单的方式来进行认证,不过说实话,现在的登录都是有验证码的,直接提交账户和密码,大概率是不会成功的,不过还是介绍一下:
具体的操作:
skipfish -o dvwaResult2 --auth-form http://192.168.0.101/dvwa/login.php --auth-user admin --auth-pass password --auth-verify-url http://192.168.0.101/dvwa/index.php -I /dvwa/ -X logout.php http://192.168.0.101/dvwa/
上面这样传,其实是让skipfish自己判断user和password填入的位置。当skipfish无法准确填入user和password时,可以认为指定填入位置:
skipfish -o dvwaResult3 --auth-form http://192.168.0.101/dvwa/login.php --auth-form-target http://192.168.0.101/dvwa/login.php --auth-user-field username --auth-user admin --auth-pass-field password --auth-pass password --auth-verify-url http://192.168.0.101/dvwa/index.php -I /dvwa/ -X logout.php http://192.168.0.101/dvwa/
参数--auth-form-target后面跟的是接收表单的地址,有些网站接收表单的网址和提交表单网址不是同一个。
参数--auth-user-field和--auth-pass-field后面跟的是页面元素中的name属性:
总结
整体来说skipfish的功能还是比较不错的,对于内部测试来说是一个比较好用的工具。对于公网中的实际渗透工作,其实限制还是挺多的。