#!/usr/bin/env bash if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then cat << 'EOF' Usage: clickjacking url [outfile] The script will use a headless version of firefox to screenshot a page containing the provided url in an iframe This script will create a firefox profile called headless to create the screenshot with EOF exit 0 fi # Name of firefox binary firefox="firefox" # If firefox developer edition is installed, use that instead type "firefox-developer-edition" 2>&1 >/dev/null && firefox="firefox-developer-edition" die(){ echo "$@" exit 1 } # Name of firefox profile to use # This will need to be a profile that isn't currently open # I suggest making one for headless use # go to about:profiles in firefox to create one profile="headless" # Url of site to put in iframe url="$1" [ -z "$url" ] && die "You need to provide a url" # Name of image to make output="${2:-screenshot.png}" $firefox -CreateProfile "$profile" -no-remote 2>&1 >/dev/null source=" <!DOCTYPE html> <html> <head> <meta charset='UTF-8' /> <meta name='viewport' content='width=device-width' /> <title>Clickjacking example</title> <style type='text/css' media='screen'> body{ width: 100vw; height: 100vh; border: 2px solid black; } iframe{ border: 3px solid black; width: 80%; height: 80%; margin: 20px auto; display: block; } h1, p{ text-align: center; } </style> </head> <body> <h1>Clickjacking example</h1> <iframe src='$url'> </iframe> <p>If content is rendered above, the site is vulnerable to clickjacking</p> </body> </html> " $firefox -P "$profile" --screenshot "$output" "data:text/html;base64,$(echo "$source" | base64 -w 0)"