您好,登錄后才能下訂單哦!
在安全測試過程中,第一步就需要信息收集,信息收集時我們需要掃描網站根目錄下是否存在備份文件。
掃描網站根目錄下是否存在備份文件需要發起http請求,第一次編寫時使用的是requests模塊的get請求,當進行測試時發現腳本會卡住,通過分析得知,當get一個存在的備份文件時,相當于下載,如果備份文件很大則需要等待超長時間。因此通過查找資料發現使用requests模塊head方法時可以解決以上遇到的問題。
HEAD方法與GET方法的行為很類似,但服務器在響應中只返回實體的主體部分。這就允許客戶端在未獲取實際資源的情況下,對資源的首部進行檢查,使用HEAD,我們可以更高效的完成以下工作:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#命令行
from pocsuite import pocsuite_cli
#驗證模塊
from pocsuite import pocsuite_verify
#×××模塊
from pocsuite import pocsuite_attack
#控制臺模式
from pocsuite import pocsuite_console
#requests
from pocsuite.api.request import req
#register
from pocsuite.api.poc import register
#report
from pocsuite.api.poc import Output, POCBase
#url轉換host
from pocsuite.lib.utils.funs import url2ip
class webBackPOC(POCBase):
vulID = '1' # ssvid ID 如果是提交漏洞的同時提交 PoC,則寫成 0
version = '1' #默認為1
vulDate = '2018-07-12' #漏洞公開的時間,不知道就寫今天
author = 'xiaohuihui1' # PoC作者的大名
createDate ='2018-07-12'# 編寫 PoC 的日期
updateDate = '2018-07-12'# PoC 更新的時間,默認和編寫時間一樣
references = ['']# 漏洞地址來源,0day不用寫
name = 'website back '# PoC 名稱
appPowerLink = [''] # 漏洞廠商主頁地址
appName = '網站備份文件下載'# 漏洞應用名稱
appVersion = 'all versions'# 漏洞影響版本
vulType = 'information leakage'#漏洞類型,類型參考見 漏洞類型規范表
desc = '''
網站備份文件下載
''' # 漏洞簡要描述
samples = []# 測試樣列,就是用 PoC 測試成功的網站
install_requires = [] # PoC 第三方模塊依賴,請盡量不要使用第三方模塊,必要時請參考《PoC第三方模塊依賴說明》填寫
cvss = u"嚴重" #嚴重,高危,中危,低危
#指紋方法
def _fingerprint(self):
pass
#驗證模塊 pocsuite -r 1-redis.py -u 10.1.5.26 --verify
def _verify(self):
import requests
import hashlib
result = {}
vul_url = '%s' % self.url
if(vul_url.endswith("/")):
test_url = vul_url+"aswe2sda2323ra2.html"
else:
test_url = vul_url+"/aswe2sda2323ra2.html"
vul_url+="/"
test_html = requests.head(test_url,timeout=5).text
#md5值
hl = hashlib.md5()
test_html.replace("aswe2sda2323ra2.html","")
hl.update(test_html.encode(encoding='utf-8'))
test_md5 = hl.hexdigest()
domain=vul_url.split(".")[1].split(".")[0]
fileName = ['www','admin','wwwroot','web','data','ftp','flashfxp',domain]
suffix = ['zip','tar.gz','rar']#后綴列表
result2=[]
for fn in fileName:
for s in suffix:
try:
tmp = requests.head(vul_url+fn+"."+s,timeout=5)
if(tmp.status_code == 200):
result2.append(fn+"."+s)
except Exception as e:
print e
pass
if(len(result2) != 0):
result['VerifyInfo'] = {}
result['VerifyInfo']['URL'] = vul_url
result['VerifyInfo']['Payload'] = result2
return self.save_output(result)
#×××模塊
def _attack(self):
pass
#輸出報告
def save_output(self, result):
#判斷有無結果并輸出
output = Output(self)
if result:
output.success(result)
else:
output.fail()
return output
#注冊類
register(webBackPOC)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。