當前位置:首頁 » 編程軟體 » wsl腳本

wsl腳本

發布時間: 2022-09-03 16:04:38

『壹』 網址是指的什麼

網址通常指網際網路上網頁的地址。企事業單位或個人通過技術處理,將一些信息以逐頁的方式儲存在網際網路上,每一頁都有一個相應的地址,以便其他用戶訪詢而獲取信息資料,這樣的地址叫做網址。

網址在網際網路中,如果要從一台計算機訪問網上另一台計算機,就必須知道對方的網址。在網路世界中,為了准確地找到目的計算機,每一台計算機都必須標有唯一的一個地址。就像打電話必須知道對方的電話號碼,這一號碼也必須是唯一的一樣。

(1)wsl腳本擴展閱讀:

1、計算機網路的性能指標

性能指標從不同的方面來度量計算機網路的性能。

(1)速率

計算機發送出的信號都是數字形式的。比特是計算機中數據量的單位,也是資訊理論中使用的信息量的單位。英文字bit來源於binary digit,意思是一個「二進制數字」,因此一個比特就是二進制數字中的一個1或0。

網路技術中的速率指的是連接在計算機網路上的主機在數字信道上傳送數據的速率,它也稱為數據率(data rate)或比特率(bit rate)。速率是計算機網路中最重要的一個性能指標。速率的單位是bit/s(比特每秒)(即bit per second)。

(2)帶寬

「帶寬」有以下兩種不同的意義。

① 帶寬本來是指某個信號具有的頻帶寬度。信號的帶寬是指該信號所包含的各種不同頻率成分所佔據的頻率范圍。

例如,在傳統的通信線路上傳送的電話信號的標准帶寬是3.1kHz(從300Hz到3.4kHz,即話音的主要成分的頻率范圍)。這種意義的帶寬的單位是赫(或千赫,兆赫,吉赫等)。

② 在計算機網路中,帶寬用來表示網路的通信線路所能傳送數據的能力,因此網路帶寬表示在單位時間內從網路中的某一點到另一點所能通過的「最高數據率」。這里一般說到的「帶寬」就是指這個意思。這種意義的帶寬的單位是「比特每秒」,記為bit/s。

(3)吞吐量

吞吐量表示在單位時間內通過某個網路(或信道、介面)的數據量。吞吐量更經常地用於對現實世界中的網路的一種測量,以便知道實際上到底有多少數據量能夠通過網路。顯然,吞吐量受網路的帶寬或網路的額定速率的限制。

例如,對於一個100Mbit/s的乙太網,其額定速率是100Mbit/s,那麼這個數值也是該乙太網的吞吐量的絕對上限值。因此,對100Mbit/s的乙太網,其典型的吞吐量可能也只有70Mbit/s。有時吞吐量還可用每秒傳送的位元組數或幀數來表示。

(4)時延

時延是指數據(一個報文或分組,甚至比特)從網路(或鏈路)的一端傳送到另一端所需的時間。時延是個很重要的性能指標,它有時也稱為延遲或遲延。網路中的時延是由以下幾個不同的部分組成的。

① 發送時延。

發送時延是主機或路由器發送數據幀所需要的時間,也就是從發送數據幀的第一個比特算起,到該幀的最後一個比特發送完畢所需的時間。

因此發送時延也叫做傳輸時延。發送時延的計算公式是:發送時延=數據幀長度(bit/s)/信道帶寬(bit/s)

由此可見,對於一定的網路,發送時延並非固定不變,而是與發送的幀長(單位是比特)成正比,與信道帶寬成反比。

② 傳播時延。

傳播時延是電磁波在信道中傳播一定的距離需要花費的時間。傳播時延的計算公式是:傳播時延=信道長度(m)/電磁波在信道上的傳播速率(m/s)

電磁波在自由空間的傳播速率是光速,即300000km/s。電磁波在網路傳輸媒體中的傳播速率比在自由空間要略低一些。

③ 處理時延。

主機或路由器在收到分組時要花費一定的時間進行處理,例如分析分組的首部,從分組中提取數據部分,進行差錯檢驗或查找適當的路由等,這就產生了處理時延。

④ 排隊時延。

分組在經過網路傳輸時,要經過許多的路由器。但分組在進入路由器後要先在輸入隊列中排隊等待處理。在路由器確定了轉發介面後,還要在輸出隊列中排隊等待轉發。這就產生了排隊時延。

這樣,數據在網路中經歷的總時延就是以上四種時延之和: 總時延=發送時延+傳播時延+處理時延+排隊時延 。

參考資料來源:網路-計算機網路

『貳』 微軟linux子系統能幹啥

在今年的 Build 2016 上,微軟向全世界介紹了他們還處於 Beta 階段的 Windows 下的 Linux 子系統Windows Subsystem for Linux(WSL),它可以讓開發者們在 Windows 10 下通過 Bash shell 運行原生的 Ubuntu 用戶態二進製程序。如果你參與了 Windows Insider 計劃,你就可以在最新的 Windows 10 年度升級版的 Insider 構建版中體驗這個功能了。
Web 開發人員們不用再苦惱所用的 Windows 開發平台上沒有合適的 Linux 工具和庫了。WSL 是由 Windows 內核團隊與 Canonical 合作設計和開發的,可以讓 Windows 10 下的開發者們在擁有 Windows 中那些強力支持之外,還能使用 Linux 下豐富的開發環境與工具,而不用啟動到另外的操作系統或者使用虛擬機。這絕對是一個「來自開發者,服務開發者」的 Windows 10 特色,它的目的是讓開發者們每天的開發工作都變得順暢而便捷。

『叄』 如何在Windows下運行linux shell腳本

