pikachu靶场中的CSRF、SSRF通关

目录

1、CSRF介绍

2、CSRF(get)

3、CSRF(post)

4、CSRF Token

5、SSRF介绍

6、SSRF(curl)

7、SSRF(file_get-content)

8、CSRF与SSRF的区别


最近在学习CSRF、SSRF漏洞,这里使用pikachu靶场来复习+练习一下这两个漏洞

1、CSRF介绍

这里使用pikachu靶场来学习,点击进入到CSRF模块中可以看到如下页面:

可以看到是这样介绍CSRF的:

Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也成为"one click"攻击。

很多人搞不清楚CSRF的概念,甚至有时候会将其和XSS混淆,更有甚者会将其和越权问题混为一谈,这都是对原理没搞清楚导致的。
这里列举一个场景解释一下,希望能够帮助你理解。


场景需求:
小黑想要修改大白在购物网站tianxiewww.xx.com上填写的会员地址。
先看下大白是如何修改自己的密码的:
登录---修改会员信息,提交请求---修改成功。
所以小黑想要修改大白的信息,他需要拥有:

1,登录权限

2,修改个人信息的请求。

但是大白又不会把自己xxx网站的账号密码告诉小黑,那小黑怎么办?
于是他自己跑到www.xx.com上注册了一个自己的账号,然后修改了一下自己的个人信息(比如:E-mail地址),他发现修改的请求是:
【http://www.xxx.com/edit.php?email=xiaohei@88.com&Change=Change】
于是,他实施了这样一个操作:把这个链接伪装一下,在小白登录xxx网站后,欺骗他进行点击,小白点击这个链接后,个人信息就被修改了,小黑就完成了攻击目的。

为啥小黑的操作能够实现呢。有如下几个关键点:

1.www.xxx.com这个网站在用户修改个人的信息时没有过多的校验,导致这个请求容易被伪造;
---因此,我们判断一个网站是否存在CSRF漏洞,其实就是判断其对关键信息(比如密码等敏感信息)的操作(增删改)是否容易被伪造。

2.小白点击了小黑发给的链接,并且这个时候小白刚好登录在购物网上;
---如果小白安全意识高,不点击不明链接,则攻击不会成功,又或者即使小白点击了链接,但小白此时并没有登录购物网站,也不会成功。
---因此,要成功实施一次CSRF攻击,需要“天时,地利,人和”的条件。

当然,如果小黑事先在xxx网的首页如果发现了一个XSS漏洞,则小黑可能会这样做: 欺骗小白访问埋伏了XSS脚本(盗取cookie的脚本)的页面,小白中招,小黑拿到小白的cookie,然后小黑顺利登录到小白的后台,小黑自己修改小白的相关信息。

---所以跟上面比一下,就可以看出CSRF与XSS的区别:CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。

因此,网站如果要防止CSRF攻击,则需要对敏感信息的操作实施对应的安全措施,防止这些操作出现被伪造的情况,从而导致CSRF。

比如:
--对敏感信息的操作增加安全的token;
--对敏感信息的操作增加安全的验证码;
--对敏感信息的操作实施安全的逻辑流程,比如修改密码时,需要先校验旧密码等。

看完了CSRF的介绍,就已经对该漏洞有了一定的了解,下面我就使用靶场中的案例来演示一下:

2、CSRF(get)

首先就是来到了CSRF第一关,get型的CSRF,可以看到是一个登录框,点击提示可以看到有用户名和密码:

尝试使用lucy用户登录,可以看到登录成功会后页面会显示个人信息:

并且我们可以修改个人信息,那么可以尝试修改一下:

通过分析数据包,可以看到这里修改信息时就只是使用get方式对字段进行修改,那么其他用户用户的修改也是如此,如果攻击者想要修改lucy的个人信息就可以构造如下URL:

