💻Information Security27 인증인가 취약점에 대해 인증인가 취약점 개요 인증인가라는 것은 특정 웹사이트에서 허락된 대상만이 특정 자원에 접근할 수 있도록 하기 위한 기능입니다. 컴퓨터가 아닌 오프라인에서는 신분증 등을 검사하는 등의 절차가 바로 이 인증/인가를 위해 하는 것입니다. 내가 권한이 있는 사람이고 그 사람이 나라는 것을 증명한다면 저에게는 권한이 주어지는 것입니다. 증명하는 단계가 인증이고 권한을 받는 단계가 인가입니다. 즉, 이 둘은 서로 긴밀하게 연결되어 있는 동시에 구분할 필요가 있습니다. 인증인가 취약점이 있는 웹사이트에서는 권한이 없는 사람이 권한을 필요로 하는 자원, 사이트 등에 접근할 수 있게 됩니다. 해당 자원이 별게 아니라면 문제가 없지만, 관리자의 권한을 주거나 관리자의 업무를 수행할 수 있도록 한다면 해당 취약점은 매우 치.. 2024. 2. 26. 파일 다운로드 취약점과 대응 개요와 간단한 설명 파일 다운로드 취약점이란 파일 다운로드가 미흡하게 구현되어서 별도의 인증인가 없이 파일이 다운로드되는 버그가 있는 것을 말합니다. 해당 취약점이 있다면 공격자가 서버에서 별도의 인가 없이 중요한 파일을 다운로드하거나 소스파일 등을 다운로드할 수 있습니다. php로는 아래와 같이 구현되어 있을 수 있습니다. 위의 코드에서 추가적으로 인증과정을 구현해두지 않는다면 fileName 파라미터에 '../../../../etc/passwd'를 입력하면 해당 파일을 다운로드할 수 있습니다. 이런 파일을 포함하여 소스코드 등을 공격자가 얻어낸다면 추가적으로 더 위협적인 공격이 생길 수 있습니다. 파일 인클루션 취약점과 비교 파일 인클루션과 장단점이 교차되어서 해당 취약점과 비교될 수 있습니다. 파일.. 2024. 2. 16. 파일 인클루드 취약점에 대해 개념과 정의 동적 웹페이지를 제작하는 경우 반복되는 코드의 사용이 생깁니다. 이런 부분들을 재작성하지 않고 인클루드를 통해서 단 몇 줄만 작성하면 여려 줄의 반복되는 코드를 굳이 재작성하지 않아도 됩니다. 그러나, 사용자의 파라미터 등의 입력을 통해 받고 보이도록 구현한 경우, 서버 내의 파일이 보이는 취약점이 발생할 수 있습니다. 이런 취약점을 파일 인클루드 취약점이라고 합니다. 아래에서 예를 들어서 설명하겠습니다. 취약점 발생 예시 언어에 따라서 다른 페이지가 보여지도록 구현하는 예시에서 url에 '?lang=ko.php'와 같은 방식으로 되어있다면 공격자는 이 url에서 파라미터를 받고 서버의 특정 위치에서 인클루드 하는 식으로 구현하였다고 추측할 수 있습니다. php 코드 내부는 아래와 같이 작성.. 2024. 2. 16. 전자서명의 필요와 이해 전자서명의 개념 전자서명이란 아날로그 문서가 아닌 전자문서에서 서명의 기능을 수행할 수 있도록 구현하는 기능입니다. 서명이란 개념을 먼저 생각해보면, 문서에 서명을 한다는 것은 특정 누군가가 해당 문서를 인증하고 특정 행위를 한 것을 기록하고 유지시키는 것입니다. 전자서명 기능을 통해서 작성자가 누구인지, 문서가 어떻게 변경되었는지를 기록하고 관리할 수 있는 것입니다. 이런 기능을 하도록 하는 것에 비대칭 암호화 방식을 이용해서 무결성과 추적성을 확보합니다. 필요성 아날로그 환경에서만 문서를 관리하던 때와 다르게 전자적으로 문서를 처리해야 하는 경우가 많아졌습니다. 특히나 기업환경에서는 규모가 커질 수록, 수 많은 문서들이 생성되고 관리되며 이런 부분들이 추적되고 변조 여부를 체크할 수 있어야 합니다. .. 2024. 2. 13. 웹 셸 업로드 공격 및 리버스셸/바인드 실습 실습 목표 본 실습의 목표는 직접 제작한 웹 서버에 웹셸을 업로드하는 공격을 실습해 보는 것입니다. 웹셸을 업로드하는 절차를 알아봄으로써 업로드 공격을 통한 시스템 침투/장악에 대한 작동 원리를 알아보겠습니다. 해당 실습은 상용에서 서비스되지 않는 개인 서버에서 진행되었습니다. 본 실습을 실제 서비스 되고 있는 서버에 하게 되면 범죄입니다. 리버스 셸과 바인드 셸의 경우 웹셸로 연결하기 어렵습니다. HTTP의 경우 비연결성이 있는 프로토콜로 웹셸 실행 결과를 보여준 뒤에 연결이 해제되어 바인딩이 되지 않습니다. 따라서 별도로 리버스 셸을 업로드 하여 연결하여야 하지만, 본 실습에서는 해당 절차를 생략하겠습니다. 환경 서버 : 리눅스 가상서버 침투 : Windows 10 절차 1) 웹에 로그인하여 게시판에.. 2024. 2. 12. aka.ms/alca 해킹 공격 시나리오 개요 이 시나리오를 생각하게 된 것은 아래와 같은 문자를 받았기 때문입니다. 어떻게 봐도 수상해 보이는 이 문자메시지는 뜻밖에도 아주 거짓된 문자는 아닌 것으로 추정됩니다. 하지만, 이렇게 의심스러운 문자를 보내더라도 Microsoft라는 이름을 달고 보내니 저 같은 보안엔지니어가 보기에도 약간 긴가민가 한 것이 사실입니다. 따라서 이런 문자를 받았을 때 어떻게 대처하고, 또 이런 식으로 피싱 문자를 보내고 링크를 클릭하게 되면 어떤 문제가 생길 수 있는지 한번 알아보겠습니다. 위험성 우선 이런 문자를 받았을 때 일어날 수 있는 위험성에 대해서 생각해 보겠습니다. 해당 링크가 정말로 Microsoft가 보낸 것이고 공식적인 사이트로 보냈다면 다행이겠지만 그렇지 않을 경우도 충분히 있을 수 있습니다. 혹시.. 2024. 2. 11. 파일 업로드 공격에 대해 기본 개념과 정의 파일 업로드 공격이란 말 그대로 파일을 업로드하여 서버를 장악하거나 파괴하는 등의 해킹 공격기법입니다. 공격자가 원하는 임의의 파일을 업로드할 수 있는 공격입니다. 큰 파일을 업로드하여 DoS 공격을 할 수도 있고 웹셸은 업로드하여 서버를 장악할 수 도 있으며, 피싱을 위한 파일이나 XSS 공격을 위한 파일을 업로드하는 등 공격 방식이 다양할 수 있습니다. 발생 원인과 위치 파일 업로드 공격이 발생하는 위치는 파일을 업로드 할 수 있는 곳입니다. 주로 게시판을 생각해볼 수 있으며, 그 외에도 프로필 사진을 업로드하거나, 서류를 제출하는 페이지, 또는 신분증을 찍어서 보내는 것도 이러한 공격의 포인트가 될 수 있습니다. 진단을 위한 모의해킹 시에 프락시 도구를 통해서 발생위치를 추정해 볼.. 2024. 2. 9. Server Side Script와 Client Side Script의 차이 Script란? 스크립트란 대본이라고 생각할 수 있습니다. 대본이란 뭘까요? 특정 누군가가 어떤 환경에서 어떻게 행동하라는 일종의 지침이고 가이드라고 할 수 있겠죠? 가장 쉬운 예로는 연극의 대본을 생각해 볼 수 있습니다. 연극에서 어떤 상황이 주어지고 배우는 그 상황에서 어떻게 행동하고 뭐라고 말하고 하는 등이 적혀있는 것이 연극대본입니다. 컴퓨터에서의 스크립트도 마찬가지입니다. 역할이 배정되기도 하고, 행동이나 대사가 적혀있기도 합니다. 컴퓨터는 스크립트를 해석하고 해석한 내용대로 행동합니다. 하지만 배우가 받는 스크립트와 조명감독이나 카메라 감독이 받는 스크립트는 차이가 있을 수 있겠죠? 그런 식으로 Client Side Script와 Server Side Script의 차이점을 생각해 볼 수 있습.. 2024. 2. 8. SFTP 연결 : Visual Studio Code에서 작업한 내용 웹 서버로 옮기기 SFTP란 FTP는 'File Transfer Protocol'의 약자입니다. 파일을 전송할 때 쓰이는 규약이라는 뜻이지요. 여기 앞에 S는 SSH를 의미하기도 하고 Secure라는 뜻으로 해석해도 결과적으로 같은 의미입니다. SSH를 써서 안전하게 FTP 통신을 할 수 있는 프로토콜이 바로 SFTP라고 할 수 있습니다. SFTP의 필요성 우리에게는 HTTP가 익숙하고, 파일도 HTTP로 많이 받아서 크게 FTP의 필요성을 느끼지 않습니다. 하지만, 때로는 다른 것 없이 파일만 간단하게 주고받는 기능을 구현하고 싶을 때가 있습니다. 이럴 때 쓰는 것이 FTP입니다. 그리고 안전한 통신을 위해서 SFTP를 사용하는 것입니다. HTTP와 마찬가지로 평문으로 데이터를 전송하면 스니핑과 같은 공격에 취약해지기 .. 2024. 2. 5. Panda Web Application 제작 기록(DevLog) Panda Web Application 'Panda Web Application(판다 웹앱)'은 제가 직접 개발한 웹 애플리케이션입니다. Segfault에서 제공한 Docker를 바탕으로 매우 간단한 웹 서버의 기능들을 구현하여 웹해킹 실습을 용이하게 하기 위해서 제작하였습니다. 실습의 편리함을 위해 현재는 보안기능을 최대한 구현하지 않은 상태로 제작하였습니다. 이후 보안 개선 실습을 통해 DVWA와 마찬가지로 보안 등급에 따라 취약함의 정도를 바꿀 수 있는 방식으로 개선할 계획이 있습니다. 프로젝트 배경 '판다 웹앱'을 개발하게 된 이유는 Segfault에서 진행하는 실무형 수업의 요구사항과 과제를 충족하기 위해서입니다. 해당 수업에서는 웹 애플리케이션을 직접 개발함으로써 웹의 개발환경과 과정을 이해하.. 2024. 2. 5. 이전 1 2 3 다음