Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-75827 — CVE-2026-75827에 대한 Proof-of-concept 및 랩으로, Blueprint 동적 데이터 error_log를 통한 Grav 임의 파일 쓰기 취약점이며, 재현 스크립트와 Docker 랩을 포함합니다. | Kitploit
도구/GitHubGitHub/abraxas/cve-2026-75827
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingLearning & EducationLabs & Practice
GitHubabraxas/cve-2026-75827

CVE-2026-75827

CVE-2026-75827에 대한 Proof-of-concept 및 랩으로, Blueprint 동적 데이터 error_log를 통한 Grav 임의 파일 쓰기 취약점이며, 재현 스크립트와 Docker 랩을 포함합니다.

저장소 보기
18시간 14분 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs — CVE-2026-75827

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  CVE-2026-75827

CVE-2026-75827

grav 2.0.13 — getgrav

Grav 2.0.15 이전 버전에는 Blueprint 동적 데이터 bare-function 검증에서 긍정 허용 목록(allowlist) 대신 불완전한 차단 목록(denylist)을 사용하는 임의 파일 쓰기 취약점이 존재합니다. 페이지 편집 또는 blueprint 구성 권한을 가진 공격자는 데이터 지시자를 통해 error_log 함수를 호출하여 웹에서 접근 가능한 파일에 PHP 페이로드를 추가할 수 있으며, 이를 통해 원격 코드 실행이 가능합니다.

CVECVE-2026-75827 · CVE.org
CWECWE-94
CVSSHigh: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Productgrav
Affected2.0.13 이하 모든 버전(포함)
Patched2.0.15 이상
Auth없음 (소스 맵 참조)
Lab127.0.0.1 전용 · 벤더/클라이언트 공개 팩, 스캐너 아님

권고 (소스 맵 기준)

임의 파일 쓰기는 업로드 action=이 아니라 폼 blueprint의 data-options@를 통한 error_log입니다. HTTP는 GET /poc-form 이후 GET /poc-witness.txt입니다.


진입점

  • 메서드: GET
  • 경로: /poc-form
  • 라우터: blueprint에 data-options@: ['error_log', witness, 3, poc-witness.txt]가 있는 공개 폼 페이지. Form 플러그인 Blueprint::getBlueprint() → dynamicData → call_user_func_array('error_log', ...). 페이지 편집(랩 시드)이 지시자를 배치했고, GET이 쓰기를 트리거합니다. 이후 GET /poc-witness.txt.
  • 참고: CVE-2026-75827 CWE-94: Grav <=2.0.14 Blueprint::isSafeDynamicCall()의 bare-function 분기가 Utils::isDangerousFunction 차단 목록을 사용하며 error_log가 누락되어 있습니다. 2.0.15는 bare 함수를 허용 목록으로 관리합니다. Witness는 GET /poc-witness.txt의 POCWitness75827입니다(error_log 추가, 셸 아님). system()/exec() PHP를 작성하지 마십시오.

호출 체인

  • Lab seed: admin user + Form plugin + page 03.poc-form with data-options@: error_log
  • GET /poc-form → Form::getBlueprint() → Blueprint::dynamicData → isSafeDynamicCall('error_log') true → error_log(witness, 3, poc-witness.txt)
  • GET /poc-witness.txt → POCWitness75827

랩 사전 조건

  • Grav 2.0.13 admin 스켈레톤(form 플러그인 활성화)
  • data-options@: ['error_log', 'POCWitness75827\n', 3, 'poc-witness.txt']가 있는 /poc-form 페이지
  • error_log가 poc-witness.txt를 생성할 수 있도록 웹 루트 쓰기 가능
  • admin labadmin/labadmin 존재(페이지 편집); 폼의 GET이 싱크

Witness

GET /poc-witness.txt 본문에 POCWitness75827이 포함됩니다. 홈 HTML 또는 빈 404는 파일 쓰기 witness가 아닙니다.

성공 아님

  • witness 파일 없이 일반 200 Grav 홈 HTML
  • 404 poc-witness.txt
  • 리버스 셸 또는 아웃바운드 연결
  • system()/exec() PHP 페이로드

패치 / 완화

먼저 할 일: grav를 2.0.15 이상으로 업데이트하십시오.

업그레이드 후 확인

  • 패치된 빌드에 대해 CVE-2026-75827-Abraxas-Labs.py를 다시 실행하십시오: 매핑된 witness가 나타나지 않아야 합니다.
  • 배포된 트리에서 벤더 권고 / 변경 집합을 확인하십시오(참조 참조).
  • WAF 시그니처는 지연이지 패치가 아닙니다.

즉시 업데이트할 수 없는 경우

  • 영향을 받는 구성 요소를 비활성화하거나 격리하십시오.
  • 프로덕션에서 witness 조건을 탐색하십시오(새 권한 사용자, 예상치 못한 파일, 주입된 행 — 이 CVE의 맵이 명시하는 모든 것).

재현 (승인된 랩)

오직 http://127.0.0.1:8088(또는 바인딩한 루프백)만 대상으로 하십시오. 이 스크립트를 인터넷을 향해 지정하지 마십시오.

root@kitploit:~
python3 CVE-2026-75827-Abraxas-Labs.py

성공은 응답 본문에 위의 witness가 있는 것입니다. 일반 200 HTML은 아닙니다.


랩 이미지

재현에 사용된 루프백 스택. 이 폴더의 Dockerfile이 소스에서 빌드하지 않는 한 공식 이미지입니다.

  • lab/docker-compose.yml
  • lab/docker-compose.override.yml
  • lab/php-lab.ini
  • lab/Dockerfile
