웹해킹/DVWA

Command Injection 공격 (2)

만년필석사 2020. 1. 4. 15:19
반응형

1. Command Injection 공격 Medium 단계 실습

 

[그림 1-1] ;id 실행

Medium 단계에서 ;id 입력하고 요청을 보내고 결과를 보면 페이지에 어떤 것도 표시되지 않는다.

 

[그림 1-2] 소스 코드

소스 코드를 보면  target 인자값이 IP 주소를 입력 받는다. 그리고 substitutions 인자 값에서 && ; 삭제 한다. 추후 대소문자를 구분하는 str_replace 함수로 입력 받은 target 인자 , substitutions 인자 값을 넘겨준다. 하지만 && ; 두가지 문자열을 삭제해 Command Injection 공격을 방지하려고 했지만 우회가 가능하다.

 

[그림 1-3] ping

ping -c 4 127.0.0.1; id 명령어로 ping 보내봐도 id 값은 출력되지 않고 세션 상태만 출력되서 공격은 되지 않는다.

 

 

[그림 1-4] 입력

코드를 우회하기 위해 ; 입력하지 않고 | id이나 & id 입력 요청을 보내면 id 정보를 획득할 있다. &&, ; 두가지 문자열만 삭제해서는 완벽한 방어가 없는 것이다.

 

[그림 1-5] 리눅스 계정 정보

& cat /etc/passwd 명령어를 입력한 요청을 보내면 리눅스 계정 정보 획득이 가능하다. Medium 단계에선 &, | 문자열로 우회가 가능하다.

 

2. Command Injection 공격 High 단계 실습

 

[그림 2-1] ping

ping -c 4 127.0.0.1& id 명령어를 입력하고 실행하면 id 값은 출력되지 않고 세션 상태만 출력됨을 있다.

 

[그림 2-2] 소스 코드

소스코드를 보면 Command Injection에서 시도될법한 문자열들을 모두 삭제하고 있는 것을 있다. 하지만 세번째 문자열 | 보면 '| ' 되어 있어 코드 오류로 인해 우회가 가능하다.

 

[그림 2-3] ping

& id 값으로 ping 시도 결과 id 값은 출력되지 않고 입력 값에 대한 세션 상태만 출력하고 있다. 

 

 

[그림 2-4] 실행 결과

|id 폼에 입력한 요청을 보낸 결과 값을 우회해서 정상적으로 id 값이 출력 됨을 확인할 있다.

반응형