0x00 文章背景
这是一个周五,正好没啥事干,发现群里有条消息,咦,是个靶场来的,看他的介绍似乎有点意思。为了防止涌入太多人我还是码一下,后面大家看到的没打码地址,是我在本地改了 host 来的,懒得一直打码了:

那么那么那么,话不多说直接开干。
0x01 信息收集
既然是个仿真靶机,而且还会重置,那么八成是个 Docker 环境,一般扫端口没什么意义。所以我们直接先扫目录,看是否能获取到一些敏感文件。打开页面如下,有个登录功能:

不管他,直接先扫描目录。扫描后得到这些内容,我们逐个访问下:

settings.php 与 upload.php 在访问后,均跳转至登录页。没有直接报 404,那么推测需要登录后台才能访问:

database.sql 可以直接下载,里面有两个用户的密文,密码是用的 PHP 的 password_hash() 函数进行的加密,这个加密是不可逆的,只能进行碰撞:

0x02 爆破密文
用 cmd5 查了一下这串密文,我焯,是有记录的:

但是……嘻嘻,我没有会员,只能用hashcat爆破了。这里咱们最好是可以获取到密文类型,这样用 hashcat 指定密文类型爆破,速度会更快:
https://www.tunnelsup.com/hash-analyzer/

啊?居然没识别到,不应该啊,毕竟下面都有:

无所谓哈,其实我知道这是什么类型,在 hashcat wiki 搜一下:
https://hashcat.net/wiki/doku.php?id=example%20hashes

那么编号是 3200,将密文保存到 txt,这是我用的字典:
https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt
hashcat 指定密文类型、密文文件以及字典文件,开爆:

大概爆了几分钟的样子,已经出来了:

0x03 垂直越权
通过爆破出来的密文,成功登录后台,但是没什么功能:

这个发布文章也是,没有利用点,目前通篇无 SQL 注入:

还记得我们之前扫描到的 upload 与 settings 吗?尝试访问一下:

还是一样的,重定向到登录页。那说明需要越权,看下 Cookie 里面有没有东西,没有的话,我们就只能抓包再看看参数有没有点可以尝试了:

Auth 里面有一串 Base64 编码后的内容,解码一下看看:

我好像已经知道了,我们把它改成 admin 重新 Base64 编码然后替换 Auth 的值:


重新访问 upload.php,直接舒服了捏:

0x04 上传绕过
我们尝试上传一个包含 PHP 代码的 PNG 文件,然后 BP 拦截数据包,重新改回 PHP 后缀,看看能不能直接上去:

啊?图片文件不能包含 PHP 代码:

这个应该不难,一般情况下,PHP 的常见写法是这样的:

其实 PHP 有好几种写法,这里应该是检测了 PHP 常规写法的格式:

我这里用的长标签来尝试,直接传:
<script language="php">
echo date('Y-m-d h:m:s');
</script>


OK 上去了,舒服呀:

没有直接返回路径,查看源代码,发现了提示:

0x05 获取路径
根据他这个提示,我原本以为格式应该是这样的:

这里我弄了大半个小时没出来,我终于忍不住了:

你自己看看这是一个意思吗?那么应该是这样的:

我现在要传的文件,是 61 字节:

不说了,直接上传,然后基于路径提示进行 MD5 加密:


取密文前 10 位,然后拼接到日期后面进行访问:

接下来,把代码内容换成一句话木马再次上传:

连接马子,成功成功,没毛病:
0x06 权限提升
马子已经连上了,不过是 www 权限:

通过搜索发现了 flag,但是没权限读取:

那就是要提权了,可以看看内核版本,搜一下有没有漏洞。我搜了,内核是没有洞的,那么我们可以搜索一下,看看有没有特权模式的文件,用特权文件来提权:
find / -perm -4000 -type f -exec ls -l {} \;

上面这些带 S 的文件,都具有 SUID 特权,且文件所有者为 root 用户,那么大概率可以用来提权到 root 权限:

这里有一个注意点哈,要执行 /bin/bash 并返回结果,需要用交互式 Shell 才能执行。而目前我们使用的哥斯拉提供的命令执行,只是一个单命令执行的模式,就是你执行一次命令,他返回一次结果,所以目前在哥斯拉中是执行不了 /bin/bash 的:


但是,可以利用哥斯拉的RealCmd开启伪交互式Shell:

然后,在本机使用 netcat 连接,即可获取伪交互式 Shell:

至此,下机!感谢师傅的这个环境,还算是比较贴近真实系统的,因为这些漏洞,我基本都遇见过。