前言
因上次攻防开局拿下weblogic主机权限,但由于默认写shell路径更改导致无法进一步利用,直到快结束时才找到正确路径写入shell,但为时已晚,只得匆匆拿下几台主机草草了事。最近刚好有空就找了台境外weblogic主机练手,过程稍微有点曲折,先后经历了尝试各种路径失败,中途主机还下线了,好在第二天又重新上线,再到绕过杀软文件监控上传webshell,总算是成功了,最后把过程记录一下。
正文
利用工具检测,发现存在weblogic iiop反序列化命令执行漏洞
开局是administrator权限,权限比较高,能干的事情应该挺多的
dir看一下文件
看到pcxx.vbs和pxx.vbs,发现更早就有人光顾过了
上传webshell,需要关注servers文件夹
在这里踩了第一个坑,AdminServer是weblogic默认存在的目录,一开始写shell都是往AdminServer\tmp\_WL_internal\bea_wls_internal\9j4dqk\war\
目录写,发现访问不到,目录下也没写进去的文件。尝试写了个txt进去,发现写入成功,但是访问不到。然后换了_WL_internal
目录下其他几个文件夹尝试,发现都是一样的结果。
然后去搜了下weblogic写shell的文章,找到了几种路径,这里贴一下:
weblogic写shell路径1:写入console images目录
shell物理路径:
\Oracle\Middleware\wlserver_10.3\server\lib\consoleapp\webapp\framework\skins\wlsconsole\images\shell.jsp
访问路径:
/console/framework/skins/wlsconsole/images/shell.jsp
这个shell不是写在AdminServer下,但是需要能访问到console,本环境无法访问console
weblogic写shell路径2:写入uddiexplorer目录
shell物理路径:
\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_internal\uddiexplorer\随机字符\war\shell.jsp
访问路径:
/uddiexplorer/shell.jsp
这里写入之后可以看到写入成功,但无法访问,具体原因后边会讲到
weblogic写shell路径3:写入应用安装目录
shell物理路径:
\Oracle\Middleware\user_projects\domains\application\servers\AdminServer\tmp\_WL_user\项目名\随机字符\war\shell.jsp
访问路径:
/项目名/shell.jsp
本环境中_WL_user
文件如下:
仅一个目录访问状态时403,且写入shell后仍无法访问
无法访问shell原因
这个时候无法继续下去,只能先翻翻文件,先看weblogic配置文件
复制出来发现以下内容
1 | <server> |
看了配置之后明白为什么访问shell会失败了:服务器一共有3个server,AdminServer
、WLS_FORMS
和WLS_REPORTS
,分别开放在7002、9001和9002端口,这里进入的是9001端口,shell应该写在WLS_FORMS
下,上边写的shell几乎都是写在AdminServer下当然访问不到啦
绕过杀软文件监控上传shell
重新写shell到
C:\Oracle\Middleware\user_projects\domains\ClassicDomain\servers\WLS_FORMS\tmp\_WL_internal\bea_wls_internal\ogdxbc\war\
目录,发现写后在文件中看不到,写入txt文件发现可以看到且能访问到
怀疑有杀软,tasklist查看一下进程
发现几个特殊进程,查一下是什么
1 | # 以下几个是MicroWorld的eScan Antivirus进程 |
尝试用taskkill干掉这些进程
taskkill /t /f /pid 2996 /pid 5396 /pid 7216 /pid 8504 /pid 8700 /pid 3036
发现escanmon.exe
和MsMpEng.exe
无法结束掉,应该是权限不够,且kill掉的进程会立即重启
这时想能不能把服务关掉试试,查看服务
复制出来搜索escan发现两个服务
1 | SERVICE_NAME: eScan Monitor Service |
尝试停掉服务,结果失败了
查看一下服务详情
查看一下这个进程名
发现上边找杀软相关进程的时候还漏了这个进程,搜索发现是escan文件监控进程
尝试kill掉,发现会立即重启
如果kill掉文件监控进程,在其结束的这段时间内写入webshell,即使进程重启,但shell已经写入
先写入一个txt,内容是冰蝎马,成功
接下来在干掉文件监控进程的同时写入webshell即可
1 | taskkill /t /f /pid 5012 && copy C:\Oracle\Middleware\user_projects\domains\ClassicDomain\servers\WLS_FORMS\tmp\_WL_internal\bea_wls_internal\ogdxbc\war\test2.txt C:\Oracle\Middleware\user_projects\domains\ClassicDomain\servers\WLS_FORMS\tmp\_WL_internal\bea_wls_internal\ogdxbc\war\test3.jsp && dir servers\WLS_FORMS\tmp\_WL_internal\bea_wls_internal\ogdxbc\war\ |
成功写入,也可正常访问
连接
ssh连接通过socks代理出的内网主机
后续上传了fscan,同样会被杀软删掉,那么在上传快完成的时候结束掉文件监控进程即可
等待fscan扫描结果,顺便用Neo-reGeorg搭建代理socks5隧道,需要用通用的jsp文件
fscan扫了一个C段,结果如下:
看到扫到了两台ssh弱口令,想起同样是上次攻防时内网扫到了ssh弱口令,但当时用各种方式连接都没成功,这次再遇到就学习一下连接基于socks代理出的内网主机
试了一下通过proxychains4去连接,发现连接超时
通过这篇文章发现可以通过以下命令连接
ssh -o ProxyCommand='nc -x socks5代理ip:代理port %h %p' root@192.168.0.203
发现提示nc: invalid option -- 'x'
单独试了以下发现kali中nc没有-x参数
在StackOverflow上发现有人提过这个问题,最高赞回答提到了可能是因为nc不是完整版,并提到可以用connect-proxy
代替,试一下
安装:apt install connect-proxy
使用:
ssh -o ProxyCommand='connect-proxy -S socks5代理ip:代理port %h %p' root@192.168.0.203
成功连接,发现203和204为同一台主机,不再深入
后记
本文到这里就结束了,因为内网挺小的,也没多大的测试价值。本文还是以记录测试过程中遇到的问题为主,记录一下方便查阅
参考链接
https://www.shuzhiduo.com/A/gVdnpR2QJW/
https://ieevee.com/tech/2017/10/19/ssh-over-socks5.html
https://stackoverflow.com/questions/19161960/connect-with-ssh-through-a-proxy