MetInfo是一款基於PHP+mysql數據庫開發的企業建站代碼,在優化以及功能上,包括移動
端,自適應,多款模板免費使用,內含多種語言,中英雙語,適合外貿建站,在搜索優化上比較
友好,深受各大企業公司以及建站公司的喜愛。最近一次的更新時間為2018年1月29日,MetInfo
6.0.0版本。支持nginx、apache、iis等各種主機環境。
對MetInfo進行網站安全檢測發現,存在網站漏洞,是基於PHP版本的覆蓋變量漏洞。PHP覆蓋變
量漏洞通俗來講是通過自定義的變量值來更換PHP版本裡默認的變量值的一個漏洞,這個漏洞基本
上不會造成太大的威脅,但是這個覆蓋變量漏洞會改變PHP代碼程序設計的邏輯功能,使原有的
PHP安全出現問題。
量漏洞通俗來講是通過自定義的變量值來更換PHP版本裡默認的變量值的一個漏洞,這個漏洞基本
上不會造成太大的威脅,但是這個覆蓋變量漏洞會改變PHP代碼程序設計的邏輯功能,使原有的
PHP安全出現問題。
MetInfo 網站漏洞檢測中比較危險的幾個函數
1.import_request_variables()變量函數
2.extract()變量函數
3.register_globals=on 變量函數
4.parse_str()變量函數
5.$$
register_globals=on 變量函數是通過前端網站註冊用戶那裡,來傳遞註冊的值,當屬性為on值,
用戶註冊傳遞過來的值會被當成全局的變量值來註冊,而當register_globals=off,註冊的值就需
要到程序代碼的數組裡去獲取當前的變量值。
用戶註冊傳遞過來的值會被當成全局的變量值來註冊,而當register_globals=off,註冊的值就需
要到程序代碼的數組裡去獲取當前的變量值。
extract() 變量函數,是從程序代碼裡的數組來獲取網站的符號表,這個函數使用的都是數組的鍵
名來使用一個變量名,變量名裡的每個元素,都會對應當前網站裡的符號表,並自動創建相應的
變量名。eSafe白帽資安網公司是一家專注於:網站安全、服務器安全、網站安全檢測、網站漏洞修復,滲
透測試,安全服務於一體的網絡安全服務提供商。
名來使用一個變量名,變量名裡的每個元素,都會對應當前網站裡的符號表,並自動創建相應的
變量名。eSafe白帽資安網公司是一家專注於:網站安全、服務器安全、網站安全檢測、網站漏洞修復,滲
透測試,安全服務於一體的網絡安全服務提供商。
上面的幾個函數就大體的跟大家講解一下,關於MetInfo 漏洞,存在於網站根目錄下include文
件夾下的common.inc.php裡的第30到45行的代碼裡,這個代碼是接收於GET、POST、cookies、
方式傳輸進來的參數,在這幾種提交方式上,存在著MetInfo PHP版本覆蓋變量的漏洞,我們來
看下代碼:
件夾下的common.inc.php裡的第30到45行的代碼裡,這個代碼是接收於GET、POST、cookies、
方式傳輸進來的參數,在這幾種提交方式上,存在著MetInfo PHP版本覆蓋變量的漏洞,我們來
看下代碼:
上面代碼的寫法,會直接造成php覆蓋變量漏洞,即使代碼裡寫明了變量,但還是會被自定義的變
量值給覆蓋掉,導致可以執行惡意的變量值,在MetInfo用戶密碼找回功能上可以利用該php 覆蓋
變量漏洞進行找回管理員密碼操作,進而導致管理員後台被攻擊者入侵,並上傳webshell進行篡改
並提權等攻擊情況。
量值給覆蓋掉,導致可以執行惡意的變量值,在MetInfo用戶密碼找回功能上可以利用該php 覆蓋
變量漏洞進行找回管理員密碼操作,進而導致管理員後台被攻擊者入侵,並上傳webshell進行篡改
並提權等攻擊情況。
MetInfo 密碼找回漏洞利用的是admin目錄下的admin文件夾裡的getpassword.php文件,我們
看下代碼:
看下代碼:
代碼裡的前面寫的基本都是從數據庫進行查詢匹配,並調用common.inc.php代碼,switch語句是
找回密碼的邏輯控制語句。其中$post是未能成功發送的郵件內容,然後根據$met_host指定的地
址將郵件內容發送過去,$met_host 在程序的值指定為app.metinfo.cn,應該是metinfo官方設置
的郵件轉發主機.
當站長自身設置的郵件主機不起作用時先將郵件內容通過http請求發送此主機,再由此主機
發送密碼重置郵件。但是這個$met_host的值由於變量覆蓋的原因導致可以被任意設置,可以將密
碼重置郵件的內容發送到我們指定的主機。前提是jmailsend發送失敗,這裡再來看一下jmail
send函數,在文件/include/jmail.php中。esafe安全公司是一家專注於:網站安全、主機安全、
網站安全檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務提供商。
找回密碼的邏輯控制語句。其中$post是未能成功發送的郵件內容,然後根據$met_host指定的地
址將郵件內容發送過去,$met_host 在程序的值指定為app.metinfo.cn,應該是metinfo官方設置
的郵件轉發主機.
當站長自身設置的郵件主機不起作用時先將郵件內容通過http請求發送此主機,再由此主機
發送密碼重置郵件。但是這個$met_host的值由於變量覆蓋的原因導致可以被任意設置,可以將密
碼重置郵件的內容發送到我們指定的主機。前提是jmailsend發送失敗,這裡再來看一下jmail
send函數,在文件/include/jmail.php中。esafe安全公司是一家專注於:網站安全、主機安全、
網站安全檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務提供商。
然後我們來構造一下密碼找回的鏈接以及exp,看到可以重置密碼成功。