O vulnerabilitate critică în versiunea corporativă a popularului sistem de control al versiunilor GitHub permite oricărui utilizator autorizat să execute cod arbitrar pe sistem. Pentru a exploata această vulnerabilitate, trebuie să utilizați mai multe tehnici simultan: injectarea într-un serviciu de cache și injectarea obiectelor.

Informații generale

Metoda Addressable::URI.parse analizează URL-ul transmis și îl verifică cu specificațiile RFC 3986, RFC 3987 și RFC 6570. Aceasta înseamnă că putem trimite cereri către orice server. Nu se efectuează alte verificări ale adresei.

Doar atunci când încercați să utilizați adrese locale localhost, 127.0.0.1 și așa mai departe sistem similar returnează o eroare de gazdă nevalidă. Cu toate acestea, nu doar o gazdă locală! Acest bug poate fi rezolvat prin simpla utilizare a adresei 0.0.0.0 sau 0 pe scurt.

Să verificăm cum funcționează. Să ascultăm portul 31337 (nc -lp 31337 -vvv) de pe mașina virtuală. Și apoi vom crea un webhook, specificând http://0.0.0.0:31337/test ca URL. După ce faceți clic pe butonul „Adăugați”, o solicitare ajunge imediat la noi.



Ne putem felicita, am descoperit o vulnerabilitate SSRF. Da, nu unul simplu, dar care arată și răspunsul serverului dacă este formatat ca răspuns HTTP valid.

Acum trebuie să ne dăm seama ce putem face cu el.

Nu degeaba am încercat cu atâta zel să ajung pe localhost. GitHub Enterprise este o aplicație mare și complexă, așa că există o serie de servicii de asistență care rulează în interior. Uită-te doar la bara de stare.


Aici avem „Elastic”, și „Ridiche” și „Memkesh”. Alege - nu vreau!

Să începem cu Memcached. Protocolul de comunicare cu el se bazează pe text, așa că puteți încerca o injecție. Să încercăm să împărțim cererea (HTTP Request Splitting), pentru aceasta vom crea un hook cu caractere de returnare a carului.

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

Nu a mers. Bine, nu disperați, mai există ceva de care profitați pe acest server.

Găsirea serviciilor potrivite

Acum este momentul să priviți porturi deschise. Să rulăm comanda sudo netstat -anp | grep -i ASCULTA .



Iată o listă impresionantă de servicii care sunt disponibile prin rețea. Există loc de hoinărit, chiar și portul 1337 este deschis 😉

Dacă vă amintiți, am spus că SSRF vă permite să citiți răspunsul. Acesta poate fi folosit în timpul testelor de penetrare a cutiei negre. De exemplu, să vedem ce se află pe notoriu portul 1337. Să creăm un hook http://0:1337/, să îl deschidem și să derulăm la Livrări recente. Acolo, în fila Răspuns, puteți vedea răspunsul de la server. Dacă vrem să retrimitem solicitarea, atunci butonul Redeliver vă stă la dispoziție.

Continuarea este disponibilă numai pentru membri

Opțiunea 1. Alăturați-vă comunității „site” pentru a citi toate materialele de pe site

Calitatea de membru al comunității în perioada specificată vă va oferi acces la TOATE materialele Hacker, vă va crește reducerea cumulativă personală și vă va permite să acumulați un rating profesional Xakep Score!

  • " onclick="window.open(this.href,"win2","status=no,toolbar=nu,scrollbars=yes,titlebar=no,menubar=nu,resizable=yes,width=640,height=480,directore =nu,locatie=nu"); return false;" > Print
  • E-mail

În acest tutorial, vom analiza cum să afișați conținut suplimentar pe site-ul dvs. folosind modulul HTML personalizat. De asemenea, va arăta cum să traduceți conținutul acestui modul într-o altă limbă folosind componenta Joom!Pește.

Introducere