你好,
Windows裡面有個PowerShell,本質和Linux的shell是一樣的,所以可以用PowerShell運行sh腳本,但是PowerShell的語法和Linux的shell語法並不完全一樣,所以可能會有出錯的可能。
Windows10內置了一個Linux on Windows,也是可以用來運行sh腳本的。
希望對你有所幫助!
不懂請追問!
望採納!

『肆』 WEP和WAP是什麼

WAP是Wireless Application Protocol(即無線應用協議)的縮寫。 這是一個使用戶藉助無線手持設備,如掌上電腦,手機,呼機,雙向廣播,智能電話等,獲取信息的安全標准。 WAP支持絕大多數無線網路,包括GSM, CDMA, CDPD, PDC, PHS, TDMA, FLEX, ReFLEX, iDen, TETEA, DECT, DataTAC, 和Mobitex。 所有操作系統都支持WAP,其中專門為手持設備設計的有PalmOS, EPOC, Windows CE, FLEXOS, OS/9及JavaOS。 一些手持設備,如掌上電腦,安裝微型瀏覽器後,可藉助WAP接入Internet。 微型瀏覽器文件很小,可較好的解決手持設備內存小和無線網路帶寬不寬的限制。 雖然WAP能支持HTHL和XML,但WML才是專門為小屏幕和無鍵盤手持設備 服務的語言。WAP也支持WMLScript。這種腳本語言類似與JavaScript,但 對內存和CPU的要求更低,因為它基本上沒有其他腳本語言所包含的無用功能。

WAP(Wireless Application Protocol)

是一種向移動終端提供互聯網內容和先進增值服務的全球統一的開放式協議標准, 是簡化了的無線Internet 協議。WAP 將Internet和行動電話技術結合起來,使隨時隨地訪問豐富的互聯網路資源成為現實。WAP 服務是一種手機直接上網,通過手機WAP「瀏覽器」瀏覽wap 站點的服務,可享受新聞瀏覽、股票查詢、郵件收發、在線游戲、聊天等多種應用服務。通過GPRS 網路接入WAP,可充分發揮接入時延短(2 秒接入)速率高、永遠在線、切換方便等優點

WAP 1.2 是基於WML的

WAP 2.0 是以面向WAP的XHTML作為編程與WEB更加接近

WAP(無線應用協議)是詳細描述如何進行通訊傳輸、信息編碼及將之應用於無線設備的全球性開放標准,這一標准獲得了超過200家公司的支持,Ericsson,Nokia及Motorola公司等都是WAP的發起者。相對而言,從理解的含義來講,WAP也許該為無線訪問協議或是直接稱之為無線上網協議,它規范化了網頁的瀏覽格式及通訊協議,如TCP/IP等。而BlueTooth也是無線通訊協定,但BlueTooth規范化了更為具體的硬體及頻率應用等內容。

WAP(無線通訊協議)是在數字行動電話、網際網路或其他個人數字助理機(PDA)、計算機應用之間進行通訊的開放全球標准。這一標準的誕生是WAP論壇成員努力的結果,WAP論壇是在1997年6月,由諾基亞、愛立信、摩托羅拉和無線星球(Unwired Planet)就共同組成的。WAP的目標就是

通過WAP這種技術,就可以將Internet的大量信息及各種各樣的業務引入到行動電話、PALM等無線終端之中。無論你在何地、何時只要你需要信息,你就可以打開你的WAP手機,享受無窮無盡的網上信息或者網上資源。如:綜合新聞、天氣預報、股市動態、商業報道、當前匯率等。電子商務、網上銀行也將逐一實現。

你還可以隨時隨地獲得體育比賽結果、娛樂圈趣聞以及幽默故事,為生活增添情趣,也可以利用網上預定功能,把生活安排的有條不紊。 WAP協議包括以下幾層: 1、 Wireless Application Environment (WAE) 2、Wireless Session Layer (WSL) 3、Wireless Transport Layer Security (WTLS) 4、Wireless Transport Layer (WTP) 其中,WAE層含有微型瀏覽器、WML 、WMLSCRIPT的解釋器等等功能。WTLS層為無線電子商務及無線加密傳輸數據時提供安全方面的基本功能。

WAP的基本原理

AP標準是一套協議

WDP:WAP數據報協議層,是發送和接收消息的傳輸層。

WTLS:無線傳輸安全層,是為像電子商務這樣的應用提供安全服務。

WTP:WAP傳輸協議層,提供傳輸支持,增加由WDP提供的數據報服務的可*性。

WSP:WAP會話協議層,提供不同應用間的有效數據交換。

HTTP介面:支持移動終端的信息檢索請求。

WAP的發展

WAP目前已成為通過行動電話或其他無線終端訪問無線信息服務的全球事實標准。它的發展與應用是無可限量的,可以說唯一的限制就是你的想像力,WAP不但使現有的許多應用得到了突飛猛進的改變,同時也催生出更多嶄新的增值業務。

WEP--Wired Equivalent Privacy加密技術,WEP安全技術源自於名為RC4的RSA數據加密技術,以滿足用戶更高層次的網路安全需求。
WEP是Wired Equivalent Privacy的簡稱,有線等效保密(WEP)協議是對在兩台設備間無線傳輸的數據進行加密的方式,用以防止非法用戶竊聽或侵入無線網路。
802.11b標准里定義的一個用於無線區域網(WLAN)的安全性協議。WEP被用來提供和有線lan同級的安全性。LAN天生比WLAN安全,因為LAN的物理結構對其有所保護,部分或全部網路埋在建築物裡面也可以防止未授權的訪問。
經由無線電波的WLAN沒有同樣的物理結構,因此容易受到攻擊、干擾。WEP的目標就是通過對無線電波里的數據加密提供安全性,如同端-端發送一樣。 WEP特性里使用了rsa數據安全性公司開發的rc4 prng演算法。如果你的無線基站支持MAC過濾,推薦你連同WEP一起使用這個特性(MAC過濾比加密安全得多)。

