
Command Injection (CI) ?
- CI는 입력 값의 취약점을 이용하여 임의 OS명령어를 수행시키는 공격 기법이다.
- 라눅스의 경우 대표적인 CI기법으로 입력 값의 뒤에 ;(세미콜론)과 함께 OS명령어를 삽입하는 방식이 있다.
- 리눅스는 ;로 구분되는 경우 ;를 기준으로 명령어를 순차적으로 수행한다.
DVWA를 이용한 Command Injection 공격
- ** 공격 대상 웹 애플리케이션 **
- IP를 입력받아 해당 IP로 Ping명령어를 수행하는 간단한 웹 애플리케이션이다.
- (ping 127.0.0.1 -c 4)
- c : ping요청 횟수

- 공격 대상 웹 애플리케이션 소스코드

- 공격1
- 입력 값으로 IP(127.0.0.1)뒤에 ; ls -al를 수행
- Ping 128.0.0.1 -c 4 와 ls -al 명령어가 모두 수행되었다.

- 공격2
- 입력값으로 IP(127.0.0.1)뒤에 ; cat /etc/passwd 수행
- /etc/passwd 파일은 계정관리를 위한 파일로 cat명령어를 통해 모든 계정정보를 확인할 수 있다.

DVWA의 Medium Level Security
- ;(세미콜론)을 공백으로 치환하는 방법
- Windows의 경우 ';'가 '&&'이므로 '&&'를 공백으로 치환
- 127.0.0.1; cat /etc/passwd 와 같은 입력값은 걸러낼 수 있다.
- but, ';' 외에 리눅스에는 여러 방식의 CI공격 방법이 존재한다.
- 파이프('|'), 백그라운드('&') 등 ..

- 파이프('|'), 백그라운드('&') 등 ..
- 방어하지 못하는 입력값1 (파이프)
- ls -al 명령어가 수행되었다.

- ls -al 명령어가 수행되었다.
- 방어하지 못하는 입력값2 (백그라운드)
- &를 이용하여 Ping명령어를 백그라운드로 돌리고 cat /etc/passwd명령어를 수행시켰다.

- &를 이용하여 Ping명령어를 백그라운드로 돌리고 cat /etc/passwd명령어를 수행시켰다.
DVWA의 High Level Security
- 더 많은 공격 가능한 문자를 공백으로 치환시켰다.
- 애플리케이션의 입력값이 예제 애플리케이션처럼 고정적인 경우 효과적으로 CI공격에 대응 가능하다.

- 애플리케이션의 입력값이 예제 애플리케이션처럼 고정적인 경우 효과적으로 CI공격에 대응 가능하다.
DVWA의 Impossible Level Security
- 공격 가능한 문자를 공백으로 치환하는 방식이 아닌, 입력값 자체를 올바른 입력값인지 검사하는 방식이다.
- 입력값이 IP의 형태를 하는 지 확인한다.
- '.'를 구분자로 하여 입력값을 slice한다.
- slice된 각 값이 숫자인지 확인하고 총 4개로 slice되었는지 확인한다.
- 즉, '.'를 구분자로 했을 때 4개 숫자가 나오는 경우만 정상적인 입력 값으로 판단한다.

'Kali Linux' 카테고리의 다른 글
| Kali Linux - DVWA실습 (SQL Injection) (0) | 2021.08.20 |
|---|---|
| Kali Linux - DVWA실습 (Captcha Attack) (0) | 2021.08.20 |
| Kali Linux - DVWA실습 (File Upload Attack) (0) | 2021.08.20 |
| Kali Linux - DVWA실습 (File Inclusion) (0) | 2021.08.20 |
| Kali Linux - DVWA실습 (Brute Force) (0) | 2021.08.20 |