導航:首頁 > 編程系統 > linux命令執行創建webshell

linux命令執行創建webshell

發布時間:2023-04-05 13:47:07

linux反彈shell知識匯總

shell是滲透中常用的名詞,像getshell,webshell,反彈shell等等,都和shell相關。
網路解釋的shell:
在計算機科學中,Shell俗稱殼(用來區別於核),是指「為使用者提供操作界面」的軟體(命令解析器)。它類似於DOS下的command.com和後來的cmd.exe。它接收用戶命令,然後調用相應的應用程序
簡單說用戶通過殼訪問操作系統內核的服務,也就是由殼到內核,執行系統命令。
getshell:獲取到目標的命令執行許可權
webshell:指網站後門,通過web服務進行命令執行
反彈shell:把命令行的輸入輸出轉移到其它主機

1、webshell下執行命令不交互,為了方便提權或其它操作必須要反彈shell。
2、反彈shell相當於新增一個後門,當webshell被發現刪除後許可權不會丟失。

使用whereis命令去確定目標支持的反彈方法。

bash反彈是實戰中用的最多的方法

把命令拆開分析:
1、bash -i代表在本地打開一個bash
2、/dev/tcp/是Linux中的一個特殊設備,打開這個文件就相當於發出了一個socket調用,建立一個socket連接
3、>&後面跟上/dev/tcp/ip/port這個文件代表將標准輸出和標准錯誤輸出重定向到這個文件,也就是傳遞到遠程vps
4、遠程vps開啟對應的埠去監聽,就會接收到這個bash的標准輸出和標准錯誤輸出。

需要目標主機安裝了nc

使用其他版本的 nc

配合命名管道進行反彈:

首先使用socket與遠程建立起連接,接下來使用到了os庫的p2方法將標准輸入、標准輸出、標准錯誤輸出重定向到遠程,p2這個方法有兩個參數,分別為文件描述符fd1和fd2,當fd2參數存在時,就關閉fd2,然後將fd1代表的那個文件強行復制給fd2,在這里可以把fd1和fd2看作是C語言里的指針,將fd1賦值給fd2,就相當於將fd2指向於s.fileno(),fileno()返回的是一個文件描述符,在這里也就是建立socket連接返回的文件描述符,列印出來數值為3

0代表標准輸入、1代表標准輸出、2代表標准錯誤輸出、3代表重定向到遠程
接下來使用os的subprocess在本地開啟一個子進程,傳入參數「-i」使bash以交互模式啟動,標准輸入、標准輸出、標准錯誤輸出又被重定向到了遠程,這樣的話就可以在遠程執行輸入命令了。

需要php關閉safe_mode選項,才可以使用exec函數。
使用php的exec函數執行方法1反彈shell的命令

使用php的fsockopen去反彈shell

exec反彈

perl反彈

ruby反彈

lua反彈

通過上述命令反彈shell得到的shell並不能稱為完全交互的shell,通常稱之為'啞'shell。
通常存在以下缺點

因此有必要去獲取一個完全交互的shell。
1、在啞 shell 中執行python,使用pty模塊,創建一個原生的終端,命令如下:

運行完後
2、鍵入 Ctrl-Z暫停任務,切回到 VPS 的命令行中;在 VPS 中執行:

3、在啞 shell 中執行,得到一個完全交互的shell,支持命令補全、歷史命令查看、語法高亮、vim編輯等功能。

部分防護設備會對內外網傳輸流量進行審查,反彈shell執行命令都是以明文進行傳輸的,很容易被查殺。
因此需要將原始流量使用 openssl 加密,繞過流量審計設備。

1、首先vps上生成SSL證書的公鑰/私鑰對,信息懶得填,一直回車即可。

2、vps使用 OpenSSL 監聽一個埠

3、目標主機執行反彈加密shell

反彈成功,成功接收到ssl流量加密的shell。

http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet
https://www.sohu.com/a/161766202_709042
https://www.freebuf.com/vuls/211847.html
https://www.freebuf.com/articles/system/178150.html
https://zhuanlan.hu.com/p/138393396
https://www.cnblogs.com/Dubing-ydfc/p/11749241.html

㈡ linux新建文件命令是什麼

1、創建文件夾


mkdir -p 文件夾名


p 確保目錄名稱存在,不存在的就建一個。


2、創建文件


如:touch a.txt

拓展資料

Linux命令-創建文件

1、可以使用cat創建一個新的文件

命令:cat>>filename

使用cat創建文件時,以系統默認的文件屬性作為新文件的屬性,並接受鍵盤輸入作為文件的內容。輸入結束時按Ctrl+d退出並保存文件。

