웹 취약점 이해 - OWASP Top 10 취약점(IDOR, SQLI, XSS, CSRF, LFI/RFI, SSRF)

 

 

1.  IDOR (Insecure Direct Object References)

 

IDOR는 불안전한 직접 객체 참조로  Broken Access Control의 대표적인 사례 중 하나이다. IDOR는 적절한 권한 검증 없이 웹 애플리케이션이 사용자가 제공한 입력값(예: ID, 파일 이름, 데이터베이스 )을 사용하여 객체 또는 리소스에 직접 접근할 때 발생하는 접근 제어 취약점을 말하며 , Horizontal privilege Escalation(수평적 권한 상승)이 가장 흔하게 연관되어있지만 Vertical privilege Escalation(수직적 권한 상승)과 관련하여 발생 우려가 있다. IDOR로 인해서 공격자는 참조를 수정하여 다른 사용자의 데이터, 기밀 파일 또는 관리 기능에 접근할 수 있고, 수정할 수 있는 권한이 없어야 하는 데이터를 변경하거나 삭제할 수 있다는 점과 개인 정보 침해에 대한 결과를 초래할 수 있다.

 

1) 공격 유형 

  • 예) http://lgm.com/userinfo?uid=1001 이와 같이 UID를 1002로 바꾸면 손쉽게 UID 조작만으로 정보 탈취가 가능하다. 따라서 애플리케이션이 적절한 권한을 검증하지 않는다면  IDOR의 취약점에 노출될 수 있다. 
  • 예) user_id = 1001 , post_id=5 파라미터의 값이 단순 숫자인 경우 예측 가능한 값이기 때문에 보안적으로 취약할 수 있다.
  • 사용자의 ID나 권한 정보가 쿠기나 HTTP 헤더에 포함되어 있을 경우 이를 조작해 공격을 한다.
  • JSON/XML 요청 본문에 포함된 사용자 식별자를 수동/자동 변경해, 서버가 이 값을 신뢰하고 권한 검증 없이 처리할 경우 IDOR이 발생한다.

📌 Horizontal privilege Escalation(수평적 권한 상승) : 동일한 권한 수준을 가진 다른 사용자의 데이터에 접근하는 걸 말한다.

📌 Vertical privilege Escalation(수직적 권한 상승) : 사용자 권한에서 관리자 권한으로 가장하여 상위 권한의 기능에 무단으로 접근하는 공격을 말한다.

 

 

2. XSS(Cross-Site Scripting)

 

XSS는 공격자가 악성 스크립트를 웹페이지에 삽입하여 이를 다른 사용자가 악성 코드가 실행하게 함으로써 공격자는 사용자의 정보를 빼앗고 행동을 조작할 수 있는 공격을 말한다. 즉, 공격자가 작성한 스크립트가 피해자 브라우저에서 실행된다. XSS 공격은 세션 탈취, 쿠키/토큰 탈취, 피싱 페이지 삽입, 관리자 계정 탈취 등을 통해 악의적인 행위를 수행하는데 목적이 있다.

 

1) 공격 유형 

  • Reflected XSS : 사용자에게 보내지는 링크에 악성 스크립트가 삽입된다. 공격자가 보낸 URL 링크를 클릭하면, 사용자의 브라우저에서 악성 스크립트가 실행된다.
  • Stored XSS : 악성 스크립트가 서버에 저장되며 매번 취약한 사이트에 접속할 때마다 악성 스크립트가 실행된다.
  • DOM-based XSS : 페이지에 작성된 javascript에 의해서 발생하는 악성 스크립트이며 사이트에 별도의 요청을 보내지 않아 탐지가 어려운 XSS이다.

 

3. CSRF/XSRF (Cross-site Request Forgery)

 

사이트 간 요청 위조로 CSRF/XSRF은 웹사이트 취약점 공격의 하나로, 사용자의 인증정보를 이용하여 사용자의 의지와 무관하게 공격자가 의도한 서비스 요청을 처리하는 공격 방법이다.

즉, 사용자의 브라우저는 사용자가 의도하지 않은 요청을 정상적인 세션으로 서버에 보내게 하는 공격이다. XSRF는 CSRF와 같은 의미이며, 약어만 다르다.

 

1) 공격 조건 

  • 사용자가 로그인된 상태 - 세션/쿠키를 유지 중이어야 한다.
  • 서버가 요청자를 검증을 안함 
  • 인증 정보가 자동 전송되는 구조 - 세션이나 쿠키 등을 자동으로 전송하는 구조 
  • 예) 악성 URL 이메일로 공유(공격자) > 악성스크립트 실행(사용자 > 예 "계좌 보낼테니 입금해라") > 응답(은행) > 계좌조회(공격자) 

 

4. SQLi(SQL Injection)

 

SQLi은 코드 주입 기술이라고 불리며, 데이터베이스를 질의할때 sql 언어를 사용한다. SQL 인젝션은 공격자가 
애플리케이션의 취약점을 이용해 악의적인 SQL쿼리를 삽입해 웹 애플리케이션의 데이터베이스를 조작할 수 있도록 하는 여전히 가장 흔하게 사용되는 해킹 기법 중 하나이다. SQL 인젝션을 통해 공격자는 민감한 데이터를 읽거나, 변경, 삭제 할 수 있을 뿐만 아니라 데이터베이스에서 관리 작업을 실행할 수 있다. 또한 공격자는 SQL 인젝션을 통해서 사용자에게 의도하지 않은 동작이나 정보 유출을 발생시킨다. 

 

