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 값이 출력 됨을 확인할 수 있다.
'웹해킹 > DVWA' 카테고리의 다른 글
CSRF 공격 (2) (0) | 2020.01.12 |
---|---|
CSRF 공격 (1) (0) | 2020.01.12 |
파일 업로드 공격 대응 방안 (0) | 2020.01.04 |
파일 업로드 공격 (2) (0) | 2020.01.04 |
파일 업로드 공격 (1) (0) | 2020.01.04 |