เมื่อไม่กี่วันก่อนหน้านี้ มีการค้นพบช่องโหว่ปลั๊กอิน Amp ของ WordPress ที่อนุญาตให้ผู้ใช้สามารถเข้าควบคุมเว็บได้ในระดับแอดมิน และได้มีการออกแพทช์อัปเดตเพื่ออุดช่องโหว่นี้ออกมาแล้ว ซึ่งก็คือ Amp เวอร์ชั่น 0.9.97.20 ล่าสุดได้มีนักวิจัยได้ออกมาอธิบายรายละเอียดของการโจมตีนี้แล้ว
Mikey Veenstra เป็นนักวิเคราะห์ภัยคุกคามของ WordFence ได้ทำการวิเคราะห์ถึงช่องโหว่นี้ว่า ช่องโหว่ที่เกิดขึ้นนี้เป็นเป้าหมายที่ทำให้เกิดการโจมตีแบบ Active XSS ซึ่งเกิดจากความผิดพลาดในการรับค่าสตริงของ User-Agent ใน Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv) และในขณะที่เกิดการโจมตีของ IP ที่มีจำนวนมากทำให้ payload เกิดการจัดรูปแบบไม่สม่ำเสมอ ซึ่ง Veenstra คิดว่าแฮกเกอร์ไม่น่าดำเนินการโจมตีนี้ด้วยตนเอง
แฮกเกอร์จะฝังสคริปต์ไว้ที่ URL https://sslapis[.]com/assets/si/stat.js เมื่อมีการรันสคริปต์ในเบราว์เซอร์ของแอดมินระบบจะทำให้แฮกเกอร์นั้นเป็นแอดมินของเว็บนั้นทันที
หลังจากสร้าง iframe element ซ่อนไว้ในเพจที่แอดมินดูแลอยู่แล้ว สคริปต์ที่แฮกเกอร์แทรกไว้จะกรอกข้อมูลลงในฟอร์มผู้ใช้ใหม่ จากนั้นจะดำเนินการส่งการกระทำ click() ไปยังปุ่มยืนยันเพื่อสร้างผู้ใช้ใหม่ในระดับแอดมิน เมื่อบัญชีของแฮกเกอร์ได้ถูกสร้างขึ้นในระดับแอดมินมันจะสร้างชื่อผู้ใช้ อีเมล และรหัสผ่านดังตัวอย่างสคริปต์ด้านล่าง
จากนั้นสคริปต์จะแสดงรายการปลั๊กอินที่ติดตั้งทั้งหมด แล้วดำเนินการสร้าง backdoor ด้วย PHP ของแต่ละปลั๊กอิน
backdoor ที่เพิ่มเข้าไปนั้นจะทำการ Obfuscated (การทำให้เกิดความสับสน/สลับปรับเปลี่ยน) โดยใช้การเข้ารหัส base64 แต่โค้ดจะถูกถอดโดยใช้โค้ดของ PHP ฟังก์ชัน extract() เพื่อกำหนดให้ผู้ใช้ใส่ข้อมูลไปยังตัวแปร environment variables ซึ่งจะรันโดยฟังก์ชัน die()
backdoor นี้จะทำงานโดยอ่านค่าตัวแปรที่เพิ่มใน URL ของปลั๊กอินที่ติดตั้ง backdoor ลงไปแล้วและได้กำหนดค่าตัวมันเองเป็นตัวแปร environment variables โดยใช้ฟังก์ชัน extract() จากนั้น backdoor จะทำการรันฟังก์ชัน die() ซึ่งจะเรียกใช้คำสั่งอะไรก็ได้ขึ้นมาเพื่อเพิ่มตัวแปรพร้อมกับอาร์กิวเมนต์ไปยังฟังก์ชันนี้เพื่อเปลี่ยนชื่อตัวแปรเป็นอีกชื่อหนึ่ง
ยกตัวอย่างเช่น ใช้คำสั่งเพื่อเปลี่ยนตัวแปร cdate ไปเป็นชื่อตัวแปร adate โดยใช้ฟังก์ชัน die()
สำหรับผู้ที่ติดตั้งปลั๊กอิน WooCommerce สคริปต์ XSS นี้ยังใช้งานได้กับปลั๊กอินนี้อีกด้วย ซึ่งสคริปต์นี้เชื่อมต่อกับเพจ plugins.php ของ WordPress โดยสคริปต์นี้จะแสดงรายการปลั๊กอินที่ติดตั้งไว้และเชื่อมต่อลิงค์เพื่อเปิดใช้งานสคริปต์ เมื่อมันพบปลั๊กอิน WooCommerce มันจะรันสคริปต์ทันที
Veenstra ได้ชี้แจงว่าสคริปต์นี้ใช้สำหรับโหลดข้อมูลจากเซิร์ฟเวอร์ C2 ภายหลัง เพราะสคริปต์นี้ใช้งานกับเซิร์ฟเวอร์ C2 ซึ่งได้มีการกำหนดฟังก์ชัน ‘EnableReplace’ ที่ใช้ในการเปลี่ยนแปลงแบบ inline หน้าเว็บของ WooCommerce แต่ Veenstra นั้นไม่เข้าใจว่าทำไมถึงใช้ JavaScript ในการโจมตีนี้ สำหรับสร้างบัญชีแอดมินกับสร้าง backdoor ด้วย PHP เพื่ออนุญาตให้แฮกเกอร์ทำการเปลี่ยนแปลง WooCommerce ได้ตามต้องการ
สำหรับช่องโหว่ที่เกิดขึ้นนี้ Veenstra ได้ตั้งสมมติฐานว่า เซิร์ฟเวอร์ C2 อาจถูกใช้เพื่อเพิ่ม XSS payloads ทำให้ง่ายต่อการเปลี่ยนแปลงนี้
ส่วนวิธีการป้องกันในตอนนี้แนะนำให้ผู้ใช้ทำการตรวจสอบปลั๊กอินนี้และลบบัญชีแอดมินที่ชื่อว่า supportuuser หรือชื่อบัญชีแอดมินที่น่าสงสัยหรือไม่รู้จัก และควรอัปเดตปลั๊กอิน AMP เป็นเวอร์ชั่น 0.9.97.20 ขึ้นไป
ที่มา: Bleeping Computer


