SSRF-服务器端请求伪造

一、SSRF简介

服务器端请求伪造(SSRF)是指攻击者能够从易受攻击的Web应用程序发送精心设计的请求,对其他网站进行攻击,简单地说,就是利用一个可发起网络请求的服务当作跳板来攻击其他服务。

攻击者A利用服务器B,访问服务器C。

一种简单的方法 :攻击者要求服务器为其访问URL

#在这里,example.com从其服务器再去访问http://google.com
#假设谷歌的内网有许多内网服务器,我们就可以访问其内网了,可以探测内网的信息

GET /?url=http://google.com/ HTTP/1.1
Host:example.com

翻译的流程:
方案A:
(1)用户请求目标站点
(2)翻译网站会获取用户浏览器上的目标站点的数据
(3)翻译网站返回翻译后的数据

方案B:
(1)用户提供网址给翻译网站
(2)翻译网站代替用户访问,得到目标数据
(3)翻译网站返回翻译后的数据
网址翻译
有道翻译

方案B就像肉鸡。

公网IP:任何人都可以访问
内网IP:处于同一内网的用户才可以访问

外紧内松,内网极度脆弱,例如在内网渗透中,弱密码很常见

在这里插入图片描述

二、SSRF示例

#以下代码有SSRF漏洞,开设在80端口
#81端口也有网站,但防火墙没有打开81端口,只有内网能够访问
#使用SSRF漏洞,突破外网边界
#http://172.2.5.1/?url=http://127.0.0.1:81

$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;

SSRF的核心是攻击内网

SSRF的用处:
(1)扫描内部网络(FingerPrint)
(2)向内部任意主机的任意端口发送精心构造的数据包(Payload)
(3)DOS(请求大文件,始终保持连接Keep-Alive Always)
(4)暴力穷举(users/dirs/files)

SSRF的危害:
(1)作为跳板
(2)攻击内网网站
(3)攻击内网服务

假设得到了一个SSRF漏洞,就可以攻击内网服务器,如果内网服务器存在远程代码执行,就可以直接访问地址getshell,而且在访问127.0.0.1时有些防火墙不拦截。

案例
案例

内网IP简介

网站使用已知漏洞组件的原因:
(1)使用的时候无漏洞
(2)爆发漏洞,管理员不知道
(3)漏洞修复可能影响业务
(4)内网本身不会被黑客访问

三、SSRF漏洞防御

1、正则匹配

#不允许在http后添加内网IP地址,即http://内网IP不被允许

#www.baidu.com只是掩饰,内网IP地址59.5.20.78:81才是重点

http://www.baidu.com@59.5.20.78:81
#不允许在http后添加内网IP地址,不允许出现@IP

#DNS域名解析服务器
#DNS域名,其实是访问127.0.0.1
#通过访问DNS域名,绕过
http://p6qc5i.dnslog.cn
#不允许在http后添加内网IP地址,不允许出现@IP

#访问其余内网IP
#第一种方法是搭建域名
#第二种方法是使用xip.io网站
http://59.5.20.78.xip.io

xip.io

CSRF:控制受害者的浏览器发起网络请求
SSRF:控制目标服务器发起网络请求

四、其他协议

file协议:本地文件读取

file:///E:/phpStudy2016/WWW/1.html

http://172.2.5.1/?url=file:///E:/phpStudy2016/WWW/1.html

dict协议:原本为字典协议,可以探测端口

#探测有无80端口
dic://127.0.0.1:80

可以使用Burp探测服务器开放了什么端口

在现实中,SSRF遇到的概率较小

gopher协议:可以构建数据包发送

Redis安装好之后,默认情况下,缓存数据库没有密码,但是只有本机可以反问

五、如何挖掘SSRF

能够对外发起网络请求的地方,就可能存在SSRF漏洞。

出现SSRF的原因,很有可能是存在高危传参:

1、传参出现协议,http

2、传参出现文件名,x.后缀
(1)文件读取

baidu.com/?id=1.php

(2)文件包含
(3)任意文件下载

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弈-剑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值