;;;;步骤2:执行命令
再次在对话窗口中,
输入127.0.0.1ipconfig
点击ping按钮。
IPaddress拼接ipconfig
再次进行ping命令,查看返回的结果。
除了执行ping命令,还同时执行了ipconfig的命令,
并且将查询结果输出到前端页面。
;如果,我们输入其他的命令,是否同样可以得到我们想要的结果呢?
很显然,是可以的,
攻击者可以通过这个入口,输入进行构造的命令,控制后端的操作系统。
案例payload:127.0.0.1dir
127.0.0.1|dir
;通过查看rce_ping.php的代码片段。
我们发现问题,代码没有进行合理过滤,可以拼接语句;
RCE的rce_ping.php的代码片段:
if(isset($_POST[submit])$_POST[ipaddress]!=null){$ip=$_POST[ipaddress];
//$check=explode(.,$ip);
可以先拆分,然后校验数字以范围,第一位和第四位1-255,中间两位0-255
if(stristr(php_uname(s),windows)){//var_dump(php_uname(s));$result.=shell_exec(ping.$ip);
//直接将变量拼接进来,没做处理}else{$result.=shell_exec(ping-c4.$ip);;漏洞利用案例之远程代码执行;步骤2:执行代码
从返回的查询结果发现,
进入了phpinfo();的系统信息页面。
显然,开发者是不希望用户能够看到这个页面的,
但是,由于代码的安全问题,存在漏洞
攻击者只要输入精心构造的命令,就可以得到网站系统信息。;通过查看rce_eval.php的代码片段。
我们发现问题,用户输入没有进行任何处理;使用了eval这个危险的函数
RCE的rce_eval.php的代码片段:
if(isset($_POST[submit])$_POST[txt]!=null)
{if(@!eval($_POST[txt])){$html.=p你喜欢的字符还挺奇怪的!/p;};1、SecurebyDefault原则(默认安全)
使用黑名单、白名单
白名单:除了名单上的,其他都不被信任;黑名单:除了不信任名单上的,其他都默认信任。
更多地使用白名单,会让系统变得更加安全。
2、检测和过滤
服务端和客户端都要进行验证过滤,
尽量不要使用命令执行函数。
不要让用户控制参数。
用正则表达式对用户输入的内容进行充分处理。
3、软件升级打补丁。
包括开源框架及各类软??系统,升级到最新版本。
;;