노출된 백업 및 참조되지 않은 파일 및 이를 찾는 방법

게시 됨: 2021-08-24

WordPress를 안전하게 유지하려면 테스트, 강화, 모니터링 및 개선의 지속적인 프로세스가 필요합니다. WordPress 관리자가 웹사이트를 안전하게 보호하기 위해 처리할 수 있는 몇 가지 사항이 있습니다. 비밀번호가 특정 기준을 충족하는지 확인하는 것부터 PHP를 강화하는 것까지, 이러한 프로세스는 여러분이 빡빡하고 깨끗한 선박을 운영하는 데 큰 도움이 될 수 있습니다. 간과되는 경향이 있는 한 가지는 노출된 백업 및 참조되지 않은 파일입니다. 이러한 파일은 모범 사례를 따르면 쉽게 관리할 수 있는 보안 위험을 초래할 수 있습니다.

WordPress는 정보를 구성하기 위해 디렉토리를 사용합니다. 모든 페이지와 미디어는 이 구조 내에 있습니다. 일반적인 설치에서 이 구조는 var/www/html/wordpress/wp-content와 비슷합니다.

WordPress 웹 사이트를 호스팅하는 서버를 포함한 웹 서버는 일반적으로 특정 디렉토리에 있는 모든 파일을 클라이언트에 제공하도록 구성됩니다. PHP 파일과 같은 몇 가지 예외가 있습니다. 그러나 관리자가 명시적으로 액세스를 차단하지 않는 한 클라이언트가 요청하면 웹 서버가 이를 수락할 가능성이 있습니다.

일반적으로 이것은 좋은 일이며 CSS 파일, JS 파일 및 이미지와 같은 웹 페이지와 관련된 파일을 방문자에게 제공하는 방법이므로 이것이 일어나기를 원하는 것입니다. 그러나 이 동작은 또한 백업 및 참조되지 않은 파일과 같이 대중이 볼 수 없도록 의도하지 않은 파일을 무의식적으로 제공할 수 있음을 의미합니다.

백업 및 참조되지 않은 파일이란 무엇입니까?

이름에서 알 수 있듯이 백업 및 참조되지 않은 파일은 일반적으로 구성 파일과 같은 파일을 편집할 때 생성되는 특정 파일의 백업이거나 전체 백업이 될 수 있는 실제 백업입니다. 이러한 백업 파일이 무엇이며 어떻게 생성되는지 이해하는 것이 문제를 해결하기 위해 취해야 하는 첫 번째 단계입니다.

WordPress 파일을 편집해야 하는 데에는 여러 가지 이유가 있습니다. 그러나 먼저 백업을 하지 않고 WordPress 사이트의 파일을 편집하면 약간의 신경이 필요합니다. 하나의 누락된 세미콜론으로 웹사이트가 다운될 수 있습니다!

물론 이러한 실수는 하기 쉽기 때문에 프로덕션 웹 서버에서 직접 파일을 편집하는 것은 바람직하지 않습니다. 모범 사례에 따르면 테스트 또는 스테이징 서버의 변경 사항을 먼저 테스트해야 합니다. 철저하고 성공적인 테스트 후에만 변경 사항을 라이브/프로덕션 서버로 이동할 수 있습니다.

그러나 실제 생활에서 모범 사례가 항상 지켜지는 것은 아닙니다. 이것은 아주 작은 변화일 때 특히 그렇습니다. 파일을 다운로드하고, 변경하고, 테스트하고, 다시 업로드하는 과정은 라이브 서버에서 파일을 편집하는 것보다 훨씬 더 오래 걸릴 수 있습니다. 우리는 모두 거기에 있었다.

라이브 서버에서 편집하는 것은 매우 쉽습니다. SSH 클라이언트와 Vi(또는 개선된 버전을 선호하는 경우 Vim)를 사용하면 놀라운 일을 할 수 있습니다. 서버에 연결하고 디렉토리로 이동하면 먼저 파일(예: wp-config.php.bak)을 백업하고 라이브 파일을 편집하고 모든 것이 올바른지 확인하고, 그리고 그것은 모두 늠름한 도리입니다. 그러나 폴더에 남겨진 백업 파일(만일 경우를 대비하여)은 결국 많은 고통과 고통의 원인이 될 수 있습니다. 누구나 다운로드할 수 있으며 전체 구성을 일반 텍스트로 다운로드할 수 있습니다.

또한 많은 WordPress 관리자는 Vim과 같은 파일 편집기를 사용하여 파일을 편집하면 자동으로 백업, 복구 및 잠금 파일이 생성될 수 있다는 사실을 인식하지 못할 수 있습니다. Vim은 Vim이 충돌하거나 예기치 않게 종료되는 경우 작업을 복구할 수 있도록 이러한 파일을 생성합니다. 이것은 의심할 여지 없이 가치 있는 기능이지만, 이는 또한 의도하지 않은 백업 파일이 웹사이트 주위에 뿌려져 누군가가 액세스하기를 기다리면서 의도치 않게 백업 파일로 끝날 수 있음을 의미합니다.

