漏洞盒子自动化交漏洞
前言
嫌手动打开网页提交漏洞太草了,就有了这个工具
Github地址:漏洞盒子自动提交漏洞工具
PS:单个提交的时候记得去掉提交漏洞哪行的注释
思路
使用selenium模块来模仿浏览器进行点击,从而实现
快速提交漏洞的手法
代码
模拟点击的代码:
chrome.find_element_by_name('bug_title').send_keys(bug['漏洞标题']) #填写漏洞标题
if bug['漏洞类别']=='事件型漏洞': #设置漏洞类别
leix=chrome.find_elements_by_name('bug_internet_type')[tyon[0]]
leix.click()
else:
leix=chrome.find_elements_by_name('bug_internet_type')[tyon[1]]
leix.click()
chrome.find_element_by_name('bug_firm_name').send_keys(bug['厂商信息']) #填写厂商信息
chrome.find_element_by_name('bug_firm_url').send_keys(bug['所属域名']) #所属域名
chrome.find_element_by_xpath('//*[@id="submitform"]/div[5]/div/div[1]/div').click() #点击漏洞类型的界面
chrome.find_element_by_xpath('//*[@id="submitform"]/div[5]/div/div[2]/div/ul/li[1]/a').click() #点击Web漏洞
chrome.find_element_by_xpath(web_bug[bug['漏洞类型']]).click()
chrome.find_element_by_xpath('//*[@id="submitform"]/div[6]/div/div/button').click() #点击漏洞级别的框框
chrome.find_element_by_xpath(bug_level[bug['漏洞等级']]).click()
chrome.find_element_by_xpath('//*[@id="submitform"]/div[8]/div/textarea').send_keys(bug['漏洞描述']) #漏洞描述
chrome.find_element_by_xpath('//*[@id="submitform"]/div[15]/div/div[2]/div[1]/div[4]').send_keys(bug['复现步骤']) # 填写复现步骤
for tup in images:
chrome.find_element_by_xpath('//*[@id="submitform"]/div[15]/div/div[2]/div[1]/div[1]/ul/li[13]/a').click() #点击图片上传
chrome.find_element_by_xpath('//*[@id="submitform"]/div[15]/div/div[2]/div[1]/div[1]/ul/li[13]/div/ul/li[1]/a').click()
time.sleep(1)
dialog = win32gui.FindWindow('#32770', '打开') # 对话框
ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None)
ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None)
Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None) # 上面三句依次寻找对象,直到找到输入框Edit对象的句柄
button = win32gui.FindWindowEx(dialog, 0, 'Button', None) # 确定按钮Button
win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, r'{}'.format(tup)) # 往输入框输入绝对地址
win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 按button
chrome.find_element_by_xpath('//*[@id="submitform"]/div[15]/div/div[2]/div[1]/div[4]').send_keys(Keys.ENTER)
chrome.find_element_by_xpath('//*[@id="submitform"]/div[17]/div/div/div[1]/div[4]').send_keys(bug['修复方案']) #填写修复方案
if bug['匿名']=='否':
chrome.find_element_by_xpath('//*[@id="submitform"]/div[18]/div/div/div/div/span[3]').click()
else:
pass
data=open(str(bug['漏洞POC请求包']),'r',encoding='utf-8').read()
print(data)
try:
chrome.find_element_by_xpath('//*[@id="submitform"]/div[9]/div/input').send_keys(bug['漏洞url/位置']) #填写漏洞URL
except:
pass
try:
chrome.find_element_by_xpath('//*[@id="submitform"]/div[10]/div/input').send_keys(bug['影响参数']) #填写影响参数
except:
pass
try:
chrome.find_element_by_xpath('//*[@id="submitform"]/div[11]/div').click()
chrome.find_element_by_xpath('//*[@id="submitform"]/div[11]/div/textarea').send_keys(data)
except:
pass
chrome.find_element_by_xpath('//*[@id="submit"]').click() #提交漏洞
然后文件上传的实现就是,通过win32api来检测这个窗口。然后输出要上传的文件路径
然后点击确认即可
参考文章:
Selenium+Python上传文件方法大全 - 简书
python和pywin32实现窗口查找、遍历和点击 - alex.shu - 博客园
python-selenium模块简单使用 - 檐夏 - 博客园
效果图:
一些坑
webdriver.Chrome()不能放在函数内,否则请求完第一个url就退出浏览器…
原因:你放在函数内的话,这个函数执行完成后就会结束
from selenium import webdriver
def demo():
chrome=webdriver.Chrome()
chrome.get('https://www.baidu.com')
if __name__ == '__main__':
demo()
Xpath的小技巧
这里手动@木头,并送出一个吻
Chrome或Firefox选择指定部分后选择:检查->Copy->Copy Xpath
END
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:漏洞盒子自动化交漏洞
本文作者:九世
发布时间:2019-07-18, 17:25:50
最后更新:2019-07-18, 17:49:42
原始链接:http://jiushill.github.io/posts/b36db5a6.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。