GET /wp-json/wp/v2/posts/1獲取一個ID為1的單獨的Post:

可以看到ID為1的文章標題為Hello World,包括文章的路由也有。

路由

路由是用于訪問端點的“名稱”,在URL中使用(在非法情況下可控,就像這個漏洞一樣)。

例如,使用URLhttp://example.com/wp-json/wp/v2/posts/123:

路由(route)是wp/v2/posts/123,不包括wp-json,因為wp-json是API本身的基本路徑。

這個路由有三個端點:

GET觸發一個get_item方法,將post數據返回給客戶端。

PUT觸發一個update_item方法,使數據更新,并返回更新的發布數據。

DELETE觸發delete_item方法,將現在刪除的發布數據返回給客戶端。 靜態追蹤

知道了WP-API的路由信息以及其操作方式,可以根據其運行的思路來看一下具體實現的代碼。

我們看一下/wp-includes/rest-api/endpoints/class-wp-rest-post-controller.php:

根據上面的信息,我們可以知道這是注冊controller對象的路由,實現路由中端點方法。

在這里,如果我們向/wp-json/wp/v2/posts/1發送請求,則ID參數將被設置為1:

同時,注意一下這里:

可以看到在registerrestroute中對路由進行了正則限制:

也就是防止攻擊者惡意構造ID值,但是我們可以發現$GET和$POST值優先于路由正則表達式生成的值:

這邊沒有找到ID為123hh的項目,所以返回rest_invalid。

現在我們可以忽略路由正則的限制,來傳入我們自定義的ID。

接下來在審查各個端點方法中,找到了updateitem這個方法,及其權限檢查方法updateitempermissionscheck:

可以看到,此函數通過檢查文章是否實際存在,以及我們的用戶是否有權限編輯這邊文章來驗證請求。

但是當我們發送一個沒有響應文章的ID時,就可以通過權限檢查,并允許繼續執行對update_item方法的請求。

具體到代碼,就是讓$post為空,就可以通過權限檢查,接下來跟進get_post方法中看一下:

從代碼中可以看出,它是用wpposts中的getinstance靜態方法來獲取文章的,跟進wp_posts類,位于/wp-includes/class-wp-post.php中:

