Job SSul Series 1 : 해킹 방어 실습 - EP10 Command Injection 공격
안녕하세요.
해킹과 방어 시리즈를 연재하고 있는 Ziqon입니다.
이번 편에서는 외부 인터페이스(웹)를 통해 시스템에 직접적으로 command를 전달할 수 있는 취약점을 이용하여
command injection 공격과 방어를 해보겠습니다.
[공격]
http://www.mypage.com:8080/WebGoat-5.4.1/attack에 접속하여 Webgoat의 [Injection Flaws]의 [Command Injection]에 접속하고, AccessControlMatrix.html 파일을 선택한 후 [View File]을 클릭하여 버프에서 패킷을 확인합니다.
패킷의 마지막에 HelpFile=AccessControlMatrix.help 을 HelpFile=AccessControlMatrix.help%22+%26+netstat+-rn&SUBMIT=View 로 치환하여 인젝션을 하면 아래와 같이 netstat -rn 명령어를 입력한 결과가 화면에 뿌려지게 됩니다.
여기서 "& netstat -rn을 인코딩한 값이며 윈도우에서는 명령어 연결자로 &를 사용합니다.
[방어]
- 커맨드 인젝션의 원인은 바로 외부 입력값을 그대로 시스템 함수의 파라미터로 넣기 때문입니다. 보통 시스템 명령어는 외부에서 직접적으로 입력 받아서 실행해서는 안되며 필요한 시스템 함수를 정의하여 약속된 파라미터가 드러올 경우 해당 시스템명령어를 실행할 수 있도록 구현해야 합니다.
-FindBugs에서 탐지된 아래 취약점 결과를 선택합니다.
-역시나 커맨드를 파라미터로 받아 시스템에 직접 실행시킬 수 있는 exec 메소드를 사용하고 있네요.
-앞서 시큐어코딩을 진행했던 것과 동일하게 SecurityFilter에 필터를 추가합니다.
String으로 입력값을 받는 경우와 배열형태로 입력값을 받는 경우 두가지를 고려해 아래와 같이 필터를 코딩합니다.
인젝션에 사용되는 &, ;, | 문자를 치환하는 필터입니다.
-만든 필터를 적용해봐야겠죠? command를 입력받아 실행하는 두군데 모두 입력값 실행 전에 필터를 적용합니다.
-아래와 같이 인젝션에 실패하는 것을 확인할 수 있습니다.
-이번 포스팅에서는 확률적으로는 많이 발생하지는 않지만 발생할 경우 시스템에 치명타를 줄 수 있는 command injection에 대해 알아보았습니다. 보통 웹시스템에서는 많이 발생하지 않지만 그래도 주의주의해서 코딩해야 합니다.
-다음편에서는 가장 치명적이고 잘 발생하는 upload취약점을 이용한 공격과 방어를 실습해보도록 하겠습니다.
Leave Job SSul Series 1 : 해킹 방어 실습 - EP10 Command Injection 공격 to:
Read more #steemit posts
Best Posts From ziqon
We have not curated any of ziqon's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From ziqon
- Job SSul Series 1 : 해킹 방어 실습 - EP11 파일업로드 공격
- Job SSul Series 1 : 해킹 방어 실습 - EP10 Command Injection 공격
- Job SSul Series 1 : 해킹 방어 실습 - EP9 다운로드 취약점 공격
- Job SSul Series 1 : 해킹 방어 실습 - EP8 CRLF Injection
- Job SSul Series 1 : 해킹 방어 실습 - EP7 XSS
- Job SSul Series 1 : 해킹 방어 실습 - EP6 SQL Injection
- 지금 여기!!
- 암호화폐 혁명
- Job SSul Series 1 : 해킹 방어 실습 - EP5 정보 수집
- Job SSul Series 1 : 해킹 방어 실습 - EP4 웹의 기본 구성