1. 程式人生 > >Joomla!3.7.0 Core SQL註入漏洞動態調試草稿

Joomla!3.7.0 Core SQL註入漏洞動態調試草稿

src cnblogs phpstorm prop ets legacy gets oom users

從這個頁面開始下斷點:Joomla_3.7.0/components/com_fields/controller.php

技術分享

技術分享

調用父類的構造方法

繼續跟:/Applications/MAMP/htdocs/Joomla_3.7.0/libraries/legacy/controller/legacy.php技術分享

技術分享

-------分割線-------

技術分享

跟進函數,位於/Joomla_3.7.0/libraries/legacy/model/legacy.php

在這裏調用第一個的get()函數 $this->state = $this->get(‘State‘);

跟進以後構造成模塊也就是 getState($property = null, $default = null) 函數

$this->populateState();

遇到這個繼續跟進

位於 /Joomla_3.7.0/administrator/components/com_fields/models/fields.php p73-89

protected function populateState($ordering = null, $direction = null)

可以看到這裏有調用了父類populateState方法,我們跟進到父類
parent::populateState(‘a.ordering‘, ‘asc‘);
繼續跟進

位於/Joomla_3.7.0/libraries/legacy/model/list.php

技術分享

跟進getUserStateFromRequest()函數

/Applications/MAMP/htdocs/Joomla_3.7.0/libraries/cms/application/cms.php

技術分享

這裏的$request=list $key=com_fields.fields 繼續跟進$cur_state = $this->getUserState($key, $default);

技術分享

技術分享

這裏的$key是等於com_fields.fields.list

經過一系列for循環

技術分享

技術分享

$cur_state的值變成了註入payload。

技術分享

返回$list的值

位於 /Applications/MAMP/htdocs/Joomla_3.7.0/libraries/legacy/model/list.php 第495-570行 技術分享

第566行:

技術分享

跟進setState函數

技術分享

技術分享

這時候就設定了list.fullordering的值。

接著看第二個$this->items = $this->get(‘Items‘);

走get函數,執行了getItems()

技術分享

跟進getItems() 位於 /Joomla_3.7.0/libraries/legacy/model/list.php 第172-186行

技術分享

可以看到執行了_getListQuery() 函數,位於同一目錄下。

技術分享

然後執行getListQuery() 函數,位於/Joomla_3.7.0/administrator/components/com_fields/models/fields.php 第124-328行

執行到305行

技術分享

取list.fullordering的值,我們在前面$this->state = $this->get(‘State‘); 操作中,已經把$this->state = $this->get(‘State‘);設成了sql語句的值。

賦值給$listOrdering,然後進入order查詢。

技術分享

就這樣產生註入了。

後記。模模糊糊跟著函數看了大半天的參考文章,才寫成的,對於joolma這種大程序,函數那麽多還是容易犯迷糊,最後經過指點,用phpstorm看調用堆棧就有過程,然後慢慢回溯回去,才有了這篇文章。

參考:http://bobao.360.cn/learning/detail/3870.html

poc:index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(0x3a,concat(1,(select%20md5(1))),1)

Joomla!3.7.0 Core SQL註入漏洞動態調試草稿