Web Hacking Legacy

Command Injection

fenec_fox 2025. 5. 31. 21:36

2020. 7. 18. 21:45

웹을 통해 시스템명령어(커맨드)를 실행하는 공격

 

웹 내부에서 시스템 명령어를 실행하는 경우 입력을 제대로 검사하지 않으면, 해커 마음대로 시스템 명령어 실행 가능!

 

 

#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv) {
 char cat[] = "cat ";
 char *command;
 size_t commandLength;

 commandLength = strlen(cat) + strlen(argv[1]) + 1;
 command = (char *) malloc(commandLength);
 strncpy(command, cat, commandLength);
 strncat(command, argv[1], (commandLength - strlen(cat)) );

 system(command);
 return (0);
}

위는 파일 내용을 명령어 cat을 통해 출력하는 코드이다.

$ ./catWrapper Story.txt
When last we left our heroes...

위 명령어를 통해 사용가능하며 만약 다음과 같이 세미콜론을 붙인다면

$ ./catWrapper "Story.txt; ls"
When last we left our heroes...
Story.txt               doubFree.c              nullpointer.c
unstosig.c              www*                    a.out*
format.c                strlen.c                useFree*
catWrapper*             misnull.c               strlength.c             useFree.c
commandinjection.c      nodefault.c             trunc.c                 writeWhatWhere.c

훨씬 더 많은 정보를 얻게된다. 기본 사용자보다 권한이 높다면 보다 많은 명령어가 실행될 수 있다.

 

예시 추가중. (모든 정보는 OSAWP에서 가져옴)