SSRF详解

SSRF

目录

SSRF

简介

危害

相关函数

相关协议

dict

file

gopher

一些绕过方式

点号绕过

添加@

进制转换

xip.io

短网址


简介

SSRF:服务端请求伪造

SSRF常出现在那些获取其他服务器上的资源又对用户的输入过滤不严的WEB应用

像获取网页内容、图片等

?url=

?image=

攻击者通过构造url以及image的参数,利用有SSRF漏洞的服务器发起自己构造的请求

危害

SSRF可以被用来:

1.获取服务器本地敏感文件(如源码、/etc/passwd等)

file://+要读取文件路径

2.探测内网的应用:

如dict://ip:port/info

比如常见的:redis默认的6379端口

用dict://ip:6379/info 根据回显查看是否有redis服务

进而确定是否存在redis未授权之类的漏洞

也可以使用http协议来探测

3.探测内网存活主机以及端口

向某主机某端口发送网络请求,根据响应来判断是否开放

相关函数

能够发起网络请求的一些函数,以php为例

curl_exec() :执行cURL会话

fsockopen():进行套接字连接

file_get_contents():获取指定文件或URL的内容,并将其作为字符串返回

...

...

相关协议

dict

该协议是一个字典服务器协议,通常用于让客户端使用过程中能够访问更多的字典源

dict://ip:port/path

file

file协议用于访问本地文件,不能访问远程文件(远程用FTP协议)

格式:

file:///文件路径

如:file:///c:/flash/cd

这里为什么三个斜杠,而http这些协议都是两个斜杠

因为url格式为:

scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]

由于file访问本地文件没有host那一部分,所以是三斜杠

而http要有一个主机ip或者域名,所以两个斜杠

file协议不受allow_url_include和allow_url_fopen的影响

gopher

gopher://ip:port/_数据包

gopher数据包要求:

要进行url编码

多个参数要用&隔开

回车换行用%0d%0a

请求数据末尾要加%0d%0a

在http数据包基础上就把%0a变为%0d%0a就可以了

# 该脚本用于构造gopher数据包
# -*- coding: utf-8 -*
​
import urllib.parse
data = ''#http包
data1 = data.replace('%0A','%0D%0A')#gopher协议要求把http数据的换行符换为%0d%0a,换行符的16进制为0A
data1+='%0D0A'#gopher要求在http数据末尾加%0D%0A
​
​
print(data1)

一些绕过方式

对于有过滤的情况

主要还是根据源码中的过滤规则来进行绕过

点号绕过

把ip的.变为句号

127.0.0.1==>127。0。0。1

添加@

比如目标url:?url=http://127.0.0.1

payload:?url=http://666@127.0.0.1

会返回@后面的ip

进制转换

把ip地址进行进制转化(十六进制、八进制等)

xip.io

xip.io 是一个特殊的域名,它可以将 IP 地址映射到域名上。通过在 IP 地址后追加 xip.io,可以直接访问该 IP 地址对应的服务器。

使用xip.io常是在测试过程,因为用这个无需在DNS服务器中配置域名解析

目标url:?url=http://127.0.0.1

payload:?url=http://127.0.0.1.xip.io

短网址

转换为短网址再请求(找在线工具转换)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值