Code personnalisé. Traitement du "code arbitraire". Création d'un module basé sur "Code HTML personnalisé"

Aujourd'hui, je voudrais vous expliquer comment, en utilisant WordPress comme exemple, ajouter du code HTML arbitraire au bon endroit. Qu'il s'agisse d'un code de compteur ou d'un code d'abonnement à votre chaîne, de publicité, etc. Nous insérerons le code via le widget WordPress standard.

WordPress – ajoutez du code HTML personnalisé.

Il est toujours nécessaire d'insérer du code HTML arbitraire, de créer un bel abonnement à votre chaîne dans la barre latérale ou simplement de placer du texte sur la page principale, il existe de nombreuses options, tout dépend de vos besoins.

Les dernières versions de WordPress disposent déjà d'un widget intégré pour ajouter du code HTML personnalisé, il n'est donc pas nécessaire d'installer des plugins séparés.

Et donc, pour ajouter notre code, nous devons aller dans l’onglet « Apparence » -> « Paramètres » dans le panneau d’administration. C'est également possible via des widgets, mais nous ne verrons alors pas le résultat immédiatement. Je préfère un éditeur visuel.

Nous sélectionnons l'endroit où nous voulons ajouter notre code. Je souhaite ajouter un compteur à la barre latérale. Sélectionnez « Sidebar », votre nom peut différer, tout dépend du modèle.

Un nouveau widget apparaîtra, ouvrez-le et entrez notre code dans le contenu, n'oubliez pas de sauvegarder.

En conséquence, nous obtenons le résultat suivant.

De cette façon, vous pouvez ajouter du code HTML partout où vous souhaitez utiliser des widgets.

C'est tout, j'espère que cet article vous a été utile.

  • " onclick="window.open(this.href,"win2","status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizing=yes,width=640,height=480,directories =non,emplacement=non"); return false;" > Imprimer
  • E-mail

Dans ce didacticiel, nous verrons comment afficher du contenu supplémentaire sur votre site à l'aide du module Code HTML personnalisé. Il montrera également comment traduire le contenu de ce module dans une autre langue à l'aide du composant Joom!Poisson.

Introduction

Module " Code HTML personnalisé"est un module standard CMS Joomla, avec lequel nous pouvons ajouter du code HTML à n'importe quel endroit de la page du site autorisé par le modèle de site. En utilisant ce module, il est pratique d'ajouter non seulement du texte avec des graphiques, mais également divers scripts et informateurs.
Dans ce tutoriel nous allons vous montrer comment utiliser le module "Code HTML personnalisé", ainsi que comment utiliser ce module dans un composant pour créer des traductions dans d'autres langues - Joom!Poisson.

Tout d’abord, nous allons créer un « Code HTML personnalisé » et ajouter ce module à la page principale du site Web « We Ride Ourselves ». Nous montrerons ensuite comment apporter des modifications dans ce module pour les langues russe et ukrainienne du site. Plus précisément, nous changerons le titre « Nouvel An dans les Carpates... » par « Dans les Carpates... », puis remplacerons l'objet « Chervona Ruta » par « Polyana Kvasova ».

Création d'un module basé sur "Code HTML personnalisé"

Pour créer un module "Code HTML personnalisé" vous devez vous rendre dans le "Gestionnaire de modules" (dans le menu "Extensions"). Ensuite, vous devez cliquer sur le bouton « Créer » et sélectionner le module « Code HTML personnalisé » dans la liste. Une fenêtre de module s'ouvrira, dans laquelle vous devrez saisir un titre, l'activer et également saisir le code HTML souhaité (votre) dans le formulaire « Texte personnalisé ». Nous avons entré « Hot Deals » comme titre et défini la position en bas du site en sélectionnant « pied de page » dans la liste pour l'élément « Position : ». Puisque nous voulons que notre contenu soit affiché uniquement sur la page principale, nous devons cocher la case « Sélectionner dans la liste » dans la colonne « Objectif du menu » en face de l'inscription « Menu : » et sélectionner uniquement « Accueil » dans la liste (Fig. .1). et cliquez sur le bouton « Enregistrer ». L'utilisation du module « Code HTML personnalisé » est décrite plus en détail dans la leçon « Ajout de code HTML personnalisé dans le module Joomla à l'aide de l'exemple d'un informateur de prévisions météo ».