可以看到newfile與tfile2的修改時間屬性相同。

㈢ Linux主機用webshell怎麼提權,有地址...

以前見linux主機基本跳過.這回 看到 .jp域名,所以想邪惡下..會的大俠 不妨說下 給個教程~~

㈣ 在linux平台怎樣進行網頁web開發

你可以用node, nginx, apache等等做伺服器,孝肆前端調試就用瀏覽器。
linux下做java開發需要搭建java開發環境:jdk是 Java 語言的軟體巧閉轎開發工具包,Tomcat是Java環境下WEB伺服器, Eclipse 是一個開放源代碼的、基於Java的可擴展開發平台;這三個工具,方法如下:態和
1、JDK的安裝
#執行下面命令安裝JDK(首先創建/opt/java目錄)
tar -xvf jdk-7u9-linux-i586.tar.gz -C /opt/java
ln -s /opt/java/jdk1.7.0_09 /opt/java/jdk //創建一個鏈接
vi /etc/frofile //設置環境變數
export JAVA_HOME=/opt/java/jdk
exprot PATH=$JAVA_HOME/bin:$PATH
#相當於重新設置PATH=JAVA_HOME/bin+PATH
#配置好之後要用命令source /etc/profile
#執行java -version 命令測試一下jdk是否安裝成功
2、tomcat的安裝

#解壓安裝
tar -xvf apache-tomcat-6.0.10.tar.gz -C /opt/tomcat/
ln -s /opt/tomcat/apache-tomcat-6.0.10 /opt/tomcat/tomcat6.0 //創建一個鏈接
cd /opt/tomcat/tomcat6.0/bin
./startup.sh
#打開瀏覽器測試一下,輸入http:localhost:8080,看有沒有貓標識的頁面出來,有的話就說明安裝成功了。
3、eclipse的安裝

gunzip eclipse-java-juno-SR2-linux-gtk.tar.gz
tar -xvf eclipse-java-juno-SR2-linux-gtk.tar -C /opt
#然後去圖形界面進入/opt/eclipse目錄,運行eclipse,就可以打開eclipse界面了。

㈤ 【Linux】實現一個簡單的shell命令解釋器

姓名:羅學元       學號:21181214375     學院:廣州研究院

【嵌牛導讀】shell命令解釋器該包含哪些部分

【嵌牛鼻子】shell命令解釋器該包含哪些部分

【嵌牛提問】shell命令解釋器該包含哪些部分

我們所做的這個簡單的shell命令解釋器可以實現簡單的常用的基本命令,如ls、pwd、cd、cd - 、cd ~ 等

根據簡單命令的定義,它的第一個參數是要執行的命令,後面的參數作為該命令的參數。

要執行的命令有兩種情況:

一種是外部命令: 也就是對應著磁碟上的某個程序,例如 pwd、ls等等。對於這種外部命令,我們首先要到指定的路徑下找到它,然後再執行它。

另一種是內部命令:內部命令並不對應磁碟上的程序,例如cd等等,它需要shell自己來決定該如何執行。例如對 cd 命令,shell就應該根據它後面的參數改變當前路徑。

對於外部命令,需哪指要創建一個子進程來執行它,本質就是fork+exec

#include <stdio.h>

#include <stdlib.h>

#include <assert.h>

#include <string.h>

#include <pwd.h>

#include <sys/utsname.h>

#include <sys/types.h>

#include <unistd.h>

#define MAX 10

#define STRLEN 128

#define PATH "/bin/" //系統bin路徑位置

char OLDPWD[STRLEN]={0}; //記錄上一次的命令,為了cd -這條命令

//================================================================================

//每次敲回車輸出當前所在用戶信息

//普通用戶和root用戶的提示符區別

void Printf_Info()

{

char flag='$';

struct passwd *pw=getpwuid(getuid());

assert(pw!=NULL);

//uid為0則為root用戶

if(pw->pw_uid==0)

{

flag='#';

}

struct utsname hostname; //主機名

uname(&hostname);

char node[STRLEN]={0};

strcpy(node,hostname.nodename); //獲取網路上的名稱

char* name=strtok(node,".");

//獲取絕對路徑

char path[STRLEN]={0};

getcwd(path,STRLEN-1);

char*p=path+strlen(path); //p指向絕對路徑的末尾

while(*p!='/')

{

p--;

}

//p指向路徑末尾往前大野的第一個『/』位置處

if(strlen(path)!=1)

{

p++; //++前,p->'/'

}

if(strcmp(path,pw->pw_dir)==0)

{

p="~";

}

printf("\033[;32mMyBash[%s@%s %s]%c\033[0m",pw->pw_name,name,p,flag);

//  \033[47;31mThis is a color test\033[0m  設置列印滾緩喊結果的顏色

    fflush(stdout);

}

