日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php %00,Nginx %00 null byte执行任意代码(php)漏洞

發(fā)布時間:2023/12/18 php 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php %00,Nginx %00 null byte执行任意代码(php)漏洞 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Ngnix在遇到%00空字節(jié)時與后端FastCGI處理不一致,導致可以在圖片中嵌入PHP代碼然后通過訪問abc.png%00.php來執(zhí)行其中的代碼,惡意攻擊者可以通過上傳包含執(zhí)行代碼的圖片文件來執(zhí)行有特殊目的的代碼。

影響版本:0.5.*, 0.6.*, 0.7 <= 0.7.65, 0.8

<= 0.8.37

nginx默認以cgi的方式支持php的運行,譬如在配置文件當中可以以

location ~ \.php$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

include fastcgi_params;

}

的方式支持對php的解析,location對請求進行選擇的時候會使用URI環(huán)境變量進行選擇,其中傳遞到后端Fastcgi的關(guān)鍵變量SCRIPT_FILENAME由nginx生成的$fastcgi_script_name決定,而通過分析可以看到$fastcgi_script_name是直接由URI環(huán)境變量控制的,這里就是產(chǎn)生問題的點。而為了較好的支持PATH_INFO的提取,在PHP的配置選項里存在cgi.fix_pathinfo選項,其目的是為了從SCRIPT_FILENAME里取出真正的腳本名。

那么假設(shè)存在一個http://www.aabc.com/aaxx.png,我們以如下的方式去訪問

將會得到一個URI

/aaxx.png/%00.php

經(jīng)過location指令,該請求將會交給后端的fastcgi處理,nginx為其設(shè)置環(huán)境變量SCRIPT_FILENAME,內(nèi)容為

/scripts/aaxx.png/%00.php

而在其他的webserver如lighttpd當中,我們發(fā)現(xiàn)其中的SCRIPT_FILENAME被正確的設(shè)置為

/scripts/%00.php

所以不存在此問題。

后端的fastcgi在接受到該選項時,會根據(jù)fix_pathinfo配置決定是否對SCRIPT_FILENAME進行額外的處理,一般情況下如果不對fix_pathinfo進行設(shè)置將影響使用PATH_INFO進行路由選擇的應用,所以該選項一般配置開啟。Php通過該選項之后將查找其中真正的腳本文件名字,查找的方式也是查看文件是否存在,這個時候?qū)⒎蛛x出SCRIPT_FILENAME和PATH_INFO分別為

/scripts/aabc.png和%00.php

最后,以/scripts/aabc.png作為此次請求需要執(zhí)行的腳本,攻擊者就可以實現(xiàn)讓nginx以php來解析任何類型的文件了。

POC:

訪問一個nginx來支持php的站點,在一個任何資源的文件如robots.txt后面加上/aaxx.php,這個時候你可以看到如下的區(qū)別:

訪問http://www.abcd.com/robots.txt

HTTP/1.1 200 OK

Server: nginx/0.6.32

Date: Thu, 20 May 2010 10:05:30 GMT

Content-Type: text/plain

Content-Length: 18

Last-Modified: Thu, 20 May 2010 06:26:34 GMT

Connection: keep-alive

Keep-Alive: timeout=20

Accept-Ranges: bytes

訪問http://www.abcd.com/robots.txt/%00.php

HTTP/1.1 200 OK

Server: nginx/0.6.32

Date: Thu, 20 May 2010 10:06:49 GMT

Content-Type: text/html

Transfer-Encoding: chunked

Connection: keep-alive

Keep-Alive: timeout=20

X-Powered-By: PHP/5.2.6

其中的Content-Type的變化說明了后端負責解析的變化,該站點就可能存在漏洞。

漏洞廠商:http://www.nginx.org

解決方案:

nginx升級到?0.7

>?0.7.65,

0.8?> 0.8.37

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的php %00,Nginx %00 null byte执行任意代码(php)漏洞的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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