lapangan php2shell-audit: Windows menggunakan exe, Linux, py, 10 menit untuk mencari tahu PHP.
Ini bukan tentang tikungan. Ini semua tentang ketukan:Memuat alat, menjalankan mesin, membersihkan sasaran, membaca kesimpulan, memutuskan apakah harus menambal atau tidakNaga. 10 menit lagi selesai.
Pertama, CVE-2026-109618 dan CVE-2026-109619 adalah RCE tidak sah untuk mesin PHP itu sendiri, versi resmi yang dipulihkan adalah 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12. Kaliber dua kaliber...PHP resmi CVSS 4.0 mengalahkan 9.2, NVD CVSS 3.1 mengalahkan 9.89.8 dalam judul adalah yang terakhir, dan keduanya merujuk pada celah dua-ke-satu yang sama, tidak berpikir itu berbeda.
Berikut adalah alat-alat:Vivipenclaw-code/php2shell-uditApache-2.0, hanya hari ini. Ia melakukan dua hal: periksa PHP apa yang dipasang pada mesin ini, menyapu versi badai yang belum ditemukan.Ia tidak menyerang lalu lintas, tidak menulis cakram, tidak mengubah konfigurasi apapun.Dan itulah yang saya telah periksa dalam kode sumber, dan mode jarak jauh benar-benar hanya mengirim satu permintaan HEAD untuk kepala respon.
Dua cara untuk melihat sistem mana yang Anda masuk
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
Windows pergi langsung ke exe, tanpa Python. Cekau di halaman rilis php2shell-audit.exeKANTOR:
certutil -hashfile php2shell-audit.exe SHA256
php2shell-audit.exe --local
Exe adalah program konsol berkas tunggal yang tersedia Win10/11 x64,Tidak ada kode tandatangan.Jadi lari pertama untuk SmartScreen akan berhenti. Ayo lari dulu. SHA256SUMS.txt Sekali lagi — langkah ini adalah satu di mana tidak ada yang menyentuh versi \"hijau\" yang sedang beredar di Internet.
2 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.KANTOR:
/usr/bin/php*Aku tidak tahu./usr/sbin/php-fpm*Aku tidak tahu./opt/*Aku tidak tahu./usr/lib/php/*/sapi/*Rumah kecil juga penting. Windows, coba lihat.C:\phpPHP di bawah XAMPP, WAMP, Laragon, Cokelat, Scoop, Berkas Program. - Versi Baca VersiLari
php -vBanner, dengan 8,2,35 / 8.3.36 / 8.4.27 / 8.5.12. - Konfigurasi CekPenguraian instruksi mitigasi interim di php.ini.
- Proses KolomDaftarkan semua karya yang harus dimulai kembali setelah patch.
Aku menabrak mesin tanpa PHP. Ini outputnya:
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.
Watch baris terakhir:Tak ada PHP, tak ada pass.Desain ini sangat dikenal dengan baik - tidak ada masalah dengan menemukan apa-apa. Dua hal yang berbeda.
Omong-omong, itu terhubung. expose_php Mereka semua. Yang satu ini tidak ada hubungannya dengan celah itu sendiri, tapi itu adalah keputusan langsung apakah pemindaian jarak jauh dapat membaca nomor versi Anda.Matikan. Sidik jari si penyerang setengah buta.Aku tidak tahu. Tentu saja, itu tidak disebut perbaikan, itu disebut mengurangi paparan informasi.
/ III. Parameter Fefter
| Parameter Fefter | Peranan | Default |
|---|---|---|
--local / --remote | Dua atau satu, kami memutuskan untuk memeriksa mesin atau target. | Diperlukan |
--file targets.txt | sasaran kinesis Batch, satu dalam satu baris, # mulai dengan komentar | None |
--workers N | Jumlah kata sandi jangka panjang | 10 |
--json report.json | JSON selesai,- Dipukul ke stdout | None |
--timeout N | Tenggat permintaan tunggal (detik) | 8 |
--insecure | verifikasi Skip TLS, hanya untuk sidik jari | Klon |
Kode keluar: langsung ke titik kartu CI
| Status | Arti |
|---|---|
0 | Tidak ada versi terpengaruh yang ditemukan |
2 | Setidaknya satu versi yang terkena dampak ditemukan. |
1 | Kesalahan pada alat itu sendiri (misalnya JSON tidak dapat menulis) |
Ini intinya.Ini berarti Anda dapat menempatkannya dalam garis aliran, menyapu melalui fase konstruksi, memukul, dan tidak menunggu manusia untuk menemukannya.
iv. Sweeping remote: –jauh bagaimana
# 单个目标
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? Write
# 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 dapat disalin secara langsung.
Apa yang dikirimnya?
Setiap gol.Hanya mengirim satu permintaan HEADHanya 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 use-after-free.Ia meninggal dalam catatan sumber sebagai kekangan desain.Ini tidak acak.
Harganya harus jelas:Mode jarak jauh tidak membuktikan kebolehgunaanIni hanya dapat melaporkan informasi bahwa server secara sukarela meludah keluar. Sembunyikan target nomor versi, dan hasilnya akan selalu tidak diketahui.
Cara membaca kesimpulannya
[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 tersebut dibaca dan lebih rendah dari versi yang dipulihkan.
- [PASS] Versi tersebut dibaca dan lebih besar atau sama dengan versi yang dipulihkan.
- [WARLING] Instruksi mitigasi interim ini tidak ditetapkan seperti yang disarankan.
- [tidak dikenal] Tak cukup bukti.Tidak aman, tidak diketahui.
Perbedaan ini adalah di mana seluruh alat paling berharga. Kebanyakan pengimbas hanya memberikan warna merah, kuning dan hijau, dan kemudian Anda berpikir itu seluruh layar.TIDAK DIKETAHUI harus dipertimbangkan untuk-melakukanEntah mematikan versi tersembunyi, berjalan di dalam kontainer - lokal, atau log pada mesin.
Enam, empat lubang, satu lebih dari yang lain.
Pape 1: Tidak dikenal LUAR
Host yang menyembunyikan nomor versi akan selalu melaporkan UNKNOWN. Pastikan itu hanya di mainframe. --localAku tidak tahu.
Pelepasan tidak dilaporkan.
Radio Debian / Ubuntu / RHEL / Alpine secara rutin menelepon dalam patch aman tetapiJangan Melompat ke Nomor VersiAku tidak tahu. Hasilnya adalah mesin yang sudah 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, tidak akan menjadi apa-apa kecuali eskalasi; itu juga akan menjadi kesalahan perhitungan, yang merupakan kebutuhan nyata untuk upgrade.
A HEAD juga diminta
Ini akan berada di log satu sama lain, dan akan ditulis oleh WAF. Sweeping tanpa otorisasi tertulis adalah oleh alam deteksi tanpa izin - hukum seperti CFAA, CMA UK 1990.
Aku butuh izin untuk membersihkan aset perusahaanku.Khususnya, lintas sektoral, lintas-sub-perusahaan, akun berbasis awan. Jangan berpikir, " Saya hanya melihat kepala respon" tidak dihitung.
Pocket 4:-lokal hanya memeriksa mesin.
PHPHP yang dijalankan dalam wadah, dijalankan dalam wadah, atau menggunakannya pada tuan rumah. --remote Pelabuhan yang dipetakan. Tuan rumah berlari. --local Jika Anda tidak dapat menemukan PHP di dalam kontainer, Anda akan mendapatkan UNKNOWN -- UNKNOWN benar-benar tidak tahu, tidak kontainer aman.
Tujuh, cari tahu ada masalah, lalu apa?
Patching 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 cabang ke 8.2.358.3 kepada 8.3.36Ini 8.4. 8.4.27Ini 8.5. 8.5.12Aku tidak tahu. Telapak 8.1 dan seterusnya, hanya laporan tingkat sumber.
Jika Anda tidak bisa mendapatkan patch, lakukan ini pertama, kemudian mulai 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 tool 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 yang terbatas.- Tidak pernah menggunakan RLIMIT AS atau RLIMIT DATA- Mereka berdua akan membuat Map gagal dan hanya masuk kembali ke jalan longjmp berbahaya.
- Saya harus mengubah setiap pekerja:
systemctl restart php*-fpm apache2 nginxAku tidak tahu.Tidak ada perubahan.
Tak satu pun dari empat ini bisa membuatmu aman, dan pihak berwenang sendiri sudah cukup jelas. Mereka hanya memiliki satu nilai:Sebelum kau menambalnya, tutup pintunya.
VIII. A urutan lengkap
- Periksa dirimu dulu.KANTOR:
--local2 atau 5 detik, lihat versi dan konfigurasinya. - Penyapuan kelompok jarak jauhIni masalah besar.
--remote --fileDan kehabisan JSON. - Pengolahan suku bangsaUpgrade yang tidak dapat diterima, pengisian kembali PERINGATAN, identifikasi tidak dikenal --Ini tidak tertutup, itu harus dilakukan.
- Pekerja Ulang Ulang Ulang-UpindoPatch, dan kemudian memulai ulang semua FPM/ Apache/ nginx.
- Otentikasi Resweep YogabelLari lagi, konfirmasi hijau. Apa yang harus dilakukan?
- Masuk ke saluran air.Keluar dari kode 2 konstruksi gagal langsung, dan lain kali tidak ada yang akan ingat.
Seluruh proses adalah sepuluh menit, dan waktu yang sebenarnya adalah langkah ketiga.Periksa garis UNKNOWN.Aku tidak tahu. Tapi itu tidak akan menyelamatkannya, karena melewatkannya, kau mendapatkan laporan hijau yang cantik, palsu.
Nilai dari scanner tidak memberikan lampu hijau, itu memaksa Anda untuk mengakui di mana Anda tidak benar-benar tahu.
Mainkan ulang alamat proyek:code-code/php2shell-uditAku tidak tahu. Í Baca DISSLAIMER.md sebelum ditulis dalam bahasa Tionghoa.
Kalimat terakhir mengingatkan saya bahwa alat ini adalah 1.1.0 hari ini, versi publik pertama, garpu nol tunggal, sejumlah kecil kode, Anda dapat membaca semuanya. php2shell_audit.pyAku tidak tahu.Lihat kode sumbernya.terutama jika anda ingin membaca php.ini dan daftar proses dengan izin administrator.