首页 > 其他分享 >tomcat远程代码执行漏洞(CVE-2019-0232)

tomcat远程代码执行漏洞(CVE-2019-0232)

时间:2023-01-06 15:23:08浏览次数:41  
标签:cgi bat 调用 tomcat 0232 漏洞 代码执行 enableCmdLineArguments

漏洞原理

漏洞相关的代码在 tomcat\java\org\apache\catalina\servlets\CGIServlet.java 中,CGIServlet提供了一个cgi的调用接口,在启用 enableCmdLineArguments 参数时,会根据RFC 3875来从Url参数中生成命令行参数,并把参数传递至Java的 Runtime 执行。这个漏洞是因为 Runtime.getRuntime().exec 在Windows中和Linux中底层实现不同导致的

Java的 Runtime.getRuntime().exec 在CGI调用这种情况下很难有命令注入。而Windows中创建进程使用的是 CreateProcess ,会将参数合并成字符串,作为 lpComandLine 传入 CreateProcess 。程序启动后调用 GetCommandLine 获取参数,并调用 CommandLineToArgvW 传至 argv。在Windows中,当 CreateProcess 中的参数为 bat 文件或是 cmd 文件时,会调用 cmd.exe , 故最后会变成 cmd.exe /c "arg.bat & dir",而Java的调用过程并没有做任何的转义,所以在Windows下会存在漏洞

漏洞复现

启动tomcat

 

 访问一下已经启动成功

 

 Tomcat的 CGI_Servlet组件默认是关闭的,在conf/web.xml中找到注释的 CGIServlet部分,去掉注释,并配置enableCmdLineArguments和executable

 

 这里注意一下,去掉注释并添加以下代码

enableCmdLineArguments启用后才会将Url中的参数传递到命令行executable指定了执行的二进制文件,默认是perl,需要置为空才会执行文件本身。
    <init-param>        <param-name>enableCmdLineArguments</param-name>        <param-value>true</param-value>    </init-param>    <init-param>        <param-name>executable</param-name>        <param-value></param-value>    </init-param>

 

 然后在conf/web.xml中启用cgi的 servlet-mapping

 

 修改conf/context.xml的添加 privileged="true"属性,否则会没有权限

 

 添加true

<Context privileged="true">

 

 在C:\Tomcat\webapps\ROOT\WEB-INF下创建cgi-bin目录

 

 在该目录下创建一个hello.bat

 

 然后重启tomcat环境

 

 访问http://localhost:8080/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Ccalc.exe即可弹出计算器,这里构造系统命令即可

 

 转载于:https://paper.seebug.org/1677/#cve-2019-0232

标签:cgi,bat,调用,tomcat,0232,漏洞,代码执行,enableCmdLineArguments
From: https://www.cnblogs.com/pursue-security/p/17030575.html

相关文章

  • tomcat系列漏洞总结
    tomcat介绍Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首......
  • 亚马逊云免费服务器安装教程AWS微软系统教程含Tomcat,mysql,Tomcat去项目名,端口名!
    一直想弄个云服务器耍耍,奈何费用较高,又是个人,所以一直没弄!昨天偶然得知有免费云服务器,搜索到了亚马逊云aws.amazon.com闲话少说!亚马逊云服务器安装教程windows系统步骤如下:1......
  • solr的安装使用tomcat容器
    如果想要知道如何安装solr,集成IKAnalyzer中文分词器,批量导入数据库数据,java使用参照以下本博主博文:1.第一步下载tomcat,solr包,ik中文分词的jar   tomcat9.0.19下载 ......
  • 启动Tomcat报错:Address localhost:1099 is already in use
    启动Tomcat报错信息显示1099端口被占用:1.查看占用该端口的程序的PID:netstat-ano|findstr"1099"2.得到PID为23204,进而查找该程序的名称tasklist|findstr"2......
  • docker部署tomcat
    前置条件:docker已安装,jdk已安装 1、拉取tomcat镜像:dockerpulltomcat:8.52、启动容器:dockerrun-d-p8080:8080--nametomcattomcat3、此时在网站上输入IP:8080......
  • Dubbo Provider远程代码执行漏洞(CVE-2020-1948)
    漏洞编号CVE-2020-1948漏洞原理Dubbo协议默认采用Hessian作为序列化反序列化方式,而Hessian存在危险的反序列化漏洞,攻击者发送未经验证的服务名或方法名的RPC请求,使Dub......
  • Tomcat拒绝服务攻击(CVE-2020-13935)
    漏洞简介CVE-2020-13935ApacheTomcat是美国阿帕奇(Apache)基金会的一款轻量级Web应用服务器。该程序实现了对Servlet和JavaServerPage(JSP)的支持。ApacheTomcat中的WebSo......
  • Tomcat弱口令爆破+war部署getshell
    影响版本Tomcat全版本环境搭建使用vulfocus中的tomcat-pass-getshell环境。漏洞复现访问manager后台提交用户名和密码后抓包,设置Authorization:BasicYWRtaW46YWRt......
  • Tomcat文件包含及文件读取漏洞(CVE-2020-1938)
    漏洞影响CVE-2020-1938ApacheTomcat9.x<9.0.31ApacheTomcat8.x<8.5.51ApacheTomcat7.x<7.0.100ApacheTomcat6.x漏洞利用前提目标机器开启AJPConnector服务......
  • tomcat弱口令&war远程部署
    1.漏洞原理在tomcat8环境下默认进入后台的密码为tomcat/tomcat,未修改造成未授权即可进入后台,或者管理员把密码设置成弱口令,使用工具对其进行穷举。得到密码后,也可......