← Listeye dön

php2shell-audit alanı: Windows exe, Linux, py, PHP'yi bulmak için 10 dakika kullanır.

itadol5j

Bu virajlar hakkında değil. Bu tüm knocks hakkında:Araçlar Yükleniyor, çalışan makineler, temizlik hedefleri, okuma sonuçları, ya da yamamayı karar vermeBir ejderha. bitirmek için on dakika.

İlk olarak, CVE-2026-109618 ve CVE-2026-109619 PHP motoru için izinsiz RCE, resmi restore sürüm 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12. İki set kalibre...PHP resmi CVSS 4.0 9.2, NVD CVSS 3.1 yen 9.89.8 başlıkta ikincisidir ve her ikisi de aynı iki döngü dene atıfta bulunur, bunun farklı olduğunu düşünmez.

İşte araçlar:Vivipenclaw-code/php2shell-uditApache-2.0, sadece bugün. Bu iki şey yapar: PHP'lerin bu makinede ne yüklü olduğunu kontrol edin, uzak fırtınanın keşfedilmemiş versiyonunu süpür.Trafik saldırmaz, disk yazmıyor, herhangi bir yapılandırmayı değiştirmez.Ve bu kaynak kodunda kontrol ettiğim şey ve uzaktan mod gerçekten sadece bir yanıt başı için bir HEAD isteği gönderiyor.

php2shell-udit terminal running effects

I. DIFTING: Hangi sistemi olduğunu görmek için iki yol.

Linux / MacOS Python'a gidiyor, sıfır bağımlılık, standart kütüphane yeterli, hiçbir şeyi yüklemek için boru yok:

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 olmadan doğrudan eskiye gider. Kaldırım sayfasında php2shell-audit.exe:

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

Exe, Win10/11 x64'in mevcut olduğu tek bir dosya konsol programıdır.Hiçbir kod imzası yok.Bu yüzden SmartScreen için ilk koşmak duracaktır. Önce koşalım. SHA256SUMS.txt Bir kez daha - bu adım, kimsenin online dolaşımda bulunan “yeşil” versiyonuna dokunmadığı bir şeydir.

Aynı parametrelerin iki versiyonu. Sadece bir tanesi öğreticinin gerisinde, Windows. python3 php2shell_audit.py Değişimi Değiştirin php2shell-audit.exe Sadece bunu yapın.

Linux ve Windows yükleme yöntemleri

Ne oluyor?

python3 php2shell_audit.py --local

Dört şey yapacak, bir şey:

  1. PHP'yi bulun.:/usr/bin/php*Bilmiyorum./usr/sbin/php-fpm*Bilmiyorum./opt/*Bilmiyorum./usr/lib/php/*/sapi/*Homebrew da sayılıyor. Windows, kontrol edin. C:\phpXAMPP altında PHP, WAMP, Laragon, Chocolatey, Scoop, Program Files.
  2. Read Version: Run: php -v 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12.
  3. Check Build: php.ini'deki geçici masyon talimatlarını reddediyor.
  4. Köşe Süreci: yamadan sonra yeniden başlatılması gereken tüm işler listesi.

PHP olmadan bir makine üzerinde koştum. İşte çıktı:

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.

Son çizgiyi izleyin:PHP yok UNKNOWN, PASS yok.Bu tasarım çok iyi tanınmalıdır - hiçbir şey bulmakla sorun yoktur. Bu iki farklı şey.

Bu arada, bağlantılı. expose_php Hepsi. Bu, döngünün kendisi ile ilgisi yoktur, ancak uzaktan bir taramanın sürüm numaranızı okuyabileceği konusunda doğrudan bir karardır.Turn it off. Assailant'ın parmak izleri yarı kördür.Bilmiyorum. Tabii ki, onarım olarak adlandırılmıyor, bilgi maruziyeti azaltmaya çağrıldı.

III. Parametreler

