Add files via upload
This commit is contained in:
92
pythonexp/poc2jarpiliang.py
Normal file
92
pythonexp/poc2jarpiliang.py
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
# -*- coding:utf-8 -*-
|
||||||
|
# author:f0ngf0ng
|
||||||
|
|
||||||
|
# 入参为:yml文件 url.txt yml文件里有时间条件、关键词条件
|
||||||
|
# command写死在java里,直接python3 xxxx.py xx.yml即可
|
||||||
|
# java输出为文件,
|
||||||
|
# 如http://x.x.x.x ————————vul
|
||||||
|
# http://x.x.x.x ———————
|
||||||
|
|
||||||
|
import requests
|
||||||
|
import csv,yaml,os
|
||||||
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
|
import sys
|
||||||
|
|
||||||
|
proxies = {
|
||||||
|
'http':'127.0.0.1:8080',
|
||||||
|
'https':'127.0.0.1:8080'
|
||||||
|
}
|
||||||
|
|
||||||
|
def exp(url,ymlfile):
|
||||||
|
global words
|
||||||
|
# 获取当前脚本所在文件夹路径
|
||||||
|
curPath = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
# 获取yaml文件路径
|
||||||
|
yamlPath = os.path.join(curPath + '/..' , ymlfile)
|
||||||
|
# open方法打开直接读出来
|
||||||
|
f = open(yamlPath, 'r', encoding='utf-8')
|
||||||
|
cfg = f.read()
|
||||||
|
|
||||||
|
d = yaml.load(cfg, Loader=yaml.FullLoader) # 用load方法转字典
|
||||||
|
|
||||||
|
for _ in d:
|
||||||
|
if _ == "method":
|
||||||
|
method = d[_] # 请求方法
|
||||||
|
|
||||||
|
if _ == "uri":
|
||||||
|
uri = d[_] # 请求的uri
|
||||||
|
|
||||||
|
if _ == "param":
|
||||||
|
param = d[_] # 加在uri后面的带入的参数
|
||||||
|
|
||||||
|
if _ == "data":
|
||||||
|
data = d[_] # 请求体,如果没有的话,就为空,后续发请求需要判断
|
||||||
|
|
||||||
|
if _ == "others":
|
||||||
|
headers = d[_] # 将others参数设置为headers头
|
||||||
|
|
||||||
|
if _ == "condition":
|
||||||
|
words = d[_]['words'] # 关键字条件
|
||||||
|
time = d[_]['time'] # 时间条件
|
||||||
|
|
||||||
|
for value in headers: # 因为有纯数字,需要转成string
|
||||||
|
if type(headers[value]) == int:
|
||||||
|
headers[value] = str(headers[value])
|
||||||
|
|
||||||
|
try:
|
||||||
|
if method == "GET":
|
||||||
|
requests.packages.urllib3.disable_warnings()
|
||||||
|
r = requests.get(url + uri + "?" + param, headers=headers, timeout=5, verify=False )
|
||||||
|
elif( method == "POST" ):
|
||||||
|
requests.packages.urllib3.disable_warnings()
|
||||||
|
r = requests.get(url + uri + "?" + param, data=data ,headers=headers, timeout=5, verify=False )
|
||||||
|
elif( method == "PUT" ):
|
||||||
|
requests.packages.urllib3.disable_warnings()
|
||||||
|
r = requests.put(url + uri + "?" + param, data=data ,headers=headers, timeout=5, verify=False )
|
||||||
|
|
||||||
|
# 把响应头和响应体转换成string
|
||||||
|
total = ""
|
||||||
|
for _ in r.headers:
|
||||||
|
total = total + _ + ":" + r.headers[_] +'\n'
|
||||||
|
total = total + r.text
|
||||||
|
|
||||||
|
if words != "":
|
||||||
|
if words in total:
|
||||||
|
url = url + '…………vul'
|
||||||
|
print(url)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
data = open('pythonexp/url.txt') # 批量IP
|
||||||
|
ymlFile = sys.argv[1]
|
||||||
|
reader = csv.reader(data) # 50是线程
|
||||||
|
|
||||||
|
with ThreadPoolExecutor(50) as pool:
|
||||||
|
for row in reader:
|
||||||
|
if 'http' not in row[0]:
|
||||||
|
url = 'http://' + row[0]
|
||||||
|
else:
|
||||||
|
url = row[0]
|
||||||
|
pool.submit(exp, url , ymlFile)
|
||||||
2
pythonexp/url.txt
Normal file
2
pythonexp/url.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
https://www.taobao.com
|
||||||
|
https://www.baidu.com
|
||||||
Reference in New Issue
Block a user