Travailler avec la traduction de modules à l'aide du composant Joom!Fish

Après création, notre module apparaîtra sur la page principale.
Pour changer quoi que ce soit dans un module, il vous suffit d'aller dans le « Gestionnaire de modules » dans le panneau d'administration puis d'aller dans notre module, où nous effectuons visuellement nos modifications.

Dans certains cas, il est pratique d'effectuer une traduction d'une autre manière - via le panneau de configuration du composant Joom!Fish.
Pour traduire le module de la deuxième manière, vous devez aller dans le menu « Composants » et sélectionner « Joom!Fish » - « Gestion des traductions ». Cliquez ensuite sur le bouton « Copie de l'original en traduction », sélectionnez l'élément « Modules » dans la liste et sélectionnez la langue souhaitée dans le menu déroulant « Langues » (situé à droite). Nous avons deux langues sur notre site Internet : le russe (par défaut) et l'ukrainien (Fig. 2). Dans notre cas, nous choisissons la langue ukrainienne.


Après avoir sélectionné la langue, une liste de modules apparaîtra dans laquelle nous devons trouver notre module et y accéder. Une fenêtre appelée « Traduction » apparaîtra, dans laquelle nous pourrons traduire notre module dans une autre langue. Dans notre cas, nous remplaçons l'objet « Chervona Ruta » par « Polyana Kvasova » (Fig. 3). Après avoir cliqué sur le bouton « Enregistrer », notre traduction du module apparaîtra sur la page principale du site (Fig. 4).




Si tu veux regarder leçon vidéo avec toutes les étapes détaillées, vous pouvez télécharger l'archive avec la leçon vidéo à partir du lien.

Une vulnérabilité critique dans la version d'entreprise du système de contrôle de version populaire GitHub permet à tout utilisateur autorisé d'exécuter du code arbitraire sur le système. Pour exploiter cette vulnérabilité, vous devez utiliser plusieurs techniques à la fois : injection dans un service de mise en cache et injection d'objets.

informations générales

La méthode Addressable::URI.parse analyse l'URL transmise et la vérifie par rapport aux spécifications RFC 3986, RFC 3987 et RFC 6570. Cela signifie que nous pouvons envoyer des requêtes à n'importe quel serveur. Aucune autre vérification d'adresse n'est effectuée.

Ce n'est que lorsque vous essayez d'utiliser des adresses locales localhost, 127.0.0.1 et autres que le système renvoie une erreur d'hôte non valide. Cependant, pas seulement un hôte local ! Ce bug peut être contourné en utilisant simplement l'adresse 0.0.0.0 ou 0 pour faire court.

Vérifions comment cela fonctionne. Écoutons le port 31337 (nc -lp 31337 -vvv) sur la machine virtuelle. Et puis nous créerons un webhook, en spécifiant http://0.0.0.0:31337/test comme URL. Après avoir cliqué sur le bouton « Ajouter », une demande nous parvient immédiatement.



On peut se féliciter, nous avons découvert une vulnérabilité SSRF. Oui, pas simple, mais qui montre également la réponse du serveur si elle est formatée comme une réponse HTTP valide.

Nous devons maintenant déterminer ce que nous pouvons en faire.

Ce n'est pas pour rien que j'ai essayé avec autant de zèle d'accéder à localhost. GitHub Enterprise est une application volumineuse et complexe, c'est pourquoi un certain nombre de services de support sont exécutés à l'intérieur. Regardez simplement la barre d'état.


Ici, nous avons « Elastic », « Radis » et « Memkesh ». Choisissez - je n'en veux pas !

Commençons par Memcached. Le protocole pour communiquer avec lui est basé sur du texte, vous pouvez donc tenter une injection. Essayons de diviser la requête (HTTP Request Splitting), pour cela nous allons créer un hook avec des caractères de retour chariot.

Http://0:31337/Bonjour%0D%0Aworld

Cela n'a pas fonctionné. Bon, ne désespérez pas, il y a encore de quoi profiter sur ce serveur.

