1. IFS(Internal Field Separator) String 

- 외부프로그램을 실행할 때 입력되는 문자열을 나눌 때 기준이 되는 문자를 정의하는 환경 변수

- 디폴트 값은 공백/탭/개행 문자 (space, tab, new line)

 

- IFS를 쉘 스크립트로 테스트해보면, 공백을 기준으로 문자를 나누어짐

[사진 1] test.sh 및 결과

 

- IFS를 다른 값으로 바꾸어 테스트 시 [사진 2] 처럼 하나의 문자열로 출력됨

※ 문자열을 apple:key:seoul:korea처럼 바꾸면 정상적으로 구분될 것

[사진 2] IFS 변경 테스트 결과

 

IFS는 환경변수
> 어느 한 쉘 스크립트에서 IFS값을 바꿀 경우 다른 쉘 스크립트에서 오작동이 일어날 수 있음
> 따라서 만일 IFS을 바꿔서 사용할 일이 있으면, 반드시 마지막에 다시 초기 IFS값으로 롤백해야 하는 로직을 추가해야 함

 

- 만약 아래와 같은 문자열이 포함된 요청을 수신할 경우 ${IFS} 문자열이 공백으로 치환되 임의 명령 수행이 가능해짐

/bin/sh${IFS}-c${IFS}'cd${IFS}/tmp;${IFS}rm${IFS}-rf${IFS}arm7;${IFS}busybox${IFS}wget${IFS}

[사진 3] IFS 예시

 

 

'취약점 > 기타' 카테고리의 다른 글

AD(Active Directory) 공격  (0) 2023.04.20
Deface Attack_중국 샤오치잉 해킹 그룹  (0) 2023.04.10
DNS Zone Transfer  (0) 2022.12.07
Brute Force Attack  (0) 2022.11.16
TLS OpenSSL HeartBleed Vulnerability(CVE-2014-0160)  (0) 2022.09.29

+ Recent posts