Computer >> 컴퓨터 >  >> 네트워킹 >> 네트워크 보안

해킹된 Drupal 웹사이트 수정 – Drupal 맬웨어 제거

해킹된 Drupal 웹사이트는 매우 고통스러울 수 있습니다. 해킹에는 여러 가지 이유가 있을 수 있습니다. 그러나 가장 흔한 것은 맬웨어, 코드 주입, 스팸 등입니다. Drupal 맬웨어 제거 기술을 찾고 계시다면 제대로 찾아오셨습니다. 이 가이드에는 Drupal 파일과 해킹된 웹사이트의 데이터베이스를 정리하기 위한 단계별 지침이 포함되어 있습니다. 맬웨어 및 백도어 탐지도 언급됩니다. 이 문서는 일반 사용자가 쉽게 적용할 수 있도록 설계되었습니다.

Drupal은 오늘날 가장 널리 사용되는 CMS 중에서 가장 오래되고 가장 안전한 것 중 하나입니다. 백만 개 이상의 웹사이트를 지원합니다. 그러나 올해 Drupal에서 여러 취약점이 발견되었습니다. Drupalgeddon이라는 일련의 RCE 취약점과 같습니다. 그 결과 몇 달 동안 Drupal이 여러 번 해킹되었으며 대부분이 암호화폐를 채굴하는 데 사용되었습니다. 그러나 Drupal의 보안 팀은 필요한 업데이트를 릴리스할 만큼 충분히 빨랐습니다.

Drupal 해킹됨:가능한 Drupal 해킹 결과

  • 민감한 정보를 도용하도록 설계된 피싱 페이지가 웹사이트에 나타납니다.
  • 고객이 악성 리디렉션에 대해 불만을 표시합니다.
  • 로그인, 은행 세부정보 등과 같은 민감한 정보 다크넷에서 판매 중입니다.
  • 일본어 키워드 해킹 또는 Pharma Hack 등으로 인해 사이트에 이상한 콘텐츠가 나타납니다.
  • '계정이 일시 중지되었습니다!'라는 메시지가 로그인 시 나타납니다.
  • Drupal 사이트는 검색 엔진에 의해 블랙리스트에 올라갑니다.
  • Drupal 웹사이트가 매우 느려지고 오류 메시지가 표시됩니다.
  • 여러 개의 악성 광고와 팝업이 사이트에 나타납니다.
  • 사용자는 신뢰 부족으로 인해 사이트 방문을 자제합니다.
  • 사용자 트래픽 및 수익 감소
  • 새로운 승인되지 않은 관리자가 로그인 데이터베이스에 나타납니다.

Drupal 해킹:Drupal 해킹의 예

Drupal 사이트가 해킹되면 커뮤니티 포럼에서 도움을 받는 영향을 받는 사용자를 찾을 수 있습니다. 해킹된 Drupal의 한 예가 아래 이미지에 나와 있습니다.

Drupal 해킹 사이트가 걱정되십니까? 채팅 위젯으로 메시지를 보내주시면 해결을 도와드리겠습니다. 지금 Drupal 웹사이트 보안 .

Drupal 해킹의 가능한 원인

Drupal 해킹:Drupal SQL 주입

Drupal SQLi 취약점은 종종 잘못 코딩된 모듈에서 찾을 수 있습니다. 그러나 커널 내 SQLi는 매우 드물고 위험합니다. Drupal은 AOP(PHP Data Object)를 사용하여 정적 SQL 쿼리와 동적 값을 구분했지만 이러한 위험한 결함이 Drupal의 핵심에서 발견되어 'Drupalgeddon'이라고 불렸습니다.

$ query = $ db-> prepare ("SELECT * FROM utilisateurs WHERE utilisateur =: utilisateur ET mot de passe =: mot de passe");
$ account = $ query-> execute (array (':utilisateur' => $ _POST ['utilisateur'], ':mot de passe' => $ _POST ['mot de passe']));

데이터베이스에 도달하기 전에 입력이 적절하게 삭제되기 때문에 모든 것이 괜찮아 보입니다. 그러나 논쟁의 핵심은 Drupal의 자리 표시자 테이블이었습니다. 이는 데이터베이스 쿼리의 구조를 동적으로 변경할 수 있으므로 모듈 개발자에게 유연성을 제공하기 위한 것입니다.

db_query ("SELECT * FROM {node} WHERE nid IN (: nids)", tableau (': nids' => tableau (13, 42, 144)));

결과적으로 :nest 자리 표시자는 제공된 인수의 수와 일치합니다. 다음과 같이:

