????????????????url??????????????????????????????浽????????????????????+??+???????????????????Awvs????????????????????????????????????г?????????????輴???site Crawler???????????С?
????writeinmysql.py ????????飬????
#coding:UTF-8
import subprocess
import os??time??shutil??sys
import win32com.client
import MySQLdb
import re??hashlib
reload(sys)
sys.setdefaultencoding('utf-8')
#???????win??????????odbc??????access??????????pyodbc??????????Щ
def writeinmysql():
conn = win32com.client.Dispatch(r'ADODB.Connection')
DSN = 'PROVIDER=Microsoft Access Driver (*.mdb?? *.accdb)'
conn.Open('awvs')
cur=conn.cursor()
rs = win32com.client.Dispatch(r'ADODB.Recordset')
rs.Open('[WVS_alerts]'?? conn?? 1?? 3)
if rs.recordcount == 0:
exit()
#???????е?????cmp??????Σ??????3???????Σ
while not rs.eof:
severity = str(rs('severity'))
if cmp('3'?? severity):
rs.movenext
continue
vultype = rs('algroup')
vulfile=rs('affects')
#????mysql????????????????access???????е?????????????????????Σ????????ж?????????sql????xss???
xss='Cross site'
sqlinject='injection'
if xss in str(vultype):
vultype='XSS'
level='??Σ'
elif sqlinject in str(vultype):
vultype="SQL???"
level='??Σ'
else:
level='??Σ'
#???????????url??????????????? post??get?????request??????????
params = rs('parameter')
ss = str(rs('request'))
str1 = ss[0:4]
if 'POST'== str1:
requestType = 'POST'
regex = 'POST (.*?) HTTP/1.d+'
str1 = re.findall(regex?? ss);
else:
requestType = 'GET'
regex = 'GET (.*?) HTTP/1.d+'
str1 = re.findall(regex?? ss);
regex = 'Host:(.*?) '
host = re.findall(regex?? ss);
if host == []:
host = ''
else:
host = host[0].strip()
if str1 == []:
str1 = ''
else:
str1 = str1[0]
url =host + str1
timex=time.strftime('%Y-%m-%d'??time.localtime(time.time()))
status=0
scanner='Awvs'
comment=''
db = MySQLdb.connect(host="10.1.1.1"?? user="root"?? passwd="12345678"?? db="wvsdb"??charset='utf8')
cursor = db.cursor()
sql = 'insert into vuls(status??comment??vultype??url??host??params??level??scanner) values(%s??%s??%s??%s??%s??%s??%s??%s)'
values =[status??comment??vultype??'http://'+url.lstrip()??host??params??level??scanner]
#?????????????????????mysql??????д????????????????????????vulhash???б????о??????????????
hashvalue=str(values[2])+str(values[4])+str(vulfile)+str(values[5])
vulhash=hashlib.new('md5'??hashvalue).hexdigest()
vulhash=vulhash+' '
file=open(r'D:Wvscanvulhash.txt'??'a+')
if vulhash in file.readlines():
pass
else:
file.write(vulhash+' ')
cursor.execute(sql?? values)
delsql='delete from vuls where vultype like %s or vultype like %s'
delvaluea='Slow HTTP%'
delvalueb='Host header%'
delinfo=[delvaluea??delvalueb]
cursor.execute(delsql??delinfo)
db.commit()
rs.movenext
rs.close
conn.close
cursor.close()
db.close()
if __name_=='__main__':
writeinmysql()
time.sleep(10)
#??????????????????????????滻????????????????檔
datanow=time.strftime('%Y-%m-%d'??time.localtime(time.time()))
filetype='.mdb'
urlfilename=datanow+filetype
path="D:wvscandatabak\"
databakfile=path+urlfilename
shutil.copyfile(r'D:Wvscandatavulnscanresults.mdb'??databakfile)
shutil.copyfile(r'D:Wvscanvulnscanresults.mdb'??r'D:Wvscandatavulnscanresults.mdb')
????startwvs.py???????飬???????????????????????п????????????????????????????
#coding:utf-8
import subprocess
import os??time??shutil
file=open(r"D:Wvscanurl.txt"??"r")
def wvsscan():
for readline in file:
url=readline.strip(' ')
cmd=r"d:Wvswvs_console.exe /Scan "+url+r" /SavetoDatabase"
doscan=subprocess.Popen(cmd)
doscan.wait()
if __name__=='__main__':
wvsscan()