http://192.168.159.1/pkav-labs/vul/csrf/csrfget/csrf_get_edit.php?sex=girl123456&phonenum=12345678922&add=usa&email=lucy%40pikachu.com&submit=submit 

注:这里我就在本地构造的因此使用的就是本地的ip

 为了更加真实,可以使用短链接生成器对其进行“美化”:

https://a.d4t.cn/YEGqiH

然后将生成的短连接发送给受害者Lucy,如果他点击了该链接就会导致自己的信息被修改,点击后再去查看信息:

可以看到访问了链接后,lucy用户的性别从girl变成了girl123456,那么如果攻击者利用这种方式是不是就可以神不知鬼不觉的修改受害者的登录密码和其他敏感操作,这也是CSRF最大的危害了:在用户不知情的情况下,借助已经登录的用户执行一些攻击者想要执行的操作

3、CSRF(post)

再来到post这一关,可以看到还是一个登录框,但是是post提交的方式,并且提示中也提供了用户名和密码

那么还是使用lucy用户登录,登录可以看到个人信息:

这里对登录后,修改个人信息的数据包进行抓包:

可以看到这里不再向get关卡一样,直接将数据放在URL中进行修改了,而是使用POST方式进行提交

因此这里我们需要自己构造一个访问可以自动提交请求的网页,以此来实现url利用:

首先复制一份相同的网页文件csrf_post_edit_hack.php,找到POST传参的部分:

然后我这里将sex修改为body:

编写自动提交脚本:

然后只要受害者访问下列url就会在神不知鬼不觉的情况下将自己的sex修改为boy:

http://localhost/pkav-labs/vul/csrf/csrfpost/csrf_post_hacker.php

可以看到访问链接后,sex就被修改了 

4、CSRF Token

最后这一关,看名字就知道应该是使用csrf token进行了防御

CSRF token防御CSRF的原理:在用户登录网站时生成一个唯一的token,然后将这个token嵌入到表单或请求中。当用户提交表单或请求时,服务器会验证token是否匹配用户会话中的token,如果不匹配则拒绝请求。这样可以防止攻击者利用用户的身份信息执行未经授权的操作。

那么下面尝试对修改的数据库尝试抓包看看:

可以看到还是使用get方式提交的,但是不同的是,这里新增了一个变量token,这个是一个随机数

我们可以放掉这个包,然后重新抓一个包:

可以看到token和上一次的token不同了,因此使用token字段可以很好的防御攻击者进行CSRF攻击

5、SSRF介绍

点击进入到SSRF模块中,可以看到如下页面:

可以看到是这样介绍SSRF的:

SSRF(Server-Side Request Forgery:服务器端请求伪造)

其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制

导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据
数据流:攻击者----->服务器---->目标地址
根据后台使用的函数的不同,对应的影响和利用方法又有不一样

PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()

如果一定要通过后台服务器远程去对用户指定("或者预埋在前端的请求")的地址进行资源请求,则请做好目标地址的过滤

6、SSRF(curl)

单击进入这一关,可以看到有一个链接,点击后:

可以看到当前页面时从url变量中引入进来的,因此这里我尝试修改后面的网址:

成功引入了进来,这是由于网站没有对其URL进行限制,所以我们可以直接修改该网站的url,实现URL跳转,那么现在就可以尝试在这里进行手动的端口扫描:可以利用dict协议访问ip的某端口来确定该端口是否开启

比如说可以探测3306,返回了数据,说明3306端口是开启的:

再尝试探测3389端口,没有返回数据,说明3389端口是关闭的:

注:也可以使用Burpsuite抓包然后使用里面的扫描模块进行扫描,看那些端口开放着

7、SSRF(file_get-content)

现在来到file_get_content这里,可以看到这里从一个url中读取了一个php文件

这里我们可以利用file伪协议的方法制造恶意的payload去获取后台代码:

尝试对获取到的编码数据进行解码后发现正是phpinfo文件:

