有时候拿到weblogic能命令执行,但是目标不能出网,不方便直接上线,这时就需要上个webshell来辅助后续的渗透。但是weblogic的web路径可能和常规的web系统不一样,不清楚的时候可能会一脸懵逼不知道上传到哪个目录下,以及如何访问,所以记录一下。
测试环境
这里使用vulhub中的weblogic镜像搭的环境 vulhub/weblogic:10.3.6.0-2017
为了方便起见,直接使用 java反序列化终极测试工具进行文件上传的操作。(weblogic下并不好用,可能对jboss的比较友好)
首先获取目标服务器的信息:
可知当前工作的目录为:
/root/Oracle/Middleware/user_projects/domains/base_domain
上传文件路径
写入console images目录
这个shell不是写在AdminServer下,但是需要能访问到console
写入路径:
/root/Oracle/Middleware/wlserver_10.3/server/lib/consoleapp/webapp/framework/skins/wlsconsole/images/shell.jsp
访问路径:
http://ip:port/console/framework/skins/wlsconsole/images/shell.jsp
感觉weblogic这里有个缓存机制,上传或修改的文件并不会即时生效,需要重启或者删除缓存才能够生效
刚上传时访问:
重启容器后访问:
写入bea_wls_internal目录
写入路径:
/root/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/bea_wls_internal/6位随机字符/war/shell.jsp
访问路径:
http://ip:port/bea_wls_internal/shell.jsp
写入wls-wsat目录
和上面的路径相似,只不过这里是wls-wsat罢了
写入路径:
/root/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat/6位随机字符/war/shell.jsp
访问路径:
http://ip:port/wls-wsat/shell.jsp
写入uddiexplorer目录
和上面的路径相似,只不过这里是uddiexplorer罢了
写入路径:
/root/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/6位随机字符/war/shell.jsp
访问路径:
http://ip:port/uddiexplorer/shell.jsp
这里的环境没有该目录,没有复现
写入应用安装目录
写入路径:
/root/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/_appsdir_项目名_war/随机字符/war/shell.jsp
访问路径:
http://ip:port/项目名/shell.jsp
shell无法访问
有时候上传的shell无法访问,大概率是因为端口不对,weblogic不同端口开放的server也不一样,找一找能访问的端口的server即可。
主要查看weblogic的配置文件:domains\base_domain\config\config.xml
<?xml version='1.0' encoding='UTF-8'?>
<domain xmlns="http://xmlns.oracle.com/weblogic/domain" xmlns:sec="http://xmlns.oracle.com/weblogic/security" xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/security/xacml http://xmlns.oracle.com/weblogic/security/xacml/1.0/xacml.xsd http://xmlns.oracle.com/weblogic/security/providers/passwordvalidator http://xmlns.oracle.com/weblogic/security/providers/passwordvalidator/1.0/passwordvalidator.xsd http://xmlns.oracle.com/weblogic/domain http://xmlns.oracle.com/weblogic/1.0/domain.xsd http://xmlns.oracle.com/weblogic/security http://xmlns.oracle.com/weblogic/1.0/security.xsd http://xmlns.oracle.com/weblogic/security/wls http://xmlns.oracle.com/weblogic/security/wls/1.0/wls.xsd">
<name>base_domain</name>
<domain-version>10.3.6.0</domain-version>
<security-configuration>
<name>base_domain</name>
<realm>
<sec:authentication-provider xsi:type="wls:default-authenticatorType"></sec:authentication-provider>
<sec:authentication-provider xsi:type="wls:default-identity-asserterType">
<sec:active-type>AuthenticatedUser</sec:active-type>
</sec:authentication-provider>
<sec:role-mapper xmlns:xac="http://xmlns.oracle.com/weblogic/security/xacml" xsi:type="xac:xacml-role-mapperType"></sec:role-mapper>
<sec:authorizer xmlns:xac="http://xmlns.oracle.com/weblogic/security/xacml" xsi:type="xac:xacml-authorizerType"></sec:authorizer>
<sec:adjudicator xsi:type="wls:default-adjudicatorType"></sec:adjudicator>
<sec:credential-mapper xsi:type="wls:default-credential-mapperType"></sec:credential-mapper>
<sec:cert-path-provider xsi:type="wls:web-logic-cert-path-providerType"></sec:cert-path-provider>
<sec:cert-path-builder>WebLogicCertPathProvider</sec:cert-path-builder>
<sec:name>myrealm</sec:name>
<sec:password-validator xmlns:pas="http://xmlns.oracle.com/weblogic/security/providers/passwordvalidator" xsi:type="pas:system-password-validatorType">
<sec:name>SystemPasswordValidator</sec:name>
<pas:min-password-length>8</pas:min-password-length>
<pas:min-numeric-or-special-characters>1</pas:min-numeric-or-special-characters>
</sec:password-validator>
</realm>
<default-realm>myrealm</default-realm>
<credential-encrypted>{AES}VDHLmpIFsxhe5+CetHjC3Du768mgXgEeInws2SytpnqhqgWkdGFks2BYtSJzE3FrrjdLjKS9w24Krv0Ong11Bogvc8rPC6HC3eqZy8X5U8/jhzgwct+ZTRgagnYCb4zy</credential-encrypted>
<node-manager-username>weblogic</node-manager-username>
<node-manager-password-encrypted>{AES}yvGnizbUS0lga6iPA5LkrQdImFiS/DJ8Lw/yeE7Dt0k=</node-manager-password-encrypted>
</security-configuration>
<server>
<name>AdminServer</name>
<listen-address></listen-address>
</server>
<embedded-ldap>
<name>base_domain</name>
<credential-encrypted>{AES}uikbk+R+r6Vqv3OiFGQ4XnxJAHEnqFuni3K+SlgZxAsWEyIvLEi+O2omKTsWD9GW</credential-encrypted>
</embedded-ldap>
<configuration-version>10.3.6.0</configuration-version>
<app-deployment>
<name>_appsdir_hello_war</name>
<target>AdminServer</target>
<module-type>war</module-type>
<source-path>autodeploy/hello.war</source-path>
<security-dd-model>DDOnly</security-dd-model>
<staging-mode>stage</staging-mode>
</app-deployment>
<admin-server-name>AdminServer</admin-server-name>
</domain>
如上配置只有AdminServer
,所以我们写到AdminServer
下都可以访问,如果配置了其他Server
,则就需要根据端口开放情况写到其他的目录下。
参考资料
https://blog.gm7.org/个人知识库/01.渗透测试/03.思路技巧/04.Weblogic上传shell路径.html