Burpsuite插件开发(之二): 信息采集插件
优采云 发布时间: 2020-08-08 01:34最后一集发送了“如何编写与sqlmap的burpsuite链接的插件”
0x00
我之前编写了一个用于burpsuite与sqlmap链接的插件. 这次是一个用于信息采集的插件. 该插件的名称是TheMagician. 这是“从Windows到Mac的渗透测试重点”计划的一小步. 我想简单地编写它,但是写的越多,就越麻烦. 多亏了朋友们的大力帮助,我终于顺利完成了任务.
使用该插件之前需要修改三个全局变量,即NMAPPATH,BINGKEY和HOMEPATH,其他全局变量不需要更改
该插件的使用与链接sqlmap插件的用法相同,遵循“简单就是美丽”的原则. 右键单击最简单的调用
创建右键菜单的源代码
#创建菜单右键
def createMenuItems(self, invocation):
menu = []
responses = invocation.getSelectedMessages()
if len(responses) == 1:
menu.append(JMenuItem(self._actionName, None, actionPerformed=lambda x, inv=invocation: self.quoteJTab(inv)))
return menu
return None
三个标签代表三种不同的功能
0x01 C段端口扫描
第一个是C扫描. 该IP地址是从Proxy标记中HTTP请求标头中的主机地址继承的. 它可以是单个IP地址或CIDR. 考虑到nmap在端口扫描中的绝对领导者位置,我没有亲自重写端口扫描引擎,而是通过Python子进程库调用了nmap.
Mac在使用前必须先安装nmap
brew install nmap
class NmapScan(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.thread_stop = False
def setCommds(self,cmds,Jobject,pcontrol):
self.runcms=cmds
self.setobject=Jobject
self.pcontrol=pcontrol
def run(self):
#self.setobject.setResult('Nmap task for '+self.runcms[5]+' is running\n')
child1 = subprocess.Popen(self.runcms, stdout = subprocess.PIPE, stdin = subprocess.PIPE, shell = False)
child1.poll()
resultScan = child1.stdout.read()
self.setobject.setResult(resultScan)
#self.setobject.setResult('Nmap task for '+self.runcms[5]+' is finnished\n')
self.pcontrol.subnum()
self.stop()
def stop(self):
self.thread_stop = True
单个IP地址扫描结果
C段扫描结果
通过先前的链接sqlmap插件来实现burpsuite,sqlmap和nmap这三个工件的集成.
0x02子域查询
我知道当前有三*敏*感*词*域查询方案: 一种是通过bing语法查询,第二种是使用第二级域名的集合,第三种是执行DNS爆破. 三种方案中较好的是第三种方案,而较好的轮子是subdomainsbrute. 当然,最好的方法是使用这三种方案,这只是消除重复的一种好方法,我在这里使用了第一种方案,不要问我为什么: 它很容易编写.
调用bing的主要功能
def BingSearch(query):
payload={}
payload['$top']=top
payload['$skip']=skip
payload['$format']=format
payload['Query']="'"+query+"'"
url='https://api.datamarket.azure.com/Bing/Search/Web?' + urllib.urlencode(payload)
sAuth='Basic '+base64.b64encode(':'+BINGKEY)
headers = { }
headers['Authorization']= sAuth
try:
req = urllib2.Request(url,headers=headers)
response = urllib2.urlopen(req)
data=response.read()
#print data
data=json.loads(data)
return data
except Exception as e:
print e
#print e.info()
urlList = []
returnData = BingSearch("domain:" + theTopDomain)
if not returnData['d']['results']:
print "The Url Error"
else:
for tarUrl in returnData["d"]["results"]:
tmpUrl = urlparse.urlparse(tarUrl["Url"]).netloc
if tmpUrl not in urlList:
urlList.append(tmpUrl)
0x03敏感文件扫描
敏感文件扫描也是信息采集中的重要步骤. 通过文件扫描通常会带来意想不到的收益. 第三个功能模仿了Yujian Daniel的设计
目前有20个线程,速度已经过去
此外,它具有可以完全继承Proxy标记中的http请求标头信息(包括ua和cookie)的功能