『伍』 Windows未成功關閉。如果這是由於系統無響應,或者是為保護數據而關閉系統...這怎麼辦

適用於 Linux 的 Windows 子系統中的 Visual Studio Code 伺服器使用本地 WebSocket WebSocket 連接與遠程 WSL 擴展進行通信。網站中的 JavaScript 可以連接到該伺服器並在目標系統上執行任意命令。目前該漏洞被命名為CVE-2021-43907。

這些漏洞可以被用於:
本地 WebSocket 伺服器正在監控所有介面。如果允許通過 Windows 防火牆,外部應用程序可能會連接到此伺服器。
本地 WebSocket 伺服器不檢查 WebSocket 握手中的 Origin 標頭或具有任何身份驗證模式。瀏覽器中的 JavaScript 可以連接到該伺服器。即使伺服器正在監控本地主機,也是如此。
我們可以在特定埠上生成一個Node Inspector示例,它還監控所有介面。外部應用程序可以連接到它。
如果外部應用程序或本地網站可以連接到這些伺服器中的任何一個,它們就可以在目標計算機上運行任意代碼。
Visual Studio Code 庫是不斷更新的。我將使用一個特定的提交 ()。
$ git clone https://github.com/microsoft/vscode $ git reset --hard
我們可以使用 Code (lol) 來導航源代碼。事實上,我已經在 WSL 中為這個漏洞創建了具有相同擴展名的概念驗證。
Visual Studio Code在 WSL 內以伺服器模式運行,並與 Windows 上的代碼示例對話(我稱之為代碼客戶端)。這使我們可以在 WSL 中編輯文件和運行應用程序,而不需要運行其中的所有內容。
遠程開發架構
可以通過 SSH 和容器在遠程計算機上進行遠程開發。GitHub Codespaces 使用相同的技術(很可能通過容器)。
在 Windows 上使用它的方法:
1.打開一個WSL終端示例,在Windows上的代碼中應該可以看到遠程WSL擴展;
2.在 WSL 中運行code /path/to/something;
3.如果未安裝代碼伺服器或已過時,則會下載它;
4.VS Code 在 Windows 上運行;
5.你可能會收到一個 Windows 防火牆彈出窗口,用於執行如下所示的可執行文件:
伺服器的防火牆對話框
這個防火牆對話框是我執行失敗的原因。出現該對話框是因為 VS Code 伺服器想要監控所有介面。
從我信任的Process Monitor開始:
1.運行進程監控器;
2.在WSL中運行code .;
3.Tools > Process Tree;
4.我運行代碼(例如,Windows Terminal.exe)的終端示例中運行Add process and children to Include filte。
Procmon 的進程樹
經過一番挖掘,我發現了 VSCODE_WSL_DEBUG_INFO 環境變數。我只是在 WSL 中將 export VSCODE_WSL_DEBUG_INFO=true 添加到 ~/.profile 。運行伺服器後我們會得到額外的信息。
VSCODE_WSL_DEBUG_INFO=true
輸出被清理。
檢查命令行參數。
可以看到出現了WebSocket詞彙。
運行 Wireshark 並捕獲loopback介面上的流量。然後我再次在 WSL 中運行代碼。這次可以看到兩個 WebSocket 握手。
在 Wireshark 中捕獲的 WebSocket 連接
該運行中的伺服器埠是63574,我們也可以從日誌中看到。在 Windows 上的代碼客戶端中打開命令面板 (ctrl+shift+p) 並運行 > Remote-WSL: Show Log。
遠程 WSL:顯示日誌
最後一行有埠:在 http://127.0.0.1:63574/version 上打開本地瀏覽器。我們還可以看到從 Windows 上的 Code 客戶端到伺服器的兩個單獨的 WebSocket 連接。
伺服器是位於 /src/vs/server/.ts#L207 的 的一個示例。
它被 createServer 在同一個文件中使用,我們可以使用 Code (lol) 找到它的引用並追蹤到 remoteExtensionHostAgent.ts(同一目錄)。
可以根據注釋查看 main.js 內部。
打開文件,看到伺服器可以從傳遞給main.js的參數中獲得主機和埠。
main.js 被 server.sh 調用:
沒有 IP 地址傳遞給腳本,我認為這就是為什麼伺服器監控所有有趣的事情。port=0 可能告訴伺服器使用臨時埠,此信息來自同一目錄中的 wslServer.sh。
每次看到本地 WebSocket 伺服器時,都應該檢查誰可以連接到它。
WebSocket 連接不受同源策略約束,瀏覽器中的 JavaScript 可以連接到本地伺服器。
WebSockets 從握手開始,在跨源資源共享或 CORS 的上下文中它始終是一個「簡單」的GET 請求,因此瀏覽器不需要預先請求就可以發送它。
可以快速創建一個嘗試連接到特定埠上的本地WebSocket伺服器的測試頁面,將它託管在某個遠程位置(例如,S3 存儲桶)並在計算機上打開它。如果連接成功,就可以繼續操作了。
我還檢查了 Burp,在 Burp Repeater 中創建了 WebSocket 握手。將 Origin 標頭修改為 https://example.net。如果響應具有 HTTP/1.1 101 交換協議,那麼就可以繼續了。
在 Burp 中測試
注意,這只對本地主機伺服器有影響。這里的伺服器也對外公開,攻擊者不受瀏覽器約束。它們可以直接連接到伺服器並提供任何 Origin 標頭。
接下來是查看 Wireshark 中的流量,右鍵點擊之前的WebSocket握手GET請求,然後選擇 Follow > TCP Stream。我們將看到一個帶有一些可讀文本的屏幕。關閉它,只會看到這個進程的數據包,這允許我們只關注這個進程。
你可能會問為什麼我關閉了僅包含消息內容的彈出窗口,因為沒有用。根據 RFC6455,從客戶端到伺服器的消息必須被屏蔽。這意味著它們與一個 4 位元組的密鑰(也隨消息一起提供)進行了異或運算。Wireshark 在選擇時取消屏蔽每個數據包,但有效載荷在初始進程彈出窗口中顯示為屏蔽。所以我們將看到純文本的伺服器消息,而客戶端消息被屏蔽並出現亂碼。如果你點擊單個消息,Wireshark 就會顯示有效載荷。
我花了幾天時間對協議進行逆向工程。後來,我意識到只能在/src/vs/base/parts/ipc/common/ipc.net.ts 中看到協議的源代碼。
來自伺服器的第一條消息是 KeepAlive 消息。
在協議定義中,我們可以看到不同的消息類型。
在 /src/vs/platform/remote/common/remoteAgentConnection.ts 中,它在代碼的其他部分被稱為 OKMessage 和heartbeat。
客戶端在/src/vs/platform/remote/common/remoteAgentConnection.ts的中處理此問題。客戶端(Windows上的代碼)發送這個包,它是一個KeepAlive和一個單獨的認證消息。
最初,我認為長度欄位是 12 個位元組而不是 4 個位元組,因為其餘的位元組總是空的。然後我意識到只有常規消息使用消息 ID 和 ACK 欄位,而且我只看到了不規則的握手消息。
在修復之前,沒有勾選此選項。
注意:在 2021-11-09 更新之前(commit )客戶端沒有發送數據。但是,使用此提交,我們仍然可以在沒有此密鑰的情況下發送消息並且它會起作用。這是我們給伺服器簽名的內容,以檢查連接到正確的伺服器。
伺服器響應一個簽名請求。
另一個 JSON 對象:
伺服器已經簽名了我們在前一條消息中發送的數據,並用它自己的數據請求進行了響應。
客戶端驗證簽名的數據,以檢查它是否是受支持的伺服器。當創建我們的客戶端時,可以簡單地跳過。
使用options.signService.validate 方法,然後就會得到/src/vs/platform/sign/node/signService.ts。
vsda 是一個用 C++ 編寫的 Node 原生插件,將 Node 原生插件視為共享庫或 DLL。該插件位於 https://github.com/microsoft/vsda 的私有存儲庫中,根據https://libraries.io/npm/vsda/的說法,直到2019年左右,它都是一個NPM包。
它與 VS Code 客戶端和伺服器捆綁在一起:
Windows系統:
C:\Program Files\Microsoft VS Code\resources\app\node_moles.asar.unpacked\vsda\build\Release\vsda.node
伺服器(WSL):~/.vscode-server/bin/{commit}/node_moles/vsda/build/Release/vsda.node。
我找到了https://github.com/kieferrm/vsda-example,並通過一些實驗找到了如何使用它創建和簽名消息。
1.用msg1 = validator.createNewMessage("1234")創建一個新消息,輸入至少4個字元。
2.使用signed1 = signer.sign(msg1)進行簽名。
3.使用 validator.validate(signed1) 對其進行驗證,響應為「ok」。
需要注意的是,如果你創建了新消息,則無法再驗證舊消息。在源代碼中,每條消息都有自己的驗證器。
Linux 版本有符號,大小約為 40 KB。把它放到 IDA/Ghidra 中,應該就可以開始了。
我花了一些時間,想出了這個偽代碼。可能不太正確,但可以讓你大致了解此簽名的工作原理。
1.用當前時間 + 2*(msg[0]) 初始化 srand,它只會創建 0 到 9(含)之間的隨機數;
2.從許可證數組中附加兩個隨機字元;
3.從 salt 數組中附加一個隨機字元;
4.SHA256;
5.Base64;
6.???;
7.Profit。
僅從許可證數組中選擇前 10 個位置的字元,它總是 rand() % 10 ,但salt 數組翻了一番。
許可證數組的字元串如下所示:
salt 數組的前 32 個位元組(查找 Handshake::CHandshakeImpl::s_saltArray)是:
我從來沒有真正檢查過我的分析是否正確,不過這無關緊要,知道如何使用插件簽名消息,這就足夠了。
接下來,客戶端需要簽名來自伺服器的數據並將其發送回來,以顯示它是一個「合法」的代碼客戶端。
伺服器響應如下:
客戶端發送了如下消息:
提交應該匹配伺服器的提交哈希。這不是秘密。這可能是最後一個穩定版本提交(或最後幾個之一)。這只是檢查客戶端和伺服器是否在同一版本上。它也可以在 http://localhost:{port}/version 上找到,你的瀏覽器 JavaScript 可能無法看到它,但外部客戶端沒有這樣的限制。
signedData是對我們在前面消息中從伺服器獲得的數據進行簽名的結果。
Args是此消息中最重要的部分,它可以告訴伺服器在特定埠上啟動一個 Node Inspector 示例。
break: 啟動 Inspector 示例後中斷。
埠:檢查器示例的埠。
Env:傳遞給檢查器示例進程的環境變數及其值的列表。
Node Inspector 示例可用於調試 Node 應用程序。如果攻擊者可以連接到你計算機上的此類示例,那麼攻擊就成功了。2019 年,Tavis 發現 VS Code 默認啟用了遠程調試器。
整個設置旨在允許 Windows 上的代碼客戶端在 WSL、容器或 GitHub 代碼空間中進行遠程開發。這意味著它可以在遠程計算機上做任何想做的事情。
因此,如果網站可以連接到你本地的 WebSocket 伺服器並繞過 DRM,它就可以模擬代碼客戶端。它可以在你的系統上遠程執行代碼,並且不需要 Node Inspector 示例。
到目前為止,我們已經找到了兩種利用該系統的方法:
生成並連接到 Node Inspector 示例;
模擬代碼客戶端並使用自定義協議與遠程計算機交互;
Node Inspector示例
讓我們看看前面消息中的參數, /src/vs/server/.ts 在伺服器上處理它們。
介面類似於我們之前看到的 JSON 對象:
_updateWithFreeDebugPort檢查埠是否空閑,如果沒有,它將嘗試接下來的10個埠。最後一個空閑埠存儲在startParams.port中。
選擇的埠被發送回客戶端,所以我們知道去哪裡:
最後,它在 /src/vs/server/extensionHostConnection.ts 中調用con.start(startParams);。
這看起來很復雜,讓我們來分析一下:
1.Node Inspector 示例將監聽 0.0.0.0:debugPort,這很危險,如果用戶接受 Windows 防火牆對話框,它將在外部可用;
2.我們也可以注入 Inspector 的環境變數;
3.removeDangerousEnvVariables 方法不是安全過濾器,只是刪除 DEBUG、DYLD_LIBRARY_PATH 和 LD_PRELOAD 環境變數(如果存在)以防止崩潰。
什麼是Node Inspector?
它可以用來調試Node進程。有一些客戶端和庫支持這一點,但通常,我使用Chromium內置的專用節點DevTools (chrome|edge://inspect)。
連接到 Inspector 示例後,我們可以打開控制台並運行 require('child_process').exec('calc.exe');。盡管我們使用的是wsdl,但它仍然有效。
瀏覽器中的 JavaScript 無法連接到 Inspector 示例,客戶端使用另一個 WebSocket 連接與示例對話。但是,我們需要知道調試器會話 ID。
/json/列表
瀏覽器中的 JavaScript 可以發送此 GET 請求,但由於 SOP(響應沒有 Access-Control-Allow-Origin 標頭)而無法看到響應。其他客戶端則沒有這個限制,因為檢查器在外部可用,我們可以從外部連接到它。
現在,我創建了一個簡單的概念驗證:
1.打開一個網站並輸入埠(我們可以掃描它,但手動輸入它會更快)。
2.網站中的 JavaScript 完成握手。
3.我使用 /sign API 創建了一個 Node 應用程序,這樣就可以使用 vsda 插件。
4.一旦生成Node Inspector 示例,第二個 API 就會被 debugPort 調用。
5.使用 chrome-remote-interface 庫的 Node 應用程序連接到 Inspector 示例並運行 calc。
你可以通過以下鏈接看到源代碼:
https://github.com/parsiya/code-wsl-rce https://github.com/parsiya/Parsia-Code/tree/master/code-wsl-rce
模擬代碼客戶端
創建客戶端並使用協議連接到伺服器的代碼位於 VS Code GitHub 存儲庫中,這需要大量的復制/粘貼和解析,我只花了幾個小時。
如果要創建一個快速的概念驗證,應該滿足一些假設:
1.找到本地的 WebSocket 埠;
2.從外部連接到Node Inspector示例;
查找本地 WebSocket 埠並不難,從瀏覽器掃描本地伺服器並不是什麼新鮮事。伺服器也可以從外部使用,因此我們不受那裡的瀏覽器約束。
Chrome 限制不起作用,因為 WebSocket 伺服器需要一個網路伺服器來處理握手。我也很好奇 WebSocket 節流是 Chrome 特定的保護還是 Chromium 的一部分。
有趣的是,Chrome 瀏覽器有一個保護機制,可以防止惡意行為者暴力破解 WebSocket 埠,它在第 10 次嘗試後開始節流。不幸的是,這種保護很容易被繞過,因為擴展的 HTTP 和 WebSocket 伺服器都在同一個埠上啟動。這可用於通過向 img 標簽添加 onload 處理程序來檢查特定本地主機埠上的圖片是否存在來強制所有可能的本地埠。
也就是說,這是一個開發環境,用戶可能整天都在 WSL 中開發並且從不關閉他們的瀏覽器選項卡,因此如果他們打開我們的網站,我們就有可能找到它。
連接到Node Inspector示例是另一回事,我們無法從瀏覽器執行此操作,因此我們需要我們的伺服器可以訪問受害者的計算機。
第二種利用方法(模擬代碼客戶端)沒有這些限制,因為瀏覽器可以與本地伺服器通信並執行所有操作。它只需要我們對協議進行逆向工程並找出要發送的正確消息。
當你收到 WebSocket 升級請求時,請根據許可名單檢查 Origin 標頭。代碼客戶端在該標頭中發送 vscode-file://vscode-app,以便我們可以使用它來操作。
參考及來源:https://parsiya.net/blog/2021-12-20-rce-in-visual-studio-codes-remote-wsl-for-fun-and-negative-profit/

『陸』 最詳盡教程完整介紹-Windows 的 Linux 子系統-WSL1&WSL2

必須啟用「適用於 Linux 的 Windows 子系統」可選功能並重啟,然後才能在 Windows 上運行 Linux 發行版。

以管理員運行Powershell(開啟WSL,如已開啟可跳過)

WSL 1 和 WSL 2 之間的主要區別在於,在託管 VM 內使用實際的 Linux 內核、支持完整的系統調用兼容性以及跨 Linux 和 Windows 操作系統的性能。

WSL2相比WSL1來說可以完美支持Docker。與WSL1的模擬Linux API不同的是,WSL2採用在Hyper-V虛擬機中運行的方案。可以說WSL2和原汁原味的Linux已經十分接近

不支持Docker的守護進程,但您可以使用 Docker CLI 連接到通過 Docker for Windows 或您創建的任何其他VM 運行的遠程Docker守護進程

不能完全兼容systemctl, systemd等等,IO速度相對原生Linux也是大打折扣,在編譯解壓方面可以很深體會到。畢竟不是真正的Linux,而是掛在Windows NT內核之上的仿Linux 系統

由於WSL 還不是原生的Linux,所以需要藉助 Docker for Windows 來實現Docker(Docker for Windows 是基於Hyper-V 技術)

另外一種方式是,在WSL1中安裝docker 客戶端,連接 docker server, 來解決在WSL1上使用docker 的問題。(PS: Win10 的Linux 子系統是裝不了 docker (服務端)的,但是可以安裝客戶端)

參考

WSL2 是第二代 WSL,包含在2020年5月正式發布 Windows 10 v2004 版中。相比第一代,新的 WSL2 重新設計了架構,使用真正的 Linux 內核,幾乎具有 Linux 的所有完整功能。啟用WSL2的 Linux 系統啟動時間非常快,內存佔用很少,並且,WSL 2 還可以直接原生運行 Docker,VS Code 編輯器還有 Remote-WSL 插件,相對於完整的 linux 虛擬機只是不支持 systemctl、systemd,不能直接運行圖形桌面。Windows 也越來越向虛擬平台靠攏,Windows NT 內核和 Linux 內核都是運行在虛擬平台之上的,是平級的

如果發現VERSION為1,說明Ubuntu運行在WSL1下,可以升級到 WSL2。同樣,WSL2也可以降級到WSL1。
wsl -l -v #查看已安裝Linux版本和名稱,完整命令格式:wsl --list --verbose

具體步驟參考 : https://docs.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package

安裝 WSL 2 之前,必須啟用「虛擬機平台」可選功能

wsl --set-version Ubuntu 2 #升級到WSL2,其中 Ubuntu 是已經安裝的Linux名稱,命令格式:wsl --set-version <Distro> <Version>

啟用WSL後,通過 wsl$ 可以訪問WSL文件

最初的WSL是在Windows之上模擬Linux內核,但是Windows和Linux之間存在如此基本的差異,以至於某些事情不可能以與本機Linux相同的行為實現,這意味著不可能直接在 WSL中運行 Docker Engine 和Kubernetes
在WSL1中,Docker Desktop通過Hyper-V虛擬機去運行docker環境的

升級到WSL2 之後, Docker Desktop 可以直接用 WSL2,直接運行在Linux 內核上了

通過如下設置,Docker Desktop就和WSL2分發版本進行了集成,無需在WSL中安裝docker; 當然,也可以選擇不與Docker Desktop集成,直接在WSL 中運行docker 容器。

啟用WSL後,docker運行數據都在WSL發行版中,文件位置都只能由WSL管理

安裝docker後,docker會自動創建2個發行版:

WSL發行版默認都是安裝在C盤,在%LOCALAPPDATA%/Docker/wsl目錄
docker的運行數據、鏡像文件都存在%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx中

通過 WSL 2 集成,您仍然可以體驗到與 Windows 的無縫集成,但在 WSL 中運行的 Linux 程序也可以執行相同的操作。這對於從事面向 Linux 環境的項目或為 Linux 量身定製的構建過程的開發人員產生了巨大影響。不再需要維護 Linux 和 Windows 構建腳本!例如,Docker 的開發人員現在可以在 Windows 上的 Linux Docker 守護程序上工作,使用與 Linux 計算機上的開發人員相同的工具和腳本集:

註:WSL2 Docker最爽的地方是和宿主機Win10共享network,我們在宿主機Win10使用localhost加埠號就可以訪問Docker中對應container中的服務,十分方便

wsl #啟動
wsl --shutdown #關閉所有正在運行的 Linux 和 WSL 2

啟動 WSL2 之後,會在任務管理器中發現多了一個 虛擬機工作線程

訪問wsl 文件

卸載發行版
有時候某個Linux發行版不再使用,或者是環境被搞壞需要重裝,這時候我們可以卸載掉這個Linux發行版。方法如下。

『柒』 如何在windows下使用linux的shell腳本

如果你是win10系統,可以通過 wsl 即windows subsystem linux子系統來執行。
如果不是win10系統,考慮安裝vmware、virtualpc等虛擬機,安裝linux來執行。
另外也可能考慮使用cygwin來模擬linux系統從而實現腳本執行。

『捌』 win10 virtualbox wsl比較

要完整的linux環境當然virtualbox
wsl2不如VMware、virtualbox
wsl1很好,比如你只想用一下git,或寫個腳本之類,wsl1起碼比cygwin、msys2更快更穩更好用吧。。。(私貨,wsl1下的debian很好)

『玖』 我把下面的腳本保存為sleep.vbs腳本後,運行錯誤: Set wsl = CreateObject("WScript.Shell") wsl.Sleep

Set wsl = CreateObject("WScript.Shell")
WScript.Shell 對象沒有Sleep成員
Sleep 延遲時間
或者
WScript.Sleep 延遲時間

『拾』 伺服器的配置

WebLogic Server Scripting Tool(WLST)是一種命令行腳本工具,BEA公司計劃在WebLogic Server 9.0版本中包含它。現在,該工具及所有的服務包(service packs)都可以從BEA公司的dev2dev站點下載得到,並在WebLogic Server 7.0和8.0下運行。

背景知識
人們一直希望WebLogic Server支持一個腳本解決方案,以允許開發人員和系統管理員可靠地、互動式地對WebLogic Server配置執行簡單和復雜的更改。當前,WebLogic Server 支持三個命令行工具:weblogic.Admin、weblogic.Deployer和WLConfig Ant 任務工具。
這三個工具都需要一個運行的Weblogic Server實例。其中Weblogic.Admin和WLConfig用來修改配置和查詢MBean,weblogic.Deployer則嚴格用於部署應用程序。還有一些工具WebLogic Server不支持,但是用戶很熟悉,例如WLShell、Config2Admin和MBeanExplorer等。
許多用例如果使用一個簡單的腳本工具將會非常容易處理。例如,開發人員和管理員可能需要編寫腳本來配置伺服器,並且想要通過循環和其他流程式控制制結構來為伺服器增加配置元素。類似這樣的用例使人們迫切希望有一種可以讀取用戶腳本並且在WebLogic Server上運行的腳本語言解釋器。
WLST試圖解決一些當前WebLogic Server開發人員和管理員者所面臨的難題。這包括捕捉那些可重復的配置和部署工作,其中配置工作主要是將環境(應用程序和依賴性)准備為大環境的一部分);在生命周期的某一級別或各個級別之間(例如開發和分段級別之間)的用戶間共享復雜的配置更改;以及跨一個拓撲結構的多個節點或者在一些其他范圍,迭代地應用相同的更改。向WebLogic Server增加對用戶定義腳本編程的支持,可以極大地增強可用性,從而提高用戶滿意度。使用WLST,用戶可以定製WebLogic Server,以滿足自己的需要,簡化日常任務,擴展其他功能。通過提供腳本來處理,重復的任務和復雜的過程現在可以被簡化。腳本語言擴展了Java語言,提高了開發速度。