SELECT * FROM {node} WHERE nid IN (: nids_0, : nids_1, : nids_2)

PHP 인덱스 배열과 결합된 이 기능은 (GET, POST 및 쿠키)와 같은 매개변수를 전달하는 데 사용할 수 있습니다. Drupal 자리 표시자 배열은 기본 $_POST['user'] 매개변수를 배열로 가정합니다. 그런 다음 원시 배열 문자열 인덱스를 사용하여 새 자리 표시자 이름을 생성합니다. 그 결과 공격자는 Parameter:user[0#], value:foo와 같은 악의적인 값을 제공할 수 있다. 결과 쿼리는 다음과 같습니다.

선택 * FROM {users} WHERE user=:user_0#

따라서 공격자는 로그인 인증을 성공적으로 우회합니다. 게다가 공격자는 매개변수를 user[0; INSERT INTO users VALUES 'MalUser', 'Passw0rd!', 'Administrators'; #]. 이것은 Drupal의 핵심에 영향을 미치기 때문에 매우 치명적인 결함이었습니다. 더욱 놀라운 것은 Metasploit Module도 이를 악용하기 위해 출시되었다는 것입니다!

Drupal 해킹됨:Drupal 액세스 우회

Drupal 액세스 우회로 인해 사용자가 의도하지 않은 리소스에 액세스할 수 있습니다. 이 유형의 최신 취약점은 SA-CONTRIB-2018-081로 명명되었습니다. 원인은 Drupal 8.x용 JSON:API 8.x-1.x 모듈이라는 Drupal 모듈입니다. 주로 다음 용도로 사용됩니다.

  • Drupal 콘텐츠 및 구성 항목에 액세스합니다.
  • Drupal 콘텐츠 및 구성 개체 조작.

이 경우 일부 요청에 응답하는 동안 권한을 주의 깊게 확인하지 않습니다. 이로 인해 권한이 충분하지 않은 악의적인 행위자가 민감한 정보를 얻을 수 있습니다. 따라서 이러한 유형의 공격에는 GET 요청만 사용할 수 있습니다.

Drupal 해킹됨:Drupal 교차 사이트 스크립팅

XSS 및 SQLi와 같은 취약점은 Drupal 모듈에서 매우 일반적입니다. 이 시리즈의 최신 버전은 SA-CONTRIB-2018-080입니다. E-Sign 모듈은 XSS에 취약한 것으로 확인되었습니다. E-Sign 모듈을 사용하면 기본적으로 서명 패드를 Drupal에 통합할 수 있습니다. 이 글을 쓰는 시점에 약 875개의 사이트에서 이 모듈을 사용하고 있습니다. 이 취약점은 서명이 표시될 때 입력 삭제가 부족하기 때문에 발생합니다. 따라서 공격자는 <script> alert ('XSS Found!') </script> 코드를 사용하여 XSS를 테스트할 수 있습니다. . 취약한 서명 필드는 "XSS Found!"라는 메시지를 내보냅니다. 공격자는 이 취약점을 악용하여 다음을 수행할 수 있습니다.

  • 사용자의 쿠키를 훔칩니다.
  • 사용자를 리디렉션합니다.
  • Drupal 사이트 방문 시 최종 사용자 기기에 멀웨어를 다운로드합니다.

해킹된 Drupal:Drupal 원격 코드 실행

Drupal 보안은 일련의 Drupalgeddon 버그에 시달리고 있습니다. Drupalgeddon 3는 올해 가장 최근에 발견된 것입니다. 이를 통해 인증되지 않은 사용자가 Drupal 사이트에서 코드를 실행할 수 있습니다. Drupalgeddon 2도 RCE를 허용하지만. 그러나 이를 악용하기 위해 공격자는 노드를 삭제할 수 있는 능력이 필요했습니다. 전체 URL은 다음과 같습니다.

POST /? Q = node / 99 / delete & destination = node? Q [% 2523] [] = passthru% 26q [% 2523type] = markup% 26q [% 2523markup] = whoami HTTP / 1.1 [...] form_id = node_delete_confirm & _triggering_element_name = form_id & form_token = [CSRF-TOKEN]

여기서 공격자는 노드 삭제를 가장하여 whoami 명령을 주입했습니다. 코드의 두 번째 줄은 CSRF 토큰을 확인하는 것입니다. CSRF 토큰은 기본적으로 동일한 서버에서 요청이 생성되었는지 확인합니다. 그 후 공격자는 아래 코드와 같이 응답에서 form_build_id를 검색합니다.

PUBLIER / drupal /? q = fichier/ ajax / actions / annuler /%23options/chemin/[FORM_BUILD_ID] HTTP /1.1 [...] form_build_id = [FORM_BUILD_ID]

이것은 마침내 익스플로잇을 트리거하고 Whoami 명령의 출력이 표시됩니다. 따라서 공격자는 모든 종류의 명령을 실행하여 서버를 조작할 수 있습니다. 이 RCE 버그를 더 심각하게 만드는 것은 이미 공개된 익스플로잇입니다!

Drupal 해킹 사이트를 정리하는 데 전문가의 도움이 필요하십니까? 채팅 위젯으로 메시지를 보내주시면 기꺼이 도와드리겠습니다. 지금 Drupal 웹사이트를 수정하세요 .

해킹된 Drupal 웹사이트 정리:Drupal Malware를 정리하는 단계

감염 감지

Google 진단 사용

Drupal 사이트가 해킹되면 Google과 같은 검색 엔진이 이를 블랙리스트에 올리는 경우가 많습니다. 따라서 Google의 진단 도구를 사용하여 감염의 유형과 원인을 식별할 수 있습니다. Google 투명성 보고서는 이러한 경우에 유용합니다. 이를 확인하려면:

  1. 다음 링크에서 세이프 브라우징 사이트 상태 웹사이트를 방문하세요.
  2. 이 페이지에서 "사이트 상태 확인" 옵션을 찾습니다.
  3. 마지막으로 아래에 사이트 URL을 입력하고 "검색" 버튼을 클릭하세요.
  4. 스팸 리디렉션 등에 관한 정보를 제공합니다. 귀하의 사이트가 감염된 경우. Drupal 감염의 원인을 파악하고 제거하기 위해 노력하십시오.

사이트 분석

감염된 페이지를 감지하려면 사이트를 스캔하십시오. VirusTotal과 같은 많은 무료 옵션이 있습니다. 또는 전체 파일을 .zip 파일로 압축하고 분석을 위해 업로드할 수 있습니다. 그러나 무료 보안 솔루션은 예상한 결과를 제공하지 않을 수 있으므로 맬웨어 제거를 위해 전문가에게 문의하는 것이 좋습니다. .

수정된 파일 확인

종종 Drupal 사이트를 감염시키는 백도어는 핵심 Drupal 파일을 수정할 수 있습니다. Drupal 사이트 파일의 수정은 다음 단계를 통해 확인할 수 있습니다.

  1. SSH를 통해 Drupal 사이트에 연결합니다.
  2. 다음 명령을 사용하여 새 디렉토리를 만듭니다. mkdir drupal-yx 'y'를 Drupal, 즉 7,8,9 시리즈로 바꾸십시오. 'x'를 Drupal 버전(예:4.7.1, 2.1.3 등)으로 바꾸십시오.
  3. 다음 명령을 사용하여 이 디렉토리에 액세스합니다.
    cd drupal-yx
  4. 다음 명령을 사용하여 Drupal 버전의 새 복사본을 다운로드합니다.
    wget https://github.com/drupal/core/archive/yxtar.gz
  5. 이제 다음 명령을 사용하여 tar.gz 파일을 추출합니다.
    tar-zxvf 코어-yxtar.gz
  6. 마지막으로 다음 명령으로 코어 파일 간의 차이점을 비교합니다.
    diff -r core-yx ./public_html
    SSH를 통해 사이트에 로그인하고 다음 명령을 실행하여 이 작업을 수행할 수도 있습니다.
    찾기 ./ -type f -mtime -20

이 명령은 지난 20일 동안 수정된 모든 파일을 나열합니다. 파일 수정 날짜를 확인하고 의심스러운 항목이 있으면 해당 파일에 악성 코드가 있는지 검사합니다.

사용자 로그 확인

사용자 로그는 해커에 의해 사이트에 의심되는 로그인을 식별하는 데 도움이 될 수 있습니다. 이렇게 하세요:

  1. Drupal 사이트의 관리 페이지에 로그인합니다.
  2. 메뉴에서 '사람' 옵션을 클릭합니다.
  3. 이 목록에 있는 사용자를 검토하고 각 사용자의 "마지막 액세스 시간"도 확인합니다. 의심스러운 연결을 발견하면 사이트에서 취약점을 확인하십시오.

감염된 파일 치료 및 숨겨진 코드 제거

감염된 페이지가 식별되면 감염 부분(주 파일의 코드) 또는 전체 파일이 될 수 있습니다. 파일에 횡설수설한 문자가 포함되어 있으면 대부분의 경우 공격자가 사람이 읽을 수 없는 형식으로 코드를 난독화하는 경향이 있기 때문일 수 있습니다. Base64 형식은 공격자 사이에서 매우 인기가 있습니다. 이 코드를 제거하려면:

  1. SSH를 통해 사이트에 연결합니다.
  2. 그런 다음 다음 명령을 사용하여 base64 코드를 확인합니다.
    찾다 . -이름 "*.php" -exec grep "base64" '{}'; -print &> hiddencode.txt.
    이 코드는 base64로 인코딩된 코드를 찾아 hiddencode.txt에 저장합니다.
  3. hiddencode.txt의 텍스트를 추가 분석을 위해 이 링크와 같은 온라인 서비스에 업로드하십시오.
  4. 이 사이트에서 "디코드" 옵션을 클릭합니다. 원본 코드가 표시됩니다.
  5. FOPO와 같은 다른 난독화도 온라인 서비스를 사용하여 디코딩할 수 있습니다.
  6. 메인 패키지가 아닌 전체 파일에 감염이 된 경우. 파일을 삭제합니다.
  7. 코어 파일에 부분 감염이 있는 경우 악성 코드를 식별할 수 있으면 제거합니다. 그렇지 않은 경우 댓글을 달고 도움을 받으세요.

Drupal 백도어 비활성화

Drupal 백도어는 /modules, /themes, /sites/all/modules 및 /sites/all/themes와 같은 폴더에 숨겨져 있습니다. 코드가 종종 난독화될 수 있으므로 이를 감지하는 것은 쉽지 않습니다. 이 코드를 찾으려면 위에서 언급한 "감염된 파일 정리 및 숨겨진 코드 제거" 단계를 따르십시오. 또한 이러한 백도어는 일부 PHP 기능을 사용합니다.

이러한 기능을 비활성화하려면 다음을 수행하십시오.

  1. 사이트에 로그인하고 파일 관리자를 엽니다.
  2. php.ini 파일을 찾아 엽니다.
  3. 이 파일에 다음 코드를 추가합니다.
    disable_functions ="show_source, 시스템, shell_exec, passthru, exec, popen, proc_open, allow_url_fopen, 평가"

Drupal 데이터베이스 정리

Drupal 데이터베이스는 종종 맬웨어의 표적이 됩니다. 감염된 Drupal 사이트의 데이터베이스를 정리하려면 다음 단계를 따르십시오.

  1. 관리자 패널을 통해 Drupal 사이트에 연결합니다.
  2. 데이터 액세스> Drupal 데이터베이스로 이동
  3. 여기 검색창에서 악성코드 검사 중에 보이는 의심스러운 링크나 콘텐츠를 찾으십시오.
  4. 이 스팸성 콘텐츠와 링크가 포함된 게시판을 엽니다. 그런 다음 콘텐츠를 수동으로 삭제하세요.
  5. 완료되면 사이트가 여전히 작동하는지 확인하고 다른 모든 데이터베이스 관리 도구를 제거합니다.

Drupal Security:공격자 차단

로그인 자격 증명이 손상되지 않았는지 확인하십시오. 맬웨어 정리가 완료된 후 Drupal 사이트 비밀번호를 재설정하십시오. 비밀번호를 변경하려면 Drupal 사이트에 로그인하십시오.

phpMyAdmin 사용

  1. phpMyAdmin이 설치되어 있는 경우 cPanel> 데이터베이스 상자> phpMyAdmin으로 이동합니다.
  2. 그런 다음 Drupal 데이터베이스를 선택하고 SQL 탭을 클릭합니다.
  3. 이제 텍스트 필드에 다음 명령을 입력합니다.
    업데이트 사용자 설정 pass=md5('YOURPASS') 여기서 uid=1;
  4. “YOURPASS”를 설정하려는 비밀번호로 바꾸고 마지막으로 Go를 클릭하세요!

Drush 사용

  1. Drush를 통해 사이트를 관리하려면 Drush 모듈이 설치되어 있는지 확인하세요.
  2. Drush를 사용하려면 SSH를 통해 사이트에 연결하세요.
  3. 이제 Drupal-8 사용자의 경우 다음 명령을 실행합니다.
    drush 사용자 비밀번호 UserName –password =“새 비밀번호”.
  4. Drupal-9의 경우 다음 명령을 실행합니다.
    사용자 drush:비밀번호 UserName "your-new-password"
    여기에서 'UserName'을 Drupal 사이트 사용자로 바꾸고 'your-new-password'를 설정하려는 비밀번호로 바꿉니다. 비밀번호가 안전하고 알파벳, 숫자 및 문자의 적절한 조합을 포함하는지 확인하십시오.

Drupal 보안:파일 복원

백업에서 감염된 페이지를 복원합니다. 백업을 사용할 수 없으면 새 복사본을 사용하십시오. 파일이 정리되면 다음과 같은 방법으로 캐시를 지웁니다.

  1. SSH를 통해 Drupal 사이트에 연결합니다.
  2. 터미널에서 다음 명령을 실행합니다.
    drush 캐시 재구축(Drupal 8용) 또는
    모든 캐시를 지웁니다(Drupal 7의 경우).

귀하의 Drupal 사이트가 Google 또는 귀하의 호스팅 제공업체에 의해 차단된 경우 검토를 위해 사이트를 제출하십시오.

Drupal에 의해 해킹된 완화

민감한 폴더 보호

민감한 파일에 대한 액세스를 차단하는 것이 중요합니다. 다음 단계에 따라 수행할 수 있습니다.

  1. 사이트에 로그인하고 파일 관리자를 엽니다.
  2. 보호하려는 폴더에 .htaccess라는 새 파일을 만듭니다.
  3. 이 파일에 다음 코드를 삽입합니다.
    주문 거부, 허용
    모두 거절하다
    22.33.44.55부터 허용
    이 스니펫은 방문자가 특정 폴더에 액세스하는 것을 거부합니다. 여기서 코드의 마지막 줄은 허용할 IP 주소를 지정합니다. 또한 수정된 .htaccess 파일을 살펴보십시오. 이러한 파일이 발견되면 우선 삭제하는 것을 우선으로 하십시오.

업데이트 및 백업

최신 버전의 Drupal을 사용하고 있는지 확인하십시오. Drupal Security 팀은 새로운 업데이트가 있을 때마다 치명적인 결함을 업데이트합니다. 이것은 변경 로그를 사용하여 확인할 수 있습니다. 또한 버그가 있는 코드를 포함할 가능성이 있으므로 평판이 좋지 않은 플러그인을 사용하지 마십시오. 사이트 사본을 만드십시오. 이것은 공격 후 사이트를 복원하는 데 유용할 수 있습니다. 업데이트와 백업은 Drupal 사이트를 보호하는 가장 저렴하고 효과적인 방법입니다.

보안 감사

보안 감사는 Drupal 사이트 내에서 중요한 결함을 드러낼 수 있습니다. 모든 웹 관리자가 보안 전문가가 될 수 있는 것은 아닙니다. 따라서 Astra와 같은 서비스는 웹 관리자의 보안을 인수할 수 있습니다. Astra 보안 감사 및 펜 테스트를 통해 사이트의 심각한 위협을 책임감 있게 드러낼 수 있습니다.

이를 통해 웹 관리자는 Drupal 사이트가 해킹되지 않도록 예방 조치를 취할 수 있습니다. Astra Security Audit은 안전한 환경에서 실시간 공격을 시뮬레이션하여 사이트에 피해가 발생하지 않고 동시에 치명적인 취약점을 발견할 수 있도록 합니다. Astra와 같은 보안 감사는 Drupal 사이트에서 OWASP Top 10과 같은 일반적인 취약점을 찾을 수 있습니다.

Drupal Malware Scanner 및 방화벽

매월 Drupal에서 새로운 취약점이 발견됩니다. 그러나 이것이 Drupal 사이트가 계속 안전하지 않다는 것을 의미하지는 않습니다. 방화벽은 Drupal 사이트가 취약한 경우에도 공격자가 이러한 취약성을 악용하는 것을 방지할 수 있습니다. 그러나 시중에 나와 있는 많은 방화벽 중에서 올바른 방화벽을 선택하는 것이 중요합니다. Astra 방화벽은 모든 매개변수에서 눈에 띄는 방화벽입니다. 매우 강력하고 확장 가능합니다. 이는 소규모 블로그든 대규모 전자상거래 사이트든 Astra가 모든 사이트를 보호할 수 있음을 의미합니다. 또한 Astra는 공격자를 허니팟하고 일반적인 공격을 차단할 수 있습니다.

Drupal의 해킹된 사이트를 정리하고 복구하는 것은 힘든 작업입니다. 그러나 자동화가 구출될 수 있습니다. Astra Drupal Malware Scanner는 몇 분 만에 해킹된 사이트에서 멀웨어를 탐지할 수 있습니다. 또한 악성인 경우 한 번의 버튼 클릭으로 삭제할 수 있는 파일 차이를 복구합니다.