반응형
* 웹 상 운영체제 명령어 실행 : 웹 애플리케이션에서 시스템 명령어 실행 함수를 제공, 입력값 필터링이 제대로 이루어 지지 않은 환경에서 공격자가 시스템 명령어를 호출 할 수 있는 취약점
* 시스템 명령어 실행 취약점 운용 형태
유닉스/리눅스 명령어 연속 실행 명령어 | 설명 |
명령1 ; 명령2 | 명령 1,2 순차적 수행 |
명령1 && 명령2 | 명령1 결과 참일 경우 명령2 수행 |
명령1 || 명령2 | 명령1 결과 거짓일 경우 명령 2 수행 |
명령1 | 명령2 | 명령 1 수행 결과를 명령2의 표준 입력으로 전달 |
PHP 운영체제 명령어 실행 함수 | 내용 |
shell_exec(cmd) | 실행된 명령어의 전체 결과를 반환 |
passthru(cmd) | 실행된 명령어 전체를 바이너리 데이터로 반환 |
exec(cmd) | 실행된 명령어의 마지막 줄만 반환 (인자값 추가 시 전체 출력 가능) |
system(cmd) | 실행된 명령어 전체 결과 문자열로 반환 |
* 취약점 판단 기준 : 입력 가능 폼에 명령어를 삽입 시, 실행되면 취약
* 명령어 삽입 대응 방안
- 입력값에 OS 명령어 실행 문자가 포함되었는지 필터링 및 차단
// OS 명령 실행 문자들 포함 여부 체크하는 함수 생성
function check_blacklist($str){
$isUnsafe=false;
$blackList=array(';','&&','\|\|','\|');
for($i=0l $i<count($blackList); $i++){
$isUnsafe=eregi($blackList[$i],$str);
if($isUnsafe){ break; }
}
return $isUnsafe;
}
~~~
if(isset($_POST['submit'])){
$target=$_REQUEST['ip]
// 요청 파라미터($ip)에 허용하지 않는 문자가 포함되어 있는지 체크
$isUnsafe=check_blacklist($target);
if($isUnsafe){
echo "<script>window.alert('실행할 수 없는 문자 포함되어 있음');</script>";
}else{
이하 생략
- 명령어 사용이 꼭 필요할 시, 화이트리스트로 관리
반응형
'Information Security > Hacking' 카테고리의 다른 글
파일 다운로드 취약점 (File Download Vulnerability) (0) | 2021.02.15 |
---|---|
파일 업로드 취약점 (File Upload Vulnerability) (0) | 2021.02.15 |
정적, 동적 분석 (Static, Dynamic Analysis) (0) | 2021.01.09 |
시큐어 SDLC (Secure Software Development Life Cycle) (0) | 2021.01.09 |
시큐어 코딩 (Secure Coding) (0) | 2021.01.09 |