HTTP身份验证渗透测试指南

栏目: 编程工具 · 发布时间: 7年前

内容简介:在本文中,我们将为读者介绍如何给Apache Web服务器配置密码保护功能,从而限制没有经过身份验证的联机访问者的访问权限,可以向未经身份验证的用户隐藏某些关键的信息;与此同时,我们还会介绍如何对该配置存在薄弱环节的系统进行渗透测试。在HTTP事务上下文中,基本的访问权限认证方式,就是HTTP用户代理在发出请求时提供用户名和密码这种方法。HTTP基本身份验证(BA)是对Web资源实施访问控制时最简单的一种方法,因为它无需借助于cookie、会话标识符或登录页;相反,HTTP基本身份验证只需使用HTTP头部中

在本文中,我们将为读者介绍如何给Apache Web服务器配置密码保护功能,从而限制没有经过身份验证的联机访问者的访问权限,可以向未经身份验证的用户隐藏某些关键的信息;与此同时,我们还会介绍如何对该配置存在薄弱环节的系统进行渗透测试。

HTTP基本身份验证(HTTP Basic Authentication)简介

在HTTP事务上下文中,基本的访问权限认证方式,就是HTTP用户代理在发出请求时提供用户名和密码这种方法。

HTTP基本身份验证(BA)是对Web资源实施访问控制时最简单的一种方法,因为它无需借助于cookie、会话标识符或登录页;相反,HTTP基本身份验证只需使用HTTP头部中的标准字段,从而无需进行“握手”。

不过,BA机制并没有为传输的凭据提供机密性保护:在传输中,它们只是进行了相应的Base64编码,而没有进行任何加密处理或使用其哈希值。因此,我们最好将HTTPS与基本身份验证搭配使用。

有关更多详细信息,请参阅wikipedia.org

实验设置要求

·Apache服务器(Ubuntu14.04)

·渗透测试试验机(Kali Linux)

·设置密码身份验证

·安装Apache实用 工具

首先,让我们通过下面的命令来安装一个名为“htpasswd”的Apache2实用程序包。实际上,htpasswd的作用就是创建和更新用于存储HTTP用户基本身份验证的用户名和密码的flat-file。

sudo apt-get install apache2 apache2-utils

HTTP身份验证渗透测试指南

创建密码文件。

现在,我们需要使用htpasswd命令来创建一个密码文件;Apache将使用该文件对用户进行身份验证,并使用/etc/apache2配置目录中的隐藏文件“.htpasswd”来存储密码。

sudo htpasswd -c /etc/apache2/.htpasswd raj
cat /etc/apache2/.htpasswd
gedit etc/apache2/sites-enabled/000-default.conf

HTTP身份验证渗透测试指南

在虚拟主机定义中完成访问控制的配置。

现在,我们需要将下面的配置保存在000-default.conf文件中。

<Directory "/var/www/html">
        AuthType Basic
        AuthName "Restricted Content"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    </Directory>

HTTP身份验证渗透测试指南

借助.htaccess文件进行访问控制。

打开Apache主配置文件,并通过.htaccess文件启用密码保护功能,然后,添加下面突出显示的各行内容。

sudo gedit /etc/apache2/apache2.conf
ServerName localhost

HTTP身份验证渗透测试指南

为了启用.htaccess规定的相应处理,我们需要将/var/www目录的配置块中AllowOverride指令行中的“None”改为“All”;然后,保存该文件,并重新启动apache服务。

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

HTTP身份验证渗透测试指南

接下来,需要将.htaccess文件添加到需要限制访问的目录中。就本文来说,我希望限制对于整个网站的访问,所以,可以通过限制访问/var/www/html来实现这一目的,不过,读者可以将该文件放在自己希望限制访问的任意目录中:

sudo nano /var/www/html/.htaccess
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
sudo service apache2 restart

在配置.htaccess文件时,我们相应的目录添加了一些选项。下面,让我们看看这些配置的含义。

AuthType Basic:为我们的网站设置基本身份验证。

AuthName“Restricted Contents”:在命令行中显示身份验证的名称。

authuserfile/etc/apache2/.htpasswd:显示身份验证文件的位置。

Require valid-user:已通过身份验证并获得访问权限的用户才能访问网站。

HTTP身份验证渗透测试指南

对密码身份验证功能进行确认。

尝试在Web浏览器中访问受限内容,以确认内容是否受到了相应的保护。实际上,这是系统将要求输入用户名和密码,具体如下所示:

HTTP身份验证渗透测试指南

如果您将尝试在不进行身份验证的情况下访问网站,则会返回401错误。

HTTP身份验证渗透测试指南

如果您是合法用户,并尝试使用有效凭据访问受密码保护的网站,例如,我们已经使用RAJ:123创建了一个帐户来访问Apache HTTP服务:

HTTP身份验证渗透测试指南

这样,就可以正常访问网站的内容了,具体如下所示。

HTTP身份验证渗透测试指南

HTTP身份验证的攻击方法

xHydra

这是一个通过FTP端口利用字典攻击来攻击系统的、带有图形用户界面的攻击工具,使用方法如下所示:

HTTP身份验证渗透测试指南

从kali中打开Xhydra程序,选择Single Target选项,并输入受害者机器的IP地址。为Protocol选项选择HTTP协议,并为Port选项指定80端口号。

现在,切换到“Passwords”选项卡,选择“Username List”,并在旁边的文本框中给出存放用户名的文本文件的路径。

HTTP身份验证渗透测试指南

然后,点选“Password List”,并在旁边的框中给出存放所有密码的文本文件的路径。

