伪造的浏览器URL-使用readfile()从子目录PHP文件提供

时间:2018-10-25 21:59:35

标签: php .htaccess mod-rewrite readfile

这可能是愚蠢的简单任务,或者不可能。而且很难知道要搜索什么。在此处发布问题。

上下文

我有一个Wordpress插件来处理媒体,该插件配置为提供以下文件的服务:

ROOT/wp-content/uploads/protected/

/protected/文件夹中,有一个(空的index.html)和一个.htaccess文件:

RewriteCond %{REQUEST_URI} ^.*uploads/protected/.*
RewriteRule ^(.*)$ http://whatever.com/wp-content/plugins/plugin-name-root/subfolder/access.php?file=$0 [QSA,L]

因此,.htaccess文件具有一个rewriteRule,用于驻留在插件子文件夹中的PHP脚本。浏览器中的网址最终看起来像这样:

h ** p://whatever.com/wp-content/plugins/plugin-name-root/protect/access.php?file = some-document.pdf

要解决的问题

此URL很长,我也不想在URL中输入插件名称。我希望由浏览器中的access.php 提供服务,例如(或可能的话):

h ** p://whatever.com/access.php?file = some-document.pdf

甚至更好:

h ** p://whatever.com/access/some-document.pdf

  

注意:我不要要使用新的网址访问文件,只需提供   最终网址很漂亮我们仍然在网页上输出链接(请求)   像这样的网址   h ** p://whatever.com/wp-content/uploads/protected/some-image-or-document.docx

插件协议处理输出,就像验证后对readfile()一样。在这种情况下,脚本最终将执行:

readfile('../../../uploads/protected/some-document.pdf');

,浏览器显示(如前所述):

h**p://whatever.com/wp-content/plugins/plugin-name-root/protect/access.php?file=some-document.pdf

该脚本以及所有插件限定的协议和脚本都可以进行操作,由于这个原因,因为没有应用更新,因此可以。

  

但是,我们真的不想更改原始的wordpress根目录   .htaccess文件以从那里进行重定向。我们希望只是   在浏览器伪造地址 media-files 还必须使用带有/ protected /子文件夹的wordpress默认上载目录。

可以从

处理代码

a)插件核心代码或

b).htaccess(由插件创建)在上载/保护/文件夹中或

c)在插件access.php子文件夹中创建另一个“新” .htaccess文件,或者

d)在access.php脚本中的readfile()之前发送一些标头...

那是上下文!

P,有人想分享解决我的目标吗?

0 个答案:

没有答案