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
创建密码文件。
现在,我们需要使用htpasswd命令来创建一个密码文件;Apache将使用该文件对用户进行身份验证,并使用/etc/apache2配置目录中的隐藏文件“.htpasswd”来存储密码。
sudo htpasswd -c /etc/apache2/.htpasswd raj
cat /etc/apache2/.htpasswd
gedit etc/apache2/sites-enabled/000-default.conf
在虚拟主机定义中完成访问控制的配置。
现在,我们需要将下面的配置保存在000-default.conf文件中。
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
借助.htaccess文件进行访问控制。
打开Apache主配置文件,并通过.htaccess文件启用密码保护功能,然后,添加下面突出显示的各行内容。
sudo gedit /etc/apache2/apache2.conf
ServerName localhost
为了启用.htaccess规定的相应处理,我们需要将/var/www目录的配置块中AllowOverride指令行中的“None”改为“All”;然后,保存该文件,并重新启动apache服务。
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
接下来,需要将.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:已通过身份验证并获得访问权限的用户才能访问网站。
对密码身份验证功能进行确认。
尝试在Web浏览器中访问受限内容,以确认内容是否受到了相应的保护。实际上,这是系统将要求输入用户名和密码,具体如下所示:
如果您将尝试在不进行身份验证的情况下访问网站,则会返回401错误。
如果您是合法用户,并尝试使用有效凭据访问受密码保护的网站,例如,我们已经使用RAJ:123创建了一个帐户来访问Apache 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
创建密码文件。
现在,我们需要使用htpasswd命令来创建一个密码文件;Apache将使用该文件对用户进行身份验证,并使用/etc/apache2配置目录中的隐藏文件“.htpasswd”来存储密码。
sudo htpasswd -c /etc/apache2/.htpasswd raj
cat /etc/apache2/.htpasswd
gedit etc/apache2/sites-enabled/000-default.conf
在虚拟主机定义中完成访问控制的配置。 本文来自无奈人生安全网
现在,我们需要将下面的配置保存在000-default.conf文件中。
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
借助.htaccess文件进行访问控制。
打开Apache主配置文件,并通过.htaccess文件启用密码保护功能,然后,添加下面突出显示的各行内容。
sudo gedit /etc/apache2/apache2.conf
ServerName localhost
为了启用.htaccess规定的相应处理,我们需要将/var/www目录的配置块中AllowOverride指令行中的“None”改为“All”;然后,保存该文件,并重新启动apache服务。
www.wnhack.com
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
接下来,需要将.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:已通过身份验证并获得访问权限的用户才能访问网站。
对密码身份验证功能进行确认。
尝试在Web浏览器中访问受限内容,以确认内容是否受到了相应的保护。实际上,这是系统将要求输入用户名和密码,具体如下所示:
如果您将尝试在不进行身份验证的情况下访问网站,则会返回401错误。
如果您是合法用户,并尝试使用有效凭据访问受密码保护的网站,例如,我们已经使用RAJ:123创建了一个帐户来访问Apache HTTP服务:
copyright 无奈人生