Popüler sürüm kontrol sistemi GitHub'un kurumsal sürümünde bulunan kritik bir güvenlik açığı, herhangi bir yetkili kullanıcının sistem üzerinde rastgele kod çalıştırmasına olanak tanıyor. Bu güvenlik açığından yararlanmak için aynı anda birkaç teknik kullanmanız gerekir: önbellek hizmetine enjeksiyon ve nesne enjeksiyonu.

Genel bilgi

Adreslenebilir::URI.parse yöntemi, iletilen URL'yi ayrıştırır ve bunu RFC 3986, RFC 3987 ve RFC 6570 spesifikasyonlarına göre kontrol eder. Bu, herhangi bir sunucuya istek gönderebileceğimiz anlamına gelir. Başka herhangi bir adres kontrolü yapılmaz.

Yalnızca localhost, 127.0.0.1 vb. yerel adresleri kullanmaya çalışırken benzer sistem Geçersiz ana bilgisayar hatası döndürür. Ancak yalnızca bir yerel ana bilgisayar değil! Bu hata, 0.0.0.0 veya kısaca 0 adresi kullanılarak çözülebilir.

Nasıl çalıştığını kontrol edelim. Sanal makine üzerinde 31337 numaralı portu (nc -lp 31337 -vvv) dinleyelim. Daha sonra URL olarak http://0.0.0.0:31337/test'i belirterek bir web kancası oluşturacağız. “Ekle” butonuna tıkladıktan sonra hemen bize bir istek geliyor.



Kendimizi tebrik edebiliriz, bir SSRF zafiyeti keşfettik. Evet, basit değil ama aynı zamanda geçerli bir HTTP yanıtı olarak biçimlendirilmişse sunucunun yanıtını da gösterir.

Şimdi bununla ne yapabileceğimizi bulmamız gerekiyor.

Localhost'a girmek için bu kadar çabalamam boşuna değil. GitHub Enterprise büyük ve karmaşık bir uygulamadır, dolayısıyla içinde çalışan çok sayıda destek hizmeti vardır. Durum çubuğuna bakmanız yeterli.


Burada “Elastik”, “Turp” ve “Memkesh” var. Seç - istemiyorum!

Memcached'le başlayalım. Onunla iletişim protokolü metin tabanlı olduğundan enjeksiyon yapmayı deneyebilirsiniz. İsteği bölmeye çalışalım (HTTP İstek Bölme), bunun için satırbaşı karakterleri içeren bir kanca oluşturacağız.

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

İşe yaramadı. Tamam, umutsuzluğa kapılmayın, bu sunucuda hâlâ yararlanabileceğiniz bir şeyler var.

Uygun hizmetleri bulma

Şimdi bakma zamanı açık bağlantı noktaları. Sudo netstat -anp | komutunu çalıştıralım. grep -i LISTEN .



İşte ağ üzerinden kullanılabilen etkileyici hizmetlerin bir listesi. Dolaşacak yer var, 1337 numaralı bağlantı noktası bile açık 😉

Hatırlarsanız SSRF'nin yanıtı okumanıza olanak sağladığını söylemiştim. Bu, kara kutu penetrasyon testleri sırasında kullanılabilir. Örneğin, kötü şöhretli 1337 numaralı bağlantı noktasında neler olduğuna bir bakalım. http://0:1337/ adlı bir kanca oluşturalım, onu açalım ve Son Teslimatlar'a kaydıralım. Orada, Yanıt sekmesinde sunucudan gelen yanıtı görebilirsiniz. İsteği tekrar göndermek istiyorsak Yeniden Teslim Et butonu hizmetinizdedir.

Devamı yalnızca üyelere açıktır

Seçenek 1. Sitedeki tüm materyalleri okumak için "site" topluluğuna katılın

Belirtilen süre içinde topluluğa üye olmak, TÜM Hacker materyallerine erişmenizi sağlayacak, kişisel kümülatif indiriminizi artıracak ve profesyonel bir Xakep Skoru puanı biriktirmenize olanak tanıyacak!

  • " onclick="window.open(this.href,"win2","durum=hayır,araç çubuğu=hayır,kaydırma çubukları=evet,başlık çubuğu=hayır,menubar=hayır,resizable=evet,genişlik=640,yükseklik=480,dizinler =hayır,konum=hayır"); yanlış döndür;" > Yazdır
  • E-posta

Bu eğitimde, Özel HTML modülünü kullanarak sitenizde ek içeriğin nasıl görüntüleneceğine bakacağız. Ayrıca bu modülün içeriğinin, bileşeni kullanarak başka bir dile nasıl çevrileceğini de gösterecektir. Joom!Balık.

