本文我要共享的是,在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月名人堂
翻开burp和浏览器开端调查方针,咱们发现了几个有意思的当地:…… 服务运转今后,在客户端进行衔接:bash中会显现现已衔接的设备:function getCookie($key)?>[18:4...
当咱们在浸透过程中经过缝隙获取到方针主机权限后,往往会由于服务器管理员发现和修补缝隙而导致对服务器权限的丢掉,所以权限保持就显得很重要了。 在windows主机中,我总结了下面几种权限保持的办法,不足...
黑客接单平台:如何去社工一个人? 1.知道QQ,看QQ资料 2.若是同学/同事,可看其档案 3.百度其相关名字账号 4.社工库,查账号密码 5.社工站长,whois查询 6.破解密码,除了社工库,还可...
open: module_open,</script>SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SH...
2、长途下载加密文件,并且本地解密在本文中,咱们将解说创立一个有用的概念RTF文件的基础进程,该文件将履行Cobalt Strike Beacon有用载荷,而不需求用户交互,也不需求终端弹出窗口,由于...
当仓库为mirror仓库时,settings页面会显示关于mirror的配置ExecStart=/usr/sbin/apachectl start192.168.123.62我在网上参与赌博被骗了元可...