본문 바로가기

CS/시큐어 코딩6

[시큐어 코딩] 파라미터 조작과 잘못된 접근제어 취약점 action=edit&id=lee&name= 파라미터 조작과 잘못된 접근제어 취약점관리자 페이지와 같이 인가된 특정 사용자만 사용 가능한 페이지에 대해 올바른 접근권한 레벨을 정의하고 점검하는 프로세스가 제대로 적용되지 않은 경우에 발생하는 취약점이다.네트워크 접근이 가능한 내부/외부 사용자는 모두 공격자가 될 수 있다. 인증을 통해 시스템 접근이 허락된 공격자는 URL이나 파라미터를 조작해 권한(Authorization)이 필요한 기능에 접근할 수 있다. 이 경우 시스템이 인가된 사용자에 대한 접근권한을 제대로 체크하지 않는다면 허가되지 않은 기능을 수행할 수 있게 된다.애플리케이션의 특정 기능에 대한 접근 권한에 대한 체크가 제대로 이루어지지 않은 경우에 인가되지 않은 기능 접근 및 관리자 기능이 주.. 2024. 6. 2.
[시큐어 코딩] 파일 업로드/다운로드 취약점 파일 업로드/다운로드 취약점파일을 업로드하고 다운로드하는 기능들이 적절히 제어되지 않을 때 웹쉘이나 악성코드가 업로드되어 서버에서 실행될 수 있으며, 악성코드가 삽입된 파일을 사용자들이 다운로드받아서 실행하여 사용자 PC가 침해사고를 당할 수 있다.  발생 원인업로드기능 취약점 원인업로드되는 파일의 타입을 제한하지 않는 경우업로드되는 파일의 크기나 개수를 제한하지 않는 경우업로드된 파일을 외부에서 직접적으로 접근 가능한 경우업로드된 파일의 이름과 저장된 파일의 이름이 동일해 공격자가 파일을 인식 가능한 경우업로드된 파일이 실행권한을 가지는 경우다운로드기능 취약점 원인파일에 대한 접근권한이 없는 사용자가 직접적인 경로를 통해 파일을 다운로드할 수 있는 경우악성코드에 감염된 파일이 다운로드 허용되는 경우  .. 2024. 6. 2.
[시큐어 코딩] XSS(크로스 사이트 스크립팅) XSS공격자가 상대방의 브라우저에 스크립트가 실행되도록 해 사용자의 세션을 가로채거나, 웹사이트를 변조하거나, 악의적 콘텐츠를 삽입하거나, 피싱 공격을 진행하는 것을 뜻한다.  XSS 공격유형Reflective XSS공격자가 악성 스크립트가 포함된 URL을 클라이언트에 노출시켜 클릭을 유도하고, 쿠키 정보를 탈취하거나 피싱 사이트, 불법 광고 사이트로 이동하게 만든다.서버에서 사용되는 외부 입력값 name이 안전한 값인지 검사하지 않고 사용되는 경우 XSS 취약점이 있는 처리 구조이다. Reflective XSS 취약점 공격 처리 흐름인데 공격자가 악성 스크립트를 입력값으로 전달하도록 만들어진 URL을 사용자가 클릭하도록 유도하고 이 URL을 사용자가 클릭하면 해당 스크립트가 a.com서버의 ha.do .. 2024. 5. 26.
[시큐어 코딩] XPath 삽입(Injection) XPath 삽입XPath는 XML 문서에서 특정 요소(element)나 속성(attribute)까지 도달하기 위한 경로를 요소의 계층을 이용해서 표현하는 것이다. 파일경로와 비슷하며, 파일 경로에 절대 경로와 상대 경로가 있는 것처럼, XPath도 루트 요소(Root element)부터 특정 요소까지의 경로를 지정하거나 현재 위치하고 있는 요소부터 특정 요소까지의 경로를 지정할 수 있다.아래 사진을 보는 것처럼 XML 문서는 트리 구조로 모델링해 표시할 수 있다. 예를 들어서 prduct id=3인 제품의 가격정보를 출력하기 위한 XPath 표현식은 /catalog/product[@id=3]/price 이다.  발생 원인외부로부터 입력된 값을 이용해 XML 파일의 내용을 검색하기 위해 XPath 쿼리문을.. 2024. 5. 26.
[시큐어 코딩] OS 명령어 삽입(Injection) 운영체제 명령어 삽입프로그램 내에서 사용자 입력이 윈도우의 cmd.exe나 유닉스의 sh, bash 같은 쉘 프로그램 실행을 위한 전달인자(argument)로 사용되는 경우, 그 사용자 입력을 애플리케이션에서 충분히 검증하지 않고 사용함에 따라 공격자가 의도하는 명령이 실행될 수 있는 취약점이다. 이런 취약점을 통해 공격자는 공격용 툴을 외부로부터 업로드하거나 업로드된 툴에 대해 실행권한을 부여할 수 있고, 또한 관리자 권한을 획득해 서버를 제어할 수도 있다.  발생 원인PHP의 exec, ASP의 wscript, shell, JSP의 Runtime.exe()와 같은 운영체제 명령을 실행하는 함수의 인자값으로 검증되지 않은 사용자 입력값을 사용하는 경우 발생한다.  이전시간에 수행했던 SQL인젝션과 같은.. 2024. 5. 24.
[시큐어코딩] SQL 삽입(Injection) SQL 삽입웹 애플리케이션에서 입력받아 데이터베이스로 전달하는 정상적인 쿼리(CRUD)를 변조, 삽입하여 데이터베이스에 불법적인 데이터 열람, 시스템 명령 수행등 비정상적인 데이터베이스에 접근 하는 기법이다. 모든 종류의 DBMS에 적용 가능한 공격기법이며, 지속적으로 발전되고 있는 공격기법이다. 해당 취약점으로 인해악성 스크립트 실행, 외부 프로그램 사용가능, DB 정보 열람,추가,수정,삭제 가능, 프로시저를 통한 운영체제 명령어 수행, 불법 로그인등의 침해 사고가 발생 할 수 있다. 발생원인웹 애플리케이션의 SQL 쿼리문의 일부로 사용되는 사용자의 입력데이터에 대한 적절한 검증 작업이 수행되지 않아서 발생한다.해결방안규범화 : 데이터 손실이 없는 동일한 내용으로 축소 , 공백 제거 등정규화 : 데이터.. 2024. 5. 17.