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提供更多信息与资源。