giriiş

Modül " Özel HTML kodu"standart bir modüldür CMS Joomla , site sayfasında site şablonunun izin verdiği herhangi bir yere HTML kodu ekleyebileceğimiz. Bu modülü kullanarak yalnızca grafikli metinleri değil aynı zamanda çeşitli komut dosyalarını ve bilgilendiricileri de eklemek uygundur.
Bu eğitimde size "Özel HTML Kodu" modülünün nasıl kullanılacağını ve bu modülün diğer dillere çeviriler oluşturmak için bir bileşende nasıl kullanılacağını göstereceğiz - Joom!Balık.

Öncelikle “Özel HTML Kodu” oluşturup bu modülü “We Ride Ourself” web sitesinin ana sayfasına ekleyeceğiz. Daha sonra bu modülde sitenin Rusça ve Ukraynaca dilleri için nasıl değişiklik yapılacağını göstereceğiz. Daha doğrusu başlığı değiştireceğiz" Yılbaşı Karpatlar'da...''yı 'Karpatlar''da...' olarak değiştirin ve ardından 'Chervona Ruta' nesnesini 'Polyana Kvasova' ile değiştirin.

"Özel HTML koduna" dayalı bir modül oluşturma

Bir "Özel HTML kodu" modülü oluşturmak için "Modül Yöneticisi" ne ("Uzantılar" menüsünde) gitmeniz gerekir. Daha sonra "Oluştur" butonuna tıklamanız ve listeden "Özel HTML kodu" modülünü seçmeniz gerekir. Bir başlık girmeniz, etkinleştirmeniz ve ayrıca istediğiniz (sizin) HTML kodunu “Özel metin” formuna girmeniz gereken bir modül penceresi açılacaktır. Başlık olarak “Sıcak Fırsatlar” yazıp “Pozisyon:” maddesi için listeden “footer”ı seçerek sitenin alt kısmındaki konumu belirledik. Yalnızca içeriğimizin görünmesini istediğimiz için ana sayfa, daha sonra “Menü:” yazısının karşısındaki “Menü Amacı” sütunundaki “Listeden seç” kutusunu işaretlemeniz ve listeden yalnızca “Ana Sayfa” seçeneğini seçmeniz gerekir (Şekil 1). ve “Kaydet” butonuna tıklayın. "Özel HTML kodu" modülüyle çalışmak, "Hava durumu tahmini bilgilendirici örneğini kullanarak joomla modülüne özel HTML ekleme" dersinde daha ayrıntılı olarak açıklanmaktadır.

Joom!Fish bileşenini kullanarak modül çevirisiyle çalışma

Oluşturulduktan sonra modülümüz ana sayfada görünecektir.
Bir modülde herhangi bir şeyi değiştirmek için yönetici panelindeki “Modül Yöneticisi”ne gitmeniz ve ardından görsel olarak değişikliklerimizi yaptığımız modülümüze gitmeniz yeterlidir.

Bazı durumlarda, Joom!Fish bileşeninin kontrol paneli aracılığıyla başka bir şekilde çeviri yapmak daha uygun olur.
Modülü ikinci şekilde çevirmek için “Bileşenler” menüsüne gidip “Joom!Fish” - “Çeviri Yönetimi” seçeneğini seçmeniz gerekir. Ardından, "Orijinalin çeviri olarak kopyası" düğmesini tıklayın, listeden "Modüller" öğesini seçin ve "Diller" açılır menüsünden (sağda bulunur) istediğiniz dili seçin. Web sitemizde iki dil bulunmaktadır: Rusça (varsayılan olarak) ve Ukraynaca (Şekil 2). Bizim durumumuzda Ukrayna dilini seçiyoruz.


Dili seçtikten sonra, modülümüzü bulup içine girmemiz gereken modüllerin bir listesi görünecektir. Modülümüzü başka bir dile çevirebileceğimiz “Çeviri” adında bir pencere açılacaktır. Bizim durumumuzda “Chervona Ruta” nesnesini “Polyana Kvasova” ile değiştiriyoruz (Şekil 3). “Kaydet” butonuna tıkladıktan sonra modül çevirimiz sitenin ana sayfasında görünecektir (Şekil 4).




Eğer bakmak istersen video dersi Tüm adımların detaylı olarak anlatıldığı videolu ders arşivini linkten indirebilirsiniz.

Herkese selam! Bugün için kısa bir eğitim planım var - tıpkı blogdaki gibi aramadan gelen kullanıcılar için özel bir kod görüntüleyinşablonun herhangi bir yerinde.

Birkaç ay önce bu yöntemin pratik bir uygulamasını buldum. O zamanlar gelen ziyaretçiler için arama motorları Başlığın altında haber bültenine abone olma daveti görüntülendi.

