DOM 型 XSS 是个比较特殊的存在,攻击过程完全不经过服务器,纯前端搞定的。恶意代码通过 JavaScript 写进 DOM 里执行,服务端日志里都看不到啥异常。
这关主要学怎么利用 DOM 型 XSS。
DOM 型 XSS 原理
流程是这样的:
攻击者搞个带恶意代码的 URL
用户点进去,请求发到服务器
服务器返回正常页面(恶意代码不在里面)
浏览器执行 JS,从 URL 里读出恶意代码
恶意代码被写进 DOM 执行
服务器日志里看请求,发现不了 XSS 攻击痕迹。
Low 级别
Low 级别没服务端代码,纯前端 JavaScript:
1 2 3 4
if (window.location.search.indexOf('default') !== -1) { var lang = decodeURIComponent(window.location.search.split('default=')[1]); document.write("<option value='" + lang + "'>" + lang + "</option>"); }