记几次略有意思的 XSS 漏洞发现

原文链接:https://www.freebuf.com/articles/web/331671.html

记几次略有意思的 XSS 漏洞发现

倒霉xiong 2022-04-29 08:41:48

35185

记挖洞过程中遇到的几个XSS漏洞,三个存储型XSS和一个反射型XSS,主要分享思路。输入可控,且被输出,均可测一测XSS。

*0x00 登录明细+IP+XFF*

登录后进入【个人中心】,发现【登录明细】的功能,记录了登录时间登录IP这些东西。1651128315_626a37fb9cbfa84d16e53.png!small?1651128358389

抓登录的请求包,构造 X-Forwarded-For 头重放,咦,简单的拼接,有机会。

1651128348_626a381ca3d6421c9e9a1.png!small?1651128391536

很多应用在用户登录时都有选择记录登录IP,没错,首先想到就是构造xff测sql注入。这里我们不做关于sql注入的分析,主要还是菜xiong反复测试始终没测出来(默念没关系没关系)。

好了,回到正题,登录明细中将我们构造的xff值回显,这不得尝试xss。 登录明细的记录我们删除不了,避免造成不必要的困扰,这里就不用弹窗的payload了,我们使用console.log(‘test’),触发效果就是控制台输出日志test。

1651128369_626a383139dd2da0887af.png!small?1651128412069

这个漏洞提交后厂家很快就修复了,真的很快。分析发现修复是做了两次HTML转义,传入传出各一次。加之修复前的测试截图找不着了,这里只能用修复后的截图给大家分析分析了。

修复前,就是尖括号没还未被转义成“没用”的字符时,是能触发控制台日志输出的。

下面是修复前植入的payload,但是截图是修复后的。厂家修复做了输入输出两次转义,但由于下面的payload是修复前植入的,就没办法做输入时的转义,仅能做输出的转义了。

1651128482_626a38a246798e64912e9.png!small?1651128524945

1651128484_626a38a4df69cbf7371d2.png!small?1651128527641

1651128522_626a38cabc2e42c3c3ce4.png!small?1651128565459

下面是修复后植入的,做了输入输出两次转义,所以展示给用户的就成了这样。

1651128530_626a38d22d34f8414f526.png!small?1651128572884

1651128650_626a394a5867b82a54115.png!small?1651128693048

登录成功失败均有记录,那么不就证明了非self-xss。

*0x01 聊天框+img标签+图片地址*

发现输入框,输入文本test<>“” 发送,尖括号双引号被转义,尝试绕过无果。

1651129029_626a3ac5016d0d9beef01.png!small?1651129071688

传送图片,发现content参数可控图片地址,地址中插入test<>""简单测试,发现未对图片地址中的尖括号双引号转义,构造事件下面的xss Payload。

1651129052_626a3adc3d916d4f4919d.png!small?1651129095202

成功触发,哈哈哈。其实这里gif表情图同样可触发。

1651129122_626a3b22a1effdfc8aeb5.png!small?1651129165421

查看源代码,发现payload已经成功植入了。

1651129131_626a3b2b0f4ccdf268dd5.png!small?1651129173760

payload发送给了目标,目标聊天窗口同样返回,证明非self-xss。

*0x02 动态+简单过滤+分两次发布*

可发布动态,直接,发布会直接替换成空。

1651129197_626a3b6d1f37976d25fa5.png!small?1651129239812

这里其实只是做了前端检测,相信师傅们都能很轻松绕过,不过这里分享一个我另外的思路。

尝试将分两次发布,

第一次输入发表:*/sole.log(1111);

1651129372_626a3c1c45ee44b93ca9f.png!small?1651129415011

第二次输入发表:

1651129403_626a3c3b201d8aac50230.png!small?1651129445806

这里通过 /注释/ 将部分页面内容注释,形成有效闭合。不过这种方法容易让页面裂开,慎用,不是必要的话最好不要用这种方法。如果师傅们有把握做好注释加闭合,且有办法删除,还是可以玩玩,若没做好闭合,又删除不了,那就gg了。

1651129267_626a3bb33a0a62a91bb48.png!small?1651129310031

xss触发成功。

1651129261_626a3bad285c1ab15e644.png!small?1651129303905

*0x03 搜索+input标签+hidden属性*

这是一个edu反射型xss,利用条件苛刻,不过可以用来学习下。

1651129765_626a3da537dc7845c629d.png!small?1651129807860

搜索框,输入1111<>“”,返回如下,再审查源代码,利用不了。

1651129567_626a3cdfea3e290d1c9d8.png!small?1651129610647

搜索test<>“”‘’,返回如下。对比一下,搜索存在的与不存在的,返回有挺大出入的。

1651129526_626a3cb6593380b1ca106.png!small?1651129569278

审查源代码,发现属性值通过单引号闭合,且单引号未被转义。

1651129788_626a3dbcc31f4ab9d2b2f.png!small?1651129831485

想必师傅们也发现了,input便签+hidden属性。

先摸索, autofocus自动触发事件无果,hidden也覆盖不了。

还是看看网上的师傅怎么说的吧,参考链接:https://www.anquanke.com/post/id/148357

1651129806_626a3dce5cc42ea480efc.png!small?1651129849074

搜索 ’ accesskey=‘X’ οnclick='alert(1) ,火狐 Alt+SHIFT+X 键弹窗。所以嘛,利用条件苛刻。。。。。。

1651129813_626a3dd5d70f8f540a92a.png!small?1651129856882

欢迎师傅们指正,或传授更多经验。

本文作者:倒霉xiong, 转载请注明来自FreeBuf.COM

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值