8、CSRF与SSRF的区别

  1. CSRF(Cross-Site Request Forgery): CSRF是一种利用用户在已经登录的网站上的身份验证信息,通过伪造请求来执行未经授权的操作的攻击方式。攻击者通过诱使用户访问恶意网站或点击恶意链接,在用户已经登录的网站上发送伪造请求,以此来执行攻击者事先构造好的操作。

CSRF的特点:

  • 攻击者需要诱使用户点击恶意链接或访问恶意网站。
  • 攻击者无法直接获取用户的敏感信息,只能执行特定的预先构造好的操作。
  • CSRF攻击主要针对用户的身份验证信息,例如登录状态、cookie等。
  1. SSRF(Server-Side Request Forgery): SSRF是一种利用服务器端的漏洞,使得攻击者可以通过构造恶意请求来访问服务器内部资源或执行未经授权的操作的攻击方式。攻击者通过在服务器端发起请求,可以访问内部系统、绕过防火墙等,造成更严重的安全问题。

SSRF的特点:

  • 攻击者可以直接在服务器端发起请求,无需用户的参与。
  • 攻击者可以访问服务器内部的资源,例如访问本地文件、绕过防火墙等。
  • SSRF攻击主要针对服务器端的漏洞,可以造成更严重的安全问题。

到此pikachu靶场中的CSRF和SSRF漏洞就学习完毕了

参考链接:

CSRF:跨站请求伪造攻击_csrf(跨站请求伪造) 攻击-CSDN博客

pikachu靶场-CSRF(跨站请求伪造)-CSDN博客

SSRF:服务端请求伪造攻击_服务端伪造请求攻击-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/644523.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode HOT 100:3. 无重复字符的最长字串

1. 链接 . - 力扣(LeetCode) 2. 题目描述 3. 题解 方法一:滑动窗口 哈希表 根据题意: 1. 遍历所有可能的子串——利用滑动窗口表示子串; 2. 保证滑动窗口内不包含重复字符——需要哈希表map记录字符出现的下标。…

PostgreSQL基本使用Schema

参考文章:PostgreSQL基本使用(3)Schema_pg数据库查询schema-CSDN博客 PostgreSQL 模式(Schema)可以理解为是一个表的集合(或者所属者)。 例如:在 MySQL 中,Scheam 是库&…

etcd集群部署

1.etcd介绍 1.1 什么是etcd etcd的官方定义如下: A distributed, reliable key-value store for the most critical data of distributed systemetcd是一个Go语言编写的分布式、高可用的一致性键值存储系统,用于提供可靠的分布式键值(key value)存储、配置共享和服务发现等…

Nginx-狂神说

Nginx概述 公司产品出现瓶颈? 我们公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户。 但是慢慢的,使用我们平台…

C++ 常用UI库

AWTK github gitee doc scons 类似RT-Thread element github C Cross platfrom C GUI libraries,QT可替代方案。调试包 SDL GUI cegui 创作不易, 小小的支持一下吧!

如何在Windows 10上对硬盘进行碎片整理?这里提供步骤

随着时间的推移,由于文件系统中的碎片,硬盘驱动器可能会开始以较低的效率运行。为了加快驱动器的速度,你可以使用内置工具在Windows 10中对其进行碎片整理和优化。方法如下。 什么是碎片整理 随着时间的推移,组成文件的数据块&a…

YOLOv10详细解读 | 一文带你深入了解yolov10的创新点(附网络结构图 + 举例说明)

前言 Hello大家好,我是Snu77,继YOLOv9发布时间没有多久,YOLOv10就紧接着发布于2024.5.23号(不得不感叹YOLO系列的发展速度,但要纠正大家的观点就是不是最新的就一定最好)! 本文给大家带来的是…

Unity开发——XLua热更新之Hotfix配置(包含xlua获取与导入)

