DVWA 웹 보안 실습#2 / Command Injection

Young Hun Park·2023년 4월 6일
0
post-custom-banner

이번에는 Command Injection에 대하여 알아보고 간단히 실습을 진행해보겠습니다.

Command Injection이란?

Command Injection은 보기와 같이 사용자로부터 받은 입력을 내부적으로 시스템 명령어의 인자로서 사용하는 서비스에서 악의적으로 ";" 등의 키워드를 통해 다른 시스템 명령어를 덧붙여 실행시키는 공격을 말합니다.

위 예시와 같이 사용자로 부터 ip주소를 입력을 받아서 내부적으로 ping 명령어를 실행시키는 서비스가 있습니다.

여기에 ";" 키워드를 붙혀서 추가적인 시스템 명령어인 ls를 붙혀 보내면 놀랍게도 ls 명령어의 실행결과도 반환되는 것을 볼 수 있습니다.

DVWA Security 단계 별 대응

1. low 단계 : 대응 없음.

2. medium 단계 :

 // Remove any of the charactars in the array (blacklist).
    $substitutions = array(
        '&&' => '',
        ';' => '',
    ); 

위와 같이 입력에서 '&&', ';' 문자들을 blacklist에 추가하여 삭제함으로써 공격에 대응하고 있습니다.

3. high 단계 :

// Split the IP into 4 octects
    $octet = explode(".", $target);
    
    // Check IF each octet is an integer
    if ((is_numeric($octet[0])) && (is_numeric($octet[1])) && (is_numeric($octet[2])) && (is_numeric($octet[3])) && (sizeof($octet) == 4)  ) 

high 단계에서는 입력이 실제로 ip주소 형식을 띠는지 면밀하게 검사하기 위해 '.'을 기준으로 분할하여 숫자인지 확인하는 방식으로 공격에 대응하고 있는 것을 볼 수 있습니다.

Reference :
rjswn0315.tistory.com/150

PS.
읽어주셔서 감사합니다!!
개인적으로 처음 접하는 부분들을
혼자 공부하면서 진행하다 보니 부족한 점이 많습니다. 
항상 정확하고 좋은 글을 쓰려고 노력하겠지만
부족한 부분을 발견하시면 언제든지 말씀해주시면 감사하겠습니다!!

profile
개발자에게 유용한 지식
post-custom-banner

0개의 댓글