Trouver des services adaptés

Il est maintenant temps d'examiner les ports ouverts. Exécutons la commande sudo netstat -anp | grep -i ÉCOUTER .



Voici une liste impressionnante de services disponibles sur le réseau. Il y a de la place pour se déplacer, même le port 1337 est ouvert 😉

Si vous vous en souvenez, j'ai dit que SSRF vous permettait de lire la réponse. Cela peut être utilisé lors des tests d’intrusion en boîte noire. Par exemple, voyons ce qu'il y a sur le fameux port 1337. Créons un hook http://0:1337/, ouvrons-le et faites défiler jusqu'à Livraisons récentes. Là, dans l'onglet Réponse, vous pouvez voir la réponse du serveur. Si nous souhaitons renvoyer la demande, alors le bouton Redeliver est à votre service.

La suite est disponible uniquement pour les membres

Option 1. Rejoignez la communauté « site » pour lire tous les documents sur le site

L'adhésion à la communauté pendant la période spécifiée vous donnera accès à TOUS les documents Hacker, augmentera votre remise cumulée personnelle et vous permettra d'accumuler une note professionnelle Xakep Score !

Le traitement « Code personnalisé » est destiné à la compilation et à l'exécution de code 1C:Enterprise 8 personnalisé en mode utilisateur. Ce traitement est principalement destiné aux implémenteurs et aux utilisateurs avancés. Développé sur la base du traitement de la console de requête.

Le traitement fournit des fonctions :

  • exécution de code arbitraire (texte entièrement ou sélectionné),
  • concevoir des requêtes (avec réouverture en édition) avec remplissage automatique ou manuel des paramètres,
  • paramétrer les valeurs des variables trouvées dans le texte du code (via menu contextuel ou glisser-déposer),
  • insérer les variables (paramètres) décrites dans le texte du code,
  • analyse des erreurs lors de l'exécution du code,
  • enregistrer des fragments de code et des valeurs de paramètres dans un fichier pour le stockage entre les sessions de travail.

Ainsi, le traitement peut être utilisé comme référentiel de mécanismes universels pouvant être exécutés au sein d’une seule procédure.

Description des dialogues

La boîte de dialogue de traitement est divisée en trois blocs principaux.

Arbre d'extraits de code

Dans la partie supérieure gauche du traitement se trouve une arborescence de fragments de code compilés par l'utilisateur. Il est possible d'ajouter, de supprimer ou de déplacer des éléments de cette liste. En double-cliquant sur une ligne de l'arborescence, le fragment de code sélectionné est exécuté. L'arborescence est contrôlée à l'aide d'un bloc de boutons sur le panneau de commande de traitement.

Le traitement fournit un mode de sauvegarde automatique des fragments de code. Pour ce faire, vous devez utiliser le bouton du panneau de commande pour appeler la boîte de dialogue des paramètres d'enregistrement automatique, activer le mode d'enregistrement automatique et définir l'intervalle souhaité pour enregistrer automatiquement les requêtes dans un fichier.

Options d'extrait de code

Le bouton "Paramètres" ouvre un panneau dans lequel vous pouvez spécifier une liste de paramètres de requête et de variables utilisés dans le code.

La première colonne indique le nom du paramètre.

La deuxième colonne indique le paramètre de code réel, qui peut être spécifié directement par la valeur.

Les paramètres sont renseignés automatiquement lorsque la demande est élaborée par le concepteur. De plus, les paramètres peuvent être ajoutés manuellement en ajoutant des lignes au tableau ou depuis le menu contextuel du champ de texte du code, ou en faisant glisser une variable dans le tableau des paramètres.

Texte du code

Au bas du traitement se trouve le texte du code réel. L'extrait affiché dépend de la ligne actuelle de l'arborescence des extraits de code.

Salut tout le monde! J'ai une courte instruction prévue pour aujourd'hui - comme sur le blog pour les utilisateurs issus de la recherche, afficher un code personnalisé n'importe où dans le modèle.

J'ai trouvé une application pratique de cette méthode il y a quelques mois. A cette époque, pour les visiteurs des moteurs de recherche, une invitation à s'abonner à la newsletter était affichée sous l'en-tête.