簡介
WLST是WebLogic Server的一個命令行腳本介面。WLST腳本環境基於Java腳本解釋器(Jython)。WLST使您能夠利用所提供的WebLogic Server腳本功能,以及解釋型語言的共同特性。這些特性包括局部變數、條件變數和流程式控制制語句。WebLogic Server開發人員和管理員可以根據Jython語法,擴展WebLogic Server腳本語言來適應自己的需要。
Jython是高級、動態、面向對象語言Python的一個與Java平台無縫集成的實現。Jython是100%純Java的,由於它清晰簡單的語法,使得Jython非常容易學習。Jython的一個主要優點是您可以通過Jython解釋器調用任何Java對象。這就意味著用戶可以重用自己編寫的任何Java代碼或者Java工具。本文我們對Jython不做太多深究。關於Jython的更多信息,請訪問www.jython.org。

WLST 介紹
WLST有兩種版本,離線版和聯機版。離線版用來在用戶沒有連接到任何一個WebLogic Server實例的情況下,通過與域文件和配置模板交互來配置域。該功能類似於WebLogic Server 9.0中反對的配置向導(Configuration Wizard)靜寂模式腳本編程。聯機版用來在用戶連接到一個運行的WebLogic Server實例的情況下,更改配置工件或者監視運行時數據。現在兩個版本作為兩個獨立的JAR包提供下載。在WebLogic Server 9.0發布的時候,這兩個版本將會整合成為一個工具。

