本文我要共享的是,在Paypal网站manager.paypal.com上的某个页面存在“表达式注入“缝隙(Expression Language Injection),运用该缝隙我能够直接获取到Paypal体系的内部IP、端口和办法类等敏感数据信息。
我从2019年9月开端参加缝隙赏金项目,简直每天都会花点时刻来做一些Web缝隙发掘测验,我比较喜爱用bountyfactory.io这个缝隙众测渠道。在本年2月份,我给自己定了一个方针:发现PayPal的一个缝隙。
前期发现
PayPal的缝隙众测规模十分广泛,只要是触及*.paypal.com的网站都算。一开端的套路都是类似的:枚举子域名、枚举可拜访文件、枚举目录….。经过几天的折腾研讨,我发现了一个有意思的页面:
我其时的反响这样的:
能够看到,这个页面中有好多个可填写区域,可是没提交按钮,和一些新式网页比较,这个页面形似有些”老旧“,咱们尽量经过它来看看能得到些什么东西吧!更奇怪的是,我的网站架构辨认插件WappAlyzer居然如同也失灵了,只辨认到了 “Apache”,但却没任何版别信息:
测验发现
好吧,那我来测验看看网站会不会发作什么有意思的呼应,所以,我在几个区域中填写了字段,并企图向Paypal建议恳求:
思路一:测验发现反射型XSS
只可惜这招十分不灵,无疑 PayPal 的WAF十分管用,我没能发现任何能够绕过它的办法,当然也有或许是我太菜了。
思路二:测验注入缝隙
因为反射型XSS的测验无效,我决议测验一些我之前在其它众测项目中学到的注入型Payload,即:
{7*7}
{{7*7}}
${7*7}
没想到,终究这种${7*7} Payload 居然成功了,能有用回来 7*7 表达式的成果49:
我就乐了
已然能让Paypal服务器来履行一些这种数学操作,这就有意思了,可是还不能阐明问题,所以,我决议再来研讨研讨方针服务器上的Java服务,以及这种”${param}”参数的运行机制。
“ *** TL, *** TL everywhere”
在我朋友 Nico 的协助下,终究我发现,在这个页面中存在一个 *** TL符号库,而且能够履行多种有意思的表达式语法指令。
*** TL:在 *** P页面中,运用标签库替代传统的Jav *** 段言语来完成页面的显现逻辑中,因为自界说标签很简单形成重复界说和非规范的完成,因而, *** P 规范符号库( *** P Standard Tag Library, *** TL)就呈现了, *** TL 是一个完成 Web 应用程序中常见的通用功用的定制符号库集,这些功用包含迭代和条件判别、数据管理格式化、XML 操作以及数据库拜访。
该缝隙的风趣部分是关于 *** P页面和Servlet特点的。现在咱们现已了解了怎么拜访恳求参数、符号头、初始化参数、cookies和效果域变量, *** TL隐式方针还有一种功用能够测验运用:也便是拜访servlet和 *** P特点,例如恳求的协议或服务器端口,或许容器支撑的servlet API的主版别和次版别。经过pageContext隐式方针,你能够发现更多此类数据信息,经过这些发现的数据信息,能够完成对恳求、呼应、会话和应用程序等servlet context接口信息的拜访。ServletContext,是一个大局的贮存信息的空间,被Servlet 程序用来与Web 容器通讯。
因为pageContext方针是 *** P中很重要的一个内置方针,其pageContext隐式方针包含了多种特点:
pageContext.request
pageContext.response
pageContext.properties
pageContext.page
pageContext.servletConfig
pageContext.servletContext
这些特点我就不逐个介绍了,但它们都是用于开发者和Web页面的交互,以及servlet 和 server服务器之间的通讯。所以,我就经过一些揭露文档和fuzzing办法,测验来发现一些可用参数,我把以上特点触及到的相关恳求Payload悉数添加到BurpSuite的Intruder功用中去:
很好,这样,尽管或许性有限,可是不是就能够用形如SSRF的办法来提取出PayPal方针服务器中的信息了呢?以下是终究的测验效果图:
运用 fuzzing 我发现我之前没发现的一个参数:${pageContext.servletContext.docRoot},运用它能够显现服务器上编译过的WAR文件相对路径。
能够完成RCE缝隙吗?
有了以上的发现之后,我测验运用表达式注入来完成RCE缝隙,但终究仍是不可。参阅了许多 *** TL表达式注入相关的writeup和PoC,这儿的 *** TL EL注入仍是无效,我猜测或许因为PayPal服务器上的WAF阻挠了我的注入测验恳求,所以终究呼应的总是一些301跳转页面。
我也测验用最基本的Payload办法来测验:${T(java.lang.System).getenv()},但仍是不可,服务器呼应总是在我注入时发作中止。当然,也有或许仍是我技能不可,没找对办法完成RCE。终究,我只好如此这样把这些发现提交给了PayPal ,期望缝隙有用。
缝隙报送进程
[2019-03-06] 发现缝隙
[2019-03–07] 报送给 PayPal
[2019-03–08] 得到PayPal呼应 : 安全危险不明,无条件取得赏金,这….
[2019-03-29] 再次得到PayPal呼应 : 缝隙有用
[2019-04-03] 缝隙修正
[2019–04-11] 取得不菲赏金和2019年6月名人堂
$bucket_index = $bucket_index_middle;0x03 修复建议第一个计算all_buckets的地址,使用gdb进行调试,你会发现,这个值并没有算错,但是在执行apach...
下载:http://www.dsploit.net/download/ 横竖,一会我就删去!!看完完事了, function() {1)assert是函数,eval不是函数,是言语结构器能够看...
#NotethatyoudonothavetorerungrubaftermakingchangestothisfileB374K WebShell是一个十分有用的长途办理东西,办理员经过浏览器就能够...
[1][2][3][4][5][6][7][8][9][10]黑客接单渠道0×01前语:后台:manage/main.asp日前,国内最大的互联网安全公司360(NYSE:QIHU)发布了《2014年...
尽管我们可以讨论这些稽查到的主机是否可以被攻击者真实利用,并且可以分析这些主机的补丁状态、网络分段等,但众所周知,许多公司仍然在运行易受攻击的Windows版本,并且修复周期对于这些系统来说可能更难。...
#5 0x509662 in cfrReadFont afdko/c/tx/source/tx.c:151:18不过目前为止,还未发现任何恶意行为利用这个漏洞,GitHub上出现不少利用这个消息骗St...