目录
定场诗
曾经沧海难为水,除却巫山不是云。
取次花丛懒回顾,半缘修道半缘君。
引言
善守者,藏于九地之下;善攻者,动于九天之上。
FIle Upload,文件上传漏洞。即利用网页前端对上传文件格式没有进行限制或者限制不足被绕过,从而被上传php等木马文件导致网站信息泄露。
0x1 环境介绍
服务器端:win7;phpstudy+DVWA;192.168.1.254
攻击端:kali;192.168.1.2
0x2 Low级别
写一个一句话木马用来显示网页信息,命名为1.php。
上传一下,发现Low级别下没有任何限制,上传成功,还显示了文件位置。
访问一下,成功显示。
0x3 Medium级别
将之前的1.php改成2.php,用来区分Low的文件。上传一下,发现对文件格式有要求,只能传Jpeg和Png。
看下网页源码,对文件格式做了限制,绕过也很简单,把上传文件格式改成png,在数据包里改回来就可以。
<?php
if( isset( $_POST[ 'Upload' ] ) ) {
// Where are we going to be writing to?
$target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );
// File information
$uploaded_name = $_FILES[ 'uploaded' ][ 'name' ];
$uploaded_type = $_FILES[ 'uploaded' ][ 'type' ];
$uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];
// Is it an image?
if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) &&
( $uploaded_size < 100000 ) ) {
// Can we move the file to the upload folder?
if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
// No
echo '<pre>Your image was not uploaded.</pre>';
}
else {
// Yes!
echo "<pre>{$target_path} succesfully uploaded!</pre>";
}
}
else {
// Invalid file
echo '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>';
}
}
?>
开启拦截,把2.php改成2.png,上传文件,抓到包。把这里的png再改成php,Forward一下。
成功上传!
访问一下位置,成功网页显示信息。
(High待续,网上的参考使用的两种方法分别是1.木马文件拷贝进png里,这样可以上传,但是没办法直接使用;2.使用%00绕过,这对于较高版本的php无用。)