操作模式
WLST提供三種操作模式:交互模式、腳本模式和嵌入模式。在交互模式下,用戶在命令提示符下鍵入命令並查看響應。這種模式對於學習腳本工具及其功能是有用的。另外,對於原型設計命令語法以在編譯較大的腳本之前驗證選項,也是有用的。清單1中展示了一個互動式會話的例子。在腳本模式下,用戶可以把許多腳本命令寫在一個文件中,工具將該文件作為程序執行。清單2展示了一個可以在WLST上作為程序執行的簡單腳本。在嵌入模式下,用戶把WLST解釋器嵌入Java應用程序中(參見清單3)。

特性
WebLogic Server實現了JMX 1.0,並且所有子系統(JMS、JDBC、Security等)都被作為相應的MBean並包含屬性,可以按這些屬性來配置、監視和管理子系統。所有的MBean被組織為層次結構,DomainMBean是所有Configuration MBean的父節點,DomainRuntimeMBean是所有Runtime MBean的父節點。用戶可以通過調用不同的WLST命令定位任何MBean。為了簡單,定位大致相當於任何操作系統中的文件表示方法。

定位
按照操作系統的說法,WLST有三個驅動:config、runtime和custom。config驅動管理所有的Configuration MBean(DomainMBean是它們的父節點)。runtime驅動管理所有的Runtime MBean(DomainRuntimeMBean是它們的父節點)。custom驅動管理所有的Custom Mbean(非WebLogic的,而是用戶在WebLogic Server上注冊的)。MBean的類型或者實例就像目錄,用戶可以「cd」或者定位到這些MBean,以查看屬性名和值或操作(即文件)。清單4中的例子展示了一個用戶定位到不同的驅動和MBean然後列出其屬性和值。

