记某系统漏洞分析
字数 1073 2025-08-29 08:30:13
某系统漏洞分析教学文档
文件上传漏洞分析
漏洞位置
系统升级功能中的system_upgrade文件存在文件上传漏洞。
漏洞详情
- 系统升级需要输入升级口令,通过POST参数
masterpassword传递 - 源代码审计发现口令硬编码为
aaaaaa:$masterpassword=$_POST["masterpassword"]; if($masterpassword=="aaaaaa") - 文件上传后会被重命名为
upgrade.zip并解压:if(file_exists("upgrade.zip")){ exec("tar xvf upgrade.zip", $result, $return_var); - 解压后所有PHP文件会被赋予执行权限
利用方法
- 创建一个包含恶意代码的PHP文件(如
1.php) - 将其压缩为ZIP文件
- 使用POST请求提交
masterpassword=aaaaaa和上传ZIP文件 - 系统会自动解压并赋予执行权限
- 访问上传的PHP文件(如
/1.php)即可执行任意代码
SQL注入漏洞分析
漏洞位置1:repair_show_print文件
漏洞详情
- 该文件可未授权访问
$UserName参数未经过滤直接拼接SQL语句- 任意输入都会在用户账号回显
利用方法
- 直接构造恶意SQL注入payload
- 使用SQLmap自动化注入:
sqlmap -u "http://target/repair_show_print?UserName=admin" --dbs
漏洞位置2:loaduser文件
漏洞详情
- 同样存在
$UserName参数注入 - 直接回显SQL语句
利用方法
- 浏览器访问接口,输入恶意SQL语句
- 使用SQLmap自动化注入
漏洞位置3:excel_project文件
漏洞详情
- 需要登录后才能访问(包含
../inc/conn.php进行鉴权) - 存在SQL注入点
利用方法
- 先获取有效登录凭证
- 使用SQLmap自动化注入:
sqlmap -r request.txt
XSS漏洞分析
漏洞位置1:repair_show_print文件
漏洞详情
- 在SQL注入点同时存在XSS漏洞
- 用户输入未经过滤直接输出
漏洞位置2:ajax_check文件
漏洞详情
- 明显的XSS漏洞点
- 用户输入未经过滤
利用方法
- 构造恶意JavaScript payload
- 通过参数提交:
http://target/ajax_check?param=<script>alert(1)</script>
总结与防御建议
漏洞总结
- 文件上传漏洞:硬编码密码+不安全的文件处理
- SQL注入:多处未过滤的用户输入直接拼接SQL
- XSS漏洞:多处未过滤的用户输入直接输出
防御建议
-
文件上传:
- 避免使用硬编码密码
- 限制上传文件类型
- 解压前验证文件内容
- 不要自动赋予执行权限
-
SQL注入:
- 使用参数化查询或预处理语句
- 对所有用户输入进行严格过滤
- 最小权限原则,数据库用户只赋予必要权限
-
XSS:
- 对所有输出进行HTML编码
- 设置Content Security Policy (CSP)
- 使用现代框架的自动转义功能
-
其他:
- 删除或保护调试信息
- 实现完善的权限控制系统
- 定期进行安全审计和代码审查