← 一覧に戻る

php2shell-audit フィールド: Windows は、exe、Linux、py、10 分で PHP を把握します。

itadol5j

ベンドについてではありません。 それはノックについてすべてです:ローディングツール、ランニングマシン、クリーニングターゲット、読書結論、パッチへのかどうかを決定するドラゴン。 完成まで10分。

まず、CVE-2026-109618 と CVE-2026-109619 は、PHP のエンジン自体の RCE を無許可で、公式の復元版は 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 です。 キャリブラーの2セット...PHP公式CVSS 4.0が9.2、NVD CVSS 3.1ビート9.8タイトルの9.8は後者であり、両方とも同じ2対1のループホールを参照して、それが異なるとは思えない。

ツールは次のとおりです。Vivipenclawコード/php2shell-udit今日はApache-2.0です。 2つのことを行います。このマシンにPHPがインストールされているかを確認し、遠方嵐の未発見バージョンを掃引します。トラフィックを攻撃せず、ディスクを書き込みません。設定は変更しません。ソースコードでチェックしたところ、リモートモードは、レスポンスヘッドの1つのHEADリクエストのみを送っています。

php2shell-uditターミナル実行効果

I. DIFTING: どのシステムにいるか確認する2つの方法。

Linux/MacOS は Python、ゼロの依存性、標準ライブラリが十分で、何も読み込むピップはありません。

git clone https://github.com/viviopenclaw-code/php2shell-audit.git
cd php2shell-audit
chmod +x php2shell_audit.py
python3 php2shell_audit.py --local

Windows は Python なしで exe に直進します。 リリースページでGrab php2shell-audit.exe: : :

certutil -hashfile php2shell-audit.exe SHA256
php2shell-audit.exe --local

Exe は Win10/11 x64 が利用できる単一のファイル コンソール プログラムです、コード署名はありません。なので、SmartScreen の最初の実行は停止します。 まずは実行してみましょう。 SHA256SUMS.txt もう一度 — このステップは、オンラインで循環されている「緑」バージョンに触れないものです。

同じパラメータの2つのバージョン。 チュートリアル、Windowsの背面に1セットだけ。 python3 php2shell_audit.py リプレース php2shell-audit.exe お問い合わせ

Linux および Windows のインストール方法

何が起こっていますか?

python3 php2shell_audit.py --local

