美文网首页渗透测试安全运维
记一次挖掘存储型XSS漏洞过程

记一次挖掘存储型XSS漏洞过程

作者: 道书简 | 来源:发表于2018-09-19 16:55 被阅读99次

00×01 前言

这几天我无意间看到了一个微社区程序——ROCBOSS

下载地址:http://down.admin5.com/php/112864.html

研究了一下这套程序,使用的整体效果还不错(虽然功能不多),所以我准备对这个程序做一次灰盒测试。

大家搭建时按照下载页面的提示编辑源码就OK了。

这次我找准了漏洞挖掘的目标——存储型XSS漏洞,因为如果是微社区的话,相对于其它网站(比如说公司官网之类的)而言,微社区存在存储型XSS漏洞的可能性更大大,XSS漏洞可以存在于个人资料处,文章发表处或者留言评论处等等,而其它网站就没留这么多机会给XSS漏洞了。

00×02 挖掘过程

首先,我在文章发表处和评论处都尝试插入XSS代码,但根据结果来看,程序把输出的内容都实体化了,插入的XSS代码没起效果。

就在这时,我发现网站还有一个很不起眼的功能——私信,于是,我开始给我注册的另一个帐号发送一条私信,私信中插入XSS代码,内容如下:

  1. “><script>alert(“1”)</script><”

结果如图

image

证明有戏,程序没有把私信的内容实体化

查看源代码

image

过滤了<script>标签

说明程序有过滤XSS脚本

这时我们来看看过滤XSS的脚本(/system/util/Filter.php):

image

XSS过滤脚本在该文件的73-136行

因源代码较多,这里就不全部发了,这里我们发比较重要的几段:

  1. $ra1 =Array('javascript','vbscript','expression','applet','meta','xml','blink','link','script','embed','object','iframe','frame','frameset','ilayer','layer','bgsound','base','style');

  2. $ra2 =Array('onabort','onactivate','onafterprint','onafterupdate','onbeforeactivate','onbeforecopy','onbeforecut','onbeforedeactivate','onbeforeeditfocus','onbeforepaste','onbeforeprint','onbeforeunload','onbeforeupdate','onblur','onbounce','oncellchange','onchange','onclick','oncontextmenu','oncontrolselect','oncopy','oncut','ondataavailable','ondatasetchanged','ondatasetcomplete','ondblclick','ondeactivate','ondrag','ondragend','ondragenter','ondragleave','ondragover','ondragstart','ondrop','onerror','onerrorupdate','onfilterchange','onfinish','onfocus','onfocusin','onfocusout','onhelp','onkeydown','onkeypress','onkeyup','onlayoutcomplete','onload','onlosecapture','onmousedown','onmouseenter','onmouseleave','onmousemove','onmouseout','onmouseover','onmouseup','onmousewheel','onmove','onmoveend','onmovestart','onpaste','onpropertychange','onreadystatechange','onreset','onresize','onresizeend','onresizestart','onrowenter','onrowexit','onrowsdelete','onrowsinserted','onscroll','onselect','onselectionchange','onselectstart','onstart','onstop','onsubmit','onunload');

我们可以看到,很多标签和事件都被过滤了

但是,黑名单肯定都存在绕过的可能

也许你已经注意到了,脚本并没有过滤eval函数和ontoggle事件

所以我们可以构造如下XSS代码

  1. "><details open ontoggle=eval("javascript:alert('xss')")><"

重新发一条私信过去试试

结果如图

image

查看页面源代码

image

过滤了javascript函数

既然这样,我们试一下通过ASCII 16进制编码转换来绕过过滤

将javascript转换编码后,构造出如下XSS代码

  1. "><details open ontoggle=eval("\x6a\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3aalert('xss')")><"

结果如图

image

成功弹出提示框

00×03 存储型XSS漏洞挖掘经验

挖掘存储型XSS漏洞的时候,大家可以多留意一下评论留言处和个人资料处这些地方,存在XSS漏洞的几率非常大;

同时也要看一下黑名单过滤规则,想办法进行绕过,比如通过编码转换、大小写混淆或者利用一些特殊的函数、标签来绕过黑名单;

总之思路越灵活越好,当然这只是个人观点。

00×04 存储型XSS漏洞防御

XSS防御的总体思路是:对输入(和URL参数)进行过滤,对输出进行编码

就像这个程序一样,写一个过滤黑名单,过滤恶意字符,虽然不一定是安全的,但至少能抵御部分XSS攻击。

参考文献:http://www.cnblogs.com/digdeep/p/4695348.html
转载请注明:即刻安全 » 记一次挖掘存储型XSS漏洞过程

相关文章

  • (基础)XSS与CSRF代码审计

    XSS xss漏洞个人感觉就两种,一种是反射型xss,另外一种是存储型xss。我之前用bp学习xss漏洞挖掘的时候...

  • 记一次挖掘存储型XSS漏洞过程

    00×01 前言 这几天我无意间看到了一个微社区程序——ROCBOSS 下载地址:http://down.admi...

  • 代码审计——xss漏洞

    XSS漏洞大致分为三种 反射型XSS漏洞 存储型XSS漏洞 基于DOM的XSS漏洞 反射型XSS漏洞 它通过给别人...

  • 04 常见Web漏洞解析

    XSS XSS有三类: 存储型 过程: 反射型 过程如下: DOM型错误信息在hash中总结: CSRF漏洞 点击...

  • Web漏洞分类

    普通反射型XSS存储型XSS基于DOM的XSS基于Flash的XSS 写类型CSRF读类型CSRFURL跳转漏洞 ...

  • xss

    PHPMyWind漏洞介绍PHPMyWind 5.3存储型XSS:漏洞公开时,PHPMyWind 5.3以及更早版...

  • Finecms 存储型XSS漏洞

    参考资料:http://www.freebuf.com/column/165269.html 源码下载:https...

  • XSS漏洞攻击教程:

    XSS分类:1.反射型XSS(非持久型);2.存储型XSS((持久型);3.DOM XSS(文档对象型). 反射型...

  • xss漏洞挖掘

    --《web前端黑客技术加密》 HTML标签之间 普通场景 提交 综合 无法执行脚本的标签 title:定义文档的...

  • XSS漏洞挖掘

    写在前面 文章内容参考自https://twosecurity.io/http://www.4hou.com/we...

网友评论

    本文标题:记一次挖掘存储型XSS漏洞过程

    本文链接:https://www.haomeiwen.com/subject/znwinftx.html