完成此操作后,转到“Start”选项卡,然后,单击左侧的“Start”按钮。

HTTP身份验证渗透测试指南

现在,字典攻击的过程将启动。这样,我们就可能得到受害者的用户名和密码。

Hydra

Hydra通常是完成这类攻击的首选工具。该工具能够对50多种协议执行快速的字典攻击,其中包括telnet、ftp、http、https、smb,以及多种数据库,等等。

现在,我们需要选择一个wordlist。与所有字典攻击一样,wordlist是非常关键的。不过,Kali为我们提供了许多的wordlist。

现在,请运行以下命令:

hydra -L user.txt -P pass.txt 192.168.0.105 http-get

-L:表示用户名列表的路径

-P:表示密码列表的路径

一旦命令开始执行,它就会展开字典攻击,因此,我们很快就能得到相应的用户名和密码。正如您可以看到的那样,我们已成功获取HTTP用户名(raj)和密码(123)。

HTTP身份验证渗透测试指南

Ncrack

Ncrack是一款高速网络身份验证破解工具。它可以通过主动测试所有主机和网络设备,来获取安全性不高的密码。

下面,请运行以下命令:

ncrack -U user.txt -P pass.txt http://192.168.0.105

其中:

-U:表示用户名列表的路径

-P:表示密码列表的路径

正如您可以看到那样,我们已成功获取HTTP用户名(raj)和密码(123)。

HTTP身份验证渗透测试指南

Medusa

Medusa是一个高速、大规模并行、模块化的登录凭证暴力破解工具。它可以支持许多协议,例如AFP、CVS、FTP、HTTP、IMAP、rlogin、SSH、Subversion以及VNC,等等。

下面,请运行以下命令:

medusa  -h 192.168.0.105 -U user.txt -P pass.txt -M http -f

其中:

-U:表示用户名列表的路径

-P:表示密码列表的路径

正如您可以看到那样,我们已成功获取HTTP用户名(raj)和密码(123)。

HTTP身份验证渗透测试指南

Metasploit

这个模块能够对HTTP服务身份验证进行暴力破解。使用时,请在Kali中打开msfconsole,然后键入下列命令:

use auxiliary/scanner/http/http_login
msf auxiliary(scanner/http/http_login) > set user_file  user.txt
msf auxiliary(scanner/http/http_login) > set pass_file  pass.txt
msf auxiliary(scanner/http/http_login) > set rhosts 192.168.0.105
msf auxiliary(scanner/http/http_login) >  set stop_on_success
msf auxiliary(scanner/http/http_login) > exploit

HTTP身份验证渗透测试指南

Burp Suite

现在,可以在这里直接输入一个随机值用于身份验证,以便通过burp suite获取相应的请求。为此,在向服务器发送请求之前,请打开burp suite,并点选proxy选项卡,然后,单击拦截选项,最后单击OK按钮,发送用户身份验证数据。

HTTP身份验证渗透测试指南

这样,发送的请求就会被Burp Suite捕获,具体如图所示。在该截图中,最后一行中的某些值进行了突出显示。从中可以看出,这里提供的身份验证的类型是基本身份验证,前面已经说过,它是经过base 64编码的。

下面,我们将利用Burp Suite来生成用于身份验证的编码值。单击action选项卡,选择send to intruder,以进行HTTP Fuzzing攻击。

HTTP身份验证渗透测试指南

现在,打开intruder框架并单击该位置。然后,配置payload的插入位置。其中,攻击类型决定了为该位置分配payload的方式。现在,为payload位置选择“the encoded value of authentication”,然后,单击框架左侧的“ADD”按钮。

HTTP身份验证渗透测试指南

其中,用于身份验证的base64编码值是用户名和密码的组合,就这里来说,就是借助用户密码字典生成相同的身份验证编码值。因此,我创建了一个字典,其中包含文本文件中的用户密码名称。

为了将字典用作payload,请单击intruder下的payload选项卡;现在,将加载包含payload选项中的用户密码名称的字典。

HTTP身份验证渗透测试指南

但我们希望在payload的编码值中发送请求。为了对payload进行编码,请单击payload processing下方的ADD按钮。

这时,将生成一个新对话框,我们可以在此选择编码选项;现在,我们选择用base 64对payload进行编码处理。

HTTP身份验证渗透测试指南

这将启动暴力攻击,并尝试匹配用于用户身份验证的字符串。在屏幕截图中,突出显示的status值“200 OK”和length值“11788”与相应列中其余值不同。这意味着,我们可以使用这个编码值绕过用户身份验证,这是从编号为5的请求开始的。现在,请检查字典第5行中的用户名和密码。利用这个字典,我发现可以利用raj:123通过身份验证。

此外,您也可以通过Burp Suite截获相关数据,使用这个编码处理后的Auth值来绕过Apache HTTP身份验证页面。

HTTP身份验证渗透测试指南

为此,请复制上面的auth值,通过粘贴替换掉截获的authorization,具体如下所示,然后转发访问受限内容的请求即可。

HTTP身份验证渗透测试指南

Booom!!! 如您所见,现在我们已经能够成功地访问该网站的内容了。

HTTP身份验证渗透测试指南

希望这篇文章对大家有所帮助。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Landing Page Optimization

Landing Page Optimization

Tim Ash / Wiley Publishing / 2008-1-29 / USD 29.99

在线阅读本书 How much money are you losing because of poor landing page design? In this comprehensive, step-by-step guide, you’ll learn all the skills necessary to dramatically improve your bottom li......一起来看看 《Landing Page Optimization》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具