php2shell-audit field: Windows menggunakan exe, Linux, py, 10 menit untuk mengetahui PHP.
Ini bukan tentang tikungan. Ini semua tentang mengetuk:Memuat alat, menjalankan mesin, membersihkan target, membaca kesimpulan, memutuskan apakah atau tidak untuk patchNaga. Sepuluh menit untuk menyelesaikan.
Pertama, CVE-2026-109618 dan CVE-2026-109619 tidak sah untuk mesin PHP itu sendiri, versi resmi dipulihkan 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12. Dua set kaliber...PHP resmi CVSS 4.0 mengalahkan 9.2, NVD CVSS 3.1 mengalahkan 9.89.8 dalam judul adalah yang terakhir, dan kedua merujuk ke yang sama dua- to- satu celah, tidak berpikir itu berbeda.
Berikut adalah alat:Vivipenclaw-code / php2shell- uditApache-2.0, hanya hari ini. Ia melakukan dua hal: memeriksa apa PPs dipasang pada mesin ini, menyapu versi yang belum ditemukan dari far- off badai.Ini tidak menyerang lalu lintas, tidak menulis disk, tidak mengubah konfigurasi apapun.Dan itulah yang saya periksa dalam kode sumber, dan mode remote benar-benar hanya mengirim satu permintaan HEAD untuk kepala respon.
Dua cara untuk melihat sistem mana kau berada.
Linux / MacOS pergi Python, ketergantungan nol, perpustakaan standar cukup, tidak ada pip untuk memuat apa pun:
git clone https://github.com/viviopenclaw-code/php2shell-audit.git
cd php2shell-audit
chmod +x php2shell_audit.py
python3 php2shell_audit.py --local
Jendela langsung menuju ke exe, tanpa Python. Ambil pada halaman rilis php2shell-audit.exe:
certutil -hashfile php2shell-audit.exe SHA256
php2shell-audit.exe --local
Exe adalah program konsol berkas tunggal yang tersedia Win10 / 11 x64,Tidak ada tanda tangan kode.Jadi lari pertama untuk SmartScreen akan berhenti. Ayo lari dulu. SHA256SUMS.txt Sekali lagi - langkah ini adalah salah satu di mana tidak ada yang menyentuh versi "hijau" yang sedang diedarkan secara online.
Dua versi dari parameter yang sama. Hanya satu set di belakang tutorial, Windows. python3 php2shell_audit.py Ganti php2shell-audit.exe Lakukan saja.
Apa yang terjadi?
python3 php2shell_audit.py --local
Ini akan melakukan empat hal, satu hal:
- Cari PHP.:
/usr/bin/php*Aku tidak tahu./usr/sbin/php-fpm*Aku tidak tahu./opt/*Aku tidak tahu./usr/lib/php/*/sapi/*Homebrew juga penting. Windows, check it out.C:\phpPHP dibawah XAMP, WAMP, Laragon, Chocolacey, Scoop, Program Files. - Versi BacaRun
php -vAmbil Banner, dengan 8.2.35 / 8.3.36 / 8.4,27 / 8.5.12. - Periksa Konfigurasi: parsing instruksi mitigasi sementara di pplinies.
- Proses Kolom: daftar semua karya yang harus dijalankan ulang setelah patch.
Aku menabrak mesin tanpa PHP. Berikut output:
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.
Perhatikan baris terakhir:Tak ada PHP, tak ada PASS.Desain ini sangat diakui dengan baik -- tidak ada masalah dalam menemukan sesuatu. Ini dua hal yang berbeda.
Omong-omong, itu terhubung. expose_php Semuanya. Yang satu ini tidak ada hubungannya dengan celah itu sendiri, tapi itu adalah keputusan langsung apakah scan jarak jauh dapat membaca nomor versi Anda.Matikan. Sidik jari penyerang setengah buta.Aku tidak tahu. Tentu saja, itu tidak disebut perbaikan, itu disebut mengurangi paparan informasi.
III. Parameter
| Parameter | Peran | Baku |
|---|---|---|
--local / --remote | Dua atau satu, kami memutuskan untuk memeriksa mesin atau target. | Diperlukan |
--file targets.txt | Batch target, satu dalam satu baris, # mulai dengan komentar | Nihil |
--workers N | Banyaknya kursus kontemporer jangka panjang | 10 |
--json report.json | Keluaran lengkap JSON,- Memukul ke stdout | Nihil |
--timeout N | Tenggat permintaan tunggal (detik) | 8 |
--insecure | Lewati verifikasi TLS, hanya untuk sidik jari | Tutup |
Keluar kode: langsung ke titik kartu CI
| Kode Keluar | Artinya |
|---|---|
0 | Tidak ditemukan versi yang terpengaruh |
2 | Setidaknya satu versi yang terpengaruh ditemukan. |
1 | Galat pada alat itu sendiri (misalnya. JSON tidak dapat menulis) |
Keluar nomor dua, ini adalah titik.Ini berarti Anda dapat memasukkannya ke dalam garis aliran, menyapu melalui fase konstruksi, memukulnya, dan tidak menunggu manusia untuk menemukannya.
iv. Sweeping remote: -remote how
# 单个目标
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
Apa? Tulis
# production fleet
example.com
https://shop.example.net
10.0.0.5:8080
# Mulai dengan catatan, satu baris, satu di gudang targets.example.txt Ini bisa disalin secara langsung.
Apa yang dia kirim?
Setiap tujuan.Kirim hanya satu permintaan HEAD, hanya sekali server menolak HeAD. Dan membacanya. Server:Aku tidak tahu.X-Powered-By: dan Set-CookieKeluar dari sana. PHP/x.y.zAku tidak tahu.
Tidak ada multipart, tidak ada tubuh besar, tidak ada OOM, tidak ada gunanya-setelah-bebas.Ia meninggal dalam catatan sumber sebagai kendala desain.Ini tidak acak.
Harganya harus jelas:Mode jarak jauh tidak membuktikan kemampuanHal ini hanya dapat melaporkan informasi bahwa server secara sukarela meludah keluar. Sembunyikan nomor versi target, dan hasilnya akan selalu UNKNOWN.
V. Bagaimana membaca kesimpulan
[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
- [VULNERABLE] Versi dibaca dan lebih rendah daripada versi yang dipulihkan.
- [PASS] Versi dibaca dan lebih besar dari atau sama dengan versi yang dipulihkan.
- [PERINGATAN] Instruksi mitigasi sementara tidak ditetapkan seperti yang disarankan.
- [TIDAK DIKENAL] Tidak cukup bukti.Tidak aman, tidak dikenal.
Perbedaan ini adalah di mana seluruh alat yang paling berharga. Kebanyakan pemindai hanya memberi Anda merah, kuning dan hijau, dan kemudian Anda berpikir itu seluruh layar.TIDAK DIKENAL harus dipertimbangkan untuk - lakukanEntah mematikan versi tersembunyi, dijalankan dalam wadah - lokal, atau log ke mesin.
Enam, empat lubang, satu lebih dari yang lain.
Pipa 1: UNKNOWN DICINAL
Host yang menyembunyikan nomor versi akan selalu melaporkan UNKNOWN. Pastikan itu hanya di mainframe. --localAku tidak tahu.
Pembebasan salah dilaporkan.
Debian / Ubuntu / RHEL / Alpine secara teratur panggilan dalam patch keselamatan tetapiJangan Lompat Nomor VersiAku tidak tahu. Hasilnya adalah mesin yang selesai, seperti yang terlihat.
Jadi jangan panik sampai Anda melihat merah.
apt changelog php8.4
rpm -q --changelog php-8.4 | head -50
Langkah ini, atau kegagalan untuk melakukannya, akan menjadi apa-apa selain eskalasi, juga akan menjadi salah perhitungan, yang merupakan kebutuhan nyata untuk upgrade.
Pit 3: Kepala juga diminta
Ini akan berada di log masing-masing, dan itu akan ditulis oleh WAF. Menyapu tanpa otorisasi tertulis adalah oleh alam deteksi tidak sah - hukum seperti CFAA, CMA Inggris 1990.
Aku butuh otorisasi untuk membersihkan aset perusahaanku.Secara khusus, persimpangan, perusahaan, rekening berbasis awan. Jangan berpikir, "Aku hanya melihat kepala respon" tidak masuk hitungan.
Pocket 4: -lokal hanya memeriksa mesin.
PHP berjalan di kontainer, berjalan dalam wadah, atau menggunakannya pada host. --remote Pelabuhan yang dipetakan. Host berjalan. --local Jika Anda tidak dapat menemukan PHP dalam wadah, Anda akan mendapatkan UNKNOWN - UNKNOWN benar-benar tidak tahu, tidak kontainer aman.
Tujuh, cari tahu ada masalah, lalu apa?
Mem-patch adalah satu-satunya perbaikan lengkap.Sisanya berdarah.
# Debian / Ubuntu
sudo apt update && sudo apt install --only-upgrade php
# RHEL / Fedora
sudo dnf upgrade 'php*'
# Alpine
sudo apk upgrade php83 php84
Upgrade: 8.2 branch ke 8.2.358,3 ke 8.3.36Ini 8.4. 8.4.27Ini 8.5. 8.5.12Aku tidak tahu. 8.1 dan seterusnya, hanya laporan tingkat sumber.
Jika Anda tidak bisa mendapatkan patch, melakukan ini pertama, kemudian mulai dari awal lagi.
; 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=0Untuk ditulis dalam php.ini, FPM alat atau konfigurasi server,Ini harus efektif sebelum permintaan.Aku tidak tahu. Sudah terlambat.memory_limit=-1Aku membutuhkannya.php_admin_valuePengaturan tingkat aplikasi tersebut tidak berubah, sementara memastikan bahwa tidak ada pool / directory / aplikasi untuk mengembalikan nilai terbatas.- Jangan pernah gunakan RLIMIT AS atau RLIMIT DATA- Kedua akan membuat Peta gagal dan hanya kembali -masukkan yang berbahaya jalur longjmp.
- Perubahan harus start ulang setiap pekerja:
systemctl restart php*-fpm apache2 nginxAku tidak tahu.Tidak ada restart tidak ada perubahan.
Tak satu pun dari empat dapat membuat Anda aman, dan pihak berwenang sendiri cukup jelas. Mereka hanya memiliki satu nilai:Sebelum kau menambal, tutup pintunya.
VIII. Urutan lengkap
- Periksa dirimu dulu.:
--localTiga atau lima detik, lihat versi dan konfigurasi. - Sapu batch remoteIni masalah besar.
--remote --fileDan lari dari JSON. - Pemrosesan klasifikasi: VULNERABLE upgrade, PERINGATAN mengisi, identifikasi UNKNOWN -Ini tidak ditutup, itu harus dilakukan.
- Upgrade + Restart Pekerja: Patch, dan kemudian restart semua FPM / Apache / nginx.
- Otentikasi MenyapuJalankan lagi, konfirmasikan hijau. Perhatikan kesalahan backport dan lihat changelog jika perlu.
- Dapatkan di garis air.: Keluar Kode 2 Direct gagal konstruksi, dan waktu berikutnya tidak ada yang akan ingat.
Seluruh proses adalah sepuluh menit, dan waktu sebenarnya adalah langkah ketiga.Periksa garis UNKNOWN.Aku tidak tahu. Tapi itu tidak akan menyimpannya, karena melewatkan itu, Anda mendapatkan laporan, cantik palsu, hijau.
Nilai dari pemindai tidak memberi Anda lampu hijau, itu memaksa Anda untuk mengakui di mana Anda tidak benar-benar tahu.
Replay alamat projek:Gythub.com / viviopenclaw-code / php2shell-uditAku tidak tahu. Baca DISLAIMER.md sebelum ditulis dalam bahasa Cina.
Kalimat terakhir mengingatkan saya bahwa alat ini adalah 1,0 hari ini, versi publik pertama, sebuah garpu nol tunggal, sejumlah kecil kode, Anda dapat membaca semuanya. php2shell_audit.pyAku tidak tahu.Lihat kode sumbernya., terutama jika Anda ingin membaca pp.ini dan daftar proses dengan izin administrator.