配置
通過「configToScript」命令,用戶可以很方便地把資源從一個域移動到另一個域。這個命令以config.xml作參數,並將之轉換為相應的WSLT腳本,該腳本被應用於另一個域,以創建一個類似的配置。這個命令也可以創建一個包含名稱-值對的屬性文件。這些名稱-值對可以被修改,以創建具有不同域名、伺服器名等的配置。清單5演示了一個簡單的例子,其中config.xml被轉換為WSLT腳本。用戶也可以創建新的配置信息,以及檢索和更改存儲在域config.xml文件中或者是使用Template Builder創建的域模板JAR中的現有配置值。清單6展示了一個簡單的例子,用戶讀取一個現有的medrec模板,以創建一個medrec域。

當前託管對象(cmo)
每當用戶定位到一個MBean實例,他就具有通過cmo變數對這個MBean對象的訪問權。這個變數保存MBean的代理對象,所以用戶可以調用該MBean介面支持的所有方法或操作。清單7展示了一個可以使用這個變數的例子。

從WLST調用Java程序
如果您用Java編寫了命令行工具,並且想要在WLST中重用,這是完全可以做到的。例如,我編寫了一個簡單的Java程序,用來查詢MBeanServer並檢索注冊在這台伺服器上的所有MBean,然後列印它們的對象名稱。好處是我不必拋開這些有用的代碼或者用Jython重新進行編寫,只要從WLST中調用這個程序就行了。清單8顯示了這個用Java編寫的程序,以及用戶如何從WLST中調用該程序。

