*参考来源:bugbountyforum,FreeBuf 小编 clouds 编译,转载请注明来自 FreeBuf.COM
Orange Tsai(蔡政达),现任台湾信息安全公司戴夫寇尔(Devcore)高级研究员,白帽社区漏洞挖掘达人,主要致力于Web安全和Windows漏洞研究。
Orange Tsai 所获经历和荣誉:CHROOT Security Group 成员,台湾黑客年会2009 Wargame冠军,台湾行政院国家技服中心信息安全大赛金盾奖第六届、第七届冠军,日本资安研讨会AVTOKYO 2011 讲师,香港资安研讨会 VXConf 2012 讲师,台湾WebConf, PHPConf 讲师,HITCON、DEFCON、BLACKHAT等多个安全会议演讲者,曾独立发现上报涉及Facebook、Uber、Apple和Yahoo等多家知名厂商的多个RCE漏洞。
感谢你接受我们的本次采访,你能简单介绍一下自己吗?
Hi,大家好,我叫Orange Tsai,来自中国台湾。我现在25岁,我记得我刚接触学习安全行业时大概是16岁左右。
在Web安全威胁中,相较于客户端漏洞来说,我更喜欢去挖掘一些服务端漏洞,因为我认为能控制服务端是件非常有意思的事,因此,我对远程代码执行漏洞(RCE)可算是情有独钟。我曾向多家知名厂商上报过RCE漏洞,这些厂商包括 Facebook、GitHub、Apple、Uber、Yahoo和Imgur等。
即便如此,我还是对所有的安全技术感兴趣,不管是服务端、客户端还是Web层面以及二进制等方面,我都有所研究涉猎。就比如,我不仅发现了Google、Onavo(Facebook)或Apple网站的XSS漏洞,也还曾向微软上报过一个关于IE浏览器的内存破坏漏洞。
如果你想深入了解我,就请关注我的个人网站-http://blog.orange.tw/,以及Twitter @orange_8361。
你是如何处理调配个人生活、工作和漏洞赏金项目之间的关系?你把漏洞赏金项目看成是一项工作还是个人爱好?
说到底,我更喜欢做一些深入的安全技术研究。漏洞赏金项目对我来说只是个爱好而已。你要知道,不是所有的研究都能有所收获。当我的研究没有方向,或是在其中发现一些非常有意思的东西,如发现了一些能导致安全问题的奇特功能或设计等,这个时候,我就会参与漏洞赏金项目,检验一下这些发现能否派上用场。
比如,在几个月前,我对Java的Web开发框架比较感兴趣,当我在分析其相关的CVE-2013-3827漏洞时,无意识地就发现,可以利用Google Hacking方式来发现网络上存在这个漏洞的在线服务,所以我就以这种方式,开始进一步查找存在该漏洞的厂商,最后发现了一些非常有意思的信息。
你在漏洞挖掘方面会投入多少时间?平均来说,你一个月大概发现上报多少个漏洞?
投入时间不是太多。我只挖掘那些我觉得非常有意思的漏洞。
比如,我在2016年发现并上报过的Uber数据库注入漏洞,你可以去找找看。发现漏洞的时候,恰巧我在中国休假旅行。
你找到的第一个高危或重要漏洞花了多长时间?
嗯....,我记得我发现的第一个高危漏洞是雅虎子站b.login.yahoo.com上的RCE漏洞。
一开始,我只是看新闻说雅虎要启动漏洞赏金项目。后来,我关注到了Struts2漏洞,通过结合Struts2漏洞,我利用搜索语法“site:yahoo.com ext:do”很容易就发现了雅虎这个子站存在Struts2远程代码执行漏洞。
确认漏洞存在之后,我花了一个晚上来测试绕过雅虎WAF的方法,最后还用OGNL(对象图导航语言)写了一个触发远程代码执行的POC。很高兴,最终也获得了雅虎方面非常有诚意的奖金。
在所有你发现上报的漏洞当中,哪一个是你比较喜欢的?
哦,这很难作出抉择。能选两个吗?呵呵......
我觉得最有意思要算:我成功渗透进Facebook,并在其中发现了其他人上传的后门脚本-《How I Hacked Facebook, and Found Someone’s Backdoor Script》。
而我最喜欢的应该是:利用4个漏洞,实现对GitHub企业版本软件从SSRF到RCE漏洞执行吧-《How I Chained 4 vulnerabilities on GitHub Enterprise, From SSRF Execution Chain to RCE!》。
你记得你是在哪个阶段或以哪种方式来取得一些突破性进展的?又是在何时喜欢上白帽和漏洞赏金这一行的? 另外在你成为一个优秀的赏金猎人过程中遇到过什么问题,你对此有什么看法?
给自己设定一个目标,然后想方设法实现它,总之,有压力才有动力。
比如:
当我在学习安全技术的时期,我总会在几个月之内设定并去实现一些阶段性目标,例如,跻身网络攻防赛前10名或成功渗透进入一些大型网站。
这了实现这些目标,我就会使劲地去学习了解有关目标的一切东西。在网上查询相关资料,测试一些解决问题的可行方法,不惜用整个月的时间去实现这些目标。
你如何让自己不断学习保持更新?
我通过RSS方式来了解当前的安全形势,也注册关注了几个安全博客和论坛,还订阅了feedly.com网站上的一些邮件列表。
另外我还会通过社交媒体来关注当前形势:比如,中国的黑客群体喜欢用微博、知乎和比较秘密的小米圈;
美欧黑客则倾向于使用Twitter;还有一个就是Github,我会在Github上关注一些知名安全研究员,并以此为途径了解他们研究和收藏的一些安全项目。
你与其他黑客有合作吗?能否透露一两个?
哦,不,我经常是一个人单干的。
你是如何去处理应对测试目标的?你的常用方法是什么?你一般采用什么踩点方式?在信息收集阶段你会着重获取什么信息?这些信息在后期如何发挥作用?
我想大多数的踩点方法都大同小异,我会利用FuzzDB、DirBuster、NMAP、Google Hacking等工具方法。
我会通过以下网站来收集一些前期信息:
pastebin.org
github.com
gist.github.com
google.com
netcraft.com - Domain / IP history
......
DNS信息踩点方面,我会用到以下方式和网站:
大数据方式,涉及的网站有:
Internet Census 2012
scans.io
fofa.io
Zoomeye.org
Shodan.io
Whois方式
Whois反查
DNS暴力枚举
一般用我自己写的脚本来执行
SSL证书查询
Censys
crt.sh
Certificate Transparency - Facebook
Certificate Transparency - Google
IP范围反查
dig
Robtex
You get signal
Bing ip
被动DNS数据查询
VirusTotal
PassiveTotal
DNSDB
sitedossier
啊......,还有很多,一下子很难列举完。我不经常用到,但希望对你们有用。
当你面对一个测试网站时,你是否会把所有的漏洞类型都检查一遍?
是的,经常这样。漏洞无处不在,要抓住任何一个细微。尽可能多地去发现漏洞。
你使用其它工具吗?你会自己开发一些自动化或便利性的漏洞挖掘工具吗?你使用的Burp插件有哪些?有没有大众不常使用但你觉得非常棒的冷门工具?
一般我不太使用工具,我认为Firefox、BurpSuite、Google、Python、NMAP和一个Linux系统就足够了。
但这是随便问(Ask Me Anything,AMA)访谈,我得实话实说。所以我打开我的工作目录找了找,列出了以下这些我时不时会用到的工具,它们大多都是一些后利用型(POST-Exploitation)工具。呵呵,你也可以试用它们:
NBTool / DNSLogger
Tiny-Shell
Mimikatz
Caidao (菜刀,这是个可以上传一句话木马的服务器控制管理工具)
NaviCat (用于管理MySQL、SQL Server、Oracle的便利工具)
ProxyChains (Linux系统下的一个代理工具,用它可实现SSH的全局代理;在Window系统中, 我会用Proxifier)
我也会自己写一些扫描DNS域名和敏感文件目录的小脚本,再结合我自己积累的字典文件来运行,这会非常有效。
我经常用到的Burp插件如下:
Active Scan++
J2EE Scan
Backslash Powered Scanner
HTTPoxy Scanner
Java Deserialization Scanner
Retrie.js
这个问题可能大家都比较期待:你是如何来测试RCE和SQL注入等一些服务端漏洞的?
SQL注入的话,我会用到以下测试语法:
page=1‘
page=1‘’
page=1%cc‘
page=1’-sleep(10)-’
page=1"
page=1"“
page=1%cc”
page=1"-sleep(10)-”
page=1/1
page=1/0
page=1/sleep(10)
page=1\
…
RCE的话一般我会用下列语法:
我经常使用 “sleep 10”作为Payload来测试
page=1`sleep 10
page=1|sleep 10
page=1$(sleep 10)
page=1%0asleep 10%0a
…
LFI(本地文件包含)的话会用到:
page=1
page=./1
page=.//1
page=././1
page=../pages/1
page=\1
…
我认为发现服务端漏洞与Payload没多大关系,它关键在于你如何去测试整个逻辑环境,如何去发一些网络请求中别人发现不到的细微之处。
当然了,最重要的是,你要尽可能多地去学会掌握一些技术、技能甚至是“奇技淫巧”,不论这些东西是否与安全相关,但总会让你开拓眼界。
你是否认为成为一名渗透测试工程师、Web开发者或相关行业人员,能有助于更快上手漏洞赏金项目?或者说应该从哪里入手来慢慢起步呢?
我一直认为安全攻防技术就是种艺术。信息安全不仅属于计算机领域,它还与其它领域息息相关。所以我觉得多学点其它技能也会反过来对自身的安全意识起到促进作用。
就比如说:
当你遇到一些使用CGI接口的测试网站时,你就得应用一些逆向或二进制分析技术。另外,学一些密码技术也非常有用,Padding Oracle、Length Extension Attack(长度扩展攻击)、Bit-Flipping Attack(比特反转攻击)等在实际的Web安全中非常常见,它们都会涉及到加密解密技术。还有,要学会尽可能多地去阅读一些CVE漏洞公告、漏洞原理和技术分析报告。当然,不仅只是去读,还要学会分析,知晓其中的漏洞触发原因,亲自动手测试漏洞利用的PoC或Exploit代码。细节决定成败。
你平时经常听什么类型的音乐?
中文流行歌曲,刘若英和徐佳莹的歌听得比较多。
当你不作安全攻防工作时会干点啥?
就简单地上上网
漏洞赏金项目对你的生活有什么影响,或它扮演着什么角色?
我觉得漏洞赏金项目是我保持动力的途径。当找到一个不错的漏洞并被列入名人堂之后,会让我信心倍增,更加促使我去不停地学习和深入地发现,这是一种良性循环。
在你入行漏洞赏金猎人之初,你认为有什么好的建议帮到你?
放轻松,抱着试玩的心态要好点。赏金不重要,能学到一些新知识才是关键。
在Web、移动端、硬件或网络等方面,哪一块是你接下来打算要深入学习的?
我想应该是高级二进制漏洞利用方面吧。尽管我现在也能做一些二进制的攻防操作,但总感觉技术还非常欠缺。我希望在这方面能继续精进学习,从一些实际的大型应用中获得经验。
如果遇到一些有基础的小白问你“我如何开始漏洞赏金项目?“时,如果让你推荐三条建议或事情让他们去做,会是什么?
首先:
选择一个好的测试目标
即使没有发现也别灰心
Hack to Learn(边玩边学)
另外,去学习一些开源的项目资料对入门者也非常有帮助:
Bug Bounty Reference by @ngalongc
The Bug Hunters Methodology by @jhaddix
其次:
打CTF比赛也是一种学习Web安全技术的方式。虽然如今的CTF比赛难度越来越大,但作为入门者仍然可以选择参加一些低难度比赛来积累经验,如CSAW CTF 或 PicoCTF等。我自己也建立了一个打CTF比赛的开源项目库,你们可以在上面查找到一些有趣的工具和技巧。
哈哈,有些人非常想知道,你会把什么和吐司一起吃?
你认为你目前最差劲的一次漏洞赏金经历是什么?
我在某流行应用中发现了一个厉害的XSS漏洞,该漏洞利用了Struts2的一个有趣功能,我想着这个漏洞应该没多少人能发现,算是比较独特的漏洞吧。但在我上报给厂商之后,他们竟然只愿意给我他们自家网店20块的优惠券。
更伤心的是,他们网店中我喜欢的一件连帽卫衣都要50块.....
如果要你选择一位白帽成为合作伙伴,你最想选谁?
我想选择两位,他们的推特号是@filedescriptor和@pwntester
你最喜欢用的文本编辑器是哪个?
Sublime Text
好的,非常感谢Orange接受我们的采访,祝你继续挖到更多更好的漏洞!
*参考来源:bugbountyforum,FreeBuf小编clouds编译,转载请注明来自FreeBuf.COM