前言:一直以来在挖掘xss时总是被各种过滤,各种实体化转义。是真滴很难受,敢想连着几天兴冲冲奔着表单去,看着被过滤,转义的payload,用尽办法都过不去的心情。最后似乎有个声音在跟我说,能不能找到一处大家都会不太注意的点,把payload带进去,顺便执行了。(ps:弟弟刚入坑,求大师傅们轻喷)
作为菜鸡,只能挖挖xss这种漏洞,感觉别的洞都需要相当的经验和技术和绕过技术。但xss,需要做的仅是==>见框就插!
在探测xss时,我常用的语句就是<h1>a</h1>a
,这个payload插入表单提交后,看看输出的两个a是不是会不一样,如果其中一个a粗了大了,说明<h1>标签被执行了,也就是说插入的东西,被执行了。此时就可以尝试插入一些可以弹窗的payload,一般来说这个时候都是可以正常弹窗的。但是也有例外,比方说后端会有一些过滤函数或者替换函数对一些敏感的字符进行处理。比方说:script、alert、onerror、ononclick、on.....、javascript
等等。我最常用的方法就是,F12 鼠标指向输出的payload,检查一下是为什么没有执行。检查一下到底是过滤了什么东东,猜测是哪种方式过滤的,能不能绕过。
正文:
这篇文章要分享Tips的跟上述内容关系不大,上述仅仅是顺着写下来了的。接下来的要分享的是:在可以展示图片的地方执行javascript脚本。
先看一张图

好了,通过这张图可以看到,前端输出自己存储在服务器上的图时,是使用src标签的。
再看我们常用的payload:<img src=1 onerror=alert(1);>
,是不是一下子就反应过来了。
来,举个栗子
案例一:
这里是个发帖的地方

在帖子的编辑器里面可以有加载网络图片的地方,看我的payload语句,就知道我做了什么

这个帖子发帖成功后,点击这个帖子中这个36d,成功弹出cookie信息。
案例二:
某些站点的功能是可以自己创建一些东西,比方说创建自己的分组,加载自己的图片,然后方便自己调用。

上图的路飞图片是自己上传到服务器的,这个时候调用的时候,F12可以看到是通过我最先的思维导图中的方法来的。
POST /api HTTP/2
Host: huoxian.cn
Content-Length: 612
Sec-Ch-Ua: " Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"
Accept: application/json, text/plain, */*
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Sec-Ch-Ua-Mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
Token: xx.xxx.xx
Sec-Ch-Ua-Platform: "Windows"
Origin: https://huoxian.cn
Sec-Fetch-Site: same-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://xx.huoxian.com/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
functionId=addShortcutPhase&pin=xxx&appid=xxx&content=%E6%88%91%E7%88%B1%E7%81%AB%E7%BA%BF%E3%80%90%E5%9B%BE%E7%89%87%E3%80%91&groupid=8&remark=%22%2F%22%20i%20love%20HX&imagesURL=https%3A%2F%2Fhuoxian.com%2Fddfilesass%2Fjfs%2Ft1%2F216587%2F11%2F7942%2F8282%2F61baf927E5802b6f3%2Fab716d69f73dbed3.jpg&aid=xx.xxx.xx&clientType=comet
这个是在保存表单时候使用BURP抓的请求数据包,可以看到,其中的imagesURL=https%3A%2F%2Fhuoxian.com%2Fddfilesass%2Fjfs%2Ft1%2F216587%2F11%2F7942%2F8282%2F61baf927E5802b6f3%2Fab716d69f73dbed3.jpg
是不是就是保存时,直接调用我上传给服务器的地址
我将这个imagesURL的值修改为xsspayload
imagesURL=1%22%20onerror%3Dalert(document.cookie)
然后放包。
当我在前端调用时成功触发。

最后:
第一次写东西,没什么经验。有劳前辈们和大师傅们多提些意见,还有想法,菜弟弟真滴也很想很想变强。
实不相瞒,我是从10点半开始写的,现在0点27分。原来写文章这么不容易。真滴不容易。
菜鸡弟弟刚入坑,还请各位大师傅多关照。
最后祝各位大师傅,身体健康,日进斗金!