Modulul " Cod HTML personalizat„este un modul standard CMS Joomla , cu care putem adăuga cod HTML în orice loc din pagina site-ului care este permis de șablonul site-ului. Folosind acest modul, este convenabil să adăugați nu numai text cu grafică, ci și diverse scripturi și informatori.
În acest tutorial vă vom arăta cum să utilizați modulul „Cod HTML personalizat”, precum și cum să utilizați acest modul într-o componentă pentru a crea traduceri în alte limbi - Joom!Pește.

Mai întâi, vom crea un „Cod HTML personalizat” și vom adăuga acest modul pe pagina principală a site-ului web „We Ride Ourselves”. Apoi vom arăta cum să faceți modificări în acest modul pentru limbile rusă și ucraineană ale site-ului. Mai exact, vom schimba titlul " Anul Nouîn Carpați...” la „În Carpați...”, iar apoi înlocuiți obiectul „Chervona Ruta” cu „Polyana Kvasova”.

Crearea unui modul bazat pe „Cod HTML personalizat”

Pentru a crea un modul „Cod HTML personalizat” trebuie să accesați „Managerul de module” (în meniul „Extensii”). Apoi trebuie să faceți clic pe butonul „Creați” și să selectați modulul „Cod HTML personalizat” din listă. Se va deschide o fereastră de modul, unde trebuie să introduceți un titlu, să îl activați și, de asemenea, să introduceți codul HTML dorit (dvs.) în formularul „Text personalizat”. Am introdus „Hot Deals” ca titlu și am stabilit poziția în partea de jos a site-ului selectând „footer” din listă pentru elementul „Poziție:”. Deoarece vrem doar să apară conținutul nostru pagina de start, apoi trebuie să bifați caseta „Selectați din listă” în coloana „Scopul meniului” de lângă inscripția „Meniu:” și selectați doar „Acasă” în listă (Fig. 1). și faceți clic pe butonul „Salvare”. Lucrul cu modulul „Cod HTML personalizat” este descris mai detaliat în lecția „Adăugarea HTML personalizat în modulul joomla folosind exemplul unui informator de prognoză meteo”.

Lucrul cu traducerea modulelor folosind componenta Joom!Fish

După creare, modulul nostru va apărea pe pagina principală.
Pentru a schimba ceva într-un modul, trebuie doar să mergeți la „Managerul de module” din panoul de administrare și apoi să mergeți la modulul nostru, unde facem vizual modificările noastre.

În unele cazuri, este convenabil să faceți o traducere în alt mod - prin panoul de control al componentei Joom!Fish.
Pentru a traduce modulul în al doilea mod, trebuie să mergeți la meniul „Componente” și să selectați „Joom!Fish” - „Gestionarea traducerii”. Apoi, faceți clic pe butonul „Copiare a originalului ca traducere”, selectați elementul „Module” din listă și selectați limba dorită din meniul derulant „Limbi” (situat în dreapta). Avem două limbi pe site-ul nostru web: rusă (implicit) și ucraineană (Fig. 2). În cazul nostru, alegem limba ucraineană.


După selectarea limbii, va apărea o listă de module în care trebuie să găsim modulul nostru și să intrăm în el. Va apărea o fereastră numită „Traducere”, în care putem traduce modulul nostru într-o altă limbă. În cazul nostru, înlocuim obiectul „Chervona Ruta” cu „Polyana Kvasova” (Fig. 3). După ce faceți clic pe butonul „Salvați”, traducerea noastră a modulului va apărea pe pagina principală a site-ului (Fig. 4).




Daca vrei sa te uiti lectie video cu toți pașii detaliați, puteți descărca arhiva cu lecția video din link.

Salutare tuturor! Am o scurtă instrucțiune planificată pentru astăzi - exact ca pe blog pentru utilizatorii care provin din căutare, afișați un cod personalizat oriunde în șablon.

Am găsit o aplicație practică pentru această metodă acum câteva luni. La acea vreme, pentru vizitatorii din motoarele de căutare Sub antet a fost afișată o invitație de a vă abona la newsletter.

