HW_chick hacker
DVWA실습 - Command Execution 본문

Command Injection 이란?

Command Injection 취약점은 취약한 애플리케이션을 실행 중인 서버에서 임의의 운영체제 명령을 실행할 수 있는 취약점을 의미한다.
이 취약점이 존재할 경우 애플리케이션을 구동하고 있는 시스템 계정의 쉘 권한을 획득한 것과 같기 때문에 위험도가 높은 취약점 중 하나이다.
low 단계

IP를 입력하는 곳에 IP를 넣으면 ping 테스트를 한다.
여기서 박스안에 코드를 유추 할 수 있다.
ping -c 3 {IP}
ping은 3개만 보내고 종료가 되고 있다. ' or " 두개로 함수가 묶여 있을거 같아 탈출하고 리눅스 명령어를 삽입해보겠다.

8.8.8.8'; ls -al
탈출 시키고 리스트 목록을 검색하면 위 그림과 같이 프론트 단에서 리눅스 서버 쉘을 볼 수 있다.
medium 단계
low단계에서 했던 방식은 안된다.
| 명령어 | 설명 |
| ; (세미콜론) | 하나의 라인에 입력된 명령어들을 성공, 실패와 관계 없이 모두 실행한다. |
| & (엠퍼센트) | 엠퍼센트로 명령어를 구분하여 앞의 명령어는 백그라운드로 실행하고, 즉시 뒤의 명령어를 실행한다. 앞 명령어의 성공 여부와 관계 없이 뒤 명령어는 실행된다. |
| && (더블 엠퍼센트) | 앞에 입력된 명령어가 실패하면 뒤에 있는 명령어를 실행하지 않는다. |
| | (버티컬 바) | 앞에 입력된 명령어의 실행 결과를 뒤 명령어의 입력으로 넘겨준다. |
| || (더블 버티컬 바) | 앞에 입력된 명령어가 성공하면 뒤에 있는 명령어는 실행되지 않는다. |
다중 명령어를 입력할 수 있는 특수문자를 활용해 우회해서 공격해 보겠다.

| ls
이전에 ;(세미콜론)과 &&(더블 엠퍼센트)를 입력하여 Command Injection 공격을 수행하였을 때는 Medium 레벨에서 실패하였기 때문에 다른 다중 명령어를 입력할 수 있는 특수문자를 사용하여 Command Injection 공격을 추가로 시도한 모습이다.
다른 다중 명령 입력 특수문자(&,|)를 입력하여 Command Injection 공격을 수행하였을 때는 공격에 성공해 시스템 정보가 출력되는 모습을 확인할 수 있었다.
Command Injection 대응방안

Command Injection의 경우 일반적으로 취약한 함수를 사용함으로써 취약한 환경이 만들어지기 때문에 위 사진에 보이는 함수들은 특별한 사유가 없다면 사용을 지양해야 한다.
부득이하게 취약한 함수를 개발에 사용해야 할 경우에는 사용자가 입력한 값을 검증할 수 있는 로직을 구현하는 것이 중요하다.
예시로 이전 실습에서 본 Ping 명령을 수행하는 기능의 경우 특정 IP를 대상으로 기능을 수행하는데 IPv4의 경우 OOO.OOO.OOO.OOO과 같이 8비트씩 .(Dot)을 기준으로 4번 사용하여 총 32비트로 구성되게 된다. 이것을 이용해 8비트씩 .(Dot)을 기준으로 4번만 입력되도록 로직을 위 사진과 같이 구현할 수 있다.
대부분의 Injection 취약점들이 특수문자를 입력함으로써 문제가 발생되기 때문에 불필요한 특수문자 입력을 제한할 수 있는 로직을 구현한다.
'Activity > DVWA' 카테고리의 다른 글
| DVWA실습 -File Inclusion (0) | 2024.07.25 |
|---|---|
| DVWA실습 - SQL Injection (0) | 2024.07.18 |
| DVWA 실습 - Reflected Cross Site Scripting (XSS) (0) | 2024.07.16 |
| DVWA 실습 - Brute Force (0) | 2024.07.12 |