DVWA-Command Injection

2022. 3. 15. 23:13웹취약점/DVWA

운영체제 명령 실행(Command Injection) 공격은 웹 애플리케이션에서 system(), exec()와 같은 시스템 명령어를 실행 시킬 수 있는 함수를 제공하며 사용자 입력값에 대한 필터링이 제대로 이루어지지 않을 경우 공격자가 운영체제 시스템 명령어를 호출하여 백도어 설치나 관리자 권한 탈취 등 시스템 보안에 심각한 영향을 미칠 수 있는 취약점.

 

 

점검방법: -URL 파라미터 값 부분에 운영체제 명령어를 입력하는 방법.

             -입력폼에 명령어를 입력하는 방법.

 

 

메타 문자

메타문자 설명
' ' 명령어 치환:  ' ' 안에 들어있는 문자로 치환
$ ( ) 명령어 치환:  $ ( ) 안에 들어있는 문자로 치환 해주며 중복으로 사용가능
&& 명령어 연속 실행:  한줄에 여려 명령어 실행. 단 앞 명령어의 오류가 없어야 뒷 명령어가 실행가능
| | 명령어 연속 실행:  한줄에 여려 명령어 실행. 단 앞 명령어의 오류가 발생시 뒷 명령어가 실행가능
; 명령어 구분자: 한줄에 여려 명령어 실행. 앞 명령어를 구분할때 사용
| 파이프: 앞명령어 입력이 뒷 명령어 입력으로 실행

 

실습

 

실습환경 Windows10
실습사이트 DVWA
유형 운영체제 명령실행- 입력폼삽입공격

 

 

Level-Low

 

 

접속 시 IP주소를 입력하는 폼이 나옵니다.

 

127.0.0.1

아이피 입력 시 핑이 나가는 것을 확인할 수 있다.

 

 

127.0.0.1 && ls -al

메타 문자 "&&"를 사용하여 시스템 함수 "ls -al"을 입력하면 디렉터리 목록이 표출되어 공격이 된 것을 볼 수 있다.

 

 

 

Level-Medium

 

소스코드를 확인해보면 "substitutions": 문자열에서 해당 문자를 찾아 다른 문자로 변경한다. 즉 "&&", " ; "  -> " ' ' " 문자로 치환하여 필터링을 하고 있다.  

 

127.0.0.1 | cat /etc/passwd

하지만 Command Injection 공격은 여러 가지 메타 문자를 사용할수있다. 필터링 되지 않은 메타문자 "|"를 사용하면 된다.

 

 

 

 

Level-High

 

 

 

아까보다 더 많은 문자를 필터링하고 있는 것이 보인다. 하지만 '| ' 이문자를 자세히 보게 되면 파이프 다음에 공백이 있는 것을 볼 수 있다. 그러므로 파이프는 필터링이 되지 않았다고 볼 수 있다.

 

127.0.0.1|id

파이프를 사용해 사용자 정보를 호출하게 되면 사용자 정보가 나타나 공격이 성공하는 것을 볼 수 있다.

'웹취약점 > DVWA' 카테고리의 다른 글

DVWA- Brute Force  (0) 2022.03.13