Anladığınız gibi, satır yalnızca bir kez görüntülendi - arama motorundan ilk geçiş sırasında, ardından sayfalar arasında gezinirken ortadan kayboldu ve bir daha görünmedi. Tabii aynı kullanıcı tekrar bloga dönmezse.

Örnek olarak bir aboneliği kullandım, ancak aynı zamanda reklam satırlarının, herhangi bir reklamın vb. görüntülenmesini de düzenleyebilirsiniz. Ve doğal olarak konum başlıkla sınırlı değildir; bu kod şablonun herhangi bir yerinde görüntülenebilir. Komut dosyasının uygulanmasının pratik kısmına geçelim.

İsteğin kaynağını belirleyen işlev (HTTP yönlendireni)

Öncelikle şunu oluşturalım yeni özellik fromsearch (geleneksel çeviri - “aramadan”), işlevin adı herhangi bir şey olabilir, asıl önemli olan, gelecekte kabul edilen adı akılda tutmak ve kullanmaktır. Bu özellik şunun içindir: geçiş kaynağının belirlenmesi- PS, başka bir site vb. olsun. PS ile ilgileniyoruz. Yani, WordPress'te kodu, Function.php şablon dosyasına ekliyoruz:

arama() işlevi( $ref = $_SERVER["HTTP_REFERER" ]; $SE = dizi ("/search?" , "images.google." , "search." , "yandsearch" , "/search/" , ".yahoo." ); foreach ($kaynak olarak $SE) ( if (strpos($ref,$kaynak)!==false ) return true ;) return false ;)

Lütfen üçüncü satırın, kuralın yürütüleceği aracıları gösterdiğini ve gelecekte isteğe bağlı kodun gösterileceğini unutmayın. Bu, ana kısmı tamamlar, geriye kalan tek şey işlevi uygun herhangi bir yerde görüntülemektir.

Arama motorlarından geçiş yaparken rastgele kod çıktısı

Bir sonraki adım, önceden tanımlanmış işlevi sayfada görüntülemektir. Bunu yapmak için şablon dosyasına eklediğimiz aşağıdaki satırları kullanıyoruz, örneğin index.php kullanıyorum:

sınıf="aramadan gösteri" > ÖZEL KOD div >

Örneğin, bende var tam kod bir abonelikle şöyle görünüyordu:

sınıf="aramadan gösteri" > <div sınıfı = "uyarı" > Blogda yeni misin? Bültenimize abone olun!div > div >

İşte bu kadar, fonksiyonun çıktısı tamamlandı, bir sonraki adıma geçelim.

PS'den gelen ziyaretçiler için kodu görüntüleyen blok için tasarım stilleri

Geriye kalan tek şey sınıfa atama yapmaktır aramadan göster stilleri tasarlayın, uyacak şekilde ayarlayın, diğer bloklara göre konumu ayarlayın. Yukarıdakilerin tümü değişiklik yapılmadan hemen kullanılabiliyorsa, özel tasarım için özel bir çözüm yoktur.

Her şey düzene ve bu işlevin görüntülendiği yere bağlıdır. Dışarıdan örnekte verdiğim çizgi şuna benziyordu:

Kırmızı okla işaretlenen blok yalnızca arama motorlarından gelen kullanıcılara gösterilir; diğer tüm geçişler için görünmez. Style.css dosyasında tasarım stilini belirlediğim örneğimi vereceğim:

.showfromsearch ( genişlik :900px ; kenarlık :0 ; metin hizalama :sol; kenar boşluğu :otomatik; dolgu :0 ; )

Ve yine dikkatinizi çekiyorum: bu stil, işlevi olan bir bloğa atanmıştır; bloğun görünümünü ve konumunu tam olarak yapılandırıyoruz, içinde ne olduğunu değil. Dahili içerik kendi stillerini kullanır. Aboneliği görüntülediğim yukarıdaki ekran görüntüsüne bakarsanız, çizginin etrafındaki çerçeve, arka plan ve görselin farklı bir sınıfa atandığını görürsünüz ( uyarı), metni içeren.

Bu taraftan aramadan geçişler için herhangi bir kod görüntülenir Muhtemelen tekrar edeceğim - bu yöntemi kullanarak başkalarına gösterebilirsiniz; yer işaretlerinden, doğrudan ziyaretlerden veya diğer sitelerdeki bağlantılardan gelen düzenli okuyucular bu içeriği görmez.

