远程函数执行简单的

admin 2023年12月12日02:55:52评论33 views字数 1797阅读5分59秒阅读模式

#############################

免责声明:本文仅作收藏学习之用,亦希望大家以遵守《网络安全法》相关法律为前提学习,切勿用于非法犯罪活动,对于恶意使用造成的损失,和本人及作者无关。

##############################

远程函数执行简单的

PHP命令注入攻击漏洞是PHP应用程序中常见的脚本漏洞之一,国内著名的Web开发框架thinkPHP;Web应用程序Discuz!、DedeCMS、PHPcms、帝国cms等都曾经存在过该类型高危漏洞。

0x2.1 实验1:不安全的功能实现方式

远程函数执行简单的

这里这个和DVWA的远程命令执行差不多 我们看看源码

<?php
// IP(域名)
$host = isset($_GET['url']) ? $_GET['url'] : '';
// 判断$host是否为空
if(empty($host)){
$result
= '';
$target
= '';
}
else {
// 获取$host值
$target = $host;

// 判断当前系统类型,执行对应函数
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
// Windows系统
$cmd = shell_exec( 'ping ' . $target ); // 未过滤函数
// $cmd = shell_exec('ping '. escapeshellcmd($target)); // escapshellcmd过滤
} else {
// *nix系统
$cmd = shell_exec( 'ping -c 4 ' . $target ); // 未过滤函数
// $cmd = shell_exec('ping -c 4 '. escapeshellcmd($target)); // escapshellcmd过滤
}

// 格式化输出结果,将$cmd字符串中的“n”替换为“<br>”
$result = str_replace("n","<br>",$cmd);
}
?>


可以看见 ping功能直接使用了shell_exec来执行 且未对输入参数进行任何的过滤,那么远程代码执行就这样产生了

我们执行看看  (这里要注意 cmd的分隔符 那些是第一个执行成功第二个执行 ,第一个执行失败第二个也执行)

|ls


远程函数执行简单的

远程函数执行简单的

证实,只要是Linux的shell命令,都可以通过该payload的构造出想要去执行的shell命令,等同于给你一台可以操作的Linux服务器,你想怎么操作就怎么操作!这就是远程函数执行命令的高危漏洞

0x2.2 漏洞产生与攻击原理分析

漏洞的产生:
1、需求开发时候使用了shell_exec()危险函数来快速实现功能;
2、即使使用了危险函数也没有做过滤处理;
3、没有绕开危险函数来实现业务需求相同的功能。

攻击的原理:

shell_exec()

通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。也就是说, PHP先运行一个shell环境, 然后让shell进程运行你的命令, 并且把所有输出已字符串形式返回, 如果程序执行有错误或者程序没有任何输出, 则返回null。

    //函数用法
shell_exec ( string $cmd ) : string


命令执行顺序:
payload 顺序执行

  1. baidu.com|ls|di

|命令链接符的执行顺序命令1、命令2、命令3;所以最终显示最后执行的命令3dir

payload 批量执行

  1. baidu.com;ls;di

;命令链接符是命令1、命令2、命令3依次一起执行,所以显示了全部命令的执行结果。

0x2.3 总结

为什么构造payload时候用到|;字符呢?
|;是命令的链接符,同时&可以用做命令链接符,但&与别的链接符不同的是,它不能直接放在url上访问执行,只能通过提交get/post表单;如果需要直接放在url上访问,那么需要有url编码%26,不然会被当成参数分隔符;

另外&&ll也可以使用,但他们运行原理又不是很相近。

所有的命令分割符如何构造payload呢?
在实验过程中我们我们得知在url链接上可以使用|;进行构造payload;其实他们也可以和&一样,用url编码进行访问。另外当我们在get表单提交数据的时候,提交的参数会被转成url编码。
| url编码 %7C
; url编码 %3B
& url编码 %26
空格url编码 %20
符号与url编码在构建payload时候很重要,建议大家在实际实验过程中去理解。


原文始发于微信公众号(菜鸟小新):远程函数执行简单的

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月12日02:55:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   远程函数执行简单的http://cn-sec.com/archives/2262786.html

发表评论

匿名网友 填写信息