🛑 1. 크로스사이트스크립트(XSS, Cross-Site Scripting) 취약점

✅ 설명

여러 사용자가 보는 게시판이나 메일 등을 통해 악성 스크립트를 삽입하는 공격 기법이며, 사용자 입력값에 대한 검증 없이 웹페이지에 출력할 경우, 공격자가 악성 스크립트를 삽입할 수 있는 취약점이다. 이 스크립트는 다른 사용자의 브라우저에서 실행되어 세션 탈취, 피싱, 사이트 변조 등이 가능하다.

출처 : sk_shieldus

💥 공격 방법

공격자가 삽입한 악성스크립트가 사용자 측에서 어떻게 동작하는지에 따라 크게 3가지 분류할 수 있다.

  1. Stored XSS (저장형)
    • 게시판, 댓글 등에 <script>document.cookie</script> 삽입
    • 더보기

      ✅ 스크립트(script)란?

      웹에서 말하는 스크립트

      브라우저가 이해하고 실행할 수 있는 코드를 말한다.
      대표적으로 JavaScript가 있다.

    • 악성 스크립트가 서버 DB에 저장되고, 다른 사용자가 해당 게시글을 열면 자동 실행
      출처 : sk_shieldus

      출처 : sk_shieldus
        
  2. Reflected XSS (반사형)
    • 악성 스크립트를 포함한 링크를 전송
    • URL 쿼리값이 웹페이지에 그대로 반영되면 스크립트 실행됨
    • 예: http://site.com/?q=<script>alert(1)</script>:
      출처 : sk_shieldus
  3. DOM-based XSS
    • JavaScript가 document.location, innerHTML 등을 통해 입력값을 DOM에 직접 삽입할 때 발생
    • (*dom이란 브라우저가 HTML을 이해하고, 웹페이지를 구조화해서 다루기 쉽게 만든 형태이다. )
    • 서버는 관련 없고 클라이언트 측 코드 문제
    • 예: example.com/#<script>alert(1)</script>
      출처 : sk_shieldus

      출처 : sk_shieldus

 

🛡 대응방안 - 크로스사이트스크립트(XSS)

XSS 취약점은 악성 스크립트가 삽입되어 사용자 브라우저에서 실행되는 문제이므로, 다음과 같은 입력 검증출력 무효화를 통해 대응해야 한다:

 

1. 입력값 필터링

  • 사용자가 입력하는 데이터에 대해 스크립트 관련 특수문자(<, >, ", ', (, ))를 HTML Entity로 치환하여 저장 전 필터링한다.
searchWord = searchWord.replaceAll("<","&lt;");
searchWord = searchWord.replaceAll(">","&gt;");
searchWord = searchWord.replaceAll("\"","&quot;");
searchWord = searchWord.replaceAll("'","&#x27;");
searchWord = searchWord.replaceAll("(","&#40;");
searchWord = searchWord.replaceAll(")","&#41;");
  • 이 처리를 통해 <script>&lt;script&gt;로 변환되어 실행되지 않음.

 

2. 출력 시 무효화(Escape)

  • 출력 시에도 입력값이 HTML로 해석되지 않도록 동일한 방식으로 치환해 스크립트 실행을 막는다.

 

3. 허용 태그만 예외 처리 (WhiteList Filtering)

  • 게시판 등 HTML 태그 사용이 필요한 경우, <p>, <br> 등 필요한 최소한의 태그만 허용한다.
searchWord = searchWord.replaceAll("<p>","<p>");
searchWord = searchWord.replaceAll("<br>","<br>");

 

4. 차단할 문자열 설정 (BlackList Filtering)

  • javascript, alert, onerror, document 등 자주 사용되는 공격 키워드를 필터링해 차단.
  • 단, 누락 가능성이나 정교한 우회가 가능하므로 단독으로 쓰는 것은 위험.

 

5. XSS 필터 라이브러리 활용

  • 검증된 외부 라이브러리를 통해 안전하고 효율적으로 방어 가능:
    • Lucy-XSS-Filter - Naver에서 제공, Java 기반 WhiteList 필터
    • OWASP ESAPI - 다양한 언어 지원, OWASP에서 제공하는 보안 API
더보기

✅ CSRF (Cross-Site Request Forgery) 쉽게 설명하기

CSRF는 사용자가 로그인된 상태에서, 악성 웹사이트가 사용자의 권한으로 원하지 않는 작업을 서버에 요청하는 공격이다. 예를 들어, 은행 계좌에 로그인한 상태에서 악성 사이트에 접속하면, 사용자가 모르게 돈을 이체하는 요청이 보내질 수 있다.

✅ XSS와 CSRF 차이점

  • XSS: 악성 스크립트를 사용자의 브라우저에서 실행시켜 정보를 탈취하거나 피싱 공격을 한다.
  • CSRF: 사용자의 권한을 도용해 서버에 원하지 않는 요청을 보낸다.

둘의 주요 차이점은 공격 대상과 방식이다.


🛑 2. SQL Injection (SQL 인젝션) 취약점

✅ 설명

웹 애플리케이션이 사용자 입력값을 SQL 쿼리에 직접 포함할 경우, 공격자가 쿼리 구조를 조작하여 인증 우회, 데이터 탈취, DB 조작 등을 수행할 수 있는 취약점이다.


💥 공격 유형

1. 인밴디드(기본형) SQL Injection

  • 가장 기본적인 형태로, 공격자는 쿼리에 직접 SQL 구문을 삽입하여 인증 우회나 데이터 조회를 시도한다. 이때 SQL 문법에 악성 코드를 삽입하여 의도한 대로 쿼리를 변조한다.
예시
' OR '1'='1
  • 공격 과정
    • 사용자가 로그인 폼에 username과 password를 입력한다고 가정
    • password에 ' OR '1'='1를 입력하면, 쿼리가 다음과 같이 변형됨:
    • SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1'
    • '1'='1'은 항상 참이므로, 쿼리가 항상 참으로 평가되어 인증을 우회할 수 있음.

 

2. 블라인드 SQL Injection

  • 공격자가 직접적으로 오류 메시지나 데이터베이스 정보를 확인할 수 없고, 참/거짓에 대한 응답만 받을 수 있다. 공격자는 이를 이용해 점차적으로 정보를 추측하고 파악한다.
예시
' AND 1=1--
' AND 1=2--
  • 공격 과정
    • ' AND 1=1--는 항상 참이므로 응답이 정상적으로 돌아오고,
    • ' AND 1=2--는 거짓이므로 응답이 다르게 돌아옵니다.
      이를 통해 공격자는 조건문이 참인지 거짓인지 확인하고, 데이터베이스 구조나 값을 추측할 수 있습니다.

 

3. 타임 기반 블라인드 SQL Injection

  • 쿼리 응답 시간의 차이를 통해 데이터베이스의 참/거짓 값을 구분하는 방식입니다. 조건문이 참일 경우 서버가 지연 시간을 발생시켜, 공격자는 응답 지연 시간을 통해 정보를 추측합니다.
예시
' OR IF(1=1, SLEEP(5), 0)--
  • 공격 과정
    • IF(1=1, SLEEP(5), 0)은 참일 경우 5초 동안 지연이 발생하게 하므로, 공격자는 응답 시간이 지연되는지 여부를 확인할 수 있습니다.
    • 예를 들어, IF(1=2, SLEEP(5), 0)을 입력하면 응답 지연 없이 빠르게 돌아오고, IF(1=1, SLEEP(5), 0)을 입력하면 5초 동안 응답이 지연됩니다.
    • 공격자는 이를 반복하여 데이터베이스의 정보를 추측합니다.

 

4. 유니온 기반 SQL Injection

  • UNION 연산자를 사용하여 여러 쿼리의 결과를 결합하는 방식입니다. 공격자는 다른 테이블의 데이터를 결과로 가져오는 방식으로 정보를 탈취할 수 있습니다.
' UNION SELECT username, password FROM users--
  • 공격 과정
    • 기본적으로 로그인 폼에서는 사용자 이름과 비밀번호를 확인하는 쿼리가 실행됩니다.
    • 공격자는 UNION 연산자를 사용하여 다른 테이블에서 정보를 가져옵니다.
      • 예를 들어, users 테이블에서 username과 password를 가져오면:
      SELECT * FROM login WHERE username = 'admin' AND password = '' UNION SELECT username, password FROM users--
      
    • 이렇게 되면 users 테이블의 username과 password 정보가 공격자의 화면에 노출될 수 있습니다.

💡 요약

공격 유형 설명 예시 공격 방식
인밴디드(기본형) 쿼리에 직접 SQL 삽입 ' OR '1'='1 쿼리 변조로 인증 우회
블라인드 참/거짓 응답만 확인 가능 ' AND 1=1-- / ' AND 1=2-- 응답이 참/거짓으로 나누어짐
타임 기반 블라인드 응답 지연으로 판단 ' OR IF(1=1, SLEEP(5), 0)-- 응답 시간 차이로 조건 확인
유니온 기반 다른 테이블 데이터 출력 ' UNION SELECT username, password FROM users-- 다른 테이블 데이터 결합

 


🛡 대응방안

1. Prepared Statement 사용 (권장)

  • 입력값을 직접 SQL에 삽입하지 않고 변수로 바인딩
  • SQL Injection 공격에 매우 강력함
String sql = "SELECT * FROM MEMBER WHERE ID = ? AND PW = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userId);
pstmt.setString(2, userPw);
더보기

SQL에서 "바인딩(binding)한다"는 것은, 사용자 입력값을 SQL 쿼리문 안에 직접 넣는 대신, 미리 정의된 변수 자리에 따로 값을 할당하는 것을 의미한다.

예시:

SELECT * FROM users WHERE id = ? AND pw = ?

여기서 ?는 자리표시자(placeholder)이고, 이 자리에 실제 입력값을 setString() 같은 메서드로 나중에 "바인딩"하는 것이다.

이렇게 하면 입력값이 SQL 구문으로 해석되지 않기 때문에 SQL Injection 공격이 불가능하다.
쉽게 말해, 쿼리문과 입력값을 분리하여 처리하는 것이라고 보면 된다.


 

2. 입력값 검증 및 필터링(차선책)

 

1)화이트리스트(Whitelist) 기반 입력값 검증

  • 예를 들어, 주민등록번호 입력란이라면 숫자만 허용
  • 전화번호, 아이디, 이메일 등은 정규식을 통해 특정 형식만 허용
  • 추가로 길이도 제한을 두어 공격 구문 삽입이 어렵도록 해야 한다.