마찬가지로 공용 폴더에 남아 있는 전체 디렉터리의 백업도 손상될 수 있습니다. WordPress 웹 사이트를 백업하는 것이 중요하지만 새로운 보안 위험 없이 안전하게 수행해야 합니다. 이 기사의 뒷부분에서 이에 대해 더 자세히 이야기할 것입니다.

백업 파일의 일반적인 예에는 수정된 구성 파일, PHP 파일 또는 기타 소스 코드의 이름이 변경된 이전 버전, 압축 아카이브(예: .zip, .gz 또는 .tar.gz 아카이브) 형태의 자동 또는 수동 백업이 포함됩니다.

반면에 참조되지 않은 파일은 구성 또는 설계 결정으로 인해 해당 파일이 속하지 않는 위치에 놓이는 잘못된 위치에 있는 파일입니다.

위험 요소는 무엇입니까?

실수로 액세스할 수 있는 백업 및 참조되지 않은 파일은 민감한 정보를 유출할 수 있습니다. 파일에 따라 민감한 데이터에는 악의적인 사용자가 웹사이트 작동 방식을 더 잘 이해하는 데 도움이 되는 구성 매개변수 또는 소스 코드가 포함될 수 있으므로 웹사이트에 대한 공격을 쉽게 만들 수 있습니다. 경우에 따라 공격자가 전체 WordPress 설치를 제어할 수 있는 암호가 유출될 수도 있습니다.

다른 사람이 웹 서버에서 남은 파일을 찾을 수 있는 몇 가지 방법이 있습니다. 일부 방법에는 약간의 기술 전문 지식이 필요하지만 다른 방법은 Google 검색만큼 간단하므로 노출 위험이 높아집니다. 서버에 남은 파일이 있는지 확실하지 않은 경우 계속 읽고 다른 사람보다 먼저 파일을 검색하고 찾는 방법을 배우십시오.

WordPress 웹 사이트에서 백업 파일 및 참조되지 않은 파일을 찾는 방법

백업 및 참조되지 않은 파일을 찾는 데 사용할 수 있는 몇 가지 다른 방법이 있습니다. 서버 소유자로서 더 직접적으로 처리할 수 있으므로 우위를 점할 수 있습니다. 이 섹션에서는 이러한 파일을 검색하고 제거하는 데 사용할 수 있는 도구부터 시작하여 이러한 다양한 도구를 살펴봅니다. 그런 다음 호기심 많은 고양이가 서버에서 백업 및 참조되지 않은 파일을 찾는 방법을 살펴보겠습니다.

웹 서버에 남겨둔 백업 파일을 찾을 때 세 가지 접근 방식 중 하나(또는 그 이상)를 사용할 수 있습니다. 가장 쉬운 방법은 변경 사항에 대해 파일을 모니터링하는 플러그인을 설치하는 것입니다. 또는 find와 같은 명령줄 도구를 사용하여 파일 시스템에 남아 있는 백업 파일을 찾거나 fuzzing 이라는 기술을 사용하여 백업 파일을 찾을 수 있습니다.

파일 무결성 모니터링 플러그인

WordPress용 파일 무결성 모니터링 솔루션을 사용하면 웹 서버의 파일 변경 사항을 손쉽게 모니터링하고 추가, 제거 또는 변경된 사항이 감지되면 경고할 수 있습니다.

이는 웹사이트 파일 변경 모니터 플러그인을 사용하여 수행할 수 있습니다. 플러그인은 디렉토리의 지문을 가져온 다음 후속 지문과 비교합니다. 본질적으로 체크섬과 동일한 원칙에 따라 작동하므로 매우 안전하고 신뢰할 수 있습니다.

파일 무결성 모니터는 WordPress에서 사용하는 모든 디렉토리에 대해 잘 알지 못하는 경우에 특히 효과적일 수 있습니다. 이 플러그인의 또 다른 중요한 이점은 모니터링이 자동화되어 파일을 확인하는 것을 기억할 필요가 없다는 것입니다. 플러그인이 자동으로 수행합니다.

찾다

이제 find 명령을 사용하여 백업 파일을 찾는 방법을 살펴보겠습니다. 다음 명령은 백업 파일을 생성할 때 사용되는 일반적으로 사용되는 여러 파일 확장자를 찾습니다.

