大多数的网站通常都会提供文件上传的功能,例如上传图片或是文档等,只要网站允许上传,就有可能存在上传漏洞。上传漏洞与SQL注入相比,其风险更大,黑客利用上传漏洞的主要目的是将WebShell上传到网站中,从而达到控制网站甚至整个服务器的目的。在看过的很多黑客渗透实践案例中,上传漏洞和SQL注入都是两种并重的主流攻击手法。
在DVWA中选择Upload,首先分析low级别的代码:
首先站点通过upload参数以POST方式来接收被上传的文件,然后指定文件上传路径为“网站根目录/hackable/uploads”,文件上传到网站之后的名字仍沿用原先的名字。
接下来利用$_FILES变量来获取上传文件的各种信息。$_FILES变量与$_GET、$_POST类似,它专门用于获取上传文件的各种信息。
-
“$_FILES['uploaded']['name']”,用于获取客户端文件的原名称,
-
“$_FILES['uploaded']['tmp_name']”, 用于获取文件被上传后在服务端储存的临时文件名。
语句“move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)”表示将上传后的文件移动到变量$target_path所指定的新位置,如果这个函数成功执行,则输出“succesfully uploaded!”,否则输出“Your image was not uploaded”。
可以看出,在low级别中,没有对上传的文件进行任何过滤,因而我们可以直接将php木马文件上传到服务器中。比如上传一个名为an75.php的webshell文件,文件上传之后的路径为:http://127.0.0.1/dvwa/hackable/uploads/an75.php。
本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1731862