WordPress: aggiungi codice HTML personalizzato. chiavi Github. Esecuzione di codice arbitrario in GitHub Enterprise Lavorare con la traduzione del modulo utilizzando il componente Joom!Fish

Ciao a tutti! Oggi ho in programma una piccola istruzione - come sul blog per gli utenti provenienti dalla ricerca, visualizzare un codice arbitrario ovunque nel modello.

Ho trovato un'applicazione pratica per questo metodo un paio di mesi fa. In quel momento, per i visitatori dei motori di ricerca, sotto l'intestazione, veniva visualizzato come riga un invito a iscriversi alla newsletter.

Come capisci, la riga è stata visualizzata solo una volta: quando sei passato per la prima volta dal motore di ricerca, quindi quando hai navigato tra le pagine, è scomparsa e non è più ricomparsa. Naturalmente, se lo stesso utente non è tornato di nuovo sul blog entro .

Ho fornito un abbonamento come esempio, ma puoi anche organizzare la visualizzazione di righe di annunci, eventuali annunci e così via. E, naturalmente, la posizione non è limitata all'intestazione, questo codice può essere visualizzato ovunque nel modello. Procediamo alla parte pratica dell'implementazione dello script.

Funzione che determina l'origine della richiesta (referer HTTP)

Prima di tutto, creiamo una nuova funzione dacerca (la traduzione condizionale è "dalla ricerca"), il nome della funzione può essere qualsiasi cosa, la cosa principale da tenere a mente e utilizzare il nome accettato in futuro. Questa funzione è per determinare la fonte del passaggio- che si tratti di un PS, di un altro sito, ecc. Siamo interessati a PS. Quindi, su WordPress, nel file template functions.php, incolla il codice:

funzione dacerca()( $ref = $_SERVER["HTTP_REFERER" ]; $SE = array ("/search?" , "images.google." , "search." , "yandsearch" , "/search/" , ".yahoo." ); foreach ($SE as $source) ( if (strpos($ref,$source)!==false ) return true ;) return false ;)

Si noti che la terza riga contiene agenti per i quali verrà eseguita la regola e verrà mostrato un codice arbitrario in futuro. Questo completa la parte principale, resta da visualizzare la funzione in qualsiasi posto conveniente.

Output di un codice arbitrario durante le transizioni dai motori di ricerca

Il passaggio successivo consiste nel visualizzare la funzione predefinita nella pagina. Per fare ciò, utilizziamo le seguenti righe, che inseriamo nel file modello, ad esempio, io uso index.php:

classe="mostradalla ricerca" > CODICE CASUALE div >

Ad esempio, il mio codice completo con un abbonamento era simile a questo:

classe="mostradalla ricerca" > <div class="avviso"> Prima volta sul blog? Iscriviti alla newsletter!div > div >

Ecco fatto, questo completa l'output della funzione, vai al passaggio successivo.

Stili di progettazione per il blocco che visualizza il codice per i visitatori con PS

Resta da assegnare la classe showfromsearch stili di progettazione, adatta a , regola la posizione rispetto ad altri blocchi. Se tutto quanto sopra può essere utilizzato immediatamente, senza apportare modifiche, non esistono soluzioni specifiche per la progettazione personalizzata.

Tutto dipende dal layout e dal luogo in cui viene visualizzata questa funzione. Esternamente, la mia riga, che do nell'esempio, era simile a questa:

Il blocco contrassegnato da una freccia rossa viene mostrato solo agli utenti che provengono dai motori di ricerca, non è visibile a tutte le altre transizioni. Darò il mio esempio, per il quale ho impostato lo stile nel file style.css:

.showfromsearch ( width :900px ; border :0 ; text-align :left; margin :auto; padding :0 ; )

E ancora una volta attiro la tua attenzione: questo stile è assegnato a un blocco con una funzione, ad es. stiamo impostando esattamente il tipo e la posizione del blocco stesso, e non cosa c'è in esso. Il contenuto interno utilizza i propri stili. Se guardi lo screenshot qui sopra, dove ho visualizzato l'abbonamento, la cornice attorno alla linea, lo sfondo e l'immagine vengono assegnati a un'altra classe ( avvertimento) che racchiude il testo.

Questo è il modo in cui viene visualizzato qualsiasi codice per le transizioni dalla ricerca, probabilmente lo ripeto - usando questo metodo, puoi mostrare o altri, mentre i lettori abituali provenienti da segnalibri, visite dirette o collegamenti su altri siti non vedranno questo contenuto.

Oggi vorrei parlarvi di come utilizzare WordPress come esempio per aggiungere codice HTML arbitrario nel posto giusto. Che si tratti di un codice contatore o di un codice di iscrizione al tuo canale, pubblicità e così via. Inseriamo il codice tramite il widget standard di WordPress.

WordPress: aggiungi codice HTML personalizzato.

C'è sempre bisogno di inserire un codice HTML arbitrario, fare una bella iscrizione al tuo canale nella barra laterale o semplicemente inserire del testo nella pagina principale, ci sono molte opzioni, tutto dipende dalle tue esigenze.

Le ultime versioni di WordPress hanno già un widget integrato per aggiungere codice HTML arbitrario, quindi non è necessario installare plug-in separati.

Quindi, per aggiungere il nostro codice, dobbiamo andare nella scheda "Aspetto" -> "Impostazioni" nel pannello di amministrazione. È possibile anche tramite widget, ma poi non vedremo subito il risultato. Preferisco più editor visivo.

Scegliamo il luogo in cui vogliamo aggiungere il nostro codice. Voglio aggiungere un contatore alla barra laterale. Seleziona "Barra laterale", potresti avere un nome diverso, tutto dipende dal modello.