/var/www -type f \( -name '*.bak' -o -name '*.backup' -o -name 찾기 '*.bac' -o -name '*.zip' -o -name '* .tar' -o -name '*.jar' -o -name '*.log' -o -name '*.swp' -o -name '*~' -o -name '*.old' -o - name '*.~bk' -o -name '*.orig' -o -name '*.tmp' -o -name '*.exe' -o -name '*.0' -o -name '*. 1' -o -이름 '*.2' -o -이름 '*.3' -o -이름 '*.gz' -o -이름 '*.bz2' -o -이름 '*.7z' -o - 이름 '*.s7z' -o -이름 '*.lz' -o -이름 '*.z' -o -이름 '*.lzma' -o -이름 '*.lzo' -o -이름 '*.apk ' -o -name '*.cab' -o -name '*.rar' -o -name '*.war' -o -name '*.ear' -o -name '*.tar.gz' -o -name '*.tgz' -o -name '*.tar.z' -o -name '*.tar.bz2' -o -name '*.tbz2' -o -name '*.tar.lzma' - o -name '*.tlz' -o -name '*.zipx' -o -name '*.iso' -o -name '*.src' -o -name '*.dev' -o -name '* .a' -o -name '*.ar' -o -name '*.cbz' -o -name '*.cpio' -o -name '*.shar' -o -name '*.lbr' -o -이름 '*.mar' -o -이름 '*.f' -o -이름 '*.rz' -o -이름 '*.sfark' -o -이름 '*.xz' -o -이름 '*. ace' -o -name '*.afa' -o -name '*.alz' -o -name '*.arc' -o -nam e '*.arj' -o -name '*.ba' -o -name '*.bh' -o -name '*.cfs' -o -name '*.cpt' -o -name '*.dar ' -o -name '*.dd' -o -name '*.dgc' -o -name '*.dmg' -o -name '*.gca' -o -name '*.ha' -o -name '*.hki' -o -name '*.ice' -o -name '*.inc' -o -name '*.j' -o -name '*.kgb' -o -name '*.lhz' -o -name '*.lha' -o -name '*.lzk' -o -name '*.pak' -o -name '*.partimg.' -o -name '*.paq6' -o -name '*.paq7' -o -name '*.paq8' -o -name '*.pea' -o -name '*.pim' -o -name '*.pit' -o -name '*.qda' -o -name '*.rk' -o -name '*.sda' -o -name '*.sea' -o -name '*.sen' -o -name '*.sfx' -o -name ' *.sit' -o -name '*.sitx' -o -name '*.sqx' -o -name '*s.xz' -o -name '*.tar.7z' -o -name '*. tar.xz' -o -name '*.uc' -o -name '*.uc0' -o -name '*.uc2' -o -name '*.ucn' -o -name '*.ur2' - o -이름 '*.ue2' -o -이름 '*.uca' -o -이름 '*.uha' -o -이름 '*.wim' -o -이름 '*.xar' -o -이름 '* .xp3' -o -이름 '*.yz1' -o -이름 '*.zoo' -o -이름 '*.zpaq' -o -이름 '*.zz' -o -이름 '*.include' -o -이름 '*_1' -o -이름 '*_2' -o -이름 '*_x' -o -이름 '*박' -o -name '*_bak' -o -name '*old' -o -name '*_old' -o -name '*_a' -o -name '*_b' -o -name '*_c' -o -이름 '*_d' -o -이름 '*_e' -o -이름 '*_f' -o -이름 '*inc' -o -이름 '*_inc' -o -이름 '*_backup' -o -이름 '* – 복사' -o -name '* – 복사(2)' -o -name '* – 복사(3)' -o -name '*backup' -o -name '*-backup' -o -name '*-bak' -o -name '*-old' -o -name '*-1' -o -name '*-2' -o -name '* – 복사 – 복사' -o -name '*( 사본)' -o -name '*(또 다른 사본)' -o -name '*(두 번째 사본)' -o -name '*(세 번째 사본)' -o -name '*(네 번째 사본)' -o - name '*(2번째 사본)' -o -name '*(3번째 사본)' -o -name '*(4번째 사본)' -o -name '*(사본)' -o -name '*(다른 사본) ' -o -name '*(두 번째 사본)' -o -name '*(세 번째 사본)' -o -name '*(네 번째 사본)' -o -name '*(두 번째 사본)' -o -name ' * (3번째 사본)' -o -name '*(4번째 사본)' -o -name '*의 사본' -o -name '*의 사본(2)' -o -name '*의 사본(3)' -o -name '*의 사본 사본' -o -name 'backup*' -o -name 'backup_*' -o -name 'backup-*' -o -name 'bak*' -o -name 'bak_ *' -o -이름 '박-*' -o -이름'old*' -o -name 'old_*' -o -name 'old-*' -o -name '1*' -o -name '1_*' -o -name '1-*' -o -name '2*' -o -이름 '2_*' -o -이름 '2-*' \)

