CVE-2013-4547 文件名邏輯漏洞

搭建環境,訪問 8080 端口

漏洞說明:

Nginx: Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。其特點是占有內存少,并發能力強,事實上nginx的并發能力在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。

影響版本:0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7

原理:
此漏洞可導致目錄跨越及代碼執行, 其主要原因是錯誤地解析了請求的URI,
錯誤地獲取到用戶請求的文件名,導致出現權限繞過、代碼執行的連帶影響。
舉個例子,比如,Nginx匹配到.php結尾的請求,就發送給fastcgi進行解析,常見的寫法下:

location ~ \.php$ {include        fastcgi_params;fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;fastcgi_param  DOCUMENT_ROOT /var/www/html;
}

正常情況下(關閉pathinfo的情況下),只有.php后綴的文件才會被發送給fastcgi解析。而存在
CVE-2013-4547的情況下,我們請求 1.gif[0x20][0x00].php ,這個URI可以匹配上正則 .php$,
可以進入這個Location塊;但進入后,由于fastcgi在查找文件時被\0截斷,Nginx卻錯誤地認為
請求的文件是1.gif[0x20],就設置其為SCRIPT_FILENAME的值發送給fastcgi。

fastcgi根據SCRIPT_FILENAME的值進行解析,最后造成了解析漏洞。
所以,我們只需要上傳一個空格結尾的文件,即可使PHP解析之。
再舉個例子,比如很多網站限制了允許訪問后臺的IP
location /admin/ { allow 127.0.0.1; deny all;}
我們可以請求如下URI:/test[0x20]/…/admin/index.php,這個URI不會匹配上location后面的/admin/,
也就繞過了其中的IP驗證;但最后請求的是 /test[0x20]/…/admin/index.php 文件,也就是/admin/index.php,
成功訪問到后臺。(這個前提是需要有一個目錄叫test:這是Linux系統的特點,如果有一個不存在的目錄,
則即使跳轉到上一層,也會爆文件不存在的錯誤,Windows下沒有這個限制)

當我們通過例如下列方式進行 URL 訪問限制的時候,如果攻擊者使用一些沒經過轉義的空格字符(無效的 HTTP 協議,但從 Nginx 0.8.41 開始因為考慮兼容性的問題予以支持)那么這個限制可能無效:

location /protected/ {deny all;}

當請求的是 “/foo /…/protected/file” 這樣的 URL (靜態文件,但 foo 后面有一個空格結尾) 或者是如下的配置:

location ~ \.php$ {fastcgi_pass ...}

當我們請求 “/file \0.php” 時就會繞過限制。

漏洞復現:

上傳一個php文件:由于環境對php文件有黑名單過濾
會顯示文件類型不支持
在這里插入圖片描述
利用CVE-2013-4547 ,上傳一個jpg,注意后綴名帶空格

在這里插入圖片描述上傳成功,接下來構造00截斷來構造Nginx解析漏洞,將shell.jpg 解析成php文件,

訪問

http://【IP】:8080/uploadfiles/shell.jpg .php

結果是訪問不到
在這里插入圖片描述
原因在于將空格編碼成了 %20 ,服務器沒有shell.jpg%20 這個文件

在這里插入圖片描述
在16進制下將第二個空格改為00,即 “空格” -> “\0”

在這里插入圖片描述
就會執行 命令

防護:

該問題已經在 Nginx 1.5.7 和 1.4.4 版本中修復。

補丁程序在:
http://nginx.org/download/patch.2013.space.txt

--- src/http/ngx_http_parse.c
+++ src/http/ngx_http_parse.c
@@ -617,6 +617,7 @@ ngx_http_parse_request_line(ngx_http_reqdefault:r->space_in_uri = 1;state = sw_check_uri;
+                p--;break;}break;
@@ -670,6 +671,7 @@ ngx_http_parse_request_line(ngx_http_reqdefault:r->space_in_uri = 1;state = sw_uri;
+                p--;break;}break;

配置上臨時的解決辦法是:

if ($request_uri ~ " ") {return 444;}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532567.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532567.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532567.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CMake指令入門 ——以構建OpenCV項目為例

CMake指令入門 ——以構建OpenCV項目為例 轉自:https://blog.csdn.net/sandalphon4869/article/details/100589747 一、安裝 sudo apt-get install cmake安裝好后,輸入 cmake -version如果出現了cmake的版本顯示,那么說明安裝成功 二、c…

CVE-2017-7529Nginx越界讀取緩存漏洞POC

漏洞影響 低危,造成信息泄露,暴露真實ip等 實驗內容 漏洞原理 通過查看patch確定問題是由于對http header中range域處理不當造成,焦點在ngx_http_range_parse 函數中的循環: HTTP頭部range域的內容大約為Range: bytes4096-81…

Linux命令行性能監控工具大全

Linux命令行性能監控工具大全 作者:Arnold Lu 原文:https://www.cnblogs.com/arnoldlu/p/9462221.html 關鍵詞:top、perf、sar、ksar、mpstat、uptime、vmstat、pidstat、time、cpustat、munin、htop、glances、atop、nmon、pcp-gui、collect…

Weblogic12c T3 協議安全漏洞分析【CVE-2020-14645 CVE-2020-2883 CVE-2020-14645】

給個關注?寶兒! 給個關注?寶兒! 給個關注?寶兒! 關注公眾號:b1gpig信息安全,文章推送不錯過 ## 前言 WebLogic是美國Oracle公司出品的一個application server,確切的說是一個基于JAV…

Getshell總結

