web漏洞-CSRF跨站请求伪造

目录

CSRF跨站请求伪造攻击

CSRF定义

CSRF攻击原理

CSRF可以做什么

CSRF与XSS的区别

CSRF攻击类型

CSRF漏洞利用条件

CSRF漏洞检测

靶场练习

dvwa靶场

pikachu靶场

GET请求和POST请求的区别

get请求

post请求

漏洞利用

靶场:MetInfo CMS

CSRF的漏洞防御


CSRF跨站请求伪造攻击

CSRF定义

 CSRF全称:Cross-site request forgery,即,跨站请求伪造,也被称为 “One Click Attack” 或 “Session Riding”,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。
 ​
 CSRF一句话概括:
 攻击者盗用(伪造)受害者的身份,以受害者的名义向服务器发送恶意请求,而这种恶意请求在服务端看起来是正常请求

CSRF攻击原理

 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
 在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。

 用户正常的访问正常网站A
 生成cookie信息
 在没有关闭网站A的情况下,打开网站B(恶意网站)
 要求访问A网站,且为恶意访问
 在用户不知情的情况下,带着合法的cookie信息和恶意参数访问了网站A

CSRF可以做什么

 以受害者名义发送邮件,发消息,盗取受害者的账号,甚至购买商品,虚拟货币转账,修改受害者的网络配置(比如修改路由器DNS、重置路由器密码)等。造成的问题包括:个人隐私泄露、机密数据泄露、用户甚至企业的财产安全等
 ​
 总结:
        盗用受害者身份,受害者能做什么,攻击者就能以受害者的身份做什么

CSRF与XSS的区别

 CSRF听起来很像跨站脚本攻击(XSS),但它与XSS有很大区别。
 XSS 利用的是用户对指定网站的信任,
 CSRF 利用的是网站对用户网页浏览器的信任。

CSRF攻击类型

常见的攻击类型有2种:

 GET型
 POST型

CSRF漏洞利用条件

 被害用户已经完成身份认证
 新请求的提交不需要重新身份认证或确认机制
 攻击者必须了解Web 请求的参数构造
 诱使用户触发攻击的指令(社会工程学)

CSRF漏洞检测

 检测CSRF漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。
 ​
 Referer字段:
 根据HTTP协议,在HTTP头中有一个字段叫Referer,它记录了该HTTP请求的来源地址。

靶场练习

dvwa靶场和pikachu靶场

dvwa靶场

get类型

抓取数据包进行查看:GET请求

方式一:可以通过修改url来进行修改密码

观察源码:

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==编辑

验证是否可以登录:

方式二:构造一个html网页,诱惑用户点击,从而串改用户的信息或密码。

简单的构造:

复制修改密码时的url或者修改密码时进行抓包,将url复制下来,修改里面的密码信息,编辑到html当中

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>错误</title>
 </head>
 <body>
     <h1>404</h1>
     <h1>无法正常访问</h1>
     <a href="http://192.168.100.130/dvwa/vulnerabilities/csrf/?password_new=passwd&password_conf=passwd&Change=Change#" >点击跳转</a>
 </body>
 </html>

保存该html文件,并复制到phpstudy目录的WWW目录下,然后通过浏览器,访问:

点击后会跳转到密码修改的界面,成功修改了密码。

 同一个网段下(如果是服务器就是在公网下),在HTML中的跳转语句的url当中输入对方的IP地址,对方去访问时,会修改对方的信息。在对方毫不知情的情况下,修改信息。(利用社会工程学去诱惑对方点击链接)

中级medium:

 中级模式下修改url信息,无法实现修改密码了

查看源码:

 查看源码,medium级别中检查了保留HTTP_REFERER(HTTP包头的referer参数值,表示来源地址)中是否包含SERVER_NAME(HTTP中的host参数)

正常的修改,抓取数据包:

发现有Referer字段信息

 Referer字段信息和Host信息的IP进行校验,要求源地址要一致,否则不通过

将此数据包发送到重发器进行保留,后面需要使用到里面的Referer信息

然后复制其url,进行修改密码信息,再次抓包:

观察数据包,发现没有Referer字段信息:

由于修改密码此过程需要验证Referer字段和Host字段的ip信息是否一致。

接下来我们要做的就是,将刚刚正常修改密码的Referer字段信息,复制过来,进行放包即可。

方式二:

同low模式中的方式二一样,创建html文件,诱惑用户去点击

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>错误</title>
 </head>
 <body>
     <h1>404</h1>
     <h1>无法正常访问</h1>
     <a href="http://192.168.100.130/dvwa/vulnerabilities/csrf/?password_new=passwd123&password_conf=passwd123&Change=Change#" >点击跳转</a>
 </body>
 </html>

诱惑用户去点击此页面

成功修改用户的信息,修改密码

pikachu靶场

POST型POST

根据提示随便选择一个用户进行登录

接下来进行修改信息,拦截数据包

将数据包发送给CSRF模块:

复制此代码,到WWW的目录下:

去访问此html前端界面:

点击后跳转:

成功修改了用户的信息!!!

GET请求和POST请求的区别

 HTTP是一种在Web上进行数据传输的协议。其中,GET和POST是HTTP请求的两种方法,主要区别在于:
 ​
 GET请求把参数包含在URL中,而POST请求把参数放在请求体中。因此,GET请求可被缓存,且参数限制在URL长度之内,而POST请求不可缓存,参数可以很大,安全性也更高。
 ​
 GET请求传递的参数可以在URL历史记录中被保存,而POST请求中的参数不会保存在历史记录中。
 ​
 GET请求是幂等的,即多次请求同一个URL返回的结果是相同的,而POST请求不是幂等的。因此,多次发送相同的POST请求可能会导致服务器上创建多个资源或发生其他副作用。
 ​
 GET请求一般用于无状态请求,即请求与服务器无关,仅用于获取某些资源。而POST请求一般用于有状态请求,即请求需要与服务器交互,可能更新服务器上的资源。
 ​
 总之,GET和POST请求各有优缺点,应根据实际需求选择使用。例如,当需要获取资源时使用GET请求,当需要更新资源时使用POST请求。

get请求

post请求

漏洞利用

靶场:MetInfo CMS

利用方法:添加管理员用户

进入后台(可通过目录爆破或者查看源码文件),添加用户:

保存的同时,进行抓包:

发送给CSRF模块后,放包即可

修改HTML中的信息,复制代码,创建html文件保存到WWW目录下:

放在服务器的WWW目录下:

浏览器访问:

url:192.168.100.130/csrf.html网址:192.168.100.130/csrf.html

可以正常登录:创建用户成功

CSRF的漏洞防御

 CSRF漏洞防御主要可以从两个层面进行,即服务端的防御、用户端的防御
 ​
 服务端防御
 目前服务器端防御CSRF攻击主要有5种策略:
 1.验证HTTP Referer字段
 2.在请求地址中添加token并验证
 3.同源策略
 4.在HTTP头中自定义属性并验证
 5.使用验证码或者密码确认方式进行
 ​
 客户端防御
 养成良好的上网习惯
 (1)、不要轻易点击网络论坛、聊天室、即时通讯工具或电子邮件中出现的链接或者图片;
 (2)、及时退出长时间不使用的已登录账户,尤其是系统管理员,应尽量在登出系统的情况下点击未知链接和图片
 (3)、在连接互联网的计算机上安装合适的安全防护软件,并及时更新软件厂商发布的特征库,以保持安全软件对最新攻击的实时跟踪。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值