퍼징

다음 방법은 WordPress 파일에 중점을 둔 단어 목록(일반 텍스트로 수집된 파일 이름 및 파일 경로 목록)과 함께 ffuf라는 명령줄 기반 도구를 사용합니다. ffuf는 쉼표로 구분된 일반 백업 파일 확장자 목록을 사용하여 요청하도록 구성할 수 있습니다(이 예에서는 .bak 및 .backup만 포함하는 단축 목록만 사용하지만 실제로는 훨씬 더 길 수 있음).

ffuf -u http://example.com/FUZZ -w wordlist.txt -e '.bak,.backup'

검색 엔진 검색

검색 엔진은 웹 서버에서 정보를 찾고 목록화하는 데 매우 능숙합니다. 예를 들어 쿼리를 드릴다운하여 주어진 서버에서 특정 파일 형식을 찾을 수 있는 고급 연산자를 사용하여 이 작업을 수행할 수 있습니다.

이러한 유형의 검색은 Google Dorking이라고도 하며 고급 필터와 추론을 조합하여 사용할 수 있습니다. 추론은 서버에 무엇이 있는지 모르는 사람이 일반 정보를 사용하여 서버에 어떤 종류의 파일과 구조가 있는지 추론한 다음 이러한 특정 항목을 검색하는 방법입니다.

보안 스캐너

웹사이트의 디렉토리를 스캔할 수 있는 다양한 유형의 스캐너가 있습니다. 첫 번째 유형의 스캐너는 검색 엔진이 웹사이트를 읽는 데 사용하는 것과 동일한 기본 기술인 사이트 크롤러라고 합니다. 그러나 이러한 유형의 스캐너는 검색 엔진에만 국한되지 않으며 무료로 다운로드할 수 있습니다.

의도가 좋다 해도 대부분의 국가에서 대상 웹사이트를 스캔하는 것은 불법입니다. 소유한 웹사이트에 대해서만 스캐너를 사용할 수 있고 사용해야 합니다. 타사 웹사이트를 스캔하는 경우 동의를 받았는지 확인하십시오. 그럼에도 불구하고 악의적인 의도를 가진 사람이 보안 스캐너를 사용하여 웹사이트에 대해 자세히 알아보고 웹사이트에 있는 파일의 종류를 이해할 수 있습니다.

다른 유형의 스캐너는 남은 파일을 포함하여 웹사이트의 취약점을 스캔할 수 있는 침투 테스트 스캐너입니다.

백업 또는 참조되지 않은 파일을 찾았습니까? 해야 할 일은 다음과 같습니다.

웹사이트에 백업 파일을 저장하는 것은 결코 좋은 생각이 아닙니다. 불행히도 WordPress 웹 사이트 소유자와 관리자가 데이터베이스 백업을 수행하도록 cron 작업(예약된 작업)을 구성하고 이러한 백업을 동일한 서버에만 저장하는 것은 드문 일이 아닙니다. 가장 확실하게 웹사이트를 백업 해야 하지만 백업 파일이 백업한 시스템의 어디에도 저장되지 않도록 주의해야 합니다.

모범 사례를 따르는 신중한 WordPress 백업 전략을 갖는 것은 보안 관점에서뿐만 아니라 비즈니스 연속성 관점에서도 마찬가지로 중요합니다. 결국 백업을 사용하여 데이터를 복원할 수 없다면 백업은 가치가 없습니다.

백업 파일 열거를 방지하는 방법

이 기사 전체에서 보았듯이 WordPress 웹 사이트에 백업 파일을 보관하는 것은 매우 위험할 수 있습니다. 따라서 라이브/프로덕션 서버에 변경 사항을 푸시하기 전에 항상 테스트 또는 스테이징 환경을 사용하여 변경 사항을 수행해야 합니다. 대부분의 관리형 WordPress 호스팅 계정은 기본적으로 준비 환경과 함께 제공됩니다. PC에서 WordPress 인스턴스를 가동할 수 있는 Local과 같은 소프트웨어를 사용할 수도 있습니다.

그럼에도 불구하고 웹 서버에 백업 파일을 유지하기로 선택한 경우 이상적으로는 웹 서버가 제공하도록 구성한 디렉토리에 백업 파일을 보관하지 않는 것이 좋습니다.

또한 웹 서버 사용자에 대한 액세스를 금지하도록 WordPress 파일 권한을 구성하십시오. 이렇게 하면 구성이 잘못된 경우에도 웹 서버가 파일을 요청하는 클라이언트에 파일을 제공할 수 없습니다. 추가 조치로 모든 데이터베이스 백업을 암호화하고 웹 서버 사용자가 암호화 키에 액세스할 수 없도록 하는 것이 좋습니다.