目录
1. Skipfish简介
Skipfish是一个高度自动化的Web应用程序安全测试工具。它由Google开发,可以通过扫描Web应用程序中的漏洞来检测潜在的安全风险。Skipfish基于可扩展的模块化架构,并配备了一组强大的功能,例如智能URL爬行,动态负载调整和漏洞检测引擎。Skipfish针对大型Web应用程序进行了优化,可以处理复杂的HTTP请求和响应,并在发现漏洞时提供详细的报告。由于其速度快,易于使用和配置,Skipfish成为Web安全测试人员的首选工具之一。
1.1 Skipfish的原理
Skipfish是一款由Google开发的Web应用程序安全评估工具,其原理如下:
-
通过网络扫描:Skipfish会向目标Web应用程序发送大量请求,在扫描范围内寻找已知的漏洞和弱点。
-
静态分析: Skipfish会分析网站的静态文件,如HTML、JavaScript、CSS等,以寻找潜在的漏洞。
-
动态分析:Skipfish会与Web应用程序交互,在运行时寻找漏洞,如SQL注入、XSS等。
-
碰撞测试: Skipfish会在请求URL时发送多个参数和值,以尝试注入漏洞,如SQL注入、命令注入等。
-
异常检测:Skipfish会捕获应用程序返回的异常或错误信息,以确定是否存在漏洞。
-
其他技术:Skipfish还使用多种技术来检测漏洞,例如在HTML标签中插入恶意代码等。
1.2 Skipfish主要利用的漏洞是什么?
Skipfish主要利用的漏洞有以下几种:
-
SQL注入漏洞:攻击者通过构造恶意SQL语句来获取或篡改数据库中的数据,从而实现攻击。
-
XSS漏洞:攻击者通过在网站输入框中输入恶意脚本,利用用户浏览器的漏洞来执行恶意代码,从而获取用户隐私信息或篡改网站内容。
-
文件包含漏洞:攻击者通过访问包含可执行代码的文件,如php、jsp等,来获取系统权限或读取敏感文件。
-
命令注入漏洞:攻击者通过在系统命令执行语句中注入恶意命令,从而获取系统权限或控制系统。
1.3 为什么会出现这种漏洞?
漏洞的出现通常是由于以下原因:
-
缺乏对安全问题的认识:有些开发人员可能缺乏对安全问题的充分认识,未能充分考虑到恶意攻击者可能利用用户输入来攻击应用程序。
-
不正确地过滤和验证用户输入数据:有些开发人员可能未能正确地过滤和验证用户输入数据,从而使恶意攻击者可以注入恶意代码或进行其他攻击。
-
不安全的编程技术和工具:有些开发人员使用了不安全的编程技术和工具,如使用不安全的加密算法或没有正确地实施访问控制等。
-
未能及时修复漏洞:有些开发人员可能未能及时修复已发现的漏洞,从而使恶意攻击者可以利用这些漏洞进行攻击。
-
系统和软件的配置错误:有些系统和软件的配置错误也可能导致漏洞的出现,如未正确配置防火墙、未应用安全补丁或未正确配置Web服务器等。
1.4 攻击怎么实现?
攻击者可以通过发送恶意请求、篡改请求报文、修改cookie等方式来实现攻击。例如,攻击者可以利用漏洞注入恶意代码或命令,从而获取系统权限或者控制系统。为了防止此类攻击,开发人员需要增强程序的输入输出验证、使用安全框架、进行安全审计等,提高程序的安全性。
2. Skipfish 打开方式及命令
2.1 Skipfish 打开方式-图形界面
2.2 Skipfish 打开方式-命令行
2.3 skipfish --help帮助命令
- Authentication and access options: 身份验证和访问选项
-A user:pass - 使用指定的HTTP认证凭证
-F host=IP - 假设'host'解析为'IP'
-C name=val - 向所有请求附加一个自定义cookie
-H name=val - 向所有请求附加一个自定义HTTP头
-b (i|f|p) - 使用与MSIE / Firefox / iPhone一致的头文件
-N - 不接受任何新的cookie
--auth-form url - 表单认证url
--auth-user user - form认证用户
--auth-pass pass - form认证密码
--auth-verify-url - 会话内检测的URL
- Crawl scope options:爬范围选项:
-d max_depth - 爬行树的最大深度(16)
-c max_child - 每个节点索引的最大子节点数(512)
-x max_desc - 每个分支索引的最大子代数 (8192)
-r r_limit - 发送的最大请求总数 (100000000)
-p crawl% - 节点和链路抓取概率 (100%)
-q hex 十六进制 - 重复概率扫描与给定种子
-I string - 只跟踪匹配'string'的url
-X string - 排除匹配'string'的url
-K string - 不模糊名为string的参数
-D domain - 抓取跨站点链接到另一个域
-B domain - 信任,但不抓取,另一个域
-Z - 不要下降到5xx位置
-O - 不提交任何表格
-P - 不解析HTML等来查找新链接
- Reporting options:报告选项:
-o dir - 将输出写入指定目录(必需)
-M - 关于混合内容/非ssl密码的日志警告
-E - log 所有HTTP/1.0 / HTTP/1.1缓存意图不匹配的日志
-U - log 记录所有外部网址和电子邮件
-Q - 完全抑制报告中重复的节点
-u - 安静,禁用实时进度统计
-v - 启用运行时日志记录(stderr)
- Dictionary management options:字典管理选项:
-W wordlist - 使用指定的读写单词列表(必需)
-S wordlist - 加载一个补充的只读wordlist
-L - 不自动学习网站的新关键词
-Y - 不要模糊目录中的扩展名
-R age - 清除词比扫描前的“age”更多
-T name=val - 添加新表单自动填充规则
-G max_guess - 最大的关键字猜测数量(256)
-z sigfile - 从这个文件加载签名
- Performance settings:性能设置:
-g max_conn - 最大TCP并发连接数,全局(40)
-m host_conn - 每个目标IP最大并发连接数(10)
-f max_fail - 最大连续HTTP错误数(100)
-t req_tmout - 总请求响应超时时间(20秒)
-w rw_tmout - 个人网络I/O超时(10秒)
-i idle_tmout - 空闲时超时 HTTP连接(10秒)
-s s_limit - 响应大小限制(400000 B)
-e - 不保留二进制响应报告
- Other settings:其他设置:
-l max_req - 每秒最大请求数(0.000000)
-k duration - 在给定的持续时间h:m:s后停止扫描
--config file - 加载指定的配置文件
3. 实验
3.1 实验前准备-打开OWASP BWA
在VMware上打开OWASP_Broken_Web_App,打开后,如下图示,我获得的靶场web地址是http://192.168.17.131,大家参考自己获得的IP进行实验。
3.2 即将被扫描的目标,OWASP_BWA Peruggia长什么样?
3.3 扫描OWASP_BWA中的Peruggia
命令:skipfish -o skipfish_result -I peruggia http://192.168.17.131/peruggia/
命令参数解释:
-o skipfish_result,-I peruggia,-l(大写i)属于Crawl scope options,含义是only follow URLs matching ‘string’ 只检查包含“字段”的url
上图输完命令后回车,出现如下图示的提示:
第一次使用时建议不按任何键,认真看完上图中的4个提示(60秒后扫描自动开始),如果你已经很熟悉,则按任意键,skipfish将立即开始检测漏洞,下图是检测漏洞的图:
查看skipfish对OWASP BWA Peruggia的扫描结果
上图结果倒数第二行:[+] Report save to ‘skipfish_result/index.html’
这告诉我们扫描报告存在哪个位置,我们现在使用的是root账号登录,点击文件夹Home,就可以看到skipfish_result文件夹,如下图示:
双击skipfish_result文件夹,打开后找到index.html文件,如下图示:
双击index.html查看报告,如下图示:
上图中的结果都可以展开,只要点击即可,展开后可以看到有效的URL地址和攻击载荷,如下图示:
4. 学习心得
Skipfish是一款常用的Web应用程序漏洞扫描器,它可以对Web应用程序进行自动化测试,并快速准确地发现安全漏洞。
在使用Skipfish检测安全漏洞的过程中,我总结出以下几个学习心得:
-
理解扫描原理:了解Skipfish的扫描原理非常重要,因为它可以帮助我们更好地理解扫描结果和安全漏洞的类型。在Skipfish中,扫描原理是基于被动扫描和主动扫描相结合的方式。被动扫描是指在浏览器或其他工具中浏览Web应用程序时,Skipfish将记录HTTP请求和响应,然后自动对其进行分析,从而找到潜在的漏洞。主动扫描则是指Skipfish将通过发送特定的HTTP请求,针对Web应用程序进行测试。
-
手动验证结果:虽然Skipfish的自动扫描功能非常强大,但是我们还需要手动验证扫描结果。这是因为Skipfish无法检测所有的安全漏洞,我们需要通过手动测试和漏洞验证来确认漏洞的存在性和严重程度。
-
关注漏洞等级:Skipfish将漏洞分为三个等级,分别是高、中、低。高级漏洞通常是最严重的漏洞,会导致应用程序崩溃或重要信息泄露。中级漏洞可能会导致访问控制问题、信息泄露等安全问题。低级漏洞则可能会带来一些安全隐患或风险。我们应该重点关注高级漏洞,并且着手解决这些问题。
-
提供详细的报告:与其他漏洞扫描器相比,Skipfish提供了比较详细的报告,其中包括扫描历史、漏洞详情、漏洞等级等等。我们应该仔细检查报告,确保其准确清晰,并为团队提供明确的处理建议。
5. 总结
Skipfish是一款流行的Web应用程序安全测试工具,可用于检测安全漏洞并提供报告和建议。在使用Skipfish时,以下是一些常见的安全漏洞和对应的解决方案。
-
会话劫持:使用安全的会话管理机制来防止会话劫持,例如使用加密的cookie和HTTPS协议。
-
SQL注入:使用预处理语句来避免SQL注入漏洞,对用户输入数据进行过滤和验证,并最小化数据传输。
-
跨站点脚本(XSS):对用户输入的数据进行过滤和验证,并使用浏览器内建的转义字符,以防止XSS攻击。
-
文件包含:限制用户输入的文件路径,对文件进行权限控制,将敏感文件存储在安全的地方,使用安全的文件包含机制。
-
未授权访问:确保对用户授权的访问进行验证,限制对敏感数据和功能的访问,并使用安全的访问控制机制。
-
CSRF攻击:对用户请求进行验证,使用安全的令牌机制,防止未经授权的请求。
-
文件上传:对上传文件进行筛选和验证,限制上传文件的类型和大小,确保上传的文件不包含恶意代码。
-
敏感数据泄露:对存储敏感数据的文件和数据库进行加密,限制对数据的访问,并使用安全的身份验证和访问控制机制。
6. 其他相关优质文章
链接: Skipfish扫描原理解读
链接: kail系列skipfish的操作使用
链接: Web扫描之Skipfish详解实践