로컬 파일 침입(LFI) 공격이란 무엇이며 걱정해야 합니까?
웹 서버는 웹 응용 프로그램을 구성하는 파일(웹 페이지, 사진, 비디오, 양식 등)을 호스팅하고 누군가가 웹 사이트를 방문할 때 이러한 파일을 제공합니다. 일부 서버는 고급이며 웹 방문자가 얼마나 많은 액세스 권한을 가지고 있는지 제어합니다. 일반 방문자가 다른 사용자의 계정이나 관리 대시보드에 액세스하지 못하도록 제한할 수 있습니다. 웹 서버는 자신이 수행하는 작업에 효율적이고 비교적 안전하게 수행하지만 공격자는 서버가 호스트하는 파일을 제공하는 방식에서 인적 오류 또는 결함이 있는 논리로 인해 발생하는 오류를 악용할 수 있습니다.
LFI 공격이란 무엇입니까?
LFI(로컬 파일 침입) 공격은 공격자가 웹 서버가 파일에 대한 액세스를 저장, 제공, 확인 또는 제어하는 방식의 취약점을 악용할 때 발생합니다. 이 취약점은 PHP 기반 웹사이트에 공통적입니다.
공격자가 응용 프로그램을 손상시키기 위해 맬웨어에 의존하는 많은 형태의 사이버 공격과 달리 LFI의 공격자는 대부분 영리한 속임수와 짧은 코드 라인에 의존합니다. 여기에는 정교한 도구나 복잡한 스크립트가 거의 필요하지 않습니다. 공격은 일반적으로 웹 브라우저에서 발생합니다. 공격자가 사용하는 가장 일반적인 트릭은 코드, 파일 경로 또는 파일 이름으로 URL 문자열을 수정하는 것입니다.
LFI 공격은 어떻게 발생합니까?
LFI 공격은 일반적으로 4단계로 발생합니다.
첫째, 공격자는 일반적으로 웹 응용 프로그램(예: 사이트)이 명령을 처리하는지 확인하기 위해 브라우저 URL에서 기본 코드를 실행하여 취약한 웹 응용 프로그램을 실행하는 PHP 웹 사이트를 식별합니다. 게임 컨트롤러의 키 조합을 눌러 이스터 에그의 잠금을 해제하는 것과 같습니다. 예를 들어 Super Mario에서 아래쪽 키를 눌러 터널에 들어가는 것과 같습니다. 그러나 공격자가 LFI 공격에서 실행하는 명령은 Super Mario의 모든 터널을 검사하는 것보다 더 일관성이 있습니다.
부적절하게 구성되었거나 입력 유효성 검사에 실패한 웹 응용 프로그램 또는 서버는 악성 코드를 실행합니다. 여기에서 해커는 취약한 파일을 읽거나 악의적인 파일을 서버에 업로드하는 데 필요한 액세스 및 권한을 얻을 수 있습니다.
대부분의 LFI 공격은 공격자가 중요한 정보에 액세스하도록 합니다. 웹 애플리케이션이 LFI 취약성이 존재하는 동일한 서버에 파일을 저장할 것이라는 보장이 없기 때문에 맬웨어 업로드 가능성은 거의 성공하지 않습니다. 웹 애플리케이션이 다중 서버 환경에 있는 경우에 자주 발생합니다.
따라서 이미지를 호스팅하는 서버에는 LFI 취약점이 존재하지만 직원 자격 증명이나 사용자 암호를 저장하는 서버에는 존재하지 않는 경우 공격자는 해당 취약한 서버에 있는 이미지 파일에만 액세스할 수 있습니다. 그럼에도 불구하고 LastPass에 대한 공격과 같은 사이버 이벤트는 해커가 겉보기에 가장 중요하지 않은 액세스 수준으로 대혼란을 일으킬 수 있음을 보여줍니다.
LFI 공격을 방지하는 방법
OWASP( Open Web Application Security Project ) 에 따르면 LFI 공격은 매우 일반적 입니다. W3Techs의 보고에 따르면 웹사이트 10곳 중 거의 8곳이 PHP를 서버 측 프로그래밍 언어로 실행하고 있기 때문에 해커들은 이 공격을 선호할 것 입니다. 웹 보안 모범 사례를 채택하여 LFI 공격을 방지할 수 있습니다.
공용 서버 파일 화이트리스트
웹 애플리케이션은 종종 파일 경로를 URL 입력으로 사용합니다. 해커는 파일 경로를 겸하는 URL 부분을 변경하여 이 파일링 시스템을 악용할 수 있습니다. 예를 들어 공격자는 https://dummywebsite.com/?module=contact.php를 https://dummywebsite.com/?module=/etc/passwd로 변경할 수 있습니다. 필터링이 불량하고 논리에 결함이 있는 취약한 서버는 /etc/passwd 경로에 저장된 파일의 내용을 표시합니다.
물론 해커는 일반적인 파일 이름의 변형과 쿼리 문자 조합을 사용하여 성공적인 공격 가능성을 높입니다. 목표는 웹 애플리케이션이 스크립트를 실행하거나 웹 서버에 파일을 표시하도록 속이는 것입니다.
서버에 공개 문서의 화이트리스트를 만들고 다른 모든 문서 또는 파일 경로에 대한 쿼리를 무시하도록 웹 애플리케이션에 지시하여 이 취약점을 차단할 수 있습니다. 따라서 공격자가 비공개를 요청하는 코드를 요청하거나 실행하기 위해 URL을 조작하려고 하면 대신 오류 페이지가 표시됩니다.
자주 취약점 테스트
웹 검색 도구 를 사용 하여 LFI 공격에 노출될 수 있는 취약점을 찾아 수정할 수 있습니다. 웹 앱 스캐너는 공격자처럼 앱을 크롤링하고 잠재적인 취약성을 경고하는 자동화된 도구입니다. OpenVAS 및 Wireshark와 같은 여러 오픈 소스 웹 스캐너가 있지만 대부분의 취약성 스캐너는 독점 소프트웨어이며 사용하려면 유료 요금제가 필요합니다.
그러나 물론 LFI 공격에만 웹 스캐너를 사용할 수는 없습니다. 또한 이러한 도구는 원격 파일 포함, 교차 사이트 스크립팅, SQL 주입, 열악한 서버 구성과 같은 광범위한 보안 취약점을 찾습니다. 그래서 그들은 그만한 가치가 있습니다.
사이트 방문자 권한 제한
해커는 웹 애플리케이션이 사용자 권한을 구획화하지 못하고 방문자가 관리자에게만 표시되어야 하는 파일에 액세스할 수 있기 때문에 LFI 공격을 성공적으로 실행하는 경우가 많습니다. 이 방법은 화이트리스트와 같이 작동합니다. 방문자가 웹 앱과 상호 작용할 때 공개 파일을 제공하고 무단 요청을 무시하도록 웹 응용 프로그램 및 서버를 구성합니다. 이는 중요한 파일이 포함된 파일 경로에 대한 쿼리에 특히 중요합니다.
이를 위해 파일 경로가 직접 수정되지 않도록 해야 합니다. 웹 앱은 하드코딩된 경로 목록의 문서만 제공해야 합니다. 또한 base64 또는 bin2hex 함수 대신 동적 경로 연결(URL에 영숫자 문자가 포함되어야 함)을 사용하여 요청을 처리하도록 웹 앱을 구성합니다.
파일 이름을 블랙리스트에 올릴 생각이라면 하지 마십시오. 해커는 일반적으로 LFI 공격을 실행하는 데 사용할 수 있는 파일 이름 목록이 늘어나고 있습니다. 게다가 지속적으로 증가하는 공격 소스 목록을 블랙리스트에 올리는 것은 사실상 불가능합니다(그리고 엄청난 시간 낭비입니다).
다중 서버 환경 사용
다중 서버 환경을 사용하면 중요하고 민감한 문서를 공용 파일에서 격리할 수 있으므로 위반 시 위험을 줄일 수 있습니다. 전용 서버는 함께 작동하지만 구성이 다르기 때문에 LFI 공격에 덜 취약합니다.
이 보안 외에도 여러 서버는 신뢰할 수 있고(다운타임 위험이 낮음) 빠르고 효율적입니다. 귀하의 웹사이트가 작을 경우 다중 서버 환경을 사용하는 것은 비용 효율적이지 않습니다. 이 경우 개인 데이터용 데이터베이스와 공용 파일용 서버 간에 데이터에 대한 웹 애플리케이션의 액세스를 분할하는 것이 좋습니다.
LFI 공격에 대해 걱정해야 합니까?
특히 사이트가 PHP에서 실행되는 경우 LFI 공격의 가능성이 있지만 웹 보안 모범 사례에 따라 웹 응용 프로그램 및 서버를 구성하여 노출을 줄일 수 있습니다.
또한 취약점을 찾기 위해 일상적인 보안 검사를 수행하는 것을 고려해야 합니다. 특히 사이트 아키텍처가 복잡해짐에 따라 상황이 항상 중단됩니다. 자신을 보호하는 데 필요한 도구는 자동화되어 있으며 대부분 정교한 설정이나 고급 기술 노하우가 필요하지 않습니다.
답글 남기기