공격기법 (11) 썸네일형 리스트형 파일 업로드/다운로드 취약점 파일 업로드 취약점 사용자의 파일이 서버의 파일 시스템에 저장되어 처리된다는 이유로 인해 취약점이 발생 서버 파일 시스템에 원하는 파일 경로 또는 파일 명을 업로드할 수 있다면 악의적인 공격자는 웹 어플리케이션 또는 서버의 서비스가 참조하는 파일을 업로드하여 공격에 사용 CGI(Common Gateway Interface) 용자의 요청을 받은 서버가 동적인 페이지를 구성하기 위해 엔진에 요청을 보내고 엔진이 처리한 결과를 서버에게 반환하는 기능 ex) 웹 서버는 Apache, 웹 어플리케이션은 php를 사용하는 서버에 사용자가 요청을 보내면 Apache는 사용자의 요청을 해석하고, 사용자가 요청하는 리소스의 확장자가 .php와 같이 php엔진을 사용하기로 설정되어 있는 확장자라면 mod_php(CGI)를.. Command Injection 웹 어플리케이션에서 OS Command를 사용하기 위해 PHP(system), Node JS(child_process), Python(os.system)과 같이 OS Command를 실행하는 함수가 존재 웹 어플리케이션에서 OS Command를 사용하는 이유는 이미 기능을 구현한 OS 실행 파일이 존재할 때 코드 상에서 다시 구현하지 않고 OS Command로 실행하면 더 편리하기 때문 OS Command는 내부적으로 쉘을 이용해 실행하는데, 쉘에는 한 줄에 여러 명령어를 실행하는 등의 쉘 사용자 편의성을 위해 제공하는 특수 문자들이 존재 ` `(백 쿼터) 명령어 치환 백쿼터 사이의 명령을 실행한 결과로 치환 ex) echo `echo hi` -> hi $( ) 명령어 치환 ex) echo $(echo .. SSRF(Server Side Request Forgery)공격 SSRF(Server Side Request Forgery)공격 공격자가 서버 측 응용 프로그램이 공격자가 선택한 임의의 도메인에 HTTP 요청을 할 수 있도록하는 웹 보안 취약점 웹 어플리케이션에서 요청을 보내기 때문에 웹 어플리케이션이 작동하고 있는 서버 내부의 포트, 서버와 연결된 내부망에 요청을 보낼 수 있고 Server-side에서 변조된 요청 / 의도하지 않은 서버로 요청가능 CSRF와의 차이점 CSRF는 변조된 요청이 웹 클라이언트(브라우저)가 보내며, SSRF는 웹 어플리케이션에서 보내지게 됨 공격 시나리오 서버 자체에 대한 SSRF 공격에서 공격자는 루프백 네트워크 인터페이스를 통해 응용 프로그램을 호스팅하는 서버에 HTTP 요청을 다시 보내도록 응용 프로그램을 유도. 일반적으로 127... XSS와 CSRF의 차이 XSS(Cross-Site-Script): - 공격대상: Client - 공격자는 대상 사용자의 브라우저 내에서 임의의 JavaScript를 실행 CSRF(Cross-Site-Request-Forgery) - 공격대상: Client(Client의 권한으로 Server에 요청) - 공격자는 피해자가 의도하지 않은 작업을 수행하도록 유도 XSS를 이용한 공격이 사용자가 특정 웹사이트를 신용하는 점을 노린 것이라면, CSRF는 특정 웹사이트가 사용자의 웹 브라우저를 신용하는 상태를 노린 것 XSS는 일반적으로 임의의 스크립트 코드를 실행할 수있는 반면 CSRF는 특정 작업 (예 : 비밀번호 변경)으로 제한되므로 CSRF보다 강력 성공적인 XSS 공격은 모든 안티 CSRF을 효과적으로 우회 참고 사이트:http.. 브루트 포스 공격 특정 정보를 알아내기 위한 공격 딕셔너리 공격 사람들이 자주 사용하는 패스워드를 이용하여 로그인 시도 칼리 리눅스의 /usr/share/john/password.lst (1990년대 중반에 많이 사용된 패스워드와 2006~2010년까지 웹사이트에서 많이 쓰인 패스워드로 구성되어 있는파일이 있음 적은양) /usr/share/wordlists의 rockyou.txt.gz 파일에는 1400만개 이상의 패스워드 존재 CSRF(Cross Site Request Forgery) CSRF 웹 브라우저는 기본적으로 Same-Origin-Policy에 위반되지 않은 모든 요청에 쿠키를 함께 전송 사용자의 의도와 무관하게 다른 사이트에 HTTP 요청을 보내는 것을 CSRF 공격 CSRF 공격을 통해 공격자가 얻을 수 있는 이득은 해당 세션 쿠키를 가진 사람만 사용할 수 있는 기능을 요청할 수 있다는 것 즉, , 피해자의 권한으로 의도하지 않은 요청 수행 GET파라미터를 이용한 CSRF 이미지를 로드하는 순간 test에게 10000원을 전송 form태그를 이용한 CSRF Submit iframe style="display:none"으로 form을 안보이게 한 뒤 form의 id값을 줘서 script에 id값을 동일한 id값을 가진 폼을 submit()으로 바로 제출 이 스크립트가 심겨진.. XSS(Cross Site Scripting)과 Cheat Sheet XSS 공격을 성공적으로 수행하기 위해서는 아래의 2가지 조건이 요구 1. 입력 데이터에 대한 충분한 검증 과정이 없어야함 입력한 데이터가 충분한 검증 과정이 이루어지지 않아 악성 스크립트가 삽입될 수 있어야함 2. 서버의 응답 데이터가 웹 브라우저 내 페이지에 출력 시 충분한 검증 과정이 없어야함 응답 데이터 출력 시 악성 스크립트가 웹 브라우저의 렌더링 과정에 성공적으로 포함되어야함 XSS를 터트기위해 주로 사용되는 태그들 script, iframe, on* 이벤트(onmouseover, onload, onerror 등), embed, object XSS는 크게 2가지로 분류 1. Reflected XSS 반사형 XSS 주로 검색기능에서 발생 2. Stored XSS 저장형 XSS 주로 댓글, 글쓰기.. SQL Injection SQL Injection SQL 쿼리에 사용자의 입력 데이터가 삽입되어 사용자가 원하는 쿼리를 실행할 수 있는 취약점 사용 목적과 행위에 따라 다양한 구조가 존재하며 대표적으로 아래와 같이 구분 DDL (Data definition language) 데이터를 정의하기 위한 언어 데이터를 저장하기 위한 스키마, 데이터베이스의 생성/수정/삭제 등의 행위를 수행 DML (Data manipulation language) 데이터를 조작하기 위한 언어 실제 데이터베이스 내에 존재하는 데이터에 대해 조회/저장/수정/삭제 등의 행위를 수행 DCL (Data control language) 데이터베이스의 접근 권한 등의 설정을 하기 위한 언어 데이터베이스내에 사용자의 사용 권한을 부여하기 위한 GRANT와 권한을 박탈.. 이전 1 2 다음