PHP-FPM(バイパスopen_basedirの、結合SSRF)

環境のインストール- > https://www.cnblogs.com/zaqzzz/p/11870489.html

1.nginx奇形アクセス

)の必要性を手動で変更するよう:(低いバージョンをするときは、このような保護措置インストールは、php7.0されているため、

のみ.PHPでFPMの内部security.limit_extensionsデフォルトのファイルの実行

我々は/etc/php/7.0/fpm/pool.d/www.conf

Snipaste_2019-11-14_09-21-55.png

フロントのphp-fpm.conf security.limit_extensions文書内のセミコロンを削除し、値がnullに設定されているので、あなたが任意のファイルを実行できることを、FPMをオフにしようとするかもしれません。

cgi.fix_pathinfo、1への訪問を、このパラメータを:

ip:/*.*/.php例えばip/1.jpg/.php、ここでコンテンツ1.JPGは<PHPのphpinfo();? >

ので1.jpg/.php(彼は全体として)存在していませんが、理由cgi.fix_pathinfo、パラメータ/バック、見つけることができ1.JPGを削除し、我々がjpg PHPの実行として配置されます。

図の実行:

Snipaste_2019-11-14_09-02-44.png

2. FPM不正アクセス

原因:公共のインターネットのポート9000 FPMの暴露は、実際には、それだけでローカルのデフォルトのファイルにアクセスすることが可能です。

我々は/etc/php/7.0/fpm/pool.d/www.conf

Snipaste_2019-11-14_09-33-36.png

あなたは、このように構成されている場合:

Snipaste_2019-11-14_09-34-40.png

私たちは今、あなたが再現できるには、configureのアクセスに彼のIPを果たします。

スクリプトを定期https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75

python3 fpm.py IP /var/www/html/index.php -c "<PHPエコー?whoami;?>"

これがsecurity.limit_extensionsのデフォルトはこの構成だけが空の場合、あなたが任意の文書を返すことができ、PHPファイルが実行されることができますので、代替のindex.phpがあります。

python3 test.py IP / etc / passwdファイル

ここでの内容と出力しないpasswdの内容が、するphpinfo()の出力を行い、そして牛は、彼らが-cパラメータ、デフォルトの実行を追加していないので、お願いするブログのp下phpinfo();exit();のphpinfo(への復帰は)した後にのみ行う必要はありませんので、 。

コードを変更します。

Snipaste_2019-11-14_11-14-14.png

正常にファイルをお読みください。

Snipaste_2019-11-14_11-08-46.png

security.limit_extensionsだけのPHPファイルが実行されることができますが、Webディレクトリがあなたを爆破されていない、あなたも(ホストのphpファイルのいずれかを使用することができるかどうか、がありますfind / -name "*.php")。

仮定のルートディレクトリの存在という1.php

python3 fpm.py IP /1.php -c "<PHPエコー?whoami;?>"

open_basedirの制限の3.fpm不正アクセスの有無

ディレクトリのPHPへのアクセスのopen_basedirの制限

我々/etc/php/7.0/cli/php.ini

Snipaste_2019-11-15_21-22-03.png

再起動することを忘れないでください。

Snipaste_2019-11-14_10-55-26.png

ルートディレクトリにアクセスできないことが見出されました。

コードを変更します:phpの役割は、パラメータを変更することで、あなたはディレクトリにアクセスできるすべてのディレクトリです

Snipaste_2019-11-14_15-02-58.png

実行、およびそれが見つかりました。

4.ssrf + FPM不正

(SSRFの欠陥は、ここではアリクラウドセキュリティカット胡です)

FPMない外部オープンネットワークならば、我々は攻撃することができます(ここで、脆弱SSRFがある場合)SSRFで

そこssrf.phpと仮定

<?php
function curl($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_exec($ch);
    curl_close($ch); 
}
$url = $_GET['url'];
curl($url);
?>

Snipaste_2019-11-15_20-55-06.png

使用gopherusプロトコル攻撃:(スクリプトgithubの)

Snipaste_2019-11-15_20-49-44.png

最初のペイロードを符号化した後、今、エンコード時間は継続されます

げっぷ上

Snipaste_2019-11-15_21-00-25.png

Snipaste_2019-11-15_20-57-41.png

おすすめ

転載: www.cnblogs.com/zaqzzz/p/11870491.html