<var id="xpn71"></var>
<ins id="xpn71"></ins>
<cite id="xpn71"><noframes id="xpn71">
<ins id="xpn71"></ins>
<cite id="xpn71"></cite><del id="xpn71"></del> <var id="xpn71"><dl id="xpn71"></dl></var>
<ins id="xpn71"><span id="xpn71"><listing id="xpn71"></listing></span></ins>
<cite id="xpn71"><dl id="xpn71"></dl></cite><ins id="xpn71"></ins>
<thead id="xpn71"><dl id="xpn71"><progress id="xpn71"></progress></dl></thead>
<var id="xpn71"><dl id="xpn71"><listing id="xpn71"></listing></dl></var>
<listing id="xpn71"></listing>
<var id="xpn71"></var><cite id="xpn71"><dl id="xpn71"></dl></cite> <cite id="xpn71"><dl id="xpn71"></dl></cite><menuitem id="xpn71"><dl id="xpn71"><listing id="xpn71"></listing></dl></menuitem>
<progress id="xpn71"><ruby id="xpn71"><span id="xpn71"></span></ruby></progress>
<ins id="xpn71"></ins>
<cite id="xpn71"></cite>
<thead id="xpn71"></thead>
<cite id="xpn71"><video id="xpn71"><thead id="xpn71"></thead></video></cite>
<cite id="xpn71"></cite>
<ins id="xpn71"><dl id="xpn71"></dl></ins>
<thead id="xpn71"><dl id="xpn71"><address id="xpn71"></address></dl></thead>
<thead id="xpn71"></thead><cite id="xpn71"></cite>
<thead id="xpn71"></thead>
<cite id="xpn71"><dl id="xpn71"></dl></cite>
<ins id="xpn71"></ins><address id="xpn71"><i id="xpn71"><th id="xpn71"></th></i></address>

WordPress系統一個安全漏洞,其內核中任意刪除文件可導致執行任意代碼

WordPress   2018年07月03日 16:53  

作為網上最受歡迎的系統,WordPress系統覆蓋了曰生成的網站。如此多的用戶量,不免也叫很多網絡犯罪眼紅,成為被攻擊的目標。

有關WordPress內核中的一個任意文件刪除漏洞,可能會導致攻擊者執行任意代碼。所以此處只是對這一漏洞的公布,希望能得到各方重視,并盡快采取行動。

受影響的版本

在撰寫本文時,該漏洞仍然沒有補丁可用。并且,所有WordPress版本,包括當前的4.9.6版本在內,都面臨這個漏洞的威脅。

要想利用下面討論的這個漏洞,攻擊者需要事先獲得編輯和刪除媒體文件的權限。因此,該漏洞可用于通過接管角色與作者一樣低的帳戶或通過利用其他漏洞/錯誤配置來實現提權。

漏洞危害

利用這個漏洞,攻擊者能夠刪除WordPress安裝的任何文件(+ PHP服務器上的任何其他文件,即PHP進程有權刪除的,盡情刪就是了)。除了刪除整個WordPress安裝的可能性(如果當前沒有備份可用的話,將會導致災難性后果)之外,攻擊者還可以利用任意文件刪除功能繞過一些安全措施,繼而在Web服務器上執行任意代碼。更確切地說,攻擊者可以刪除下列文件:

.htaccess:通常情況下,刪除該文件不會有任何安全影響。但是,在某些情況下,.htaccess文件包含與安全相關的安全約束(例如,對某些文件夾的訪問限制),因此,刪除此文件后,相應的安全限制將會隨之消失。

index.php文件:通常情況下,一些空的index.php文件被放置到各個目錄中,以防止相應目錄中的內容被列出。刪除這些文件后,攻擊者就能夠列出受該方法保護的目錄中的所有文件。

wp-config.php:刪除這個WordPress安裝文件會在下次訪問該網站時觸發WordPress安裝過程。這是因為wp-config.php包含數據庫憑證,如果沒有它,WordPress的就會采取尚未安裝之前的操作。攻擊者可以刪除該文件,然后,使用為管理員帳戶選擇的憑據進行安裝,最后在服務器上執行任意代碼。

要了解詳情,請查看視頻:https://blog.ripstech.com/videos/wp-unlink.mp4

漏洞詳情

將未經過濾的用戶輸入傳遞給文件刪除函數時,就可能觸發任意文件刪除漏洞。對于PHP來說,當調用unlink()函數并且可能影響部分或整個參數$filename的用戶輸入沒有進行適當的過濾時,就可能出現這種情況;其中,該參數表示表要刪除的文件的路徑。

在WordPress Core中,引發這個漏洞的代碼位于wp-includes/post.php文件中:

在上面顯示的wp_delete_attachement()函數中,$ meta [‘thumb’]的內容未經任何過濾處理就直接傳遞給unlink()調用了。這段代碼的用途是,在刪除圖像的同時,一起將其縮略圖刪掉。在WordPress中,通過媒體管理器上傳的圖像將作為attachement類型的文章對待。值$meta [‘thumb’]是從數據庫中檢索的,在數據庫中,它保存在表示圖像的文章的自定義字段中。因此,在從數據庫檢索后,到傳遞給關鍵函數unlink()期間,并沒有對表示縮略圖文件名的值進行任何過濾或檢查。如果該值在保存到數據庫之前也沒有經過任何過濾,或過濾不充分的話——我們將在下一個代碼清單中看到這種情況——就可能出現一個兩階段的任意文件刪除漏洞。

/wp-admin/post.php文件:

后面的代碼片段(位于/wp-admin/post.php中)展示了隸屬于附件的縮略圖的文件名是如何保存到數據庫的。用戶輸入從$_POST [‘thumb’]中取出后,直到通過wp_update_attachment_metadata()保存到數據庫這段過程中,系統沒有對這些內容進行適當的安全過濾,因此,也就無法確保該值的確為正在編輯的附件的縮略圖。此外,由于$_POST [‘thumb’]的值可以將任意文件的路徑保存到WordPress上傳目錄相對路徑中,所以當附件被刪除時,該文件也會被刪除,如前面的代碼所展示的那樣。

臨時補丁

在撰寫本文的時候,WordPress中的這個漏洞仍未得到修復。正因為如此,我們已經開發了一個臨時補丁供大家使用。通過將該補丁添加到當前活動的主題/子主題的functions.php文件中,就可以將該補丁集成到現有的WordPress安裝中。

實際上,該補丁的工作原理就是,“鉤住”wp_update_attachement_metadata()調用,對提供給thumb的數據進行安全過濾,確保其中不包含任何使路徑遍歷成為可能的內容,這樣一來,攻擊者就無法刪除與安全相關的文件了。

當然,這里提供的補丁只是臨時性的,主要用來防止用戶收到惡意攻擊。由于我們無法兼顧WordPress插件的所有可能的向后兼容性問題,所以,建議您謹慎地對WordPress文件進行任何修改。

時間線

2017/11/20 ? ? 向Hackerone上的WordPress安全團隊報告該漏洞。

2017/11/22 ? ? 安全團隊對這個漏洞進行分類和驗證。

2017/12/12 ? ? 詢問進展。

2017/12/18 ? ? ?Wordpress正在開發一個補丁程序。我們詢問發布日期,但是沒有收到回應。

2018/01/09 ? ? 咨詢補丁的發布日期,依然沒有收到回復。

2018/01/20 ? ? 鑒于該安全問題的嚴重性和缺乏溝通,我們請求Hackerone進行調解。

2018/01/24 ? ?WordPress安全小組估計修復時間為6個月。

2018/05/24 ? ? 詢問有關問題的進展和/或計劃,并提醒他們盡快發布,但是沒有得到任何回應。

2018/05/24 ? ? 向安全團隊發送twitter DM,以確保他們不會忽視Hackerone上的消息。

2018/06/26 ? ? 漏洞提交7個月后,WordPress安全團隊仍未解決問題。

結束語

在這篇文章中,我們介紹了WordPress Core中的一個任意文件刪除漏洞,任何具有作者權限的用戶都能夠利用該漏洞來完全接管WordPress網站,繼而在服務器上執行任意代碼。盡管該漏洞去年就報告給了WordPress安全團隊,但截止撰寫本文時為止,他們仍然沒有對該漏洞進行修復。

為了提高對這個漏洞的認識,我們決定發布一些細節和相應的補丁。使用我們的安全分析方法,大家可以輕松發現該漏洞,我們確信這個問題已經為許多研究人員所了解。盡管用戶帳戶的要求對該漏洞的影響規模有一些影響,但共享多個用戶帳戶的站點,應該及時安裝相應的安全補丁。

下面是整理這篇漏洞發現發表的原文及文章翻譯:

原文:https://blog.ripstech.com/2018/wordpress-file-delete-to-code-execution/

翻譯:https://www.secpulse.com/archives/73019.html

有興趣的朋友可以繼續點開去看。

您或許對下面這些文章有興趣:                    本月吐槽辛苦排行榜

看貼要回貼有N種理由!看帖不回貼的后果你懂得的!


評論內容 (*必填):
(Ctrl + Enter提交)   

部落快速搜索欄

各類專題梳理

網站導航欄