Apparirà un nuovo widget, aprilo e inserisci il nostro codice nel contenuto, non dimenticare di salvare.

Di conseguenza, otteniamo il seguente risultato.

In questo modo puoi aggiungere codice HTML in qualsiasi luogo in cui è possibile utilizzare i widget.

Questo è tutto, spero che questo articolo sia stato utile.

Una vulnerabilità critica nella versione aziendale del popolare sistema di controllo della versione GitHub consente a qualsiasi utente autorizzato di eseguire codice arbitrario nel sistema. Per sfruttare questa vulnerabilità, sono necessarie diverse tecniche contemporaneamente: injection in un servizio di cache e injection di oggetti.

Informazione Generale

Il metodo Addressable::URI.parse analizza l'URL specificato e lo confronta con le specifiche RFC 3986, RFC 3987 e RFC 6570. Ciò significa che possiamo inviare richieste a qualsiasi server. Non vengono eseguiti altri controlli di indirizzo.

Solo ora, quando si tenta di utilizzare indirizzi locali localhost, 127.0.0.1 e simili, il sistema restituisce un errore host non valido. Tuttavia, non un solo localhost! Questo bug può essere aggirato semplicemente usando l'indirizzo 0.0.0.0 o 0 in breve.

Verifichiamo come funziona. Ascoltiamo la porta 31337 (nc -lp 31337 -vvv) sulla macchina virtuale. Quindi creeremo un webhook con http://0.0.0.0:31337/test come URL. Dopo aver cliccato sul pulsante "Aggiungi", riceveremo immediatamente una richiesta.



Possiamo congratularci con noi stessi, abbiamo scoperto una vulnerabilità SSRF. Sì, non semplice, ma che mostra anche la risposta del server se formattata come risposta HTTP valida.

Ora devi capire cosa puoi farci.

Non è stato un caso che ho cercato così zelantemente di contattare localhost. GitHub Enterprise è un'applicazione grande e complessa, quindi ci sono numerosi servizi di supporto in esecuzione all'interno. Dai un'occhiata alla barra di stato da solo.


Qui abbiamo Elastic, Ravanello e Memkesh. Scegli - Non voglio!

Cominciamo con Memcached. Il protocollo per comunicare con lui è testuale, quindi puoi provare a iniettare. Proviamo a trasformare la suddivisione della richiesta (HTTP Request Splitting), per questo creeremo un hook con caratteri di ritorno a capo.

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

Non ha funzionato. Ok, non disperare, c'è ancora qualcosa da cui trarre profitto su questo server.

Cerca i servizi adatti

Ora è il momento di guardare le porte aperte. Esegui il comando sudo netstat -anp | grep -i ASCOLTA .



Ecco un elenco così impressionante di servizi disponibili sulla rete. C'è dove girovagare, anche la porta 1337 è aperta 😉

Se ricordi, ho detto che SSRF ti consente di leggere la risposta. Questo può essere utilizzato durante i test di penetrazione della scatola nera. Ad esempio, vediamo cosa c'è sulla famigerata porta 1337. Creiamo un hook http://0:1337/ , apriamolo e scorriamo fino a Consegne recenti. Lì, nella scheda Risposta, puoi vedere la risposta dal server. Se vogliamo inviare nuovamente la richiesta, il pulsante Riconsegna è al tuo servizio.

Continua disponibile solo per i membri

Opzione 1. Unisciti alla community del "sito" per leggere tutti i materiali sul sito

L'appartenenza alla community durante il periodo specificato ti darà accesso a TUTTI i materiali Hacker, aumenterà il tuo sconto cumulativo personale e ti consentirà di accumulare un punteggio Xakep professionale!

Se devi inserire codice personalizzato nei post e nelle pagine del tuo sito WordPress, puoi utilizzare il plug-in Global Content Blocks. Il plugin non è pesante, ti permette di inserire in modo rapido e conveniente HTML, codici PHP, codici arbitrari, moduli di iscrizione, annunci AdSense, blocchi di testo in un articolo o pagina. Con esso, puoi inserire il codice php nel modello del sito e posizionare i blocchi in due o tre colonne. Il plugin è costantemente aggiornato e può essere classificato come uno dei migliori plugin per WordPress.

Scarica e installa

Eseguiamo i passaggi standard. Se installi i plugin da , fornisco l'indirizzo della pagina ufficiale del plugin: https://ru.wordpress.org/plugins/global-content-blocks/

Configurazione del plug-in Global Content Blocks

Pertanto, non ci sono impostazioni del plug-in. Dopo aver attivato il plugin, nella console compare un menu: Blocchi di contenuto globali. Nella pagina del plugin vediamo le schede di controllo:

  • Gestisci blocchi (1) - gestione dei blocchi dei plugin;
  • Aggiungi un Content Blocks (2) - aggiungendo blocchi;
  • Impostazione (3) - importa i blocchi da un altro sito.

Inoltre, nell'editor del sito viene visualizzato un pulsante per l'aggiunta di blocchi di plug-in.


pulsante per aggiungere blocchi di contenuto globali nell'editor

Incorpora il codice personalizzato nei post e nelle pagine di WordPress utilizzando il plug-in Global Content Blocks

Il plugin è facile da usare:

  • Vai alla pagina per aggiungere un blocco;
  • Assegna un nome al nuovo blocco (1),
  • Dagli un nome latino per lo shortcode (2);
  • Seleziona il tipo di contenuto (3);
  • È possibile selezionare un'immagine (5) da inserire nel blocco;
  • Inserire il contenuto del blocco (4).

Crea un nuovo blocco Blocchi di contenuti globali