Kali渗透测试:对软件的溢出漏洞进行测试

简介: Kali渗透测试:对软件的溢出漏洞进行测试

Kali渗透测试:对软件的溢出漏洞进行测试
如何对一个软件进行渗透,渗透目标是FreeFloat FTP Server, 这是一款十分简单的FTP服务器软件。FreeFloat FTP Server会在运行的主机上建立一个FTP服务器,其他计算机上的用户可以登录这个FTP服务器来存取文件。如我们在IP地址为192.168.68.160的主机的C盘中运行FreeFloat FTP Server,在另一台计算机中可以使用FTP下载工具或者命令的方式对其进行访问。这里我们采用命令的方式对其进行访问,如下图所示:

image.png

实验环境
攻击机:Linux kali 5.10.0 IP:192.168.68.125

靶机:WinXP Profession IP:192.168.68.160

操作步骤
首先使用ftp命令,然后使用open命令打开192.168.68.160。注意不要使用浏览器打开FreeFloat FTP Server, 否则你讲无法对这个登录过程进行观察。使用FreeFloat FTP Server对登录没有任何限制,你输入任意的用户名和密码都可以登录。

首先输入任意用户名和密码,然后按Enter键便可登录到FreeFloat FTP Server, 如下图所示:

image.png

这里显示用户kali已经成功登录了,这样我们就可以使用FTP服务器中的任意资源,其实这里使用任何一个用户名都可以登录。

下面看看这个软件是否存在溢出漏洞。我们在输入用户名的时候,尝试使用一个特别长的字符串作为用户名,来看看在用户名输入的位置是否存在溢出漏洞。如输入数百个“a”作为用户名,如下图所示:

image.png

系统并没有崩溃,而且是正常出现了输入密码的提示界面,如下图所示:

image.png

其实用户名再输入更多的"a"也是一样的,系统依然不会崩溃,那么是不是这个软件不存在溢出漏洞呢?在编写漏洞渗透模块的时候,千万不要在此时就放弃,我们可以查看Wireshark捕获的此次登录过程的数据包,如下图所示:

image.png

我们发现,实际发送出去的数据包中的字符“a”的数量并没有那么多,无论我们在登录用户名时输入多长的用户名,实际上发送出去的只有78个“a”。显然,这个长度的字符是无法引起溢出的。那么我们有什么方法可以加大字符串的长度呢?

最直接的方法是我们自行构造数据包,然后将数据包发送出去,这样我们想要数据包中多少个“a”,就可以发送多少个“a”。

我们可以编写一个自动连接到目标FTP服务器的客户端脚本。我们采用Python来编写这段脚本,Python是现在网络渗透界非常流行的语言。

我们先建立一个到目标FTP服务器的连接。因为这个软件提供的是FTP服务, 所以我们只需要按照连接FTP服务的过程来编写这段脚本即可,而且这段脚本可以用来连接到任何提供FTP服务的软件上。😱

1. 在Kali中启动Python3
因为这个系统中同时内置了Python3 和 Python2,因此在启动时需要输入python3:

┌──(kali㉿kali)-[~]
└─$ python3
Python 3.9.2 (default, Feb 28 2021, 17:03:44) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

接下来我们导入需要使用的socket库:

>>> import socket

成功建立一个socket对象,如下图所示:

>>> s = socket.socket()

利用这个套接字就可以建立到目标的连接:

>>> connect = s.connect(('192.168.68.160', 21))

执行之后,建立好一个到目标主机21端口的连接,但是到FTP服务器的连接需要认证,我们仍然需要想目标FTP服务器提供一个用户名和密码。服务器通常会对用户名和密码的正确性进行验证,也就是将用户的输入与自己保存的记录进行比对。我们可以将用户名的输入作为一个测试点,这是最常见的情形。这主要是因为以前,很多程序员会使用memcpy函数来将用户的输入复制到一个变量中,但是这些程序员往往会忽略对地址是否越界进行检查,从而导致数据的溢出,进而引发代码远程执行的问题。