public static function get_instance( $post_id ) {  
global $wpdb;

if ( ! is_numeric( $post_id ) || $post_id != floor
( $post_id ) || ! $post_id ) {
return false;
}

回頭再看一下可執行方法upload_item:

public function update_item( $request ) {  

$id = (int) $request['id'];

$post = get_post( $id );

if ( empty( $id ) || empty( $post->ID ) || $this->post_type !== $post->post_type ) {
return new WP_Error( 'rest_post_invalid_id', __( 'Invalid post ID.' ), array( 'status' => 404 ) );
}

$post = $this->prepare_item_for_database( $request );

if ( is_wp_error( $post ) ) {
return $post;
}

// convert the post object to an array, otherwise wp_update_post will expect non-escaped input.

$post_id = wp_update_post( wp_slash( (array) $post ), true );

在這邊將ID參數裝換為一個整數,然后傳遞給get_post。而PHP類型轉換的時候回出現這樣的情況:

所以,也就是說,當攻擊者發起/wp-json/wp/v2/posts/1?id=1hhh請求時,便是發起了對ID為1的文章的請求。

下面為利用[exploit-db][2]上的POC來進行測試:

新建文章:

測試:

測試結果:

多想了一下

乍一看,感覺這個洞并沒有什么太大的影響,但是仔細想了一下,危害還是很大的。

先不說WordPress頁面執行php代碼的各種插件,還有相當一部分的WordPress文章可以調用短代碼的方式來輸出特定的內容,以及向日志中添加內容,這是一個思路。

另一個思路就是可以進行對原來文章中的指定超鏈接進行修改,從而進行釣魚。

還有一個思路,就是利用WordPress文章中解析html以及JavaScript文件包含的做法,輔助其他方法,進行攻擊。

0x03 diff比較

對于該漏洞,關鍵的修改在/wp-includes/class-wp-post.php中:

更改了對于$post_id的參數的傳入順序和判斷條件,防止了我們傳入數字+字母這樣的格式進行繞過。

0x04 修補方案

將WordPress更新到最新版本。

0x05 參考鏈接

https://www.seebug.org/vuldb/ssvid-92637

https://www.exploit-db.com/exploits/41223/

原文鏈接地址:http://paper.seebug.org/208/,點擊“閱讀原文”,即可進入。

本文章轉載微信公眾號@懸鏡安全說

熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業工程師共享工作效率翻倍的秘密
返回頂部
上一篇
釋放Spring Boot API中數字簽名的強大功能
下一篇
美芯片追蹤器背景下的 2025 副業平臺零信任 API 安全實戰
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
欧美一级生活片| 在线观看网站黄不卡| 大美女一区二区三区| a在线欧美一区| 欧美亚洲禁片免费| 一区二区三区中文在线| 国产一区二区不卡老阿姨| 国产精品一区二区视频| 日韩欧美www| 成人午夜电影久久影院| 亚洲欧美aⅴ...| 在线看国产一区二区| 亚洲色图都市小说| 成人av在线影院| 亚洲综合色噜噜狠狠| 99精品欧美一区二区三区综合在线| 成人精品国产福利| 亚洲国产成人va在线观看天堂| 欧美电影免费观看完整版| 国产成人精品网址| 亚洲精品美腿丝袜| 91亚洲国产成人精品一区二区三| 精品久久久久久久久久久久包黑料 | 精品亚洲国内自在自线福利| 久久精品一区二区| 国产乱子轮精品视频| 久久久www成人免费毛片麻豆 | 精品国产乱码久久久久久蜜臀| 国产91精品一区二区| 国产精品天干天干在线综合| 亚洲第一搞黄网站| 男女男精品网站| 夜夜嗨av一区二区三区网页| 欧美日韩三级一区| 成人综合婷婷国产精品久久蜜臀| 视频一区二区国产| 国产精品成人在线观看| 国产成a人无v码亚洲福利| 91在线观看高清| 国产精品一区二区黑丝| 日产国产高清一区二区三区| 欧美一区二区高清| 一区在线播放视频| 免费看欧美美女黄的网站| kk眼镜猥琐国模调教系列一区二区| 美女视频免费一区| 国产在线播放一区| 国产精品综合二区| 国产精品99久久久久久久女警| 精品一区二区三区免费视频| 正在播放一区二区| 日韩av高清在线观看| 国产自产2019最新不卡| 成人伦理片在线| 国产午夜精品理论片a级大结局| 亚洲国产精品成人久久综合一区| 欧美午夜片在线看| 亚洲国产精品人人做人人爽| 国产一区欧美二区| 久久婷婷综合激情| 三级久久三级久久久| 国产最新精品免费| 91精品在线麻豆| 欧美一区二区精品在线| 香蕉加勒比综合久久| 欧美三级资源在线| 亚洲在线视频一区| 色婷婷av一区| 婷婷国产在线综合| 欧美亚洲愉拍一区二区| 亚洲自拍偷拍九九九| 久久99久久精品欧美| 亚洲精品免费在线| 久久只精品国产| 波多野结衣亚洲| 国产精品蜜臀av| 91黄色免费看| 日本欧美肥老太交大片| 欧美猛男超大videosgay| 韩国欧美国产1区| 亚洲综合区在线| 亚洲精品综合在线| 欧美一卡2卡3卡4卡| 久久成人免费日本黄色| 欧美激情一区三区| 欧美日韩精品一二三区| 亚洲午夜成aⅴ人片| 蜜桃视频在线观看一区二区| 亚洲日本护士毛茸茸| 精品裸体舞一区二区三区| 麻豆成人久久精品二区三区红| 日韩天堂在线观看| 蜜臀久久久99精品久久久久久| 男男gaygay亚洲| 国产精品一区一区三区| 国产精品99久久久久| 国产呦萝稀缺另类资源| 91亚洲国产成人精品一区二区三 | 国产精品亚洲第一| 丝袜美腿亚洲一区| 中文字幕在线观看不卡视频| 69堂成人精品免费视频| 国产激情精品久久久第一区二区| jizzjizzjizz欧美| 欧美日韩五月天| 欧美午夜寂寞影院| 日韩欧美在线网站| 国产午夜精品福利| 欧美亚日韩国产aⅴ精品中极品| 欧美日韩极品在线观看一区| 国产一区二区91| 精品亚洲成a人在线观看| 色综合久久久久久久久| 国产女人18毛片水真多成人如厕| 精品人在线二区三区| 精品福利av导航| 国产精品毛片久久久久久久| 日韩精品欧美成人高清一区二区| 99视频一区二区三区| 色国产精品一区在线观看| 91国产免费看| 日韩一区二区三区四区五区六区| 综合激情成人伊人| 国产成人免费视频精品含羞草妖精| 韩国精品久久久| 欧美日本一区二区三区| 久久久久久久久久久久久久久99 | 国产欧美精品一区| 成人激情动漫在线观看| 久久久久久亚洲综合| 国产成人精品午夜视频免费| 国产日韩欧美精品一区| 一本色道久久综合狠狠躁的推荐| 日本色综合中文字幕| 国产欧美日韩在线| 欧美私模裸体表演在线观看| 欧美成人一区二区| 午夜欧美视频在线观看| 日本一区二区不卡视频| 欧美色大人视频| 欧美亚洲综合一区| 成人免费看片app下载| 日本午夜一区二区| 一区二区三区国产| 久久久久久久久久久久久夜| 一区二区三区欧美视频| 中文字幕日韩一区| 亚洲色图制服诱惑| 中文乱码免费一区二区| 2023国产精品视频| 日本一区二区三区国色天香 | 日本韩国精品一区二区在线观看| 青青草精品视频| 午夜精品久久久久久久久久久| 欧美激情自拍偷拍| 国产精品美女久久久久久久| 精品国产一区二区亚洲人成毛片 | 亚洲成人av在线电影| 色综合欧美在线视频区| 精品久久国产字幕高潮| 日韩av网站在线观看| 国产精品一线二线三线精华| 日韩欧美在线一区二区三区| 水蜜桃久久夜色精品一区的特点| 欧美探花视频资源| 美女网站一区二区| 日本一区二区免费在线| 久久99精品网久久| 天天操天天色综合| 色哟哟精品一区| 国产精品久久免费看| 久久99国产精品麻豆| 666欧美在线视频| 亚洲国产另类精品专区| 精品视频一区二区三区免费| 综合av第一页| 欧美系列在线观看| 日本一区二区视频在线| 国产成人综合亚洲91猫咪| 欧美一区二区三区四区在线观看| 国产精品成人网| 欧美影片第一页| 亚洲电影一级片| 欧美一级高清片| 国产精品一二一区| 亚洲日本青草视频在线怡红院| 97se亚洲国产综合自在线| 亚洲女同一区二区| 日韩一卡二卡三卡国产欧美| 激情五月激情综合网| 一区二区三区在线播| 精品福利在线导航| 91在线观看视频| 美美哒免费高清在线观看视频一区二区 | 欧美a一区二区| 国产亚洲污的网站| 717成人午夜免费福利电影| 欧美视频一区在线| 国产午夜久久久久| 亚洲成av人片一区二区梦乃|