文件上传实操------DVWA

首先我们来看low等级的源代码

Your image was not uploaded.
'; } else { // Yes! echo "
{$target_path} succesfully uploaded!
"; } } ?>

这段代码的核心就是验证是否有接收文件**($_POST[‘Upload’])然后组合文件根路径成为*target_path***就是目标路径。

$target_path = DVWA_WEB_PAGE_TO_ROOT.“hackable/uploads/”;

 DVWA_WEB_PAGE_TO_ROOT=D:\phpstudy\WWW\DVWA
$target_path=D:\phpstudy\WWW\DVWA/hackable/uploads/

target_path = target_path . basename($_FILES[‘uploaded’][‘name’]);

因此最终你上传的文件的最终路径为:
$target_path=D:\phpstudy\WWW\DVWA/hackable/uploads/123.jpg

123.jpg就是你要上传的目标文件。
之后我们看到它对上传的文件没有任何的要求,文件类型或是文件大小都没有做规定,于是我们可以轻松的传我们的木马上去,这也果然是低等级的啊。


然后我们再看中等级:


File Upload Source
Your image was not uploaded.
'; } else { // Yes! echo "
{$target_path} succesfully uploaded!
"; } } else { // Invalid file echo '
Your image was not uploaded. We can only accept JPEG or PNG images.
'; } } ?>

 

我们看到中等级就相对严密了很多,它对文件的类型和大小做了明确的限制。

( uploaded_type == “image/jpeg” || uploaded_type == “image/png” ) &&
( $uploaded_size < 100000 )

限定了格式为image/jpeg或是png 大小小于100000字节的文件才能上传,而这个问题我们抓包就可以解决。
打开burpsuit, 我们拦一下上传包,改一下他的上传格式,绕过拦截。

这里写图片描述

这里写图片描述

然后我们发现上传成功,源文件里也确实上传成功了。

这里写图片描述

这种看似很规范的拦截其实也形同虚设,我们上传的木马等大小一般不会超过100000字节,而对文件类型的检查也仅仅看上传文件的提交属性,所以十分有机可乘。如果他能对文件头或者文件名验证更明确才会有些难度。


所以我们来看一下高级的难度,看看尝试可不可以绕过上传。

Your image was not uploaded.
'; } else { // Yes! echo "
{$target_path} succesfully uploaded!
"; } } else { // Invalid file echo '
Your image was not uploaded. We can only accept JPEG or PNG images.
'; } } ?>

我们看到高级难度的验证就更严格了,它多了一句这个:

(($uploaded_ext = substr( $uploaded_name, strrpos( $uploaded_name, ‘.’
) + 1); 

他的作用是什么呢?
其实他是防范iis 6.0文件解析漏洞的,有时我们为了绕过限制会提交这样形式的文件:
Xx.asp;.xx.jpg xx.jpg
而这句话的作用就是说它会验证文件的最后一个点之后的格式上面的例子来说就是不管你前面写了多少,我只验证最后的 ’.jpg’。

strtolower( $uploaded_ext ) == “jpg” || strtolower( $uploaded_ext ) ==“jpeg” || strtolower( $uploaded_ext ) == “png”

同时这句话对上传文件的类型做了更明确的要求,只识别jpg 和 jpeg 的文件,这个就有些难度了,而我们只能尝试一下%00截断了。

%00在url语言里代表空格“ ”,因此它起到的作用就是截断文件的后半段,让它识别到的文件格式是.jpg,而解析时会是前面的脚本格式。我们试一下。

这里写图片描述

 我上传了一个hedan.php.jpg文件然后进行%00截断。

这里写图片描述

这里写图片描述

仔细查看后发现%00截断需要PHP<5.3.4,实验环境为5.6.35所以无法利用。
所以只能换别的方法了;

我做了一张图片隐藏后门fun.jpg
这里写图片描述
用16进制编辑器010editor实现,文件上传。

 这里写图片描述

 

上传后可以正常访问,而此时我们的难题就是怎么让文件被解析而触发我们的后门

http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file://D:\phpstudy\WWW\DVWA\hackable\uploads\fun.jpg

这里写图片描述

发现文件被解析,下面我们菜刀连接就好了。

原文地址为:https://blog.csdn.net/qq_37757008/article/details/81408567

你可能感兴趣的:(WEB漏洞)