POST 数据漏洞文件执行任意后缀文件保存( L- N0 w {5 O3 R# l
漏洞文件/chart/php-ofc-library/ofc_upload_image.php- z T9 e4 x5 N8 T( y5 ~2 u
/ }) h. i1 `( _8 z! K0 o利用:
2 ]0 L9 ^2 j) T% c0 x% g/chart/php-ofc-library/ofc_upload_image.php?name=hfy.php hfy.php 文件名
/ Z- S) i4 G, I& A8 p8 r4 }( E' O6 h( i
Post任意数据
% P8 \3 {& j1 i- V' k0 K6 Y保存位置http://localhost/chart/tmp-upload-images/hfy.php4 N. U$ O. m0 Q% e
& e- w1 x! y# @( ?1 `- B9 i
. L$ }# N' W! _, ^$ _3 F
最新版wss漏洞文件,即使是收费版本也有的,在新浪商店部署的demo~
( {. R' |% @! \3 s8 _0 z. Q5 c5 I! _& ?* P3 l
<?php
; D8 [5 D" f; r* J' T' b0 E c P: g
//
- z- N& t g1 S! s* b$ q// In Open Flash Chart -> save_image debug mode, you, [9 {/ y: I% Z- C0 Z3 G: }$ i
// will see the 'echo' text in a new window.
4 r. b+ p3 \: U5 v: v//
a* S0 }' w3 b& O2 A/ E- q: }& Z
+ ?3 u9 A4 W. h9 B2 N9 u5 B3 z9 U/*
; _' m M7 K; }9 E8 G$ a: [
7 Y& V' v: @- s: t \print_r( $_GET );
1 U& ^' P7 m) A Gprint_r( $_POST );
9 ^) G! C% _) \0 s: ?print_r( $_FILES );+ I% O3 W9 G) H# _7 W( x$ b2 \4 _) f
! c. `5 a$ R* f* [& I2 k- i% yprint_r( $GLOBALS );
' i; @# q6 q$ O8 n4 Y# Q* |* D. pprint_r( $GLOBALS["HTTP_RAW_POST_DATA"] );
% E; Z* ]3 M( \
# A# x1 A c" ]- R*/
* p; t6 L% n0 a8 y// default path for the image to be stored //' s4 X4 z0 Y4 m/ D7 l; q3 k4 b
$default_path = '../tmp-upload-images/';
* t" |% I2 K8 F: t
: }" l- w- l6 jif (!file_exists($default_path)) mkdir($default_path, 0777, true);9 P* l( {" \% s& o
* k' E. D. P' I& f0 g# ~// full path to the saved image including filename //# Y: g- m0 z; H# t# ~/ y% B
$destination = $default_path . basename( $_GET[ 'name' ] );
2 ]% b- |) |; M) g( t1 p( P: ?& P: T* ]
echo 'Saving your image to: '. $destination;
0 ~0 S1 F- U n& K! B- ^' `( t// print_r( $_POST );
8 d S. Y: q- L// print_r( $_SERVER );: [+ b S0 |; \. a* @
// echo $HTTP_RAW_POST_DATA;3 U9 H! n) F5 R
+ J8 U9 W3 f4 c* P, O//
% E) }, O& w g// POST data is usually string data, but we are passing a RAW .png/ c5 c" l; K1 n. Z& k
// so PHP is a bit confused and $_POST is empty. But it has saved) o- C. K( k# V8 ]; M0 P
// the raw bits into $HTTP_RAW_POST_DATA
# C- q, |% i: @/ z' h/ i//
- ], V! G/ |5 F5 I
, L, G8 M# h( f+ r. L! h; S; S; t8 Y$jfh = fopen($destination, 'w') or die("can't open file");! P+ ~6 k1 ^5 K0 K- ^7 f" Z, @% x
fwrite($jfh, $HTTP_RAW_POST_DATA);
4 Q& ?3 B" }6 {6 {7 X2 V- p! y& Afclose($jfh);
, {2 D# P' |: k& I+ K, l9 g# Z: x- O+ }1 G/ c1 H, {' a
//
8 t0 d2 D! }2 V& r/ v// LOOK:! h5 i" Q+ b: [( o/ @
//
G! a8 Q- G/ d% a5 v# j Pexit();
$ G5 y2 m! v N2 U//5 e8 |7 n& R9 D- a% Z& P& j; z
// PHP5:
6 J& E* O" i# H& b: \//% L5 o* j5 T3 i+ P6 K5 {
. z7 z& E& Z0 s% ?
; {! w- B5 }5 g" s) B5 Z// default path for the image to be stored //
" X x2 X' b8 f, b3 a9 s$default_path = 'tmp-upload-images/';! e. r5 Z. E1 ?3 a5 r' _2 a4 z
+ g6 y" {& h( O" bif (!file_exists($default_path)) mkdir($default_path, 0777, true);
$ F0 Z4 J2 s5 P4 o, h, D& e4 i! U9 V1 U: D
// full path to the saved image including filename //2 h! S* H8 R R! d( D2 n
$destination = $default_path . basename( $_FILES[ 'Filedata' ][ 'name' ] ); 2 s8 _. T/ L: n3 p# {! M
, V2 Q& X* X- a// move the image into the specified directory //$ v3 I0 Q6 H& a8 M# A# b. ?
if (move_uploaded_file($_FILES[ 'Filedata' ][ 'tmp_name' ], $destination)) {
* U) r% [$ _* q; B) }5 ~" A echo "The file " . basename( $_FILES[ 'Filedata' ][ 'name' ] ) . " has been uploaded;";2 y! J9 K, i9 U, A# [$ ]" r
} else {
2 t9 m: W" Z% _4 M8 O0 K$ M) i8 ? echo "FILE UPLOAD FAILED";6 E) q, u, k7 H' F" Y: g, L1 b
}
: |* R, X, H1 F$ [0 A) N# V9 Z6 q5 b" N, k! h9 _, @( B
. {( P; N& r$ [4 u$ ]
?>
' W; q( T, ]" U7 |9 ]' G. R& L: P" _% u1 o' {7 z
) T& l9 V; g& u" y0 p
. E4 _* a9 h, C- e0 `
( U- w! B/ U& o) W* Y0 X3 b( F6 A3 B7 |% W6 z$ S
$ s4 h( h* O& M3 [- `4 w修复方案:
6 A! j/ z d5 `5 j8 L% |这个漏洞文件就是个杯具,怎么破,加权限验证,后缀等验证~,自己搞
' e, U9 g. k' `
; q8 l$ J# r) o4 i" R! l
# \4 {1 M9 A* s+ [- X
1 f& o; ]) I- m7 y$ D" l4 c- ^1 f9 E$ F0 c+ f; q: Z4 i/ Y
|