แฮ็กเกอร์โจมตีช่องโหว่ Zero-day บน PrestaShop ขโมยข้อมูลการชำระเงินจากร้านค้าออนไลน์

PrestaShop เป็น Open-Source E-commerce Solution ที่ได้รับความนิยมในยุโรป และละตินอเมริกา ซึ่งมีผู้ค้าขายออนไลน์กว่า 300,000 รายทั่วโลกที่ใช้งาน ซึ่งผู้โจมตีได้ใช้ประโยชน์จากช่องโหว่ Zero-day บน platform ดังกล่าว เพื่อใส่โค้ด Skimmer ที่เป็นอันตราย ที่ออกแบบมาเพื่อขโมยข้อมูลที่มีความสำคัญ
เป้าหมายของการใช้ประโยชน์จากช่องโหว่นี้คือการติดตั้งโค้ดที่เป็นอันตรายที่มีความสามารถในการขโมยข้อมูลการชำระเงินจากลูกค้าที่ใส่ข้อมูลในหน้าชำระเงิน โดยเป้าหมายหลัก ๆ ส่วนใหญ่จะเป็นร้านค้าที่ใช้ software เวอร์ชั่นเก่า ๆ หรือ 3rd party module ที่มีช่องโหว่
ช่องโหว่มีหมายเลข CVE-2022-36408 ที่เกิดปัญหาจากการจัดการกับ Input ที่ผิดปกติ หรือไม่รู้จัก จนนำไปสู่การโจมตีในรูปแบบ SQL Injection ที่จะทำให้ผู้ผู้โจมตีสามารถแทรก หรือแก้ไขคำสั่ง SQL ได้


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

  • ในขั้นแรกนั้นผู้โจมตีจะทำการส่งคำขอ POST ไปที่ระบบปลายทางที่มีช่องโหว่
  • จากนั้นจะทำการส่ง GET Request ไปยังหน้าแรกโดยไม่มี Parameter ทำให้ไฟล์ PHP ชื่อ blm.php ถูกสร้างขึ้นมาที่ Root Directory ของร้านค้าออนไลน์
  • หลังจากนั้นพวกเขาก็จะมีการส่ง GET Request อีกครั้งไปที่ไฟล์ blm.php เพื่อให้พวกเขาสามารถดำเนินการตามคำสั่งได้
  • หลังจากที่เข้าควบคุมร้านค้าออนไลน์ได้สำเร็จ ก็จะทำการ Injection แบบฟอร์มการชำระเงินปลอมที่สร้างขึ้น ไปที่หน้าการชำระเงิน ทำให้ลูกค้าของร้านค้าป้อนข้อมูลบัตรเครดิตในแบบฟอร์มปลอมที่ถูกสร้างขึ้น และส่งไปยังผู้โจมตีโดยลูกค้าไม่รู้ตัว
  • ถึงแม้ว่าการโจมตี้นี้จะเหมือนเป็นรูปแบบทั่ว ๆ ไป แต่ผู้โจมตีอาจจะใช้ชื่ออื่น ๆ ในการวางไฟล์อื่น หรือแก้ไขส่วนอื่น ๆ ของซอฟต์แวร์ และวางโค้ดที่เป็นอันตรายไว้ที่ไหนสักแห่ง หรือแม้แต่ลบร่องรอยเมื่อทำการโจมตีสำเร็จแล้ว

คำแนะนำ

  • ทำการอัปเดต PrestaShop เป็น Version 1.7.8.7
  • หากยังไม่ได้ทำการแพตซ์ แนะนำให้ทำการปิดการใช้งานคุณสมบัตินี้ในโค้ดของ PrestaShop ดังนี้
  • ให้ทำการค้นหาไฟล์ config/smarty.config.inc.php ในการติดตั้ง PrestaShop และลบบรรทัดที่ 43-46 (PrestaShop 1.7) หรือ 40-43 (PrestaShop 1.6)
if (Configuration::get('PS_SMARTY_CACHING_TYPE') == 'mysql') {
include _PS_CLASS_DIR_.'Smarty/SmartyCacheResourceMysql.php';
$smarty->caching_type = 'mysql';
}

 

Version ที่ได้รับผลกระทบ
PrestaShop Version ที่ต่ำกว่า 1.7.8.2

 

ที่มา : thehackernews, build.prestashop, vuldb.com