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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-49844 — # CVE-2025-49844(RediShell) 스캐너 및 교육 가이드 Redis Lua 스크립팅 use-after-free 취약점인 CVE-2025-49844(RediShell)에 대한 스캐너 및 교육 가이드입니다. Redis 서버의 노출 여부를 확인하고, 수정 단계를 제공하며, 학습 목적으로 익스플로잇 메커니즘을 설명합니다. | Kitploit
도구/GitHubGitHub/angelusrivera/cve-2025-49844
Vulnerability ScannersVulnerability AnalysisExploitationPenetration TestingLearning & EducationRed TeamingDatabase Security
GitHubangelusrivera/cve-2025-49844

CVE-2025-49844

# CVE-2025-49844(RediShell) 스캐너 및 교육 가이드 Redis Lua 스크립팅 use-after-free 취약점인 CVE-2025-49844(RediShell)에 대한 스캐너 및 교육 가이드입니다. Redis 서버의 노출 여부를 확인하고, 수정 단계를 제공하며, 학습 목적으로 익스플로잇 메커니즘을 설명합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

🚨 CVE-2025-49844 (RediShell) - 완전 가이드

⚠️ 학습용일 뿐, 해킹용이 아닙니다 ;) ⚠️

안녕하세요! 이 도구는 여러분의 Redis 서버가 이 버그에 취약한지 확인하도록 돕기 위해 제가 만든 간단한 도구입니다. 실제 공격용이 아니라, 학습과 자신의 시스템 보호를 위한 것입니다.

이게 뭔가요?

자, 사랑하는 여러분, 2025년 가장 흥미로운 사고 중 하나인 CVE-2025-49844에 대해 설명드리겠습니다. 핵심적으로, 누군가 여러분의 Redis 서버에서 Lua 스크립트를 실행할 수 있다면, 메모리에 접근할 수 있게 됩니다.

핵심 사항

  • 심각도: 매우 심각함 (9.9/10)
  • 영향 대상: Redis 버전 8.2.1 이하를 사용하는 모든 사용자
  • 발생 결과: 코드 실행
  • 공격 방식: Lua 스크립팅을 통해 (Redis가 고급 데이터베이스 작업에 사용하는 기능)

시작해 봅시다!

1단계: 빌드하기

root@kitploit:~
# 먼저 Go 환경을 준비합니다
cd scanner
go mod tidy

# 그다음 스캐너를 빌드합니다
go build -o rscan redis-scanner.go

2단계: 서버 확인하기

root@kitploit:~
# 단일 서버 확인
./rscan -host your-server.com -port 6379

# 비밀번호로 확인 (비밀번호가 있는 경우)
./rscan -host your-server.com -port 6379 -auth yourpassword

# 여러 서버를 한 번에 확인
./rscan -host server1.com,server2.com,server3.com

# 또는 파일에서 확인
./rscan -file hosts.txt

3단계: 문제 해결하기

root@kitploit:~
# Lua 스크립팅 끄기 (공격을 차단합니다)
redis-cli ACL SETUSER default -@scripting

# 또는 Redis를 최신 버전으로 업데이트

결과는 무엇을 의미하나요?

  • 🚨 위험! - Redis가 취약합니다 (구버전 + Lua 스크립트 작동)
  • 🛡️ 좋음! - Redis가 보호되고 있습니다 (Lua 비활성화 또는 최신 버전)
  • ✅ 훌륭함! - Redis가 안전합니다 (버전 8.2.2 이상)
  • ❌ 이런! - 연결할 수 없거나 문제가 발생했습니다

이 메모리 버그는 어떻게 작동하나요?

문제점

이것은 "use-after-free" 버그라고 불리는 것입니다. 본질적으로 Redis에는 메모리 관리 시스템이 있는데, 이미 정리한 메모리에 대해 혼동을 일으키는 경우가 있습니다.

정상적인 작동 방식:

  1. 📝 Redis가 메모리에 데이터를 생성합니다
  2. 🔍 해당 데이터를 무언가에 사용합니다
  3. 🗑️ 사용이 끝나면 메모리를 정리합니다
  4. ✅ 모든 것이 안전합니다

실제 작동 방식 (버그):

  1. 📝 Redis가 메모리에 데이터를 생성합니다
  2. 🔍 해당 데이터를 무언가에 사용합니다
  3. 🗑️ 메모리를 정리합니다
  4. 🔍 데이터를 다시 사용하려고 시도합니다 (하지만 이미 사라졌습니다!)
  5. 💥 모든 것이 무너집니다 그리고 이것이 재미삼아 악용됩니다 ;)

해커는 이것을 어떻게 사용하나요?

  • 공격 대상: Redis의 Lua 스크립팅 시스템
  • 사용 명령어: EVAL 및 EVALSHA (Lua 스크립트를 실행하는 명령어)
  • 목적: 메모리를 덮어쓰고 임의 코드를 실행하기 위해

이것을 어떻게 고치나요?

