본문 바로가기

웹해킹

웹해킹 #4 커맨드 인젝션

1. 커맨드 인젝션 - 이론

 

- 웹 요청 메시지에 임의의 시스템 명령어를 삽입하고 전송하여 웹 서버에서 해당 명령어를 실행하도록 하는 공격
-
공격 결과 호스트 내부의 명령어 실행 가능

 

일반적인 Ping 명령 사용

 

커맨드 인젝션 공격

- ‘;’ 는 복수의 명령어 실행하고자 할 때 사용 -> x.x.x.x;cat /etc/passwd -> 패스워드 알게 됨

 

2. 커맨드 인젝션 - 실습

 

- 그냥 IP 주소를 입력하여 ping 명령 결과 확인

- 커맨드 인젝션 실습 문제 source 파일을 확인

- shell_exec() 함수를 통해 명령을 수행 중! -> shell_exec 함수와 같이 쉘을 직접 호출하여 명령어를 수행하는 함수를 코드에 사용하면 취약점이 생길 수 있음!

 

- ;ls 입력해보기

시스템내의 파일 목록 확인 가능

- ;cat /etc/passwd 입력해보기

시스템 사용자의 비밀번호 노출됨

 

3. 커맨드 인젝션 공격 대응

 

- 직접적으로 시스템 명령어를 호출하지 않는 것이 가장 좋은 방법

: 소스코드 레벨에서 exec()이나 system()과 같은 직접적으로 명령어를 실행하는 함수를 사용하지 않고, - 프로그래밍 언어 및 라이브러리에서 자체적으로 제공하는 함수 사용

   ex. System(“mkdir $dir_name”) -> mkdir($dir_name)

-시스템 명령어를 사용할 수밖에 없는 경우는 사용자 입력값이 명령어에 사용될 수 없도록 점검

-입력값 검증

 

추후에 bwapp의 커맨드 인젝션 공격 실습을 난이도별로 풀이과정을 작성할 예정...