PHP 보안 프로 그래 밍:셸 명령 주입
3427 단어 셸 명령
exec()셸 명령 을 수행 하 는 함수 입 니 다.명령 출력의 마지막 줄 을 되 돌려 줍 니 다.그러나 두 번 째 매개 변수 로 배열 을 지정 할 수 있 습 니 다.출력 된 줄 마다 하나의 요소 로 배열 에 저 장 됩 니 다.사용 방식 은 다음 과 같 습 니 다.
1
<?php
2
3
$last
=
exec
(
'ls'
,
$output
,
$return
);
4
5
print_r(
$output
);
6
echo
"Return [$return]"
;
7
8
?>
ls 명령 이shell에서 수 동 으로 실 행 될 때 다음 과 같은 출력 이 발생 한다 고 가정 합 니 다.
1
$ ls
2
total 0
3
-rw-rw-r-- 1 chris chris 0 May 21 12:34 php-security
4
-rw-rw-r-- 1 chris chris 0 May 21 12:34 chris-shiflett
위의 방법 으로 exec()에서 실 행 될 때 출력 결 과 는 다음 과 같 습 니 다.
1
Array
2
(
3
[0] => total 0
4
[1] => -rw-rw-r-- 1 chris chris 0 May 21 12:34 php-security
5
[2] => -rw-rw-r-- 1 chris chris 0 May 21 12:34 chris-shiflett
6
)
7
Return [0]
셸 명령 을 실행 하 는 방법 은 편리 하고 유용 하지만,이러한 편 의 는 당신 에 게 중대 한 위험 을 가 져 다 주 었 습 니 다.오 염 된 데이터 구조 명령 문자열 을 사용 하면 공격 자 는 임의의 명령 을 수행 할 수 있다.
가능 하 다 면 셸 명령 을 사용 하지 않 는 것 이 좋 습 니 다.실제로 사용 하려 면 구조 명령 문자열 의 데 이 터 를 걸 러 내 는 동시에 출력 을 전의 해 야 합 니 다.
01
<?php
02
03
$clean
=
array
();
04
$shell
=
array
();
05
06
/* Filter Input ($command, $argument) */
07
08
$shell
[
'command'
] =
escapeshellcmd
(
$clean
[
'command'
]);
09
$shell
[
'argument'
] =
escapeshellarg
(
$clean
[
'argument'
]);
10
11
$last
=
exec
(
"{$shell['command']} {$shell['argument']}"
,
$output
,
$return
);
12
13
?>
셸 명령 을 실행 할 수 있 는 여러 가지 방법 이 있 지만,실행 중인 문자열 을 구성 할 때 필터 와 전의 데이터 만 사용 할 수 있 도록 해 야 합 니 다.기타 주의해 야 할 같은 함수 로 는 passthru(),popen(),셸 이 있 습 니 다.exec(),그리고 system().가능 하 다 면 모든 셸 명령 의 사용 을 피 하 는 것 을 권장 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[하루 셸 명령] 텍스트 내용 조작 시리즈 - awkawk 는 데이터 흐름 에 사용 되 어 열 과 줄 을 조작 할 수 있 도록 설계 되 었 습 니 다.sed 는 일치 합 니 다. 그들 은 어느 부분 도 스 크 립 트 에 나타 나 지 않 을 수 있 습 니 다.스 크 립...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.