SSRF:服务端请求伪造


SSRF简介

SSRF,Server-Side Request Forgery,服务端请求伪造,是一种由攻击者构造形成由服务器端发起请求的一个漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。

漏洞形成的原因大多是因为服务端提供了从其他服务器应用获取数据的功能且没有对目标地址作过滤和限制。(也就是当前网页对其他服务器的资源进行请求,并未检测目标服务器的地址,可以随意篡改)

攻击者可以利用 SSRF 实现的攻击:

1.  可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的 banner 信息
2.  对内网 WEB 应用进行指纹识别,通过访问默认文件实现
3.  攻击内外网的 web 应用,主要是使用 GET 参数就可以实现的攻击
4.  利用 file 协议读取本地文件等

SSRF漏洞出现场景

能够对外发起网络请求的地方,就可能存在 SSRF 
漏洞从远程服务器请求资源(Upload from URL,Import & Export RSS Feed)
数据库内置功能(Oracle、MongoDB、MSSQL、Postgres、CouchDB)
Webmail 收取其他邮箱邮件(POP3、IMAP、SMTP)
文件处理、编码处理、属性信息处理(ffmpeg、ImageMagic、DOCX、PDF、XML)

常见后端代码实现

<?php
if (isset($_POST['url'])) {     //存在url则进入代码块
    $content = file_get_contents($_POST['url']);    //获得url的内容,保存为字符串
    $filename ='./images/'.rand().';img1.jpg';      //文件名
    file_put_contents($filename, $content);     //把字符串写入文件
    echo $_POST['url'];     
    $img = "<img src=\"".$filename."\"/>"; 
}
echo $img;
?>

上述代码从指定url获取图片,取随机名字储存,回显给用户

可能遇到的限制

  1. 限制请求的端口为 http 常用的端口,比如,80,443,8080等。
  2. 禁用不需要的协议。仅仅允许 http 和 https 请求。
  3. 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。

协议的利用

Dict 协议

dict://fuzz.wuyun.org:8080/helo:dict

Gopher 协议

gopher://fuzz.wuyun.org:8080/gopher

File 协议

file:///etc/passwd

绕过姿势

  1. 对ip转码:转换为8进制或16进制等
  2. 存在url解析问题:
    例如
    加@符号
    http://www.baidu.com@192.168.0.1/与http://192.168.0.1请求的都是192.168.0.1的内容
  3. 使用句号:127。0。0。1等价127.0.0.1

实际场景

image
上图imgurl处,修改url可以正常请求。

image

箭头所指image处

测试方法

可以使用ceye平台

ceye官网:http://ceye.io/

具体怎么用自行百度或者google

参考链接

SSRF 服务端请求伪造:http://wooyun.anquan.us/

乌云:http://wooyun.anquan.us/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值