首先介绍背景条件,我发现一个网站的用户资料页面上有一个持久性XSS漏洞。然而只能是用户修改自己的用户名,针对自己触发XSS。其它用户都不能遇到这个XSS攻击。
看起来难以利用,对不对?我们一般都会这样想,通常认为它只是一个风险,有时候会修复它,但是一般都不会,毕竟无法利用它。
要是能有一个利用办法就好了——幸运的是,这个网站还有两个漏洞,我可以构造一个POC来利用session。
POST转为GET
第一个漏洞是,网站允许将一个POST verb的HTTP请求使用GET verb发送。作为演示,一个POST请求在HTTP请求的body中被发送,比如:POST /user-config HTTP/1.1
Host: http://dodgy.evilsite.co.uk
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate, br
Cookie: SESSION=abcdef123
Connection: close
Content-Length: 244firstname=dave&username=tautology 但是,GET请求是在HTTP请求的URL