qdPM \<9.1 远程代码执行漏洞分析(CVE-2020-7246)

0x00 背景知识

htaccess文件

.htaccess文件是Apache服务器中的一个配置文件,负责相关目录下的网页配置。通过htaccess文件,可以实现网页301重定向、自定义404页面,改变文件扩展名、允许或阻止访问特定目录等操作。

一般来说,.htaccess文件需要放在网站的根目录下才能控制整个站点,并且在Linux系统中,需要将其权限设置为644来提高安全性。 .htaccess文件可作用于当前目录及所有子目录,但是某一特定目录下的.htaccess文件中的指令可能会覆盖上级目录中的.htaccess文件中的指令,也就是子目录中的指令会取代父目录或者根目录中的指令。在qdPM中,根目录和users目录都存在.htaccess文件,那么users目录下的.htaccess文件指令会覆盖掉根目录下的指令。

users目录下的.htaccess文件

# $Id$
#
# This is used to restrict access to this folder to anything other
# than images

# Prevents any script files from being accessed from the images folder
<FilesMatch "\.(php([0-9]|s)?|s?p?html|cgi|pl|exe)$">
   Order Deny,Allow
   Deny from all
</FilesMatch>

users目录中的.htaccess文件限制了用户只能上传图片文件到users目录,像php、html、cgi、exe等后缀的文件都会被限制写入到这个目录中。

根目录下的.htaccess

#uncomment next two lines to run qdPM in SSL mode
#RewriteCond %{HTTPS} !=on
#RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI} [L]

<IfModule mod_rewrite.c>
  RewriteEngine On

  # uncomment the following line, if you are having trouble
  # getting no_script_name to work
  #RewriteBase /

  # we skip all files with .something
  #RewriteCond %{REQUEST_URI} \..+$
  #RewriteCond %{REQUEST_URI} !\.html$
  #RewriteRule .* - [L]

  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f

  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

根目录下的.htaccess文件对一些html文件进行限制。

0x01 漏洞复现

点击收藏 | 1 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