1) 공격 유형

🔍 Error based SQL Injection

에러 기반 Error based SQL Injection은 공격자가 웹 애플리케이션에서 SQL 쿼리를 조작하여 의도적으로 오류를 발생시키고, 그 오류 메시지를 통해서 데이터베이스 구조나 정보를 추론하는 공격기법이다. 이 공격을 통해 공격자는 테이블명, 컬럼명, 데이터 타입, 값 등을 유추할 수 있다.

 

🔍 Union based SQL Injection

Union 기반 SQL Injection은 데이터베이스로 질의한 쿼리가 HTTP 응답 내용에 출력될 경우 SQL 쿼리를 조작해 데이터베이스 구조 및 저장된 민감 데이터를 획득하기 위해서 사용되는 공격이다. 

 

🔍 Blind SQL Injection

Blind SQL Injection은 웹 애플리케이션이 SQL 오류 메시지를 출력하지 않도록 설정된 환경에서 공격자가 서버 응답의 변화를 통해 데이터베이스 정보를 유추하는 공격 기법이다. 쉽게 말해 직접적으로 오류 메시지가 보이지 않기 때문에 조건문의 결과가 참인지 거짓인지를 기반으로 정보 유출이 이루어지며, 반복적인 질의를 통해서 데이터를 점진적으로 탈취한다.

  • Boolean-Based Blind SQLi : 조건문을 삽입하여 응답 결과의 변화를 확인해 참이면 정상페이지, 거짓이면 빈페이지 또는 오류 페이지를 반환한다. 
  • Time-Based Blind SQLi : 조건에 따라 서버 참/거짓 조건에 따라 응답 시간이 달라진다. 참이면 응답 시간 지연, 거짓이면 즉시 응답

 

5. LFI(local file inclusion)

 

LFI는 공격자가 로컬에 있는 파일을 읽거나, 포함시키거나, 실행할 수 있도록 하는 공격을 말한다  이를 통해서 공격자는 시스템 파일을 탈취하거나 미리 업로드 된 소스코드를 include하여 임의의 코드를 실행할 수 있다. 즉, 이 공격을 통해서 정보 유출, 원격코드 실행, 소스코드 탈취, 서버 파일 탈취, 민감 파일 탈취 등을 공격자는 악용할 수 있다.

 

6. RFI(Remote File Inclusion)

 

RFI는 원격 파일 포함공격이라하며 공격자가 웹서버에서 자신이 원격으로 제어하는 파일을 포함시키는 방법을 이용한 공격이다.원격 서버에서 호스팅되는 파일을 웹 어플리케이션에 포함시키고 실행 될수 있게 됩니다.

 

🗂️ LFI vs RFI - File inclusion 취약점 비교

 

LFI와 RFI는 File inclusion 취약점의 한 종류이지만 LFI는 서버 내부의 로컬에 있는 파일을 불러오는 취약점을 말하고 RFI는 외부서버에서 원격 파일 즉, 악성코드 포함된 파일을 웹 애플리케이션에 포함시켜 실행할 수 있는  취약점이다.

 

7. SSRF(Server-Side Request Forgery)

 

SSRF는 공격자가 서버로 하여금 의도하지 않은 위치로 위조된 요청(HTTP,HTTPS)을 보내도록 유도하는 취약점이다. 쉽게 말해 공격자가 서버를 속여서 대신 요청을 보내게 만드는 공격이며, 원래 사용자는 서버가 허용한 범위안에서만 요청을 보내야하는데 공격자는 SSRF를 통해서 의도하지 않은곳으로 요청을 보내도록할 수 있다. 이 공격을 통해서 원래는 접근 불가능한 내부시스템을 악용하거나 시스템에서 임의의 파일의 내용을 검색해 민감한 정보가 노출될 수 있다. CSRF랑 비슷하다고 생각할 수 있지만 공격이 서버측에서 일어났는지 클라이언트에서 일어났는지 즉, 공격이 발견되는 지점에 따라서 공격이 다를 수 있다.  공격자가 서버로 하여금 임의의 외부 요청을 전송하게 만드는 공격이다.

 

 

- OWASP Top 10 

https://owasp.org/www-project-top-ten/

 

OWASP Top Ten | OWASP Foundation

The OWASP Top 10 is the reference standard for the most critical web application security risks. Adopting the OWASP Top 10 is perhaps the most effective first step towards changing your software development culture focused on producing secure code.

owasp.org

 

 

 

 

 

 

 

 

 

 

 

 

참고 

KISA 아카데미 실전사이버훈련 버그헌팅 실습훈련-초급과정

KISA 아카데미 실전사이버훈련 버그헌팅 실습훈련-중급과정

FIND the GAP 교안

'Web 취약점' 카테고리의 다른 글

Web취약점 진단 - SQL 인젝션  (0) 2025.12.11
Web취약점 진단 - LDAP 인젝션  (0) 2025.12.10
Web취약점 진단 - 포맷스트링  (0) 2025.12.08
Web취약점 진단 - 버퍼 오버플로우  (0) 2025.12.04
OWASP TOP 10(2021)  (0) 2025.09.27