>  기사  >  백엔드 개발  >  PHP 취약점(2)에 대한 전체 설명 - 명령 주입 공격.

PHP 취약점(2)에 대한 전체 설명 - 명령 주입 공격.

黄舟
黄舟원래의
2016-12-22 09:09:551561검색

명령어 주입 공격

PHP에서는 다음 5가지 함수를 사용하여 외부 애플리케이션이나 함수를 실행할 수 있습니다.

system, exec, passthru, shell_exec, "(shell_exec와 동일한 함수)

함수 프로토타입

string system(string command, int &return_var)

command 실행할 ​​명령

return_var은 실행된 명령 실행 후 상태 값을 저장합니다.

string exec (string command, array &output, int &return_var)

command 실행할 ​​명령

출력

명령을 실행하여 문자열 출력의 각 줄을 가져옵니다.

return_var는 명령 실행 후 상태 값을 저장합니다.

void passthru(string command, int &return_var)

명령 실행할 명령

return_var은 상태 값을 저장합니다. 명령 실행 후

string shell_exec(문자열 명령)

명령 실행할 명령

취약점 인스턴스

예 1:

命令注入攻击
PHP中可以使用下列5个函数来执行外部的应用程序或函数
system、exec、passthru、shell_exec、“(与shell_exec功能相同)
函数原型
string system(string command, int &return_var)
    command 要执行的命令
    return_var 存放执行命令的执行后的状态值
string exec (string command, array &output, int &return_var)
    command 要执行的命令
    output 获得执行命令输出的每一行字符串
    return_var 存放执行命令后的状态值
void passthru (string command, int &return_var)
    command 要执行的命令
    return_var 存放执行命令后的状态值
    string shell_exec (string command)
    command 要执行的命令
漏洞实例
例1:

http://www.sectop.com/ex1.php?dir=| cat /etc/passwd

제출 후 명령은 system("ls -al | cat /etc/ passwd");


PHP 취약점(2)에 대한 전체 설명 - 명령 주입 공격.

eval 주입 공격

eval 함수는 입력 문자열 매개변수를 PHP 프로그램 코드로 실행합니다

함수 프로토타입:

mixed eval(string code_str) //eval 주입은 일반적으로 공격자가 입력 문자열을 제어할 수 있을 때 발생합니다.

http://www.sectop을 제출할 때. .com/ex2.php?arg=phpinfo();취약점 발생;

동적 함수




php
func A()
{
dosomething();
}
func B()
{
dosomething()
}
if (isset($_GET["func" ]) )
{
$myfunc = $_GET["func"]
echo $myfunc() }
?>



프로그래머의 원래 의도는 함수 A와 B를 동적으로 호출한 다음 http://www.sectop.com/ex.php?func=phpinfo 취약점 생성

방지 방법

을 제출하는 것입니다. 🎜>1. 외부 명령을 실행하지 마세요

2. 외부 명령의 기능을 대체하려면 사용자 정의 함수나 함수 라이브러리를 사용하세요

3. 명령 매개변수를 처리하려면 escapeshellarg 함수를 사용하세요

4. safe_mode_exec_dir을 사용하여 실행 파일의 경로를 지정하세요.

esacpeshellarg 함수는 매개변수 또는 명령의 끝을 유발하는 모든 문자(작은따옴표 "'", "'"로 대체, 이중)를 이스케이프합니다. 따옴표 """, 세미콜론 ";"을 ";"로 바꾸십시오.

safe_mode_exec_dir을 사용하여 이 경로에 사용할 명령을 넣을 수 있습니다. advance

safe_mode = On

safe_mode_exec_dir = /usr/local/php/bin/

위는 PHP 취약점(2) - 명령 주입 공격에 대한 전체 설명입니다. 더 많은 관련 내용을 보시려면 PHP 중국어 넷(www.php.cn)을 주목해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.