"Özel kod" işleme, özel 1C:Enterprise 8 kodunu kullanıcı modunda derlemek ve yürütmek için tasarlanmıştır. Bu işlemöncelikle uygulayıcılara ve ileri düzey kullanıcılara yöneliktir. Sorgu Konsolu işlemeye dayalı olarak geliştirildi.

İşleme aşağıdaki işlevleri sağlar:

  • isteğe bağlı kodun yürütülmesi (tamamen veya seçilen metin),
  • Parametrelerin otomatik veya manuel doldurulmasıyla sorguların tasarlanması (düzenlemeye yeniden açılmasıyla),
  • Kod metninde bulunan değişkenlerin değerlerinin ayarlanması (bağlam menüsü veya sürükle bırak yoluyla),
  • açıklanan değişkenlerin (parametrelerin) kod metnine eklenmesi,
  • Kod yürütme sırasında hata analizi,
  • çalışma oturumları arasında depolama için kod parçalarını ve parametre değerlerini bir dosyaya kaydetme.

Böylece işleme, tek bir prosedür içerisinde yürütülebilecek evrensel mekanizmaların deposu olarak kullanılabilir.

Diyalogun açıklaması

İşleme iletişim kutusu üç ana bloğa ayrılmıştır.

Kod parçacıkları ağacı

İşlemenin sol üst kısmında kullanıcı tarafından derlenen kod parçalarından oluşan bir ağaç vardır. Bu listenin öğelerini eklemek, silmek veya taşımak mümkündür. Ağaçtaki bir satıra çift tıklandığında seçilen kod parçası yürütülür. Ağaç, işleme komut panelindeki düğme bloğu kullanılarak kontrol edilir.

İşleme, kod parçalarını otomatik olarak kaydetmek için bir mod sağlar. Bunu yapmak için, otomatik kaydetme ayarları iletişim kutusunu çağırmak için komut paneli düğmesini kullanmanız, otomatik kaydetme modunu etkinleştirmeniz ve sorguları bir dosyaya otomatik olarak kaydetmek için istediğiniz aralığı ayarlamanız gerekir.

Kod pasajı seçenekleri

"Parametreler" düğmesi, kodda kullanılan sorgu parametrelerinin ve değişkenlerin listesini belirleyebileceğiniz bir paneli açar.

İlk sütun parametrenin adını gösterir.

İkinci sütun, doğrudan değerle belirtilebilen gerçek kod parametresini gösterir.

İstek tasarımcı tarafından geliştirildiğinde parametreler otomatik olarak doldurulur. Ek olarak, parametreler tabloya satır eklenerek veya tablodan manuel olarak eklenebilir. içerik menüsü kod metni içeren alanlar veya bir değişkeni parametreler tablosuna sürüklemek.

Kod metni

İşlemin altında gerçek kod metni bulunur. Görüntülenen kod parçacığı, kod parçacığı ağacının geçerli satırına bağlıdır.

Bugün size WordPress'i örnek olarak kullanarak rastgele HTML kodunu doğru yere nasıl ekleyeceğinizi anlatmak istiyorum. İster kanalınıza, reklamınıza vb. yönelik bir sayaç kodu ister bir abonelik kodu olsun. Kodu standart WordPress widget'ı aracılığıyla ekleyeceğiz.

WordPress – özel HTML kodu ekleyin.

Her zaman isteğe bağlı HTML kodu eklemeye, kenar çubuğunda kanalınıza güzel bir abonelik yapmaya veya yalnızca ana sayfaya metin yerleştirmeye ihtiyaç vardır, birçok seçenek vardır, hepsi ihtiyaçlarınıza bağlıdır.

İÇİNDE en son sürümler WordPress'te özel HTML kodu eklemek için zaten yerleşik bir widget bulunmaktadır, bu nedenle ayrı eklentiler yüklemenize gerek yoktur.

Bu yüzden kodumuzu eklemek için yönetici panelindeki “sekme”ye gitmemiz gerekiyor. Dış görünüş” -> “Ayarlar”. Widget'lar aracılığıyla da mümkündür, ancak o zaman sonucu hemen göremeyeceğiz. Görsel editörü tercih ederim.

Kodumuzu eklemek istediğimiz yeri seçiyoruz. Kenar çubuğuna bir sayaç eklemek istiyorum. Seçme " Kenar çubuğu(Kenar çubuğu)”, adınız farklı olabilir, tamamı şablona bağlıdır.

Yeni bir widget çıkacak, açın ve kodumuzu içeriğe girin, kaydetmeyi unutmayın.

Sonuç olarak aşağıdaki sonucu elde ederiz.

Bu şekilde widget'ları kullanmak istediğiniz her yere HTML kodu ekleyebilirsiniz.

Hepsi bu, umarım bu makale faydalı olmuştur.