지금 바로 하세요 (첫 24시간)

  1. 모든 Redis 서버를 찾으세요 (생각보다 많을 수 있습니다)
  2. 버전을 확인하세요 (8.2.1 이하는 모두 취약합니다. 업데이트가 필요합니다!)
  3. Lua 스크립트를 끄세요 (즉시 공격을 차단합니다)
  4. 업그레이드를 계획하세요 (이것이 진짜 해결책입니다)

빠른 해결책 (지금 공격 중단!)

root@kitploit:~
# Lua 스크립트 끄기 (공격을 차단합니다)
redis-cli ACL SETUSER default -@scripting

# 또는 redis.conf 파일을 편집하고 다음 줄을 추가하세요:
disable-commands eval evalsha

# 그다음 Redis를 재시작합니다
sudo systemctl restart redis

네트워크 잠그기

root@kitploit:~
# 특정 IP만 Redis에 연결하도록 허용
iptables -A INPUT -p tcp --dport 6379 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROP

# Redis가 특정 네트워크 인터페이스에서만 수신하도록 설정
bind 127.0.0.1 10.0.0.100

적절한 비밀번호 설정

root@kitploit:~
# 강력한 비밀번호 설정
redis-cli CONFIG SET requirepass "fuckredis1234ilovehacking!"

# 제한된 권한을 가진 사용자 생성
redis-cli ACL SETUSER appuser on >password +@read +@write -@scripting
redis-cli ACL SETUSER readonly on >password +@read -@scripting

Redis 업데이트 (진짜 해결책)

root@kitploit:~
# 먼저 데이터를 백업하세요 (항상 이렇게 하세요!)
sudo cp -r /var/lib/redis /var/lib/redis.backup.$(date +%Y%m%d)

# 수정된 버전으로 Redis 업데이트
# Ubuntu/Debian에서:
sudo apt update && sudo apt install redis-server=8.2.2*

# CentOS/RHEL에서:
sudo yum update redis

# 작동하는지 확인
redis-server --version

수정 사항이 실제로 작동하는지 테스트

스크립트가 차단되는지 확인

root@kitploit:~
# 수정이 작동한다면 이 명령은 실패해야 합니다
redis-cli -a "YourPassword" EVAL "return 'test'" 0
# 표시되어야 함: (error) ERR unknown command 'EVAL'

네트워크 보안 확인

root@kitploit:~
# Redis가 네트워크에서 접근 가능한지 확인
nmap -p 6379 your-redis-server

# 비밀번호가 필요한지 테스트
redis-cli -h your-redis-server -p 6379 ping
# 비밀번호를 요구해야 합니다

이 공격을 어떻게 발견하나요?

네트워크에서의 징후

  • Lua 스크립트 사용 패턴 증가
  • 누군가 매우 크거나 복잡한 스크립트를 보내는 경우
  • 매우 빠르게 실행되는 많은 스크립트
  • 명백히 의심스러운 스크립트

서버에서의 징후

  • Redis가 계속 충돌하거나 재시작됨
  • 메모리 사용량이 급격히 오르내림
  • Redis가 이상한 네트워크 연결을 만듦
  • 접근하면 안 되는 파일이 접근됨

로그 확인

root@kitploit:~
# 이상한 Lua 스크립트 활동 찾기
grep -i "eval\|evalsha" /var/log/redis/redis.log

# 실패한 로그인 시도 확인
grep -i "auth" /var/log/redis/redis.log

# 스크립트 오류 찾기
grep -i "script" /var/log/redis/redis.log

이 취약점을 악용하는 것이 얼마나 어려운가요?

꽤 복잡합니다 (무슨 일이 일어나는지 모른다면)

  • Redis가 내부적으로 어떻게 작동하는지 이해해야 합니다
  • 메모리 트릭: Redis가 메모리를 관리하는 방식을 교란해야 합니다
  • Lua 실력: Lua 스크립트 작성에 능숙해야 합니다
  • 완벽한 타이밍: 정확한 순간에 버그를 트리거해야 합니다

실제 익스플로잇의 모습

  1. 이상한 메모리 패턴 생성: Redis가 메모리를 특정 방식으로 배열하도록 Lua 스크립트 작성
  2. 정리 프로세스 속이기: Redis가 잘못된 시점에 메모리를 정리하도록 유도
  3. 메모리 깨기: Redis가 이미 삭제된 메모리를 사용하도록 유발
  4. 코드 실행: 깨진 메모리를 사용하여 원하는 무엇이든 실행

이것이 실제로 얼마나 심각한가요?

해킹당하면 어떤 일이 발생하나요?

  • 완전한 장악: 해커가 서버에서 원하는 무엇이든 실행할 수 있습니다
  • 모든 데이터: Redis 데이터베이스의 모든 것을 볼 수 있습니다
  • 다른 서버로 확산: 여러분의 서버를 사용해 다른 시스템을 공격할 수 있습니다
  • 숨어 있기: 수정했다고 생각한 후에도 접근 권한을 유지할 수 있습니다

