복붙노트

악용 가능한 PHP 함수

PHP

악용 가능한 PHP 함수

임의의 코드 실행에 사용할 수있는 함수 목록을 작성하려고합니다. 블랙리스트에 올리거나 그렇지 않으면 허용되지 않는 기능을 나열하는 것이 목적이 아닙니다. 오히려 백도어로 손상된 서버를 검색 할 때 유익한 빨간색 플래그 키워드 목록을 작성하고 싶습니다.

아이디어는 c99 또는 r57과 같은 "웹 셸"스크립트와 같이 다목적의 악의적 인 PHP 스크립트를 작성하려는 경우 비교적 적은 수의 함수 집합 중 하나 이상을 사용해야한다는 것입니다 사용자가 임의 코드를 실행할 수 있도록하기 위해 파일의 어딘가에. 이러한 함수를 검색하면 수만 가지 PHP 파일의 건초 더미를 좀 더 세밀하게 조사해야하는 상대적으로 작은 스크립트 집합으로 신속하게 좁힐 수 있습니다.

분명히 예를 들어, 다음 중 하나가 악의적 인 (또는 끔찍한 코딩) 것으로 간주됩니다.

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

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

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

기타 등등.

얼마 전에 / e 플래그를 사용하여 preg_replace를 위험하게 만들 수 있다는 것을 몰랐기 때문에 손상된 웹 사이트를 통해 검색 할 때 악성 코드 조각을 발견하지 못했습니다 (심각하게 왜?) . 내가 놓친 다른 것들이 있습니까?

지금까지 내 목록은 다음과 같습니다.

셸 실행

PHP 실행

또한 파일을 수정할 수있는 함수 목록을 갖는 것이 유용 할 수 있지만, 99 %의 시간 코드는 위의 함수 중 적어도 하나를 포함 할 것이라고 생각합니다. 그러나 파일을 편집하거나 출력 할 수있는 모든 기능 목록이 있다면 게시하고 여기에 포함 시키십시오. (그리고 나는 mysql_execute를 계산하지 않는다. 왜냐하면 그것은 다른 exploit 클래스의 일부이기 때문이다.)

