검색 본문
engeon.tistory.com En_Geon [SK shieldus Rookies 19기][애플리케이션 보안] - WebGoat, Bee box, BeEF, XSS, CSRF 1. BeEF를 이용한 XSS 공격 1) 설치 및 실행 (1) 설치 sudo apt install beef-xss 입력으로 설치 (2) 실행 sudo beef-xss 입력 실행 처음 실행하면 기본 비밀번호 재 설정을 해야 한다. 각자의 비밀번호를 입력하고 넘어가면 127.0.0.1:3000 주소로 BeEF 페이지가 열린다. ID에는 beef를 입력하고 각자가 설정한 비밀번호를 입력하고 로그인한다. 2) XSS 공격 (1) XSS - Stored(Blog) 이전 포스팅에서 스크립트로 공격했던 페이지에서 BeEF로 공격 실습한다. (2) hook.js Kali 가상머신에 2. Django 에서 XSS 1) 질문에 스크립트 코드 포함 저장 2) 저장된 질문 확인 (1) 질문 페이지 확인 스크립트 코드가 실행되지 않고 단순한 문자열로 출력된다. 페이지 소스 코드는 어떻게 되어 있는지 확인해 본다. (2) 페이지 소스 코드 소스 코드에서 보면 스크립트 코드가 HTML 인코딩되어 단순한 문자열로 출력되는 것을 확인할 수 있다. (3) DB 확인 DB에는 스크립트 코드가 들어있는 것을 확인할 수 있다. (4) 코드 확인 DB에 저장된 내용을 XSS 공역에 안전하도록 출력해 주는 부분이다. DTL에서 실행할 수 있는 코드를 안전하게 HTM 3. CSRF(크로스 사이트 요청 위조) 요청을 전달받은 서버가 요청의 절차와 주체를 검증하지 않고 요청을 처리했을 때 발생 희생자의 권한으로 요청이 처리되는 문제 발생 자동 회원가입, 자동 글쓰기, 광고 배너 클릭 등에 악용 1) 동작 원리 만약 패스워드 변경 처리 페이지가 있을 때 아래와 같이 기능을 구현했다고 가정한다. 로그인(인증) 여부 확인 로그인해야만 패스워드 변경 가능 처리에 필요한 사용자 입력값이 전달되었는지 확인 패스워드 변경을 위한 사용자가 입력한 새 패스워드가 전달되었는지 확인 처리에 필요한 시스템이 가지고 있는 값을 추출 패스워드 변경을 4. Bee box 실습 로그인한 사용자의 패스워드를 변경을 신청하는 페이지다. 1) 개발자도구 이용 내용 분석 <h1>CSRF (Change Password)</h1> <p>Change your password.</p> <form action="/bWAPP/csrf_1.php" method="GET"> <p><label for="password_new">New password:</label><br> <input type="password" id="password_new" name="password 5. Django CSRF 토큰 발행 프레임워크에서 CSRF 토큰 발행 및 검증 처리 1) config\settings.py MIDDLEWARE에 CSRF 항목 활성화 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 31 1) 설치 및 실행 (1) 설치 sudo apt install beef-xss 입력으로 설치 (2) 실행 sudo beef-xss 입력 실행 처음 실행하면 기본 비밀번호 재 설정을 해야 한다. 각자의 비밀번호를 입력하고 넘어가면 127.0.0.1:3000 주소로 BeEF 페이지가 열린다. ID에는 beef를 입력하고 각자가 설정한 비밀번호를 입력하고 로그인한다. 2) XSS 공격 (1) XSS - Stored(Blog) 이전 포스팅에서 스크립트로 공격했던 페이지에서 BeEF로 공격 실습한다. (2) hook.js Kali 가상머신에 beef 클라우드 XSS CSRF webgoat Burp Suite 애플리케이션 보안 SK shieldus Rookies 19기 클라우드기반 스마트융합보안 Bee box 2024.03.31 블로그 검색 더보기 dothewillof.tistory.com 뒹굴거리는 IT 개발자 [Java/maven] Lucy-XSS 교차 사이트 스크립팅 (XSS) 보안 라이브러리 String dirty = "\"><script>alert('xss');</script>"; String clean = XssPreventer.escape(dirty); assertEquals(clean, ""><script>alert('xss');</script>"); assertEquals(dirty, XssPreventer.unescape(clean)); } XssFilter : SAX @Test public void testSuperSetFix() { XssSaxFilter... 교차사이트스크립팅 lucy-xss xss공격대응 xssfilter xsspreventer 소프트웨어보안약점 소프트웨어웹취약점 웹취약점대응 22시간전 soriaudio.com common js /** * @file common.js * @author NAVER (developers@xpressengine.com) * @brief 몇가지 유용한 & 기본적으로 자주 사용되는 자바스크립트 함... amp|lt|gt|quot|#039);/g, function(m) { return map[m]; }); }; /** * @brief string prototype으로...replace(/<\/?[a-z][^>]*>/ig, ""); }; /** * @brief string prototype으로 trim 함수 추가 **/ if... 웹문서 검색 더보기 jjang-joon.tistory.com JJANG-JOON XSS(크로스사이트스크립팅) 기본 우회 방법 및 스킬업 XSS 공격의 원리 XSS 공격의 기본 원리는 사용자로부터 입력 받은 데이터를 적절히 검증하거나 이스케이프 처리하지 않고 웹 페이지에 그대로 반영할 때 발생한다. 공격자는 이러한 취약점을 이용해 스크립트 코드를 웹 어플리케이션에 주입하고, 이 코드가 다른 사용자의 브라우저에서 실행되도록 한다. 실행된 스크립트는 공격자에게 사용자의 데이터를 전송하거나, 사용자를 속여 피싱 사이트로 유도하는 등 다양한 악의적 행위를 할 수 있다. XSS 공격의 유형 저장된 XSS (Stored XSS): 악성 스크립트가 웹 어플리케이션 서버에 저장되어, 해당 페이지를 방문하는 모든 사용자에게 영향을 미치는 형태이다. 포럼 게시물, 댓글, 사용자 프로필 정보 등에 악성 스크립트를 삽입할 수 있다. 반사된 XSS (Reflected XSS): 사용자가 공격자가 조작한 링크를 클릭할 때, 서버로부터 악성 스크립트가 포함된 응답이 바로 반환되어 실행되는 형태이다. 검색 엔진, 메일, 메시지 등을 통해 공격 링크를 유포할 수 있다. DOM 기반 XSS (DOM-based XSS): 원래의 서버 응답은 XSS 공격 대응 방법 입력 검증: 사용자 입력 데이터에 대한 검증을 철저히 수행하여, 스크립트 등의 실행 가능한 코드가 포함되어 있지 않도록 한다. 출력 이스케이프 처리: 사용자 입력을 웹 페이지에 출력할 때, 스크립트와 같은 실행 가능한 코드가 브라우저에 의해 실행되지 않도록 HTML 엔티티 등으로 이스케이프 처리한다. 콘텐츠 보안 정책 (CSP): CSP를 사용하여, 특정 도메인이나 방식으로만 스크립트를 실행할 수 있도록 제한함으로써, XSS 공격의 위험을 줄일 수 있다. 쿠키에 HttpOnly와 Secure 플래그 설정: 이 플래그들을 설정함으로써 XSS 우회 방법 HTML 엔티티 사용 웹 어플리케이션이 특정 태그를 필터링하는 경우, HTML 엔티티를 사용하여 필터를 우회할 수 있다. 예시: < 대신 < 또는 > 대신 >를 사용할 수 있다. 이벤트 핸들러 일부 웹 어플리케이션은 <script> 태그를 필터링하지만, 다른 HTML 요소의 이벤트 핸들러 내에서 JavaScript 코드를 실행할 수 있는 것을 허용할 수 있다. 예시: <img src=x onerror=alert(1)> - 이 코드는 이미지 로드에 실패했을 때 alert를 실행한다. JavaScript URL 사용 <a> 4 HTML 엔티티 사용 웹 어플리케이션이 특정 태그를 필터링하는 경우, HTML 엔티티를 사용하여 필터를 우회할 수 있다. 예시: < 대신 < 또는 > 대신 >를 사용할 수 있다. 이벤트 핸들러 일부 웹 어플리케이션은 <script> 태그를 필터링하지만, 다른 HTML 요소의 이벤트 핸들러 내에서 JavaScript 코드를 실행할 수 있는 것을 허용할 수 있다. 예시: <img src=x onerror=alert(1)> - 이 코드는 이미지 로드에 실패했을 때 alert를 실행한다. JavaScript URL 사용 <a> JavaScript 보안 웹 XSS 해킹 우회 웹보안 우회방법 크로스사이트스크립팅 2024.02.15 ep.knou.ac.kr portal epo __SPECIAL_JS_REDIRECT__ 함수 //------------------------------------------------------------------- String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); }; //]]> </script> <!-- 알림창 STYLE... imbay.tistory.com Im Bay [Hanaro] 67일차 / 시큐어 코딩 (입력데이터 검증), Spring Boot (네비게이션 바, 페이징) 01 입력데이터 검증 및 표현 SQL 삽입 DB 입력 데이터에 대한 유효성 검증을 해야한다. 예시 JDBC String gubun = request.getParameter("gubun"); // 사용자 입력 값 변수를 ? 문자로 바인딩 변수 사용 String sql = "SELECT * FROM board WHERE b_gubun = ?"; Connection con = db.getConnection(); // PreparedStatement 사용 PreparedStatement pstmt = con.prepareStatement(sql); pst 네비게이션 바, 페이징 네비게이션 바 추가하기 (부트스트랩) resources- static 폴더에 bootstrap.min.js 파일 생성 /*! * Bootstrap v5.3.2 (https://getbootstrap.com/) * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) SQL 삽입 DB 입력 데이터에 대한 유효성 검증을 해야한다. 예시 JDBC String gubun = request.getParameter("gubun"); // 사용자 입력 값 변수를 ? 문자로 바인딩 변수 사용 String sql = "SELECT * FROM board WHERE b_gubun = ?"; Connection con = db.getConnection(); // PreparedStatement 사용 PreparedStatement pstmt = con.prepareStatement(sql); pst SpringBoot SecureCoding HANARO 2024.04.23 통합웹 더보기