Репост из: s0i37_channel
Популярные pipeline автоматизации от project discovery типа domain | sites | urls | vulns, которыми пользуются для быстрой оценки веба, упускают две важные вещи. Первая это конечно же POST-параметры, которые представляют собой более 50% поверхности атак. Оно и понятно, ведь тело запроса не передать через pipe так же просто как url.
Но несмотря на практически полный игнор POST-параметров (https://github.com/projectdiscovery/katana/issues/423 даже не планируют) katana и nuclei всё же можно заставить работать с ними.
Для katana даже если мы укажем -automatic-form-fill в выхлопе мы всё равно не увидим заветных параметров форм, но если мы сделаем json output то сможем получить то что нужно:
katana -u site.com -jsonl -or -ob | jq -r '.request.method,.request.endpoint,.request.body' | paste - - - | while read method url body; do ... done
С nuclei дела обстоят немного сложнее. На самом деле фаззинг-движок nuclei вполне способен итерироваться по POST-параметрам, но вот nuclei не предоставляет ни какого интерфейса для задания POST-параметров через опции командной строки. Однако nuclei принимает множество форматов для входных данных, не все он ещё хорошо умеет парсить, но вот через формат openapi мы вполне можем задать ему POST-запрос:
nuclei -im openapi -l
Но несмотря на практически полный игнор POST-параметров (https://github.com/projectdiscovery/katana/issues/423 даже не планируют) katana и nuclei всё же можно заставить работать с ними.
Для katana даже если мы укажем -automatic-form-fill в выхлопе мы всё равно не увидим заветных параметров форм, но если мы сделаем json output то сможем получить то что нужно:
katana -u site.com -jsonl -or -ob | jq -r '.request.method,.request.endpoint,.request.body' | paste - - - | while read method url body; do ... done
С nuclei дела обстоят немного сложнее. На самом деле фаззинг-движок nuclei вполне способен итерироваться по POST-параметрам, но вот nuclei не предоставляет ни какого интерфейса для задания POST-параметров через опции командной строки. Однако nuclei принимает множество форматов для входных данных, не все он ещё хорошо умеет парсить, но вот через формат openapi мы вполне можем задать ему POST-запрос:
nuclei -im openapi -l