HACK80

作者: djg222000
查看: 214|回复: 0

more +随机图赏Gallery

2017年中旬WEB渗透系列课程-25基于php参数开关的提权2017年中旬WEB渗透系列课程-25基于php参数开关的提权
社工库查询工具1.1修改版社工库查询工具1.1修改版
(公开课)SQLMAP第七课之Tamper插件使用(公开课)SQLMAP第七课之Tamper插件使用
论坛新版IOS及Android客户端内测论坛新版IOS及Android客户端内测
(公开课)SQLMAP第八课之file参数使用(公开课)SQLMAP第八课之file参数使用
2017年中旬WEB渗透系列课程-00前言2017年中旬WEB渗透系列课程-00前言
2017年中旬WEB渗透系列课程-24提权分类2017年中旬WEB渗透系列课程-24提权分类
小迪15期的视频教程小迪15期的视频教程
2017年中旬WEB渗透系列课程-27HASH提权2017年中旬WEB渗透系列课程-27HASH提权
2017年中旬WEB渗透系列课程-21webshell免杀相关问题2017年中旬WEB渗透系列课程-21webshell免杀相关问题

不常见的xss利用探索

[复制链接]
djg222000 发表于 2018-2-3 08:25:22 | 显示全部楼层 |阅读模式
查看: 214|回复: 0

马上注册,加入HACK80!与我们一起交流。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
0x01 前言
反射型xss,相对于持久型xss来说比较鸡肋;需要欺骗用户点击构造好的链接,达到窃取cookie,或是进一步CSRF劫持用户操作的目的。若是get型的xss,javascript代码直接在url中,虽然有些怪异,也好歹能用,愿者上钩。但是若js代码是在post数据包,或者是在header里,那就更显得鸡肋了,甚至无法利用。我查阅了大量的资料,有了下面的尝试。
0x02 POST型反射xss
对于post反射型xss,其实已经有比较成熟的利用方法:构造post表单,利用js直接提交。表单构造如下:
将html保存后,诱导被攻击者访问这个html文件,触发如下:
0x03 http头部反射xss
如果xss代码的输入点是在http头部的话,那么利用表单提交的方法就不行。利用ajax异步跨域请求的方法等会再谈,先说说一个比较特殊的头信息referer。
referer头信息xss
当浏览器进行跳转时,一般会将前一个页面的url带入referer头部中,如果我们控制了跳转前的url,并使之跳转到target页面,那么referer头的xss漏洞便可以利用。当然,chrome和firefox会对跳转前url里的”<>”等进行urlencode,但是IE却不会,所以这种方法在IE下适用。漏洞页面如下:
简单的将referer信息输出,那么构造一个跳转:
访问在IE11上测试成功
除了window.location跳转外,还可以利用iframe、表单提交等方式。利用iframe标签:
利用表单提交的方式:
对其他header的xss尝试
如何让受害者点击某个链接后,访问漏洞页面并带上特定的header信息,ajax可以办到这点。由于需要跨域请求,这里参考了CORS(Cross Origin Resourse-Sharing)的模型。CORS模型实现跨域资源共享需要服务器端设置一定的返回头部,所以这里攻击场景就比较狭隘,仅做学术的研究。服务器端可设置的http头如下:
Access-Control-Allow-Origin: 允许跨域访问的域,可以是一个域的列表,也可以是通配符”*”。这里要注意Origin规则只对域名有效,并不会对子目录有效。即http://foo.example/subdir/是无效的。但是不同子域名需要分开设置,这里的规则可以参照那篇同源策略
Access-Control-Allow-Credentials: 是否允许请求带有验证信息,这部分将会在下面详细解释
Access-Control-Expose-Headers: 允许脚本访问的返回头,请求成功后,脚本可以在XMLHttpRequest中访问这些头的信息(貌似webkit没有实现这个)
Access-Control-Max-Age: 缓存此次请求的秒数。在这个时间范围内,所有同类型的请求都将不再发送预检请求而是直接使用此次返回的头作为判断依据,非常有用,大幅优化请求次数
Access-Control-Allow-Methods: 允许使用的请求方法,以逗号隔开
Access-Control-Allow-Headers: 允许自定义的头部,以逗号隔开,大小写不敏感
基于CORS模型,浏览器发起的ajax请求分为简单跨域请求和非简单跨域请求。简单跨域请求不需要服务器允许便可发起,但浏览器会阻止响应。服务器端的漏洞页面代码如下:
本地测试html代码如下,X-Forwarded-For设置为
通过查看cloudeye上是否有dns请求记录验证标签是否被渲染。
利用chrome打开测试页面,可以看到ajax请求发送成功,并且打开该ajax请求的Preview,可以看到似乎response的html代码被解析了。
script标签里的源是我的cloudeye地址,那么看看cloudeye里面是否有DNS记录,
DNS请求记录存在,说明html代码被浏览器解析了,到这里,似乎可以跨域触发基于header的xss了。但是经过进一步的验证过后,发现只是html代码被渲染,javascript代码却不能执行!!!
0x04 self-xss
self-xss可以说是最最鸡肋的xss了,攻击者只能在自己这里弹窗,一般厂商都会选择忽略self-xss。但self-xss如果和csrf结合起来,会有意想不到的效果。
攻击场景: 某个站点个人简介处存在self-xss,并且保存后并不触发,再次编辑会触发。添加个人简介和编辑处存在csrf
在这种场景下,有一个思路就是:利用csrf添加xss代码,并且让攻击者点击或者跳转触发。需要给被攻击者第一个链接用于csrf插入xss代码
再诱导被攻击者点击漏洞触发的链接:http://target.com/info/edit,亦或发送下面的跳转链接:
self-xss,结合csrf便可将鸡肋变成可攻击的漏洞。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|HACK80 ( 沪ICP备15007512号 )

GMT+8, 2018-2-18 07:10 , Processed in 0.057653 second(s), 24 queries .

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.