Typecho源代码审计之反序列化漏洞

今日在Seebug的微信公众号看到了Typecho的1个前端getshell剖析的内容,随后自个也要来掌握一下下。维持对业内的关心,掌握全新的漏洞很重要。

outputo-20220218-095926-564-pdaz.png

什么叫反序列化漏洞

如题所讲,这是一个反序列化产生的执行命令。看了我之前内容的人应当并不会生疏。tp框架在反序列化1个字符串数组时,等同于激话了之前休眠状态的1个目标。当在激话的情况下,会启用好多个魔法方式来方式复位及其相关的实际操作。而假如魔法方式中存有风险实际操作,例如数据库操作,文件存取数据,cd命令启用等,那样也有很有可能会产生相对应的漏洞。客户运用可以控制变量值更改系统运转步骤。进去到风险变量,进而产生漏洞。官方网在前几天早已进行了修补。如今早已不会有这一漏洞了。咱们找出之前的版本号方式安装。链接如下所示:咱们定位到了漏洞实地。随后那么问题来了,反序列化是将1个休眠状态目标(字符串数组)激话为1个目标。那样咱们下面找出在激话的环节中,有什么方式可以启用,他们才算是运用的核心。咱们来检索这3个方式:在第130行的情况下,发觉传到的主要参数用于做字符串拼接。那样便会启用__toString()方式了.

随后咱们对之前检索到的方式跟进,发觉前2个是没发用的。随后咱们重点关注第一个。这一变量关键的意义是拼凑xml文件。随后在整个过程中,并沒有直接进入风险变量,因此这时僵持不下。可是就是这样就难解了吗?__get()方式在启用1个目标不会有的成员变量情况下很有可能启用此方式。可以对比我之前的内容。

那样那样的话咱们只需可以找出一个get方式中存有风险实际操作,那样的话,这一漏洞或是很有可能的。咱们来很有可能。

整体来检索__get()方式,随后在\var\Typecho\Request.tp框架咱们来整理一下下全部逻辑,install.tp框架(反序列化)==>Db.tp框架(将$config中的主要参数拿来拼凑,启用toString方式)==>Feed.tp框架(启用1个不会有成员变量,很有可能启用__get()方式)==>Request.tp框架(启用get()方式,随后启用_applyFilter(),随后启用call_user_func()产生了执行命令)

分享: