标签:names 文件 load param link rate pat com 支持
前言:学习
任意文件上传漏洞影响的版本:
jQuery-File-Upload版本 < v9.22.1 and Apache > 2.3.9(默认不再支持.htaccess) or others
远程命令执行漏洞:
文件越权删除漏洞
可以看下,下面的代码中$success = is_file($file_path) && $file_name[0] !== ‘.‘ && unlink($file_path);
,这里面如果我们的$file_path能够进行控制的话,那么就能够进行越权进行文件的删除了
public function delete($print_response = true) {
$file_names = $this->get_file_names_params();
//var_dump($file_names);
if (empty($file_names)) { //返回为空,走下面流程
$file_names = array($this->get_file_name_param()); //$file_names 里面存放着$_GET['file']接收的内容
}
$response = array();
foreach ($file_names as $file_name) {
$file_path = $this->get_upload_path($file_name); //取当前文件的路径
$success = is_file($file_path) && $file_name[0] !== '.' && unlink($file_path); //判断当前文件是否为文件
// 并且判断文件名是否以 点 开头,例如.htaccess
if ($success) {
var_dump($this->options['image_versions']);
foreach ($this->options['image_versions'] as $version => $options) {
if (!empty($version)) {
$file = $this->get_upload_path($file_name, $version);
if (is_file($file)) {
unlink($file);
}
}
}
}
$response[$file_name] = $success;
}
return $this->generate_response($response, $print_response);
}
payload:curl -X DELETE "http://127.0.0.1/server/php/index.php?file=文件名
很遗憾这里的文件名不能可控,只能是当前的文件进行越权删除来利用,原因是get_file_names_params
函数中调用的get_file_name_param函数中的$this->basename(stripslashes($this->get_query_param($name)))
,对输入的文件名进行了过滤操作,导致路径不可控
protected function get_file_name_param() {
$name = $this->get_singular_param_name();
return $this->basename(stripslashes($this->get_query_param($name)));
}
PHP:jQuery-File-Upload任意上传/RCE/越权删除文件漏洞分析
标签:names 文件 load param link rate pat com 支持
原文地址:https://www.cnblogs.com/zpchcbd/p/12233604.html