概述
漏洞原理
当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能够控制这个字符串,将造成代码注入漏洞
在php中:
eval,assert,将字符串当成代码执行
preg_replace("/wslp/e","$xr",“wslp”);用第二个参数的执行结果替换第三个参数里的第一个参数指定的值
漏洞形成
如果被执行的字符串是通过前端参数传过来的攻击代码,或者数据库里被植入攻击代码数据,就会形成漏洞
漏洞勘测
由于thinkphp存在代码执行漏洞,我们可以使用谷歌语法来搜索这类网站(inurl:think.php)
学习代码审计,自己找一些代码执行漏洞
漏洞复现
前端传值:
http://localhost/dmzx/loudong.php?data=phpinfo()
后台接收:
<?php
$data = $_GET['data'];
eval("$xr=$data;");
echo $xr;
前端显示:
漏洞防御
1、使用json保存数组,当读取时就不需要使用eval了
2、对于必须使用eval的地方,一定严格处理用户数据(白名单、黑名单)
3、字符串使用单引号包括可控代码,插入前使用addslashes转义(addslashes、魔数引号、 htmlspecialchars、 htmlentities、mysql_real_escape_string)
4、放弃使用preg_replace的e修饰符,使用preg_replace_callback()替换
5、若必须使用preg_replace的e修饰符,则必用单引号包裹正则匹配出的对象(第二个参数用单引号包裹)
最后
以上就是可爱硬币为你收集整理的web渗透之——任意代码执行漏洞的全部内容,希望文章能够帮你解决web渗透之——任意代码执行漏洞所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复