In this chapter, we will cover:
Downloading a page for offline analysis with Wget
Downloading a page for offline analysis with HTTrack
Using ZAP’s spider
Using Burp Suite to crawl a website
Repeating requests with Burp’s repeater
Using WebScarab
Identifying relevant files and directories from crawling results
简介
渗透测试可以通过多种途径完成,例如黑盒、灰盒和白盒。黑盒测试在测试者没有任何应用的前置信息条件下执行,除了服务器的 URL。白盒测试在测试者拥有目标的全部信息的条件下执行,例如它的构造、软件版本、测试用户、开发信息,以及其它。灰盒测试是黑盒和白盒的混合。
对于黑盒和灰盒测试,侦查阶段对测试者非常必然,以便发现白盒测试中通常由应用所有者提供的信息。
我们打算采取黑盒测试方式,因为它涉及到外部攻击者用于获取足够信息的所有步骤,以便入侵应用或服务器的特定功能。
作为每个 Web 渗透测试中侦查阶段的一部分,我们需要浏览器每个包含在网页中的链接,并跟踪它展示的每个文件。有一些工具能够帮助我们自动和以及加速完成这个任务,它们叫做Web 爬虫或蜘蛛。这些工具通过跟随所有到外部文件的链接和引用,有的时候会填充表单并将它们发送到服务器,保存所有请求和响应来浏览网页,从而提供给我们离线分析它们的机会。
这一章中,我们会涉及到一些包含在 Kali 中的爬虫的使用,也会查看我们感兴趣的文件和目录,来寻找常见的网页。
使用 Wget 为离线分析下载网页
操作步骤
- 让我们做第一次尝试,通过仅仅以一个参数调用 Wget 来下载页面。
wget http://192.168.56.102/bodgeit/
它仅仅下载了 index.html 文件到当前目录,这是应用的首页。
- 我们需要使用一些选项,告诉 Wget 将所有下载的文件保存到特定目录中,并且复制我们设为参数的 URL 中包含的所有文件。让我们首先创建目录来保存这些文件:
mkdir bodgeit_offline
- 现在,我们会递归下载应用中所有文件并保存到相应目录中。
wget -r -P bodgeit_offline/ http://192.168.56.102/bodgeit/
工作原理
Wget 是个为下载 HTTP 内容创建的工具。通过 -r 参数,我们可以使其递归下载,这会按照它所下载的每个页面的所有连接,并同样下载它们。 -P 选项允许我们设置目录前缀—— Wget 会开始保存下载内容的目录,它默认设为当前目录。
更多
在我们使用 Wget 时,可以考虑一些其它的实用选项:
-l :在递归下载的时候,规定 Wget 的遍历深度可能很有必要。这个选项后面带有我们想要遍历的层级深度的数值,让我们规定这样的界限。
-k :在文件下载之后,Wget 修改所有链接,使其指向相应的本地文件,这会使站点能够在本地浏览。
-p :这个选项让 Wget 下载页面所需的所有图像,即使它们位于其它站点。
-w :这个选项让 Wget 在两次下载之间等待指定的描述。当服务器中存在防止自动浏览的机制时,这会非常有用。
使用 HTTrack 为离线分析下载页面
httrack允许你从互联网下载 WWW 站点到本地目录中,递归构建所有目录、从服务器获得HTML、图像,和其它文件到你的计算机中。
准备
HTTrack 没有默认在 Kali 中安装。所以我们需要安装它。
apt-get update
apt-get install httrack
操作步骤
- 我们的第一步是创建目录来储存下载的站点,输入:
mkdir bodgeit_httrack
cd bodgeit_httrack
- 使用 HTTrack 的最简单方式就是向命令中添加我们打算下载的 URL。
httrack http://192.168.56.102/bodgeit/
设置最后的 / 非常重要,如果遗漏了的话,HTTrack 会返回 404 错误,因为服务器根目录没有 bodgeit 文件。
3. 现在,如果我们访问文件 file:///root/MyCookbook/test/bodgeit_httrack/index. html (或者你在你的测试环境中选择的目录),我们会看到,我们可以离线浏览整个站点:
工作原理
HTTrack 创建站点的完整静态副本,这意味着所有动态内容,例如用户输入的响应,都不会有效。在我们下载站点的文件夹中,我们可以看到下列文件和目录:
以服务器名称或地址命名的目录,包含所有下载的文件。
cookies.txt 文件,包含用于下载站点的 cookie 信息。
hts-cache 目录包含由爬虫检测到的文件列表,这是 httrack 所处理的文件列表。
hts-log.txt 文件包含错误、警告和其它在爬取或下载站点期间的信息
index.html 文件重定向到副本的原始主页,它位于名称为服务器的目录中。
更多
HTTrack 也拥有一些扩展选项,允许我们自定义它的行为来更好符合我们的需求。下面是一些值得考虑的实用修改器:
-rN :将爬取的链接深度设置为 N。
-%eN :设置外部链接的深度界限。
+[pattern] :告诉 HTTrack 将匹配 [pattern] 的 URL 加入白名单,例如 +google.com/ 。
-[pattern] :告诉 HTTrack 将匹配 [pattern] 的 URL 加入黑名单。
-F [user-agent] :允许我们定义用于下载站点的 UA(浏览器标识符)。
使用 ZAP 蜘蛛
在我们的计算机中将完整的站点下载到目录给予我们信息的静态副本,这意味着我们拥有了不同请求产生的输出,但是我们没有服务器的请求或响应状态。为了拥有这种信息的记录,我们需要使用蜘蛛,就像 OWASP ZAP 中集成的这个。
操作步骤
- 为了让 ZAP 启动并使浏览器将其用作代理,浏览 http://192.168.56.102/bodgeit/ 。
- 在 Sites 标签页中,打开对应测试站点的文件夹(本书中是 http://192.168.56.102 )。
- 右击 GET:bodgeit 。
- 从下拉菜单中选择 Attack | Spider… 。
- 在对话框中,保留所有选项为默认并点击 Start Scan 。
- 结果会出现在 Spider 标签页的底部面板中。
- 如果我们打算分析独立文件的请求和响应,我们访问 Sites 标签并打开其中的 site 文件夹和 bodget 文件夹。让我们看一看 POST:contact.jsp(anticsrf,comments,null) 。
在右边,我们可以看到完整的请求,包含所使用的参数(下半边)。 - 现在,选择右侧部分的 Reponse 标签页。
在上半边中,我们可以看到响应头,包括服务器标识和会话 Cookie,在下半边我们拥有完整的 HTML 响应。在之后的章节中,我们会了解从已授权的用户获取这种 cookie,如何用于劫持用户会话以及执行冒充它们的操作。
工作原理
就像任何其它爬虫那样,ZAP 的蜘蛛跟随它找到的每个链接,位于每个包含请求范围以及其中的链接中的页面上。此外,蜘蛛会跟随表单响应、重定向和包含在 robots.txt 和 sitemap.xml 文件中的 URL。之后它会为之后分析和使用储存所有请求和响应。
更多
在爬取站点或目录之后,我们可能会使用储存的请求来执行一些测试。使用 ZAP 的功能,我们能够执行下列事情:
在修改一些数据之后重放请求
执行主动和被动漏洞扫描
模糊测试输入参数来寻找可能的攻击向量
在浏览器中重放特定请求
使用 Burp Suite 爬取站点
使用 Burp repeater重放请求
使用 WebScarab
webscarab是另一个web代理,跟burp差不多,也可以截取数据包改数据
准备
作为默认配置,WebScarab 实用 8008 (不是8080)端口来捕获 HTTP 请求。所以我们需要配置我们的浏览器来在 localhost 中使用这个端口作为代理。你需要遵循与在浏览器中配置 OWASP ZAP、Burp Suite 的相似步骤。这里,端口必须是 8008。
操作步骤
(可先用apt install webscarab安装)
- 在 Kali 的 Applications 菜单中,访问 03 Web Application Analysis | webscarab 来打开WebScarab。
- 浏览vulnerable_vm 的 Bodgeit 应用( http://192.168.56.102/ bodgeit/ )。我们会看到它出现在 WebScarab 的 Summary 标签页中。
- 现在,右击 bodgeit 文件夹并从菜单选择 Spider tree
- 在蜘蛛发现新文件过程中,所有请求会出现在summary的下半部分,树也会被填满。
这个summary就展示了一些关于每个特定文件的相关信息。例如,是否存在注入或者可能为注入的漏洞,是否设置了 cookie,包含表单,或者是否表单含有隐藏字段。它也表明了代码或文件上传中存在注释。 - 如果我们右击任何下半部分的请求,我们会看到可以对它们执行的操作。我们分析请求,找到路径 /bodgeit/search.jsp ,右击它,并选择Show conversation`。新的窗口会弹出,并以多种格式展示响应和请求
- 现在点击 Spider 标签页。
这个标签页中,我们可以在 Allowed Domains 和 Forbidden Domains 中,使用正则表达式来调整蜘蛛抓取的内容。我们也可以使用 Fetch Tree 来刷新结果,也可以通过点击 Stop 按钮来停止蜘蛛。
工作原理
WebScarab 的蜘蛛类似于 ZAP 或者 Burp Suite,对发现网站中所有被引用文件或目录,而无需手动浏览器所有可能的链接,以及深度分析发给服务器的请求,并使用它们执行更多复杂的测试非常实用。
从爬取结果中识别相关文件和目录
我们已经爬取了应用的完整目录,并且拥有了被引用文件和目录的完整列表。下一步地当是识别这些文件哪个包含相关信息,或者是更可能发现漏洞的机会。
这篇不仅仅是个秘籍,更是用于文件和目录的常见名称、前后缀的总结,它们通常给渗透测试者提供有价值的信息,或者是可能导致整个系统沦陷的漏洞利用。
操作步骤
-
首先,我们打算寻找登录和注册页面,它们可以给我们机会来成为应用的正常用户,或者通过猜测用户名和密码来冒充它们。一些名称和部分名称的例子是:
Account
Auth
Login
Logon
Registration
Register
Signup
Signin -
另一个常见的用户名、密码来源和与之相关的漏洞是密码恢复页面:
Change
Forgot
lost-password
Password
Recover
Reset -
下面,我们需要识别是否存在应用的管理员部分,这里有一组功能可能允许我们执行高权限的操作,例如:
Admin
Config
Manager
Root -
其它有趣的目录是内容管理系统(CMS)的管理员、数据库或应用服务器之一,例如:
Admin-console
Adminer
Administrator
Couch
Manager
Mylittleadmin
PhpMyAdmin
SqlWebAdmin
Wp-admin -
应用的测试和开发版通常没有保护,并且比最终发行版更容易存在漏洞,所以它们在我们搜索缺陷的时候是个很好的目标。这些目录的名称包含:
Alpha
Beta
Dev
Development
QA
Test -
Web 服务器的信息和配置文件如下:
config.xml
info
phpinfo
server-status
web.config -
此外,所有在 robots.txt 中标记为 Disallow 的目录和文件可能非常实用。
工作原理
前面列出的一些名称和它们的语言变体允许我们访问站点的受限部分,这是渗透测试中非常重要的步骤。它们中的一些能够提供给我们服务器,它的配置以及所使用的开发框架信息。
其它的,例如 Tomcat 管理器和 JBoss 的登录页面,如果配置不当的话,会让我们(或恶意攻击者)获得服务器的控制。