環境のインストール- > 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
フロントの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の実行として配置されます。
図の実行:
2. FPM不正アクセス
原因:公共のインターネットのポート9000 FPMの暴露は、実際には、それだけでローカルのデフォルトのファイルにアクセスすることが可能です。
我々は/etc/php/7.0/fpm/pool.d/www.conf
あなたは、このように構成されている場合:
私たちは今、あなたが再現できるには、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(への復帰は)した後にのみ行う必要はありませんので、 。
コードを変更します。
正常にファイルをお読みください。
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
再起動することを忘れないでください。
ルートディレクトリにアクセスできないことが見出されました。
コードを変更します:phpの役割は、パラメータを変更することで、あなたはディレクトリにアクセスできるすべてのディレクトリです
実行、およびそれが見つかりました。
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);
?>
使用gopherusプロトコル攻撃:(スクリプトgithubの)
最初のペイロードを符号化した後、今、エンコード時間は継続されます
げっぷ上