본문 바로가기

웹 모의해킹

버퍼 오버플로우 취약점

✅  1. 정의

  • 주로 C, C++ 등 메모리 관리를 개발자가 직접 해야 하는 언어에서 발생
  • Stack 기반 오버플로우와 Heap 기반 오버플로우로 분류됨
  • 버퍼 오버플로우는 프로그래밍 시 고정 크기 버퍼(메모리 공간)에 데이터가 초과로 입력되어, 인접한 메모리 공간까지 덮어써지는 취약점이다.
    이로 인해 제어 흐름(예: 리턴 주소, 함수 포인터 등)이 변조되어 공격자가 임의의 코드를 실행할 수 있다.

🎯 2. 공격 목적

  • 시스템 정보 탈취 (ex: uname -a, id, whoami)
  • 셸 획득 (Shell Injection) → 시스템 권한 탈취
  • 서비스 거부(DoS) → 메모리 오류 유발
  • 백도어 삽입 등 악성 행위 수행

🎬 3. 실습 예시 시나리오

💻 시나리오 개요:

  • 로그인 폼의 ID 입력 필드가 최대 20자 제한
  • 버퍼 사이즈 제한이 있지만, 서버 측 검증이 부실
  • 입력값에 명령어 삽입 시 시스템 함수(system)가 호출됨

📌 실습 입력값 예시: aaaaaaaaaaaaaaaaaaaa;system('uname -a');

위 입력값은 의도적으로 입력 버퍼를 초과시키고, 이어서 system() 함수를 호출해 리눅스 서버의 커널 및 플랫폼 정보를 반환하도록 시도

🛡️ 4. 보안 대응방안 (보호대책)

✅ 입력값 검증 강화

  • 서버 단에서 입력값 길이 제한유효성 검사 적용
  • 입력값에 특수문자 필터링 및 escape 처리

✅ 시큐어 코딩 적용

  • 안전한 함수 사용 (예: strncpy, snprintf, memcpy_s 등)
  • 동적 메모리 사용 시 적절한 사이즈 체크

✅ 보안 진단/분석 수행

  • 정적 분석 도구 활용하여 코드 내 위험 함수 식별
  • 소스코드 보안 진단 및 리팩토링 적용

✅ 시스템 보호기법 활용

  • 스택 보호 기법 (Stack Canaries) 활성화
  • ASLR(Address Space Layout Randomization) 적용
  • DEP(Data Execution Prevention) 적용

📎 5. 참고

'웹 모의해킹' 카테고리의 다른 글

SQL 인젝션  (0) 2025.06.08
운영체제 명령 실행 취약점  (0) 2025.05.30
프록시 설치(Fiddler Classic)  (0) 2025.05.30