SSRF---窥探内网,必不可少

首先,可能看到本文的标题,会具有一定的疑惑,对SSRF一点都不了解的小伙伴,可能根据标题还以为是查看内网的一个什么好工具。先澄清一下,SSRF并不是工具,而是web安全的一种漏洞。


1. 小插曲---漏洞与攻击

漏洞是指一个系统存在的弱点或缺陷。
攻击是指某人非法使用或破坏某一信息系统中的资源,以及非授权使系统丧失部分或全部服务功能的行为。
自己在刚刚接触SSRF时,不知道SSRF是属于攻击手段还是安全漏洞,而且自己查看很多的文章标题也是分不清。
例如有叫称呼为SSRF漏洞:
简述CSRF、SSRF的区别
例如有叫称呼为SSRF攻击:
SSRF攻击原理与技巧
对此问题我还请教了自己的好朋友

传说中的朋友的回答

为了验证朋友的答案,我专门去找了百度百科,然而万能的百度百科也没能帮上忙,我很诧异,百度百科无所不知,无所不能,高数答案应有尽有。。。。
百度百科SSRF结果


对此我在国外进行检索,果然找到了答案,原文描述如下

SSRF, Server-Side Request Forgery, server request forgery, is a vulnerability that is constructed by an attacker to form a request initiated by the server. In general, the target of an SSRF attack is an internal system that is inaccessible from the external network.

原文中明显提到了关键词 vulnerability
有人肯定会说为什么要较真漏洞还是攻击,只要学会其原理,会挖洞,会利用,会防御,岂不是就行了?我想说的是,从应用层面来说是这样没有任何问题,但是从学术角度讲,这很容易产生概念错误,比个例子,弱口令是漏洞,暴力破解是攻击手段,两者之间的关系就是,攻击方式的选择是根据系统存在什么样的漏洞而决定。再说个不恰当的例子,如果系统存在弱口令(不存在注入漏洞),攻击手段会采用SQL注入吗?


2. SSRF简介

SSRF, Server-Side Request Forgery 服务站点请求伪造

SSRF核心思想:一般web服务器会布上web业务对外网进行开放,能够让外部的用户,通过这个web业务来进行办理相关的事务。此时的web服务器可以说是暴露在公网的内网服务器,这就是给外部提供访问内部的关键节点。由于web服务器本身布置在所属的内网环境中,所以同一内网的服务器或其他网络节点一般默认信任该web服务器一般外部用户是无法访问除该web服务器外同一内网环境的其他服务器,但是如果利用该web服务器进行访问,确是可以进行访问,探测等功能。

SSRF流程示意图

外部用户虽无法直接进行内网服务器访问,但是可通过web服务器为跳板,进行间接访问。就比如你没办法去你对象宿舍里,但是你可以挖到你对象同寝室的舍友,可以通过这个舍友(web服务器)来获取你对象宿舍的东西(真实基于你对象对该舍友的信任或者说是这个舍友拥有拿你对象物品的相关权限)


3. 漏洞危害(可以使用的攻击手段)

  1. 利用SSRF漏洞可以对对外网开发的服务器所在内网进行端口扫描,获取一些服务信息。
  2. 利用SSRF漏洞攻击内网web应用(通过get传参就可以实现的攻击,如:struct2,Sqli等)。
  3. 利用SSRF漏洞配合使用file协议对本地文件进行读取。
  4. 利用SSRF漏洞攻击fastcgi 反弹shell。
  5. 利用SSRF漏洞进行未授权访问(redis、mysql等)
  6. 利用SSRF漏洞攻击运行在内网或本地的应用程序(比如溢出)

4. CVE漏洞公布情况

Apache Olingo SSRF : CVE-2020-1925
CloudBees Jenkins SSRF : CVE-2019-1003047


5. 代码审计

PHP

<?php
curl();
file_get_contents();
fsockopen();
//等函数
?>

Java

HttpURLconnection();
HttpClient.execute();
HttpClient.executeMethod();
HttpURLConnection.connect();
HttpURLConnection.getInputStream();
URL.openStream();
HttpServletRequest();
getParameter();
URL;
HttpClient();
Request();
URLConnection();
okhttp();
BasicHttpEntityEnclosingRequest();
DefaultBHttpClientConnection();
BasicHttpRequest();
URI

6. 漏洞挖掘


  1. 通过URL关键字
    sharewapurllinksrcsourcetargetu3gdisplaysourceURLimageURLdomain
  2. 常见web功能着重关注
  • 分享:通过URL地址分享网页内容
  • 转码服务
  • 在线翻译
  • 图片加载与下载:通过URL地址加载或下载图片
  • 图片、文章收藏功能
  • 未公开的api实现以及其他调用URL的功能
  1. 通用的SSRF漏洞公告
  • Weblogic配置不当,天生ssrf漏洞
  • Discuz x2.5/x3.0/x3.1/x3.2 ssrf漏洞

7. SSRF filter ByPass

  • ip地址转换成进制来访问
    例如:ping 127.0.0.1 可以进行替换


    IP进制替换
  • ip地址采用短地址访问


    短ip地址测试
  • @ 符号致使解析URL错误绕过
    例如:https://www.baidu.com@fanyi.baidu.com会跳入至翻译页面

  • 添加端口号测试

  • URL短地址
    URL短地址生成器

    短地址生成实例

  • 非HTTP/HTTPS协议
    GOPHER协议
    File协议:File协议主要用于访问本地计算机中的文件

  • DNS解析利用


    本地DNS解析错误利用
  • DNS Rebinding 利用

8. 工具介绍

  1. WeblogicScan-master : 漏洞自动化检测工具
  2. Ground-Control :能够检测XSS,SSRF以及XXE漏洞工具
    后续继续补充。。。。。

9. 漏洞防御

  1. 限制协议为HTTP、HTTPS。
  2. URL黑名单限制访问内网IP(不建议通过正则,建议转整数后比较)。
  3. 禁止30x跳转。
  4. 统一错误信息,避免通过错误信息来判断远端服务器的端口状态
  5. 限制请求的端口为http常用的端口,比如,80,443,8080,8090

10. 参考资料

  1. SSRF学习笔记
  2. 安全客 : SSRF漏洞的挖掘经验
  3. CSDN : Web安全之SSRF漏洞
  4. Baidu:SSRF漏洞总结和防御方法
  5. Freebuf :简述CSRF、SSRF的区别
  6. 先知社区 :Web安全Day4 - SSRF实战攻防
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 以下均转自:http://zeroyu.xyz/2018/03/06/introduction-to-ssrf/ ...
    这是什么娃哈哈阅读 4,556评论 0 0
  • 很多 Web 应用都提供了从其他服务器上获取数据的功能。使用用户指定的 URL,web 应用可以获取图片,下载文件...
    Splunker阅读 4,411评论 0 0
  • SSRF漏洞是如何产生的? SSRF(Server-Side Request Forgery:服务器端请求伪造) ...
    BerL1n阅读 57,770评论 1 21
  • 米斯特白帽培训讲义 漏洞篇 SSRF 讲师:gh0stkey 整理:飞龙 协议:CC BY-NC-SA 4.0 很...
    布客飞龙阅读 5,565评论 0 9
  • SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务...
    Seaer阅读 5,779评论 0 3

友情链接更多精彩内容