[25.05.22] 웹 떠봐요 6주차 활동
Command Injection 정의
인젝션은 악의적인 데이터를 프로그램에 입력하여 이를 시스템 명령어, 코드, 데이터베이스 쿼리 등으로 실행되게 하는 기법이다. 이 중, 이용자의 입력을 시스템 명령어로 실행하개 하는 취약점을 뜻함.
Command Injection의 실행 조건
명령어를 실행하는 함수에 이용자가 임의의 인자를 전달할 수 있을 때 발생한다. 시스템 함수를 사용하면 이용자의 입력을 소프트웨어의 인자로 전달 가능하다. 그러나 이러한 함수를 사용할 때, 이용자의 입력을 제대로 검사하지 않으면 임의 명령어가 실행될 수도 있다. 이는 리눅스 셸 프로그램이 지원하는 다양한 메타 문자 때문이다. 시스템 함수는 셸 프로그램에 명령어를 전달하여 실명하는데, 셸 프로그램은 다양한 메타문자를 지원함.
<메타 문자들의 예시>
‘ ’ 명령어 치환 : ‘ ’ 안에 들어있는 명령어를 실행한 결과로 치환.
$() 명령어 치환 : $() 안에 들어있는 명령어를 실행한 결과로 치환. 중복 가능.
&& 명령어 연속 실행 : 한 줄에 여러 명령어를 사용하고 싶을 때 사용.
|| 명령어 연속 실행 : 한 줄에 여러 명령어를 사용하고 싶을 때 사용.
; 명령어 구분자 : 단순히 명령어를 구분하기 위해 사용.
| 파이프 : 앞 명령어의 결과과 뒷 명령어의 입력으로 들어감.
파일 업로드 취약점/파일 다운로드 취약점의 정의
공격자의 파일을 웹 서비스의 파일 시스템에 업로드하는 과정에서 발생하는 보안 취약점. 파일 시스템 상 임의 경로에 원하는 파일을 업로드하거나 악성 확장자를 갖는 파일을 업로드할 수 있을 때 발생./웹 서비스의 파일 시스템에 존재하는 파일을 다운로드 하는 과정에서 발생하는 보안 취약점. 공격자는 웹 서비스의 파일 시스템에 존재하는 임의 파일을 다운로드 가능.
파일 업로드 취약점 (Path Traversal/악성 파일 업로드)
Path Traversal : 업로드에 존재하는 제약을 우회하여, 임의 디렉터리에 파일을 업로드할 수 있는 취약점.
. : 현재 디렉터리를 나타냄. ex) /var/www/./html -> /var/www/html
.. : 상위 디렉터리를 나타냄. ex) /var/www/../html -? /var/html
악성 파일 업로드 : 이용자가 파일을 업로드할 때, 이를 제대로 검사하지 않아서 발생하는 취약점.
파일 다운로드 취약점
이용자가 다운로드할 파일의 이름을 임의로 정할 수 있을 때 발생.
Path Traversal을 이용한 파일 다운로드 취약점은 파일 이름을 직접 입력 받아 임의 디렉터리에 있는 파일을 다운로드 받을 수 있는 취약점.