이것이 비즈니스에 의미하는 바

  • 데이터 유출: 모든 민감한 정보가 도난당할 수 있습니다
  • 모든 것이 중단: Redis 서비스가 작동을 멈출 수 있습니다
  • 법적 문제: 데이터를 보호하지 않아 벌금을 물 수 있습니다
  • 신뢰 상실: 고객이 알게 되면 떠날 수 있습니다

기술적으로 들어가 봅시다

Redis의 어떤 부분이 취약한가요?

  • Lua 스크립팅 엔진 (eval 및 evalsha 명령어)
  • Redis의 메모리 관리 방식
  • 가비지 컬렉션 시스템 (사용하지 않는 메모리 정리)

메모리가 어떻게 깨지나요?

버그는 다음 상황에서 발생합니다:

  • Lua에서 특정 패턴의 객체를 생성할 때
  • Redis의 메모리 참조 계산 방식을 교란할 때
  • 잘못된 시점에 Redis가 메모리를 정리하도록 강제할 때
  • Redis가 메모리를 관리하는 타이밍을 악용할 때

영향을 받는 버전

  • Redis 버전 8.2.1 이하
  • Lua 스크립팅이 켜져 있는 모든 버전
  • 이 버그는 약 13년 동안 존재해 왔습니다 (아이고!)

익스플로잇의 모습 (학습용)

기본 구조 (실제로 작동하지 않습니다)

root@kitploit:~
-- 이것은 단지 구조가 어떤지 보여주기 위한 것입니다
local function create_memory_pattern()
    -- Redis의 메모리 정리를 교란하는 객체 생성
    local objects = {}
    for i = 1, 1000 do
        objects[i] = {data = "pattern_" .. i}
    end
    return objects
end

local function trigger_gc()
    -- 잘못된 시점에 Redis가 메모리를 정리하도록 강제
    collectgarbage("collect")
    -- 여기서 메모리 버그가 발생합니다
end

-- 메인 공격 구조
local objects = create_memory_pattern()
-- 메모리 참조 교란
-- 가비지 컬렉션 강제
-- 깨진 메모리를 사용하여 코드 실행

자신을 어떻게 보호하나요?

네트워크 잠그기

  • 방화벽 규칙 설정
  • Redis가 인터넷 전체와 통신하지 못하게 하기
  • 네트워크 트래픽 모니터링
  • 로깅 켜기

접근 권한 통제

  • 강력한 비밀번호 사용
  • 사용자 권한 설정 (ACL)
  • 필요한 접근 권한만 부여
  • 정기적으로 접근 권한 확인

문제 감시

  • 로그 확인
  • Redis 성능 모니터링
  • 이상한 동작 감시
  • 문제 발생 시 대응 계획 수립

안전하게 테스트하고 싶으신가요?

실제 시스템을 망가뜨리지 않고 이것이 어떻게 작동하는지 보고 싶다면, Docker를 사용할 수 있습니다:

root@kitploit:~
# 테스트용 Redis 시작 (이것은 취약합니다)
docker run -d --name redis-test -p 6379:6379 redis:6.0

# 테스트
cd scanner
./rscan -host localhost -port 6379

# 취약한 것을 중지하고 수정된 것을 시작
docker stop redis-test
docker run -d --name redis-fixed -p 6379:6379 redis:6.0 redis-server --rename-command EVAL "" --rename-command EVALSHA ""
./rscan -host localhost -port 6379

# 끝나면 정리
docker stop redis-fixed && docker rm redis-fixed

고급 기능 (원한다면)

모든 옵션

root@kitploit:~
cd scanner
./rscan --help

여러 서버 스캔

다음과 같은 hosts.txt 파일을 만드세요:

root@kitploit:~
# 여기에 서버를 넣으세요
server1.com
server2.com:6380
192.168.1.100
redis.example.com:6379

더 빠르게 만들기

root@kitploit:~
# 더 많은 워커를 사용하여 더 빠르게 스캔 (서버가 많을 경우)
./rscan -host server1.com,server2.com -workers 20

필요한 것

  • Go 1.21+ (스캐너 빌드용)
  • redis-cli (Redis 연결용)
  • Docker (선택 사항, 안전한 테스트용)

업그레이드가 모든 것을 망가뜨린 경우

root@kitploit:~
# 백업으로 롤백
sudo systemctl stop redis
sudo rm -rf /var/lib/redis
sudo cp -r /var/lib/redis.backup.$(date +%Y%m%d) /var/lib/redis
sudo systemctl start redis

법적 고지

이것은 학습과 자신의 시스템 보호를 위한 것입니다. 다른 사람의 서버를 해킹하는 데 사용하지 마세요 - 그것은 불법입니다. 바보가 되지 마세요.

출처 !!

  • 공식 CVE 페이지
  • Wiz Research 블로그
  • Redis 보안 문서
  • CVE 상세 정보
도구 다운로드