吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1483|回复: 2
收起左侧

[其他转载] TP3.2项目禁止通过路劲访问html文件

[复制链接]
duanmh 发表于 2022-1-25 17:26
背景:之前很久的一个PHP项目,使用的thinkphp3.2框架,PHP版本7.1,IIS10。在扫描过程中发现了如下等漏洞:
image.png
漏洞名称:源代码泄露。
我访问网址试了一下,确实能打开,效果如下图:
image.png
这种是直接通过路劲,访问的.html文件, 没有经过PHP编译,所以标签是直接原样输出的。但是这种问题怎么解决呢?
于是我上网查了,大体解决方案有以下几种:
1、
现在很多的权限系统是基于URL路由来控制的(模块 / 动作)比如ThinkPHP,访问路径
是http://localhost/thinkphp/index.php/index/index 但是根据文件路径也能访问到如
http://localhost/thinkphp/Tpl/Index/index.html,就直接显示了index.html的源码!如何禁止访问呢?
或者其他的保护措施?

使用过ThinkPHP的都知道,一个APP的模版文件夹是叫Tpl,正常情况下直接通过路径就可以访问到该文
件夹;比如常见的 APP/Tpl/Index/index.html ,通过 http://domain/App/Tpl/Index/index.html 就可
以直接打开首页模版文件了。 像这种要防止用户直接访问到模板或者重要的文件的行为,方法有几种:

修改默认的文件名,此方法可以临时解决此问题,但不是长久之计。

使用.htaccess 配置,在需要拒绝用户访问的目录下放置 .htaccess 内容为 deny from all 就可以拒绝所
有用户访问该文件夹,如果拒绝某个IP段访问使用

order deny,allow
deny from all
allow from 192.168.1.0/24
拒绝某个IP可使用
order allow,deny
deny from 192.168.1.10
allow from all

(但是这种是 用于Apache环境, 我的是IIS, 所以不适用)

2、
现在很多的权限系统是基于URL路由来控制的(模块 / 动作)比如thinkphp,访问路径是http://localhost/thinkphp/index.php/index/index 但是根据文件路径也能访问到如http://localhost/thinkphp/Tpl/Index/index.html,就直接显示了index.html的源码!居然没有解析,如何禁止访问呢?或者其他的保护措施

回复内容:
现在很多的权限系统是基于URL路由来控制的(模块 / 动作)比如thinkphp,访问路径是http://localhost/thinkphp/index.php/index/index 但是根据文件路径也能访问到如http://localhost/thinkphp/Tpl/Index/index.html,就直接显示了index.html的源码!居然没有解析,如何禁止访问呢?或者其他的保护措施

放到Web目录之外

http://doc.thinkphp.cn/manual/deploy_directory.html
新建一个public文件夹,把入口文件放到public中
如果有upload或者images文件夹,也要放到puclib下
然后修改一下入口文件中的目录定义

// 定义应用目录
define('APP_PATH','../Application/');

// 引入ThinkPHP入口文件
require '../ThinkPHP/ThinkPHP.php';

他这种思路让我有了想尝试的想法, 于是我按他的思路做了。在项目根目录创建了  ‘XXX’文件夹,然后把 入口文件 'index.php' 放了进去,把引用的文件的代码更改后提交了服务器,然后再服务器上重新配置了运行目录。 结果已运行直接404了。 我想这是怎么回事儿了。 然后又逐步测试,先是再入口文件写代码,看能否正常执行,发现可以,然后又写调用其他文件,发现也OK,但这是怎么回事儿呢?到最后我在 域名后面跟了index.php后,就正常了(因为线上程序是影藏了入口文件‘index.php’)的。我当时就纳闷了,我在web.config文件里面配置了 影藏入口文件的,而且之前项目运行一直OK, 怎么换了入口文件位置后,路劲中有index.php文件能正常访问,没有index.php 就报404的错呢? 这就很奇怪了,怎么回事儿呢? 然后我怀疑是 web.config配置错了, 然后我有找了一大堆资料,到最后也没解决问题。 最后我突然奇想,把web.config放到了新入口文件的同级目录就直接搞定了,这个坑可能我是技术菜+经验少才导致的吧,哈哈哈。
这里说下,为啥要把所谓的静态样式等文件也要移到新建的目录下面,因为是服务器配置了域名新的入口文件地址,如果不移进去就访问不到。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

JunDaYi 发表于 2022-1-25 19:45
本帖最后由 JunDaYi 于 2022-1-25 19:48 编辑

我用了宝塔面板的访问限制   禁止模板目录被访问
Dingtalk_20220125194747.jpg
ytw6176 发表于 2022-1-25 22:13
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-20 18:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表