php2shell-udit argument overview
ParametrelerRol RolüTembel
--local / --remoteİki ya da bir, makineyi veya hedefi kontrol etmeye karar verdik.Gerekli Gerekli Gerekli Gerekli Gerekli Gerekli Gerekli
--file targets.txtBatch hedefi, bir satırda biri, # Yorumla başlayınHiçbir şey yok
--workers NUzun süreli koncurrent kursların sayısı10
--json report.jsonÇıktı tam JSON,- VdoutHiçbir şey yok
--timeout NSingle request timeout (sec)8
--insecureTLS doğrulamasına rağmen, sadece parmak izi içinClose Close Close Close Close

Çıkış kodu: CI kart noktasına doğrudan

Çıkış KoduAnlam
0Elde edilen sürüm bulunamadı
2En az etkilenen bir versiyon bulundu.
1Aracın kendisi için hata (örneğin g. JSON yazamaz)

Oldukça iki numara, bu nokta.Bu, onu akış çizgisinde koyabileceğiniz anlamına gelir, onu inşaat aşamasıyla süpür, vur ve bunu bulmak için insanları beklemeyin.

iv. Sweeping uzaktan: –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

Ne? Write Write Write Write

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

# Bir notla başlayın, bir çizgi, depoda biri targets.example.txt Doğrudan kopyalanabilir.

Ne gönderdi?

Her hedef.Sadece bir HEAD isteği gönderinAncak bir kez sunucu HeAD'ı reddeder. Ve bunu okuyun. Server:Bilmiyorum.X-Powered-By: ve Set-CookieOradan çık. PHP/x.y.zBilmiyorum.

Çok fazla bölüm yok, büyük bir vücut yok, OOM yok, bundan sonrası.Bir tasarım kısıtlaması olarak kaynak notunda öldü.Bu rastgele değil.

Fiyat açık olmalıdır:Uzak mod biziability kanıtlamıyorSadece sunucunun gönüllü olarak ortaya çıkardığı bilgileri rapor edebilir. Sürüm numarasının hedefini dinleyin ve sonuç her zaman UNKNOWN olacaktır.

V. Sonuçları nasıl okuyacaksınız

