[DVWA] - Command Injection

2022. 11. 2. 19:47· Web Hacking/DVWA
목차
  1. ❓ 공격 개요
  2.  
  3. 💻 실습
  4.  
  5. 🔍 대응방안

❓ 공격 개요

Command Injection 개요

커맨드 인젝션(Command Injection)은 명령어를 삽입한다는 뜻으로, 웹 요청 메시지에 임의의 시스템 명령어를 삽입하고 전송하여 웹 서버에서 해당 명령어를 실행하도록 하는 공격이다

 

💻 실습

command injection 메인

 

command injection 의 메인 화면이다

IP 주소를 입력하면 해당 IP 주소로 ping 명령어를 실핸한후 결과를 출력해준다

0.0.0.0을 입력하고 실행해보면 다음과 같이 ping 명령어를 실행한 결과가 출력된다.

 

0.0.0.0 입력후 실행결과

 

소스코드를 확인해 어떻게 동작하는지 알아보자

 

소스코드

 

입력값(웹 요쳥 메시지로부터 전달된 IP 파라미터의 값) 을  target 변수에 저장후

shell_exec() 함수를 호출하여 ping 명령을 실행한다

(리눅스의 경우 -c 옵션이 없다면 횟수 제한 없이 실행하여 응답되지 않게되어 -c 옵션을 설정하였다)

이제 command injection 공격을 해보자

 

이와 같이 ; 뒤에 명령어를 추가함으로써

원격 호스트를 대상으로 시스템 명령어를 자유자재로 실행할 수 있다.

 

실습 단계인 Low 레벨에서는 입력값에 검증이 따로 이루어지지 않기때문에

앞에 아이피를 생략하고 바로 ;ls 명령어를 입력해도 실행이 가능하다

또한

 실습에서는  ; 를 사용했지만

"&", " |" ," `" 등 다양한 다중명령어를 사용할 수 있다.

 

❓ 다중 명령어 종류

종류 설명 작동가능OS
세미콜론( ; ) 하나의 명령어 라인에서 여러개의 명령어를 실행하는 것으로, 명령어의 성공여부는 중요하지 않고, 단순히 앞의 명령어 부터 순차적으로 실행을 한다. UNIX
앰퍼샌드( & ) 앞의 명령어는 백그라운드로 실행하고, 즉시 뒤의 명령어를 실행하게 된다. 따라서 앞의 명령어가 백그라운드에서 실행되므로 뒤의 명령어는 앞쪽 명령어의 실행의 완료 여부에 상관없이 실행된다. UNIX
Window
버티컬바( | ) 앞의 명령어의 실행결과를 뒤의 명령어의 입력으로 넘기는 기능을 한다. 파이프(Pipe)라고 많이 불리며, grep명령어와 묶어서 많이 사용한다. UNIX
Window
더블앰퍼샌드( &&) 앞에 있는 명령어가 실패하면 뒤에 있는 명령어를 실행하지 않는다. UNIX
Window

더블버티멀바( || ) 앞에 있는 명령어가 성공하면 뒤에 있는 명령어를 실행하지 않는다. UNIX
Window

줄바꿈(0x0a or \n)
  UNIX
` command ` command 실행결과 출력 UNIX
$( command ) command 실행결과 출력 UNIX

 

🔍 대응방안

 

1. 입력 값 검증

 

<블랙리스트 검증>

= 각종 문자열들을 차단하는 방법

> 일부공격을 간단히 막을순 있지만 우회공격은 차단불가

> 정상적인 문자열을 공격으로 판단하는 오탐( false-positive ) 의 가능성이 있음

 

medium 소스코드


<화이트 리스트 검증>

= 입력값이 웹 애플리케이션이 필요로 하는 데이터의 형식과 일치할 때만 허용, 그 외의 모든값은 차단하는 방법

> 오직 필요한 값만 허용하기때문에 우회공격에도 안전하다

impossible 소스코드

 

2. 애플리케이션은 운영체제로부터 명령어를 직접적으로 호출하지 않도록 구현

 - exec(), system() 과같은 직접적으로 명령어를 실행하는 함수를 사용하지않고, 프로그래밍 언어 및 라이브러리에서 자체적으로 제공하는 함수 사용

(명령어를 직접 호출하는 것이 필요한 경우에는, 데이터가 OS의 명령어 해석기에 전달되기 전에 입력 값을 검증/확인하도록 구현)

 

저작자표시 (새창열림)

'Web Hacking > DVWA' 카테고리의 다른 글

[DVWA] - Insecure CAPTCHA  (0) 2022.11.09
[DVWA] - File Upload  (0) 2022.11.08
[DVWA] - File Inclusion  (0) 2022.11.07
[DVWA] - CSRF(Cross Site Request Forgery)  (1) 2022.11.06
[DVWA] - Brute Force  (0) 2022.11.02
  1. ❓ 공격 개요
  2.  
  3. 💻 실습
  4.  
  5. 🔍 대응방안
'Web Hacking/DVWA' 카테고리의 다른 글
  • [DVWA] - File Upload
  • [DVWA] - File Inclusion
  • [DVWA] - CSRF(Cross Site Request Forgery)
  • [DVWA] - Brute Force
po3nyo
po3nyo
po3nyo
공부기록장
po3nyo
전체
오늘
어제
  • 분류 전체보기 (208)
    • Programming (13)
      • HTML (0)
      • JavaScript (1)
      • CSS (1)
      • PHP (1)
      • Java (2)
      • Database (7)
      • Python (1)
      • C (0)
    • Web Hacking (28)
      • Web (14)
      • DVWA (12)
      • Bee-Box (0)
    • Reverse Engineernig (11)
      • study (11)
      • lena (0)
    • System Hacking (0)
    • Forensics (0)
    • Cryptography (0)
    • Wargame (58)
      • root-me.org (19)
      • webhacking.kr (0)
      • los.rubiya.kr (0)
      • TryHackMe (0)
      • HackerFactory.co.kr (0)
      • dreamhack.io (0)
      • picoctf.org (27)
      • Hackme.org (11)
      • CTF (1)
    • OS (6)
      • Windows (1)
      • LINUX (5)
    • Algorithm (22)
      • BOJ (22)
      • 기타 (0)
    • Tools (14)
    • Etc (7)
    • 알쓸신잡 (5)
    • 전공 (40)
      • 운영체제 (11)
      • 정보통신 (13)
      • 소프트웨어공학 (9)
      • 컴퓨터 구조 (7)

블로그 메뉴

  • 방명록

공지사항

인기 글

태그

  • html
  • sql 분법
  • picoCTF
  • Hackme.org
  • dvwa
  • 정보보호
  • 취약점
  • ceate
  • 웹해킹
  • 모의해킹
  • rootmeorg
  • SQL
  • order by절
  • wirteup
  • 알쓸신잡
  • 정보보안
  • 침투
  • dvwa실습
  • writeup
  • php
  • Python
  • rootme
  • 정보통신
  • Hackmechallenge
  • 레코드 제한
  • OWASP
  • sql 조건문
  • mus1c
  • Infosec
  • sql 데이터타입

최근 댓글

최근 글

🔒 · Designed By 정상우.v4.2.2
po3nyo
[DVWA] - Command Injection
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.