您好,登錄后才能下訂單哦!
在QA進行功能測試時,同時也進行安全測試,減少產品安全測試所花費的時間,將工具可以發現的安全問題,盡可能早的提出來。
插件需要繼承IScannerListener,使用其newScanIssue函數獲取所有的掃描結果
package burp;
/*
only formatting tags and simple hyperlinks.
*/
public interface IScanIssue
{
/**
/**
/**
/**
*/
String getSeverity();
/**
/**
/**
/**
/**
/*
/*
}
**如上newScanIssue可以獲取到掃描的所有結果,比如:
1.java.net.URL getUrl(); 掃描的url
2.String getIssueName(); 問題類型: 如SQL injection(sql注入)
3.getSeverity(); 漏洞等級 "High", "Medium", "Low", "Information" or "False positive"
4.String getConfidence(); 確定程度 "Certain", "Firm" or "Tentative".
from burp import IBurpExtender
from burp import IScannerListener
from java.io import PrintWriter
from threading import Thread
from java.lang import Class
from java.sql import DriverManager, SQLException
import time
class BurpExtender(IBurpExtender, IScannerListener):
def registerExtenderCallbacks(self, callbacks):
# keep a reference to our callbacks object
self._callbacks = callbacks
# set our extension name
callbacks.setExtensionName("scann_test")
# obtain our output stream
self._stdout = PrintWriter(callbacks.getStdout(), True)
self._helpers = callbacks.getHelpers()
# register ourselves as an
callbacks.registerScannerListener(self)
def newScanIssue(self,issue):
#self._stdout.println(issue.getConfidence()) Certain", "Firm" * or "Tentative"
#CREATE TABLE `scanner` (`id` INTEGER PRIMARY KEY,`time` varchar(100),ip varchar(50),`url` varchar(30) ,`degree` varchar(30) ,`level` varchar(100) ,`detail` text ,`issueType` varchar(200) ,`issueBackground` text,`remediationBackground` text,`remediationDetail` text,`requests` text,`response` text ,issueName varcahr(50))
if(issue.getConfidence()):
Class.forName("org.sqlite.JDBC").newInstance()
JDBC_URL = "jdbc:sqlite:%s" % ("d:/scanner.db")
dbConn = DriverManager.getConnection(JDBC_URL)
sql="insert into `scanner` (time,ip,url,degree,level,detail,issueType,issueBackground,remediationBackground,remediationDetail,requests,response,issueName) values(?,?,?,?,?,?,?,?,?,?,?,?,?);"
preStmt=dbConn.prepareStatement(sql)
current_time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
requests=""
response=""
for message in issue.getHttpMessages():
for i in range(len(message.getRequest())):
if(message.getRequest()[i]<255 and message.getRequest()[i]>0):
requests=requests+chr(message.getRequest()[i])
requests+="\n--------------------------\n"
if(len(message.getResponse())!=0):
for i in range(len(message.getResponse())):
if(message.getResponse()[i]<255 and message.getResponse()[i]>0):
response=response+chr(message.getResponse()[i])
response+="\n--------------------------\n"
ip=issue.getHttpService().getHost()
if(issue.getIssueDetail()):
detail=issue.getIssueDetail()
else:
detail="none"
if(issue.getIssueBackground()):
issueBackground=issue.getIssueBackground()
else:
issueBackground="none"
if(issue.getRemediationBackground()):
remediationBackground=issue.getRemediationBackground()
else:
remediationBackground="none"
if(issue.getRemediationDetail()):
remediationDetail=issue.getRemediationDetail()
else:
remediationDetail="none"
preStmt.setString(1, str(current_time))
preStmt.setString(2, str(ip))
preStmt.setString(3, str(issue.getUrl()))
preStmt.setString(4,str(issue.getConfidence()))
preStmt.setString(5,str(issue.getSeverity()))
preStmt.setString(6,str(detail))
preStmt.setString(7,str(issue.getIssueType()))
preStmt.setString(8,str(issueBackground))
preStmt.setString(9,str(remediationBackground))
preStmt.setString(10,str(remediationDetail))
preStmt.setString(11,str(requests))
preStmt.setString(12,str(response))
preStmt.setString(13,str(issue.getIssueName()))
preStmt.addBatch()
dbConn.setAutoCommit(False)
preStmt.executeBatch()
dbConn.setAutoCommit(True)
dbConn.close()
self._stdout.println("time:")
self._stdout.println(current_time)
self._stdout.print("ip")
self._stdout.println(ip)
self._stdout.println("qudingchengdu:"+issue.getConfidence())
self._stdout.print("url:")
self._stdout.println(issue.getUrl())
self._stdout.println(issue.getIssueName())
self._stdout.println("level:"+issue.getSeverity())
self._stdout.print("detail:")
if(issue.getIssueDetail()):
self._stdout.println(issue.getIssueDetail())
else:
self._stdout.println("none")
self._stdout.println("getIssueType():")
self._stdout.println(issue.getIssueType())
self._stdout.print("getIssueBackground")
if(issue.getIssueBackground()):
self._stdout.println(issue.getIssueBackground())
else:
self._stdout.println("none")
self._stdout.print("getRemediationBackground():")
if(issue.getRemediationBackground()):
self._stdout.println(issue.getRemediationBackground())
else:
self._stdout.println("none")
self._stdout.print("getRemediationDetail():")
if(issue.getRemediationDetail()):
self._stdout.println(issue.getRemediationDetail())
else:
self._stdout.println("none")
self._stdout.println("---------------------------")
scanner 掃描過程中過濾js,jpg等文件
將需要測試的url自動添加到scope中
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。