某导航站系统代码审计
字数 1606 2025-08-23 18:31:18
六零导航页(LyLme Spage)系统安全审计报告
系统概述
六零导航页(LyLme Spage)是一款基于PHP+MySQL开发的上网导航和搜索入口Web应用,主要功能包括:
- 后台添加链接
- 自定义搜索引擎
- 用户提交网站申请功能
漏洞分析
1. 反射型XSS漏洞
漏洞位置:apply/index.php中的url参数处理
漏洞详情:
url参数通过$_GET['url']获取并传递给get_head()函数- 在
include/function.php中的get_head()函数中,url参数被直接放入返回数组 - 虽然使用了
json_encode()处理,但/被转义,仍可通过特定方式绕过
利用方式:
- 直接XSS:
http://localhost/apply/index.php?url=<script>alert(1)</script> - 绕过方式:使用``
修复建议:
- 对
url参数进行严格的URL格式验证 - 对输出内容进行HTML实体编码
- 设置合适的Content Security Policy(CSP)
2. SSRF漏洞
漏洞位置:include/function.php中的get_curl()函数
漏洞详情:
url参数最终传递给get_curl()函数- 函数内部使用cURL发起请求,无任何限制
- 虽然无直接回显,但可通过延时判断内网服务
利用方式:
- 探测内网服务:通过请求延时判断内网服务是否存在
- 攻击内网系统:向内部系统发起请求
修复建议:
- 限制请求的目标域名/IP范围
- 禁用危险协议(如file://)
- 设置请求超时时间
- 对返回内容进行严格过滤
3. 存储型XSS漏洞
漏洞位置:后台审核页面admin/apply.php
漏洞详情:
- 用户提交的数据经过
daddslashes()和strip_tags()处理 - 后台审核时
apply_icon被直接拼接到img标签 - 可构造不完整HTML标签绕过过滤
利用方式:
- 构造payload:
" onload=alert(document.cookie)> - 当管理员查看申请时会触发XSS
修复建议:
- 对所有输出到HTML的属性值进行HTML编码
- 使用白名单方式验证图标URL
- 对img标签的src属性进行严格校验
4. 远程代码执行(RCE)漏洞
漏洞位置:admin/ajax_link.php中的文件解压功能
漏洞详情:
- 系统允许从远程下载zip文件并解压
- 结合
include/file.php中的文件上传功能 - 可上传恶意压缩包并解压到网站根目录
利用步骤:
- 创建包含恶意代码的php文件
- 压缩并重命名为jpg格式
- 通过文件上传接口上传
- 触发解压功能将文件释放到web目录
修复建议:
- 限制解压文件类型
- 检查压缩包内容,禁止解压php等可执行文件
- 设置解压目录权限
- 实现文件内容检查机制
安全加固建议
输入验证
- 对所有用户输入实施严格的白名单验证
- 对URL参数实施完整的URL验证
- 对文件上传实施内容检查而不仅是扩展名检查
输出处理
- 根据输出上下文(HTML, JSON, URL等)使用适当的编码
- 对所有动态生成的HTML属性值进行HTML编码
- 实现Content Security Policy
功能安全
- 禁用不必要的危险函数(curl_exec等)
- 限制文件操作的目标目录
- 实现操作日志记录
架构安全
- 将管理后台移动到非标准路径
- 实现完善的权限控制系统
- 分离用户上传目录
总结
六零导航页系统存在多处严重安全漏洞,包括XSS、SSRF和RCE等,攻击者可利用这些漏洞进行跨站脚本攻击、内网探测甚至完全控制服务器。建议开发者按照上述修复建议进行全面安全加固,特别是在用户输入验证、输出编码和文件操作安全方面需要重点改进。