日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

wordpress漏洞_多个WordPress插件SQL注入漏洞分析

發(fā)布時間:2025/4/16 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 wordpress漏洞_多个WordPress插件SQL注入漏洞分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景

SQL注入漏洞是用來構(gòu)建SQL查詢的用戶輸入未經(jīng)適當(dāng)處理導(dǎo)致的漏洞。比如:

圖1: 使用WordPress的SQL查詢示例

從上面的代碼來看,其中存在SQL注入攻擊漏洞,因?yàn)閺?_GET中提取的$_id在傳遞給SQL查詢時沒有經(jīng)過任何處理。在最新的WordPress版本中,默認(rèn)會在$_POST/$_GET/$_REQUEST/$_COOKIE中加入了magic quotes。這可以幫助WordPress維護(hù),并提供最佳的安全能力。因此,上面的代碼其實(shí)是沒有漏洞的。

除了給所有輸入值加斜杠(slash)外,WordPress會提供許多內(nèi)置的處理函數(shù)來對輸入進(jìn)行處理,以確保輸出的安全。開發(fā)者可以使用sanitize_email()來處理郵件地址,或用sanitize_text_field()來清除文本域的值,或用sanitize_sql_orderby()來驗(yàn)證SQL ORDER BY clauses。用戶輸入最常見的類型是由WordPress sanitize_*()的類來涵蓋的。

雖然WordPress核心是盡最大可能來幫助開發(fā)者來防止惡意偽造的用戶輸入、不好的編碼實(shí)踐、誤用逃逸函數(shù)會導(dǎo)致簡單或關(guān)鍵的漏洞。

漏洞分析

FG-VD-19-092 – SQL Injection in AdRotate Plugin through 5.2 for WordPress

該漏洞是一個經(jīng)典SQL注入漏洞,存在于 AdRotate插件5.2版本中。漏洞位于dashboard/publisher/adverts-edit.php文件的第25行。

圖2:?adverts-edit.php中的SELECT statement用于從數(shù)據(jù)庫中獲取廣告

變量$ad_edit_id用于構(gòu)建SQL查詢。該變量是從函數(shù)adrotate_manage的變量$_GET中提取的。

圖3: 用戶控制的變量$ad_edit_id

因?yàn)閑sc_attr變量只能逃逸HTML屬性,在SQL查詢中$ad_edit_id變量無法用雙引號逃逸,因此可以注入payload到$ad_edit_id中來執(zhí)行任意的SQL語句。

圖4: AdRotate插件5.2泄漏的數(shù)據(jù)庫版本

因?yàn)楣芾斫涌谥粚芾韱T角色可用,缺乏CSRF token使非認(rèn)證的攻擊者可以遠(yuǎn)程竊取信息,包括session token,可以通過SQL注入漏洞以最小的用戶交互來引發(fā)XSS:

圖5: SQL注入引發(fā)的XSS

開發(fā)者的補(bǔ)丁中只是對查詢中的$ad_edit_id變量加了引號。

圖6: AdRotate 5.3版本中的SQL注入漏洞補(bǔ)丁

FG-VD-19-099 – SQL Injection in NextGEN Gallery Plugin through 3.2.10 for WordPress

NextGEN Gallery 插件提供了很完美的照片管理方法,操作也不復(fù)雜,從2007年開始就成為標(biāo)準(zhǔn)的WordPress照片管理插件,每年新下載量超過150萬。截止目前,NextGEN Gallery 插件的活躍安裝超過90萬,是照片管理插件中使用最多的之一。

該插件的AJAX API中存在漏洞,用戶可以在發(fā)布文章時從圖片庫中附件照片。

圖7: 用戶提供的輸入在get_displayed_gallery_entities_action中處理

modules/attach_to_post/package.module.attach_to_post.php中的函數(shù)get_displayed_gallery_entities_action是負(fù)責(zé)在特定的圖片庫中顯示圖片的。數(shù)組參數(shù) displayed_gallery是通過POST方法提取的以創(chuàng)建gallery對象,如第119行代碼所示。對象的屬性可以通過esc_sql幫助函數(shù)逃逸。然后調(diào)用第130行的get_entities,指向modules/nextgen_gallery_display/package.module.nextgen_gallery_display.php中的函數(shù)get_entities。

圖8:?get_entities根據(jù)返回的請求調(diào)用對應(yīng)的函數(shù)

因?yàn)榉祷卣埱笥衎oth值,因此第832行的_get_image_entities會被調(diào)用。

圖9:_get_image_entities獲取gallery中的所有圖像

該函數(shù)會準(zhǔn)備一個查詢來返回展示的gallery中的所有圖像。如第1041行所示,會使用一個基于來自創(chuàng)建的gallery對象的$sort_by和$sort_direction的排序過程。任意有權(quán)限使用NextGEN Gallery 的經(jīng)過認(rèn)證的用戶都可以操作params來創(chuàng)建gallery對象。雖然該對象的所有屬性都可以用esc_sql逃逸,但攻擊者并不需要逃逸引號就可以在ORDER BY語句中執(zhí)行SQL注入攻擊。因此,esc_sql無法預(yù)防NextGEN Gallery 被攻擊者利用的情況。

圖10: NextGEN Gallery中的SQL盲注

圖11: NextGEN Gallery中的SQL盲注2,false會返回空結(jié)果

發(fā)布的補(bǔ)丁中只允許ORDER BY語句中出現(xiàn)特定的值,因此查詢就是安全的。

圖12: Imagely通過白名單修復(fù)安全漏洞

FG-VD-19-098 – SQL Injection in Impress Give Plugin through 2.5.0 for WordPress

Give 是評分最高、下載量最多的wordpress插件。該插件的漏洞代碼位于includes/donors/class-give-donors-query.php的get_order_query函數(shù)中。

圖13: Give插件中的漏洞代碼

如注釋所示,get_order_query嘗試移除ORDER BY語句中不存在的列,通過使用esc_sql幫助函數(shù)來過濾排序的值。因?yàn)?67行中銷毀不存在的行后,會在第470行中重插入一個逃逸值,因此移除并不會如研究人員所想。許多人都知道esc_sql函數(shù)在預(yù)防ORDER BY語句中的SQL注入攻擊中是沒有用處的。因此,構(gòu)建的查詢中是有漏洞的。相同的SQL盲注技術(shù)可以用來利用該漏洞。

Impress 團(tuán)隊(duì)發(fā)布的1行補(bǔ)丁允許過濾器正常工作,因此查詢是安全的。

圖14: Give插件補(bǔ)丁

建議

為了預(yù)防開發(fā)WordPress插件過程中的SQL注入攻擊。研究人員建議開發(fā)者遵循WordPress編碼規(guī)范和安全編碼最佳實(shí)踐。研究人員建議:

· 不要信任任何用戶輸入。對用戶提供的所有數(shù)據(jù)執(zhí)行有效性檢查和處理。

·?如果不確定數(shù)據(jù)是不是安全的,應(yīng)用內(nèi)置的處理函數(shù)來適配數(shù)據(jù)。比如,sanitize_sql_orderby()就修復(fù)了所有發(fā)現(xiàn)的漏洞。

·?除了使用esc_sql,99%的case可以用預(yù)先準(zhǔn)備好的語句。

·?如果無法使用預(yù)先準(zhǔn)備好的語句,可以使用esc_sql和引號內(nèi)的逃逸值。

總結(jié)

以上是生活随笔為你收集整理的wordpress漏洞_多个WordPress插件SQL注入漏洞分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。