//================================================================================

void Mycd(char*path)

{

//第一個字元串為cd而第二為空 如:cd 則結束本輪循環

if(path==NULL)

{

exit(0);

}

//cd ~ 回到用戶根目錄

if(strcmp(path,"~")==0)

    {

        struct passwd*pw=getpwuid(getuid());

        path=pw->pw_dir;

    }

    //cd - 回到上一次的位置

    if(strcmp(path,"-")==0) 

    {

      //若是第一次輸入命令,則cd -命令不存在!

        if(strlen(OLDPWD)==0)

        {

            printf("\033[;31mMyBash:cd:OLDPWD not set\n\033[0m");

            return ;

        }

        //否則把上一次的命令給path

        path=OLDPWD;

    }

    //getpwd記錄當前工作目錄的絕對路徑

    char oldpwd[STRLEN]={0};

    getcwd(oldpwd,STRLEN-1);

if(-1==chdir(path))//反之則不是空,則通過chdir系統調用進入到該目錄中

    {

        char err[128]="\033[;31mMybash: cd \033[0m";

        strcat(err,path);

        perror(err);

    }

    //每次執行完cd命令後,把工作路徑賦給OLDPWD

    strcpy(OLDPWD,oldpwd);

}

//================================================================================

//命令分割函數

void Strtok_cmd(char*buff,char*myargv[])

{

char *s=strtok(buff," "); //分割輸入的字元串

if(s==NULL) //如果s為空,則進入下一輪循環

{

exit(0);

}

myargv[0]=s; //把分割出來的第一個字元串放在myargv[0]中

int i=1;

while((s=strtok(NULL,""))!=NULL) //把後續分割出來的字元串依次存放在數組中

{

myargv[i++]=s;

}

}

//===============================================================

int main()

{

while(1)

{

char buff[128]={0};

Printf_Info();

//從終端獲取命令存入buff中

fgets(buff,128,stdin);

buff[strlen(buff)-1]=0;

char *myargv[MAX]={0};

//分割輸入的命令

Strtok_cmd(buff,myargv);

//如果輸入exit則退出循環

if(strcmp(myargv[0],"exit")==0)

{

exit(0);

}

//如果分割出來的第一個字元串為cd

else if(strcmp(myargv[0],"cd")==0)

{

Mycd(myargv[1]);

continue;

}

//若是系統調用,直接替換fork+exec

pid_t pid=fork();

assert(pid!=-1);

if(pid==0)

{

char path[256]={0};

if(strncmp(myargv[0],"./",2)!=0 && strncmp(myargv[0],"/",1)!=0)

{

//先把路徑放入path中

strcpy(path,PATH);

}

//進行命令拼接,路徑+名稱

strcat(path,myargv[0]);

//替換進程 例如:/bin/ls

execv(path,myargv);

perror("\033[;31mexecv error\033[0m");

}

//處理僵死進程

else

{

wait(NULL);

}

}

}

運行結果如下 :

異常處理如下:

若是第一次運行程序,則不能使用cd - 命令,因為此時還沒有歷史路徑

若進入一個不存在的目錄則會報錯,沒有這個文件或目錄

若直接輸入一個不存在的無法識別的命令,也會報錯。

㈥ linux命令如何新建一個文件

1、終端下鍵入:touch加文件名,這樣就創建了一個文件。

3、然後就可以隨意編輯這個文件了。

(6)linux命令執行創建webshell擴展閱讀

1、Linux常用的命令:arch 顯示機器的處理器架構,uname -r 顯示正在使用的內核版本 。

2、lspci -tv 羅列 PCI 設備 ,lsusb -tv 顯示 USB 設備 ,date 顯示系統日期 。

3、shutdown -h now 關閉系統。

參考資料

Linux中國開源社區-Linux cp 命令的15個示例



㈦ linux 怎麼進入shell編程模式

1、連接上相應的linux主機,進入到等待輸入shell指令的linux命令行狀態下。

㈧ 在linux中如何在當前目錄中創建一個到var目錄中的軟連接

1、首先,連接相應橘前linux主機,進入到linux命令行狀態下,山昌等待輸入shell指令。

㈨ 如何查找Linux伺服器上的webShell後門

