티스토리 뷰

리눅스/리눅스 보안

2. System function

로또_ 2020. 1. 16. 15:14

System function

 

유닉스 계열 서버에서 실제로 실행될 수 있는 명령어를 연속해서 전달하려면 " ; "을 이용하면 된다는 것입니다. " ; "은 셸에서 명령어를 한 줄에 연속해서 적을 때 이용할 수 있으며, 이는 system()함수에도 동일하게 적용됩니다.

 

1. system function은 비싸고, 리소스가 많이 들어가는 call입니다.

2. It's not portable. 범용성이 없습니다. system()안에 들어가는 인자는 유닉스 운영체제와 윈도우 운영체제가 혼용되어 사용하지 않기 때문입니다.

 

임시 권한 상승으로 인해 system() 함수에 직접 인자를 입력하는 경우 주의하여 사용하여야 합니다. echo 명령어를 사용하여 백도어 파일 생성이 충분히 가능하기 때문입니다. 이에 대한 실습은 좀더 나중에 진행하도록 하겠습니다.\

 

man page의 description을 보면

The system call is the fundamental interface between an application and Linux kernel.

 

 


 

실험

level4로 SUID설정된 것을 찾습니다.

autodig의 소스코드입니다. 보시면 system 함수를 사용하는데 사용자 입력값을 그대로 system 함수에 넣어주므로 취약점이 존재합니다. argc가 2개가 아니면 해당 if문을 실행하고 종료하는것으로 보아 autodig 뒤에 입력되는 인자는 하나여야 합니다.

 

그래서, ; 을 이용하여 원하는 명령어를 실행하게 만듭니다.

 

반응형