让我向你解释一下我正在做的笔试的情况:
www.victim.com 上有一个应用程序接受带有自定义标题的POST请求(例如:"授权" :& #34;为XXXXX" )。我有一个域 www.attacker.com ,当访问(由#34;受害者")需要执行伪造上述POST请求的代码时,请将其发送到www.victim。 com并重新加载网页。正如您所看到的,行为是经典"形式":
的预期攻击者网站上的代码(www.attacker.com):
<script>
$(document).ready(function(){
$("#myForm").submit(function(event){
event.preventDefault(); //prevent default action
var post_url = $(this).attr("action");
var request_method = $(this).attr("method");
var form_data = $(this).serialize();
$.ajax({
url : post_url,
headers: {
"Authorization": "xxxxxx",
"Accept-Language":"x_machine"
},
type: request_method,
data : form_data
});
});
});
</script>
上一个方法的主要缺点是我无法在提交表单之前自定义请求的标头。这就是为什么我在提交表单之前尝试使用AJAX和JQuery修改标题的原因:
response.SOAP-Env:Envelope
此代码几乎有效!然而,响应由www.attacker.com解释,而不是按照预期由www.victim.com解释。之前提到的经典形式重新加载网页,并允许响应由www.victim.com解释。
最后,问题是:什么是魔法配方&#34;修改请求的标题并将其作为经典表单提交以允许响应由www.victim.com解释?
提前致谢!