Jump to content

Χακαρισμένο PrestaShop


Midsun

Recommended Posts

Γεια σας,

Τις τελευταίες δύο μέρες φτιάχνω ένα χακαρισμένο PrestaShop και είπα να μοιραστώ μαζί σας τι έκανα.

Βασικά αυτό που κάνει το συγκεκριμένο hack, είναι να εμφανίζει στο checkout μια ψεύτικη φόρμα για να βάλει ο πελάτης τα στοιχεία της κάρτας του, απενεργοποιώντας ταυτόχρονα όλες τις άλλες μεθόδους πληρωμής.

Είναι το ίδιο με αυτό εδώ (μπορείτε να δείτε πως μοιάζει η φόρμα).

Κάτι σημαντικό που παρατήρησα, είναι ότι αν είστε συνδεδεμένοι ως admin στο back-office και επισκεφτείτε το checkout τότε όλα φαίνονται εντάξει. Αν όμως αποσυνδεθείτε και κάνετε refresh στο checkout, τότε θα δείτε την ψεύτικη φόρμα. Αυτό κάνει πιο δύσκολο τον εντοπισμό της μόλυνσης από τους admins.

Ευτυχώς υπήρχε αντίγραφο ασφαλείας πριν την μόλυνση και έτσι βρήκα σχετικά εύκολα αρχεία που προστέθηκαν ή άλλαξαν.

Κατέβασα το αντίγραφο ασφαλείας και την μολυσμένη ιστοσελίδα και χρησιμοποίησα το δωρεάν πρόγραμμα WinMerge για να συγκρίνω ακόμη και την πιο μικρή αλλαγή.

Μπορεί η μόλυνση να διαφέρει για τον καθένα. Πιο κάτω είναι τα δικά μου ευρήματα:

Νέα Αρχεία που δημιουργήθηκαν (Το ΧΧΧΧΧ μπορεί να είναι ένα οποιοδήποτε όνομα με τυχαίους χαρακτήρες πχ. ΒEf7u.php):
public_html/app/Mage.php
public_html/media -> άδειο αρχείο χωρίς προέκταση
public_html/img/ΧΧΧΧΧ.png -> Δεν είναι αρχείο εικόνας, περιέχει κρυπτογραφημένο κώδικα
public_html/js/jquery/plugins/validate/localization/ΧΧΧΧΧΧ.php
public_html/js/jquery/plugins/validate/localization/ΧΧΧΧΧΧ.webp -> Δεν είναι αρχείο εικόνας
public_html/js/tiny_mce/plugins/insertdatetime/ΧΧΧΧΧΧΧ.jpg -> Δεν είναι αρχείο εικόνας
public_html/js/tiny_mce/plugins/insertdatetime/ΧΧΧΧΧΧΧ.php

Αρχεία που τροποποιήθηκαν:
public_html/classes/controller/Controller.php
public_html/classes/controller/FrontController.php
public_html/classes/controller/ModuleFrontController.php
public_html/classes/shop/Shop.php
public_html/classes/Context.php
public_html/classes/Dispatcher.php
public_html/classes/Hook.php
public_html/classes/PrestaShopAutoload.php
public_html/classes/Product.php
public_html/classes/Store.php
public_html/classes/Tools.php
public_html/controllers/admin/AdminLoginController.php
public_html/controllers/front/IndexController.php
public_html/vendor/smarty/smarty/libs/Smarty.class.php

Αφότου καθαρίσετε τα αρχεία, να αλλάξετε όλα τα passwords των admin, της βάσης δεδομένων και να αλλάξετε και το url του admin login. Από ότι φαίνεται ο κώδικας στο τροποποιημένο AdminLoginController.php κλέβει τα συνθηματικά των admin.  

Τώρα το checkout δουλεύει κανονικά, αλλά δυστυχώς δεν έχω ακόμη εντοπίσει το αρχικό σημείο εισόδου, έτσι υπάρχει ο κίνδυνος επαναμόλυνσης.

Link to comment
Share on other sites

Ο @sanctusmob εννοεί το παρακάτω.

 

Βρες στο αρχείο config/smarty.config.inc.php και δες εαν υπάρχουν οι γραμμές 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';
}

 

Τον ίδιο έλεγχο και επιδιόρθωση στο αρχείο αυτό κάνει και το δωρεάν παρακάτω module ενώ κάνει και αυτό που έκανες εσύ με το WinMerge. Δηλαδή ψάχνει για αλλαγές στα core αρχεία τις οποίες επίσης επιδιορθώνει. Είναι για Prestashop 1.6.1 και πάνω. (δεν το έχω δοκιμάσει σε 8 αλλά μάλλον λειτουργεί).

https://github.com/MathiasReker/blmvuln/releases/latest

Κατεβάζεις το blmvuln.zip

Edited by Prestan0ob (see edit history)
Link to comment
Share on other sites

@sanctusmob Το version ήταν 1.7.5. Το patch δεν υπήρχε προηγουμένως. Ελπίζω να ήταν αυτό και τώρα να έκλεισε. Θα το παρακολουθώ στενά.

@Prestan0ob Ευχαριστώ για τις πληροφορίες. Νομίζω με το WinMerge και το καλό backup έγινε σωστά ο καθαρισμός.

Κάτι άλλο που παρατήρησα είναι ότι τα τροποποιημένα αρχεία διατήρησαν την παλαιότερη ημερομηνία τροποποίησης. Άρα ίσως να μην είναι αρκετό κάποιος να ελέγξει μόνο την ημερομηνία. Σε πολλά από τα αρχεία, η μόνη αλλαγή ήταν μια τεράστια γραμμή από κρυπτογραφημένο κώδικα στο τέλος τους.

Link to comment
Share on other sites

20 hours ago, Midsun said:

@sanctusmob Το version ήταν 1.7.5. Το patch δεν υπήρχε προηγουμένως. Ελπίζω να ήταν αυτό και τώρα να έκλεισε. Θα το παρακολουθώ στενά.

@Prestan0ob Ευχαριστώ για τις πληροφορίες. Νομίζω με το WinMerge και το καλό backup έγινε σωστά ο καθαρισμός.

Κάτι άλλο που παρατήρησα είναι ότι τα τροποποιημένα αρχεία διατήρησαν την παλαιότερη ημερομηνία τροποποίησης. Άρα ίσως να μην είναι αρκετό κάποιος να ελέγξει μόνο την ημερομηνία. Σε πολλά από τα αρχεία, η μόνη αλλαγή ήταν μια τεράστια γραμμή από κρυπτογραφημένο κώδικα στο τέλος τους.

Δεν χάνεις κάτι να τρέξεις και το module που αναφέρω. Βρίσκει οποιαδήποτε αλλαγή έχει γίνει σε core αρχεία. Κάνει δηλαδή ότι και το winmerge ενώ επιπλέον κοιτάει και άλλα κενά ασφαλείας όπως και αυτό που αναφέραμε.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...