4つのこと、1つのことを行います。

  1. PHP を検索します。: : :/usr/bin/php*お問い合わせ/usr/sbin/php-fpm*お問い合わせ/opt/*お問い合わせ/usr/lib/php/*/sapi/*Homebrewもカウントします。 Windowsは、それをチェックアウトします。 C:\phpXAMPP、WAMP、Laragon、Cocolatey、Scoop、プログラムファイルの下にPHP。
  2. 読書版: 実行 php -v バンナー、8.2.35 / 8.3.36 / 8.4.27 / 8.5.12
  3. 設定チェック: php.ini の中間の緩和命令を解析します。
  4. コラムプロセス: パッチの後に再起動しなければならないすべての作品をリストします。

私はPHPなしで機械の上に走った。 出力は次のとおりです。

php2shell-audit 1.1.0 - local audit
Host    : admin
System  : Linux 7.0.0-30-generic (x86_64)
------------------------------------------------------------------------
[UNKNOWN] No PHP installation detected.
------------------------------------------------------------------------
php.ini mitigation directives
[WARNING] session.upload_progress.enabled = (unset)  (recommended 0)
[WARNING] fatal_error_backtraces = (unset)  (recommended 0)
[WARNING] expose_php = (unset)  (recommended 0)
------------------------------------------------------------------------
Running services that must be restarted after patching
[INFO] apache2 - 3 process(es)
------------------------------------------------------------------------
[INFO] No PHP binary, FPM daemon or Apache PHP module was found on this host.
------------------------------------------------------------------------
Remediation
[UNKNOWN] No PHP install was audited, so nothing can be confirmed safe.

最後の行を見る:パスではなく、UNKNOWN です。この設計は非常によく認識されます - 何かを見つけることに問題はありません。 それは2つの異なることです。

ちなみに、それは接続されています。 expose_php お問い合わせ これは、ループホール自体で行うことは何もありませんが、リモートスキャンがバージョン番号を読むことができるかどうかを直接決定です。オフにします。 アッセイントの指紋は半分のブラインドです。お問い合わせ もちろん、修理ではなく、情報露出を削減するというわけです。

3。 パラメーター

php2shell-udit 引数の概要
パラメーターログインデフォルト
--local / --remote2つまたは1つ、私達は機械かターゲットを点検することを決定しました。お問い合わせ
--file targets.txtバッチターゲット、1列で1列、#コメントで開始なし
--workers N長期連結コース数10
--json report.json出力完全なJSON,- stdout にヒットなし
--timeout Nシングルタイムアウトリクエスト(秒)8
--insecure指紋認証をスキップします。ふりがな

出口コード:CIカードポイントに直接

出口コード意味する
0影響を受けるバージョンが見つかりません
2少なくとも1つの影響を受けたバージョンが見つかった。
1ツール自体のエラー(例えば、JSON は書きません)

数値2はポイントです。つまり、フローラインに置くことができ、構造段階を通し、それをヒットし、人間がそれを見つけるのを待つことができません。

iv. リモートを掃除: – 方法をリモート

# 单个目标
python3 php2shell_audit.py --remote example.com

# 批量,20 个并发,出 JSON
python3 php2shell_audit.py --remote --file targets.txt --workers 20 --json out.json

# 也可以直接写在命令行里
python3 php2shell_audit.py --remote https://a.example 10.0.0.5

お問い合わせ ログイン

# production fleet
example.com
https://shop.example.net
10.0.0.5:8080

# ノート、一線、倉庫の1つで始まる targets.example.txt 直接コピーすることができます。

送信したものは?

すべての目標。1つのHEADの要求だけを送って下さいサーバがHeADを拒否するだけ。 そしてそれを読んで下さい。 Server:お問い合わせX-Powered-By: そして、 Set-Cookieお問い合わせ PHP/x.y.zお問い合わせ

複数部無し、大体、OMMなし、無用。ソースノートで設計制約として死んだ。ランダムではありません。

価格は明確でなければなりません:リモートモードはユーザビリティを証明しませんサーバが自発的にスピートアウトする情報のみを報告できます。 バージョン番号のターゲットを非表示にして、結果は常にUNKNOWNになります。

V. 結論を読む方法

3つの結論の意味
[VULNERABLE] https://shop.example.net
         http    : 200
         server  : Apache/2.4.62 (Debian)
         powered : PHP/8.4.16
         php     : 8.4.16
         verdict : PHP 8.4.16 < fixed 8.4.27
  • 【対応可能】 バージョンは、復元されたバージョンよりも読み下げられました。
  • [パス] バージョンが読み込まれ、復元されたバージョンよりも大きくなります。
  • [警告] 暫定の緩和命令は提案されなかった。
  • [UNKNOWN] 十分な証拠。安全ではありません。

この区別は、ツール全体が最も価値のある場所です。 ほとんどのスキャナは、赤、黄色、緑のみを与え、画面上にあると思います。UNKNOWNは、隠しバージョンをオフにするか、コンテナで実行します。-ローカル、またはマシンにログオンします。

6、4ピット、もう1個。

php2shell-uditを使った4つのメモ

パイプ1:UNKNOWN をクリア

バージョン番号を隠したホストは、必ずUNKNOWNを報告します。 本体だけにあることを確認してください。 --localお問い合わせ

ポケット2:リリースが誤って報告されています。

Debian/Ubuntu/RHEL/Alpineは安全パッチで定期的に呼び出しますが、バージョン番号をジャンプしないお問い合わせ 結果は完成した機械です。

すると、赤が見えるまではパニックはしません。

apt changelog php8.4
rpm -q --changelog php-8.4 | head -50

このステップ、またはそうする失敗は何もないが、エスカレーションです。それはまた、アップグレードのための実質の必要性である誤った計算です。

ピット3:ヘッドもリクエスト

お互いのログに書かれ、WAFで書いていきます。 書面による許可なしに掃引することは、自然に無許可の検出です - CFAA、英国CMA 1990などの法律。

会社の資産をクリーンアップするための許可が必要です。特に、クロスセクター、クロスサブ会社、クラウドベースのアカウント。 「応答ヘッドを見ているだけじゃない」と思わないでください。

ポケット4:-ローカルは機械だけを点検します。

PHP はコンテナ内で実行し、コンテナ内で実行するか、ホスト上で使用します。 --remote 地図を抜いたポート。 ホストが実行されます。 --local コンテナに PHP が見つからない場合は、UNKNOWN -- コンテナが安全であるわけではありません。

七、問題が起きて、何か?

パッチは完全修理です。すべての残りは出血です。

# Debian / Ubuntu
sudo apt update && sudo apt install --only-upgrade php

# RHEL / Fedora
sudo dnf upgrade 'php*'

# Alpine
sudo apk upgrade php83 php84

アップグレード:8.2ブランチ 8.2.358.3 から 8.3.368.4 です。 8.4.278.5 です。 8.5.12お問い合わせ 8.1 以上、ソースレベルレポートのみ。

パッチを取得できない場合は、まずこれを行なってください。

; CVE-2026-109619
session.upload_progress.enabled = 0

; CVE-2026-109618
memory_limit = -1

; 仅 PHP 8.5
fatal_error_backtraces = 0
  • session.upload_progress.enabled=0 php.ini、FPM ツール、サーバの設定で書き込むには、リクエストの前に有効である必要があります。お問い合わせ 遅すぎる。
  • memory_limit=-1 お問い合わせ php_admin_value 限られた値を復元するプール/ディレクトリ/アプリケーションがないことを保証しながら、そのようなアプリケーションのレベル設定は変更されません。
  • RLIMIT AS または RLIMIT DATA を使用しないでください。- これらの2は、マップが失敗し、危険なロングジャンプパスを再入力するだけです。
  • 変更は、すべてのワーカーを再起動しなければなりません。systemctl restart php*-fpm apache2 nginxお問い合わせ再起動は変更されません。

これらの4つのうちどれも、安全を保ち、それ自体の当局は非常に明確です。 それらは1つの値だけを持っています:それをパッチする前に、ドアを覆います。

VIII. 完全なシーケンス

  1. まずはご確認下さい。: : :--local3〜5秒、バージョンと設定を参照してください。
  2. 遠隔バッチ掃引それは大きな取引です。--remote --file JSON から実行します。
  3. 分類処理:VULNERABLE アップグレード、警告補充、UNKNOWN 識別 --閉まらず、完了です。
  4. アップグレード+ワーカーの再起動: パッチは、すべての FPM/Apache/nginx を再起動します。
  5. 認証を強化: 再び実行し、緑を確認します。 必要に応じて、バックポートエラーを見て、変更履歴を見ます。
  6. ウォーターラインで入手してください。: Quitコード2 直接は構造に失敗し、次回は誰も記憶しません。

プロセス全体が10分、リアルタイムは3番目のステップです。UNKNOWNの線を確認してください。お問い合わせ しかし、それが保存するつもりではありません, それをスキップするので、, あなたはかなり得る, 偽物, グリーンレポート.

スキャナの値は、緑色のライトを与えていない、それはあなたが本当に知らない場所を認めるためにあなたを強制しています。

プロジェクトアドレスを再生:Gythub.com/viviopenclawコード/php2shell-uditお問い合わせ 中国語で書かれている前に DISSLAIMER.md を読みます。

最後の文は、このツールが今日の1.01、最初のパブリックバージョン、単一のゼロフォーク、小さなコード、それらをすべて読むことができることを思い出させます。 php2shell_audit.pyお問い合わせソースコードをご覧ください。特にphp.iniと管理者権限でプロセスリストを読みたい場合は特に。