După cum înțelegeți, linia a fost afișată o singură dată - în timpul primei tranziții de la motorul de căutare, apoi la navigarea prin pagini a dispărut și nu a mai apărut. Desigur, dacă același utilizator nu se întoarce din nou pe blog.

Am folosit ca exemplu un abonament, dar puteți organiza și afișarea liniilor publicitare, orice reclame etc. Și, desigur, locația nu se limitează la antet, acest cod poate fi afișat oriunde în șablon. Să trecem la partea practică a implementării scriptului.

Funcție care determină sursa solicitării (referer HTTP)

În primul rând, să creăm caracteristică nouă fromsearch (traducere convențională - „din căutare”), numele funcției poate fi orice, principalul lucru este să țineți cont și să utilizați numele acceptat în viitor. Această caracteristică este pentru determinarea sursei de tranziţie- fie PS, alt site etc. Suntem interesați de PS. Deci, pe WordPress inserăm codul în fișierul șablon functions.php:

funcția de la căutare()( $ref = $_SERVER["HTTP_REFERER" ]; $SE = matrice ("/căutare?" , "images.google." , "căutare." , "yandsearch" , "/căutare/" , ".yahoo." ); foreach ($SE ca $sursa) ( if (strpos($ref,$sursa)!==false ) returneaza adevarat ;) returneaza fals ;)

Vă rugăm să rețineți că a treia linie indică agenții pentru care va fi executată regula și codul arbitrar va fi afișat în viitor. Aceasta completează partea principală, tot ce rămâne este să afișați funcția în orice loc convenabil.

Ieșire de cod arbitrar la tranziția de la motoarele de căutare

Următorul pas este afișarea funcției predefinite pe pagină. Pentru a face acest lucru, folosim următoarele linii, pe care le inserăm în fișierul șablon, de exemplu, folosesc index.php:

clasă="showfromsearch" > COD PERSONALIZAT div >

De exemplu, am cod complet cu un abonament arăta așa:

clasă="showfromsearch" > <div class = "avertisment" > Nou pe blog? Abonați-vă la newsletter-ul nostru!div > div >

Gata, ieșirea funcției este completă, să trecem la pasul următor.

Stiluri de design pentru blocul care afișează codul pentru vizitatorii din PS

Tot ce rămâne este să atribuiți clasei showfromsearch stiluri de proiectare, ajustați pentru a se potrivi, ajustați poziția față de alte blocuri. Dacă totul de mai sus poate fi folosit imediat, fără a face modificări, atunci nu există soluții specifice pentru design personalizat.

Totul depinde de aspectul și de locul în care este afișată această funcție. În exterior, linia mea, pe care o dau în exemplu, arăta astfel:

Blocul marcat cu o săgeată roșie este afișat numai pentru utilizatorii care provin de la motoarele de căutare, pentru toate celelalte tranziții, nu este vizibil. Voi da exemplul meu, pentru care am setat stilul de design în fișierul style.css:

.showfromsearch ( lățime : 900 px ; chenar : 0 ; text-align : left ; margin : automat ; padding : 0 ; )

Și din nou vă atrag atenția: acest stil este atribuit unui bloc cu o funcție, i.e. configuram exact aspectul și locația blocului în sine, și nu ceea ce este în el. Conținutul intern folosește propriile stiluri. Dacă te uiți la captura de ecran de mai sus unde am afișat abonamentul, atunci cadrul din jurul liniei, fundalul și imaginea sunt alocate unei clase diferite ( avertizare), care conține textul.

Pe aici este afișat orice cod pentru tranzițiile de la căutare, probabil că voi repet - folosind această metodă le puteți arăta altora, în timp ce cititorii obișnuiți care vin de la marcaje, vizite directe sau link-uri de pe alte site-uri nu vor vedea acest conținut.

