HackTheBox--Popcorn
本文最后更新于:2 年前
前言
这是hack the box退休机器里面的一个中级难度的靶场,需要充VIP才能打。对于我这个菜鸡而言,还是很有些难度的,所以特此写个wp记录一下。
正文
信息收集
nmap先扫一波:
1 |
|
发现开了web服务和ftp服务,ftp服务没什么用,于是从web服务入手。访问ip地址以后发现只有默认页面,于是dirbuster爆破一下(这里直接选最小的字典就行,字典存放的默认路径是/usr/share/dirbuster/wordlists
):
按照下图设置好即可开始爆破。先爆破主目录下面的二级目录:
发现/torrent
返回状态码200,说明有戏。
getshell
访问后发现是一个BT种子的CMS,废话少说,先找上传点。需要登录,这里随便注册个账号(信息随便填):
注册登录后点击upload
模块,发现上传文件类型被限制为torrent文件,试了各种绕过也不行。没办法,只能通过三级目录入手:
爆破后发现下面有databases
目录,点进去看到SQL文件,审计后发现管理员账号密码(密码需要md5解密):
好像没什么用(有兴趣的师傅可以研究一下),继续找下一个上传点。找了一圈没有找到,只能自己找一个正常的BT种子上传,我选择去kali官网下载一个种子上传。
上传种子以后找到一个图片上传点:
下面分享几种getshell的方法:
0x01 利用msf生成shell
我们可以利用msf生成一个PHP的木马:
1 |
|
把文件名改成shell.php.jpg
绕过第一层限制,再用burpsuite抓包,改回文件名:
去爆破到的/torrent/upload
目录下找到刚才上传的webshell,点进去(注意做了改名处理)再刷新,msf设置好各项参数即可拿到反弹回来的shell。
上传成功:
0x02 bash一句话,用netcat监听
同样方式上传一句话木马<?php @system($_POST['cmd']);?>
,bp改后缀,bash连接一句话:
1 |
|
nc监听反弹的shell。
1 |
|
建议用python自带的伪终端模块:
1 |
|
0x03 github上下载PHP反弹shell
https://github.com/pentestmonkey/php-reverse-shell
拿到www权限后,user.txt就很容易找到了(忘记截图了)。
权限提升
拿到shell后老规矩,先uname -a
查看当前系统内核版本,lsbrelease_a
查看系统发行版,再上网搜索相关exp,发现有脏牛等几种提权exp。把C语言代码上传到服务器,再编译。上传方式可以是和前面一样,但是文件上传后会重命名,所以我想到以下几种上传exp的方法:
0x01 把exp传到我的vps,再在弹回来的shell里面使用wget下载
0x02 使用scp命令上传文件(失败)
1 |
|
这种方法失败了,据说是因为弹回来的shell无法执行scp命令。
最后在某位大佬的提示下,使用python的http模块:
1 |
|
在靶机使用wget下载:
1 |
|
靶机编译并运行:
1 |
|
这里我遇到了报错(换成官方wp里面的exp出现权限不足提示):
既然这个exp和官方wp里面的exp不行,那么换脏牛提权试试:
https://www.exploit-db.com/exploits/40847
各种编译错误,失败。
看了大佬博客以后,发现用了下面的exp才能成功:
https://www.exploit-db.com/exploits/40839
这里要注意编译命令,要带上额外的参数:
1 |
|
编译成功后运行超级慢,不知道是为什么。使用exp中的用户名和自己设置的密码,ssh登录后,进入root文件夹即可找到root.txt。(这里一定要用ssh登录,否则部分命令会无法执行)
成功拿下!
总结
这个靶机算是很贴近实战的步骤了,个人认为文件上传部分的过滤有些简单,很容易getshell。虽然没有内网部分,但是外网打点仍然值得回味。尤其是提权部分,是整个过程中耗时最长的,也是遇到问题最多的。这也告诉我们,实战中遇到这些问题不要轻易放弃,而是要坚持下去,不是找到exp就万事大吉了。