Cross-Site Request Forgery (CSRF) Attack Lab网络安全实验
Cross-Site Request Forgery (CSRF) Attack Lab网安实验
3.1 Task 1: Observing HTTP Request.
使用F12打开网络元素,观察发送的GET和POST报文


3.2 Task 2: CSRF Attack using GET Request
为在指定路径 /var/www/CSRF/Attacker/ 中创建并填充名为 index.html 的文档,并将其注入包含恶意 JavaScript 代码的内容。该 HTML 文档被配置为指向服务器上的网址 http://www.csrflabattacker.com,默认打开,并自动解析其中的内容;特别地,在 img 标签中嵌入的代码会即时发送网络请求。
需要root权限才能修改

我们进行了网络数据抓取操作,并通过协议分析工具访问了该特定域名www.csrflabattacker.com。观察发现该网站向目标地址www.csrflabelgg.com发送了一个名为'add?friend=43'的请求包。这个请求包中包含一个名为'add?friend=43'的字段值信息,在此场景中表示Bobo拥有Elgg注册平台的一个账号ID号码。

在Alice访问该网站时等同于向服务器发起了加入Boby为好友的请求,并成功实现了这一目标

3.3 Task 3: CSRF Attack using POST Request
通过POST方式发送报文,在发送前,请确保将各相关参数正确赋值给相应的变量,并遵循实验文档所规定的标准

在访问钓鱼网站www.csrflabattacker.com时,系统被感染并运行恶意代码。该恶意代码导致系统自动跳转至登录页面,并检测到用户姓名与简介发生变动。

Question 1 : Bob无法获取Alice账户的Elgg密码;因此他无法登录Alice账户以获取相关信息。请描述Bob如何解决这一问题。
Answer 1 :因为网站设计者的疏忽及实验需求,在传输数据时并未对所发送的数据进行身份认证或权限验证功能测试。因此系统未验证发送此报文用户的权限资格。实际上,Bob只需获取Alice账户ID即可利用此信息绕过权限限制。
Question 2 : 如果Boby希望发起攻击到访问其恶意网页的任何人,则他无需预先知道谁会访问该网页。在这种情况下,他能否利用 CSRF 攻击手段修改受害者的Elgg账户信息?请加以说明。
Answer 2 : 因此无法做到这一点。攻击者必须发送包含目标用户的唯一标识符(如Alice的ID=42)的请求才能修改账户信息。如果想针对其他用户发起 CSRF 攻击,则必须首先获取他们的唯一标识符并相应地调整请求内容。
3.4 Task 4: Implementing a countermeasure for Elgg
访问指定路径' /var/www/CSRF/Elgg/vendor/elgg/elgg/engine/classes/Elgg '并对其'ActionsService.php'文件进行编辑。通过定位到名为'gatekeeper'的方法,并取消第一条指令(即$'return true'),随后再次发起类似的攻击。观察结果表明该策略未能成功:Alice网站内容未发生更改。


总结
避免深入处理服务器内部的具体实现细节, 我们的重点始终是通过发送特定的数据包来与服务器进行交互. 通过分析发现, 在不使用密钥的情况下进行简单的参数传递会导致通信的安全性显著下降.
