도카이트

[DVWA] Command Injection (Low) 본문

Web/DVWA

[DVWA] Command Injection (Low)

dodoh4t 2022. 5. 16. 22:22
728x90
반응형

Command Injection

웹 요청 메시지에 임의의 시스템 명령어를 삽입하고 전송하며,

웹 서버에서 해당 명령어를 실행하도록 하는 공격을 의미한다.

 

 

페이지 화면

[DVWA - Command Injection]

- IP를 입력할 수 있는 폼이 화면에 보인다!

- 그래도 아직 잘 모르니 먼저 해당 문제의 소스코드를 살펴보도록 하자.

 

 

소스코드

[Command Injection 페이지 - 소스코드]

- 사용자가 IP를 입력하고 submit을 클릭하면..

- 입력한 IP를 대상으로 ping을 총 4번 보내는 코드인 듯하다.

- $cmd 변수와 shell_exec로 보아 운영체제의 명령을 실행할 수 있으며

- Command Injection 공격에 취약한 부분이 있을듯 하다!

- 먼저 해당 기능이 잘 작동하는지 확인하기 위해 임의의 IP 주소를 입력해보도록 하자!

 

 

localhost를 대입하여 Submit

[localhost 대입 후 Submit 결과]

- 127.0.0.1 을 입력하여 Submit을 하면 화면과 같이 127.0.0.1에 대한 ping 결과가 출력된다 !

 

먼저 Command Injection 공격에 사용되는 내가 알고 있는 다중 명령 특수문자를 이용하여 공격을 시도해보았다!

세미 콜론(;)파이프라인(|) 두 개의 사용 방법을 알고 있기에, 두 가지 방법으로 공격을 시도보았다.

 

 

세미 콜론(;) 과 파이프라인(|)을 이용한 공격 시도

 1. 세미 콜론(;)을 이용한 다중 명령어 실행

[세미 콜론을 이용한 Command Injection]

- 세미 콜론(;) : 하나의 명령어 라인에서 여러 개의 명령을 실행 가능

- 첫 번째 명령이 실행 실패하더라도, 두 번째 명령이 그대로 실행된다.

- ping 127.0.0.1 명령이 먼저 실행된 후, ls -al 명령어가 실행되어 출력되는 형식이다!

 

 

 2. 파이프라인을 이용한 다중 명령어 실행

[파이프라인을 이용한 Command Injection]

- 파이프라인(|) : 앞의 명령어 출력 결과를 뒤에 실행하는 명령어의 입력 값으로 삽입

- 파이프라인을 사용 시 여러 명령을 동시에 연결하여 사용 가능하다

 

 

이 외에 추가로 Command Injection에 사용할 수 있는 다중 명령 특수문자를 찾아서 검색해보고 직접 실습에

사용해보았다!! 추가로 공부하고 사용한 특수문자로 더블 앤드퍼센트(&&), 더블 버티컬 바(||)는 다음과 같다!

 

 

 3. 더블 앰퍼샌드(&&)

[더블 앰퍼샌드를 이용한 Command Injection]

- 더블 앰퍼샌드(&&) : 첫 번째 명령이 에러 없이 정상적으로 종료했을 경우, 두 번째 명령을 실행

- 세미 콜론(;) 과 다르게, 첫 번째 명령이 정상적으로 실행됐을 경우만 뒤의 두 번째 명령 실행한다.

- 입력 값 첫 번째 명령어에 에러가 발생할 수 있는 값을 삽입하여 submit 할 경우, 아무 명령어도 실행되지 않는다 !

 

 

 4. 더블 버티컬 바(||)

[더블 버티컬 바를 이용한 Command Injection]

- 더블 버티컬 바(||) : 첫 번째 명령에서 에러가 발생할 경우, 두 번째 명령을 실행

- 첫 번째 명령어에서 에러를 고의적으로 발생시킨 후 || 을 이용하여 ls -al 명령어 실행 가능

728x90

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

[DVWA] File Upload (Low)  (0) 2022.05.19
[DVWA] File Inclusion (Low)  (0) 2022.05.18
[DVWA] CSRF (Low)  (0) 2022.05.18
[DVWA] Brute Force (Low)  (0) 2022.05.16
[DVWA] DVWA 설치 및 기본 환경 구축  (0) 2022.05.16
Comments