![Clayton Zimmerman](/assets/img/avatar_default.png)
* Changes grab to return *ScanResults. Implements ippInContentType correctly. * Slots in an operational re-working of several HTTP module functions, and adds dependency on zgrab's http module. Includes some laregly copy-pasted sections worthy of scrutiny. * Adds support to retry failed HTTP over HTTPS. Removes vestigial functions. * Implements sending CUPS-get-printers request if CUPS is detected, yielding more detailed & accurate version information. Also handles URI's more correctly. * Creates separate container to run IPP over TLS on CUPS. Runs basic tests against both containers. * Creates virtual printer on each container to test for augmenting data with CUPS-get-printers request (which only works when printers exist). * Augments version information with CUPS-get-printers response if possible. * Allows specifying IPP version in constructed requests. Checks for version-not-supported server error. * Allows resending IPP requests with different versions if we hit a version-not-supported error. * Updates IPP zgrab2 schema to include fields added in modules/ipp/scanner.go * Removes unnecessary TODO's * Updates testable example for new definition of AttributeByteString * Removes versionNotSupported's dependency on bufferFromBody. Checks bounds on generated requests' fields correctly. * Updates zgrab2 IPP schema to match ScanResults object in modules/ipp/scanner.go * Corrects IPP tests, bounds checking, zgrab schema formatting. * Logs errors for unexpected behavior in buffer io operations. Updates schema to include standalone fields for attributes described in CUPS-get-printers response. * Logs at debug level only when verbose flag is set. Prints accurate error message when CUPSVersion test fails. * Handles HTTP request errors before checking for nil response/body. Fixes and tests convertURIToIPP.
30 lines
1.1 KiB
Bash
Executable File
30 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
echo "ipp/setup: Tests setup for ipp"
|
|
|
|
versions="cups cups-tls"
|
|
|
|
CONTAINER_TAG="zgrab_ipp"
|
|
for version in $versions; do
|
|
CONTAINER_NAME="zgrab_ipp_$version"
|
|
|
|
echo "ipp/setup: Setting up $CONTAINER_NAME"
|
|
|
|
DOCKER_RUN_FLAGS="--rm --name $CONTAINER_NAME -td"
|
|
|
|
# If the container is already running, use it.
|
|
if docker ps --filter "name=$CONTAINER_NAME" | grep -q $CONTAINER_NAME; then
|
|
echo "ipp/setup: Container $CONTAINER_NAME already running -- nothing to setup"
|
|
else
|
|
if ! docker run $DOCKER_RUN_FLAGS "$CONTAINER_TAG:$version"; then
|
|
echo "ipp/setup: Building docker image $CONTAINER_TAG..."
|
|
# If it fails, build it from ./container/Dockerfile
|
|
docker build -t "$CONTAINER_TAG:$version" ./container-$version
|
|
# Try again
|
|
echo "ipp/setup: Launching $CONTAINER_NAME..."
|
|
docker run $DOCKER_RUN_FLAGS $CONTAINER_TAG:$version
|
|
fi
|
|
fi
|
|
# Add file printer so that CUPS-get-printers response is populated
|
|
docker exec $CONTAINER_NAME lpadmin -p null -E -v file:/dev/null
|
|
done |