SSRF攻击姿势汇总

本文深入探讨了SSRF(服务器端请求伪造)攻击,包括其定义、常见利用方式如gopher、http和LDAP协议的走私。作者分享了如何通过协议转换执行如MySQL、redis等操作,并提供了防御思路。此外,还提到了利用HTTP协议和LDAP协议的SSRF场景,以及相应的修复措施。
摘要由CSDN通过智能技术生成

前言

这是很早就整理的笔记,今天想起来发到博客上,还是要保持写文章总结的习惯啊。 最近笔者在看讲SSRF、protocol smuggle、HTTP request smuggle、SSO任意跳转,Url解析不一致导致的安全问题。一方面由衷地佩服演讲人的脑洞和安全功底,另外一方面又在笔者又在反思,如果是我,我会怎么去发现此类漏洞,解决方案又是什么。本文不同于各大公众号千篇一律的复现、验证漏洞文章,会加入自己的思考和心得。鉴于文章会存在一些敏感内容,笔者会本着在删除敏感内容的前提下,尽量让大家都能看懂的标准去和大家一起探讨这方面的知识。

在学习前之前我会给自己提出来如下问题:

1.漏洞的本质到底什么

2.应该如何防御

3.如何发现同类漏洞,如何自动化找到此类漏洞甚至0day

什么是SSRF

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

<?php
	$ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $_GET['url']);
    #curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    #curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
    $data =curl_exec($ch);
    curl_close($ch);
    echo $data;
?>

很多介绍SSRF的文章都会以这个作为演示Demo,可以看看curl支持哪些协议:curl-config –protocols

DICT
FILE
FTP
FTPS
GOPHER
HTTP
HTTPS
IMAP
IMAPS
LDAP
LDAPS
POP3
POP3S
RTSP
SMB
SMBS
SMTP
SMTPS
TELNET
TFTP

看到Orange Thai 在blackhat中发表的演讲《A New Era of SSRF - Exploiting URL Parser in Trending Programming Languages! 》中将讲解了fuzz思路和利用方法,结合本人的一些理解,将从按照协议走私的方式来分析利用方式。

利用gopher协议

gopher协议背景介绍

一、Gopher是Internet上一个非常有名的信息查找系统,它将Internet上的文件组织成某种索引,很方便地将用户从Internet的一处带到另一处。在WWW出现之前,Gopher是Internet上最主要的信息检索工具,Gopher站点也是最主要的站点,使用tcp70端口。但在WWW出现后,Gopher失去了昔日的辉煌。现在它基本过时,人们很少再使用它;二、地鼠Gopher(谷佛)是迪士尼卡通人物之一。

opher协议是个tcp/ip协议,通过gopher协议可以发送tcp stream做的事情。比如我们操作mysql,操作redis,甚至使用smtp协议发送邮件等等都可以通过转换成gopher协议达到一样的效果。

gopher protocol smuggle

gopher协议是万金油,通过protocol smuggle能执行转换成太多协议

攻击mysql

首先为了实验环境演示尽可能简单,mysql高于5.7需要关闭mysql tls,保证mysql为空密码,关闭tls方法如下

mysql> SHOW VARIABLES LIKE '%ssl%';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| have_openssl  | YES             |
| have_ssl      | YES             |
| ssl_ca        | ca.pem          |
| ssl_capath    |                 |
| ssl_cert      | server-cert.pem |
| ssl_cipher    |                 |
| ssl_crl       |                 |
| ssl_crlpath   |                 |
| ssl_key       | server-key.pem  |
+---------------+-----------------+
9 rows in set (0.00 sec)

编辑配置文件: /path/to/file/my.cnf

[mysqld]
...

skip_ssl
# disable_ssl

很多文章也介绍了如何通过wireshark 抓包然后转换成go

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值