從Ant中調用WLST
許多用戶使用Ant自動完成Weblogic域的配置,如果您願意把您的WLST配置腳本嵌入Ant編譯文件(build file),那麼您也可以這樣做。清單9展示了編譯文件的一個片斷,它調用WLST來運行腳本。

擴展WLST命令
WLST定義了一些常用的命令,但這並不限制用戶去定義自定義的命令或者模塊,然後把它們導入WLST以滿足他們的需要。清單10定義了兩個自定義的命令:「creatServer」和「deleteServer」。它們創建和刪除具有指定名稱的伺服器。這些命令將會對於WLST會話是活躍的。用戶也可以編寫一些定義幾個有用功能並能導入WLST中的模塊。清單11展示的例子中,用戶定義了一個安全類,這個類包括創建用戶、更改密碼等實用功能。

WLST模塊
用戶常常想將WLST與其他Jython模塊一起使用。這只要把WLST模塊寫入一個文件,並把這個文件導入到您的Jython模塊中就可以了。清單12展示了如何編寫WLST模塊並在Jython模塊中使用。有關更多信息,請訪問http://dev2dev.bea.com/codelibrary/code/posample.jsp。

WLST 工作方式
讓我們完成一個簡單的用例,其中展示了使用WLST的端到端場景。假設一個管理員打算為開發人員配置一個域。本質上,他會從頭開始創建一個域(一個admin 伺服器),啟動伺服器,配置託管伺服器,並群集和部署應用程序。他也會通過一個簡單的腳本監視這些伺服器的狀況。步驟如下:
根據模板創建一個簡單的域(一個admin伺服器),並啟動伺服器(見清單13)。
配置兩個託管伺服器和一個群集。在連接到正在運行的admin伺服器之後,添加這兩個託管伺服器到這個集群,並啟動該群集。另外,部署一個簡單的應用程序到該群集(見清單14)。
使用一個簡單的監視腳本,監視伺服器的狀態(見清單15)。
前瞻
WLST可以在BEA公司的dev2dev站點上下載。這個工具可以與WebLogic Server 7.0和8.1(以及所有的服務包)一起工作。BEA公司的Management新聞組提供對這個工具的支持。這個工具可以在明年發布的WebLogic Server 9.0中正式得到並受到支持。BEA公司也打算在WebLogic Server 7.1和8.1兩個版本中直接支持WLST。

