코더는 보안을 정복 : 공유 및 학습 시리즈 - OS 명령 주입
OS 명령 주입 공격은 응용 프로그램에서 사용자가 셸에 입력할 수 있지만 입력 문자열이 유효한지 확인하는 작업을 수행하지 않을 때마다 발생할 수 있습니다. 이렇게 하면 공격자가 응용 프로그램을 호스팅하는 운영 체제에 직접 명령을 삭제하고 손상된 응용 프로그램에 대해 설정된 권한 수준이 있습니다.
OS 명령 주입 공격은 엔트리 레벨과 숙련도가 적은 해커에 의해 수행 될 수 있습니다, 이는 보안 팀이 경험하는 가장 일반적인 약점 중 하나를 만든다. 고맙게도, 성공을 방지 하는 매우 효과적인 방법이 꽤 있다. 이 에피소드에서는 다음을 배우게 됩니다.
작동 방식
왜 그렇게 위험합니까?
방어를 막기 위해 어떻게 방어할 수 있을까요?
공격자는 OS 명령 주입을 어떻게 사용합니까?
공격자가 OS 명령 주입 공격을 시작하기 위해 가장 먼저 해야 할 일은 응용 프로그램 내에서 사용자 입력을 찾는 것입니다. 사용자가 작성하는 양식은 잠재적으로 포인트에서 뛰어 내리는 것이 좋습니다. 가장 영리한 공격자는 쿠키 나 HTTP 헤더와 같은 것을 발사 점으로 사용할 수 있습니다.
두 번째로 해야 할 일은 운영 체제가 응용 프로그램을 호스팅하는 지 파악하는 것입니다. 선택의 소수만 있다는 것을 감안할 때, 시행 착오는 이 단계에 대해 잘 작동할 수 있습니다. 대부분의 응용 프로그램 서버는 Windows 기반 (Windows의 맛이 일반적으로 중요하지 않음), 일부 유형의 Linux 상자 또는 가능성 유닉스가 될 것입니다.
이 시점에서 해커는 입력을 수정하여 운영 체제 명령을 무해한 입력으로 삽입합니다. 이렇게 하면 호스팅 OS가 응용 프로그램이 있는 권한 수준에서 의도하지 않은 명령을 실행해야 합니다.
예를 들어 응용 프로그램 내의 유효한 사용자가 파일 내용을 보려면 다음 명령을 사용할 수 있습니다.이 경우 월별 이사회 회의의 메모가 표시됩니다.
임원("고양이" + 파일 이름)
예제에서는 다음 명령을 실행하고 모임 메모를 사용자에게 다시 반환합니다.
$ ./고양이 회의노트.txt
7월 회의에는 집행위원회 위원 3명이 참석했다. 새로운 예산 프로젝트가 논의되었지만 아무런 조치나 투표가 취해지지 않았습니다.
이는 공격자가 리눅스에서 디렉터리 내용을 나열하는 데 사용되는 명령과 같이 입력 끝에 추가 명령을 추가할 때 발생하는 일입니다. 이 경우 모임 노트를 표시하는 원래 명령이 여전히 수행됩니다. 그러나 악의적인 사용자는 디렉터리에 있는 다른 모든 명령과 후속 OS 명령 주입 공격에 사용할 수 있는 다른 명령도 표시됩니다. 그들은 입력 :
$ ./고양이 회의 노트.txt & ls
그리고 대신이것을 얻을 :
7월 회의에는 집행위원회 위원 3명이 참석했다. 새로운 예산 프로젝트가 논의되었지만 아무런 조치나 투표가 취해지지 않았습니다.
미팅노트.txt
6월회의노트.txt
메이미팅노트.txt
형식.c
미스널.c
메모 오류.c
트렌던스.c
글을 쓰는곳.c
당신이 볼 수 있듯이, 이 경우, 뿐만 아니라 해커는 디렉토리의 내용을 표시 했다, 하지만 또한 그들은 사용할 수 있는 다른 명령의 메뉴를 주어진 " 그들은 지금 그들은 호스트 운영 체제에서 실행할 수 있습니다 알고 명령.
OS 명령 주입 공격이 왜 그렇게 위험합니까?
사용자가 대상 응용 프로그램의 목적을 우회하고 운영 체제 명령을 실행하는 데 사용할 수 있도록 하는 것은 매우 위험합니다. 공격자는 기밀 데이터를 도용하거나 서버 드라이브 전체서를 서식하는 등 파괴적인 작업을 쉽게 수행할 수 있습니다. 공격자가 사용할 수 있는 옵션은 운영 체제 내에서 허용되는 명령과 사용 창의력으로만 제한됩니다.
OS 명령은 응용 프로그램과 동일한 권한 수준에서 실행됩니다. 관리 권한이 있는 앱은 이를 손상시키는 해커가 모든 OS 명령을 실행할 수 있음을 의미합니다.
OS 명령 주입에 대한 공격 패턴은 잘 알려져 있고 문서화되어 있습니다. 취약한 응용 프로그램은 전문 해커만큼 스크립트 키디에 취약합니다. 기술이 거의 없는 공격자는 OS 명령을 잘라내고 응용 프로그램에 붙여 넣을 수 있습니다.
OS 명령 주입에 대한 보안 확인 받기
OS 명령 주입을 중지 할 수있는 몇 가지 좋은 기술이 있습니다. 첫 번째 단계는 기능을 수행하는 데 필요한 최소 한량의 권한으로 응용 프로그램을 실행하는 것입니다. 이는 공격을 방지하지 는 않지만 위반이 발생하면 피해가 최소화됩니다.
대부분의 프로그래밍 언어와 프레임워크는 디렉터리 콘텐츠 목록, 하드 디스크에서 파일 작성 또는 읽기와 같은 일반적인 OS 메서드에 대한 API 호출을 제공합니다. 사용자 환경에서 OS 명령 주입을 제거하는 한 가지 완벽한 방법은 모든 응용 프로그램에서 OS 명령 대신 이러한 API 호출을 직접 사용하도록 하는 것입니다.
이 작업을 사용할 수 없는 경우 OS 명령에서 사용자 입력을 사용하기 전에 사용자 입력의 유효성을 검사합니다. 화이트리스트를 사용하여 작은 신뢰할 수 있는 값 집합만 사용할 수 있습니다. 블랙리스트를 사용하여 이 작업을 기술적으로 수행할 수 있지만 허용되는 명령은 훨씬 적을 수 있으므로 화이트리스팅이 거의 항상 쉽습니다. 유효한 POST 및 GET 매개 변수를 화이트리스트에 포함시키는 것을 잊지 말고 쿠키와 같은 사용자 입력 벡터를 간과하는 경우가 많습니다.
마지막으로 사용 가능한 프로그래밍 API가 없고 화이트리스트를 사용할 수 없는 경우 소독 라이브러리를 사용하여 OS 명령에서 사용할 수 있는 사용자 입력의 특수 문자를 이스케이프합니다.
OS 명령 주입 공격에 대한 자세한 정보
추가 읽기를 위해 OS 명령 주입 공격에 대한 OWASP 작성을 살펴 볼 수 있습니다. 또한 새로운 방어 지식을 테스트에 넣을 수 있습니다. Secure Code Warrior 사이버 보안 팀이 궁극적인 사이버 전사가 될 수 있도록 하는 플랫폼. 이 취약점을 물리치는 것에 대해 자세히 알아보려면 Secure Code Warrior 블로그.
OS 명령 주입 공격은 엔트리 레벨과 숙련도가 적은 해커에 의해 수행 될 수 있습니다, 이는 보안 팀이 경험하는 가장 일반적인 약점 중 하나를 만든다. 고맙게도, 성공을 방지 하는 매우 효과적인 방법이 꽤 있다.
야프 카란 싱은 보안 코딩 전도자, 수석 싱 및 공동 설립자입니다 Secure Code Warrior .
Secure Code Warrior 는 전체 소프트웨어 개발 수명 주기에서 코드를 보호하고 사이버 보안을 최우선으로 생각하는 문화를 조성할 수 있도록 도와드립니다. 앱 보안 관리자, 개발자, CISO 등 보안과 관련된 모든 사람이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 도와드릴 수 있습니다.
데모 예약야프 카란 싱은 보안 코딩 전도자, 수석 싱 및 공동 설립자입니다 Secure Code Warrior .
OS 명령 주입 공격은 응용 프로그램에서 사용자가 셸에 입력할 수 있지만 입력 문자열이 유효한지 확인하는 작업을 수행하지 않을 때마다 발생할 수 있습니다. 이렇게 하면 공격자가 응용 프로그램을 호스팅하는 운영 체제에 직접 명령을 삭제하고 손상된 응용 프로그램에 대해 설정된 권한 수준이 있습니다.
OS 명령 주입 공격은 엔트리 레벨과 숙련도가 적은 해커에 의해 수행 될 수 있습니다, 이는 보안 팀이 경험하는 가장 일반적인 약점 중 하나를 만든다. 고맙게도, 성공을 방지 하는 매우 효과적인 방법이 꽤 있다. 이 에피소드에서는 다음을 배우게 됩니다.
작동 방식
왜 그렇게 위험합니까?
방어를 막기 위해 어떻게 방어할 수 있을까요?
공격자는 OS 명령 주입을 어떻게 사용합니까?
공격자가 OS 명령 주입 공격을 시작하기 위해 가장 먼저 해야 할 일은 응용 프로그램 내에서 사용자 입력을 찾는 것입니다. 사용자가 작성하는 양식은 잠재적으로 포인트에서 뛰어 내리는 것이 좋습니다. 가장 영리한 공격자는 쿠키 나 HTTP 헤더와 같은 것을 발사 점으로 사용할 수 있습니다.
두 번째로 해야 할 일은 운영 체제가 응용 프로그램을 호스팅하는 지 파악하는 것입니다. 선택의 소수만 있다는 것을 감안할 때, 시행 착오는 이 단계에 대해 잘 작동할 수 있습니다. 대부분의 응용 프로그램 서버는 Windows 기반 (Windows의 맛이 일반적으로 중요하지 않음), 일부 유형의 Linux 상자 또는 가능성 유닉스가 될 것입니다.
이 시점에서 해커는 입력을 수정하여 운영 체제 명령을 무해한 입력으로 삽입합니다. 이렇게 하면 호스팅 OS가 응용 프로그램이 있는 권한 수준에서 의도하지 않은 명령을 실행해야 합니다.
예를 들어 응용 프로그램 내의 유효한 사용자가 파일 내용을 보려면 다음 명령을 사용할 수 있습니다.이 경우 월별 이사회 회의의 메모가 표시됩니다.
임원("고양이" + 파일 이름)
예제에서는 다음 명령을 실행하고 모임 메모를 사용자에게 다시 반환합니다.
$ ./고양이 회의노트.txt
7월 회의에는 집행위원회 위원 3명이 참석했다. 새로운 예산 프로젝트가 논의되었지만 아무런 조치나 투표가 취해지지 않았습니다.
이는 공격자가 리눅스에서 디렉터리 내용을 나열하는 데 사용되는 명령과 같이 입력 끝에 추가 명령을 추가할 때 발생하는 일입니다. 이 경우 모임 노트를 표시하는 원래 명령이 여전히 수행됩니다. 그러나 악의적인 사용자는 디렉터리에 있는 다른 모든 명령과 후속 OS 명령 주입 공격에 사용할 수 있는 다른 명령도 표시됩니다. 그들은 입력 :
$ ./고양이 회의 노트.txt & ls
그리고 대신이것을 얻을 :
7월 회의에는 집행위원회 위원 3명이 참석했다. 새로운 예산 프로젝트가 논의되었지만 아무런 조치나 투표가 취해지지 않았습니다.
미팅노트.txt
6월회의노트.txt
메이미팅노트.txt
형식.c
미스널.c
메모 오류.c
트렌던스.c
글을 쓰는곳.c
당신이 볼 수 있듯이, 이 경우, 뿐만 아니라 해커는 디렉토리의 내용을 표시 했다, 하지만 또한 그들은 사용할 수 있는 다른 명령의 메뉴를 주어진 " 그들은 지금 그들은 호스트 운영 체제에서 실행할 수 있습니다 알고 명령.
OS 명령 주입 공격이 왜 그렇게 위험합니까?
사용자가 대상 응용 프로그램의 목적을 우회하고 운영 체제 명령을 실행하는 데 사용할 수 있도록 하는 것은 매우 위험합니다. 공격자는 기밀 데이터를 도용하거나 서버 드라이브 전체서를 서식하는 등 파괴적인 작업을 쉽게 수행할 수 있습니다. 공격자가 사용할 수 있는 옵션은 운영 체제 내에서 허용되는 명령과 사용 창의력으로만 제한됩니다.
OS 명령은 응용 프로그램과 동일한 권한 수준에서 실행됩니다. 관리 권한이 있는 앱은 이를 손상시키는 해커가 모든 OS 명령을 실행할 수 있음을 의미합니다.
OS 명령 주입에 대한 공격 패턴은 잘 알려져 있고 문서화되어 있습니다. 취약한 응용 프로그램은 전문 해커만큼 스크립트 키디에 취약합니다. 기술이 거의 없는 공격자는 OS 명령을 잘라내고 응용 프로그램에 붙여 넣을 수 있습니다.
OS 명령 주입에 대한 보안 확인 받기
OS 명령 주입을 중지 할 수있는 몇 가지 좋은 기술이 있습니다. 첫 번째 단계는 기능을 수행하는 데 필요한 최소 한량의 권한으로 응용 프로그램을 실행하는 것입니다. 이는 공격을 방지하지 는 않지만 위반이 발생하면 피해가 최소화됩니다.
대부분의 프로그래밍 언어와 프레임워크는 디렉터리 콘텐츠 목록, 하드 디스크에서 파일 작성 또는 읽기와 같은 일반적인 OS 메서드에 대한 API 호출을 제공합니다. 사용자 환경에서 OS 명령 주입을 제거하는 한 가지 완벽한 방법은 모든 응용 프로그램에서 OS 명령 대신 이러한 API 호출을 직접 사용하도록 하는 것입니다.
이 작업을 사용할 수 없는 경우 OS 명령에서 사용자 입력을 사용하기 전에 사용자 입력의 유효성을 검사합니다. 화이트리스트를 사용하여 작은 신뢰할 수 있는 값 집합만 사용할 수 있습니다. 블랙리스트를 사용하여 이 작업을 기술적으로 수행할 수 있지만 허용되는 명령은 훨씬 적을 수 있으므로 화이트리스팅이 거의 항상 쉽습니다. 유효한 POST 및 GET 매개 변수를 화이트리스트에 포함시키는 것을 잊지 말고 쿠키와 같은 사용자 입력 벡터를 간과하는 경우가 많습니다.
마지막으로 사용 가능한 프로그래밍 API가 없고 화이트리스트를 사용할 수 없는 경우 소독 라이브러리를 사용하여 OS 명령에서 사용할 수 있는 사용자 입력의 특수 문자를 이스케이프합니다.
OS 명령 주입 공격에 대한 자세한 정보
추가 읽기를 위해 OS 명령 주입 공격에 대한 OWASP 작성을 살펴 볼 수 있습니다. 또한 새로운 방어 지식을 테스트에 넣을 수 있습니다. Secure Code Warrior 사이버 보안 팀이 궁극적인 사이버 전사가 될 수 있도록 하는 플랫폼. 이 취약점을 물리치는 것에 대해 자세히 알아보려면 Secure Code Warrior 블로그.
OS 명령 주입 공격은 응용 프로그램에서 사용자가 셸에 입력할 수 있지만 입력 문자열이 유효한지 확인하는 작업을 수행하지 않을 때마다 발생할 수 있습니다. 이렇게 하면 공격자가 응용 프로그램을 호스팅하는 운영 체제에 직접 명령을 삭제하고 손상된 응용 프로그램에 대해 설정된 권한 수준이 있습니다.
OS 명령 주입 공격은 엔트리 레벨과 숙련도가 적은 해커에 의해 수행 될 수 있습니다, 이는 보안 팀이 경험하는 가장 일반적인 약점 중 하나를 만든다. 고맙게도, 성공을 방지 하는 매우 효과적인 방법이 꽤 있다. 이 에피소드에서는 다음을 배우게 됩니다.
작동 방식
왜 그렇게 위험합니까?
방어를 막기 위해 어떻게 방어할 수 있을까요?
공격자는 OS 명령 주입을 어떻게 사용합니까?
공격자가 OS 명령 주입 공격을 시작하기 위해 가장 먼저 해야 할 일은 응용 프로그램 내에서 사용자 입력을 찾는 것입니다. 사용자가 작성하는 양식은 잠재적으로 포인트에서 뛰어 내리는 것이 좋습니다. 가장 영리한 공격자는 쿠키 나 HTTP 헤더와 같은 것을 발사 점으로 사용할 수 있습니다.
두 번째로 해야 할 일은 운영 체제가 응용 프로그램을 호스팅하는 지 파악하는 것입니다. 선택의 소수만 있다는 것을 감안할 때, 시행 착오는 이 단계에 대해 잘 작동할 수 있습니다. 대부분의 응용 프로그램 서버는 Windows 기반 (Windows의 맛이 일반적으로 중요하지 않음), 일부 유형의 Linux 상자 또는 가능성 유닉스가 될 것입니다.
이 시점에서 해커는 입력을 수정하여 운영 체제 명령을 무해한 입력으로 삽입합니다. 이렇게 하면 호스팅 OS가 응용 프로그램이 있는 권한 수준에서 의도하지 않은 명령을 실행해야 합니다.
예를 들어 응용 프로그램 내의 유효한 사용자가 파일 내용을 보려면 다음 명령을 사용할 수 있습니다.이 경우 월별 이사회 회의의 메모가 표시됩니다.
임원("고양이" + 파일 이름)
예제에서는 다음 명령을 실행하고 모임 메모를 사용자에게 다시 반환합니다.
$ ./고양이 회의노트.txt
7월 회의에는 집행위원회 위원 3명이 참석했다. 새로운 예산 프로젝트가 논의되었지만 아무런 조치나 투표가 취해지지 않았습니다.
이는 공격자가 리눅스에서 디렉터리 내용을 나열하는 데 사용되는 명령과 같이 입력 끝에 추가 명령을 추가할 때 발생하는 일입니다. 이 경우 모임 노트를 표시하는 원래 명령이 여전히 수행됩니다. 그러나 악의적인 사용자는 디렉터리에 있는 다른 모든 명령과 후속 OS 명령 주입 공격에 사용할 수 있는 다른 명령도 표시됩니다. 그들은 입력 :
$ ./고양이 회의 노트.txt & ls
그리고 대신이것을 얻을 :
7월 회의에는 집행위원회 위원 3명이 참석했다. 새로운 예산 프로젝트가 논의되었지만 아무런 조치나 투표가 취해지지 않았습니다.
미팅노트.txt
6월회의노트.txt
메이미팅노트.txt
형식.c
미스널.c
메모 오류.c
트렌던스.c
글을 쓰는곳.c
당신이 볼 수 있듯이, 이 경우, 뿐만 아니라 해커는 디렉토리의 내용을 표시 했다, 하지만 또한 그들은 사용할 수 있는 다른 명령의 메뉴를 주어진 " 그들은 지금 그들은 호스트 운영 체제에서 실행할 수 있습니다 알고 명령.
OS 명령 주입 공격이 왜 그렇게 위험합니까?
사용자가 대상 응용 프로그램의 목적을 우회하고 운영 체제 명령을 실행하는 데 사용할 수 있도록 하는 것은 매우 위험합니다. 공격자는 기밀 데이터를 도용하거나 서버 드라이브 전체서를 서식하는 등 파괴적인 작업을 쉽게 수행할 수 있습니다. 공격자가 사용할 수 있는 옵션은 운영 체제 내에서 허용되는 명령과 사용 창의력으로만 제한됩니다.
OS 명령은 응용 프로그램과 동일한 권한 수준에서 실행됩니다. 관리 권한이 있는 앱은 이를 손상시키는 해커가 모든 OS 명령을 실행할 수 있음을 의미합니다.
OS 명령 주입에 대한 공격 패턴은 잘 알려져 있고 문서화되어 있습니다. 취약한 응용 프로그램은 전문 해커만큼 스크립트 키디에 취약합니다. 기술이 거의 없는 공격자는 OS 명령을 잘라내고 응용 프로그램에 붙여 넣을 수 있습니다.
OS 명령 주입에 대한 보안 확인 받기
OS 명령 주입을 중지 할 수있는 몇 가지 좋은 기술이 있습니다. 첫 번째 단계는 기능을 수행하는 데 필요한 최소 한량의 권한으로 응용 프로그램을 실행하는 것입니다. 이는 공격을 방지하지 는 않지만 위반이 발생하면 피해가 최소화됩니다.
대부분의 프로그래밍 언어와 프레임워크는 디렉터리 콘텐츠 목록, 하드 디스크에서 파일 작성 또는 읽기와 같은 일반적인 OS 메서드에 대한 API 호출을 제공합니다. 사용자 환경에서 OS 명령 주입을 제거하는 한 가지 완벽한 방법은 모든 응용 프로그램에서 OS 명령 대신 이러한 API 호출을 직접 사용하도록 하는 것입니다.
이 작업을 사용할 수 없는 경우 OS 명령에서 사용자 입력을 사용하기 전에 사용자 입력의 유효성을 검사합니다. 화이트리스트를 사용하여 작은 신뢰할 수 있는 값 집합만 사용할 수 있습니다. 블랙리스트를 사용하여 이 작업을 기술적으로 수행할 수 있지만 허용되는 명령은 훨씬 적을 수 있으므로 화이트리스팅이 거의 항상 쉽습니다. 유효한 POST 및 GET 매개 변수를 화이트리스트에 포함시키는 것을 잊지 말고 쿠키와 같은 사용자 입력 벡터를 간과하는 경우가 많습니다.
마지막으로 사용 가능한 프로그래밍 API가 없고 화이트리스트를 사용할 수 없는 경우 소독 라이브러리를 사용하여 OS 명령에서 사용할 수 있는 사용자 입력의 특수 문자를 이스케이프합니다.
OS 명령 주입 공격에 대한 자세한 정보
추가 읽기를 위해 OS 명령 주입 공격에 대한 OWASP 작성을 살펴 볼 수 있습니다. 또한 새로운 방어 지식을 테스트에 넣을 수 있습니다. Secure Code Warrior 사이버 보안 팀이 궁극적인 사이버 전사가 될 수 있도록 하는 플랫폼. 이 취약점을 물리치는 것에 대해 자세히 알아보려면 Secure Code Warrior 블로그.
OS 명령 주입 공격은 응용 프로그램에서 사용자가 셸에 입력할 수 있지만 입력 문자열이 유효한지 확인하는 작업을 수행하지 않을 때마다 발생할 수 있습니다. 이렇게 하면 공격자가 응용 프로그램을 호스팅하는 운영 체제에 직접 명령을 삭제하고 손상된 응용 프로그램에 대해 설정된 권한 수준이 있습니다.
OS 명령 주입 공격은 엔트리 레벨과 숙련도가 적은 해커에 의해 수행 될 수 있습니다, 이는 보안 팀이 경험하는 가장 일반적인 약점 중 하나를 만든다. 고맙게도, 성공을 방지 하는 매우 효과적인 방법이 꽤 있다. 이 에피소드에서는 다음을 배우게 됩니다.
작동 방식
왜 그렇게 위험합니까?
방어를 막기 위해 어떻게 방어할 수 있을까요?
공격자는 OS 명령 주입을 어떻게 사용합니까?
공격자가 OS 명령 주입 공격을 시작하기 위해 가장 먼저 해야 할 일은 응용 프로그램 내에서 사용자 입력을 찾는 것입니다. 사용자가 작성하는 양식은 잠재적으로 포인트에서 뛰어 내리는 것이 좋습니다. 가장 영리한 공격자는 쿠키 나 HTTP 헤더와 같은 것을 발사 점으로 사용할 수 있습니다.
두 번째로 해야 할 일은 운영 체제가 응용 프로그램을 호스팅하는 지 파악하는 것입니다. 선택의 소수만 있다는 것을 감안할 때, 시행 착오는 이 단계에 대해 잘 작동할 수 있습니다. 대부분의 응용 프로그램 서버는 Windows 기반 (Windows의 맛이 일반적으로 중요하지 않음), 일부 유형의 Linux 상자 또는 가능성 유닉스가 될 것입니다.
이 시점에서 해커는 입력을 수정하여 운영 체제 명령을 무해한 입력으로 삽입합니다. 이렇게 하면 호스팅 OS가 응용 프로그램이 있는 권한 수준에서 의도하지 않은 명령을 실행해야 합니다.
예를 들어 응용 프로그램 내의 유효한 사용자가 파일 내용을 보려면 다음 명령을 사용할 수 있습니다.이 경우 월별 이사회 회의의 메모가 표시됩니다.
임원("고양이" + 파일 이름)
예제에서는 다음 명령을 실행하고 모임 메모를 사용자에게 다시 반환합니다.
$ ./고양이 회의노트.txt
7월 회의에는 집행위원회 위원 3명이 참석했다. 새로운 예산 프로젝트가 논의되었지만 아무런 조치나 투표가 취해지지 않았습니다.
이는 공격자가 리눅스에서 디렉터리 내용을 나열하는 데 사용되는 명령과 같이 입력 끝에 추가 명령을 추가할 때 발생하는 일입니다. 이 경우 모임 노트를 표시하는 원래 명령이 여전히 수행됩니다. 그러나 악의적인 사용자는 디렉터리에 있는 다른 모든 명령과 후속 OS 명령 주입 공격에 사용할 수 있는 다른 명령도 표시됩니다. 그들은 입력 :
$ ./고양이 회의 노트.txt & ls
그리고 대신이것을 얻을 :
7월 회의에는 집행위원회 위원 3명이 참석했다. 새로운 예산 프로젝트가 논의되었지만 아무런 조치나 투표가 취해지지 않았습니다.
미팅노트.txt
6월회의노트.txt
메이미팅노트.txt
형식.c
미스널.c
메모 오류.c
트렌던스.c
글을 쓰는곳.c
당신이 볼 수 있듯이, 이 경우, 뿐만 아니라 해커는 디렉토리의 내용을 표시 했다, 하지만 또한 그들은 사용할 수 있는 다른 명령의 메뉴를 주어진 " 그들은 지금 그들은 호스트 운영 체제에서 실행할 수 있습니다 알고 명령.
OS 명령 주입 공격이 왜 그렇게 위험합니까?
사용자가 대상 응용 프로그램의 목적을 우회하고 운영 체제 명령을 실행하는 데 사용할 수 있도록 하는 것은 매우 위험합니다. 공격자는 기밀 데이터를 도용하거나 서버 드라이브 전체서를 서식하는 등 파괴적인 작업을 쉽게 수행할 수 있습니다. 공격자가 사용할 수 있는 옵션은 운영 체제 내에서 허용되는 명령과 사용 창의력으로만 제한됩니다.
OS 명령은 응용 프로그램과 동일한 권한 수준에서 실행됩니다. 관리 권한이 있는 앱은 이를 손상시키는 해커가 모든 OS 명령을 실행할 수 있음을 의미합니다.
OS 명령 주입에 대한 공격 패턴은 잘 알려져 있고 문서화되어 있습니다. 취약한 응용 프로그램은 전문 해커만큼 스크립트 키디에 취약합니다. 기술이 거의 없는 공격자는 OS 명령을 잘라내고 응용 프로그램에 붙여 넣을 수 있습니다.
OS 명령 주입에 대한 보안 확인 받기
OS 명령 주입을 중지 할 수있는 몇 가지 좋은 기술이 있습니다. 첫 번째 단계는 기능을 수행하는 데 필요한 최소 한량의 권한으로 응용 프로그램을 실행하는 것입니다. 이는 공격을 방지하지 는 않지만 위반이 발생하면 피해가 최소화됩니다.
대부분의 프로그래밍 언어와 프레임워크는 디렉터리 콘텐츠 목록, 하드 디스크에서 파일 작성 또는 읽기와 같은 일반적인 OS 메서드에 대한 API 호출을 제공합니다. 사용자 환경에서 OS 명령 주입을 제거하는 한 가지 완벽한 방법은 모든 응용 프로그램에서 OS 명령 대신 이러한 API 호출을 직접 사용하도록 하는 것입니다.
이 작업을 사용할 수 없는 경우 OS 명령에서 사용자 입력을 사용하기 전에 사용자 입력의 유효성을 검사합니다. 화이트리스트를 사용하여 작은 신뢰할 수 있는 값 집합만 사용할 수 있습니다. 블랙리스트를 사용하여 이 작업을 기술적으로 수행할 수 있지만 허용되는 명령은 훨씬 적을 수 있으므로 화이트리스팅이 거의 항상 쉽습니다. 유효한 POST 및 GET 매개 변수를 화이트리스트에 포함시키는 것을 잊지 말고 쿠키와 같은 사용자 입력 벡터를 간과하는 경우가 많습니다.
마지막으로 사용 가능한 프로그래밍 API가 없고 화이트리스트를 사용할 수 없는 경우 소독 라이브러리를 사용하여 OS 명령에서 사용할 수 있는 사용자 입력의 특수 문자를 이스케이프합니다.
OS 명령 주입 공격에 대한 자세한 정보
추가 읽기를 위해 OS 명령 주입 공격에 대한 OWASP 작성을 살펴 볼 수 있습니다. 또한 새로운 방어 지식을 테스트에 넣을 수 있습니다. Secure Code Warrior 사이버 보안 팀이 궁극적인 사이버 전사가 될 수 있도록 하는 플랫폼. 이 취약점을 물리치는 것에 대해 자세히 알아보려면 Secure Code Warrior 블로그.