"느슨한 입술 싱크 선박 "차 세계 대전 동안 미국에서 인기를 끌었다 문구였다. 영국에서는 "부주의한 이야기가 생명을 요하는 것"이라는 말을 들었습니다. 말의 요점은 민감한 정보에 대한 부주의한 말하기가 스파이에 의해 들리지 않고 심각한 결과를 초래할 수 있다는 것이었습니다.
웹 응용 프로그램을 빌드할 때도 동일한 원칙이 적용됩니다. 웹 앱에 정보가 너무 많이 드러나면 공격자가 쉽게 침입할 수 있습니다.
이 게시물에서는 정보 노출이 무엇인지, 왜 위험한지, 이를 방지하는 방법을 다룰 것입니다.
VIDEO
정보 노출 이해 정보 노출은 내부 정보를 볼 수 없는 사람들에게 노출되는 웹 응용 프로그램을 말합니다. 또한 로그 파일이나 사용자 인터페이스를 통해 중요한 고객 정보를 노출하는 것을 참조할 수도 있습니다. 어느 쪽이든 공격자는 찾은 정보를 사용하여 시스템 이나 사용자를 공격할 수 있습니다.
공격자의 첫 번째 단계는 응용 프로그램 내에서 오류를 만드는 것입니다. 오류 처리가 잘못되고 웹 응용 프로그램 구성이 오류 메시지와 함께 정보 노출로 이어집니다. 공격자가 응용 프로그램 내에서 오류를 생성하면 어떻게 됩니까? 스택 추적과 같은 기술적 세부 정보를 포함하여 기술적 오류 메시지가 나타나면 너무 많은 정보가 공개되었습니다. 이러한 세부 정보에는 사용 중인 데이터베이스 또는 실행 중인 응용 프로그램 서버의 버전이 포함될 수 있습니다.
민감한 정보 공개는 다른 방법으로 발생할 수 있습니다. 중요한 정보를 포함하는 양식에 숨겨진 필드가 있습니까? 공격자는 페이지의 소스를 보고 값을 볼 수 있습니다.
간단히 말해서, 사용자와 알아야 할 정보를 너무 쉽게 액세스할 수 있게 되면 정보 노출이 발생합니다.
정보 노출이 위험한 이유 이해 공격자가 응용 프로그램에서 노출된 정보로 무엇을 할 수 있습니까? 정보가 본질적으로 중요한 경우 공격자는 ID 또는 사용자 자격 증명을 도용할 수 있습니다. 이로 인해 재정적 손해, 개인 정보 침해 및 규제 벌금이 부과될 수 있습니다.
공격자가 오류 메시지를 사용하여 응용 프로그램에 대한 정보를 얻는 경우 해당 정보는 향후 공격에 사용될 수 있습니다. 실제로 OWASP 테스트 가이드에는 정보 수집에 대한 전체 섹션이 있습니다.
OWASP 테스트 가이드는 검색 엔진을 사용하여 의도하지 않을 수 있는 웹사이트에 대한 정보를 찾아보도록 권장합니다. 예를 들어 관리 페이지가 검색 엔진에 노출되어 있습니까? 로봇.txt 파일을 사용하여 검색 엔진에 특정 페이지를 색인하지 말라고 지시합니다. 동시에, 로봇.txt 파일뿐만 아니라 정보를 누설 할 수 있습니다. 민감한 URL은 때때로 로봇.txt 파일에 상주할 수 있습니다. 공격자는 파일을 아래로 끌어내어 사이트의 디렉터리 구조 중 일부를 배우기 시작합니다.
Google has advanced search engine options which allow deep inspection of websites. For example, you can search on a specific site using the "site: <domain>" syntax. You can view cached pages which may have been deleted but still reside in a cache from a previous indexing job. Using different search engines, such as Bing and DuckDuckGo may yield different results, so test on each search engine what is revealed about your web application.</domain>
HTTP 헤더, 웹 사이트 배너, HTML 및 JavaScript 코드 내의 의견도 정보 공격자가 볼 수 없습니다. HTTP 헤더는 응용 프로그램 서버와 버전 번호를 표시할 수 있습니다. 공격자는 이 정보를 사용하여 특정 버전에 대해 사용할 악용을 찾을 수 있습니다. 공격자가 귀하의 정보를 찾을 수 있는 모든 장소와 적절하게 숨기는 방법을 이해해야 합니다.
정보 노출 패배 정보 공개는 종종 웹 응용 프로그램 구성에 문제가 됩니다. 많은 응용 프로그램 서버가 기본적으로 오류 메시지에서 스택 추적을 반환합니다. 문제 해결을 위해 오류를 기록하는 동안 프로덕션 응용 프로그램이 일반 오류 페이지로 리디렉션되도록 이 설정을 변경해야 합니다. 자세한 오류 메시지는 사용자의 브라우저로 반환해서는 안 됩니다.
중요한 정보가 포함된 응용 프로그램에 필요한 파일이 있는 경우 적절한 액세스 제어를 통해 응용 프로그램 자체만 읽을 수 있는지 확인합니다. 서버의 디렉터리 목록을 사용하지 않도록 설정하고 이러한 파일을 웹 루트 디렉토리 외부로 이동합니다. 이렇게 하면 공격자가 디렉터리 트래버스 공격을 사용하여 브라우저를 사용하여 파일로 탐색할 수 없습니다.
로그를 사용하여 올바르게 구성되지 않을 때 정보를 수집할 수 있습니다. 오류가 발생하면 암호, 세션 토큰 또는 개인 식별 정보(PII)와 같은 중요한 정보를 기록하지 마십시오. 공격자가 로그 파일에 액세스할 수 있다면 훔칠 중요한 정보의 보물을 찾을 수 있습니다. 일반적으로 계정 식별자, 자세한 오류 메시지, 오류가 발생하거나 수행 중인 작업 메서드인 필요 이상으로 기록하지 마십시오. 로그 파일이 비밀이 아니며 중요한 정보를 그 안에 배치하려는 유혹을 받지 않는다고 가정합니다.
웹 앱을 싱크하지 마십시오. 당신은 정말 친구에게 말하는 동안 정보를 유출 할 수, 직접 차 세계 대전에서 손실되는 전함으로 이어지는? 아마 아닐 거예요. 그런데 왜 위험을 감수해야 합니까? "느슨한 입술이 배를 가라 앉히는다"는 말의 교훈입니다.
마찬가지로 웹 응용 프로그램의 내부 작업을 외부 세계에 노출할 이유가 없습니다. 전체 신용 카드 번호 또는 암호를 볼 이유가 없습니다. 로그 파일에 PII 데이터를 가질 이유가 없습니다. 그래서 그것을하지 마십시오. 학습 리소스를 확인하여 정보 노출에 대해 자세히 알아보십시오.
응용 프로그램의 내부 작업을 해당 응용 프로그램의 속한 위치에 유지합니다. 웹 앱을 싱크하지 마십시오.
지금 정보 노출을 중단할 수 있다고 생각하십니까? 도전, 전사까지 단계 : [여기에서 시작]