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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/wgetnz/hfs2
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRemote Access Tool
GitHubwgetnz/hfs2

hfs2

CVE-2024-23692 | HFS 2.3m/2.4-RC07 RCE 취약점 수정

저장소 보기
26개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Introduction

HFS(HTTP File Server)를 사용하여 파일을 보내고 받을 수 있습니다. 클래식한 파일 공유와 다른 점은 웹 기술을 사용한다는 것입니다. 또한 클래식한 웹 서버와도 다른데, 사용하기 매우 쉽고 "설치 직후 바로" 실행되기 때문입니다.

가상 파일 시스템을 사용하면 단일 파일 하나도 쉽게 공유할 수 있습니다.


Security — CVE-2024-23692

취약점 개요

도구 다운로드
항목내용
CVE 번호CVE-2024-23692
영향 버전HFS 2.3m, HFS 2.4.0 RC07 이하
취약점 유형인증되지 않은 원격 코드 실행(Unauthenticated RCE)
CVSS 점수9.8 Critical
공격 벡터네트워크 도달 가능, 인증 불필요, 사용자 상호작용 불필요

취약점 원리

HFS의 템플릿 엔진은 {.?search.} 매크로(URL 쿼리 매개변수 읽기)를 처리할 때 반환값에 대해 재귀적으로 applyMacrosAndSymbols2()를 호출하므로, 사용자가 제어할 수 있는 문자열이 템플릿 코드로 실행됩니다.

공격 체인은 네 단계로 구성됩니다.

root@kitploit:~
1. %url% 을 포함하는 search 매개변수 구성
         ↓
2. %url% 이 macroQuote(전체 URL) = {:url_including_payload:} 로 확장
         ↓
3. %password% 이 빈 문자열로 확장되어 {:...:} 참조 블록이 조기에 닫힘
         ↓
4. 참조 블록 외부의 {.exec|cmd.} 이 매크로 엔진에 의해 실행 → RCE

POC 예시(보안 연구 전용):

root@kitploit:~
GET /?n=%0A&cmd=whoami&search=%25xxx%25url%25:%password%}{.exec|{.?cmd.}|timeout=15|out=abc.}{.?n.}{.?n.}RESULT:{.?n.}{.^abc.}===={.?n.} HTTP/1.1

수정 방안

수정 파일: scriptLib.pas

핵심 함수: noMacrosAllowed()(109–123행)

root@kitploit:~
function noMacrosAllowed(s:string):string;
// prevent hack attempts
begin
  // 단계 1: 모든 매크로 마커의 첫 문자를 HTML 엔티티로 치환
  //   {.  →  {.       .}  →  .}
  //   {:  →  {:       :}  →  :}
  //   |   →  |
  repeat
    i := findMacroMarker(s, i);
    if i = 0 then break;
    replace(s, '&#' + intToStr(charToUnicode(s[i])) + ';', i, i);
  until false;

  // 단계 2: %symbol% 형식의 기호 참조를 HTML 엔티티로 치환
  //   %url%       →  %url%
  //   %password%  →  %password%
  s := reReplace(s, '%([-a-z0-9]+)%', '%$1%', 'mi');
  result := s;
end;

호출 위치: 모든 사용자 제어 입력은 템플릿 엔진으로 반환되기 전에 이 함수를 거칩니다.

호출 위치보호 범위
urlVar() 548행모든 URL 쿼리 매개변수 {.?name.}
698행템플릿 변수 읽기
1549행Cookie 값
2089행URL 디코딩 값
2165행HTTP 요청 헤더
2173행POST 폼 매개변수

수정 효과: POC의 search 매개변수가 처리된 후 모든 매크로 마커와 기호 참조가 HTML 엔티티로 변환되어 더 이상 매크로 엔진 실행을 트리거할 수 없습니다.


Dev notes

Initially developed in 2002 with Delphi 6, now with Delphi 10.3.3 (Community Edition). Icons are generated at http://fontello.com/ . Use fontello.json for further modifications.

For the default template we are targeting compatibility with Chrome 49 as it's the latest version running on Windows XP.

Libs used

  • ICS v8.64 by François PIETTE
  • TRegExpr v0.952b by Andrey V. Sorokin
  • JEDI Code Library v2.7
  • Kryvich's Delphi Localizer v4.1