代码审计-php命令执行

作者:小刚
一位苦于信息安全的萌新小白帽,记得关注给个赞,谢谢
本实验仅用于信息防御教学,切勿用于其它用途

前言

近期在学习php的代码审计,推一下这本书啊代码审计 企业级Web代码安全架构_尹毅著
前篇文章介绍过代码执行了,现在写写命令执行。
命令执行就是执行命令,执行win和Linux的系统命令
php中有好几个可以执行系统命令的函数,我大体分了两类(有返回结果和无返回结果)

返回执行结果

直接传入命令并函数返回执行结果

system($_GET['cmd']);
//直接回显结果打印输出
echo exec($_GET['cmd']);
//执行参数指定的命令
passthru($_GET['cmd']);
//执行外部程序并显示原始输出
echo shell_exec($_GET['cmd']);
//通过shell环境执行命令。并将完整的输出以字符串方式返回
echo `$_GET['cmd']`;
//反引号也执行命令,原理是调用shell_exec()

无返回执行结果

不返回执行结果,返回文件指针,但是命令执行了

popen($_GET['cmd'],'w');//r,w代表读写
popen('whoami >> D:/2.txt','r');//将信息写入文件
proc_open($_GET['cmd']);

命令执行小技巧

1.在命令执行过程中,我们会遇到空格被删除或者替换的情况

在Win中:用=代替空格

$cmd="type=../1.txt";
system($cmd);

linux中:用<代替空格

$cmd="cat<../2.txt";
system($cmd);

2.在命令执行过程中,我们会进行多条命令执行

在Win中:
连续运算符 &,前面执行正常或者错误,后面都能执行。
&& 前面执行错误,后面就不能执行命令。

$cmd="ipconfig&whoami";
system($cmd);

在Linux中:
分号; 是连续运算符,连接执行的语句

$cmd="ifconfig;whoami;";
system($cmd);

防范措施

php有自带的命令防注入函数escapeshellcmd()escapshellarg()
escapshellcmd()过滤整条命令
escapshellarg()是保证传入命令执行函数里的参数以字符串参数形式存在
注意escapeshellcmd() 和 escapeshellarg 一起使用,会造成特殊字符逃逸。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: index.php远程代码执行漏洞是一种安全漏洞,攻击者可以通过该漏洞在受影响的服务器上执行恶意代码。当服务器上的index.php文件存在漏洞时,攻击者可以通过发送特制的请求来注入并执行任意代码,进而获取对服务器的控制权限。 这种漏洞通常是由于代码编写不当、输入验证不完善或者服务器配置不正确造成的。攻击者可以利用该漏洞执行各种恶意活动,包括但不限于:获取敏感信息、篡改网页内容、远程控制服务器、搭建僵尸网络等。 为了保护服务器免受index.php远程代码执行漏洞的影响,我们可以采取以下措施: 1. 及时更新软件版本:经常更新并升级服务器上的软件和应用程序,确保软件版本是最新的。更新包含了对已知漏洞的修复,可以防止攻击者利用该漏洞。 2. 输入验证和过滤:在构建应用程序时,始终对用户输入进行验证和过滤,确保用户提供的数据符合预期。避免将用户输入直接传递到执行命令的函数中,使用安全的输入验证方法来防止代码注入。 3. 加强服务器安全配置:设置适当的权限和访问控制规则,限制对敏感文件和目录的访问。关闭不必要的服务和端口,以减少攻击面。 4. 使用 Web 应用程序防火墙(WAF):WAF 可以检测和拦截恶意请求,阻止攻击者利用远程代码执行漏洞。配置 WAF 来监视和过滤异常和危险的请求。 5. 安全审计和日志监控:定期审计服务器上的代码,查找漏洞并进行修复。记录和监视服务器日志,及时发现异常行为和潜在攻击。 综上所述,为了防止index.php远程代码执行漏洞的利用,我们需要采取多种安全措施来保护服务器和应用程序的安全。及时更新软件、验证输入、加强服务器配置、使用 WAF 和进行安全审计是有效防范该漏洞的重要措施。 ### 回答2: index.php远程代码执行漏洞是一种常见的网络安全漏洞,通常出现在Web应用程序开发中。这种漏洞允许攻击者通过发送恶意的HTTP请求,将恶意代码注入到index.php文件中,以执行任意的系统命令或者暴露敏感信息。 这种漏洞的原因通常是由于开发人员未对用户输入进行充分的过滤和验证,导致攻击者可以通过构造特定的恶意输入来绕过正常的输入验证和过滤机制。攻击者可以通过在URL的参数中插入特定的命令或代码,使服务器执行这些命令或代码,从而实现远程代码执行的目的。 为了防止index.php远程代码执行漏洞的发生,开发人员应该采取以下措施: 1. 输入验证和过滤:对于所有用户输入的数据,都应该进行充分的验证和过滤,确保只接受符合预期格式和内容的数据。 2. 对用户输入进行编码处理:在将用户输入显示到页面上之前,应该对其进行适当的编码,以防止恶意代码的执行。 3. 限制文件系统和数据库的访问权限:在服务器配置中,应该限制PHP文件的访问权限,并且将数据库的访问权限限制在必要的最低级别。 4. 及时更新和修补:及时安装并更新Web应用程序的补丁和安全更新,以防止已知的漏洞被利用。 5. 强化服务器端的安全策略:在服务器端,可以使用防火墙、入侵检测和防护系统来加强安全策略,对恶意访问进行识别和阻止。 综上所述,通过加强输入验证,编码处理和限制访问权限等措施,可以有效防止index.php远程代码执行漏洞的发生。同时,及时更新和修补漏洞,加强服务器端的安全策略也是必要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值