前期准备:
靶机地址:https://www.vulnhub.com/entry/containme-1,729/
kali靶机地址:192.168.11.129
靶机ip:192.168.11.198
一、信息收集
1.使用nmap对目标靶机进行扫描
发现开放了 22、80、2222 和 8022 端口。
2. 80端口
源代码中也没有什么发现,扫一下目录:
检查 index.php 时发现会列出当前目录下的文件:
也许 index.php 有 命令注入。wfuzz 扫一下:
二、漏洞利用
发现可以注入:
简单查看一下系统中的文件:
发现 .ssh 文件查看不了,那就尝试写入 shell,首先在本地制作一个 shell 脚本,然后开启 http 服务:
查找一下哪里上传的文件能读取:
发现可以上传到到 /tmp 目录下:
查看一下是否上传成功:
bash 运行 shell.sh ,并开启监听:
连接成功。
三、容器一提权
查看一下系统内的可疑信息:
发现在 /home/mike 下有个 1cryptupx 文件很可疑,运行查看一下:
查看一下二进制数据:
命令行中复制不方便,就看的这里,复制下来,十六进制编码恢复成 1cryptupx:
根据文件名和 Exeinfope 发现是 upx 打包的:
upx解压:
报错了,查了没找到什么原因,后来用的 win10 上的 UPX Tool
解压成功了,IDA 打开:
在这个函数中,我们得到一个哈希字符串。这意味着如果我们输入正确的密码,该函数将以 root 身份调用“/bin/bash”。将哈希字符串保存下来,爆破一下:
发现文件密码是 mike,再次运行一下 1cryptupx 文件:
发现还是跳到了 www-data 用户,应该还有别的类似文件,查一下能执行的文件:
发现有个 crypt 文件。查看一下:
发现和之前发现的 1cryptupx 文件输出得一样,那加上之前发现的密码试一下:
获得了 root 账户,没找到 flag,一开始以为没有 flag,后来不经意间查了一下 ip 发现:
原来我在容器中。
四、容器二提权
找找同网段还有没有别的容器,容器中没有 nmap,下载一个再扫:
也可以用 bash 命令扫:
for i in {1..254} ;do (ping 172.16.20.$i -c 1 -w 5 >/dev/null && echo "172.16.20.$i" &) ;done
扫一下 172.16.20.6 开放的端口:
发现开放了 22 端口,但是我们不知道密码,那找找有没有密钥:
试试在host1上使用用户名mike和mike的id_rsa登录host2:
发现能成功登录到 host2.检查一下有哪些服务:
发现运行着数据库,尝试登录下数据库:
简单测试一下发现居然进去了,mike:password
查看表内信息发现了 root 的密码,登录 root:
找找有没有 flag:
发现一个 mike.zip 压缩包,解压发现有密码,之前在数据库中我们发现了 mike 的密码,成功解压:
得到了 flag。
注: 在 host2 中发现密码是 password,是猜对的,有点取巧。如果猜不对需要爆破,需要在 host1 上,使用 ssh -L 来映射 host2:3306 ==> host1:3306。再将 host1:3306 映射到 kali 然后再爆破。