Comme vous l'avez compris, la ligne n'a été affichée qu'une seule fois - lors de la première transition depuis le moteur de recherche, puis lors de la navigation sur les pages, elle a disparu et n'est plus réapparue. Bien sûr, si le même utilisateur ne revient pas sur le blog.

J'ai pris comme exemple un abonnement, mais vous pouvez aussi organiser l'affichage de lignes publicitaires, d'éventuelles publicités, etc. Et bien entendu, l’emplacement ne se limite pas à l’en-tête ; ce code peut être affiché n’importe où dans le modèle. Passons à la partie pratique de l'implémentation du script.

Fonction qui détermine la source de la requête (référent HTTP)

Tout d'abord, nous créons une nouvelle fonction derecherche (traduction conventionnelle - «de recherche»), le nom de la fonction peut être n'importe quoi, l'essentiel est de garder à l'esprit et d'utiliser le nom accepté à l'avenir. Cette fonctionnalité est destinée déterminer la source de transition- que ce soit PS, un autre site, etc. Nous sommes intéressés par PS. Ainsi, sur WordPress, nous insérons le code dans le fichier modèle function.php :

fonction de recherche()( $ref = $_SERVER["HTTP_REFERER" ]; $SE = tableau ("/search?" , "images.google." , "search." , "yandsearch" , "/search/" , ".yahoo." ); foreach ($SE comme $source) ( if (strpos($ref,$source)!==false ) renvoie vrai ;) renvoie faux ;)

Veuillez noter que la troisième ligne indique les agents pour lesquels la règle sera exécutée et du code arbitraire sera affiché à l'avenir. Ceci termine la partie principale, il ne reste plus qu'à afficher la fonction dans n'importe quel endroit pratique.

Sortie de code arbitraire lors de la transition depuis les moteurs de recherche

L'étape suivante consiste à afficher la fonction prédéfinie sur la page. Pour ce faire, nous utilisons les lignes suivantes, que nous insérons dans le fichier modèle, par exemple, j'utilise index.php :

classe="showfromsearch" > CODE PERSONNALISÉ div >

Par exemple, mon code complet avec abonnement ressemblait à ceci :

classe="showfromsearch" > <classe div = "avertissement" > Nouveau sur le blog ? Abonnez-vous à notre newsletter !div > div >

Ça y est, la sortie de la fonction est terminée, passons à l'étape suivante.

Styles de conception pour le bloc qui affiche le code pour les visiteurs du PS

Il ne reste plus qu'à attribuer à la classe afficher à partir de la recherche styles de conception, ajustement pour s'adapter, ajustement de la position par rapport aux autres blocs. Si tout ce qui précède peut être utilisé immédiatement, sans apporter de modifications, alors il n'existe pas de solutions spécifiques pour une conception personnalisée.

Tout dépend de la disposition et de l'endroit où cette fonction est affichée. Extérieurement, ma ligne, que je donne dans l'exemple, ressemblait à ceci :

Le bloc marqué d'une flèche rouge n'est affiché qu'aux utilisateurs provenant des moteurs de recherche ; pour toutes les autres transitions, il n'est pas visible. Je vais donner mon exemple, pour lequel j'ai défini le style de conception dans le fichier style.css :

.showfromsearch ( largeur :900px ; bordure :0 ; texte-align :gauche; marge :auto; remplissage :0 ; )

Et encore une fois j'attire votre attention : ce style est attribué à un bloc avec une fonction, c'est à dire nous configurons exactement l'apparence et l'emplacement du bloc lui-même, et non ce qu'il contient. Le contenu interne utilise ses propres styles. Si vous regardez la capture d'écran ci-dessus où j'ai affiché l'abonnement, alors le cadre autour de la ligne, l'arrière-plan et l'image sont attribués à une classe différente ( avertissement), qui contient le texte.

Par ici tout code pour les transitions de la recherche est affiché, je vais probablement le répéter - en utilisant cette méthode, vous pouvez montrer aux autres, tandis que les lecteurs réguliers provenant de signets, de visites directes ou de liens sur d'autres sites ne verront pas ce contenu.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :