===========================================
skipfish - 网络应用程序安全扫描
===========================================
*书面和Michal Zalewski首先保持<>。
*版权所有2009年,2010年谷歌公司,版权所有。
*下发布的条款和Apache许可证,2.0版的条件。
--------------------
1。什么是skipfish?
--------------------
Skipfish是一个积极的Web应用程序的安全侦察工具。它准备
一为通过开展有针对性的递归抓取网站的交互式地图
和基于字典的探头。由此产生的地图,然后加注
产量从活跃(但希望非破坏性)的安全检查。
{zh1}报告工具生成的是为了作为一个基础
专业的网络应用安全评估。
何必去理会这个特殊工具吗?
类似的功能与商业和开源工具,是
现成的(例如,日高,Nessus的);坚持一个最适合你的。
尽管如此,skipfish试图解决相关的一些常见问题
与网络安全扫描器。具体优点包括:
*高性能:500 +每秒对Internet请求作出反应
目标,要求2000 +每秒的局域网/城域网网络,和7000 +的要求
针对当地的情况已经指出,一个非常温和的CPU,网络,
和内存占用。这可以归因于:
- 复用单线程,xx异步网络I / O和数据
处理模式,xx了内存管理,调度和IPC
效率低下,在目前一些多线程的客户。
- 先进的HTTP/1.1的功能,如范围的要求,内容
压缩和keep - alive连接,以及强迫响应大小
限制,使网络在检查水平的开销。
- 智能响应缓存和先进的服务器行为的启发式
使用,以尽量减少不必要的交通。
- 绩效导向,纯C的执行情况,包括自定义
HTTP堆栈。
*易于使用:skipfish具有高度灵活性和可靠性。扫描仪
特点:
- 启发式的小路承认和查询的参数
处理方案。
- 优美处理多框架的网站,服从某些路径
一个xx不同的语义,或受到不同的过滤
规则。
- 自动词表的基础上建设网站的内容分析。
- 概率扫描功能,以便定期,有时间限制
评估,任意复杂的网站。
*精心设计的安全检查:该工具的目的是提供准确和
有意义的结果:
- 三步差分探头是{sx}的签名支票
检测漏洞。
- Ratproxy风格的逻辑是用来现场微妙的安全问题:
跨站点请求伪造,跨站点脚本包容,混合内容,
问题的MIME和字符集不匹配,不正确的缓存指令,等
- 捆绑的安全检查的目的是处理棘手的情况:
存储跨站脚本(路径,参数,头),SQL盲或XML注入,或
盲目壳注射。
- 报告后处理大大减少所造成的噪音
其余查明误报或服务器噱头重复
模式。
尽管如此,skipfish不是银弹,并可能对某些不适合
目的。例如,它不能满足大多数要求概述
西非海缆Web应用程序安全扫描评估标准(其中一些
为此,一些出于需要),而不像大多数这种类型的其他项目,
它不来一个已知漏洞的广泛数据库
横幅式检查。
-------------------------------------------------- ---
2。{zh0}奇!有什么具体测试实施?
-------------------------------------------------- ---
据一项由该工具提供的安全检查粗糙名单概述如下。
*高风险漏洞(可能导致系统安全受到威胁):
- 服务器端SQL注入(包括失明载体,数值
参数)。
- 明确的SQL样GET或POST参数语法。
- 服务器端的shell命令注入(包括失明矢量)。
- 服务器端的XML / XPath的注射(包括失明矢量)。
- 格式串漏洞。
- 整数溢出漏洞。
*中等风险的缺陷(可能导致数据的妥协):
- 存储和反映跨站脚本文件身体向量(最小JS跨站脚本
支持至今)。
- 存储和反射向量通过HTTP重定向跨站脚本。
- 存储和反映通过HTTP头分裂跨站脚本向量。
- 目录遍历(包括限制矢量)。
- 拼盘文件兴趣点(服务器端源,configs等)。
- 攻击者提供的脚本和CSS列入向量(存储和
反映)。
- 外部信任脚本和CSS列入向量。
- 混合的脚本和CSS资源内容的问题(可选)。
- 不正确或失踪renderables MIME类型。
- 关于renderables通用的MIME类型。
- 不正确或丢失字符集的renderables。
- 冲突的MIME /字符集信息的renderables。
- 不良反应的Cookie上设置缓存指令。
*低风险的问题(或低的影响有限,特异性):
- 目录列表绕过媒介。
- 重定向到攻击者提供的网址(存储,反映)。
- 攻击者提供的嵌入内容(存储,反映)。
- 外部不受信任的嵌入内容。
- 混合内容非脚本subresources(可选)。
- 在URL的HTTP凭据。
- 过期或不仍未生效的SSL证书。
- HTML表单没有XSRF保护。
- 自签名的SSL证书。
- SSL证书的主机名不匹配。
- 坏不太敏感的内容缓存指令。
*内部警告:
- 失败的资源获取的企图。
- 超出检索限制。
- 失败的404行为检查。
- 新闻通讯社过滤检测。
- 意外的反应的变化。
- 看似错误分类检索节点。
*非特异性信息条目:
- 一般的SSL证书信息。
- 显着变化的Cookie。
- 更改服务器,威盛,或X - ...头。
- 新404的签名。
- 资源无法访问。
- 资源需要HTTP认证。
- 断开的链接。
- 服务器错误。
- 所有的外部链接不属其他(可选)。
- 所有的外部电子邮件(可选)。
- 所有外部URL重定向(可选)。
- 链接到未知的协议。
- 表格字段不能autocompleted。
- 所有HTML表单检测。
- 密码(外部蛮力)报名表格。
- 数值(外部蛮力)文件名。
否则,页面上呈现 - 用户提供的链接。
- 不正确或失踪不太重要内容的MIME类型。
- 在不太重要的内容通用的MIME类型。
- 不正确或丢失字符在不太重要的内容。
- 冲突的MIME /上不太重要的内容字符集的信息。
- OGNL的样传递公约的参数。
随着一个确定的问题清单,skipfish还提供摘要
文件类型和发现的问题类型的概述;和一个互动地图,
通过暴力,一种独特的方式记队发现的节点。
-------------------------------------------------- ---------
3。好吧,我想试试。什么我需要知道吗?
-------------------------------------------------- ---------
首先,请不要作恶。使用skipfish只针对服务
你自己,或有权限的考验。
请记住,安全测试的所有类型可以被破坏。虽然
扫描仪的设计不进行恶意攻击,它可能会意外
干扰网站的运作。你必须接受的风险,并计划
据此。对测试运行情况下可行的,并扫描仪
准备处理的后果如果出了问题。
另外请注意,该工具是指由专业人员使用安全,并
实验性质。它可能会返回误报或错过明显的安全
问题 - 甚至当它运行xx,实在不应该是一个
指向并单击应用。不要依赖于它在面值输出。
运行该工具,对供应商提供的演示网站不是一个好办法
评价它,因为它们通常近似的漏洞非常不完善,我们
没有作出努力,以适应这些案件。
{zh1},扫描仪根本没有设计和处理与流氓
行为不端的HTTP服务器 - 并提供安全(或健全的无担保)的行为
那里。
--------------------------
4。如何运行扫描仪?
--------------------------
编译它,只需解压缩档案,并尝试进行。机会是,你会
需要安装libidn{dy}。
接下来,您需要复制的需要,从字典词典文件/对
skipfish.wl。请阅读字典/ README文件,首先要仔细作出正确
选择。这一步对以后的扫描结果的质量产生深远的影响。
一旦你选定的词典,您可以尝试:
$。/ skipfish邻output_dir
请注意,你可以提供一个以上的起始URL如果需要的话,他们都
会被抓取。
在上面的例子,skipfish将扫描整个(包括
在其他港口服务,如果与从主网页),并写了一份报告
到output_dir /内。然后,您可以查看您最喜爱的这份报告
浏览器(必须启用JavaScript)。 index.html文件是静态的,实际
结果存储为一个JSON文件,机器适合等级
如有需要,处理。
有些网站可能需要验证,对简单的HTTP凭据,您可以尝试:
$。/ skipfish -用户:其他参数传递... ...
另外,如果该站点的cookie依赖,而是在你登录
浏览器或使用简单卷曲脚本,然后提供了一个会议skipfish
曲奇:
$。/ skipfish - C名字=缬氨酸其他参数... ...
其他会话cookie可以通过同样的方式,为每一个- C选项。
网站上的某些网址可能会记录你的会议;你可以打击2本
通过使用- N选项,这会导致扫描仪拒绝企图方式:
设置或删除cookie,或- X参数,从而防止匹配的网址
被提取:
$。/ skipfish -的X /注销/ logout.aspx其他参数... ...
- x选项也是有用的加快,排除/图标/你的扫描,
/ doc /下,/手册/,和其他标准,沿着这些路线平凡的位置。在
一般而言,您可以使用- x,加口(只蜘蛛的网址匹配串)和- S
(忽略网页上的连结,其中一子出现在响应体)限制
范围扫描任何你喜欢的方式 - 包括限制只在一个特定的
协议和端口:
$。/ skipfish,我其他参数... ...
另一个有用的作用域选项是- D - 允许你指定其他主机
或域的考虑,为测试的范围。默认情况下出现的所有主机
在命令行的网址添加到列表 - 但是你可以使用- D来扩大
这些规则,例如:
$。/ skipfish三维test2.example.com - o输出,迪尔
...或者一个域通配符匹配,使用:
$。/ skipfish三维。example.com - o输出,迪尔
在某些情况下,你不想实际抓取第三方域,但您
信任域的所有者,没有必要担心跨域内容
列入从该位置。为了抑制警告,可以使用- B选项,
例如:
$。/ skipfish - B规范。谷歌- analytics.com - B规范。googleapis.com其他参数... ...
默认情况下,尽量少skipfish发送HTTP头,以减少金额
数据交换了线路,一些网站审查用户代理字符串或头
不支持的命令,拒绝客户,但是。在这种情况下,可以使用- b
即或- B ffox模仿两个流行的浏览器之一。
当涉及到自定义您的HTTP请求,您还可以使用- H选项
插入任何额外的,非标头,或- F定义自定义
主机之间和IP的映射(绕过解析器)。后者的功能
特别适用于在尚未推出的或旧的服务。
有些网站可能会太大扫描在一个合理的时间表。如果网站
功能明确,例如tarpits - ,10万用户几乎相同
作为一个社会网络的一部分配置文件 - 这些具体地点可
排除与- x或- S。在其他情况下,您可能需要采取其他
设置:三维限制抓取深度指定的子目录数目; - ç
限制每个目录儿童人数;和- r限制总数
请求发送扫描。
一个有趣的选项可供反复论证:磷。通过指定
一个介于1和100%的比例,就可以告诉抓取跟进
不到100%的各个环节,并尝试不到100%的字典
项。本 - 自然 - 限制了扫描完整性,但与大多数
时,它在其他环境平衡,非确定性的方式。它是
非常有用当您设置时间限制,但定期评估
您的基础设施。另一个相关的选项是- Q表,确定了初步
随机种子到一个指定的值的抓取工具。这可以用来准确
重现以前的扫描结果进行比较。随机性是依靠最
大量的- P模式,而且还赚了其他扫描管理的情侣
决定在其他地方。
一些特别复杂(或破损)服务可能涉及到一个很高的数字
相同或几乎相同的页面。虽然这些事件是由
默认变灰在报告中,他们仍然使用了一些屏幕产业,并采取
一段时间来处理JavaScript的水平上。在这种极端情况下,您可以使用
- Q选项制止重复节点共报告前,
报告写的。这可能会给你一个全面的了解如何减少
该网站是有组织的,但并没有对测试覆盖率的影响。
在某些快速评估,你可能也没有支付任何利息
特别注意该网站所需的功能 - 希望
探索非机密只挂钩。在这种情况下,您可以指定- p来抑制
所有HTML解析。这限制了覆盖面和带走的能力
扫描仪,以了解的HTML寻找新的关键字,但加快了试验
显着。另一个同样沉重的选择,降低风险
一个扫描氧,抑制一切形式的解析和持久的影响
提交的步骤。
默认情况下,skipfish大声抱怨的所有MIME或字符集
对可渲染的文件不匹配,以及分类,其中许多为“中等
风险“,这是因为,如果任何用户控制的内容返回,
情况可能会导致跨站点脚本在某些浏览器的攻击。论
一些设计不当和维护的网站,这可能会导致太多的噪音;
如果是这样,您可以使用- J为标记的问题,这些“低风险”,除非该扫描仪可
明确地看到自己的用户输入的是呼应结果页面回来。
这可能会错过许多微妙的攻击媒介,但。
有些网站可以处理有关SSL敏感的用户数据服务 - 和有关获取
是正确的。 Skipfish可以选择有助于搞清楚问题的混合你
内容方案 - 使用- m选项来启用此。扫描仪会抱怨
有关情况,如http://加载脚本在https:/ /页 - 但
将无视非例如图像的风险情形。
同样,某些呆板的网站可能会关心的案件是在缓存
受限制的HTTP/1.1的水平,但并没有明确HTTP/1.0的缓存指令
刊载于指定在命令电子行导致skipfish记录所有这些
案件小心。
{zh1},在涉及一些评估自足无网站广泛
用户的内容,审计人员可能会关心任何外部的电子邮件或HTTP链接
可见,即使他们没有立即安全的影响。使用- U选项有
这些记录。
字典管理是一个特殊的话题, - 如上所述 - 是覆盖
更详细的字典/自述十一届。请阅读该文件之前
此案。有关的一些选择包括:W到指定自定义
词表,- l来抑制自动学习,- V来抑制字典更新,接枝
限制关键字猜测罐大小,- R的下降旧字典项,并,辎
抑制美元的较高的关键字。$扩展起毛。
Skipfish还具有形式自动完成机制,以{zd0}限度地
扫描范围。该值应非恶意的,因为他们并不意味着
实施安全检查 - 而是让过去输入验证逻辑。您
可以定义额外的规则,或重写的,现有的T选项(- T的
form_field_name = field_value,例如: - T的登录= test123 - T的密码= test321 -
虽然注意到- C和- A是一个更好的测井方法)。
也有少数的性能相关的选项。使用- g设置
{zd0}连接数保持在全球,所有的目标(这是
明智的做法保持在50多本,以免大量的TCP / IP堆栈
您的系统或附近的NAT /防火墙设备)和米设置每个IP
限制(实验一下:2-4期通常是本地主机,本地优秀4-8
网络外部的目标,30真的落后或非+ 10-20,保持活动
主机)。您还可以使用- w来设置的I / O超时(即skipfish将等待
不仅如此为个人读或写长),而- t设置总的要求
超时,占很慢或真快网站。
{zh1},- f控制连续HTTP错误你的{zd0}数量
愿意看到前中止扫描和- s设置{zd0}长度
响应获取和解析(较长的反应将被截断)。
--------------------------------
5。但严重的是,如何运行呢?
--------------------------------
一个标准,认证扫描精心设计和独立的网站
(警告对所有的外部链接,电子邮件,混合内容,和缓存头
问题):
$。/ skipfish蒙福尔- C“类AuthCookie =值”的X / logout.aspx邻output_dir \
五连接抓取,但没有蛮力,假装MSIE关怀
错配少讲模棱两可MIME或字符集:
$。/ skipfish米5 LVJ钨/开发/空邻output_dir - b,即
蛮力(没有HTML链接提取),在example.com信任链接
和时间5秒后:
$。/ skipfish - B规范。example.com氧邻output_dir - T的5
对于所有命令名单行选项,请尝试。/ skipfish - H标准。
-------------------------------------------------- -
6。如何解释和解决这些问题的报道吗?
-------------------------------------------------- -
对大部分问题都应该报告skipfish言自明的,假设你
有良好的喘息的网络安全基础知识。如果您需要一个快速
重温了更为复杂的题目,例如MIME的嗅探,一些你
可享受作为一个起点,我们全面的浏览器安全手册:
如果您仍需要帮助,有几个组织提出一个
相当大的努力,把记录和解释许多共同的网页
安全威胁,并就如何解决这些问题的市民。我鼓励
你指的是OWASP的出版和网络应用安全的材料
财团,除其他:
*
*
*
虽然我很高兴来诊断与扫描仪本身的问题很遗憾我
不能提供任何第三方网站内wokings援助
申请。
---------------------------------------
7。已知限制/功能心愿
---------------------------------------
下面是功能列表目前skipfish失踪。如果你想
通过促进这些领域中一个代码的工具,请让我知道:
*缓冲区溢出检查:经过仔细考虑,我怀疑有
没有可靠的办法为远程缓冲区溢出测试。就像实际
故障条件下,我们正在寻找,适当的缓冲区大小检查,也可
结果在未捕获的异常,500信息,等我会愿意证明
错了,虽然。
*xx成熟的JavaScript跨站脚本检测:一些初步的检查
目前在代码中,但没有适当的脚本引擎评价
表达式和内置的DOM访问
*可变长度编码字符消费/注塑缺陷:这些
问题似乎就在很大程度上解决浏览器的水平这一点,
低得多,他们在撰写本文时优先考虑。
*安全检查和链接的第三方,插件提取为基础的内容
(闪光,爪哇,PDF格式等)。
*密码蛮力和数字文件名强力探头。
*搜索引擎集成(虚拟主机,开始路径)。
* ViewState的解码。
* NTLM和摘要式身份验证。
*代理支持:有点不兼容的性能控制功能
目前受雇于skipfish,但长远而言,应作为
{zh1}的救命稻草。
*扫描恢复选项。
*独立安装(请安装)的支持。
*配置文件支持。
-------------------------------------
8。 Oy公司!出了可怕的错误!
-------------------------------------
没有网络抓取很好,不会出现网络架构之一
天放火。如果你遇到什么似乎不良行为(例如,
永远的扫描,并生成需要太多的要求,xx虚假的节点
在扫描输出,或直接崩溃),请首先查看网页:
如果你不能找到一个令人满意的答案,重新编译扫描仪:
$使清洁调试
...并重新运行这样说:
$。/ skipfish [... ...以前选项] 2“logfile.txt的
然后,您可以检查logfile.txt的想法得到了什么差错,如果它看起来
像扫描仪问题,请从日志擦洗任何敏感信息
文件并将其发送给作者。
如果扫描坠毁,请重新编译它如上所述,然后键入:
$的ulimit - ç无限
$。/ skipfish [... ...以前选项] 2“logfile.txt的
$ gdb的 - 批前回来。/ skipfish核心
...并确保发送提交的{zh1}一个命令的输出也。
-----------------------
9。信贷和反馈
-----------------------
Skipfish作出的贡献可能的感谢,并宝贵的反馈意见
由,谷歌的信息安全工程团队。
如果您有任何错误报告,问题,建议,或关切
申请时,提交人可以达到。