Hacking Study/Web Hacking

[DVWA] 커맨드 인젝션 공격

_Metamong 2024. 5. 25. 15:28

Security Level : low

 

IP 주소를 입력하면 Ping을 실행한 후 결과를 리턴해주는 페이지입니다. 로컬 IP 주소인 127.0.0.1을 입력하고 실행하면 몇 초 정도 지나면 결과가 리턴됩니다.

 

 

소스 코드를 보면 shell_exec 함수는 시스템 명령어를 내리는 함수입니다. ping c 4$target 이라는 변수가 오는데 이 target 변수는 request 즉 웹 요청으로부터 전달된 ip 값임을 알 수 있습니다.

 

 

터미널에서는 ping c 4 127.0.0.1 식으로 실행하게 되는데 여기서 c는 핑을 보내는 횟수를 의미합니다.

 

 

ping c 4 127.0.0.1 세미콜론과 ls를 입력하면 디렉토리 내용이 출력됩니다

 

 

ip를 주지 않고 ls와 같이 입력하는 것도 가능합니다.

 

 

 

cat /etc/password를 입력하면 시스템 사용자의 리스트가 출력됩니다.

 

 

그리고 세미콜론 id를 해보면 현재 권한을 알 수 있는데 현재 데몬이라는 웹 애플리케이션을 실행하는 권한입니다.

 

 

 

Security Level : Medium

 

세미콜론을 지움으로써 커맨드 인젝션 공격에 대응하고 있습니다.

 

 

파이프는 앞 명령의 결과를 뒤에 명령어 입력으로 넘겨줄 때 사용하는 특수문자입니다.

 

 

 

Security Level : High

 

 

불필요한 문자들을 모두 검사해서 지우고 있습니다. 하지만 파이프 뒤에 공백이 하나 들어갔습니다.

 

 

 

Security Level : impossible

 

ip로 입력받은 값을 점이라는 문자로 구분하고 있습니다. ip 주소의 경우 숫자 4개로 구성이 되기 때문에 구분된 각각의 값이 숫자인지를 확인하는 방법으로 입력된 값이 ip 주소가 맞는지 검증하고 있습니다.