Server-side Request Forgery

Cross-Site Request Forgeries

3

从外部源触发以下表单,响应将包括一个“flag”。

点击提交按钮。

显示错误。提示请求来自原始主机,修改Host即可。此处修改Host的目的是改变请求服务器来源,实现模拟跨站请求的目的。当然也可以使用bp的csrf poc功能来实现。

直接修改请求Host,拿到flag,提交,搞定。

4

以他人身份发布评论。

页面模拟了一个评论页面,您需要以当前登录的用户在其他地方发起提交评论。

先自己发一条评论。

修改请求包的Host,伪造成其他来源即可。

7

将网页提供的JSON消息,从其他来源通过POST发送到目标服务器。

根据页面提供的参考博客,构造一个CSRF攻击的HTML文件,用浏览器打开文件会自动执行发送POST请求提交表单操作。

1
2
3
4
<form method="POST" action="http://www.webgoat.local:8080/WebGoat/csrf/feedback/message" contenttype="application/json" ENCTYPE="text/plain">
<input type="hidden" name='{"name": "WebGoat","email":"webgoat@webgoat.org","content":"WebGoat is the best!!' value='"}'>
</form>
<script> document.forms[0].submit(); </script>

上面的action地址可以从随便填写后发送后的请求中获取。

用已经打开WebGoat页面且已登录的的浏览器,在新标签页中打开HTML文件后即可看到flag。

8

登录页面的CSRF攻击。

在login CSRF攻击中,攻击者使用攻击者在诚实网站上的用户名和密码伪造对该网站的登录请求。如果伪造成功,诚实服务器将使用Set Cookie标头进行响应,该标头指示浏览器通过存储会话Cookie来改变其状态,从而将用户作为攻击者登录到诚实网站。此会话cookie用于将后续请求绑定到用户的会话,从而绑定到攻击者的身份验证凭据。

这关任务是在保持当前页面(页面1)打开的情况下,在新页面(页面2)上创建以csrf-为前缀的新用户,并以该新用户登录。然后在页面1上点击下图这个solved按钮。

步骤如下:

搞定。

Server-Side Request Forgery

2

修改请求,来显示Jerry的图像。

点击按钮,查看正常请求。

修改请求中的图像名,tom改成 jerry,搞定。

3

更改请求,以便服务器从 http://ifconfig.pro 获取信息。

点击按钮,查看正常请求。

修改请求的url参数为:http://ifconfig.pro