[SYSTEM HACKING] 소프트웨어 버그를 이용한 시스템 취약점/해킹(System vulnerability&hacking use software bug)

오늘 테스트 프로그램으로 사용할 간단한 코드입니다. 사용자로부터 입력된 파일명을 tail 명령으로 조회하는 프로그램입니다. 대체로 system 함수 사용 시 sprintf로 명령행이 될 구간을 미리 작성하고 system 함수에 넣는 경우가 있는데, 사용자의 입력값에 대한 필터링 or 검증이 부족할 시 여러가지 공격방법에 취약할 수 있습니다.

cat log.c

#include void main(int argc, char** argv) {

char cmd[40]; sprintf(cmd,”tail -f %s”,argv[1]);system(cmd); }

실행하면 사용자가 지정한 파일을 로드합니다. 아주 단순한 프로그램

./log test.log log1 log1 log1 log1 log1 log1 log1 log1 log1 log1

Traversal 구문을 활용한 시스템 파일 접근(Access System File with Traversal Attack)

Path Traversal이라는 공격방법에 대해 들어보셨나요? 아마 웹 해킹에서 많이 들어보셨을 공격방법이였을 겁니다. 그렇지만 이 공격방법은 시스템해킹, 어플리케이션 해킹에서도 상당히 유용하게 사용할 수 있는 공격방법이고, 이것을 활용한 Exploit 도 다수 존재합니다.

오늘은 이 Traversal 구문(../) 을 통해 시스템 어플리케이션의 로직을 우회하여 시스템 파일이나 공격자가 접근할 수 없는 파일에 접근이 가능합니다.

./log ../../../../../../../etc/passwd

hplip:x:110:7:HPLIP system user,,,:/var/run/hplip:/bin/false privoxy:x:116:65534::/etc/privoxy:/bin/false ..snip..

물론 /etc/passwd 파일을 r가 가능한 파일이지만, 만약 공격자의 권한으로 조회가 불가능한 파일에 대해서 위와 같은 취약한 프로그램을 통해 조회를 할 수 있습니다. 대체로 웹에서의 traversal 이 취약한 페이지보단 local 단에서 서버관리자, 개발자가 직접 코딩한 프로그램들이 권한이 더 많은 경우가 있습니다. System Hacking 에서도 굉장히 유용하게 쓰일 수 있습니다.

세미콜론을 활용한 시스템 명령 실행 취약점(use semicolon for system command execute)

리눅스, 유닉스 시스템에서는 세미콜론을 이용하여 명령과 명령행을 구별할 수 있습니다. 이는 어플리케이션에서도 동일하게 적용할 수 있는 부분이며 시스템 명령 수행이 되는 구간에 세미콜론을 이용해 악의적인 명령 수행이 가능할 수 있습니다. 아래와 같이 정상적인 기능 이후 세미콜론과 함께 시스템 명령 사용이 가능합니다.

./log test.log ;lspci

log1 log1 log1 log1 log1 log1 log1 log1 log1 log1 ^C00:00.0 Host bridge: Intel Corporation 3rd Gen Core processor DRAM Controller (rev 09) 00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09) 00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04) 00:16.0 Communication controller: Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 (rev 04) 00:1a.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (rev 04) 00:1b.0 Audio device: Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller (rev 04) 00:1c.0 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 1 (rev c4) 00:1c.1 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 (rev c4)

아주 간단한 예시 같지만, 실제로 위와 같이 공격이 가능한 사례가 많이 있습니다. 특히 Traversal의 경우에는 웹 해킹 시 유명한 사이트, 회사에서도 잘 찾아보면 발견할 수 있는 취약점입니다. 시스템에서도 유사한 방법으로 적용이 가능하기 때문에 잘 활용하시면 도움이 될 수 있습니다.

개인사이트에 내용을 작성 하다보니 깊이있는 내용보다는 쉽고..쓰기 쉬운 내용으로 작성하게 되네요; (아무래도..시간이 없습니다…) 다음번에는 좀 더 재미있고 유익한 주제로 찾아뵙도록 하지요. 감사합니다. :)