laravel的版本已经到了8;这里分析一个laravel8的反序列化漏洞,但是让我感到意外的是,这个漏洞竟然在低版本的laravel上依然可以存在,从根本来说这个漏洞是laravel的mockery组件漏洞,没想到一直没修;
本文涉及知识点实操练习:Fastjson反序列化漏洞(Fastjson是阿里巴巴公司开源的一款json解析器,在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令。)
首先还是老样子,熟悉laravel的pop链的师傅肯定比较熟悉,入口点还是PendingBroadcast.php中的析构函数;
这里很明显可以控制任意类下的dispatch函数;这里还是选择Dispatcher.php进行续链;
这里简单的看下源码,感兴趣的师傅可以拿着laravel5的源码来进行对比,这里只不过是写成了三元运算的形式,本质上还是一样的,我们控制queueResolver变量和commandShouldBeQueued函数,使其返回为真,这样就可进入dispatchToQueue函数;这里审计下类不难发现queueResolver是我们可控的变量,然而commandShouldBeQueued函数我们可以追溯一下;
这里不难发现,是需要我们的command是继承ShouldQueue接口的类就可;所以全局搜索;选择BroadcastEvent.php的类;然后便可返回true,然后进入dispatchToQueue函数;回溯一下dispatchToQueue函数;
可以发现这里有个危险函数call_user_func;可以直接实现任意类下的任意 *** ;这里就可直接跳转到我们想要执行的 *** 下;全局搜索一下eval *** ;发现存在;
call_user_func函数在之一个参数为数组的时候,之一个参数就是我们选择的类,第二个参数是类下的 *** ;所以这里直接去到EvalLoader类,去执行load *** 从而调用到eval函数;这里发现存在参数,而且参数必须是MockDefinition类的实例;也即是意味着我们connection需要为MockDefinition类的实例;
继续审计发现,必须if为false才会触发eval *** ;所以这里我们需要直接追溯到MockDefinition类中;
看下getClassName函数;这里的config是可控的,所以我们直接找到一个存在getName *** 并且可控该 *** 的类;全局搜索下找到MockConfiguration.php可以实现;
因为最后是要经过class_exit函数的判断的,所以我们可以直接控制其返回一个不存在的类,就会造成false从而进入eval *** ;继续回到eval *** ;
这里还有个getCode *** ,我们通过上面的类也可审计getCode *** ;code在MockDefinition类中也是可控的,所以我们可以随意的控制其内容,那么我们就可命令执行;放出我exp:
这里为了节省时间,我最后用abcdef直接代替了,造成rce;
细心的师傅想必也发现了;在最开始的call_user_func处,也是可以进行命令执行的;
这里可以直接控制进行命令执行;这个很简单,就直接放出我exp吧;
本文导读目录: 1、邹兆龙享有《黑客帝国》永久分红,他凭借的是什么? 2、邹兆龙出演《黑客帝国》,赢得终身分红权,具体是什么情况? 3、1999年电影《黑客帝国》为什么被称作大片? 4、黑...
精美散文(关于经典的精美散文) 生活不止眼前的苟且,还有诗和远方的田野。 城市像一个钢筋铁骨焊接而成的牢笼,禁锢了我们的身心,禁锢了我们的思想,禁锢了我们百思特网的灵魂。每日的朝九晚五,我们或许早...
有时候我们出门旅游会拍许多的照片,我们可能会在朋友圈展示自己丰富的生活经历,可是照片就只能发那么几张,这样不能完全把所有照片展示出来,如果我们把照片制作成音乐相册的话就能全部展现了。下面教大家如何制作...
三十五个經典句式帮你攻破英文写作 一、~~~ the ~ est 专有名词 (that) 主关键词 have ever seen ( known/hear...
空调有异味(空调有异味怎么处理)新一波强冷空气汹汹 在北方地区的你 是否早已离不了暖气片了 在车上,如果你开暧风中央空调时,是不是觉得空调有异味呢?你了解是为什么,该怎么处理吗?我今日...
英国亚洲问题专家:双循环发展格局意味着中国将与更广泛的世界建立更深入的合作关系 英国亚洲问题专家阿富塔布·希迪齐近日接受总台记者专访时表示,中国制定“十四五”规划和二〇三五年远景目标在对外开...