본문 바로가기

Dreamhack/웹해킹

Blind Command Injection

Blind Command Injection은 웹 애플리케이션에서 사용자가 입력한 명령어가 서버에서 실행되지만, 그 결과는 웹 페이지에 직접 출력되지 않는 취약점입니다. 공격자는 명령어 실행 결과를 직접적으로 확인할 수 없지만, 간접적인 방법(예: 응답 시간, HTTP 상태 코드, 출력 내용 변화)을 통해 명령어 실행 여부를 유추해야 합니다.


Blind Command Injection의 주요 특징

  • 출력 없음: 명령어를 실행한 결과가 웹 페이지에 표시되지 않음을 의미합니다. 즉, 명령어 실행 결과가 웹 페이지에 그대로 출력되지 않으며, 그 결과를 직접적으로 확인할 수 없습니다.
  • 간접적인 반응: 간접적인 반응은 명령어 실행 결과가 웹 페이지에 출력되지 않지만, 서버의 다른 반응을 통해 명령어의 실행 여부를 유추할 수 있는 방식입니다. 이 반응은 여러 가지 형태로 나타날 수 있으며, 가장 일반적인 방법은 응답 시간, HTTP 상태 코드, 또는 서버 동작의 변화입니다.

1. 응답 시간 기반 공격 (Time-based Blind Command Injection)

Time-based Blind Command Injection은 명령어 실행 후 서버의 응답 시간을 이용해 명령어 실행 여부를 유추하는 기법입니다. 명령어가 성공하면 일정 시간 동안 대기하게 만들고, 실패하면 대기하지 않습니다. 이로 인해 공격자는 응답 시간을 통해 명령어가 실행되었는지 확인할 수 있습니다.

예시 : http://example.com/?cmd=ls; if [ -f /etc/passwd ]; then sleep 5; fi

  • ls 명령어 후, /etc/passwd 파일이 존재하면 5초 동안 대기하게 됩니다.
  • 만약 응답 시간이 5초 길어지면, 명령어가 실행되었고, /etc/passwd 파일이 존재한다고 유추할 수 있습니다.
  • 반대로, 응답 시간이 짧으면 /etc/passwd 파일이 존재하지 않다고 추론할 수 있습니다.

2. 조건 기반 공격 (Boolean-based Blind Command Injection)

Boolean-based Blind Command Injection은 조건문을 사용하여, 특정 명령어가 성공했을 때 서버의 반응을 통해 명령어의 실행 여부를 판단하는 기법입니다. 예를 들어, if 조건문을 사용하여 파일 존재 여부나 디렉토리 상태를 확인할 수 있습니다.

2-1 예시: http://example.com/?cmd=ls; if [ -f /etc/passwd ]; then echo "File exists"; fi

  • /etc/passwd 파일이 존재하면 "File exists"가 출력됩니다.
  • 만약 "File exists"가 웹 페이지에 출력된다면, /etc/passwd 파일이 존재한다고 유추할 수 있습니다.
  • 반대로 출력되지 않으면 파일이 존재하지 않음을 알 수 있습니다.

2-2 예시 : http://example.com/?cmd=ls; if [ -d /home ]; then echo "Directory exists"; fi

  • 출력 여부를 통해 디렉토리 존재 여부를 알 수 있습니다.

방어 방법: 입력값 검증 및 필터링

핵심 포인트: 사용자가 입력한 값에 대해 허용된 값만을 처리하고, 시스템 명령어에 삽입될 수 있는 위험한 문자나 명령어를 차단합니다.

방법:

  1. 특수 문자 제거: 쉘에서 사용되는 메타문자(;, &, |, $( ), ``` 등)을 제거하거나 이스케이프 처리하여 명령어 실행에 영향을 주지 않도록 합니다.
  2. 화이트리스트: 허용된 명령어만 실행하도록 제한합니다. 예를 들어, ls, cat 명령어만 실행을 허용하고, 다른 명령어는 차단합니다.
  3. 정규 표현식: 입력값이 특정 형식에 맞는지 확인하는 정규 표현식을 사용하여 허용된 입력만 처리합니다.

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

SSRF  (0) 2025.04.01
Command Injection  (0) 2025.04.01
(드림핵) Carve Party  (0) 2025.04.01
(드림핵) SSRF  (0) 2025.04.01
File Download Vulnerability  (0) 2025.03.24