按方式分類: 0x01注入getshell: 0x02 上傳 getwebshell 0x03 RCE getshell 0x04 包含getwebshell 0x05 漏洞組合拳getshell 0x06 系統層getcmdshell 0x07 釣魚 getcmdshell 0x08 cms后臺getshell 0x09 紅隊shell競爭分析 0x01注入getshell:…

編寫可靠bash腳本的一些技巧

編寫可靠bash腳本的一些技巧 原作者:騰訊技術工程 原文鏈接:https://zhuanlan.zhihu.com/p/123989641 寫過很多 bash 腳本的人都知道,bash 的坑不是一般的多。 其實 bash 本身并不是一個很嚴謹的語言,但是很多時候也不得不用。以下…

python 到 poc

0x01 特殊函數 0x02 模塊 0x03 小工具開發記錄 特殊函數 # -*- coding:utf-8 -*- #內容見POC.demo; POC.demo2 ;def add(x,y):axyprint(a)add(3,5) print(------------引入lambad版本:) add lambda x,y : xy print(add(3,5)) #lambda函數,在lambda函數后面直接…

protobuf版本常見問題

protobuf版本常見問題 許多軟件都依賴 google 的 protobuf,我們很有可能在安裝多個軟件時重復安裝了多個版本的 protobuf,它們之間很可能出現沖突并導致在后續的工作中出現版本不匹配之類的錯誤。本文將討論筆者在使用 protobuf 中遇到的一些問題&#…

CMake常用命令整理

CMake常用命令整理 轉自:https://zhuanlan.zhihu.com/p/315768216 CMake 是什么我就不用再多說什么了,相信大家都有接觸才會看一篇文章。對于不太熟悉的開發人員可以把這篇文章當個查找手冊。 1.CMake語法 1.1 指定cmake的最小版本 cmake_minimum_r…

CVE-2021-41773 CVE-2021-42013 Apache HTTPd最新RCE漏洞復現 目錄穿越漏洞

給個關注?寶兒! 給個關注?寶兒! 給個關注?寶兒! CVE-2021-41773漏洞描述: Apache HTTPd是Apache基金會開源的一款流行的HTTP服務器。2021年10月8日Apache HTTPd官方發布安全更新,披…

SSRF,以weblogic為案例

給個關注?寶兒! 給個關注?寶兒! 給個關注?寶兒! 復習一下ssrf的原理及危害,并且以weblog的ssrf漏洞為案例 漏洞原理 SSRF(Server-side Request Forge, 服務端請求偽造) 通常用于控制web進而…

C++11 右值引用、移動語義、完美轉發、萬能引用

C11 右值引用、移動語義、完美轉發、引用折疊、萬能引用 轉自:http://c.biancheng.net/ C中的左值和右值 右值引用可以從字面意思上理解,指的是以引用傳遞(而非值傳遞)的方式使用 C 右值。關于 C 引用,已經在《C引用…

C++11 std::function, std::bind, std::ref, std::cref

C11 std::function, std::bind, std::ref, std::cref 轉自&#xff1a;http://www.jellythink.com/ std::function 看看這段代碼 先來看看下面這兩行代碼&#xff1a; std::function<void(EventKeyboard::KeyCode, Event*)> onKeyPressed; std::function<void(Ev…

Java安全(一) : java類 | 反射

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 1.java基礎 Java平臺共分為三個主要版本Java SE&#xff08;Java Platform, Standard Edition&#xff0c;Java平臺標準版&#xff09;、Java EE&#xff0…

LeetCode-287 尋找重復數 二分法

LeetCode-287 尋找重復數 二分法 287. 尋找重復數 給定一個包含 n 1 個整數的數組 nums &#xff0c;其數字都在 1 到 n 之間&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一個重復的整數。 假設 nums 只有 一個重復的整數 &#xff0c;找出 這個重復的數 。…

對某公司一次弱口令到存儲型xss挖掘

轉自我的奇安信攻防社區文章:https://forum.butian.net/share/885 免責聲明: 滲透過程為授權測試,所有漏洞均以提交相關平臺,博客目的只為分享挖掘思路和知識傳播** 涉及知識: xss注入及xss注入繞過 挖掘過程: 某次針對某目標信息搜集無意發現某工程公司的項目招標平臺 …

C++11新特性選講 語言部分 侯捷

C11新特性選講 語言部分 侯捷 本課程分為兩個部分&#xff1a;語言的部分和標準庫的部分。只談新特性&#xff0c;并且是選講。 本文為語言部分筆記。 語言 Variadic Templatesmove semanticsautoRange-based for loopInitializer listLambdas… 標準庫 type_traitsunodered…

java安全(二):JDBC|sql注入|預編譯

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 1 JDBC基礎 JDBC(Java Database Connectivity)是Java提供對數據庫進行連接、操作的標準API。Java自身并不會去實現對數據庫的連接、查詢、更新等操作而是通…

java安全(三)RMI

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 1.RMI 是什么 RMI(Remote Method Invocation)即Java遠程方法調用&#xff0c;RMI用于構建分布式應用程序&#xff0c;RMI實現了Java程序之間跨JVM的遠程通信…

LeetCode-726 原子的數量 遞歸

LeetCode-726 原子的數量 遞歸 題目鏈接&#xff1a;LeetCode-726 原子的數量 給你一個字符串化學式 formula &#xff0c;返回 每種原子的數量 。 原子總是以一個大寫字母開始&#xff0c;接著跟隨 0 個或任意個小寫字母&#xff0c;表示原子的名字。 如果數量大于 1&#xf…