Command Injection 개념과 실습
Command Injection 공격은 사용자 입력 값이 운영체제 명령어의 일부 또는 전부로 구성되어 실행되는 경우, 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 악영향을 미치는 공격입니다.
일반적으로 명령어 라인의 파라미터나 스트림 입력 등 외부 입력을 사용하여 시스템 명령어를 생성하는 프로그램에서 발생합니다.
윈도우의 &나 리눅스의 ; 특수문자는 명령어를 이어서 실행하게 한다. 즉, 원래는 특수문자 이전까지의 filename을 실행하는 것이지만 특수문자까지 합쳐져서 그 이후도 실행하게한다.
Command Injection의 동작 방식에 이해를 위해 실습 시스템에서 웹 서버에 먼저 접속합니다.
해당 터미널에서 cat > test.txt로 test.txt 파일을 생성 후 내부에 test를 입력한 후 저장합니다. 이때 다음과 같이 명령어를 연결해주는 특수문자 ;를 사용하여 명령어를 작성합니다. 그럼 cat test.txt가 실행됨과 동시에 ls 명령어도 실행된 것을 확인할 수 있습니다.
이제 실제 Command Injection 공격 실습을 진행해보겠습니다. 마찬가지로 Attacker 가상환경의 브라우저에서 kisa.co.kr에 접속한 후 주어진 관리자 계정의 아이디와 비밀번호로 로그인합니다.
[관리자 메뉴] → [Backup]으로 이동합니다. 여기서 Backup이란 실습을 위한 임의의 서비스로 파일 이름을 입력하면, 그 파일을 내부에서 압축을 하는 것이다. index.html 파일을 만들고 backup을 누르면 다음과 같이 압축 파일이 잘 만들어집니다.
만약 파일 입력 란에 다음과 같이 입력하면 어떨까요?
index.html; ls
역시나 'ls' 명령어의 결과가 출력되는 것을 확인할 수 있습니다.
Command Injection 탐지/필터링
[정책 설정] → [도메인별 정책] → [KISA] → [사용자 정의 탐지] → [사용자 정의 패턴 룰] → [룰 추가]로 이동합니다.
정규표현식을 사용하여 차단하고자 하는 패턴을 설정합니다. 추가된 룰을 적용하는 것은 필수!
다시 공격자 가상환경으로 들어가서 마찬가지로 Backup에 ;ls 명령어를 입력합니다. 추가한 룰셋에 의해 필터링 되는 것을 알 수 있습니다.
마찬가지로 [로그 분석] → [탐지 로그 분석] → [Client IP 31.33.7.12 설정 후 조회 조건 적용]으로 이동하면, 다음과 같이 Command Injection 탐지 로그를 확인할 수 있습니다.
'보안 > 2023 KISA 정보보호 제품군 실습 훈련 - 중급' 카테고리의 다른 글
인프라 구축 시나리오 실습 3(업무망 방화벽/NAT 정책 설정) (0) | 2023.02.18 |
---|---|
인프라 구축 시나리오 실습 2(UTM, WAF 설정 및 정책 적용) (0) | 2023.02.18 |
인프라 구축 시나리오 실습 1(인터페이스 객체 생성 및 웹, 파일 서버 접근 설정) (0) | 2023.02.18 |
웹 방화벽 WAF 실습 1(SQL Injection 탐지/차단) (0) | 2023.02.17 |
통합 보안 시스템 UTM 실습(HFS rejetto 공격 탐지/차단) (0) | 2023.02.15 |