现在我们就把FreeFloat FTP Server用户名的输入作为测试点。首先检查这个软件是否存在漏洞。这检查很简单,我们在输入用户名的时候,并不像常规的那样,输入几个或者十几个字符,而是输入成百上千个字符,同时观察目标FTP服务器的反应。

下面我们在Wireshark中观察一下抓取到的我们输入的用户名的数据包的格式。

image.png

在图中,我们输入的用户名是一段字符,这段字符前面是“USER”,后面是一个回车符和换行符“\r\n”。我们使用socket套接字中的send方法可以将一个字符串以数据包的形式发送出去,可以我们已成千上百的“A”作为用户名:

>>> connect = s.connect(('192.168.68.160', 21))
>>> shellcode = b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
>>> data = b"USER "+shellcode+b"\r\n"
>>> s.connect(('192.168.68.160',21))
>>> s.send(data)

将这个数据包发送到目标FTP服务器上,我们可以看到这个FTP服务器崩溃了,并且出现了如下图的崩溃画面
image.png

相关文章
|
7月前
|
Java 测试技术 网络安全
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
322 0
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
|
8月前
|
安全 NoSQL Shell
web渗透-SSRF漏洞及discuz论坛网站测试
SSRF(服务器端请求伪造)是一种安全漏洞,攻击者可诱使服务端发起任意请求,进而探测或攻击内网系统。常用于端口扫描、访问内部服务、读取本地文件等。常见防御包括限制协议、域名和IP,但可通过302跳转、短地址等方式绕过。
428 1
web渗透-SSRF漏洞及discuz论坛网站测试
|
8月前
|
存储 安全 Linux
Kali Linux 2025.3 发布 (Vagrant & Nexmon) - 领先的渗透测试发行版
Kali Linux 2025.3 发布 (Vagrant & Nexmon) - 领先的渗透测试发行版
826 0
|
12月前
|
安全 前端开发 Linux
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
327 3
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
|
11月前
|
存储 安全 Linux
Kali Linux 2025.2 发布 (Kali 菜单焕新、BloodHound CE 和 CARsenal) - 领先的渗透测试发行版
Kali Linux 2025.2 发布 (Kali 菜单焕新、BloodHound CE 和 CARsenal) - 领先的渗透测试发行版
672 0
|
11月前
|
测试技术
软考软件测评师大题——案例分析之白盒测试
历年下午案例试题一固定考察白盒测试,主要包含三大核心问题:推导逻辑条件、绘制控制流图及计算环路复杂度、确定线性无关路径集合。内容涵盖覆盖层级标准(语句、分支、判定、条件覆盖等)、控制流图构建规范(顺序、分支、循环结构转换原则)、环路复杂度计算公式以及线性无关路径生成方法。通过典型题型示例解析,如代码路径分析与验证指标,帮助考生掌握解题思路和技巧。
|
11月前
|
测试技术
软考软件评测师——可靠性测试测试方法
软件可靠性是指软件在规定条件和时间内完成预定功能的能力,受运行环境、软件规模、内部结构、开发方法及可靠性投入等因素影响。失效概率指软件运行中出现失效的可能性,可靠度为不发生失效的概率,平均无失效时间(MTTF)体现软件可靠程度。案例分析显示,嵌入式软件需满足高可靠性要求,如机载软件的可靠度需达99.99%以上,通过定量指标评估其是否达标。
|
11月前
|
安全 测试技术 持续交付
软考软件评测师——基于风险的测试技术
本文详细阐述了测试计划的核心要素与制定流程,涵盖测试范围界定、实施策略规划、资源配置及风险管理机制。通过风险识别方法论和评估模型,构建了完整的质量保障体系。同时,针对不同测试级别与类型提供具体配置建议,并提出技术选型原则与实施规范,确保测试活动高效有序开展,为项目成功奠定基础。内容结合实际经验,具有较强指导意义。
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。