一、Git上获取xlua 最新的xlua包,下载地址链接:https://github.com/Tencent/xLua 二、Unity添加xlua 解压xlua压缩包后,将xlua里的Assets里的文件直接复制进Unity的Assets文件夹下。 成功导入后,unity工具栏会出现xlua选项。 …

vue3瀑布流示例,左侧菜单根据窗口滚动条进行固定和取消固定,实现瀑布流demo

瀑布流demo的实现效果: 效果说明: 1.使用vue3实现瀑布流效果; 2.瀑布流横向设置5等分,可根据个人需求调整; 3.左侧菜单可根据右侧滚动条滑动时进行固定和取消固定,实现更优的展示效果; 4.瀑…

Django 里html模板

Django 提供两种方式让程序员自定义html模板。 第一种方法 在项目文件夹里的urls.py进行添加 修改代码如下 from django.contrib import admin from django.urls import path from app01 import views # 得添加这行urlpatterns [path(xxx/, views.home), # 添加这行path(…

从0开始学统计-你能区分率和构成比吗?

1.数据的变异度如何描述? 数据的变异度描述了数据集中数值之间的差异或波动程度。常用的描述数据变异度的统计量包括: (1)范围(Range):范围是数据集中最大值与最小值之间的差异,表…

NDIS小端口驱动(九)

PCIe设备难免会遇到一些重置设备的请求,例如重置总线的时候,但是由于NIC网卡的多样性,重置设备确实也有许多要注意的地方,另外还有一些包含WDM的NDIS驱动 微型端口驱动程序硬件重置 微型端口驱动程序必须向 NdisMRegisterMinipo…

重新思考:Netflix 的边缘负载均衡

声明 本文是对Netflix 博客的翻译 前言 ​ 在先前关于Zuul 2开源的文章中,我们简要概述了近期在负载均衡方面的一些工作。在这篇文章中,我们将更详细地介绍这项工作的原因、方法和结果。 ​ 因此,我们开始从Zuul和其他团队那里学习&#…

L01_JVM 高频知识图谱

这些知识点你都掌握了吗?大家可以对着问题看下自己掌握程度如何?对于没掌握的知识点,大家自行网上搜索,都会有对应答案,本文不做知识点详细说明,只做简要文字或图示引导。 类的生命周期 类加载器 JVM 的内存…

CAD二次开发(2)-将直线对象添加到CAD图形文件

1. 准备工作 创建一个类库项目,如下: 2. 分析Line对象 Line类的初始化方法和参数 using Autodesk.AutoCAD.DatabaseServices; Line line new Line();Line 继承Curve 继承Entity 继承DBObject 继承Drawable 继承RXObject 初始化方法有两个&#xf…

2024年汉字小达人活动4个多月开赛:18道历年选择题和答案、解析

根据近年的安排,2024年第11届汉字小达人比赛还有4个多月就启动,那么孩子们如何利用这段时间有条不紊地备考呢?我的建议是两手准备:①把小学1-5年级的语文课本上的知识点熟悉,重点是字、词、成语、古诗。②把历年真题刷…

求两个整数最大公约数的方法

可以使用递归来实现,编写gcd函数返回最终的结果(最大公约数)。传入两个参数,如果存在一个数字不大于0就返回0,利用上面的公式就可以得出最后的结果。

电脑远程控制另一台电脑怎么弄?

可以远程控制另一台电脑吗? “你好,我对远程访问技术不太了解。现在,我希望我的朋友可以远程控制我的Windows 10电脑,以便她能帮我解决一些问题。请问,有没有免费的方法可以实现这种远程控制?我该如何操作…

机器学习大模型驱动:未来的趋势与应用

文章目录 📑前言一、什么是机器学习大模型?1.1 大模型的特点1.2 大模型的技术基础 二、大模型的技术实现2.1 Transformer 架构2.2 预训练和微调2.3 模型并行和数据并行 三、大模型的应用场景3.1 自然语言处理(NLP)3.2 计算机视觉&…