Example #1
0
 def test_dork_page_regeneration(self):
     """Objective: Test if the dork pages get regenerated.
     Input: The list of previously generated dork pages.
     Expected Results: A new list of dork pages.
     Notes: A productive system generates new pages in a configurable interval."""
     dirname = 'modules/handlers/emulators/dork_list/pages/'
     gen_dork_list.regular_generate_dork(0, dirname)
     old_list = gen_dork_list.get_old_dork_pages_list(dirname)
     print "There are %s previously generated dork pages" % len(old_list),
     old_sample_file = choice(old_list)
     print "For example:", old_sample_file.rsplit('/', 1)[1]
     gen_dork_list.regular_generate_dork(0, dirname)
     print "Done generating new dork pages.",
     print "Old dork pages has been removed."
     new_list = gen_dork_list.get_old_dork_pages_list(dirname)
     overlap = set(new_list).intersection(old_list)
     self.assertTrue(len(overlap) == 0)
     print "There are", len(overlap), "overlapping dork pages",
     print "which equates our expectation."
Example #2
0
 def test_dork_page(self):
     """Objective: Tests if the attack surface generation works.
     Input: Data from the dork database.
     Expected Results: HTML pages ready to be served to the adversary.
     Notes: This test covers the generation of the HTML pages from the dork database. The page number is proportional to database entries."""
     print "Starting dork page test."
     gen_dork_list.regular_generate_dork(0)
     print "Done creating dork pages."
     dirname = 'modules/handlers/emulators/dork_list/pages/'
     self.assertTrue(
             len(gen_dork_list.get_old_dork_pages_list(dirname)) > 0
             )
     print "Number of created HTML pages:",
     print len(gen_dork_list.get_old_dork_pages_list(dirname)),
     print "equates our expectation."
     print "Sample page can be found in:", dirname
     gen_dork_list.remove_old_dork_pages(
                         gen_dork_list.get_old_dork_pages_list(dirname)
                         )
Example #3
0
 def test_dork_page_content(self):
     """Objective: Testing the attack surfaces content.
     Input: An attack surface sample. The structure is defined in a template.
     Expected Results: The attack surface should be a HTML page containing text and links.
     Notes: We extract and count the elements in the HTML document."""
     dirname = 'modules/handlers/emulators/dork_list/pages/'
     gen_dork_list.regular_generate_dork(0)
     sample_file = choice(gen_dork_list.get_old_dork_pages_list(dirname))
     with open(sample_file, 'r') as sample_data:
         data = fromstring(sample_data)
         #print tostring(data)
     self.assertTrue(len(data.cssselect('a')) > 0)
     self.assertTrue(len(data.cssselect('title')) > 0)
     self.assertTrue(len(data.cssselect('form')) > 0)
     print "The content analysis of a random HTML page returned:"
     print len(data.cssselect('a')), 'links (<a href=""></a>)',
     print len(data.cssselect('title')), 'page title (<title />)',
     print len(data.cssselect('form')), 'form field (<form />)'
     print "which equates our expectation."
Example #4
0
    def __init__(self, test=False):
        self.create_empty_dirs()
        self.test = test
        if not self.test:
            self.loggers = logging_handler.get_loggers()
        self.log = file_logger.FileLogger(name="honeypot").log()
        self.log.info('Starting Glastopf')
        conf_parser = ConfigParser()
        conf_parser.read("glastopf.cfg")
        self.options = {
            "hpfeeds": conf_parser.get("hpfeed", "enabled").encode('latin1'),
            "uid": conf_parser.get("webserver", "uid").encode('latin1'),
            "gid": conf_parser.get("webserver", "gid").encode('latin1'),
            "proxy_enabled": conf_parser.get("webserver", "proxy_enabled").encode('latin1')
        }
        if self.options["hpfeeds"] == "True":
            self.hpfeeds_logger = hpfeeds.HPFeedClient()
            self.log.info('HPFeeds started')
        if not self.test:
            if len(os.listdir('modules/handlers/emulators/dork_list/pages/')) == 0:
                gen_dork_list.regular_generate_dork(0)
            self.regular_gen_dork = threading.Thread(
                        target=gen_dork_list.regular_generate_dork, args=(30,))
            self.regular_gen_dork.daemon = True
            self.regular_gen_dork.start()
            self.profiler = profiler.Profiler()
        self.HTTP_parser = util.HTTPParser()
        self.MethodHandlers = method_handler.HTTPMethods()

        self.post_queue = Queue.Queue()
        self.post_processing = threading.Thread(target=self.post_processer)
        self.post_processing.daemon = True
        self.post_processing.start()
        
        privileges.drop(self.options['uid'], self.options['gid'])
        self.log.info('Glastopf instantiated and privileges dropped')