해결법

  1. ==============================

    1.이 목록을 작성하기 위해 나는 2 개의 출처를 사용했다. 주홍과 쥐에 대한 연구. 나는 또한 믹스에 내 자신의 일부를 추가 하고이 스레드에있는 사람들이 도움이되었습니다.

    이 목록을 작성하기 위해 나는 2 개의 출처를 사용했다. 주홍과 쥐에 대한 연구. 나는 또한 믹스에 내 자신의 일부를 추가 하고이 스레드에있는 사람들이 도움이되었습니다.

    편집 :이 목록을 게시 한 후 나는 RIPS의 창립자에게 연락을했고이 도구는 PHP 코드에서이 목록에있는 모든 기능을 검색합니다.

    이러한 함수 호출의 대부분은 싱크 (Sink)로 분류됩니다. 오염 된 변수 (예 : $ _REQUEST)가 싱크 함수에 전달되면 취약점이 생깁니다. RATS 및 RIPS와 같은 프로그램은 grep과 유사한 기능을 사용하여 응용 프로그램의 모든 싱크를 식별합니다. 이것은 프로그래머가이 기능을 사용할 때 특별히주의해야한다는 것을 의미합니다. 그러나 모든 곳에서 금지되어 있다면 많은 일을 할 수 없게됩니다.

    "큰 힘에는 큰 책임이 따른다."

    - 이단

    exec           - Returns last line of commands output
    passthru       - Passes commands output directly to the browser
    system         - Passes commands output directly to the browser and returns last line
    shell_exec     - Returns commands output
    `` (backticks) - Same as shell_exec()
    popen          - Opens read or write pipe to process of a command
    proc_open      - Similar to popen() but greater degree of control
    pcntl_exec     - Executes a program
    

    eval 외에도 PHP 코드를 실행하는 다른 방법이 있습니다 : include / require는 Local File Include와 Remote File Include 취약점의 형태로 원격 코드 실행에 사용될 수 있습니다.

    eval()
    assert()  - identical to eval()
    preg_replace('/.*/e',...) - /e does an eval() on the match
    create_function()
    include()
    include_once()
    require()
    require_once()
    $_GET['func_name']($_GET['argument']);
    $func = new ReflectionFunction($_GET['func_name']); $func->invoke(); or $func->invokeArgs(array());
    

    이 함수는 공격자가 선택한 함수를 호출하는 데 사용할 수있는 문자열 매개 변수를 허용합니다. 기능에 따라 공격자는 매개 변수를 전달할 수도 있고하지 않을 수도 있습니다. 이 경우 phpinfo ()와 같은 정보 공개 기능을 사용할 수 있습니다.

    Function                     => Position of callback arguments
    'ob_start'                   =>  0,
    'array_diff_uassoc'          => -1,
    'array_diff_ukey'            => -1,
    'array_filter'               =>  1,
    'array_intersect_uassoc'     => -1,
    'array_intersect_ukey'       => -1,
    'array_map'                  =>  0,
    'array_reduce'               =>  1,
    'array_udiff_assoc'          => -1,
    'array_udiff_uassoc'         => array(-1, -2),
    'array_udiff'                => -1,
    'array_uintersect_assoc'     => -1,
    'array_uintersect_uassoc'    => array(-1, -2),
    'array_uintersect'           => -1,
    'array_walk_recursive'       =>  1,
    'array_walk'                 =>  1,
    'assert_options'             =>  1,
    'uasort'                     =>  1,
    'uksort'                     =>  1,
    'usort'                      =>  1,
    'preg_replace_callback'      =>  1,
    'spl_autoload_register'      =>  0,
    'iterator_apply'             =>  1,
    'call_user_func'             =>  0,
    'call_user_func_array'       =>  0,
    'register_shutdown_function' =>  0,
    'register_tick_function'     =>  0,
    'set_error_handler'          =>  0,
    'set_exception_handler'      =>  0,
    'session_set_save_handler'   => array(0, 1, 2, 3, 4, 5),
    'sqlite_create_aggregate'    => array(2, 3),
    'sqlite_create_function'     =>  2,
    

    이러한 함수 호출의 대부분은 싱크가 아닙니다. 그러나 반환 된 데이터 중 하나라도 공격자가 볼 수있는 경우 취약한 것일 수 있습니다. 공격자가 phpinfo ()를 볼 수 있다면 그것은 분명히 취약점입니다.

    phpinfo
    posix_mkfifo
    posix_getlogin
    posix_ttyname
    getenv
    get_current_user
    proc_get_status
    get_cfg_var
    disk_free_space
    disk_total_space
    diskfreespace
    getcwd
    getlastmo
    getmygid
    getmyinode
    getmypid
    getmyuid
    
    extract - Opens the door for register_globals attacks (see study in scarlet).
    parse_str -  works like extract if only one argument is given.  
    putenv
    ini_set
    mail - has CRLF injection in the 3rd parameter, opens the door for spam. 
    header - on old systems CRLF injection could be used for xss or other purposes, now it is still a problem if they do a header("location: ..."); and they do not die();. The script keeps executing after a call to header(), and will still print output normally. This is nasty if you are trying to protect an administrative area. 
    proc_nice
    proc_terminate
    proc_close
    pfsockopen
    fsockopen
    apache_child_terminate
    posix_kill
    posix_mkfifo
    posix_setpgid
    posix_setsid
    posix_setuid
    

    RATS에 따르면 PHP의 모든 파일 시스템 기능은 불쾌합니다. 이 중 일부는 공격자에게별로 유용하지 않은 것으로 보입니다. 다른 것들은 생각보다 유용합니다. 예를 들어 allow_url_fopen = On이면 url을 파일 경로로 사용할 수 있으므로 copy ($ _ GET [ 's'], $ _GET [ 'd']); 시스템상의 어느 곳에 나 PHP 스크립트를 업로드하는 데 사용할 수 있습니다. 또한 사이트가 GET을 통해 전송되는 요청에 취약한 경우 해당 파일 시스템 기능을 모두 사용하여 서버를 통해 다른 호스트로 채널을 공격하고 공격 할 수 있습니다.

    // open filesystem handler
    fopen
    tmpfile
    bzopen
    gzopen
    SplFileObject->__construct
    // write to filesystem (partially in combination with reading)
    chgrp
    chmod
    chown
    copy
    file_put_contents
    lchgrp
    lchown
    link
    mkdir
    move_uploaded_file
    rename
    rmdir
    symlink
    tempnam
    touch
    unlink
    imagepng   - 2nd parameter is a path.
    imagewbmp  - 2nd parameter is a path. 
    image2wbmp - 2nd parameter is a path. 
    imagejpeg  - 2nd parameter is a path.
    imagexbm   - 2nd parameter is a path.
    imagegif   - 2nd parameter is a path.
    imagegd    - 2nd parameter is a path.
    imagegd2   - 2nd parameter is a path.
    iptcembed
    ftp_get
    ftp_nb_get
    // read from filesystem
    file_exists
    file_get_contents
    file
    fileatime
    filectime
    filegroup
    fileinode
    filemtime
    fileowner
    fileperms
    filesize
    filetype
    glob
    is_dir
    is_executable
    is_file
    is_link
    is_readable
    is_uploaded_file
    is_writable
    is_writeable
    linkinfo
    lstat
    parse_ini_file
    pathinfo
    readfile
    readlink
    realpath
    stat
    gzfile
    readgzfile
    getimagesize
    imagecreatefromgif
    imagecreatefromjpeg
    imagecreatefrompng
    imagecreatefromwbmp
    imagecreatefromxbm
    imagecreatefromxpm
    ftp_put
    ftp_nb_put
    exif_read_data
    read_exif_data
    exif_thumbnail
    exif_imagetype
    hash_file
    hash_hmac_file
    hash_update_file
    md5_file
    sha1_file
    highlight_file
    show_source
    php_strip_whitespace
    get_meta_tags
    
  2. ==============================

    2.include ($ tmp) 및 require (HTTP_REFERER) 및 * _once도 검사해야합니다. 익스플로잇 스크립트가 임시 파일에 쓸 수 있다면 나중에 포함시킬 수 있습니다. 기본적으로 2 단계 평가.

    include ($ tmp) 및 require (HTTP_REFERER) 및 * _once도 검사해야합니다. 익스플로잇 스크립트가 임시 파일에 쓸 수 있다면 나중에 포함시킬 수 있습니다. 기본적으로 2 단계 평가.

    또한 다음과 같은 임시 해결책을 사용하여 원격 코드를 숨길 수도 있습니다.

     include("data:text/plain;base64,$_GET[code]");
    

    또한 웹 서버가 이미 손상된 경우 인코딩되지 않은 악의 코드가 항상 표시되는 것은 아닙니다. 익스플로잇 셸은 종종 gzip으로 인코딩됩니다. include ( "zlib : script2.png.gz")를 생각해보십시오. 여기에 평가는 없지만 여전히 같은 효과가 있습니다.

  3. ==============================

    3.이것은 본질적으로 대답이 아니지만 여기에 흥미로운 점이 있습니다.

    이것은 본질적으로 대답이 아니지만 여기에 흥미로운 점이 있습니다.

    $y = str_replace('z', 'e', 'zxzc');
    $y("malicious code");
    

    같은 정신으로 call_user_func_array ()를 사용하여 난독 화 함수를 실행할 수 있습니다.

  4. ==============================

    4.아무도 에코와 프린트를 보안 공격의 포인트로 언급 한 것은 놀랍습니다.

    아무도 에코와 프린트를 보안 공격의 포인트로 언급 한 것은 놀랍습니다.

    XSS (Cross-Site Scripting)는 서버 측 코드 실행보다 훨씬 일반적인 보안 취약점으로 심각한 보안 문제가 있습니다.

  5. ==============================

    5.특히이 목록에 unserialize ()를 추가하고 싶습니다. 임의 코드 실행, 서비스 거부 및 메모리 정보 유출 등 다양한 취약점이 오래 전부터있었습니다. 사용자가 제공 한 데이터에 절대로 호출해서는 안됩니다. 이 vuls의 대부분은 이슬 맺히기 전의이 릴리스에서 수정되었지만 현재 서면으로 작성된 두 개의 불쾌한 vuls를 유지합니다.

    특히이 목록에 unserialize ()를 추가하고 싶습니다. 임의 코드 실행, 서비스 거부 및 메모리 정보 유출 등 다양한 취약점이 오래 전부터있었습니다. 사용자가 제공 한 데이터에 절대로 호출해서는 안됩니다. 이 vuls의 대부분은 이슬 맺히기 전의이 릴리스에서 수정되었지만 현재 서면으로 작성된 두 개의 불쾌한 vuls를 유지합니다.

    dodgy PHP 함수 / 사용법에 대한 다른 정보는 Hardened PHP Project와 그 권고에 대한 정보를 참조하십시오. 또한 최근 PHP 보안 월과 2007 년 PHP 버그 월 프로젝트

    또한 의도적으로 객체의 직렬화를 해제하면 생성자 및 소멸자 함수가 실행됩니다. 사용자가 제공 한 데이터에서 호출하지 않는 또 다른 이유입니다.

  6. ==============================

    6.내 VPS가 다음 기능을 사용하지 않도록 설정되었습니다.

    내 VPS가 다음 기능을 사용하지 않도록 설정되었습니다.

    root@vps [~]# grep disable_functions /usr/local/lib/php.ini
    disable_functions = dl, exec, shell_exec, system, passthru, popen, pclose, proc_open, proc_nice, proc_terminate, proc_get_status, proc_close, pfsockopen, leak, apache_child_terminate, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid
    

    PHP는리스트가 너무 커서 grep하기에 충분히 파괴적 일 가능성이있는 함수를 가지고 있습니다. 예를 들어, PHP에는 chmod와 chown이 있는데, 단순히 웹 사이트를 비활성화하는 데 사용할 수 있습니다.

    편집 : 아마도 당신은 위험에 의해 그룹화 된 함수의 배열 (나쁜 기능, 더 나쁜 기능, 결코 사용해서는 안되는 기능)에 대한 파일을 검색하고, 위험의 상대성을 계산할 수있는 bash 스크립트를 만들 수 있습니다. 파일이 백분율로 부과됩니다. 그런 다음 임계 값 (30 % 위험)보다 크면 각 파일 옆에 퍼센트 기호가있는 디렉토리의 트리로 출력합니다.

  7. ==============================

    7.또한 임의의 메모리 위치를 읽고 쓸 수있는 "인터럽트 취약점"클래스를 알아 두십시오!

    또한 임의의 메모리 위치를 읽고 쓸 수있는 "인터럽트 취약점"클래스를 알아 두십시오!

    이것들은 trim (), rtrim (), ltrim (), explode (), strchr (), strstr (), substr (), chunk_split (), strtok (), addcslashes (), str_repeat () . 이는 대부분 10 년 동안 사용되지 않지만 비활성화되지 않은 언어의 호출 기준 통과 기능 덕분입니다.

    더 자세한 정보는 BlackHat USA 2009 Slides Paper에서 중단 취약점 및 기타 저급 PHP 문제에 관한 Stefan Esser의 이야기를 참조하십시오.

    이 백서 / 프레젠테이션에서는 dl ()을 사용하여 임의의 시스템 코드를 실행하는 방법을 보여줍니다.

  8. ==============================

    8.플랫폼 별, 또한 이론적 인 exec 벡터 :

    플랫폼 별, 또한 이론적 인 exec 벡터 :

    그리고 더 많은 위장 방법이 있습니다.

  9. ==============================

    9.eval 언어 구조 외에도 임의의 코드 실행을 허용하는 또 다른 함수가 있습니다 : assert

    eval 언어 구조 외에도 임의의 코드 실행을 허용하는 또 다른 함수가 있습니다 : assert

    assert('ex' . 'ec("kill --bill")');
    
  10. ==============================

    10.흥미로운 공격의 한 근원은 언급되지 않았다. PHP는 문자열에 0x00 바이트를 가질 수 있습니다. 기본 (libc) 함수는 이것을 문자열의 끝으로 처리합니다.

    흥미로운 공격의 한 근원은 언급되지 않았다. PHP는 문자열에 0x00 바이트를 가질 수 있습니다. 기본 (libc) 함수는 이것을 문자열의 끝으로 처리합니다.

    이것은 (잘못 구현 된) PHP의 온 전성 검사가 속일 수있는 상황을 허용합니다. 같은 상황에서 :

    /// note: proof of principle code, don't use
    $include = $_GET['file'];
    if ( preg_match("/\\.php$/",$include) ) include($include);
    

    여기에는 .php로 끝나는 파일뿐만 아니라 script.php를 호출하는 파일도 포함될 수 있습니다. file = somefile % 00.php

    따라서 PHP의 문자열 길이를 따르지 않는 함수는 취약점을 일으킬 수 있습니다.

  11. ==============================

    11.위험한 구문 요소는?

    위험한 구문 요소는?

    "변수 변수"($$ var)는 현재 범위에서 $ var의 이름으로 변수를 찾습니다. 잘못 사용하면 원격 사용자가 현재 범위의 변수를 수정하거나 읽을 수 있습니다. 기본적으로 약한 평가.

    예 : 코드 $$ uservar = 1을 쓰면 원격 사용자는 $ uservar를 "admin"으로 설정하여 $ admin을 현재 범위에서 1로 설정합니다.

  12. ==============================

    12.아마 당신은 소스 파일을 파싱하여 모든 가능한 익스플로잇을 찾을 수 없을 것입니다.

    아마 당신은 소스 파일을 파싱하여 모든 가능한 익스플로잇을 찾을 수 없을 것입니다.

  13. ==============================

    13.Backtick Operator Backtick on PHP Manual

    Backtick Operator Backtick on PHP Manual

  14. ==============================

    14.move_uploaded_file이 언급되었지만 일반적으로 업로드하는 파일은 매우 위험합니다. $ _FILES가 있으면 바로 관심을 가져야합니다.

    move_uploaded_file이 언급되었지만 일반적으로 업로드하는 파일은 매우 위험합니다. $ _FILES가 있으면 바로 관심을 가져야합니다.

    모든 유형의 파일에 PHP 코드를 내장 할 수 있습니다. 이미지는 텍스트 주석에 특히 취약 할 수 있습니다. 문제는 코드가 $ _FILES 데이터 내에서 발견 된 확장을있는 그대로 받아들이면 특히 문제가됩니다.

    예를 들어, 사용자는 PHP 코드가 내장 된 유효한 PNG 파일을 "foo.php"로 업로드 할 수 있습니다. 스크립트가 특히 순진하다면, 실제로 파일을 "/uploads/foo.php"로 복사 할 수 있습니다. 서버가 사용자 업로드 디렉토리에서 스크립트 실행을 허용하도록 구성된 경우 (경우에 따라 끔찍한 감독), 임의의 PHP 코드를 즉시 실행할 수 있습니다. (이미지를 .png로 저장하더라도 다른 보안 결함을 통해 코드를 실행할 수 있습니다.)

    업로드시 확인할 사항 (비 한정적인) 목록 :

  15. ==============================

    15.목록에 pcntl_signal 및 pcntl_alarm을 추가합시다.

    목록에 pcntl_signal 및 pcntl_alarm을 추가합시다.

    이러한 함수를 사용하면 php.ini 또는 스크립트에서 작성된 모든 set_time_limit 제한 사항을 해결할 수 있습니다.

    이 스크립트는 예를 들어 set_time_limit (1)에도 불구하고 10 초 동안 실행됩니다.

    (신용은 Sebastian Bergmanns 트윗과 요점 :

    <?php
    declare(ticks = 1);
    
    set_time_limit(1);
    
    function foo() {
        for (;;) {}
    }
    
    class Invoker_TimeoutException extends RuntimeException {}
    
    class Invoker
    {
        public function invoke($callable, $timeout)
        {
            pcntl_signal(SIGALRM, function() { throw new Invoker_TimeoutException; }, TRUE);
            pcntl_alarm($timeout);
            call_user_func($callable);
        }
    }
    
    try {
        $invoker = new Invoker;
        $invoker->invoke('foo', 1);
    } catch (Exception $e) {
        sleep(10);
        echo "Still running despite of the timelimit";
    }
    
  16. ==============================

    16.PHP.ini 파일의 설정으로 비활성화 할 수있는 PHP 익스플로잇이 많이 있습니다. 명백한 예는 register_globals이지만, 설정에 따라 프로그램이 include () 또는 파일 처리 함수에 가변 파일 이름을 사용하는 경우 악용 될 수있는 HTTP를 통해 원격 시스템의 파일을 포함하거나 열 수 있습니다.

    PHP.ini 파일의 설정으로 비활성화 할 수있는 PHP 익스플로잇이 많이 있습니다. 명백한 예는 register_globals이지만, 설정에 따라 프로그램이 include () 또는 파일 처리 함수에 가변 파일 이름을 사용하는 경우 악용 될 수있는 HTTP를 통해 원격 시스템의 파일을 포함하거나 열 수 있습니다.

    PHP는 또한 변수 이름의 끝 부분에 ()를 추가하여 변수 호출을 허용합니다. 예 : $ myvariable (); 변수에 지정된 함수 이름을 호출합니다. 이것은 악용 될 수 있습니다. 예를 들어, 공격자가 'eval'이라는 단어를 포함하도록 변수를 가져올 수 있고 매개 변수를 제어 할 수 있으면 프로그램에 실제로 eval () 함수가 포함되어 있지 않더라도 원하는 모든 것을 수행 할 수 있습니다.

  17. ==============================

    17.이 함수들은 또한 약간의 불쾌한 효과를 가질 수 있습니다.

    이 함수들은 또한 약간의 불쾌한 효과를 가질 수 있습니다.

    첫 번째 두 개는 사용 가능한 메모리를 모두 소모 할 수 있으며 후자는 소모성 메모리를 유지합니다.

  18. ==============================

    18.이것에 대한 논의가 보안에있었습니다 .stackexchange.com 최근에

    이것에 대한 논의가 보안에있었습니다 .stackexchange.com 최근에

    글쎄 그 범위를 조금 줄일 수 있습니다 -하지만 이후 '인쇄'자바 스크립트 (그리고 따라서 세션을 도용)을 주입하는 데 사용할 수있는 여전히 다소 임의적 인.

    그것은 합리적인 접근법입니다.

    자신의 파서를 작성하는 것을 고려해보십시오 - 곧 grep 기반 접근 방식이 통제에서 벗어나는 것을 발견하게 될 것입니다 (awk가 조금 더 좋을 것입니다). 곧 당신은 또한 당신도 화이트리스트를 구현하기를 바란다고 시작할 것입니다.

    명백한 것 외에도 문자열 리터럴 이외의 인수를 포함하는 것을 처리하는 것을 권장합니다. __autoload ()도주의하십시오.

  19. ==============================

    19.내 대답이 너무 부정적 일지 모르지만 ...

    내 대답이 너무 부정적 일지 모르지만 ...

    IMHO, 거기에있는 모든 단일 기능과 방법은 사악한 목적으로 사용될 수 있습니다. 변수를 사용자 또는 원격 입력에 할당하고 변수를 함수에 사용하고 함수 반환 값을 클래스 속성에 사용하고 클래스 속성을 파일 함수에 사용하고, 기타 등등. 기억하십시오 : 단조 IP 주소 또는 중간자 공격은 전체 웹 사이트를 악용 할 수 있습니다.

    최선의 방법은 $ _SERVER, $ _GET, $ _POST, $ _FILE, $ _COOKIE, include (일부 원격 파일) (allow_url_fopen이 켜져있는 경우), 기타 모든 함수로 시작하는 모든 가능한 사용자 또는 원격 입력을 처음부터 끝까지 추적하는 것입니다 / 원격 파일을 처리하는 클래스 등이 있습니다. 프로그래밍 방식으로 각 사용자 또는 원격 제공 값의 스택 추적 프로파일을 작성합니다. 이것은 할당 된 변수의 모든 반복 인스턴스와 사용되는 함수 또는 메소드를 얻은 다음 해당 함수 / 메소드의 모든 발생 목록을 재귀 적으로 컴파일하여 프로그래밍 방식으로 수행 할 수 있습니다. 그것을 검사하여 처음에 적절한 필터링과 검증 기능을 수행하는지 확인하십시오. 이것은 물론 수동 검사입니다. 그렇지 않으면 총 case switch 수는 PHP의 함수 및 메소드 수와 같습니다 (사용자 정의 포함).

    또는 사용자 입력 만 처리하는 경우 모든 스크립트의 시작 부분에서 정적 컨트롤러 클래스를 초기화하여 1) 허용 된 목적의 흰색 목록에 대해 모든 사용자 제공 입력 값의 유효성을 검사하고 저장합니다. 2) 입력 소스를 닦아냅니다 (예 : $ _SERVER = null). 이것이 나치 에스크 (Naziesque)를 얻는 곳을 알 수 있습니다.

  20. ==============================

    20.다음은 보안을 위해 공급자가 사용할 수 없도록 설정 한 기능 목록입니다.

    다음은 보안을 위해 공급자가 사용할 수 없도록 설정 한 기능 목록입니다.

  21. ==============================

    21.코드의 대부분의 공격은 다중 액세스 소스 또는 여러 단계를 사용하여 스스로를 실행합니다. 코드 나 악성 코드가있는 메소드를 검색하는 것이 아니라 모든 메소드, 실행 또는 호출하는 기능을 검색합니다. 최상의 보안은 들어오고 나올 때 양식 데이터의 인코딩 및 유효성 검사를 포함합니다.

    코드의 대부분의 공격은 다중 액세스 소스 또는 여러 단계를 사용하여 스스로를 실행합니다. 코드 나 악성 코드가있는 메소드를 검색하는 것이 아니라 모든 메소드, 실행 또는 호출하는 기능을 검색합니다. 최상의 보안은 들어오고 나올 때 양식 데이터의 인코딩 및 유효성 검사를 포함합니다.

    시스템 변수를 정의하는 것으로부터 조심해서 코드의 함수 나 메소드에서 나중에 호출 할 수 있습니다.

  22. ==============================

    22.4 비트를 사용하여 여러 버퍼 오버 플로우가 발견되었습니다. 문자는 텍스트를 해석하는 함수입니다. htmlentities () htmlspecialchars ()

    4 비트를 사용하여 여러 버퍼 오버 플로우가 발견되었습니다. 문자는 텍스트를 해석하는 함수입니다. htmlentities () htmlspecialchars ()

    최상위에 있었고, 좋은 방어책은 싱글로 변환 할 mb_convert_encoding () 해석하기 전에 인코딩.

  23. ==============================

    23.PHP 백도어를 탐지하는 PHP 응용 프로그램의 취약점에 대한 정적 소스 코드 분석기 인 RIPS /config/sinks.php에서 지속적으로 업데이트되는 민감한 싱크 (악용 가능한 PHP 함수) 목록과 해당 매개 변수를 찾을 수 있습니다.

    PHP 백도어를 탐지하는 PHP 응용 프로그램의 취약점에 대한 정적 소스 코드 분석기 인 RIPS /config/sinks.php에서 지속적으로 업데이트되는 민감한 싱크 (악용 가능한 PHP 함수) 목록과 해당 매개 변수를 찾을 수 있습니다.

  24. from https://stackoverflow.com/questions/3115559/exploitable-php-functions by cc-by-sa and MIT license