[英]Passing Commands into a Binary that runs a shell using a bash script
bash腳本的新手,所以有一個小問題,並且想知道是否有人可以解決我遇到的麻煩,我有一個簡單的C文件,稱為test,它創建了一個shell,如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main()
{
execl("/bin/sh", "/bin/sh", (void *) NULL);
perror("exec");
return 1;
}
我想創建一個bash腳本來執行此文件,該文件我已經在下面完成了,但是在執行時,我希望將命令發送到該二進制文件創建的外殼-這是否可能使我無濟於事:
#!bin/bash
/var/testfolder/test; # execute the test c file to spawn the shell
??? #don't know how to pass commands to the new shell created :(
我想您編譯的C二進制文件具有SETUID權限嗎? 使用二進制文件和參數,您可以使用以下二進制權限執行任何這樣的外殼程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main( int argc, char ** argv )
{
execv("/bin/sh", argv );
perror("exec");
return 1;
}
輸出測試腳本以輸出參數和當前過程:
$ ./test_execv ./test.sh foo bar
Executing $0: ./test.sh
Args $*: foo bar
process:
PID TTY TIME CMD
3300 pts/1 00:00:08 bash
3498 pts/1 00:00:00 sh
3499 pts/1 00:00:00 ps
安全問題
如果您可以對根shell執行腳本,那么任何人都可以這樣做。 我認為您只需要添加一些具有sudo權限的腳本(僅需要的腳本)即可從所需帳戶作為root用戶運行。
嘗試這個:
#!/bin/bash
/var/testfolder/test <<EOF
cmdtopass1
cmdtopass2
cmdtopass3
EOF
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.