1、檢查系統密碼文件
首先從明顯的入手,查看一下passwd文件,ls –l /etc/passwd查看文件修改的日期。
awk –F: 『length($2)==0 {print $1}』 /etc/shadow
2、查看一下進程,看看有沒有奇怪的進程
重點查看進程:ps –aef | grep inetd
inetd是UNIX系統的守護進程,正常的inetd的pid都比較靠前,如果你看到輸出了一個類似inetd –s /tmp/.xxx之類的進程,著重看inetd –s後面的內容。在正常情況下,LINUX系統中的inetd服務後面是沒有-s參數的,當然也沒有用inetd去啟動某個文件;而solaris系統中也僅僅是inetd –s,同樣沒有用inetd去啟動某個特定的文件;如果你使用ps命令看到inetd啟動了某個文件,而你自己又沒有用inetd啟動這個文件,那就說明已經有人入侵了你的系統,並且以root許可權起了一個簡單的後門。
輸入ps –aef 查看輸出信息,尤其注意有沒有以./xxx開頭的進程。一旦發現異樣的進程,經檢查為入侵者留下的後門程序,立即運行kill –9 pid 開殺死該進程,然後再運行ps –aef查看該進程是否被殺死;一旦此類進程出現殺死以後又重新啟動的現象,則證明系統被人放置了自動啟動程序的腳本。這個時候要進行仔細查找:find / -name 程序名 –print,假設系統真的被入侵者放置了後門,根據找到的程序所在的目錄,會找到很多有趣的東東,
接下來根據找到入侵者在伺服器上的文件目錄,一步一步進行追蹤。
3、檢查系統守護進程
檢查/etc/inetd.conf文件,輸入:cat /etc/inetd.conf | grep –v 「^#」,輸出的信息就是你這台機器所開啟的遠程服務。
一般入侵者可以通過直接替換in.xxx程序來創建一個後門,比如用/bin/sh 替換掉in.telnetd,然後重新啟動inetd服務,那麼telnet到伺服器上的所有用戶將不用輸入用戶名和密碼而直接獲得一個rootshell。
4、檢查網路連接和監聽埠
輸入netstat -an,列出本機所有的連接和監聽的埠,查看有沒有非法連接。
輸入netstat –rn,查看本機的路由、網關設置是否正確。
輸入 ifconfig –a,查看網卡設置。
5、檢查系統日誌
命令last | more查看在正常情況下登錄到本機的所有用戶的歷史記錄。但last命令依賴於syslog進程,這已經成為入侵者攻擊的重要目標。入侵者通常會停止系統的syslog,查看系統syslog進程的情況,判斷syslog上次啟動的時間是否正常,因為syslog是以root身份執行的,如果發現syslog被非法動過,那說明有重大的入侵事件。
在linux下輸入ls –al /var/log
檢查wtmp utmp,包括messgae等文件的完整性和修改時間是否正常,這也是手工擦除入侵痕跡的一種方法。
6、檢查系統中的core文件
通過發送畸形請求來攻擊伺服器的某一服務來入侵系統是一種常規的入侵方法,典型的RPC攻擊就是通過這種方式。這種方式有一定的成功率,也就是說它並不能100%保證成功入侵系統,而且通常會在伺服器相應目錄下產生core文件,全局查找系統中的core文件,輸入find / -name core –exec ls –l {} \; 依據core所在的目錄、查詢core文件來判斷是否有入侵行為。
7、檢查系統文件完整性
檢查文件的完整性有多種方法,通常我們通過輸入ls –l 文件名來查詢和比較文件,這種方法雖然簡單,但還是有一定的實用性。但是如果ls文件都已經被替換了就比較麻煩。在LINUX下可以用rpm –V `rpm –qf 文件名` 來查詢,查詢的結果是否正常來判斷文件是否完整。

閱讀全文

與linux命令執行創建webshell相關的資料

熱點內容
maya粒子表達式教程 瀏覽:84
抖音小視頻如何掛app 瀏覽:283
cad怎麼設置替補文件 瀏覽:790
win10啟動文件是空的 瀏覽:397
jk網站有哪些 瀏覽:134
學編程和3d哪個更好 瀏覽:932
win10移動硬碟文件無法打開 瀏覽:385
文件名是亂碼還刪不掉 瀏覽:643
蘋果鍵盤怎麼打開任務管理器 瀏覽:437
手機桌面文件名字大全 瀏覽:334
tplink默認無線密碼是多少 瀏覽:33
ipaddgm文件 瀏覽:99
lua語言編程用哪個平台 瀏覽:272
政采雲如何導出pdf投標文件 瀏覽:529
php獲取postjson數據 瀏覽:551
javatimetask 瀏覽:16
編程的話要什麼證件 瀏覽:94
錢脈通微信多開 瀏覽:878
中學生學編程哪個培訓機構好 瀏覽:852
榮耀路由TV設置文件共享錯誤 瀏覽:525

友情鏈接