HikaShop PHP对象注入漏洞

- AV AC AU C I A
发布: 2025-04-13
修订: 2025-04-13

###0x01漏洞背景 HikaShop是基于著名开源CMS Joomla!的电子商务程序,可以帮助用户轻松的开发电子商务网站或网店。 ![](https://images.seebug.org/contribute/b79c7d84-2272-4f68-b991-f5d5b82f4b8d) 对象注入通常发生在用户的输入,被传递给unserialize()函数然后进行调用的时候。黑客可以通过构造输入内容,向WEB服务器发送当前WEB应用下的一个序列化的类实例,保证这些被定义为魔术方法的类,在特定的时候会被触发,从而执行其中的恶意代码。 ###0x02漏洞分析 代码中的124行和132行有两个重要的点值得我们注意,$infos变量被设置为JRequest::getVar()的返回值,这就意味着它可以接收$_GET['infos']或者$_POST['infos']的值。接着,$infos的值被base64编码后,会传递给unserialize()函数。 Hikashop漏洞的攻击利用方法如图: ![](https://images.seebug.org/contribute/ea1c5a40-5b12-4839-8995-24b3e16c1871) 我们在了解这些信息后,就需要想办法达成我们的邪恶目的。在我们的POC调用了Joomla! 3.3.x的类,并且定义成功后,我们就可以读取WEB服务器上的/etc/passwd。 找出利用方法,直击问题核心 我们首先要做的,就是分析该程序代码的执行顺序。同时,我们也需要使用Joomla!类的魔术方法。值得一提的时候,PHP类的析构方法__destruct(),在脚本执行完毕时会自动执行析构函数。 在这个特定案例下,我们选择了JDatabaseDriverMysqli类的析构方法来达成我们的需求,这可以让我们从任何存在的类里去调用方法。Destruct函数调用disconnect方法如图: ![](https://images.seebug.org/contribute/63793bd6-0c76-4512-a4fb-c03dcee4903a) 这里采用了$this->disconnectHandlers调用那些回调函数,Disconnect函数如图:...

0%
暂无可用Exp或PoC
当前有0条受影响产品信息