diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b71e84..ebe6c06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,6 @@ ## CHANGELOG: +* v8.3 - Added sniper.conf options for OPENVAS_HOST and OPENVAS_PORT selection for remote instances +* v8.3 - Improved 'vulnscan' mode via OpenVAS to scan the same asset multiple times with improved error handling * v8.2 - Added root priv check to sniper script to run * v8.2 - Added NMap port change notifications via Slack * v8.2 - Fixed issue with firefox not loading on Kali Linux 2020.1 diff --git a/modes/vulnscan.sh b/modes/vulnscan.sh index 447363d..019271f 100644 --- a/modes/vulnscan.sh +++ b/modes/vulnscan.sh @@ -35,26 +35,59 @@ if [[ "$MODE" = "vulnscan" ]]; then echo "$TARGET" >> $LOOT_DIR/domains/targets.txt if [[ "$OPENVAS" = "1" ]]; then + sudo openvas-start 2> /dev/null > /dev/null echo -e "${OKGREEN}====================================================================================${RESET}•x${OKGREEN}[`date +"%Y-%m-%d](%H:%M)"`${RESET}x•" echo -e "$OKRED RUNNING OPENVAS VULNERABILITY SCAN $RESET" echo -e "${OKGREEN}====================================================================================${RESET}•x${OKGREEN}[`date +"%Y-%m-%d](%H:%M)"`${RESET}x•" - ASSET_ID=$(omp -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD --xml="$TARGET$TARGET" | xmlstarlet sel -t -v /create_target_response/@id) && echo "ASSET_ID: $ASSET_ID" - TASK_ID=$(omp -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD --xml "$TARGETsource_ifaceeth0" | xmlstarlet sel -t -v /create_task_response/@id) && echo "TASK_ID: $TASK_ID" - REPORT_ID=$(omp -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD --xml "" | cut -d\> -f3 | cut -d\< -f1) && echo "REPORT_ID: $REPORT_ID" + echo "Scanning target: $TARGET " + echo "" + echo "-----------------------------------------------" + echo "Listing OpenVAS version..." + echo "-----------------------------------------------" + omp -h $OPENVAS_HOST -p $OPENVAS_PORT -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD -O + echo "" + echo "Listing OpenVAS targets..." + echo "-----------------------------------------------" + omp -h $OPENVAS_HOST -p $OPENVAS_PORT -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD -T + echo "" + echo "Listing OpenVAS tasks..." + echo "-----------------------------------------------" + omp -h $OPENVAS_HOST -p $OPENVAS_PORT -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD -G + echo "" + echo "Creating scan task..." + echo "-----------------------------------------------" + ASSET_ID=$(omp -h $OPENVAS_HOST -p $OPENVAS_PORT -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD --xml="$TARGET$TARGET" | xmlstarlet sel -t -v /create_target_response/@id) && echo "ASSET_ID: $ASSET_ID" + if [[ "$ASSET_ID" == "" ]]; then + ASSET_ID_ERROR=$(omp -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD --xml="$TARGET$TARGET") + if [[ "$ASSET_ID_ERROR" == *"Target exists already"* ]]; then + ASSET_ID=$(omp -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD -T | grep " $TARGET" | awk '{print $1}') + echo "ASSET_ID: $ASSET_ID" + fi + fi + TASK_ID=$(omp -h $OPENVAS_HOST -p $OPENVAS_PORT -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD --xml "$TARGETsource_ifaceeth0" | xmlstarlet sel -t -v /create_task_response/@id) && echo "TASK_ID: $TASK_ID" + if [[ "TASK_ID" == "" ]]; then + omp -h $OPENVAS_HOST -p $OPENVAS_PORT -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD --xml "$TARGETsource_ifaceeth0" + fi + REPORT_ID=$(omp -h $OPENVAS_HOST -p $OPENVAS_PORT -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD --xml "" | cut -d\> -f3 | cut -d\< -f1) && echo "REPORT_ID: $REPORT_ID" + if [[ "$REPORT_ID" == "" ]]; then + omp -h $OPENVAS_HOST -p $OPENVAS_PORT -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD --xml "" + fi + echo "" resp="" while [[ $resp != "Done" && $REPORT_ID != "" ]] do - omp -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD -G | grep $TARGET - resp=$(omp -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD -G | grep $TARGET | awk '{print $2}') + omp -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD -G | grep $TASK_ID + resp=$(omp -h $OPENVAS_HOST -p $OPENVAS_PORT -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD -G | grep "$TASK_ID" | awk '{print $2}') sleep 60 done if [[ $REPORT_ID != "" ]]; then - omp -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD --xml "" | cut -d\> -f3 | cut -d\< -f1 | base64 -d > "$LOOT_DIR/output/openvas-$TARGET.html" + omp -h $OPENVAS_HOST -p $OPENVAS_PORT -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD --xml "" | cut -d\> -f3 | cut -d\< -f1 | base64 -d > "$LOOT_DIR/output/openvas-$TARGET.html" echo "Report saved to $LOOT_DIR/output/openvas-$TARGET.html" + cat $LOOT_DIR/output/openvas-$TARGET.html 2> /dev/null else echo "No report ID found. Listing scan tasks:" - omp -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD -G | grep $TARGET + omp -h $OPENVAS_HOST -p $OPENVAS_PORT -u $OPENVAS_USERNAME -w $OPENVAS_PASSWORD -G | grep $TARGET fi fi echo -e "${OKGREEN}====================================================================================${RESET}•x${OKGREEN}[`date +"%Y-%m-%d](%H:%M)"`${RESET}x•"