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에서 가져옴)