在Web应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用代码或命令执行函数去处理。比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞。同样调用系统命令处理,将造成命令执行漏洞。
代码执行针对的是代码,命令执行针对的是操作系统
例如php中的eval函数,会把传入的参数当做php代码进行执行。
https://www.w3school.com.cn/php/func_misc_eval.asp
还例如php中的system参数,会把传入的参数当做系统命令进行执行
https://www.php.net/manual/zh/function.system.php
漏洞产生的两个原因:第一种是现实的应用情况,第二种是代码层面的问题
代码层面形成的两个条件:第一个是可控变量,第二个是漏洞函数
可控变量:通过网页传入的参数
漏洞函数:使用哪个函数对这个变量进行操作
在实际应用中的情况:比如文件相关的网站肯定是和文件操作相关的函数多些
检测方式方面:白盒和黑盒
白盒方面可以采用代码审计,黑盒可以采用漏扫工具,公开的漏洞等
poc和exp的区别
poc是验证漏洞是否存在
exp是利用的
演示案例:
墨者靶场黑盒功能点命令执行-应用功能
墨者靶场白盒代码及命令执行-代码分析
墨者靶场黑盒层RCE漏洞检测-公开漏洞
Javaweb-Struts2框架类RCE漏洞-漏洞层面
一句话Webshell后门原理代码执行-拓展说明
为什么下列一段代码是一个后门?
因为接受的postt的数据会作为php代码执行