요점정리 - 2025-12-23

오늘 공부한 내용
<h5>오늘 공부한 내용:</h5> <ul> <li> <pre> {% set html_content %} ## 🛠️ 웹 해커의 도구 및 SNS 보안 위협 요약 --- ## 1. Chapter 07: 웹 해커의 필수 도구 웹 취약점을 분석하고 공격을 수행하기 위해 해커는 다음과 같은 도구들을 활용합니다. ### A. 웹 브라우저 개발자 도구 (F12) * **기능**: HTML/CSS 코드 수정, 네트워크 패킷 분석, 쿠키 값 확인. * **특징**: 크롬, 엣지, 파이어폭스 등 현대적인 브라우저는 모두 강력한 개발자 도구를 내장하고 있어 별도의 도구 없이도 기본적인 취약점 분석이 가능합니다. ### B. Burp Suite (웹 프록시 도구) 웹 서버와 브라우저 사이에서 패킷을 가로채고 수정하는 가장 핵심적인 도구입니다. * **Target**: 웹 사이트의 전체 디렉터리 구조와 HTTP 헤더 정보를 한눈에 파악. * **Intruder**: 변숫값을 자동으로 변경하며 반복 요청을 보내는 기능 (무작위 대입 공격 등). * **Repeater**: 특정 요청을 수정하여 반복적으로 전송하고 응답을 확인하는 기능. ### C. 웹 취약점 스캐너 자동으로 취약점을 찾아주는 도구로, 효율적인 보안 진단을 돕습니다. * **Nikto / Sqlmap**: 특정 목적(서버 설정, SQL 인젝션)에 특화된 오픈소스 스캐너. * **Acunetix / AppScan**: 종합적인 취약점 진단 및 상세 보고서 생성이 가능한 상용 솔루션. --- ## 2. Chapter 08: SNS 보안 위협과 대응 웹 2.0 시대의 도래로 사용자의 참여가 늘어나면서, 기술적 취약점뿐만 아니라 **사람을 대상으로 하는 사회공학적 공격**이 증가했습니다. ### 주요 SNS 보안 위협 및 대응 | 위협 유형 | 내용 설명 | 대응 방안 | | --- | --- | --- | | **악성 소프트웨어** | SNS 링크나 앱을 통해 웜, 랜섬웨어 유포 | 출처 불분명한 링크 클릭 금지, 최신 백신 유지 | | **피싱 (Phishing)** | 가짜 사이트로 유도하여 개인정보 탈취 | URL 주소 확인, 개인정보 요구 시 직접 확인 | | **이블 트윈 (Evil Twin)** | 유명인/지인을 사칭한 가짜 계정 생성 | SNS 공개 범위 설정(친구 공개 등) 및 사칭 신고 | | **신원 도용** | 타인의 정보를 이용한 사기 행위 | 118(개인정보침해신고) 등 전문 기관 신고 | | **사이버 폭력** | 온라인상의 지속적인 음해와 괴롭힘 | 메시지 증거 보관, 무시 및 차단, 교육 실시 | --- <12. 23일> (세션) 로그인 사이트를 만들자. mkdir /var/lib/tomcat10/webapps/ROOT/session cd /var/lib/tomcat10/webapps/ROOT/session 1. 로그인 페이지 (login.jsp) <%@ page contentType="text/html;charset=UTF-8" %> <html> <head><title>로그인</title></head> <body> <h2>로그인</h2> <form action="loginCheck.jsp" method="post"> 아이디: <input type="text" name="uname"><br> 비밀번호: <input type="password" name="pass"><br> <input type="submit" value="로그인"> </form> <% String error = request.getParameter("error"); if (error != null && error.equals("1")) { out.print("<p style='color:red'>로그인 실패</p>"); } %> </body> </html> 2. 로그인 체크 (loginCheck.jsp) <%@ page import="java.sql.*" %> <% // DB 연결 정보 String driver = "org.mariadb.jdbc.Driver"; String url = "jdbc:mariadb://localhost:3306/cloud_db"; String dbUser = "mydb"; String dbPass = "mydb123"; // 실제 비밀번호로 변경 // 사용자 입력: String uname = request.getParameter("uname"); String pass = request.getParameter("pass"); Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { Class.forName(driver); conn = DriverManager.getConnection(url, dbUser, dbPass); // userInfo 테이블에서 사용자 조회 String sql = "SELECT uid, uname, priority FROM userInfo WHERE uname=? AND pass=?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, uname); pstmt.setString(2, pass); rs = pstmt.executeQuery(); if (rs.next()) { // 로그인 성공 - 세션에 저장 session.setAttribute("uid", rs.getInt("uid")); session.setAttribute("uname", rs.getString("uname")); session.setAttribute("priority", rs.getInt("priority")); session.setAttribute("login", "true"); response.sendRedirect("main.jsp"); } else { response.sendRedirect("login.jsp?error=1"); } } catch(Exception e) { e.printStackTrace(); response.sendRedirect("login.jsp?error=1"); } finally { if (rs != null) try { rs.close(); } catch(Exception e) {} if (pstmt != null) try { pstmt.close(); } catch(Exception e) {} if (conn != null) try { conn.close(); } catch(Exception e) {} } %> 3. 메인 페이지 (main.jsp) <%@ page contentType="text/html;charset=UTF-8" %> <% // 세션 체크 if (session.getAttribute("login") == null || !session.getAttribute("login").equals("true")) { response.sendRedirect("login.jsp"); return; } %> <html> <head><title>메인</title></head> <body> <h2>메인 페이지</h2> <p>환영합니다, <%= session.getAttribute("uname") %>님!</p> <p>사용자 ID: <%= session.getAttribute("uid") %></p> <p>권한 레벨: <%= session.getAttribute("priority") %></p> <hr> <a href="mypage.jsp">마이페이지</a> | <a href="board.jsp">게시판</a> | <a href="logout.jsp">로그아웃</a> </body> </html> 4. 세션 체크 모듈 (sessionCheck.jsp) <% // 세션 체크 함수 boolean isLogin = session.getAttribute("login") != null && session.getAttribute("login").equals("true"); // 로그인 안되어 있으면 로그인 페이지로 if (!isLogin) { response.sendRedirect("login.jsp"); return; // 중요: 실행 중지 } %> 5. 보호된 페이지 예제 (mypage.jsp) <%@ page contentType="text/html;charset=UTF-8" %> <%@ include file="sessionCheck.jsp" %> <html> <head><title>마이페이지</title></head> <body> <h2>마이페이지</h2> <h3>세션 정보</h3> <ul> <li>아이디: <%= session.getAttribute("uname") %></li> <li>UID: <%= session.getAttribute("uid") %></li> <li>권한: <%= session.getAttribute("priority") %></li> <li>세션 ID: <%= session.getId() %></li> </ul>