Üç sonucun anlamı
[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
  • [VULNER] Versiyon okunmuştu ve restore sürümden daha düşüktü.
  • [PASS] Versiyon okunmuştu ve restore sürüme eşit veya daha büyük.
  • [WARNING] Dava talimatları önerilen olarak belirlenmedi.
  • [UNKNOWN] Yetersiz kanıtlar.Güvenli değil, bilinmemektedir.

Bu ayrım, tüm aracın en değerli olduğu yerdir. Çoğu tarayıcı sadece size kırmızı, sarı ve yeşil verir ve sonra tüm ekranda olduğunu düşünüyorsunuz.UNKNOWN'nin kabul edilmesi gerekiyorYa gizli versiyonu kapat, konteynerde koş - yerel veya makineye giriş.

Altı, dört pit, diğerinden daha fazlası.

php2shell-udit kullanarak dört not

Boru 1: UNKNOWN WN Clear

Versiyon numarasını gizleyen ev sahibi her zaman UNKNOWN'yu rapor edecektir. Sadece ana çerçevede olduğundan emin olun. --localBilmiyorum.

Pocket 2: Yayın hatalıdır.

Debian / Ubuntu / RHEL / Alp düzenli olarak güvenlik yamalarını çağırır amaJump Version NumberBilmiyorum. Sonuç, göründüğü gibi tamamlanmış makinedir.

Bu yüzden kırmızıyı gördüğünüze kadar panik yapmayın.

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

Bu adım, ya da bunu yapmak için başarısızlık, bir escalasyon değil; aynı zamanda bir yükseltme için gerçek ihtiyaç olan yanlış bir hesaplama olacaktır.

Pit 3: A HEAD da talep edilir

Bu, birbirlerinin logunda olacak ve WAF tarafından yazılacak. Yazılı bir yetki olmadan alıntı yapmak doğadan izinsiz bir algılamadır - CFAA, İngiltere CMA 1990 gibi bir yasa.

Şirketin varlıklarını temizlemek için yetkiye ihtiyacım olacak.Özellikle, trans-sectoral, çapraz-sub-company, bulut tabanlı hesaplar. Don't think, "Ben sadece bir yanıt başı arıyorum" saymıyor.

Pocket 4:-local sadece makineyi kontrol eder.

PHP konteynerde çalışır, konteynerde çalışır veya host'da kullanır. --remote Haritalanan liman. Ev sahibi çalışır. --local PHP'yi konteynerde bulamazsanız, bir UNKNOWN alırsınız - UNKNOWN gerçekten bilmiyor, konteyner güvenli değil.

Yedi, bir problem var mı, sonra ne?

Patching tek tam onarımdır.Geri kalan her şey kanamadır.

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

# RHEL / Fedora
sudo dnf upgrade 'php*'

# Alpine
sudo apk upgrade php83 php84

Yükseltme: 8.2 şube 8.2.358.3 to için 8.3.368.4. 8.4.278.5. 8.5.12Bilmiyorum. 8.1 ve ötesinde, sadece kaynak seviyesi raporu.

Eğer bir yama alamıyorsanız, bunu ilk yapın, sonra tekrar baştan başlayın.

; 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 aracı veya sunucu yapılandırmasında yazılmalıdır,İstekten önce etkili olması gerekir.Bilmiyorum. Çok geç.
  • memory_limit=-1 Ona ihtiyacım var. php_admin_value Bu tür uygulamaların seviyesi değişmeden kalırken, sınırlı değeri geri yüklemek için havuz / dizi / uygulama yoktur.
  • Asla RLIMIT AS veya RLIMIT DATA kullanma- Bu ikisi Harita başarısız olacak ve sadece o tehlikeli uzun darbe yoluna katılacak.
  • Değişim her işçiyi yeniden başlatmalı:systemctl restart php*-fpm apache2 nginxBilmiyorum.Hiçbir yeniden başlatma değişmez.

Bu dört kişiden hiçbiri sizi güvende yapamaz ve yetkililer oldukça açıktır. Sadece bir değeri vardır:Onu önce, kapıyı kap.

VIII. Tam bir dizi

  1. Önce kendinize kontrol edin.:--localÜç veya beş saniye, versiyon ve yapılandırmayı görün.
  2. UzakBu büyük bir anlaşma.--remote --file Ve koşmak, JSON'dan.
  3. Sınıflandırma:VULNER yükseltme, WARNING dolum, UNKNOWN tanımlaması –Kapalı değil, yapılacak.
  4. Yükselt + Restart Worker: Patches ve sonra tüm FPM / Apache / nginx'i yeniden başlatın.
  5. Resweep Authentication: Tekrar koş, yeşili doğrulayın. Backport hatasını izleyin ve gerekliyse değişimlogunu izleyin.
  6. Su hattında alın.: Oldukça Kod 2 Doğrudan başarısız inşaat ve bir dahaki sefere kimse hatırlamayacak.

Bütün süreç on dakikadır ve gerçek zaman üçüncü adımdır.UNKNOWN çizgilerini kontrol edin.Bilmiyorum. Ama bu onu kurtarmayacak, çünkü atlıyor, oldukça, sahte, yeşil bir rapor alırsınız.

Tarayıcının değeri size yeşil ışık vermiyor, gerçekten bilmediğinizi itiraf etmeye zorlaşıyor.

Proje adresini yeniden oynat:Gythub.com/viviopenclaw-code/php2shell-uditBilmiyorum. Read DISSLAIMER.md before it's written in Chinese.

Son cümle bana bu aracın bugün 1.1.0 olduğunu hatırlatıyor, ilk kamu versiyonu, tek bir sıfır fork, küçük sayıda kod, hepsini okuyabilirsiniz. php2shell_audit.pyBilmiyorum.Kaynak koduna bakın.Özellikle php.ini ve süreç listesini yönetici izni ile okumak istiyorsanız.