if (!input.matches("^[a-zA-Z0-9_]+$")) {
    throw new IllegalArgumentException("허용되지 않은 입력입니다.");
}
  • 장점: 우회 어려움, 보안 강력
  • 단점: 허용해야 할 값을 정확히 정의해야 함

 


 

2) 입력값 정제(Input Sanitization)✔ 주요 정제 방식

  • ', ", --, ; 같은 SQL 구문 기호 제거 또는 이스케이프 처리
  • HTML 엔티티 치환: < → &lt;, > → &gt;
  • DB 저장 시에는 정제된 값만 저장
input = input.replaceAll("'", "''"); // SQL에서 작은따옴표 이스케이프
  • 효과
    • 직접적인 SQLi 차단은 어렵지만 2차 방어선으로 사용
    • 바인딩, 화이트리스트와 병행해야 실효성 확보

 

 3) 블랙리스트(Blacklist) 기반 예약어 차단

  • 예: select, insert, ', --, or 1=1
String filtered = input.replaceAll("(?i)(select|union|--|')", "");
  • 장점: 빠르게 적용 가능
  • 단점: 우회가 쉬움 (공백 추가, 대소문자 조작 등)

출처 : sk_shieldus

 


 

 3. 에러 메시지 제한

  • SQL 오류 상세정보를 사용자에게 노출하지 않도록 설정
  • 사용자에게는 단순 메시지, 내부에는 로그 기록
catch(SQLException e) {
    log.error(e.getMessage());
    out.println("시스템 오류가 발생했습니다.");
}

 

 

 


🛑 3. 권한인증 취약점 (Authentication & Authorization Vulnerability)

✅ 설명

시스템에서 사용자 인증(Authentication) 또는 권한 확인(Authorization) 로직이 부적절하거나 우회 가능할 경우 발생하는 취약점이다. 이로 인해 공격자는 다른 사용자로 가장하거나, 관리자 권한 기능에 접근할 수 있다.


 

✅ 사용자 인증과 권한 확인이란?

구분  설명 예시
사용자 인증 (Authentication) 사용자가 누구인지 확인하는 절차 로그인, 토큰 검증 등
권한 확인 (Authorization) 사용자가 무엇을 할 수 있는지 확인하는 절차 일반 사용자 vs 관리자 기능 접근 제한

 

  • 취약점은 인증 우회는 주로 인증(authentication) 미흡으로

  • 권한 상승/역할 검증 미흡은 권한 확인(authorization) 미흡으로부터 발생한다.

💥 공격 방법 및 설명

1. 인증 우회

  • 설명: 로그인하지 않은 사용자가 인증 절차를 건너뛰고, 직접 URL이나 요청을 통해 접근하는 방식
  • 공격 예시:
    로그인 없이 직접 /admin/dashboard 입력하여 관리자 페이지 접근


  • 원인:
    • 인증 미적용 URL 존재
    • 서버에서 인증 상태 확인을 생략함
  • 취약 위치:
    • 인증(Authentication) 실패 → 로그인 확인 누락

 


2. 세션 탈취

  • 설명: 다른 사용자의 세션 ID를 탈취하여, 해당 사용자인 것처럼 서버를 속이는 공격
  • 공격 예시:
    GET /mypage?sessionid=abcd1234

    • 탈취된 세션 ID로 로그인 상태 위조
  • 세션 탈취 경로:
    • XSS로 쿠키 탈취
    • URL, Referrer에 노출
    • HTTPS 미적용으로 패킷 가로채기
  • 취약 위치:
    • 인증(Authentication) 우회 → 세션 관리 미흡

 


3. 수정된 요청 재전송 (권한 상승)

  • 설명: 클라이언트에서 보내는 요청 내용을 변조하여 높은 권한의 기능을 실행
  • 공격 예시:
    POST /updateUser { "role": "admin" }

    • 일반 사용자가 관리자 권한으로 전환 요청
  • 원인:
    • 서버에서 사용자의 권한을 검증하지 않음
    • 클라이언트에만 의존한 보안 처리
  • 취약 위치:
    • 권한 확인(Authorization) 실패

 


4. 불충분한 역할 검증

  • 설명: 로그인은 되어 있지만 사용자의 역할(권한)을 확인하지 않아 관리자 기능에 접근 가능
  • 공격 예시:
  • 원인:
    일반 유저가 /admin/userList 접근

    • 로그인 이후 역할 체크 로직 누락
  • 취약 위치:
    • 권한 확인(Authorization) 누락

 


🧬 주요 유형 요약

유형 설명  예시  발생 위치
인증 우회 인증 없이 보호된 URL 접근 /admin 직접 접근 인증(Authentication) 실패
세션 탈취 타인의 세션 ID 사용 URL 또는 쿠키로 ID 탈취 인증(Authentication) 실패
권한 상승 낮은 권한에서 높은 권한 기능 수행 일반 사용자 → 관리자 API 호출 권한 확인(Authorization) 실패
역할 검증 미흡 로그인 후 역할 미확인 일반 사용자 → 관리자 메뉴 접근 권한 확인(Authorization) 실패

 


🛡 대응 방안

1. 인증 강화

  • 세션 토큰은 HTTPS로만 전달, 쿠키에 HttpOnly, Secure 설정
  • 세션 ID는 추측 불가한 랜덤 값으로 구성
  • 로그인 상태 확인 로직을 모든 민감 기능에 적용

2. 권한 확인 로직 적용

  • 기능마다 접근 권한(예: 관리자, 사용자 등) 별로 명확한 검증 로직 구현
  • URL 접근 시에도 역할 기반 제어 적용 (RBAC: Role-Based Access Control)

3. API 요청 검증

  • 클라이언트가 보낸 요청 내용을 신뢰하지 말고, 서버에서 사용자 권한 재확인
  • 중요한 동작에는 추가 인증(2FA, OTP 등) 적용 고려

4. 로그 및 탐지

  • 관리자 접근, 권한 변경 요청 등의 로그 남기기
  • 이상 행위 발생 시 알림 기능 구축

 

 


🛑 4. 에러처리 취약점 (Improper Error Handling Vulnerability)

✅ 설명

애플리케이션이 예외 상황 발생 시 내부 정보(에러 메시지, 스택 트레이스, 경로 등)를 사용자에게 그대로 노출할 경우 발생하는 취약점이다. 공격자는 이를 통해 시스템 구조, DB 쿼리, 파일 경로 등 정보를 얻어 추가 공격의 단서로 활용할 수 있다.


💥 공격 방법

1. 에러 메시지 노출 (ID 존재 여부 노출)

  • 로그인 실패 시 에러 메시지를 다르게 보여주면, ID가 존재하는지 여부를 유추할 수 있다.
입력: ID = hacker, PW = 1234  
→ "존재하지 않는 사용자입니다"

입력: ID = admin, PW = 1234  
→ "비밀번호가 틀렸습니다"
  • 문제점
    • 공격자는 위 메시지를 비교하여 admin이라는 아이디가 존재함을 확인할 수 있다.
  • 대응방안
    • 모든 로그인 실패 시 다음과 같이 일괄적인 메시지 사용
      → "아이디 또는 비밀번호가 일치하지 않습니다"
      

 

 


2. 스택 트레이스 노출 (프로그래밍 오류 정보 노출)

  • 입력값이 잘못되었거나 서버 코드에 오류가 있을 때, 내부 코드 경로, 모듈명, 라이브러리 등이 담긴 스택 트레이스가 그대로 출력됨.
java.lang.NullPointerException
	at com.example.project.user.UserService.getUser(UserService.java:52)
	at ...
  • 문제점
    • 내부 경로 (com.example.project.user) 노출
    • 취약한 메서드 및 라인 식별 가능 (UserService.java:52)
  • 대응방안
    • 사용자에게는 단순한 에러 메시지만 제공
      → "일시적인 오류가 발생했습니다. 다시 시도해주세요"
      
    • 상세 오류는 서버 로그로만 기록

 


3. SQL 오류 노출 (SQL Injection 진단 힌트 제공)

  • SQL Injection 시 ' 같은 특수 문자를 입력하면 SQL 구문 오류가 발생하고, DB 오류 메시지가 사용자에게 그대로 보여짐
입력: ' OR '1'='1
→ 출력: You have an error in your SQL syntax near '' OR '1'='1'
  • 문제점
    • 공격자는 SQL 문장 구조를 파악하고, 컬럼명, 테이블명, DB 종류(MySQL/PostgreSQL 등)를 추측할 수 있음
  • 대응방안
    • 오류 메시지는 사용자에게 숨기고, 서버 로그에만 기록
    • PreparedStatement 등 바인딩 쿼리 사용
    • WAF 또는 필터링 기능 적용

4. 파일 경로 노출 (서버 구조 유출)

  • 요청한 파일이 존재하지 않거나 서버에서 오류가 발생하면 전체 경로가 포함된 메시지를 그대로 노출함
Warning: include(config.php): failed to open stream: No such file or directory in /var/www/html/index.php on line 3
  • 문제점
    • 서버 디렉터리 구조(/var/www/html/) 노출
    • 내부 파일명(config.php) 유출
  • 대응방안
    • 오류 발생 시 사용자에게는 일반적인 메시지 제공
      → "페이지를 찾을 수 없습니다"
    • php.ini 또는 web.xml 등에서 오류 상세 메시지 출력 차단 설정
    • PHP 예시: display_errors = Off

 


🔐 요약표

유형 설명 예시 위험 요소
에러 메시지 노출 ID 존재 여부 유추 가능 "존재하지 않는 사용자입니다" 사용자 식별 가능
스택 트레이스 노출 내부 소스/파일 경로 노출 NullPointerException at UserService.java:52 코드 구조 노출
SQL 오류 노출 SQL Injection 가능성 탐지 SQL syntax error near ' OR '1'='1 DB 구조 파악
파일 경로 노출 시스템 경로 유출 /var/www/html/index.php 오류 시스템 구조 노출

 


🛡 에러·예외 정보 노출 최소화 대응 방안 

1. 에러 메시지 최소화

  • 목표 : 내부 정보 노출 차단, 공격 표면 축소
  • 운영 체크리스트
    • 사용자 화면엔 “서버에 오류가 발생했습니다” 등 일반 메시지만 표시
    • 상세 오류·스택은 권한 제어된 로그에 기록
    • 프로덕션에서는 debug / verbose 옵션 OFF

 

2. 스택 트레이스 숨기기

  • 목표 : 파일 경로·라이브러리 정보 차단
  • 운영 체크리스트
    • try–catch 후 사용자 응답 = 일반 메시지
    • exception.printStackTrace() 금지 (스택은 내부 로거로)
    • APM·모니터링 도구로 오류 추적

3. SQL 오류 메시지 숨기기

  • 목표 : 테이블·쿼리 구조 노출 방지 → SQL Injection 난이도 상승
  • 운영 체크리스트
    • SQL 예외 시 사용자에게 “데이터 처리 중 오류” 등으로 통일
    • 실제 쿼리·바인딩 값은 내부 로그에만 기록(PII 마스킹)

4. 파일 경로 노출 방지

  • 목표 : 디렉터리 구조 탐색 차단
  • 운영 체크리스트
    • 404·403 등 파일 관련 오류 응답에 절대 경로·스택 포함 금지
    • 로그에는 상대 경로나 식별자만 기록

5. 사용자 정의 오류 페이지

  • 목표 : 기본 서버 오류 페이지로 인한 정보 누출 차단
  • 운영 체크리스트
    • 404·500·503 등 모든 상태 코드에 커스텀 HTML 적용
    • 간단·친절한 문구 + 연락처/재시도 버튼 포함
    • 서버 측에서만 상세 오류 기록

 

 

'Security > CERT' 카테고리의 다른 글

웹 쉘이란?  (1) 2025.04.10
웹 보안 취약점(3)  (0) 2025.03.28
웹 보안 취약점(2)  (0) 2025.03.20
웹 보안 취약점(1)  (0) 2025.03.15
Shodan을 통한 IoT 기기 검색과 특징  (0) 2025.03.01

1. 웹 쉘(Web Shell)이란 무엇인가?

웹 쉘은 공격자가 웹 서버에 업로드하여 원격으로 서버를 제어할 수 있게 해주는 악성 스크립트이다. PHP, JSP, ASP와 같은 웹 언어로 작성되며, 웹 브라우저를 통해 접근할 수 있어 공격자는 터미널처럼 명령어를 실행하고, 파일을 조작하며, 시스템 정보를 탈취할 수 있다.

 

웹 쉘은 단순한 파일 업로드 취약점뿐 아니라 SQL 인젝션, 원격코드 실행(RCE) 취약점, 웹 애플리케이션의 로직 결함 등 다양한 취약점을 통해 업로드될 수 있으며, 공격자가 설치 후 장기간 침투 거점으로 활용하기 쉽다.

 

과거 웹쉘 공격은 파일 업로드, SQL Injection 등 단순한 웹 프로그래밍 취약점에 기반했으나, 최근에는 오픈소스 프레임워크, CMS(WordPress, Drupal 등)의 보급으로 공격 경로가 다양화되고 있음.
실제로 2022~2021년 웹쉘 탐지 건수는 약 14만 건으로, 2019년 대비 2배 이상 증가하였음.
공격이 쉬워진 이유는 소프트웨어 생태계가 복잡해지면서 보안 취약점 없이도 단순한 방법으로 공격이 가능해졌기 때문이다.


2. 웹 쉘의 주요 특징

 

✅ 1. 다양한 기능 제공 → 서버 전체 권한 탈취

  • 공격자가 할 수 있는 일:
    웹 쉘로 시스템 명령을 실행하면 서버 안에서 할 수 있는 거의 모든 일을 할 수 있다.
    예를 들어,
    • 웹사이트 데이터 삭제/변조
    • DB에서 개인정보 유출
    • 랜섬웨어 설치
    • 내부망 침투 거점으로 활용
  • 실제 피해 예:
    고객 정보가 저장된 DB를 덤프하여 유출 → 금전 요구 또는 다크웹에 판매

✅ 2. 은폐성 → 관리자도 모르게 장기간 침투 유지

  • 공격자가 할 수 있는 일:
    탐지를 피하기 때문에 보안 솔루션이 감지 못한 상태에서 오랜 시간 서버에 머물며 정보 수집, 내부망 이동을 수행할 수 있다.
  • 실제 피해 예:
    6개월 이상 운영되던 웹쉘이 디지털포렌식 과정에서 뒤늦게 발견됨 → 그 사이 수천 건의 고객정보 유출

✅ 3. 지속성 → 반복적인 재침투 가능

  • 공격자가 할 수 있는 일:
    한 번 들어온 뒤 웹쉘을 삭제하지 않으면 언제든 다시 접속 가능함.
    더 나아가 시스템 계정을 생성하거나, 다른 경로에 백도어를 심어 다양한 재침투 경로 확보.
  • 실제 피해 예:
    피해 기업이 보안 조치 후에도 공격자 재침입 반복됨 → 조사해보니 다른 디렉토리에 은닉된 또 다른 웹 쉘 존재

✅ 4. 광범위한 호환성 → 다양한 웹사이트에서 동시다발적 피해 발생

  • 공격자가 할 수 있는 일:
    운영체제나 언어에 구애받지 않고 여러 종류의 서버에 동시 공격 가능
    특히 CMS(워드프레스, 젠카트 등) 취약점을 통한 대규모 공격에 활용됨
  • 실제 피해 예:
    수천 개의 워드프레스 사이트가 같은 웹 쉘에 감염 → 공격자는 한 툴로 동시에 제어

✅ 5. 자동화된 공격 지원 → 대규모 공격 및 악성코드 유포

  • 공격자가 할 수 있는 일:
    한 번에 여러 서버에 명령 전송, 웹쉘 설치, 악성 파일 유포, 스팸 발송 등의 대규모 공격 가능
    특히 공격자가 C&C 서버와 연동해 봇넷 구성 시 웹쉘은 통로 역할
  • 실제 피해 예:
    국내 웹 서버 수백 곳이 자동화 도구로 감염되어 크립토마이너(채굴 악성코드) 유포지로 활용됨 → CPU 과부하, 서버 마비, 검색엔진 블랙리스트 등 부가 피해

✅ 정리


 

웹쉘 특징 실제 피해 예시
다양한 기능 제공 서버 장악, DB 유출
은폐성 장기간 침입 지속
지속성 반복 재침입 및 내부망 확산
광범위한 호환성 다수 사이트 동시 감염
자동화된 공격 지원 악성코드 유포, 봇넷 구축

웹 쉘은 단순한 해킹 도구가 아니라, 공격자가 거점을 확보하고 다양한 공격을 실행하는 기반이 된다.
그래서 보안에서는 웹쉘 탐지와 제거, 업로드 방지 정책이 매우 중요하다.


3. 웹쉘 공격 방법 및 대응방안

 1. 기존 웹쉘 공격 방법

  • 파일 업로드 기능 악용
    • 확장자 우회 (.jpg.php, .php;.jpg 등)를 통해 악성 스크립트를 업로드
  • 웹 취약점 악용
    • SQL Injection, Command Injection, XSS, RFI 등을 통해 웹쉘 삽입 또는 실행
  • 프레임워크 / CMS 취약점 악용
    • WordPress, Drupal, Apache Struts2, 전자정부 프레임워크 등에서 발생한 취약점을 통해 웹쉘 업로드
  • 취약한 웹 에디터 활용
    • SmartEditor, DaumEditor, Namo CrossEditor와 같은 에디터의 파일 업로드 취약점 이용

 2. 최신 웹쉘 공격 사례

🧠 Fileless Web Shell Attack

  • 웹쉘을 파일로 저장하지 않고 메모리에서 실행
  • 로그나 정적 분석 회피 가능 → 탐지 어려움
  • 공격자는 로그 없이 실시간 명령 실행 가능, 흔적을 남기지 않음

💉 Injection Web Shell Attack

  • 웹 요청 파라미터나 DB에 웹쉘 코드를 삽입하여 실행
  • 취약한 입력 필터링 우회
  • SQL Injection이나 Command Injection과 결합 공격이 가능

 대응 전략

사전 대응 전략

  • 최신 보안 패치 및 소프트웨어 업데이트 정기적으로 적용
  • 파일 업로드 설정 강화
    • 허용 확장자 제한, 업로드 디렉터리 권한 최소화, 실행 차단 설정
  • 보안 에디터로 교체 또는 취약점 패치
  • 입력값 필터링 및 검증 철저히 수행

사후 대응 전략

  • 웹쉘 탐지 솔루션 및 EDR 도입 (정적/동적 분석 기반)
  • 의심 파일 및 로그 분석
    • 웹쉘 업로드 경로 확인 및 삭제
  • 불필요한 포트/계정/스크립트 차단 및 제거
  • 관리자 계정 비밀번호 변경 및 접근 IP 제한
  • 주기적 백업 및 복구 시나리오 점검

4.웹 쉘 감염 관련 사건 사고

  • 중국 연계 APT 그룹의 장기간 웹 쉘 공격: 2025년 3월, 중국과 연계된 APT 그룹인 'Weaver Ant'가 아시아의 한 통신 회사를 대상으로 수년에 걸친 정교한 웹 쉘 공격을 수행한 사례가 보고되었다. 이들은 웹 쉘을 통해 지속적으로 시스템에 접근하여 정보를 탈취하고, 추가적인 악성 활동을 수행하였다. ​(*apt란 구가의 후원을 받아 스파이 활동에 주력하는 그)
  • https://www.darkreading.com/cyberattacks-data-breaches/china-nexus-apt-weaver-ant-caught-yearslong-web-shell-attack?utm_source=chatgpt.com
  • 중국 연계 해커들, MITRE 네트워크 침입에 'ROOTROT' 웹 쉘 사용: MITRE의 실험 네트워크에 해커가 침입해 'ROOTROT' 등 여러 웹쉘을 설치하고 내부를 은밀히 통제하였다. 웹쉘은 메모리 기반으로 작동해 흔적 없이 명령을 실행할 수 있어 탐지가 어려웠다. 이번 공격은 고도화된 사이버 첩보 활동으로, 보안이 강한 기관도 취약점을 노리면 뚫릴 수 있음을 보여준다.
  • https://thehackernews.com/2024/05/china-linked-hackers-used-rootrot.html?utm_source=chatgpt.com

 

참고

https://www.igloo.co.kr/security-information/webshell-%EB%B6%84%EB%A5%98-%EB%B0%8F-%EB%8C%80%EC%9D%91%EB%B0%A9%EC%95%88/

 

Webshell 분류 및 대응방안

서비스사업본부 보안분석팀 김미희 1. 개요 2013년 해킹방지워크샵에서 발표된 『2013년 주요 침해사고 사례와 대응』에 따르면, 2010년부터 2013년까지 4년간 발생한 침해사고요인 중 상위요소로 We

www.igloo.co.kr

 

1. 파일 다운로드 취약점

설명

파일 다운로드 취약점은 웹 애플리케이션이 사용자에게 파일을 다운로드할 때, 공격자가 악성 파일을 다운로드할 수 있는 취약점이다. 이는 파일 다운로드 기능이 적절히 보호되지 않거나 사용자의 입력을 제대로 검증하지 않을 경우 발생한다. 예를 들어, 공격자가 URL 매개변수를 조작하여 서버에서 중요한 시스템 파일을 다운로드할 수 있는 경우다.

 

취약점 실습

 
공격자는 파일 다운로드 기능의 URL 매개변수를 조작하여 서버의 민감한 파일에 접근할 수 있다.
 
예제 (리눅스 시스템)

http://example.com/download?file=../../../../etc/passwd

 
예제 (윈도우 시스템)

http://example.com/download?file=../../../../winnt/win.ini

이러한 요청을 통해 시스템의 중요 파일을 다운로드할 수 있다.

작동 원리

  • 상대 경로(../)를 이용해 상위 디렉터리로 이동한 후, 민감한 파일에 접근한다.
  • 서버가 사용자의 입력값을 제대로 검증하지 않으면, 공격자가 원하지 않는 경로를 지정하여 파일을 다운로드할 수 있다.
  • 일부 경우, URL 인코딩(%2e%2e%2f)을 활용하여 필터링을 우회할 수도 있다.

 

https://jzziqw04-security.tistory.com/41

대응 방안

  1. 파일 경로 검증: 파일 다운로드 시 사용자로부터 입력된 경로를 그대로 사용하지 않고, 파일 경로를 안전하게 처리한다. 경로를 정해진 범위 내로 제한한다.
  2. 파일 확장자 제한: 다운로드할 수 있는 파일 형식을 제한하여 악성 파일을 다운로드할 수 없도록 합니다.
  3. 파일 다운로드 로그: 파일 다운로드 시 로그를 기록하여 악의적인 접근을 추적할 수 있도록 한다.

2. 파일 업로드 취약점

설명

파일 업로드 취약점은 공격자가 악성 파일을 서버에 업로드하여 시스템을 공격하는 취약점이다. 예를 들어, 서버에서 업로드된 파일을 실행하거나 특정 경로에 저장하면서 보안 취약점이 발생할 수 있다.

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczegqC%2FbtshYdo0cFB%2FwhHnfCXI3A3UGFSnvZhYtk%2Fimg.jpg

 

취약점 캡처

  • 공격자는 악성 스크립트를 포함한 파일을 업로드할 수 있다. 예를 들어, .php, .exe와 같은 파일을 업로드하여 웹 서버에서 실행하게 할 수 있다.
  • 이를 통해 시스템에 악성 코드가 실행되거나, 데이터가 유출될 수 있다.
  • 사이트 검색해 본 결과 게시판 업로드 창에 제한 없이 아무 파일이나 올릴 수 있게 보안이 미흡한 웹 사이트들도 종종 보였다.

 

대응 방안

  1. 파일 형식 검증: 업로드 가능한 파일의 확장자 및 MIME 타입을 엄격히 검증이 필요하다.
  2. 업로드 경로 제한: 업로드된 파일이 실행되지 않도록 서버 측에서 파일 저장 위치를 제한하고, 업로드된 파일에 대한 실행 권한을 제거한다.
  3. 파일 크기 제한: 업로드할 수 있는 파일의 크기를 제한하여 서비스 거부 공격(DoS)을 방지한다.
  4. 파일 이름 변경: 파일 이름에 특수문자나 경로 조작을 방지하기 위해 파일 이름을 변경하여 저장한다.

3. 소스코드 내 중요정보 노출 취약점

설명

소스코드 내 중요정보 노출 취약점은 소스 코드 파일에 중요한 정보(예: DB 비밀번호, API 키 등)가 포함되어 있어 공격자가 이를 쉽게 접근하거나 추출할 수 있는 취약점이다. 개발자 실수로 코드나 설정 파일에 민감한 정보를 포함시킨 경우 발생한다.

 

취약점 캡처

  • 예를 들어, GitHub와 같은 저장소에 비밀번호가 포함된 코드를 푸시한 경우 공격자는 해당 코드를 쉽게 검색하여 비밀번호를 얻을 수 있다.
  • 코드 내에 API 키나 데이터베이스 자격 증명이 노출된 경우 이를 추출할 수 있다.
  • 브라우저의 개발자 도구를 활용해서 html 내용을 본 결과 주석으로 활성화 되지 않은 경로를 추출했고 주소창에 url을 쳐 보니 숨겨진 페이지 창을 볼 수 있었다.

대응 방안

  1. 민감 정보 외부 저장: 비밀번호와 같은 민감한 정보는 코드에 하드코딩하지 않고, 환경 변수나 안전한 설정 파일에 저장한다.
  2. Gitignore 파일 사용: Git과 같은 버전 관리 시스템을 사용할 때 민감한 정보를 포함한 파일을 .gitignore에 추가하여 공개되지 않도록 한다.
  3. 암호화: 민감 정보를 저장할 때 반드시 암호화를 적용하여, 만약 정보가 유출되더라도 안전하게 보호한다.

4. 공개용 웹 게시판 취약점

설명

공개용 웹 게시판 취약점은 유지보수 부족으로 인해 발생하며, 공격자는 알려진 보안 취약점을 악용하여 웹사이트를 변조하거나, 민감한 정보를 유출할 수 있다. 대표적인 취약점으로는 파일 업로드 취약점, SQL 인젝션, XSS(크로스 사이트 스크립팅), 권한 관리 취약점 등이 있다.
 

취약점 캡처

  • 그누보드가 사용된 웹사이트를 확인할 수 있었다.
  • inurl:board intitle:게시판, inurl:bbs intitle:게시판 등을 활용하여 특정 게시판이 사용된 웹사이트를 찾을 수 있다.
  • 파일 업로드 취약점: 공격자가 악성 PHP 파일을 업로드하여 원격 명령을 실행할 수 있음.
  • SQL 인젝션: 데이터베이스 질의문을 변조하여 관리자 계정을 탈취하거나 정보를 유출할 수 있음.
  • XSS(크로스 사이트 스크립팅): 악성 스크립트를 삽입하여 사용자 세션을 가로채거나 피싱 공격을 수행할 수 있음.
  • 권한 관리 취약점: 게시판 관리자 페이지가 보호되지 않아 비인가 사용자가 접근할 수 있음.

 

대응 방안

  1. 최신 버전 유지: 보안 패치 및 업데이트를 정기적으로 수행한다.
  2. 보안 설정 강화: 업로드 파일 확장자 제한, SQL 인젝션 필터링 적용, 관리자 페이지 접근 제한 설정을 적용한다.
  3. 정기 점검 및 모니터링: 취약점 스캐닝을 수행하고, 웹 방화벽(WAF)을 적용하여 실시간 탐지 및 대응을 강화한다.

'Security > CERT' 카테고리의 다른 글

웹 서비스에서 자주 발생하는 핵심 취약점과 대응 전략  (0) 2025.04.24
웹 쉘이란?  (1) 2025.04.10
웹 보안 취약점(2)  (0) 2025.03.20
웹 보안 취약점(1)  (0) 2025.03.15
Shodan을 통한 IoT 기기 검색과 특징  (0) 2025.03.01

1. 취약한 파일 존재 취약점

설명

웹 서버에 의도하지 않은 파일(내부 문서, 백업 파일, 로그 파일, 압축 파일 등)이 존재할 경우, 공격자가 파일명을 유추하여 직접 접근함으로써 민감한 정보를 획득할 수 있는 취약점이다.

 

취약점 실습

  • 검색창에 filetype:sql backup 입력
  • 공개된 SQL 덤프 파일을 찾아 개인정보가 포함되어 있는지 확인

 

대응 방안

  • 웹 서버는 개발과 운영 환경을 분리하여 운영 환경에서 소스 코드 수정 또는 테스트 목적의 임시 파일을 생성하지 않도록 한다.
  • 웹 서버의 디렉터리에 존재하는 기본 설치 파일, 임시 및 백업 파일을 조사하여 웹 사용자가 접근하지 못하도록 조치한다.
  • 정기적으로 웹 서버의 불필요한 파일을 검색하여 제거한다.

 


2. 계정 관리 취약점

설명

회원가입 시 안전한 패스워드 규칙이 적용되지 않아, 취약한 패스워드로 회원 가입이 가능할 경우, 무차별 대입 공격(Brute Force)을 통해 패스워드가 누출될 수 있는 취약점을 의미한다.

 

취약점 실습

  • 보안이 강한 사이트를 찾아보았다
  • 국내 유명 게임 사이트의 회원가입 창을 확인
  • 보안이 엄격한 사이트는 비밀번호에 특수문자+숫자 조합을 요구하는 창을 볼 수 있다

 

대응 방안

  • 사용자가 취약한 패스워드를 사용할 수 없도록 패스워드 생성 규칙을 강제할 수 있는 로직을 적용한다.




3. 실명 인증 취약점

설명

사용자 본인 확인 과정에서 취약한 프로그램을 악용하여 사용자 정보를 변조할 수 있는 취약점을 의미한다. 이를 통해 관리자로 위장하여 개인정보를 수집하거나, 홈페이지 가입 시 제공하는 포인트 등을 악용하는 등의 공격이 발생할 수 있다.

취약점 실습

 

 

 

  1. 실명인증 창 접근
    • 공격자는 웹사이트의 실명인증 페이지에 접속하여 타인의 개인정보(이름, 주민등록번호 등)를 입력 
  2. 웹사이트 → (실명인증 요청) → 인증기관
    • 입력한 정보를 인증기관에 전달하여 실명 인증을 요청
  3. 인증기관 → (실명인증 응답) → 웹사이트
    • 인증기관이 실명 인증 결과를 반환(나이, 성별, 연락처 등 포함)
  4. 웹사이트 → (인증 성공) → 공격자
    • 웹사이트에서 인증 성공 메시지를 표시
  5. 웹 프록시로 정보 변조
    • 공격자는 웹 프록시(Burp Suite 등)를 사용하여 요청을 변조
    • 실명 인증에서 받은 고정된 개인정보를 수정하여 웹사이트로 전송
  6. 변조된 정보로 회원가입
    • 웹사이트가 변조된 정보를 검증 없이 신뢰하여 회원가입 허용

 

핵심

 

 

  • 프록시가 웹사이트와 인증기관 간의 응답을 가로채고 변조하여 사용자가 인증받은 정보가 아닌 가상의 인물로 회원가입을 하도록 한다.
  • 웹사이트변조된 정보에 대해 검증 없이 신뢰하고, 공격자는 원하는 이름과 정보로 회원가입을 완료하게 된다.

 

 

대응 방안

  • 중요한 정보가 있는 홈페이지(실명 등)는 재인증을 적용하고,
  • 안전하다고 확인된 라이브러리나 프레임워크(OpenSSL이나 ESAPI의 보안 기능 등)를 사용하여 홈페이지 개발 보안 조치를 수행한다.

4. 전송 시 주요 정보 노출 취약점

설명

웹 서버가 보안과 관련된 민감한 데이터를 평문(엄호화 되지 않은 ex: http)으로 통신 채널을 통해 송수신할 경우, 통신 채널 스니핑을 통해 인가되지 않은 사용자에게 민감한 데이터가 노출될 수 있는 취약점을 의미한다.



취약점 실습

  1. HTTP 로그인 페이지 찾기
    • 보안이 취약한 사이트에서 http:// 접속 후 로그인 시도


  2. Wireshark를 활용한 패킷 분석
    • Wireshark 실행 후 http 필터 적용
    • 로그인 요청 시 캡처된 패킷에서 아이디와 비밀번호가 평문으로 전송되는지 확인

대응 방안

  • 웹 서버와 클라이언트 간의 통신에 SSL/TLS와 같은 암호화 프로토콜을 적용하여 데이터를 암호화한다.
  • 민감한 데이터는 전송 전에 추가적인 암호화 과정을 거쳐 안전성을 높인다.

 

참고

https://itcase.tistory.com/entry/29-%EC%B9%A8%ED%95%B4%EB%8C%80%EC%9D%91CERT-7-%EC%9B%B9-%EC%B7%A8%EC%95%BD%EC%A0%90-%EC%8B%A4%EC%8A%B52

 

29. 침해대응&CERT (7) : 웹 취약점 실습_2

취약한 파일 존재 취약점  해당 취약점의 경우는 일단 취약한 파일을 분류하는 기준, 범위에 대한 고민을 시작해야한다. 예를 들어, 일반적인 입장에서는 로그 파일, 백업 파일 등이 취약한 파

itcase.tistory.com

https://maker5587.tistory.com/34

 

[웹 취약점]취약한 파일 존재 취약점 정의 및 대응 방안

이번 시간에는 웹 취약점 중 하나인 취약한 파일 존재 취약점에 대해 알아보고 해당 취약점에 대응하기 위해서는 어떻게 해야하는지 알아보도록 하겠습니다. 취약한 파일 존재 취약점이란? 웹

maker5587.tistory.com

https://skynarciss.tistory.com/35

 

[보안 해킹] 홈페이지 보안 취약점 - 실명인증 취약점

[보안 해킹] 홈페이지 보안 취약점 - 실명인증 취약점 ■ 취약점 설명 및 사례 ⑴ 취약점 설명 - 실명인증 우회 취약점은 사용자 본인 확인 과정상에서 취약한 프로그램을 악용하여 사용자 정보

skynarciss.tistory.com

 

'Security > CERT' 카테고리의 다른 글

웹 쉘이란?  (1) 2025.04.10
웹 보안 취약점(3)  (0) 2025.03.28
웹 보안 취약점(1)  (0) 2025.03.15
Shodan을 통한 IoT 기기 검색과 특징  (0) 2025.03.01
사물인터넷(IoT)과 Shodan  (0) 2025.02.19

구글링을 통해 다양한 웹 취약점을 분석하고, 이를 통해 실무에서 중요한 취약점들을 다룰 예정이다.

 

검색 키워드를 잘 활용하면 취약점을 쉽게 발견할 수 있으며, 이를 바탕으로 취약점의 설명과 구체적인 대응 방안을 제시할 것이다.

 

주요 취약점으로는 관리자 페이지 노출, 디렉터리 나열, 시스템 관리 취약점, 불필요한 HTTP 메서드 허용 취약점 등이 있다. 이를 통해 웹 보안에 대한 이해를 높이고, 실제 대응 방안을 연습할 것이다.

 
 

1. 관리자 페이지 노출 취약점

🔹 왜 위험한가?
공격자가 관리자 페이지에 접근하면 무차별 대입 공격(Brute-force Attack)이나 SQL 인젝션을 통해 관리자 계정을 탈취할 수 있음. 이를 통해 웹사이트 변조, 데이터베이스 접근, 사용자 정보 탈취 등의 피해가 발생할 수 있음.
 
🔹 실제 사례
공격자가 노출된 관리자 페이지를 통해 로그인 시도를 반복하여 관리자 계정을 탈취하고 개인정보 데이터를 유출한 사례가 있음.
📌 출처: https://www.kinternet.org/_n_2007/0629/kisa.pdf?utm_source
 
🔹 실습
inurl:admin site:.kr 구글링으로 관리자 페이지 접속

  • 기본 로그인 정보로 접근 가능한 취약점이 있음
  • 로그인 화면 없이 관리자 페이지가 노출되는 경우도 있음

 

 
 
🔹 대응 방안

  • 비밀번호 강도 강화: 관리자의 계정에 강력한 비밀번호를 설정하여 brute-force 공격을 방지한다. 비밀번호는 대소문자, 숫자, 특수문자를 포함해야 한다.
  • 로그인 시도 제한: 일정 횟수 이상 로그인 시도를 실패하면, 계정을 잠그거나 CAPTCHA를 적용하여 자동화된 공격을 차단한다.
  • 관리자 페이지 숨기기: 관리자 페이지 URL을 변경하거나, 관리자 접근을 제한할 수 있는 IP 화이트리스트를 설정한다.

 

2. 디렉터리 나열 취약점

🔹 왜 위험한가?
웹 서버에서 디렉터리 목록이 보이도록 설정되면, 공격자가 민감한 파일 목록을 확인하고 직접 접근할 수 있음. 이를 통해 소스 코드, 환경 설정 파일, 백업 파일 등이 유출될 수 있음.
 
🔹 실제 사례
디렉터리 목록화로 인해 내부 문서 및 개인정보가 쉽게 접근 가능한 상태였으며, 이를 통해 대량의 개인정보 유출 사고가 발생한 사례가 있음.
📌 출처: https://www.boannews.com/media/view.asp?idx=98929&utm_source
 
🔹 실습
intitle: "index of" "password" 구글링으로 디렉터리 목록 접근

  • passwords.txt 파일을 통해 ZIP 파일 비밀번호를 추출할 수 있었음

 
🔹 대응 방안
 

  • 디렉터리 나열 비활성화: 서버 설정에서 Options -Indexes를 추가하여 디렉터리 목록이 노출되지 않도록 설정한다.
  • 파일 접근 제한: 중요한 파일(예: 백업, 설정 파일 등)을 보호하기 위해 파일 접근 권한을 제한한다.
  • .htaccess 사용: .htaccess 파일을 사용하여 웹 서버의 접근을 제어하고, 특정 디렉터리에 대한 접근을 제한한다.

 
 

3. 시스템 관리 취약점

🔹 왜 위험한가?
phpMyAdmin, cPanel, RDP(Remote Desktop Protocol), SSH 등 서버 관리 도구가 외부에 노출되면 공격자가 직접 서버에 접근할 수 있음. 무차별 대입 공격(Brute-force Attack)을 통해 관리자 계정을 탈취하거나, 알려진 취약점을 이용해 서버를 장악할 수 있음. 서버에 악성코드를 심거나, 랜섬웨어를 감염시켜 데이터를 인질로 잡을 수도 있음.
 
🔹 실제 사례
RDP(Remote Desktop Protocol) 노출로 인한 랜섬웨어 감염 사례: 공격자가 인터넷에 노출된 RDP 포트를 스캔하여 관리자 계정의 패스워드를 무차별 대입 공격(Brute-force Attack)으로 탈취한 후, 랜섬웨어를 배포하여 피해 시스템을 감염시킨 사례가 있음.
📌 출처: https://asec.ahnlab.com/ko/39804/?utm_source
 
🔹 실습

  • intitle:"index of" password 구글링을 통해 php 노출된 시스템 관리 인터페이스를 탐색. 공격자가 이를 이용하여 시스템의 취약점을 찾거나 공격을 시도할 수 있음.
  • allow_url_fopen이 활성화되어 있는 경우 원격 파일 포함(RFI) 공격이 가능해져 외부 URL에서 악성 파일을 포함하거나 실행할 수 있음. 이를 통해 웹 쉘을 업로드하거나 서버 명령어를 실행할 수 있음.
  • intitle:"index of" intext:"web.config.txt"를 통해 API 관련 키가 노출된 파일을 발견할 수 있었음.

 
 
 
🔹 대응 방안

  • 원격 관리 도구 보호: phpMyAdmin, cPanel 등의 관리 도구는 외부 접근을 차단하거나 VPN을 통해 접근하도록 제한한다.
  • 강력한 인증 적용: 관리자 계정에는 강력한 비밀번호를 설정하고, 2단계 인증을 활성화하여 보안을 강화한다.
  • 포트 차단 및 모니터링: 불필요한 포트를 차단하고, RDP, SSH 등의 포트는 방화벽을 통해 외부 접근을 제한한다.
  • 소프트웨어 최신화: 관리 도구와 서버 소프트웨어를 최신 버전으로 유지하여 알려진 취약점으로 인한 공격을 차단한다.

 

4. 불필요한 Method 허용 취약점

🔹 왜 위험한가?
HTTP 메서드(예: PUT, DELETE, TRACE 등)가 불필요하게 활성화되어 있으면 공격자가 악성 파일을 업로드하거나 중요한 파일을 삭제할 수 있음. TRACE 메서드가 허용된 경우, XST(Cross-Site Tracing) 공격을 통해 쿠키 탈취 및 세션 하이재킹이 가능함.
 
🔹 실제 사례
서버에서 필요하지 않은 HTTP 메서드가 활성화된 상태로 운영되었고, 공격자가 이를 악용하여 서버 내 파일을 변경하거나 삭제한 사례가 있음.
📌 출처: https://m.boannews.com/html/detail.html?idx=9791&utm_source
 
🔹 실습
inurl:"httpd.conf" "LimitExcept" "PUT DELETE" 구글링을 통해 PUT과 DELETE 메서드를 허용한 서버 설정을 찾음.

 
🔹 대응 방안

  • 불필요한 HTTP 메서드 비활성화: PUT, DELETE, OPTIONS와 같은 불필요한 HTTP 메서드를 서버 설정에서 비활성화한다.
  • HTTP 헤더 설정 강화: Access-Control-Allow-Methods와 같은 HTTP 헤더를 통해 허용할 메서드를 제한한다.
  • 웹 방화벽(WAF) 사용: WAF를 사용하여 비정상적인 HTTP 메서드를 차단하고, 공격을 미리 방어할 수 있다.

 
참고
https://mpit.tistory.com/entry/%EC%B9%A8%ED%95%B4-%EB%8C%80%EC%9D%91-CERT-%EA%B3%BC%EC%A0%956%EC%A3%BC%EC%B0%A8
https://ogig0818.tistory.com/304
https://www.igloo.co.kr/security-information/%EB%B6%88%ED%95%84%EC%9A%94%ED%95%9C-%EC%9B%B9-method-%EC%A7%84%EB%8B%A8-%EC%8B%9C-%EB%B0%9C%EC%83%9D%ED%95%98%EB%8A%94-%EB%AC%B8%EC%A0%9C%EC%A0%90-%EB%B0%8F-%EB%8C%80%EC%9D%91%EB%B0%A9%EC%95%88/
https://itcase.tistory.com/entry/28-%EC%B9%A8%ED%95%B4%EB%8C%80%EC%9D%91CERT-5-%EC%9B%B9-%EC%B7%A8%EC%95%BD%EC%A0%90-%EC%8B%A4%EC%8A%B51
 
https://rybbit-life-debugging.tistory.com/50

'Security > CERT' 카테고리의 다른 글

웹 보안 취약점(3)  (0) 2025.03.28
웹 보안 취약점(2)  (0) 2025.03.20
Shodan을 통한 IoT 기기 검색과 특징  (0) 2025.03.01
사물인터넷(IoT)과 Shodan  (0) 2025.02.19
구글해킹을 통한 취약 • 노출정보 검색  (0) 2025.02.15

Shodan은 인터넷에 연결된 다양한 IoT 기기들을 검색하고 분석할 수 있는 도구이다. 이를 통해 웹캠, CCTV, 네트워크 프린터, 산업제어시스템 등 다양한 기기들의 보안 취약점을 파악하고, 실시간으로 접근할 수 있는 정보들을 열람할 수 있다. 이번 시간에는 Shodan을 통해 검색할 수 있는 주요 IoT 기기들과 각 기기의 특징을 살펴보겠다.

 

1. CCTV

 

  • 특징: 감시용 카메라. 아날로그 CCTV가 아닌 네트워크 연결형 카메라.
  • 보안 위험: CCTV 영상 유출, 관리 부실로 인한 해킹 위험. 개인정보 유출 가능성 있음.
  • 대표적 피해 사례: 영상 정보 유출 및 해킹 사례 발생.

 
 
검색 키워드: port:80 has_screenshot:true  (해당 ip를 웹브라우저 주소 창에 검색하면 이동한다)

  • 포트 554는 **RTSP (Real-Time Streaming Protocol)**로, 웹 브라우저로 직접 접속할 수 없다.
  • has_screenshot:true는 Shodan이 캡처한 화면이 있는 결과만 표시한다.
  • RTSP 포트로 접속이 불가능하므로, HTTP 80 포트로 변경하여 접근할 수 있다. 이를 통해 CCTV 영상에 접근할 수 있다.

2. WebCam, IP Cam

  • 특징: 화상 채팅이나 인터넷 방송 등으로 사용되는 카메라. 네트워크를 통해 직접 연결되는 웹캠에 대한 검색어는 다양한 종류가 존재함.
  • 보안 위험: 사생활 침해 우려가 큼. 불법적으로 웹캠 화면을 엿보거나 유출될 수 있음.
  • 대표적 피해 사례: 가정집에서 설치된 IP 카메라 해킹 사례가 보도된 바 있음.

 

IP 카메라

  • 검색 키워드: title:"IPCam Client" port:80


    • 예를 들어, Foscam과 같은 브랜드에서 기본 비밀번호를 사용하는 웹캠은 쉽게 접근할 수 있을 수 있다.(사용자가 비밀번호를 안 바꿨다면)

 

WebCam

  • 검색 키워드: title:"webcam" has_screenshot:true



    • 이 검색어를 통해 웹캠의 라이브 영상을 확인할 수 있다. Shodan은 각 기기의 화면을 캡처하여 결과로 표시하므로, 이를 통해 라이브 영상을 확인할 수 있다.

 
 
 
 

3. Network Printer

 

  • 특징: 네트워크에 연결되어 모든 사용자들이 함께 사용할 수 있는 프린터.
  • 보안 위험: 프린터 해킹으로 문서 엿보기, 인쇄 기록 훔쳐보기 등. 프린터 하드디스크에서 이전 인쇄 기록을 볼 수 있는 경우도 있음.
  • 대표적 피해 사례: 프린터 해킹 사건으로 인해 문서 정보가 유출된 사례 있음.

 
 

  • HP 프린터 검색 키워드: "HP-ChaiSOE" port:80
  • Xerox 프린터 검색 키워드: ssl:"Xerox Generic Root"

 
일부 프린터는 기본 비밀번호가 걸려 있지 않거나, 취약한 비밀번호를 사용하여 보안에 취약할 수 있다. 예를 들어, 엡손과 캐논은 비밀번호가 걸려 있지만, 다른 프린터는 보안에 취약한 경우가 있다. Server: printer 포트 80을 통해 확인할 수 있다.

4. 산업 제어 시스템 (ICS)

  • 특징: 산업 시설을 제어하는 시스템으로, 네트워크 기술을 통해 외부와 연결되며 생산성 향상에 기여함.
  • 보안 위험: 해킹 시 산업 기밀 유출, 시설 셧다운, 재정적 피해, 국가 시설을 대상으로 한 테러 가능성.
  • 사례: 과거 산업 제어 시스템이 해킹되어 큰 피해를 본 사례가 있음.

1. Nordex 관련 검색

  • Nordex는 독일에 본사를 둔 풍력 발전기 제조업체.
  • 검색한 결과, ICS(산업제어시스템) 관련 장비에서 실행 중인 시스템이 나타남.
  • 이 시스템은 로그인으로 컨트롤 가능한 상태

2. ICS 검색

  • ICS(산업제어시스템)와 관련된 장비를 검색하는 과정에서 특정 제품이나 시스템에 대한 정보를 찾음.
  • ICS 관련 시스템은 보통 특정 산업 장비에 대한 제어를 담당하는 시스템으로, 해당 시스템은 리눅스 기반의 모니터링 대시보드를 활용하는 것으로 추측됨.

 


3. 제품 가이드북을 활용한 로그인 UI 우회 방법

  • 목적: 로그인 UI 우회 방법 탐색
  • 방법:
    1. ICS(산업제어시스템) 회사 이름을 Shodan에서 검색
    2. 검색 결과에서 제품(프로덕트) 이름을 확인
    3. 해당 제품 이름을 구글에서 검색하여 가이드북을 찾음
    4. 가이드북을 분석하여 로그인 UI를 우회할 수 있는 방법을 탐색

4. Siemens 제품의 VNC 서버 취약점 분석(raw data 분석)

  • top automation vendors를 검색하면 Siemens 나타났으며, Siemens 제품과 관련된 ICS 정보를 검색해봤다.
  • Siemens 제품과 관련된 데이터를 추가 검색
  • Siemens의 제품과 관련된 데이터를 쇼단에서 이미지 탭에서 검색하고, 그 내부의 raw data를 분석한 결과 VNC 서버와 관련된 정보가 나타남.

 

  • 발견된 취약점:
    • 인증이 비활성화된 VNC 서버가 존재하여 외부 공격자가 쉽게 접근할 수 있음
    • VNC 서버의 보안이 취약할 경우 공격자가 시스템에 접근할 가능성이 높음
  • 기술적 제한:
    • 웹브라우저는 VNC 프로토콜(RFB)을 지원하지 않음
    • VNC 서버에 접속하려면 전용 VNC 클라이언트가 필요함

 

5. POS 시스템

 
 

  • 특징: 상점에서 판매 거래를 처리하는 시스템으로, 결제 카드 정보와 고객 데이터를 처리하는 중요한 역할을 한다. POS 시스템은 카드 결제뿐만 아니라, 재고 관리, 매출 기록 등의 기능을 수행한다.
  • 보안 위험: 카드 정보 및 고객 데이터를 처리하기 때문에 해킹 시 중요한 개인 정보가 유출될 수 있다. POS 시스템 해킹을 통해 신용카드 정보, 결제 내역, 고객 정보 등이 유출될 수 있으며, 이를 통해 금융 사기 및 데이터 도용이 발생할 수 있다.
  • 대표적 피해 사례: POS 시스템이 해킹되어 카드 정보가 유출된 사건이 발생한 바 있으며, 특히 대형 상점 체인에서 발생한 사례가 보도된 적 있음. 해커는 POS 단말기를 통해 결제 정보를 훔쳐 불법적인 거래를 시도하기도 한다.

 

  • pos 검색 키워드: pos

 

  • Shodan을 통해 POS 시스템의 로그인 화면을 확인할 수 있다. 일부 취약한 POS 시스템은 보안에 취약하여 개인정보 유출의 위험이 있다.

 

개인정보 유출 원인

  1. 취약한 기본 설정: 많은 IoT 기기가 기본 비밀번호나 설정을 그대로 사용하여 보안에 취약하게 노출된다.
  2. 소프트웨어 취약점: 오래된 소프트웨어를 사용하거나 보안 패치가 적용되지 않은 경우 해킹에 취약할 수 있다.
  3. 인증 및 암호화 부재: 일부 IoT 기기는 인증 기능이 없거나 암호화되지 않은 통신을 사용하여 개인정보 유출 위험이 있다.
  4. 네트워크 보안 취약점: 공유기나 방화벽 설정이 취약한 경우, 외부 공격자가 내부 네트워크에 접근하여 IoT 기기를 공격할 수 있다.

보안 강화 방안

  1. 기본 비밀번호 변경: 모든 IoT 기기의 기본 비밀번호를 강력한 비밀번호로 변경해야 한다.
  2. 최신 소프트웨어 유지: IoT 기기의 소프트웨어를 최신 버전으로 유지하고 보안 패치를 정기적으로 적용해야 한다.
  3. 강력한 인증 및 암호화: 인증 기능을 활성화하고 암호화된 통신을 사용하여 개인정보를 보호해야 한다.
  4. 네트워크 보안 강화: 공유기와 방화벽 설정을 강화하여 외부 공격으로부터 네트워크를 보호해야 한다.

결론

Shodan을 활용하여 IoT 기기의 보안 취약점을 미리 파악하고 적절한 보안 조치를 취하는 것이 중요하다. Shodan에서 검색할 수 있는 IoT 기기들은 CCTV, 웹캠, IP 카메라, 네트워크 프린터, 산업 제어 시스템(ICS) 등이 있다. 각 기기는 기본 설정, 소프트웨어 취약점, 인증 및 암호화 부재 등의 이유로 보안에 취약할 수 있으며, 이를 해결하기 위한 보안 강화 방안을 적용하는 것이 중요하다.
 
참고
https://itstudycube.tistory.com/29

28주차 과제 - 침해대응 & CERT 과정 (5)

침해대응 & CERT 과정을 진행합니다. 지난 과정에서 IoT와 Shodan에 대하여 알아보았습니다. 이번 시간에는 Shodan을 통하여 탐색할 수 있는 대표적인 기기들에 대하여 알아보도록 하겠습니다. 과제

itstudycube.tistory.com

https://youtu.be/bZUnQR4bdT8?si=6oqM7OKZ2FS5zcHP

https://www.youtube.com/watch?v=Stxrz0timCg
 

'Security > CERT' 카테고리의 다른 글

웹 보안 취약점(2)  (0) 2025.03.20
웹 보안 취약점(1)  (0) 2025.03.15
사물인터넷(IoT)과 Shodan  (0) 2025.02.19
구글해킹을 통한 취약 • 노출정보 검색  (0) 2025.02.15
구글해킹  (0) 2025.01.31

사물인터넷(IoT)과 Shodan 개요

1. 사물인터넷(IoT) 개념 및 특징

https://cdn.iconsumer.or.kr/news/photo/202406/26471_33597_5146.jpg

  • 정의: 네트워크에 연결된 다양한 디바이스들이 서로 통신하고 데이터를 교환하는 기술
  • 예시: 진공청소기, 자동차, 전구 등 센서를 통해 데이터 수집 및 반응 가능
  • 작동 방식:
    1. 센서가 데이터 수집
    2. 네트워크(Wi-Fi, 블루투스 등)로 데이터 전송
    3. 클라우드 서버 또는 스마트 허브에서 분석
    4. 명령이 디바이스로 전달 및 실행

2. IoT 보안 문제점

  • 펌웨어 취약점: 보안 업데이트 미흡, 패치 불가능한 취약점 존재 (*펌웨어: 하드웨어를 제어하는 소프트웨어로, 기기의 내장 메모리에 저장되어 동작을 관리하는 프로그램이다. )
  • 네트워크 보안: 취약한 네트워크 연결 시 공격자가 다른 장치로 침투 가능
  • 암호화 부족: 기본적으로 암호화 없이 통신하여 데이터 유출 위험
  • 물리적 접근 취약: 외부에 배치된 디바이스는 직접적인 해킹 가능  ( *논리적 해킹은 온라인을 통한 원격 공격, 물리적 해킹은 기기 자체를 조작하는 오프라인 공격이다. )
  • 기본 설정 문제: 제조사 기본 ID/PW 미변경 시 공격 가능 (예: iptime 공유기)

3. Shodan 개요

  • 정의: 인터넷에 연결된 장치 및 서비스를 검색하는 특수 검색 엔진
  • 기능:
    • 웹 서버, 라우터, 웹캠 등 인터넷 연결 장치 검색
    • 네트워크 내 취약한 장치 식별 및 보안 점검
    • 특정 운영체제(OS), 소프트웨어, 포트 등이 열린 장비 확인 가능

4. Shodan 검색 필터 및 사용 예시

필터 설명 사용예시
city 특정 도시 내 장치 검색 city:"Seoul"
country 특정 국가 내 장치 검색 country:"KR"
port 특정 포트가 열린 장치 검색 port:22 (SSH)
org 특정 조직의 장비 검색 org:"Google"
product 특정 소프트웨어 실행 중인 장비 검색 product:"nginx"
version 특정 버전 사용 장비 검색 product:nginx version:1.19.6
os 특정 운영체제 사용 장비 검색 os:"Linux"
geo 특정 좌표 근처 장비 검색 geo:37.7749,-122.4194
hostname 특정 호스트명을 가진 장비 검색 hostname:"example.com"
net 특정 IP 대역 검색 net:192.0.2.0/24
vuln 특정 취약점이 있는 장비 검색 vuln:CVE-2021-34527
device 특정 장치 유형 검색 device:router
  • 복합 검색 예시: city:"Seoul" port:22 (서울에 있는 SSH(22번 포트) 실행 장치 검색)

 

사물인터넷(IoT)과 Shodan의 연관성

Shodan은 IoT 기기와 밀접한 관련이 있는 검색 엔진이다. IoT 기기는 인터넷에 연결되어 데이터를 주고받으며, 보안이 취약한 경우 외부에서 쉽게 접근할 수 있다. Shodan은 이러한 인터넷에 연결된 IoT 기기들을 검색하여 노출된 장치를 식별하는 데 활용된다.

1. IoT 기기의 보안 취약점과 Shodan

  • 많은 IoT 기기는 기본 비밀번호(예: admin/admin)로 설정되어 있어 해킹에 취약함.
  • 취약한 펌웨어(보안 패치가 적용되지 않은 구형 버전) 사용 시 공격에 노출될 가능성이 높음.
  • 보안 설정 없이 인터넷에 직접 연결된 기기(CCTV, 공유기, 스마트 TV 등)는 외부에서 쉽게 접근 가능함.

Shodan을 활용하면 이러한 취약한 IoT 기기를 검색하여 확인할 수 있음. 예를 들어, 아래와 같은 검색어를 사용하면 특정 IoT 기기의 정보를 찾을 수 있다.

 
product:"webcam" country:"KR"
→ 한국에서 인터넷에 연결된 웹캠 검색

 

port:23 os:"Linux"
→ Telnet(23번 포트)이 열린 리눅스 IoT 기기 검색


2. Shodan을 통한 IoT 기기 검색 예시

검색 목적 shodan 검색어 예시설명
공개된 CCTV 검색 product:"webcam" 인터넷에 연결된 웹캠 검색
스마트 홈 기기 검색 product:"home automation" 스마트 홈 장치(예: 스마트 도어락) 검색
공유기 및 라우터 검색 device:router country:"KR" 한국 내 인터넷에 노출된 공유기 검색
기본 로그인 설정된 장치 port:23 (Telnet 검색) 기본 계정(admin/admin)으로 접근 가능한 장치 확인 가능
특정 브랜드 IoT 기기 검색 product:"Dahua" Dahua 브랜드의 IP 카메라 검색

이처럼 Shodan을 활용하면 특정 IoT 장비가 인터넷에 노출되어 있는지 확인할 수 있다.


3. Shodan이 IoT 보안에 미치는 영향

긍정적인 측면

  • 보안 전문가 및 기업이 취약한 IoT 장비를 검색하고 보호 조치를 할 수 있음.
  • 제조업체는 자사 IoT 기기의 보안 취약점을 파악하고 개선 가능.
  • 기업 및 일반 사용자도 자신의 IoT 기기가 외부에 노출되었는지 확인 가능.

부정적인 측면

  • 해커가 Shodan을 악용하여 보안이 취약한 IoT 기기를 공격하는 데 사용할 수 있음.
  • 실제로 공개된 CCTV, 스마트 도어락, 공장 자동화 시스템(SCADA) 등이 Shodan에서 검색된 사례가 있음.
  • 기본 로그인 설정을 변경하지 않은 IoT 기기는 누구나 쉽게 접근할 수 있어 해킹 위험이 존재함.

4. IoT 기기의 보안을 강화하는 방법

Shodan을 통해 보안이 취약한 IoT 기기가 검색되는 것을 막기 위해 다음과 같은 보안 조치를 취해야 한다.

기본 비밀번호 변경 (admin/admin 사용 금지)
불필요한 포트 차단 (특히 Telnet, FTP, HTTP 기본 포트)
펌웨어 업데이트 (최신 보안 패치 적용)
VPN 사용 및 방화벽 설정 (공개 네트워크에서 보호)
Shodan을 활용한 자체 보안 점검 (자사 기기가 외부에 노출되었는지 확인)


결론

IoT 기기의 보안 취약점은 해커에게 악용될 위험이 있으며, Shodan은 이러한 기기를 검색하는 데 사용될 수 있다.
하지만 이를 역이용하여 보안 점검 및 취약점 보호 조치를 취하면 Shodan은 오히려 IoT 보안 강화를 위한 유용한 도구가 될 수 있다.
따라서 기업 및 개인은 Shodan을 활용해 자사 IoT 장비의 보안 상태를 주기적으로 점검하고 강화해야 한다.

https://pntbiz.co.kr/wp-content/uploads/2020/08/Easy-Steps-for-Enterprises-to-Strengthen-IoT-Security-1030x579.jpg

 

 

참고자료

https://itcase.tistory.com/entry/26-%EC%B9%A8%ED%95%B4%EB%8C%80%EC%9D%91CERT-4-%EC%82%AC%EB%AC%BC%EC%9D%B8%ED%84%B0%EB%84%B7IoT-%E2%80%A2-Shodan

'Security > CERT' 카테고리의 다른 글

웹 보안 취약점(1)  (0) 2025.03.15
Shodan을 통한 IoT 기기 검색과 특징  (0) 2025.03.01
구글해킹을 통한 취약 • 노출정보 검색  (0) 2025.02.15
구글해킹  (0) 2025.01.31
침해 대응 & CERT  (0) 2025.01.18

Google Hacking과 보안 취약점

구글은 단순한 정보 검색을 넘어 보안 취약점과 민감한 정보까지 노출할 수 있는 강력한 도구이다. 이러한 검색 기법을 체계적으로 정리한 것이 Google Hacking Database(GHDB)이며, 특정 키워드 조합을 활용해 보안이 미흡한 시스템의 정보를 찾아내는 데 사용된다.
이 글에서는 GHDB를 활용한 검색 기법과 함께 주요 보안 취약점의 예시를 살펴본다.


1. 무선 공유기 정보 노출

검색 키워드: inurl:home.htm intitle:1766

 




GHDB에서 제시한 취약점을 검색하여 장비 이름, MAC 주소, IP 주소가 그대로 노출되는 모습을 확인할 수 있었다.    


 

2. 개인정보 노출


검색 키워드: inurl:"wp-content/uploads" "passport"




페루 국적의 사람 여권 정보가 유출되었다.                                                                                                                              


3.데이터 베이스 정보 노출

검색 키워드: intitle:"Index of /" intext:".db"

 

데이터베이스 내부 구조와 SQL 작성 코드가 노출되어 중요한 내부 정보들이 보였다.


4.교육기관 및 학생 정보 유출

검색 키워드: intitle:"index of" "/students"



대학생들의 이름과 프로필 사진이 노출되었다.                                                                                                                        


5. 금융정보 유출

검색 키워드: inurl:pastebin "VISA"

 



카드 정보가 유출된 사례가 발견되었다.


6.고객 정보 노출

검색 키워드: intitle:"index of" "invoices"

 



무역에 사용되는 송장 정보들이 공개되었다.


7. 감시 카메라 및 CCTV 피드 노출

검색 키워드: inurl:"view/view.shtml" "webcam"

 



특정 CCTV 영상이 라이브로 스트리밍되어 누구나 실시간으로 확인할 수 있는 상태였다.


결론

Google Hacking 기법을 통해 단순한 검색만으로도 개인정보, 금융 정보, 시스템 설정 파일 등 다양한 민감한 데이터가 노출될 수 있다. 이를 방지하기 위해서는 디렉터리 접근 통제, 보안 설정 강화, 암호화 적용 등의 조치가 필수적이다.
검색 기술을 윤리적이고 보안적으로 활용하는 것은 사용자들의 책임이며, 조직에서도 정기적인 보안 점검을 통해 데이터 유출을 예방해야 한다.

'Security > CERT' 카테고리의 다른 글

웹 보안 취약점(1)  (0) 2025.03.15
Shodan을 통한 IoT 기기 검색과 특징  (0) 2025.03.01
사물인터넷(IoT)과 Shodan  (0) 2025.02.19
구글해킹  (0) 2025.01.31
침해 대응 & CERT  (0) 2025.01.18

+ Recent posts