
寫在前面的話
Joomla!今朝的下載量曾經超過了8400萬次了,它也曾經成為了今朝環球最熱點的內容管理系統之一。據統計,今朝互聯網上有約莫3.3%的網站內容和文章都是由Joomla!驅動的。
咱們的代碼闡發解決方案RIPS在Joomla!的LoginController中檢測到了一個以前從未被發明過的LDAP注入破綻。這個網安破綻將容許長途入侵攻擊者經由過程盲注技巧獲得超等用戶的暗碼,并利用LDAP注入技巧在幾秒內完整接管任何一個裝置了Joomla!(版本號小于3.7.5)的網站。Joomla!今朝曾經在最新版本v3.8中修復了這個破綻。
受影響版本
相符以下前提的網站將會遭到該破綻的影響:
Joomla! v1.5
身份認證利用了LDAP的Joomla!
注:這并非一個設置裝備擺設破綻,在利用該破綻的過程當中入侵攻擊者并不必要任何的特別權限。
入侵攻擊者能做甚么?
經由過程在登錄頁面利用該破綻停止入侵攻擊,非特權的長途入侵攻擊者能夠提掏出LDAP服務器中所有的用戶憑據(用于裝置Joomla!),這些憑據包含特權用戶和Joomla!管理員的用戶名和暗碼。獲得到這些憑據以后,入侵攻擊者就能夠利用這些信息來登錄Joomla!的管理員控制面板并完整接管Joomla!,或許經由過程上傳自定義的Joomla!擴大完成長途代碼履行并相干的Web服務器。
破綻闡發:CVE-2017-14596
咱們的代碼闡發解決方案RIPS能夠或許自動化辨認出以下代碼段中的網安破綻。首先在LoginController中,Joomla!利用能夠從登錄表單中接管用戶供給的憑據數據。
/administrator/components/com_login/controller.php

憑據數據會被傳遞給login辦法,而login辦法中又會挪用authenticate辦法。
/libraries/cms/application/cms.php

/libraries/joomla/authentication/authentication.php

authenticate辦法能夠向onUserAuthenticate辦法發送用戶憑據,詳細辦法取決于管理員所利用的身份驗證插件。假如Joomla!在停止身份驗證時利用的是LDAP,那末這里將必要挪用LDAP插件的內置辦法。
/plugins/authentication/ldap/ldap.php

在LDAP插件中,username嵌入在LDAP查問語句(在search_string選項中指定)中。依據Joomla!的民間文檔,search_string設置裝備擺設選項是一個用于搜刮用戶的查問字符串,其中的[search]會被登錄表單中的搜刮文本間接調換,比方“uid=[search]”。接下來,LDAP查問語句會被傳遞給LdapClient中的simple_search辦法,這個函數賣力與LDAP服務器樹立銜接并履行ldap_search辦法。
/libraries/vendor/joomla/ldap/src/LdapClient.php

縱然RIPS沒有能夠或許發明LDAP查問字符串是從一個內部設置裝備擺設文件加載出去的,但RIPS仍舊能夠或許勝利檢測并申報這個破綻的基本緣故原由:傳遞給ldap_search函數的用戶輸出固然嵌入在了LDAP查問語句中,但輸出數據并無顛末數據洗濯。
RIPS申報:【點我檢查】
PoC:LDAP盲注
因為沒有對LDAP查問語句中的username數據停止過濾,這將招致入侵攻擊者能夠或許改動LDAP搜刮的成果聚集。經由過程利用特別字符并察看分歧的認證差錯信息,入侵攻擊者將能夠或許經由過程賡續地發送測試payload來暴力破解出憑據字符。
XXX;(&(uid=Admin)(userPassword=A*))
XXX;(&(uid=Admin)(userPassword=B*))
XXX;(&(uid=Admin)(userPassword=C*))
...
XXX;(&(uid=Admin)(userPassword=s*))
...
XXX;(&(uid=Admin)(userPassword=se*))
...
XXX;(&(uid=Admin)(userPassword=sec*))
...
XXX;(&(uid=Admin)(userPassword=secretPassword))
其中的每一行Payload代碼都能夠從LDAP服務器中提掏出目的數據,而這也是一種絕對異常高效的LDAP盲注入侵攻擊方法。
光陰軸
2017年07月27日:向廠商供給破綻細節和PoC;
2017年07月29日:廠商確認破綻信息;
2017年09月19日:廠商宣布更新版本;
總結
作為今朝最熱點的一款開源CMS利用之一,Joomla!也遭到了網安社區的極大存眷。在洋洋灑灑500000多行的代碼中,只要有一行代碼存在網安成績,就有可能招致服務器被入侵攻擊。這次所發明的這個LDAP注入破綻(CVE-2017-14596)曾經存在了8年之久,但咱們仍舊要感激Joomla!網安團隊,感激他們能夠或許敏捷對此破綻停止響應,感激他們對該名目所做的進獻。
|