记挖洞过程中遇到的几个XSS漏洞,三个存储型XSS和一个反射型XSS,主要
分享思路。输入可控,且被输出,均可测一测XSS。
登录明细+IP+XFF
登录后进入【个人中心】,发现【登录明细】的功能,记录了登录时间登录IP这些东西。
抓登录的请求包,构造 X-Forwarded-For 头重放,咦,简单的拼接,有机会。
很多应用在用户登录时都有选择记录登录IP,没错,首先想到就是构造xff测sql注入。这里我们不做关于sql注入的分析,主要还是菜xiong反复测试始终没测出来(默念没关系没关系)。
好了,回到正题,登录明细中将我们构造的xff值回显,这不得尝试xss。
登录明细的记录我们删除不了,避免造成不必要的困扰,这里就不用弹窗的payload了,我们使用console.log('test'),触发效果就是控制台输出日志test。
这个漏洞提交后厂家很快就修复了,真的很快。分析发现修复是做了两次HTML转义,传入传出各一次。
加之修复前的测试截图找不着了,这里只能用
修复后的截图给大家分析分析了。
修复前,就是尖括号没还未被转义成“没用”的字符时,是能触发控制台日志输出的。
下面是修复前植入的payload,但是截图是修复后的。厂家修复做了输入输出两次转义,但由于下面的payload是修复前植入的,就没办法做输入时的转义,仅能做输出的转义了。
下面是修复后植入的,做了输入输出两次转义,所以展示给用户的就成了这样。
登录成功失败均有记录,那么不就证明了非self-xss。
聊天框+img标签+图片地址
发现输入框,输入文本test<>"" 发送,尖括号双引号被转义,尝试绕过无果。
传送图片,发现content参数可控图片地址,地址中插入test<>""简单测试,发现未对图片地址中的尖括号双引号转义,构造事件下面的xss Payload。
成功触发,哈哈哈。其实这里gif表情图同样可触发。
查看源代码,发现payload已经成功植入了。
payload发送给了目标,目标聊天窗口同样返回,证明非self-xss。
动态+简单过滤+分两次发布
可发布动态,直接
,发布会直接替换成空。
这里其实只是做了前端检测,相信师傅们都能很轻松绕过,不过这里分享一个我另外的思路。
尝试将
分两次发布,
第一次输入发表:*/sole.log(1111);
第二次输入发表: