취약점

게시판과 같이 사용자가 입력한 정보가 서버 측 DB에 저장되어 있다가 타 사용자가 해당 정보를 열람할 때

DB에 저장되어 있는 정보를 가져와 화면에 출력하는 방식의 웹 애플리케이션에서 발생하는 취약점으로서,

XSS의 가장 핵심적인 취약점이라고 할 수 있다.

불특정 다수를 대상으로 열람자의 웹브라우저에서 공격 스크립트를 실행할 수 있기 때문에 심각한 위협이 발생한다.

 

공격자가 XSS를 목적으로 악성 스크립트를 삽입하여 둘 수 있는 위치는 비단 게시판의 글 본문뿐만 아니라 제목, 작성자 이름, 날짜, 첨부파일 이름 등이 모두 가능하며, 또한 게시판 외에도 사용자 프로필의 닉네임, 주소, 전화번호, 등 사용자가 입력이 가능한 모든 데이터에 스크립트가 삽입될 수 있다.

 

공격 과정

 

 

실습

환경 : VMware CentOS 8

172.30.1.56 웹서버

172.30.1.53 해커

 

 

◾ test계정으로 악성 스크립트를 작성하여 게시판에 등록합니다!

 

◾ 해커의 웹서버로 세션 값을 전달하는 스크립트 등록!

 

 

 

◾ 관리자가 글을 열람했고 스크립트는 수행되었습니다!

 

 

◾ 관리자의 세션이 잘 들어왔습니다, 로그인해볼까요?

 

 

◾ 개발자 모드(F12)로 들어와서 쿠키값을 수정하고 새로고침을 해줍니다

 

 

◾ admin으로 로그인이 되었죠?

ID와PW를 모르더라도 세션을 통해 관리자로 로그인에 성공하였습니다!

 

보안조치

1. 특수문자(< >)를 HTML문자로 치환

2. 필요한 경우 허용 특수문자만 허용하도록 화이트리스트로 운영한다

 

특수문자(< >)를 HTML문자로 치환

public int write(String bbsTitle, String userID, String bbsContent) {
    
    	//특수 문자를 html문자로 치환
    	bbsTitle = bbsTitle.replace("<","&lt;").replace(">","&gt;");	
    	bbsContent = bbsContent.replace("<","&lt;").replace(">","&gt;");
    	
     
        String SQL = "INSERT INTO BBS VALUES (?,?,?,?,?,?)";
        try {
            PreparedStatement pstmt = conn.prepareStatement(SQL);
            ...
        } catch (Exception e) {
            e.printStackTrace();
        }
        return -1; 
        
    }

 

마무리

XSS공격이나 CSRF 공격은 스크립트 문을 악용하는 특징을 가지기 때문에, 스크립트에서 < >만 막아줘도 스크립트 공격을 막을 수 있다~

 

 

 

' > 보안 설정' 카테고리의 다른 글

[JSP] 9. 디렉토리 인덱싱  (0) 2020.12.27
[JSP] 7.URL 파라미터 조작  (0) 2020.09.09
[JSP] 4.파일 다운로드  (0) 2020.09.08
[JSP] 2.SQL 인젝션  (0) 2020.09.08
[JSP] 보안 개발 가이드 개요  (0) 2020.09.05

보안 개발 가이드

JSP 보안 개발 가이드를 기반으로 나만의 웸서버에 보안 설정을 적용하기!

 

 실습환경

운영체제 : CentOS 8

웹서버 : Apatche+Tomcat 

구축은 안경잡이 개발자님의 강의를 기반으로 제작함

www.youtube.com/watch?v=wEIBDHfoMBg&list=PLRx0vPvlEmdAZv_okJzox5wj2gG_fNh_6

 

 

참조

' > 보안 설정' 카테고리의 다른 글

[JSP] 9. 디렉토리 인덱싱  (0) 2020.12.27
[JSP] 7.URL 파라미터 조작  (0) 2020.09.09
[JSP] 4.파일 다운로드  (0) 2020.09.08
[JSP] 2.SQL 인젝션  (0) 2020.09.08
[JSP] 1-1.Stored XSS 취약점  (0) 2020.09.08

+ Recent posts