← 목록으로

php2shell-audit 필드 : Windows는 exe, 리눅스, py, PHP를 파악하는 10 분을 사용합니다.

itadol5j

구부러지지 않습니다. 그것은 녹에 관하여 모두입니다:선적 공구, 달리는 기계, 청소 표적, 판독, 헝겊 조각을 결정하십시오A 드래곤 끝내는 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.89.8 제목은 후자이며 둘 모두 같은 두 대의 루프홀을 참조하여 서로 생각하지 않습니다.

여기에 도구는:Vivipenclaw 코드 / PHP2shell-uditApache-2.0, 오늘. 그것은 두 가지 : PHP가이 기계에 설치되어 있는지 확인, 멀리 떨어져 폭풍의 발견 된 버전을 청소.그것은 트래픽을 공격하지 않습니다, 디스크를 작성하지 않습니다, 어떤 구성을 변경하지 않습니다.그리고 나는 소스 코드에서 검사 한 것이 무엇인지, 그리고 원격 모드는 정말 응답 머리에 대한 하나의 HEAD 요청을 보내.

php2shell-udit 터미널 실행 효과

I. DIFTING: 당신이 안으로 있는 어느 체계를 보는 2가지의 방법.

Linux / MacOS는 Python, Zero Dependency, 표준 라이브러리가 충분합니다. 모든 것을로드하지 않습니다.

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로 똑똑합니다. 공지사항 php2shell-audit.exe::

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

Exe는 Win10/11 x64가 사용할 수있는 단일 파일 콘솔 프로그램입니다.코드 서명 없음.그래서 SmartScreen의 첫 번째 실행은 중지합니다. 먼저 실행합시다. SHA256SUMS.txt 다시 한번 -이 단계는 온라인 순환되는 "녹색"버전을 하나의 터치하는 것입니다.

동일한 매개 변수의 두 가지 버전. 튜토리얼의 뒷면에 한 세트만, Windows. python3 php2shell_audit.py 기타 제품 php2shell-audit.exe 그냥.

Linux 및 Windows 설치 방법

무엇을 할 것인가?

python3 php2shell_audit.py --local

