Hack/Web46 Relative Path Overwrite(RPO) 개요Relative Path Overwrite는 Browser와 Server가 상대경로를 해석하는 과정의 차이점을 이용한 공격 기법입니다. 해당 취약점에서 가장 중요한 부분은 Browser에서 상대 경로를 해석하여 처리하는 방식입니다. 아래 코드는 styles.css와 script.js를 상대경로를 통하여 불러옵니다. 현재 URL 주소가 https://hacksms.co.kr/rpo/index.php 일 경우 Browser가 styles.css와 script.js의 경로를 다음과 같이 해석합니다.https://hacksms.co.kr/rpo/styles.css https://hacksms.co.kr/rpo/script.js 만약 URL 주소가 https://hacksms.co.kr/rpo/fake/.... 2020. 9. 22. XS Search Attack (Cross Site Search) 개요 XS Search 공격은 공격자가 포함시킨 스크립트가 클라이언트에서 실행되어 메일 내용, 연락처, 검색 기록과 같은 정보들을 획득할 수 있으며, 스크립트 실행 과정 중 발생하는 동일한 출처 정책(SOP)을 우회 가능한 공격입니다. XS Search 공격에 사용되는 방법들은 Frame Count, Histroy Length 등 여럿 존재하지만, 이번 포스팅에서는 서로 다른 결과가 존재하는 응답간의 시간 차이를 통한 공격과 Frame Count를 통한 SOP 우회 공격을 진행할 것입니다. 분석 아래 그림의 Target Server는 메일 서버이며 검색 결과가 존재하는 경우와 존재하지 않는 경우의 시간 차이가 1초 이상 난다고 가정해본다면, 공격자는 XS Search 공격을 통하여 메일 서버에 존재하는 .. 2020. 9. 22. Laravel SQL Injection ( Version < 5.8.11) 개요 Laravel Framework는 SELECT Query에서 사용할 Columns을 입력 값을 통해 지정할 수 있습니다. JSON Data의 경우 addSelect() 함수를 통하여 빠르게 변환할 수 있으며, addSelect() 함수는 json_extract() 함수로 변환되어 쿼리에 사용됩니다. Blog::query() ->addSelect('title->en'); SELECT json_extract(`title`, '$."en"') FROM blogs; 분석 addSelect() 함수의 변환 과정에서는 Escape 되지 않기 때문에 SQL Injeciton 취약점이 발생할 수 있습니다. 만약 title->en 데이터 부분에 '#를 추가할 수 있다면 공격자가 직접 json_extract 함수를 .. 2020. 9. 22. Laravel Framework 보안 관련 내용 정리 보안 관련 내용 Public 디렉토리 노출 최소화 및 설정 파일 숨김 기존의 PHP 웹 애플리케이션들은 구동에 필요한 설정 파일을 웹 서버에 위치 시키거나 절대 경로로 읽어들이는 경우가 많았습니다. 라라벨의 경우 구동에 필요한 설정 파일을 DocumentRoot와 격리하였고, php 직접 호출이 아닌 애플리케이션 라우팅을 통해 서비스를 제공하도록 설계되었으며, public 디렉토리에 단 하나의 PHP 파일만 존재함으로써 public 디렉토리와 설정 파일의 노출 및 .php 파일 직접 호출을 통한 공격 발생 가능성을 최소화 하였습니다. public 디렉토리 (Laravel Korea 설명) public 디렉토리는 애플리케이션에 진입하는 모든 request-요청들에 대한 진입점 역할과 오토로딩을 설정하는 i.. 2020. 9. 22. Reflected File Download 개요 사용자의 입력 데이터가 다운로드 되는 파일에 영향을 줄 경우, 이를 이용하여 정상적인 파일을 악성 파일로 변경하여 다운로드 하게 할 수 있습니다. 해당 취약점이 발생하기 위해서는 3가지의 조건이 필요합니다. 1. 파일 다운로드 Content-Disposition 헤더가 attachment로 구성되면 응답 데이터를 첨부파일로 다운로드 받을 수 있습니다. 2. 실행 가능한 확장자 및 파일 명 변경 필요 파일을 실행하는 클라이언트 측에서 실행 가능한 확장자로 다운로드 받을 수 있어야 합니다. 3. 사용자 입력 값 응답 데이터 반영 입력 값이 응답 데이터에 반영될 때 시스템 명령어를 통해 악성 코드를 생성할 수 있습니다. Windows Command의 경우 "", "\" 모두 문자열을 닫은 것으로 인식한다.. 2020. 9. 22. Phar 파일을 이용한 PHP Unserialization 개요 Phar(PHP Archive)는 많은 코드 파일 및 기타 리소스를 단일 아카이브 파일로 사용할 수 있는 패키지 형식입니다. Phar는 Stub, Manifest, File Contents, Signature(Optional) 총 4개의 구조로 이뤄지며, Signature을 제외한 나머지 구조에 대한 설명은 다음과 같습니다. Stub 가 존재해야만 Phar 파일로 인식합니다. Manifest Phar 파일의 Meta-Data가 포함되어 있으며, 모든 직렬화 된 객체가 포함될 수 있습니다. 해당 구조에서 역직렬화 취약점이 발생합니다. File Contents Phar 내 데이터 영역입니다. 직렬화 된 Meta-Data는 Phar:// Stream Wrapper에 의해 처음 액세스될 때 역직렬화 되며,.. 2020. 9. 22. commons-fileupload Module WAF Filtering Bypass 개요 JSP로 구현된 웹 서버에서 파일 업로드를 구현할 때 commons-fileupload 라는 Module을 이용하는 경우가 많습니다. 웹 서버들의 경우 보통 WAF(Web Application Firewall)를 거쳐 WAS(Web Application Server)로 Request를 전송하는 것이 대부분인데, 만약 파일 확장자 필터링을 WAF에서만 수행할 경우 필터링 우회 취약점이 발생하게 됩니다. 취약점 취약 환경 commons-fileupload (Version 1.3 ~) 테스트 환경 CCE 2019 Babyweb Docker (tomcat URL 변경 파일) Docker 빌드 명령어 docker build -t babyweb . docker run -p 80:80 babyweb 분석 해당 .. 2020. 9. 21. CVE 2020-10487 (Ghostcat : Tomcat AJP) 개요 CVE 2020-10487은 Tomcat의 취약한 버전에서 Default로 열려있는 Connector 중 AJP Protocol에서 발생합니다. Tomcat은 AJP Request를 받았을 경우 org.apache.coyote.ajp.AjpProcessor를 호출하여 AJP 메세지를 처리하며, prepareRequest는 송신한 데이터를 추출하여 request 객체의 Attribute 속성으로 설정할 수 있습니다. 설정 가능한 Attribute 속성은 다음과 같습니다. javax.servlet.include.request_uri javax.servlet.include.path_info javax.servlet.include.servlet_path 해당 취약점을 이용하여 webapp 하위에 있는 모든.. 2020. 9. 21. Nginx off by slash fail 개요 Nginx에는 특정 경로로 요청을 받을 때 미리 설정한 경로로 변경하여 Redirect 해주는 기능인 alias와 root가 있습니다. alias location에 설정된 경로로 접속 시 alias에 설정된 경로로 Redirect root location에 설정된 경로로 접속시 root에 설정된 경로에 추가하여 Redirect 즉, 이를 간단히 나타내면 다음과 같습니다. 파일과 디렉토리의 경로 설정에 대한 올바른 사용법은 다음과 같습니다. 디렉토리 경로 설정법 location /test/ { alias directory path } 파일 경로 설정법 location /test { alias file path } 만약 디렉토리에 대한 경로 사용 시 location 경로에 / 를 실수로 입력하지 않게 .. 2020. 9. 21. 이전 1 2 3 4 5 6 다음