php2shell-audit kenttä: Windows käyttää exe, Linux, Py, 10 minuuttia selvittää PHP.
Kyse ei ole mutkista. Kyse on koputuksista.Kuormaustyökalut, juoksukoneet, puhdistuskohteet, lukemispäätelmät, päätös paikataLohikäärme. Kymmenen minuuttia.
Ensinnäkin, CVE-2026-109618 ja CVE-2026-109619 ovat luvattomia RCE PHP moottori itse, virallinen palautettu versio on 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 Kaksi kaliiperia...PHP virallinen CVSS 4.0, 9.2, NVD CVSS 3,1,99.8 otsikossa on jälkimmäinen, ja molemmat viittaavat samaan kahdesta yhteen porsaanreikä, ei ajatella se on erilainen.
Tässä ovat työkalut:Vivipenclaw-koodi/php2shell-auditApache-2.0, juuri tänään. Se tekee kaksi asiaa: tarkistaa, mitä PHPs on asennettu tähän koneeseen, lakaista löytämätön versio kaukainen myrsky.Se ei hyökkää liikennettä, ei kirjoita levyjä, ei muuta mitään asetuksia.Sen olen tarkistanut lähdekoodista. Kauko-ohjain lähettää vain yhden pyynnön.
Kaksi tapaa nähdä, missä järjestelmässä olet.
Linux / MacOS go Python, nollariippuvuus, normaali kirjasto riittää, ei pip ladata mitään:
git clone https://github.com/viviopenclaw-code/php2shell-audit.git
cd php2shell-audit
chmod +x php2shell_audit.py
python3 php2shell_audit.py --local
Windows menee suoraan exe, ilman Python. Tartu julkaisusivulle php2shell-audit.exe:
certutil -hashfile php2shell-audit.exe SHA256
php2shell-audit.exe --local
Exe on yhden tiedoston konsoliohjelma, että Win10/11 x64 on käytettävissä,Ei koodin allekirjoitusta.Joten ensimmäinen juoksu SmartScreeniin loppui. Juostaan ensin. SHA256SUMS.txt Jälleen kerran tämä askel on yksi, jossa kukaan ei kosketa vihreä versio, joka jaetaan verkossa.
Kaksi versiota samoista parametreista. Vain yksi setti opetusohjelman takana, Windows. python3 php2shell_audit.py Korvaa php2shell-audit.exe Tee se.
Mitä on tekeillä?
python3 php2shell_audit.py --local
Se tekee neljä asiaa.
- Etsi PHP.:
/usr/bin/php*En tiedä./usr/sbin/php-fpm*En tiedä./opt/*En tiedä./usr/lib/php/*/sapi/*Myös Homebrew lasketaan. Windows, katso.C:\phpPHP alle XAMPP, WAMP, Laragon, Chocolatey, Scoop, Program Files. - Lue versioJuokse!
php -vOta Banner, 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 - Tarkista asetukset: Phyp.inin osa-aikaisten lieventämisohjeiden jäsentäminen.
- Sarake: lue kaikki työt, jotka on käynnistettävä uudelleen laastarin jälkeen.
Ajoin koneen yli ilman PHP:tä. Tässä on tuloste:
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.
Katso viimeinen rivi:Ei PHP:tä, se on tuntematon.Tämä malli on hyvin tunnustettu -- ei ole ongelma löytää mitään. Kaksi eri asiaa.
Se on muuten yhteydessä. expose_php Kaikki. Tällä ei ole mitään tekemistä porsaanreiän kanssa, mutta se on suora päätös siitä, voiko etäskannaus lukea versionumerosi.Sammuta se. Hyökkääjän sormenjäljet ovat puolisokeat.En tiedä. Sitä ei tietenkään kutsuta korjaukseksi, vaan informaation vähentämiseksi.
III Parametrit
| Parametrit | Rooli | Oletus |
|---|---|---|
--local / --remote | Tarkistamme koneen tai kohteen. | Vaaditaan |
--file targets.txt | Erän kohde, yksi yhdellä rivillä, # Aloita kommentti | Ei ole |
--workers N | Pitkäaikaisten samanaikaisten kurssien lukumäärä | 10 |
--json report.json | JSON on valmis.- Hit to stdout | Ei ole |
--timeout N | Yhden pyynnön aikakatkaisu (sek) | 8 |
--insecure | Ohita TLS-tarkastus ainoastaan sormenjälkien osalta | Sulje |
Poistumiskoodi: suoraan CI-kortin kohtaan
| Poistumiskoodi | Merkitys |
|---|---|
0 | Muutosta ei löytynyt |
2 | Löysin ainakin yhden version. |
1 | Virhe itse työkalussa (esim. JSON ei voi kirjoittaa) |
Lopeta jo.Se tarkoittaa, että voit laittaa sen virtauslinjaan, lakaista sen rakennusvaiheen läpi, osua siihen, äläkä odota ihmisten löytävän sitä.
iv. Lakaiseva kaukosäädin:
# 单个目标
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
Mitä? Kirjoita
# production fleet
example.com
https://shop.example.net
10.0.0.5:8080
Aloita viestillä, yhdellä viivalla, yhdellä varastossa targets.example.txt Se voidaan kopioida suoraan.
Mitä se lähetti?
Joka maalin.Lähetä vain yksi HEAD-pyyntö, Vain kerran palvelin hylkää HeAD. Ja lue se. Server:En tiedä.X-Powered-By: sekä Set-CookieTule pois sieltä. PHP/x.y.zEn tiedä.
Ei moniosaista, ei isoa ruumista, ei OOM:ää, ei käyttövapaata.Se kuoli lähdelapussa.Se ei ole sattumaa.
Hinta on oltava selvä:Etätila ei todista käytettävyyttäSe voi vain ilmoittaa tiedot, että palvelin sylkee vapaaehtoisesti ulos. Piilota versionumeron kohde ja tulos on aina tuntematon.
V Päätelmien lukeminen
[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
- - Ei. Versio oli luettu ja pienempi kuin palautettu versio.
- [PASSI] Versio luki ja on suurempi tai yhtä suuri kuin palautettu versio.
- Hei. Välivaiheen hillitsemisohjeita ei annettu ohjeiden mukaisesti.
- [Tuntematon] Riittämättömät todisteet.Ei turvallista, ei tunnettua.
Tässä erossa koko väline on arvokkain. Useimmat skannerit antavat vain punaista, keltaista ja vihreää, ja sitten luulet sen olevan ruudulla.TUNTEMATON on otettava huomioonJoko sammuta piilotettu versio, aja kontissa -- paikallinen, tai kirjaudu koneeseen.
Kuusi, neljä kuoppaa, yksi enemmän kuin toinen.
Putki 1: TUNTEMATON
Isäntä, joka piilotti versionumeron, raportoi aina tuntemattomaksi. Varmista, että se on vain keskustietokoneella. --localEn tiedä.
Tasku 2: Julkaisusta on ilmoitettu väärin.
Debian / Ubuntu / RHEL / Alpine soittaa säännöllisesti turvalapuilla, muttaÄlä hyppää version numeroaEn tiedä. Tuloksena on valmis kone, kuten näyttää.
Joten älä panikoi ennen kuin näet punaisen.
apt changelog php8.4
rpm -q --changelog php-8.4 | head -50
Tämä askel tai epäonnistuminen olisi pelkkä eskalointi; se olisi myös virhearvio, joka on todellinen päivitystarve.
Pit 3: HEAD on myös pyydetty
Se on toistemme lokissa ja WAF kirjoittaa sen ylös. Lakaiseminen ilman kirjallista lupaa on luonnostaan luvaton havainto - laki kuten CFAA, UK CMA 1990.
Tarvitsen luvan yhtiöni varojen siivoamiseen.Erityisesti monialaiset, yritysten väliset ja pilviperusteiset tilit. Älä ajattele, "katson vain vastausta" ei lasketa.
Tasku 4: - paikallinen vain tarkistaa koneen.
PHP kulkee säiliössä, kulkee säiliössä, tai käyttää sitä isäntä. --remote Paapuuri, joka oli kartoitettu. Isäntä juoksee. --local Jos et löydä PHP:tä kontista, saat Tuntematon -- Tuntematon ei todellakaan tiedä, kontti ei ole turvallinen.
Seitsemän, selvitä ongelma.
Paikkaaminen on ainoa täydellinen korjaus.Kaikki muu vuotaa verta.
# Debian / Ubuntu
sudo apt update && sudo apt install --only-upgrade php
# RHEL / Fedora
sudo dnf upgrade 'php*'
# Alpine
sudo apk upgrade php83 php84
Päivitys: 8.2 8.2.358, 3 - 8.3.36Se on 8,4. 8.4.27Se on 8,5. 8.5.12En tiedä. 8.1 ja sen jälkeen ainoastaan lähdetason raportti.
Jos et saa laastaria, aloita alusta.
; 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=0Kirjoitetaan php.ini-, FPM-työkalu tai palvelimen konfiguraatio,Sen on oltava voimassa ennen pyyntöä.En tiedä. On liian myöhäistä.memory_limit=-1Tarvitsen sitä.php_admin_valueTällaisten sovellusten tasoa ei muuteta, mutta samalla varmistetaan, että raja-arvon palauttamiseksi ei ole poolia/ hakemistoa/ sovellusta.- Älä koskaan käytä RLIMIT AS- tai RLIMIT-TIETOJA- Nuo kaksi saavat Mapin epäonnistumaan.
- Muutos on käynnistettävä uudelleen jokaisen työntekijän:
systemctl restart php*-fpm apache2 nginxEn tiedä.Mikään uudelleenkäynnistys ei ole muutos.
Mikään näistä neljästä ei voi tehdä sinua turvalliseksi, ja viranomaiset ovat selvillä. Niillä on vain yksi arvo:Ennen kuin korjaat sen, peitä ovi.
VIII Täydellinen jakso
- Tarkista ensin itsesi.:
--localKolme tai viisi sekuntia, katso versio ja kokoonpano. - Erän etätarkastusSe on iso juttu.
--remote --fileJa karkaa Jsonista. - LuokitteluHYVÄT päivitykset, VAROITUSTUOTANTO, Tuntematon henkilöllisyys...Se ei ole kiinni, se on tehtävä.
- Päivitys + Käynnistä työntekijä uudelleenPaikkaa ja käynnistä kaikki FPM/ Apache/ nginx.
- Uudelleenweep-todentaminenJuokse uudelleen, vahvista vihreä. Katso backport virhe ja katsella muutosloki tarvittaessa.
- Mene vesiputkeen.: Lopeta koodi 2 Suora epäonnistuminen rakentaminen, ja ensi kerralla kukaan ei muista.
Koko prosessi kestää kymmenen minuuttia ja reaaliaika on kolmas vaihe.Tarkistakaa tuntemattomat linjat.En tiedä. Mutta se ei pelasta sitä, koska jätät väliin. Saat kauniin, väärennetyn ja vihreän raportin.
Skannerin arvo ei anna vihreitä valoja, vaan pakottaa myöntämään, mistä ei tiedä.
Toista projektin osoite:Gythub.com/viviopenclaw-koodi/php2shell-uditEn tiedä. Lue DISSLAIMER.md ennen kuin se on kirjoitettu kiinaksi.
Viimeinen lause muistuttaa minua siitä, että tämä työkalu on 1.1.0 tänään, ensimmäinen julkinen versio, yksi nolla haarukka, pieni määrä koodeja, voit lukea ne kaikki. php2shell_audit.pyEn tiedä.Katso lähdekoodia., varsinkin jos haluat lukea php.ini ja prosessiluettelo ylläpitäjän luvalla.