from unittest import mock from flask import request #from routersploit.modules.exploits.routers.belkin.n750_twonky_rce import Exploit def apply_response(*args, **kwargs): return ( """ TEST root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/usr/sbin/nologin _apt:x:104:65534::/nonexistent:/usr/sbin/nologin mysql:x:105:109:MySQL Server,,,:/nonexistent:/bin/false epmd:x:106:110::/var/run/epmd:/usr/sbin/nologin Debian-exim:x:107:111::/var/spool/exim4:/usr/sbin/nologin uuidd:x:108:113::/run/uuidd:/usr/sbin/nologin rwhod:x:109:65534::/var/spool/rwho:/usr/sbin/nologin redsocks:x:110:114::/var/run/redsocks:/usr/sbin/nologin usbmux:x:111:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin miredo:x:112:65534::/var/run/miredo:/usr/sbin/nologin Debian-snmp:x:113:115::/var/lib/snmp:/bin/false ntp:x:114:116::/nonexistent:/usr/sbin/nologin stunnel4:x:115:118::/var/run/stunnel4:/usr/sbin/nologin rtkit:x:116:119:RealtimeKit,,,:/proc:/usr/sbin/nologin postgres:x:117:120:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash dnsmasq:x:118:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin messagebus:x:119:121::/var/run/dbus:/usr/sbin/nologin iodine:x:120:65534::/var/run/iodine:/usr/sbin/nologin arpwatch:x:121:123:ARP Watcher,,,:/var/lib/arpwatch:/bin/sh sslh:x:122:127::/nonexistent:/usr/sbin/nologin gluster:x:123:129::/var/lib/glusterd:/usr/sbin/nologin couchdb:x:124:130:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash avahi:x:125:133:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/usr/sbin/nologin sshd:x:126:65534::/run/sshd:/usr/sbin/nologin colord:x:127:134:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin saned:x:128:136::/var/lib/saned:/usr/sbin/nologin speech-dispatcher:x:129:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false pulse:x:130:137:PulseAudio daemon,,,:/var/run/pulse:/usr/sbin/nologin Debian-gdm:x:131:139:Gnome Display Manager:/var/lib/gdm3:/bin/false king-phisher:x:132:140::/var/lib/king-phisher:/usr/sbin/nologin dradis:x:133:141::/var/lib/dradis:/usr/sbin/nologin beef-xss:x:134:142::/var/lib/beef-xss:/usr/sbin/nologin TEST """ ), 200 #@mock.patch("routersploit.modules.exploits.routers.belkin.n750_twonky_rce.shell") #def test_check_success(mocked_shell, target) def test_check_success(target): """ Test scenario - successful check """ route_mock = target.get_route_mock("/twonky_cmd.cgi", methods=["GET"]) route_mock.side_effect = apply_response return exploit = Exploit() exploit.target = target.host exploit.port = target.port assert exploit.check() assert exploit.run() is None