记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

SSRF攻击的新角度–利用编程语言中的URL parser

2018-04-13 18:15

作者:{LIG}@ArkTeam

原文作者:Orange Tsai

原文标题:A New Era of SSRF – Exploiting URL Parser in Trending Programming Languages!

原文来源:2017 Blackhat

众所周知,绕过SSRF过滤的方式有很多种,比如:更改IP地址写法,利用URL解析,利用302跳转,各种非HTTP协议以及DNS Rebinding。利用URL解析导致SSRF过滤被绕过大多是因为后端通过不正确的正则表达式对URL进行了解析。

在2017年的Blackhat大会上,作者介绍了SSRF攻击的一个新的角度—利用不同编程语言对URL的处理标准来绕过SSRF过滤,从而实施攻击。该方式主要是利用了URL解析器和URL请求器之间的差异性发起攻击,由于不同的编程语言实现URL解析和请求是不一样的,所以很难验证一个URL是否合法。

在作者的实践中,受到这种攻击的编程语言包含了cURL、PHP和PYTHON。图1展示了PHP语言中存在的攻击,parse_url最终解析得到的部分是google.com,而readfile忠实地执行了RFC3986中的定义,将host指向了evil.com。图2展示了cURL请求函数与其他语言解析函数的差异性。可以得知,NodeJS URL、Perl URI、Go net/url、PHP parser_url以及Ruby addressable解析得到的IP是google.com,而curl请求得到的却是evil.com:80。且当作者将此问题报告给CURL团队后,得到的补丁又可以被添加一个空格的方式绕过。


图1 PHP语言中的差异性


图2 cURL与其他语言的差异性

这个问题依赖于URL解析器和实际的请求器之间所用的IDNA(Internationalizing Domain Names in Applications)标准不同。

根据这种差异性,作者发现了github企业版的远程代码执行漏洞(将四个漏洞结合为一个攻击链,实现了远程代码的攻击)且提出了3种方法绕过wordpress的SSRF保护。

然后作者提出了缓解措施:

1)应用层:使用唯一的IP和主机名,不要对输入的URL进行复用。

2)网络层:使用防火墙或者协议来阻断内网的通行。

最后,作者总结了SSRF中的新攻击面主要是URL解析器的问题和滥用IDNA标准,并提出未来的研究可以针对OAuth、现代浏览器以及代理服务器中的URL解析器。

知识来源: www.arkteam.net/?p=3499

阅读:12364 | 评论:0 | 标签:ArkDemy 安全技术

想收藏或者和大家分享这篇好文章→复制链接地址

“SSRF攻击的新角度–利用编程语言中的URL parser”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云