在执行服务扫描时,我们经常会遇到运行在80和443端口上的Web服务器。Web服务器承载着Web应用程序(有时不止一个),这些应用程序通常提供了一个相当大的攻击面,并且在渗透测试中成为高价值目标。适当的Web枚举至关重要,特别是当组织没有暴露许多服务或者这些服务都已适当修补时。
Gobuster
发现Web应用程序后,总是值得检查一下我们是否能发现Web服务器上任何不打算公开访问的隐藏文件或目录。我们可以使用诸如ffuf或GoBuster之类的工具来执行这种目录枚举。有时我们会发现隐藏的功能或暴露敏感数据的页面/目录,这些数据可被利用来访问Web应用程序,甚至可以在Web服务器本身上实现远程代码执行。
目录/文件枚举
GoBuster是一个多功能工具,允许执行DNS、vhost和目录暴力破解。该工具具有额外的功能,例如枚举公共AWS S3存储桶。就本模块而言,我们感兴趣的是使用dir开关指定的目录(和文件)暴力破解模式。让我们使用dirb common.txt单词列表运行一个简单的扫描。
guhusf@htb[/htb]$ gobuster dir -u http://10.10.10.121/ -w /usr/share/seclists/Discovery/Web-Content/common.txt
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url: http://10.10.10.121/
[+] Threads: 10
[+] Wordlist: /usr/share/seclists/Discovery/Web-Content/common.txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/3.0.1
[+] Timeout: 10s
===============================================================
2020/12/11 21:47:25 Starting gobuster
===============================================================
/.hta (Status: 403)
/.htpasswd (Status: 403)
/.htaccess (Status: 403)
/index.php (Status: 200)
/server-status (Status: 403)
/wordpress (Status: 301)
===============================================================
2020/12/11 21:47:46 Finished
===============================================================
HTTP状态码200表示资源请求成功,而403 HTTP状态码表示我们被禁止访问该资源。301状态码表示我们被重定向了,这并非失败情况。值得我们去熟悉各种HTTP状态码,可以在此处找到。Web Requests Academy模块也更深入地介绍了HTTP状态码。
扫描成功完成,并识别出在/wordpress处有一个WordPress安装。WordPress是最常用的CMS(内容管理系统),具有巨大的潜在攻击面。在这种情况下,在浏览器中访问http://10.10.10.121/wordpress会显示WordPress仍处于设置模式,这将允许我们在服务器上获得远程代码执行(RCE)权限。

