内网渗透-SSRF漏洞

作者:小刚
一位苦于信息安全的萌新小白帽,记得关注给个赞,谢谢
本实验仅用于信息防御教学,切勿用于其它用途

SSRF

SSRF服务器端请求伪造
全英文Service_side Request Forgery 一般人也记不住
主要利用漏洞来伪造成服务器端发起请求,比如绕过防火墙,进行内网探测,能够突破客户端获取不到的数据限制。
换个意思就是我借用你家人的身份,可以名正言顺的教育你一顿。

产生原因

能产生这漏洞的原因基本上是,各公司只防御外网的请求,对于内网的请求没有进行防御,当我们发现有个漏洞可以发送请求,便可以利用他发送内网请求,从而攻击成功。(基本也是,生活中谁会防自己人,正所谓家贼难防,防不住我们就伪造成那个家贼。)

利用方式

1.能扫描内部网络,获取端口,服务信息。
2.攻击运行在内网或本地的应用程序。
3.对内网web进行指纹识别
4.对内部主机和端口发送请求包进行攻击
5.file协议读取本地文件

小案例

<?PHP
	$URL = $_GET['URL'];
	$CH = CURL_INIT();
	
	CURL_SETOPT($CH,CURLOPT_URL, $URL);
	CURL_SETOPT($CH,CURLOPT_HEADER,FALSE);
	CURL_SETOPT($CH,CURLOPT_RETURNTRANSFER,TRUE);
	CURL_SETOPT($CH,CURLOPT_SSL_VERIFYPEER,FALSE);
	CURL_SETOPT($CH,CURLOPT_FOLLOWLOCATION,TRUE);
	$RES = CURL_EXEC($CH);
	CURL_CLOSE($CH);
	ECHO $RES;
?>

1.请求内网资源

能够发起外网请求的地方基本都有ssrf漏洞

通过接口请求受保护的内网资源

http://127.0.0.1/h/SSRF/index.php?URL=http://127.0.0.1

在这里插入图片描述
利用一个可以发起网络请求的服务,当做跳板来攻击其他服务器
可以利用burp等fuzz工具来枚举内网存在的主机ip,从而进一步利用。

2.端口扫描

ssrf支持很多种 协议dict:// file:// gopher:// ftp:// http:// sftp:// ldap://

dict://是php的一个伪协议,
可以用来查看端口,操作内网服务

http://127.0.0.1/h/SSRF/?URL=dict://127.0.0.1:80

在这里插入图片描述

http://127.0.0.1/h/SSRF/?URL=dict://127.0.0.1:3306

在这里插入图片描述
端口关闭时回显一般为空白
再次利用fuzz工具,测试端口号,从而找出内网IP都开放了哪些服务。

3.读取源文件

file://协议是php的另一种伪协议。可以用来读取本地文件或者源代码

http://127.0.0.1/h/SSRF/?URL=file://c:\windows\win.ini

在这里插入图片描述

http://127.0.0.1/h/SSRF/?URL=file://D:\phpStudy\PHPTutorial\WWW\h\SSRF\index.php

在这里插入图片描述
再次利用fuzz工具,配合fuzz字典来读取配置,源码等敏感信息。
(如果报错返回绝对地址更再好不过了)

4.Gopher://协议进行扩展攻击

SSRF漏洞-Gopher协议扩展利用

5.漏洞组合利用

ssrf漏洞可以配合CSRF漏洞进行请求
SSRF和redis漏洞进行webshell的写入

挖掘技巧

1.传参方面

能够对外网发起网络请求的地方,就可能存在
当看到url中有传参u,url,src,source,sourceURL,imageURL,link,target,share,wap,display,domain等可以测试一下

2.web服务方面

从远程服务器请求资源,下载图片
数据库内置功能
文件处理,
编码处理,转码服务
属性信息处理
在线翻译
未公开的api接口,能够调用URL等

3.审计方面

重点查找文件操作的函数
curl_exec()使用curl发生请求获取数据
file_get_contents 把整个文件读入一个字符串中
file_put_contents()
fopen()打开文件函数
fget()
fsockopen()函数实现获取用制定的url数据

防御措施

服务端开启鉴权信息
开启内部访问也需要身份认证
同时设置URL白名单或者限制内网IP传参
过滤返回的信息
禁用其他伪协议,但允许http,https

伪协议的利用需要php.ini文件的allow_url_fopen和allow_url_include来控制
也可以利用正则化,判断伪协议的请求信息
但只允许http(s)协议也会被@符号构造的url进行绕过

重点关照一下小伙伴
file_get_contents()
fsockopen()
curl_exec()

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值