X
?
返回頂部
<var id="xpn71"></var>
<ins id="xpn71"></ins>
<cite id="xpn71"><noframes id="xpn71">
<ins id="xpn71"></ins>
<cite id="xpn71"></cite><del id="xpn71"></del> <var id="xpn71"><dl id="xpn71"></dl></var>
<ins id="xpn71"><span id="xpn71"><listing id="xpn71"></listing></span></ins>
<cite id="xpn71"><dl id="xpn71"></dl></cite><ins id="xpn71"></ins>
<thead id="xpn71"><dl id="xpn71"><progress id="xpn71"></progress></dl></thead>
<var id="xpn71"><dl id="xpn71"><listing id="xpn71"></listing></dl></var>
<listing id="xpn71"></listing>
<var id="xpn71"></var><cite id="xpn71"><dl id="xpn71"></dl></cite> <cite id="xpn71"><dl id="xpn71"></dl></cite><menuitem id="xpn71"><dl id="xpn71"><listing id="xpn71"></listing></dl></menuitem>
<progress id="xpn71"><ruby id="xpn71"><span id="xpn71"></span></ruby></progress>
<ins id="xpn71"></ins>
<cite id="xpn71"></cite>
<thead id="xpn71"></thead>
<cite id="xpn71"><video id="xpn71"><thead id="xpn71"></thead></video></cite>
<cite id="xpn71"></cite>
<ins id="xpn71"><dl id="xpn71"></dl></ins>
<thead id="xpn71"><dl id="xpn71"><address id="xpn71"></address></dl></thead>
<thead id="xpn71"></thead><cite id="xpn71"></cite>
<thead id="xpn71"></thead>
<cite id="xpn71"><dl id="xpn71"></dl></cite>
<ins id="xpn71"></ins><address id="xpn71"><i id="xpn71"><th id="xpn71"></th></i></address>
青海快三昨天
<var id="xpn71"></var>
<ins id="xpn71"></ins>
<cite id="xpn71"><noframes id="xpn71">
<ins id="xpn71"></ins>
<cite id="xpn71"></cite><del id="xpn71"></del> <var id="xpn71"><dl id="xpn71"></dl></var>
<ins id="xpn71"><span id="xpn71"><listing id="xpn71"></listing></span></ins>
<cite id="xpn71"><dl id="xpn71"></dl></cite><ins id="xpn71"></ins>
<thead id="xpn71"><dl id="xpn71"><progress id="xpn71"></progress></dl></thead>
<var id="xpn71"><dl id="xpn71"><listing id="xpn71"></listing></dl></var>
<listing id="xpn71"></listing>
<var id="xpn71"></var><cite id="xpn71"><dl id="xpn71"></dl></cite> <cite id="xpn71"><dl id="xpn71"></dl></cite><menuitem id="xpn71"><dl id="xpn71"><listing id="xpn71"></listing></dl></menuitem>
<progress id="xpn71"><ruby id="xpn71"><span id="xpn71"></span></ruby></progress>
<ins id="xpn71"></ins>
<cite id="xpn71"></cite>
<thead id="xpn71"></thead>
<cite id="xpn71"><video id="xpn71"><thead id="xpn71"></thead></video></cite>
<cite id="xpn71"></cite>
<ins id="xpn71"><dl id="xpn71"></dl></ins>
<thead id="xpn71"><dl id="xpn71"><address id="xpn71"></address></dl></thead>
<thead id="xpn71"></thead><cite id="xpn71"></cite>
<thead id="xpn71"></thead>
<cite id="xpn71"><dl id="xpn71"></dl></cite>
<ins id="xpn71"></ins><address id="xpn71"><i id="xpn71"><th id="xpn71"></th></i></address>
<var id="xpn71"></var>
<ins id="xpn71"></ins>
<cite id="xpn71"><noframes id="xpn71">
<ins id="xpn71"></ins>
<cite id="xpn71"></cite><del id="xpn71"></del> <var id="xpn71"><dl id="xpn71"></dl></var>
<ins id="xpn71"><span id="xpn71"><listing id="xpn71"></listing></span></ins>
<cite id="xpn71"><dl id="xpn71"></dl></cite><ins id="xpn71"></ins>
<thead id="xpn71"><dl id="xpn71"><progress id="xpn71"></progress></dl></thead>
<var id="xpn71"><dl id="xpn71"><listing id="xpn71"></listing></dl></var>
<listing id="xpn71"></listing>
<var id="xpn71"></var><cite id="xpn71"><dl id="xpn71"></dl></cite> <cite id="xpn71"><dl id="xpn71"></dl></cite><menuitem id="xpn71"><dl id="xpn71"><listing id="xpn71"></listing></dl></menuitem>
<progress id="xpn71"><ruby id="xpn71"><span id="xpn71"></span></ruby></progress>
<ins id="xpn71"></ins>
<cite id="xpn71"></cite>
<thead id="xpn71"></thead>
<cite id="xpn71"><video id="xpn71"><thead id="xpn71"></thead></video></cite>
<cite id="xpn71"></cite>
<ins id="xpn71"><dl id="xpn71"></dl></ins>
<thead id="xpn71"><dl id="xpn71"><address id="xpn71"></address></dl></thead>
<thead id="xpn71"></thead><cite id="xpn71"></cite>
<thead id="xpn71"></thead>
<cite id="xpn71"><dl id="xpn71"></dl></cite>
<ins id="xpn71"></ins><address id="xpn71"><i id="xpn71"><th id="xpn71"></th></i></address>