avant-propos
Votre propre site d'hébergement de blog avec wordpres le dernier mois a trouvé quelques anomalies.
3.12 jours, l'éclatement de la boîte aux lettres, plus de 100 lettres reçues message de notification sur le site de l'explosion.
Ce jour-là également vu pas l'impression étrange, car avant qu'il y ait eu une telle situation, il y aura des dizaines de préavis de dynamitage tous les jours, les laisser aller au Japon (Department Station Bouddha ouvert) ......
Mais ce message quelques jours ton continu m'a dit que cette question est pas si simple.
Le 15, un avis de dynamitage deux fois plus élevé que les deux jours précédents, je vais vous connecter sur le site pour voir la situation et n'a pas trouvé quelque chose d'inhabituel, mais le montant de celui-ci, IP dynamitage ont été bloqués. est sacrément que le temps n'a pas désempli, courir ici, courir là-bas, qui ont encore le temps de prendre soin de vous cette explosion.
16 Nombre de dynamitage vers le bas baisse, je ne les soins encore plus, jusqu'à ce que n ° 19, e-mail suggérant un nouveau membre de l'enregistrement de mon domaine? ? ?
fonction d'enregistrement du site Web peut fermer enregistré? Ceci est le jour où ils ont été trouvés; traces de dynamitage que les utilisateurs enregistrés ont arrêté avec succès vers le bas.
Quant au plus tard les explosifs, les estimations ne sont pas le même groupe de personnes, après un site d'enregistrement de compte réussi a également reçu un grand nombre de verrouillage avis.
D'après le dynamitage analyse du temps, sont 23-7 cette fois, quelques jours en chien fatigué, je matin encore tôt et vous venez de faire?
Jusqu'à ce que vous voyez ce message, je ***** ......
Site Web non mon site.
Visiter le site web découverte de fond ont bloqué IP tous été effacée:
Dernière attaquant actif. Pensez à ce merveilleux ah truc, le dynamitage qui, connectez-vous directement avec ses propres comptes.
Je regarde le calendrier, il est estimé être occupé jusqu'au début Avril. .
Je refermai rapidement le site, le site a reculé, pour une analyse post hoc.
analyse
L'analyse commence, devant un tas de bêtises ......
Le site a été fait un peu de changement: la fonction d'enregistrement est activée.
La découverte de nouveaux utilisateurs enregistrés:
Adresse du domicile est modifiée:
Home est injecté script de script pour sauter vers un site Web malveillant, dans ses différents scripts script pages aussi trouvé-sujet plug saut implanté.
Est-NinTechNet dernière communication WordPress WP plug-ins SMTP apparaissent 0 vulnérabilités jour (actuelles en version V1.3.9) jugement, l'attaquant est d'utiliser les vulnérabilités 0 jour sont modifiés en fonction du contenu du site et 315 jours .;
3.17 jours, la version officielle mise à jour v1.3.9.1, n'a pas été mise à jour du webmaster mise à jour s'il vous plaît!
Analyse de la vulnérabilité: bloc de code Problèmes
admin_init fonction () { if (defined ( 'DOING_AJAX') && DOING_AJAX) { add_action ( 'wp_ajax_swpsmtp_clear_log', array ($ ce, 'clear_log')); add_action ( 'wp_ajax_swpsmtp_self_destruct', array ($ this, 'self_destruct_handler')); } // Afficher le journal if (isset ($ _GET <'swpsmtp_action'>)) { if ($ _GET <'swpsmtp_action'> === 'view_log') { $ Nom_fichier_journal = $ this- > opts <'smtp_settings'> <'nom_fichier_journal'>; if (! (file_exists plugin_dir_path (__FILE__). $ nom_fichier_journal)) { if ($ this- > log ( "débogage facile WP SMTP fichier journal \ r \ n \ r \ n") === false) { wp_die ( 'Can \' t écrire dans le fichier journal Vérifiez si le répertoire du plugin ( 'plugin_dir_path (__FILE__) ..') est inscriptible » ..); }; } $ Logfile = fopen (plugin_dir_path (__FILE__) nom_fichier_journal de $, 'rb'.); if (! $ logfile) { wp_die ( 'Can \' t fichier journal ouvert.); } header ( 'Content-Type: text / plain'); fpassthru ($ logfile); die; } } // vérifier si cela est paramètres d'exportation demande $ Is_export_settings = filter_input (INPUT_POST, 'swpsmtp_export_settings', FILTER_SANITIZE_NUMBER_INT); si (is_export_settings de $) { $ Data = array (); $ Opts = get_option ( 'swpsmtp_options', array ()); $ Données <'swpsmtp_options'> = $ opts; $ Swpsmtp_pass_encrypted = get_option ( 'swpsmtp_pass_encrypted', false); $ Données <'swpsmtp_pass_encrypted'> = $ swpsmtp_pass_encrypted; if ($ swpsmtp_pass_encrypted) { $ Swpsmtp_enc_key = get_option ( 'swpsmtp_enc_key', false); $ Données <'swpsmtp_enc_key'> = $ swpsmtp_enc_key; } $ Smtp_test_mail = get_option ( 'smtp_test_mail', array ()); $ Données <'smtp_test_mail'> = $ smtp_test_mail; $ Out = array (); $ Out <'data'> = serialize ($ data); $ Out <'ver'> = 1; $ Out <'somme'> = md5 ($ sur <> 'données'); $ Nom du fichier = 'easy_wp_smtp_settings.txt'; header ( 'Content-Disposition: pièce jointe; filename = "' $ filename .. '"'); header ( 'Content-Type: text / plain'); echo serialize ($ out); sortie; } $ Is_import_settings = filter_input (INPUT_POST, 'swpsmtp_import_settings', FILTER_SANITIZE_NUMBER_INT); si (is_import_settings de $) { $ ERR_MSG = __ ( 'Une erreur est survenue lors de l'importation des paramètres', 'facile wp-smtp'); si (vide ($ _FILES <'swpsmtp_import_settings_file'>)) { echo $ err_msg; wp_die (); } $ In_raw = file_get_contents ($ _FILES <'swpsmtp_import_settings_file'> <'tmp_name'>); try { $ En = unserialize ($ in_raw); si (vide ($ dans <'data'>)) { echo $ err_msg; wp_die (); } si (vide ($ en <'somme'>)) { echo $ err_msg; wp_die (); } si (md5 ($ dans <'data'>)! == $ en <'somme'>) { echo $ err_msg; wp_die (); } $ Data = unserialize ($ dans <'données'>); foreach ($ data comme $ key = > $ Valeur) { update_option ($ key, $ value); } set_transient ( 'easy_wp_smtp_settings_import_success', true, 60 * 60); $ Url = admin_url () 'Options-general.php page = swpsmtp_settings? .; wp_safe_redirect ($ url); sortie; } Catch (Exception $ ex) { echo $ err_msg; wp_die (); } } }Admin_init de la fonction ci-dessus facile wp-smtp.php de script () lorsqu'un utilisateur accédant à la zone de gestion par le crochet en cours d'exécution admin_int. Il est utilisé pour afficher / supprimer le journal, la configuration import / export et mettre à jour l'option de base de données Wordpress, il ne vérifie pas la fonctionnalité de l'utilisateur, de sorte que tout utilisateur peut se connecter à déclencher. Mais il peut également être effectuée par les utilisateurs non authentifiés, car facile WP SMTP en utilisant AJAX et admin_inj hook exécuter sur admin-ajax.php.
Ainsi, l'utilisateur non authentifié peut envoyer ajax demande, par exemple action = swpsmtp_clear_log, pour déclencher les fonctions décrites ci-dessus et exécute son code.
La traçabilité
A l'origine destiné à être traçable à l'attaquant, mais le serveur est hébergé dans le nuage IP Ali, pour l'exportation ne sont pas IP indépendante, le dynamitage de la capture d'écran ci-dessus tous les IP ne sont pas les attaquants, la douleur est encore plus d'oeufs pour nettoyer les journaux du site sont nus (pas de temps Connexion traitement de fond), m'a laissé que deux sauts sur le nom de domaine.
Par l'intelligence sont à la fois la menace d'éclatement IP IP. Maintenant, utilisez un navigateur pour accéder au nom de domaine de site Web d'informations de pêche rapide (non-sens, combien de jours est un wordpress).
Dans les commentaires bte ce widget aussi beaucoup de condamner, on peut imaginer à ce moment combien de sites attaquaient.
reproduction
A côté de reproduire la vulnérabilité.
Confirmer facile WP SMTP Version:
Confirmer la fonction d'enregistrement de domaine est désactivé:
Selon POC donné en ligne, créez un fichier, il va écrire le contenu du fichier:
Ce fichier est une demande normale retournera un 0:
Téléchargez le fichier:
Visitez le site Web écran de connexion, la fonction d'enregistrement a été activée. Essayer d'enregistrer un compte, vérifier si l'utilisateur est enregistré en tant qu'administrateur, processus d'inscription et nouveau processus d'inscription de l'utilisateur pour obtenir un message par la poste.
La vérification est réussie.
Voir devipentesting99 les utilisateurs? Ceci est l'attaquant d'utilisateur créé.
Jusqu'à présent, la reproduction se termine.
« Vous avez un webmaster, » et ce ne dites pas (laisser la bibliothèque supprimé).
Un petit conseil:
Réparer le fichier est modifié, supprimé webshell (trouvé à télécharger plus webshell);
Plugin mise à jour à la dernière version, la version du point d'équilibre est également disponible;
problèmes de site Web doivent être dans le temps pour résoudre les problèmes, l'importance de l'intervention d'urgence;
Mettre l'accent sur les dernières vulnérabilités pour mettre à jour le lancement officiel de la version mise à jour;
Des sauvegardes régulières des journaux Web, le journal ne peut pas être à l'avenir;
Peut se permettre d'utiliser un pare-feu d'applications Web.
* L'auteur: timneh, tiré à part FreeBuf.COM