前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SSRF漏洞原理与利用

SSRF漏洞原理与利用

作者头像
渗透攻击红队
发布2019-11-20 11:52:59
1.7K0
发布2019-11-20 11:52:59
举报
文章被收录于专栏:漏洞知识库漏洞知识库
漏洞知识库

网络安全/渗透测试/代码审计/

关注

SSRF漏洞原理与利用

什么是SSRF?

SSRF(Server-Side Request Forgery),服务器端请求伪造;利用一个可以发起网络请求服务,可以当做跳板攻击其他服务。

Know IT, SSRF有什么能耐?

内外网的端口服务探测

主机本地敏感数据读取

内外网主机应用程序漏洞利用

…… 等等

怎么找到SSRF漏洞?

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

远程服务器请求资源(Upload from URL,Import & Export RSS feed)

数据库内置功能(Oracle、MongoDB、MSSQL、Postgres、CouchDB)

Webmail收取其他邮箱邮件(POP3/IMAP/SMTP)

文件处理,编码处理属性信息处理(ffpmg,ImageMaic,DOCX,PDF,XML处理器)

测试靶场PHP源码

代码语言:javascript
复制
<?php
function curl($url){
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_exec($ch);
	curl_close($ch);
}

$url = $_GET['url'];
curl($url);
?>

SSRF漏洞的利用

访问URL:

http://127.0.0.1/web/ssrf.php?url=www.baidu.com

可以看到,用GET请求让服务端请求百度URL成功

当我们设置参数URL为内网的时候,那就会泄露/探测内网信息

比如内网下有一个http://127.0.0.1/phpmyadmin/

我们尝试让服务端请求这个phpmyadmin,其构造URL:

http://localhost/web/ssrf.php?url=127.0.0.1/phpmyadmin/

BurpSuite - Intruder模块探测内网端口

首先访问URL:

http://localhost/web/ssrf.php?url=127.0.0.1

然后打开BurpSuite抓包:

数据包如下:

代码语言:javascript
复制
GET /web/ssrf.php?url=127.0.0.1 HTTP/1.1
Host: localhost
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8
Connection: close

右键 - Send to Inturder:

设置变量:

GET /web/ssrf.php?url=127.0.0.1:§port§

设置字典:

Number: From:1 - To:65535 - Step:1

数字类型(Number)——这种类型的Payload是指根据配置,生成一系列的数字作为Payload

Type表示使用序列还是随机数

From表示从什么数字开始

To表示到什么数字截止

Step表示步长是多少

…… 具体的可以看看BurpSuite实用手册

Start Attack:

Intruder attack 结果:

扫描/探测后,开放了:80、8080、912、902、3306端口

80HTTP

8080代理服务器端口(因为打开了BurpSuite)

912虚拟机监听端口

902Vmware使用的端口

3306Mysql服务默认端口

SSRF漏洞修复建议

过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准

统一错误信息,避免用户可以根据错误信息判断远端服务器的端口状态

限制请求的端口为http常用的端口,比如,80,443,8080,8090

黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网。

禁用不需要的协议。仅仅允许httphttps请求。可以防止类似于file:///,gopher://,ftp://等引起的问题。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 漏洞知识库 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是SSRF?
  • Know IT, SSRF有什么能耐?
  • 怎么找到SSRF漏洞?
  • 测试靶场PHP源码
  • SSRF漏洞的利用
  • BurpSuite - Intruder模块探测内网端口
    • Start Attack:
    • SSRF漏洞修复建议
    相关产品与服务
    云数据库 MongoDB
    腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档