TEST LAB V8在线渗透实验室教程(一)
作者:admin | 时间:2016-4-23 21:34:05 | 分类:黑客工具 隐藏侧边栏展开侧边栏
Test Lab是一个与Offensive Security的实验室类似的在线渗透测试虚拟实验室。这个实验环境中包含12个系统,分别有各种各样的漏洞和配置错误。在每个系统上都有一个token,我们需要找到它并将其上传,用于验证攻破该系统。
首先,你需要在这里注册,注册之后你可以在那儿获取你的VPN配置文件和口令。在开始之前,我们建议你使用Kali Linux,因为用到的所有工具那上面都有,实验室提供了一个网络拓扑图,这有助于你分析目标。
正如在上面的网络拓扑图中看到的,有两个网关 192.168.101.6和192.168.101.7。通过第一个网关,只能访问3个系统,它们是site、cabinet和ssh-dev。通过第二个网关,可以访问其它剩下的机器。在这篇文章的第一部分,我们将攻下两个系统网站和cabinet,其它机器我们会在下一部分攻破。
所以,我们这次的主要目标是网站和cabinet,他们可以通过192.168.101.6访问。让我们开始行动吧。
攻击SITE
从利用nmap扫描开始,命令为:
nmap -sS -sV -Pn -p1-65535 192.168.101.6
在上面的输出中我们发现了两个开放端口,80和443。用浏览器访问IP和80端口,显示是一个SAS银行程序,有一个登录功能。
我们浏览这个应用程序,查看它的源代码寻找一些线索,但是什么都没发现。运行dirb工具枚举目录,命令为:
dirb http://192.168.101.6/ /usr/share/wordlists/dirb/common.txt/ -v
在工具运行完之后,我们注意到每一个请求的响应码都是403,这意味着禁止访问。当我们尝试打开任何一个应用程序中不存在的页面时,它会返回一个404响应码。
这说明防火墙封锁了我们的请求。现在我们对dirb工具稍作调整,增加一个-a参数,这参数允许我们指定一个不同的user agent。在这个例子中,我们增加了lceweasel浏览器的user agent,命令为:
dirb http://192.168.101.6/usr/share/wordlists/dirb/common.txt/ -v -a “Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.5.0”
现在我们看到结果不同了,我们得到了404和200响应。利用浏览器打开.htaccess文件,没有发现感兴趣的东西,随后打开.git/HEAD文件,.git目录可以访问,这说明其它的配置文件也可以访问,并且可以下载下来。有一个名为DVCS Ripper的工具,它可以从网站上下载所有的.git仓库,前提是.git目录可以访问。
我们使用下面的命令执行该工具:
./rip-get.pl -u http://192.168.101.6/.git/ -o /root/Desktop/app
在工具执行后,所有的代码都保存在了我的app文件夹中。
我们浏览应用程序所有源代码,从DatabaseSeeder.php中找到两个登录凭证, 该文件位于app/database/seeds目录中。
我们尝试使用得到的用户口令登录,登录后发现了第一个token。
攻击CABINET
这个系统同样可以通过相同的网关192.168.101.6访问,利用443端口,并且有一个登录功能。
我们再一次运行dirb工具寻找隐藏的目录和文件,命令如下:
dirb https://192.168.101.6/ /usr/share/wordlists/dirb/common.txt/ -a “Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.5.0”
正如上图看到的,我们找到了api目录,试着打开这个目录,它返回一个错误“You can use only /api/auth or /api/balance”。
我们通过浏览器打开api/auth目录,同样地,它抛出一个错误,需要填写email和password。
我们在请求时增加两个使用随机数填写的参数,然后访问URL。
可以看到,它显示email无效,这说明请求是可以的,现在我们需要找到有效的email id。
所以我们转到下一个目录api/balance,访问之后,它同样返回了错误,需要填写api session token和id。
我们增加了两个必须的参数,用随机数赋值,然后访问URL,它又返回一个消息,api session token的值必须是40个字符。
我们增加了一个40个字符的参数之后再次请求。应用程序返回了一个null值。这意味着起作用了。
让我们尝试下SQL注入,给token参数的值赋一个精心制作的40个字符长的SQL注入语句,然后再次发送请求。
SQL注入成功了,返回了所有的emails,在读完所有的email之后,我们选择了RalWestfall的email,因为它包含了sas-bank.lab域名。
现在我们回到需要一个有效email的/api/auth页面,我们通过email参数提交了获取的email,现在它返回了一个不同的错误消息,password或email错误。
在这个例子中,我们100%确定email是有效的,因为如果我们提供一个随机的email,它会显示“选择的email无效”的信息。现在我们需要密码,可以使用BurpSuite proxy来暴力猜解password参数。
我们使用fuzzdb的密码表作为密码列表,如下所示。
执行intruder一段时间后,我们发现了密码是“freeman”。
尝试使用Ralph Westfall的密码和猜解出的密码登录,成功了。
在登录之后,我们浏览所有的应用功能,发现了一个上传资料图片的功能。
尝试上传一个PHP后门,它返回了一个错误,只允许上传图片。
后来,我们查看应用程序的源代码,发现资料图片上传的位置位于uploads目录下。
我们浏览upload文件夹,尝试访问PHP shell文件,虽然应用程序抛出了错误但是文件还在那儿。
现在我们有了一个shell访问权限,浏览所有的root目录,我们在/var/www/文件夹中找到了token.txt文件。
我们打开了text文件,找到了token。
在下个部分,我们将进攻其它的机器。
参考链接
https://lab.pentestit.ru/pentestlabs/4