Procesarea „Cod personalizat” este destinată compilarii și executării codului personalizat 1C:Enterprise 8 în modul utilizator. Această prelucrare este destinat în primul rând implementatorilor și utilizatorilor avansați. Dezvoltat pe baza procesării Query Console.

Procesarea oferă funcții:

  • executarea unui cod arbitrar (în întregime sau text selectat),
  • proiectarea de interogări (cu redeschidere pentru editare) cu completare automată sau manuală a parametrilor,
  • setarea valorilor variabilelor găsite în textul codului (prin meniul contextual sau prin drag-and-drop),
  • inserarea variabilelor (parametrilor) descrise în textul codului,
  • analiza erorilor în timpul execuției codului,
  • salvarea fragmentelor de cod și a valorilor parametrilor într-un fișier pentru stocare între sesiunile de lucru.

Astfel, procesarea poate fi folosită ca un depozit de mecanisme universale care pot fi executate în cadrul unei singure proceduri.

Descrierea dialogului

Dialogul de procesare este împărțit în trei blocuri principale.

Arborele fragmentelor de cod

În partea din stânga sus a procesării există un arbore de fragmente de cod compilate de utilizator. Este posibil să adăugați, să ștergeți sau să mutați elemente din această listă. Făcând dublu clic pe o linie din arbore, fragmentul de cod selectat este executat. Arborele este controlat folosind blocul de butoane de pe panoul de comandă de procesare.

Procesarea oferă un mod pentru salvarea automată a fragmentelor de cod. Pentru a face acest lucru, trebuie să utilizați butonul din panoul de comandă pentru a apela dialogul cu setările de salvare automată, pentru a activa modul de salvare automată și pentru a seta intervalul dorit pentru salvarea automată a interogărilor într-un fișier.

Opțiuni pentru fragmente de cod

Butonul „Parametri” deschide un panou în care puteți specifica o listă de parametri de interogare și variabile utilizate în cod.

Prima coloană indică numele parametrului.

A doua coloană indică parametrul codului real, care poate fi specificat direct de valoare.

Parametrii sunt completați automat atunci când solicitarea este elaborată de proiectant. În plus, parametrii pot fi adăugați manual prin adăugarea de rânduri în tabel sau din meniul contextual câmpuri cu text de cod sau tragerea unei variabile în tabelul cu parametri.

Textul codului

În partea de jos a procesării se află textul codului real. Fragmentul care este afișat depinde de linia curentă a arborelui fragmentului de cod.

Astăzi aș dori să vă spun cum, folosind WordPress ca exemplu, să adăugați cod HTML arbitrar în locul potrivit. Fie că este vorba despre un cod contrar sau un cod de abonament la canalul tău, publicitate și așa mai departe. Vom introduce codul prin widget-ul standard WordPress.

WordPress – adăugați cod HTML personalizat.

Este întotdeauna nevoie să inserați cod HTML arbitrar, să faceți un abonament frumos la canalul dvs. în bara laterală sau pur și simplu să plasați text pe pagina principală, există o mulțime de opțiuni, totul depinde de nevoile dvs.

ÎN ultimele versiuni WordPress are deja un widget încorporat pentru adăugarea de cod HTML personalizat, deci nu este nevoie să instalați pluginuri separate.

Și astfel, pentru a adăuga codul nostru, trebuie să mergem la „fila” din panoul de administrare Aspect” -> „Setări”. Este posibil și prin widget-uri, dar atunci nu vom vedea imediat rezultatul. Prefer un editor vizual.

Selectăm locul în care dorim să adăugăm codul nostru. Vreau să adaug un contor la bara laterală. Selectați „ Bara laterală(Bară laterală)”, numele tău poate diferi, totul depinde de șablon.

Va apărea un nou widget, deschideți-l și introduceți codul nostru în conținut, nu uitați să salvați.

Ca rezultat, obținem următorul rezultat.

În acest fel, puteți adăuga cod HTML oriunde doriți să utilizați widget-uri.

Atât, sper că acest articol a fost util.