OS Command Injection이란?
- OS Command Injection
OS Command Injection은 운영체제 명령어 주입 또는 시스템 명령어 주입 공격을 의미한다.
사용자 입력값에 시스템 명령어를 주입해서
클라이언트가 서버에 원격으로 시스템 명령어를 실행할 수 있게 되는 공격이다. - 시스템 명령어 실행
시스템 명령어 실행은 해킹에서 아주 강력한 행위로, 공격자는 서버를 제어할 수 있다.
서버 강제 종료를 통해 가용성을 침해하거나, 랜섬웨어를 유포하는 등 모든 공격이 가능하다.
인근 데이터베이스나 내부망, 오피스망으로 침투하여 더 큰 피해가 이어질 수 있다.
따라서, OS Command Injection은 위험도가 매우 높은 취약점이라 할 수 있다. - SQL Injection vs OS Command Injection
Injection 공격은 기능에 따라 발생하는 취약점이 다르다.
공격 대상 공격 행위 SQL Injection DB와 연결된 Application SQL 구문 주입
→ 중요 데이터 탈취OS Command Injection 사용자 입력값을 통해
시스템 명령을 실행하는 Application시스템 명령어 주입
→ 데이터 탈취,
인접 네트워크 침투,
서버 점령 등
(위험도 높음) - OS Command Injection의 위험도가 높은데 SQL Injection이 더 주목 받는 이유
OS command injection 취약점이 발생하려면, 사용자 입력 값을 받아서 시스템 명령을 실행하는 기능이 있어야 한다. 그런데 이러한 기능은 대부분 서버 사이드 스크립트로 구현 가능하기 때문에 일반적인 웹 서비스에서는 필요하지 않다. 웹 서비스 관리자 콘솔에 시스템 명령을 실행하는 부분이 존재하는 특수한 환경에서만 발생하는 취약점으로, 취약점 발생 확률이 굉장히 낮다. 하지만, 데이터베이스는 거의 모든 웹사이트에서 사용되기 때문에 SQL Injection 취약점이 많이 발생되어 더 주목 받게 된 것이다.
공격 원리
- 공격 과정
공격자가 사용자 입력 값에 시스템 명령어를 주입하면
입력 값 검증 없이 구문이 조합되어 공격에 성공한다.
- 취약점 발생 원인 : 입력 값 검증 부재
- 공격 예시
공격자는 한 줄의 명령어에 두 개 이상의 시스템 명령어를 입력할 수 있는 메타 문자 (&, &&, |, ||) 를 넣는다.정상 입력값 nslookup www.test.co.kr 비정상 입력값 nslookup www.test.co.kr & ifconfig
뒤에 있는 명령어를 통해 공격자가 원하는 기능을 수행할 수 있다.
대응 방안
- 서버 사이드 스크립트로 기능 구현
- 사용자 입력 값 형식에 따른 정규 표현식 검증
- 악의적인 문자 검증
'Security > Web Hacking' 카테고리의 다른 글
| [Web Hacking] Dreamhack - Background : Web (2) | 2024.09.02 |
|---|---|
| [Web Hacking] 파라미터 변조 취약점 (Parameter Tampering Vulnerability) (0) | 2024.08.20 |
| [Web Hacking] 파일 업로드 취약점 (File Upload Vulnerability) (0) | 2024.08.19 |
| [Web Hacking] URL 접근 제한 미흡 취약점 (Failure to Restrict URL Access Vulnerability) (0) | 2024.08.15 |
| [Web Hacking] XXE Injection (0) | 2024.04.30 |