root@kitploit:~
cd lab
docker compose up --force-recreate

YAML이 로컬 디렉터리를 마운트하는 경우(버전 표의 플러그인 zip / 소스 태그) 취약한 제품 트리를 Compose 옆에 바인딩하십시오. 127.0.0.1 외에는 아무것도 게시하지 마십시오.


참조

  • CVE-2026-75827 · NVD

  • CVE-2026-75827 · CVE.org

  • github.com/getgrav/grav/security/advisories/GHSA-f8wv-xp27-6gq7

  • www.vulncheck.com/advisories/grav-before-arbitrary-file-write-via-error-log

  • github.com/CVEProject/cvelistV5/tree/main/cves/2026/75xxx/CVE-2026-75827.json

  • nvd.nist.gov/vuln/detail/CVE-2026-75827

  • github.com/advisories/GHSA-f8wv-xp27-6gq7

  • Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null


레코드 (구조화)

root@kitploit:~
# CVE-2026-75827  (structured records)

- input: `https://nvd.nist.gov/vuln/detail/CVE-2026-75827`
- CWE: CWE-94
- published: 2026-08-18T12:19:32.553

## NVD description

Grav before 2.0.15 contains an arbitrary file write vulnerability in the Blueprint dynamic-data bare-function validation that uses an incomplete denylist instead of a positive allowlist. Attackers with page-edit or blueprint-config access can invoke the error_log function through a data directive to append PHP payloads to web-accessible files, achieving remote code execution.

## MITRE description

Grav before 2.0.15 contains an arbitrary file write vulnerability in the Blueprint dynamic-data bare-function validation that uses an incomplete denylist instead of a positive allowlist. Attackers with page-edit or blueprint-config access can invoke the error_log function through a data directive to append PHP payloads to web-accessible files, achieving remote code execution.

## Affected

- getgrav grav 0 affected, 2.0.15 unaffected
- OSV: 

## References (JSON sources only)

- https://github.com/getgrav/grav/security/advisories/GHSA-f8wv-xp27-6gq7
- https://www.vulncheck.com/advisories/grav-before-arbitrary-file-write-via-error-log
- https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/75xxx/CVE-2026-75827.json
- https://nvd.nist.gov/vuln/detail/CVE-2026-75827
- https://github.com/advisories/GHSA-f8wv-xp27-6gq7

## GitHub advisory

Grav: Blueprint dynamic-data bare-function branch is denylist-gated and omits error_log, giving arbitrary file write

## Affected versions and vulnerable location

- Confirmed on grav core at `78ebfc1` (tag 2.0.13).
- Sinks:
  - `system/src/Grav/Common/Data/Blueprint.php:455-458` `call_user_func_array($o, $params)` (bare-function dynamic-data provider).
  - Twin: `system/src/Grav/Framework/Flex/FlexDirectory.php:936-938` `call_user_func_array($function, $params)`.
- Validation gate: `Blueprint::isSafeDynamicCall()` at `Blueprint.php:514-536`.
  - `Class::method` branch (`:514-527`) uses a strict positive allowlist `self::$allowedDynamicCallables`.
  - Bare-function branch (`:530-534`) uses only a denylist: `if (is_string($function) && Utils::isDangerousFunction($function)) return false; return !self::paramsContainDangerousCallable($params);`.
- Denylist: `Utils::isDangerousFunction()` (`system/src/Grav/Common/Utils.php`, list around `:2020-2270`).

## Root cause

GHSA-7pgq/CVE-2026-64850 hardened the `Class::method` half of the dynamic-callable validation to a positive allowlist because a page-edit account could otherwise name any static method as a provider and reach file/secret gadgets. The bare-function half was left on a denylist (`isDangerousFunction`). Any bare PHP function not on that list executes.

`error_log` is not on the denylist (verified: no occurrence in `Utils.php`). `error_log($message, 3, $destination)` appends attacker-controlled `$message` to attacker-controlled file `$destination`, an arbitrary-file-append primitive. `paramsContainDangerousCallable()` (`:587-603`) only scans params for dangerous callable strings, so a PHP payload string and a destination path both pass. (`stream_socket_client`, `dl`, and `mb_send_mail` are likewise absent, giving SSRF/other primitives.)

## Attacker model

The same surface the published dynamic-data advisories accept as reachable: a `data-*@` directive in a form blueprint the Form plugin assembles from page frontmatter (GHSA-fj2p), or a `data@` field in a Flex directory/pages/users blueprint (GHSA-c4wf). A page-edit / blueprint-config account, no shell.

## Reachability trace

1. Author a blueprint field with a bare-function data directive, e.g.
   `data-options@: ['error_log', '<?php system($_GET[0]); ?>', 3, 'user/data/x.php']`.
2. `Blueprint::init()` resolves the directive; `isSafeDynamicCall('error_log', $params)` reaches the bare-function branch (`:530`), `isDangerousFunction('error_log')` is false, `paramsContainDangerousCallable([...])` is false (no callable strings),

면책 조항

이 팩은 벤더, 사이트 소유자, 라이선스된 랩을 위한 것입니다. 스크립트는 127.0.0.1과 통신합니다. 소유하지 않은 시스템에 사용하는 것은 Abraxas Labs에 의해 승인되지 않습니다. 보증은 없습니다.

abraxaslabs.tech · github.com/abraxas · @abraxas_null

도구 다운로드