一些您所期待的WLST的新特性:

通過JSR 88 API進行的部署,包括通過WLST進行的部署計劃的編輯。
通過WLST對所有診斷框架(WebLogic Server 9.0中新引入的)工件的訪問。
離線版WLST(現在可以單獨下載)與現有聯機版WLST的合並。
對新的 (WebLogic Server 9.0) 管理API的訪問。
支持WebLogic Server 9.0中所有的新節點管理器特性。
結束語
在這篇文章中,我介紹了一個新工具——WLST,它使開發人員和系統管理員能更方便地管理WebLogic Server(聯機或者離線都可以),並能對WebLogic Server執行配置更改。WLST有三種使用模式:交互模式、腳本模式和嵌入模式。它提供了一個簡單的方法訪問WebLogic Server中的MBean,並且提供了一些方便的命令用於監視WebLogic Server實例的生命周期。WLST是用Jython(Jython是流行的Python語言的純Java實現)語言編寫的。

參考資料

Online WLST Tool: http://dev2dev.bea.com/codelibrary/code/wlst.jsp
Offline WLST Tool: http://dev2dev.bea.com/codelibrary/code/wlst_offline.jsp
Jython's Main Web Site: www.jython.org
PO Sample: http://dev2dev.bea.com/codelibrary/code/posample.jsp

熱點內容
翻杯子演算法 發布:2025-03-16 03:34:31 瀏覽:602
ftp後台密碼怎麼設置 發布:2025-03-16 03:33:08 瀏覽:360
阿里雲伺服器的sdk是免費的嗎 發布:2025-03-16 03:33:04 瀏覽:7
卸載linux軟體 發布:2025-03-16 03:19:07 瀏覽:808
太平天國迅雷下載ftp 發布:2025-03-16 03:13:19 瀏覽:64
伺服器硬碟溫度怎麼調節 發布:2025-03-16 03:11:47 瀏覽:74
netcore編譯前執行代碼 發布:2025-03-16 03:05:17 瀏覽:475
飢荒聯機版伺服器搭建程序 發布:2025-03-16 02:55:18 瀏覽:684
win7如何訪問共享 發布:2025-03-16 02:55:14 瀏覽:37
centosphp升級 發布:2025-03-16 02:42:04 瀏覽:52