그것은 4 가지, 하나의 일을 할 것입니다 :

  1. PHP를 찾습니다.::/usr/bin/php*나는 모른다./usr/sbin/php-fpm*나는 모른다./opt/*나는 모른다./usr/lib/php/*/sapi/*Homebrew도 계산합니다. Windows, 체크 아웃. C:\phpXAMPP, WAMP, Laragon, Chocolatey, Scoop, 프로그램 파일 아래 PHP.
  2. 버전보기: 실행 php -v 배너를 타고 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12.
  3. 자주 묻는 질문: php.ini에 대한 간담 완화 지침을 구합니다.
  4. 열공정: 패치 후 재시작해야 할 모든 작품 목록.

나는 PHP없이 기계를 ran. 산출은 여기 있습니다:

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.

마지막 선을 보십시오:PHP는 UNKNOWN, PASS가 없습니다.이 디자인은 아주 잘 인식됩니다 -- 아무것도 찾아내는 아무 문제도 없습니다. 그것은 두 가지 다른 것들입니다.

그런데, 그것은 연결됩니다. expose_php 모든 것. 이것은 루프홀 자체로 할 수 없습니다. 그러나 원격 스캔이 버전 번호를 읽을 수 있는지 여부와 직접 결정입니다.설정하기 assailant의 지문은 반 블라인드입니다.나는 모른다. 물론, 그것은 수리를 호출하지 않습니다, 그것은 정보 노출 감소 라고.

III. 이름 *

php2shell-udit 인수 개요
이름 *제품정보기본 정보
--local / --remote2개 또는 하나, 우리는 기계 또는 표적을 검사하기 위하여 결정합니다.견적 요청
--file targets.txt배치 대상, 한 줄에서 하나, # 코멘트 시작이름 *
--workers N장기 동시 과정 수10
--json report.json출력 완전한 JSON,- 공지사항이름 *
--timeout N단일 요청 타임 아웃 (sec)8
--insecureTLS 인증, 지문만이름 *

종료 코드: CI 카드 포인트에 직접

출구 부호이름 *
0발견 된 버전 없음
2적어도 하나의 영향을받은 버전이 발견되었습니다.
1도구 자체에 오류 (예 : JSON은 작성할 수 없습니다)

Quit 번호 2, 이것은 포인트입니다.그것은 당신이 흐름 선에서 그것을 넣을 수 있다는 것을 의미합니다, 건설 단계를 통해 청소하고, 그것을 누르고, 그것을 찾아내는 인간을 위해 기다리지 마십시오.

iv. 원격 청소: –remote 방법

# 单个目标
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

# 주의 시작, 한 줄, 창고에서 하나 targets.example.txt 그것은 직접 복사될 수 있습니다.

그것은 무엇을 보낼?

모든 목표.1개의 HEAD 요구만 보내기, 한 번만 서버가 HeAD를 거부합니다. 그리고 그것을 읽으십시오. Server:나는 모른다.X-Powered-By: 이름 * Set-Cookie거기에서. PHP/x.y.z나는 모른다.

multipart 없음, 큰 몸 없음, OOM 없음, 사용 후 없음.그것은 디자인 제약으로 소스 노트에서 사망.그것은 무작위가 아닙니다.

가격은 명확해야합니다 :먼 형태는 usability를 증명하지 않습니다서버 voluntarily가 밖으로 뱉는 정보만 보고할 수 있습니다. 버전 번호의 표적을 숨기고, 결과는 항상 UNKNOWN일 것입니다.

V. 결론을 읽는 방법

세 결론의 의미
[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을 고려해야합니다숨겨진 버전을 끄거나 컨테이너에서 실행 -- 로컬, 또는 기계에 로그.

6, 4개의 pits, 다른 사람 보다는 더 많은 것.

php2shell-udit를 사용하는 4 노트

파이프 1 : UNKNOWN MIT 클리어

버전 번호를 숨기는 호스트는 항상 UNKNOWN을보고합니다. 그냥 메인 프레임에서만 확인. --local나는 모른다.

포켓 2 : 출시가 잘못되었습니다.

Debian / Ubuntu / RHEL / Alpine은 안전 패치에 정기적으로 전화하지만점프 버전 번호나는 모른다. 결과가 완성 된 기계이므로 나타납니다.

빨간색을 볼 때까지 공황하지 마십시오.

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

이 단계, 또는 그렇게 할 실패, 아무것도하지만 에스컬레이션이 될 것입니다; 그것은 또한 업그레이드에 대한 실제 필요입니다 miscalculation 일 것입니다.

Pit 3: 머리는 또한 요구됩니다

그것은 서로의 로그에있을 것입니다, 그리고 그것은 WAF에 의해 작성 될 것입니다. 서면 허가없이 Sweeping은 자연의 무단 탐지에 의해 - CFAA와 같은 법, 영국 CMA 1990.

나는 나의 회사의 자산을 청소하는 허가를 필요로 할 것입니다.특히, 횡단보도, 횡단보도, 클라우드 기반 계정. 생각하지 마십시오, "나는 그냥 응답 머리에서 찾고 있어요"는 수 없습니다.

포켓 4 :-현지 만 확인 기계.

PHP는 컨테이너에서 실행, 컨테이너에서 실행, 또는 호스트에 그것을 사용. --remote 지도 된 항구. 호스트 실행. --local 컨테이너에 PHP를 찾을 수없는 경우 UNKNOWN을 얻을 것입니다 -- UNKNOWN은 정말 알고 있지 않습니다, 컨테이너가 안전하지 않습니다.

7, 문제가 있음을 알아?

Patching은 완전한 수리입니다.모든 나머지는 출혈입니다.

# 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.36그것은 8.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를 사용하지 마십시오.- 두 사람은지도가 실패하고 위험한 longjmp 경로를 다시 입력합니다.
  • 변화는 각 노동자를 재시작해야 합니다:systemctl restart php*-fpm apache2 nginx나는 모른다.재시작은 변경되지 않습니다.

이 4의 아무도 당신에게 안전하고, 당국은 확실히 명확합니다. 그들은 단지 1개의 가치가 있습니다:당신이 그것을 깁기 전에, 문을 덮습니다.

사이트맵 완전한 순서

  1. 자주 묻는 질문::--local3 또는 5 초, 버전 및 구성을 참조하십시오.
  2. 먼 배치 청소그것은 큰 거래입니다.--remote --file JSON에서 실행합니다.
  3. Classification 처리:VULNERABLE 업그레이드, WARNING 보충, UNKNOWN 식별 --닫지 않습니다.
  4. 업그레이드 + 재시작 작업자: 패치, 다음 모든 FPM / Apache / nginx를 다시 시작합니다.
  5. Resweep 인증: 다시 실행, 녹색을 확인. backport 과 watch changelog 필요한 경우.
  6. 물 선에 도착.: Quit Code 2 직접 실패 공사 및 다음 시간 아무도 기억하지 않습니다.

전체적인 과정은 10 분이고, 순간은 3 단계입니다.UNKNOWN 라인 확인.나는 모른다. 그러나 그것은 저장하지 않을 것입니다, 그것을 건너 뛰기 때문에, 당신은 꽤, 가짜, 녹색 보고서를 얻을.

스캐너의 값은 녹색 조명을 제공하지 않습니다, 당신이 정말로 알고 있지 않는 곳에 당신이 인정하는 것입니다.

프로젝트 주소를 재생:Gythub.com/viviopenclaw 코드/php2shell-udit나는 모른다. DISSLAIMER.md를 읽으십시오.

마지막 문장은이 도구가 1.1.0 오늘, 첫 번째 공개 버전, 단일 0 포크, 작은 번호의 코드를 읽을 수 있음을 상기시킵니다. php2shell_audit.py나는 모른다.소스 코드를 봐.php.ini와 관리자 권한으로 프로세스 목록을 읽으려면 특히.