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."
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) )
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."
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')