DNS子域名枚举
子域名上也可能托管着重要资源,例如管理面板或具有可被利用的额外功能的应用程序。我们可以使用GoBuster通过dns标志指定DNS模式来枚举给定域的可用子域名。首先,让我们克隆SecLists GitHub仓库,其中包含许多用于模糊测试和利用的有用列表:
安装SecLists
guhusf@htb[/htb]$ git clone https://github.com/danielmiessler/SecLists.git
guhusf@htb[/htb]$ sudo apt install seclists -y
接下来,将一个DNS服务器(如1.1.1.1)添加到/etc/resolv.conf文件中。我们将以inlanefreight.com域为目标,这是一个虚构的货运和物流公司的网站。
guhusf@htb[/htb]$ gobuster dns -d inlanefreight.com -w /usr/share/SecLists/Discovery/DNS/namelist.txt
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Domain: inlanefreight.com
[+] Threads: 10
[+] Timeout: 1s
[+] Wordlist: /usr/share/SecLists/Discovery/DNS/namelist.txt
===============================================================
2020/12/17 23:08:55 Starting gobuster
===============================================================
Found: blog.inlanefreight.com
Found: customer.inlanefreight.com
Found: my.inlanefreight.com
Found: ns1.inlanefreight.com
Found: ns2.inlanefreight.com
Found: ns3.inlanefreight.com
===============================================================
2020/12/17 23:10:34 Finished
===============================================================
此扫描揭示了几个有趣的子域名,我们可以进一步检查。Attacking Web Applications with Ffuf模块更详细地介绍了Web枚举和模糊测试。
Web枚举技巧
让我们再介绍一些额外的Web枚举技巧,这些技巧将有助于完成HTB上的机器以及现实世界中的测试。
Banner抓取 / Web服务器头信息
在上一节中,我们讨论了用于一般目的的Banner抓取。Web服务器头信息可以很好地反映Web服务器上托管的内容。它们可以揭示正在使用的特定应用程序框架、身份验证选项,以及服务器是否缺少基本的安全选项或是否配置错误。我们可以使用cURL从命令行检索服务器头信息。cURL是我们渗透测试工具包中另一个重要的补充,鼓励大家熟悉其众多选项。
guhusf@htb[/htb]$ curl -IL https://www.inlanefreight.com
HTTP/1.1 200 OK
Date: Fri, 18 Dec 2020 22:24:05 GMT
Server: Apache/2.4.29 (Ubuntu)
Link: <https://www.inlanefreight.com/index.php/wp-json/>; rel="https://api.w.org/"
Link: <https://www.inlanefreight.com/?p=7>; rel=shortlink
Content-Type: text/html; charset=UTF-8
另一个方便的工具是EyeWitness,它可以用于截取目标Web应用程序的屏幕截图、进行指纹识别并识别可能的默认凭据。
Whatweb
我们可以使用命令行工具whatweb来提取Web服务器、支持的框架和应用程序的版本。这些信息可以帮助我们精确定位所使用的技术,并开始搜索潜在的漏洞。
guhusf@htb[/htb]$ whatweb 10.10.10.121
http://10.10.10.121 [200 OK] Apache[2.4.41], Country[RESERVED][ZZ], Email[license@php.net], HTTPServer[Ubuntu Linux][Apache/2.4.41 (Ubuntu)], IP[10.10.10.121], Title[PHP 7.4.3 - phpinfo()]
Whatweb是一个方便的工具,包含许多功能,可以自动化跨网络的Web应用程序枚举。
guhusf@htb[/htb]$ whatweb --no-errors 10.10.10.0/24
http://10.10.10.11 [200 OK] Country[RESERVED][ZZ], HTTPServer[nginx/1.14.1], IP[10.10.10.11], PoweredBy[Red,nginx], Title[Test Page for the Nginx HTTP Server on Red Hat Enterprise Linux], nginx[1.14.1]
http://10.10.10.100 [200 OK] Apache[2.4.41], Country[RESERVED][ZZ], HTTPServer[Ubuntu Linux][Apache/2.4.41 (Ubuntu)], IP[10.10.10.100], Title[File Sharing Service]
http://10.10.10.121 [200 OK] Apache[2.4.41], Country[RESERVED][ZZ], Email[license@php.net], HTTPServer[Ubuntu Linux][Apache/2.4.41 (Ubuntu)], IP[10.10.10.121], Title[PHP 7.4.3 - phpinfo()]
http://10.10.10.247 [200 OK] Bootstrap, Country[RESERVED][ZZ], Email[contact@cross-fit.htb], Frame, HTML5, HTTPServer[OpenBSD httpd], IP[10.10.10.247], JQuery[3.3.1], PHP[7.4.12], Script, Title[Fine Wines], X-Powered-By[PHP/7.4.12], X-UA-Compatible[ie=edge]
证书
如果使用了HTTPS,SSL/TLS证书是另一个潜在的有价值的信息来源。浏览到https://10.10.10.121/并查看证书会显示以下详细信息,包括电子邮件地址和公司名称。如果这在评估范围内,这些信息可能被用于进行网络钓鱼攻击。

Robots.txt
网站通常包含一个robots.txt文件,其目的是指示搜索引擎网络爬虫(如Googlebot)哪些资源可以或不可以被索引。robots.txt文件可以提供有价值的信息,例如私有文件和管理页面的位置。在这种情况下,我们看到robots.txt文件包含两个不允许访问的条目。

在浏览器中导航到http://10.10.10.121/private会显示一个HTB管理员登录页面。

源代码
检查我们遇到的任何网页的源代码也是值得的。我们可以在浏览器中按[CTRL + U]来打开源代码窗口。这个例子揭示了一个开发者注释,其中包含一个测试帐户的凭据,该凭据可用于登录网站。

问题
尝试在上述服务器上运行本节中学习的一些网络枚举技术,并使用获取的信息来获取旗帜。




