shell執行php
Ⅰ 如何讓php執行shell
php給我們提供了system(),exec(),passthru()這三個函數來調用外部的命令.
雖然這三個命令都能執行linux系統的shell命令,但是其實他們是有區別的:
system() 輸出並返回最後一行shell結果。
exec() 不輸出結果,返回最後一行shell結果,所有結果可以保存到一個返回的數組裡面。
passthru() 只調用命令,把命令的運行結果原樣地直接輸出到標准輸出設備上。
相同點:都可以獲得命令執行的狀態碼
例子:system("/usr/local/bin/webalizer/webalizer");
Ⅱ LINUX+NGINX下的PHP shell_exec()函數執行linux命令 2019-08-08
LINUX+NGINX下的PHP shell_exec()函數執行linux命令
環境說明
手燃衫頭有一台linux的測試伺服器,最近因為業務需要,需要通過php訪問另一台伺服器去執行某些命令。
由於另一台伺服器已經對這台伺服器開了私鑰,所以在終端上是可以直接執行命令而不需要輸入密碼的。
問題
PHP無法使用exec命令,沒有任何返回值。
解決途徑
1.php.ini的配置有問題。
由於php是7.0以上的版本,取消了安全模式,所以考慮PHP.ini文件配置。
打開php配置文件,裡面有一行disabel_function的值,此處記錄了禁止運行的函數,在裡面講exec和shell_exec,system等函數刪除。
2.許可權問題
修改以後PHP可以運行部分命令了,但是部分外部程序和命令仍然不能運行。使用sudo返回失敗。
於是運行「whoami」查看,環境下php-frm的運行角色鎮段唯是www。
於是修改sudoers文件。
vi /etc/sudoers
將www添加到
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
下面:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
www ALL=(ALL) NOPASSWD:ALL
然後找到Default requiretty這一行,把他注釋掉
# Default requiretty
ps:意思就是sudo默認需要tty終端,注釋掉就可以在後台執行了.
重啟nginx和php-fpm
service nginx restart
service php-fpm restart
這樣,PHP就可以在需要御培執行外部命令的時候使用sudo利用root身份執行命令,而不會報錯或者執行失敗了!
Ⅲ unexpected'echo'(T_ECHO)inphpshellcode
在 PHP Shell 代碼中遇到「unexpected ‘echo’ 」錯誤的原因主要是語法錯誤,具體來說是缺少分號。
錯誤原因:在 PHP Shell中執行代碼時,如果語句末尾缺少分號,PHP 解釋器會認為語句未完整結束。這可能導致解釋器錯誤地將後續內容視為當前語句的一部分,從而引發語法錯誤。
錯誤示例:
- 在第一次嘗試執行 echo 2+5; 時,由於前面可能缺少分號,PHP 解釋器報告了「unexpected ‘echo’ 」錯誤。
- 實際上,PHP 解釋器可能將 echo 2+5 和後續的 echo 2+5; 視為一個整體,導致語法錯誤。
正確做法:
- 確保每條語句的末尾都加上分號。
- 在 PHP Shell 中,每次輸入新語句前,確保前一個語句已經正確結束。
重要性:
- 遵循正確的語法是 PHP 編程的基礎。
- 即使是細微的疏漏,如缺少分號,也可能導致程序無法按預期運行或產生錯誤。
因此,在進行 PHP 編程時,請務必仔細檢查語法,以避免此類錯誤。
Ⅳ linux下命令 lynx來讀取本地php寫的腳本,寫入計劃任務中 每小時執行一次怎麼寫求大俠指導!
這個命令是瀏覽網頁用的啊,定時執行程序Linux不是沒有,就像windows的計劃任務一樣,linux更靈活。創建一個123.shell文件即shell腳本,內容如下
#shell 隔一小時執行php腳本 ->注釋
#用你php安裝文件下的bin里的php編譯工具 執行.php文件
/lamp/php-5.2.6/lib/bin/php /phpfilepath
然後保存在例如/var/time ,再輸入命令#crontab -l 這個命令可以列出定時執行任務文件的列表,每一項對應一個任務,回到根目錄,用#cat etc/crontab 顯示root用戶的計劃列表,#crontab -e 來添加一個任務,每小時的第20分鍾執行一次該任務,按「i」 進入編輯狀態,在末位一行加入一項:
sh 20 * * * * /var/time/123.shell
上面這條計劃可以解釋為在每月每天每日每小時的第20分鍾執行 /var/time/123.shell腳本
其實很容易。。
Ⅳ PHP遠程代碼執行漏洞復現(CVE-2019-11043)【反彈shell成功】
CVE-2019-11043是遠程代碼執行漏洞,影響特定配置的Nginx + PHP-FPM伺服器。攻擊者通過發送換行符破壞fastcgi_split_path_info指令的Regexp,導致PATH_INFO為空,從而觸發漏洞。此漏洞在Nginx的特定配置下生效,主要影響部分PHP版本和PHP 5.6。
利用方法是使用p牛的docker環境復現漏洞。首先啟動環境並訪問默認頁面,如127.0.0.1:8080/index.php。接下來,安裝docker和golang環境,搭建漏洞環境。在執行過程中,注意部分PHP-FPM子進程可能受到污染,嘗試多次以執行命令。
嘗試使用反彈shell,但發現本地未安裝nc命令。因此,為docker容器安裝nc。容器內包含兩個docker鏡像:nginx和php。在nginx鏡像中嘗試安裝nc失敗後,切換到php鏡像,成功安裝並使用nc連接本地埠,實現反彈shell。
為優化速度,使用鏡像加速器,如阿里雲或中科院的加速服務。配置docker文件後,重啟docker,顯著提升運行速度。對於基於HTTP和SOCKS5協議的訪問,需要憑據支持,而無需憑據的訪問則直接實現。
最後,分享團隊關於CTF靶場、內網滲透、APT方面的技術干貨,致力於提供實用的干貨分享,服務於紅藍隊攻防領域。團隊已出版《Web安全攻防:滲透測試實戰指南》,預計後續出版更多書籍,如《內網安全攻防:滲透測試實戰指南》、《CTF競賽秘笈-入門篇》以及Python滲透測試、JAVA代碼審計和APT方面的書籍。官方網站ms08067.com提供更多信息與資源。