웹해킹

[웹해킹] OWASP Top10 취약점 - IDOR, XSS, CSRF, SQL injection, File Inclusion, SSRF

이둥둥 2025. 3. 8. 20:41

OWASP Top10

OWASP Top 10은 개발자가 설계하고 배포하는 애플리케이션의 보안을 강화할 수 있도록 가장 중요한 애플리케이션 보안 위험을 나열하는 업계 표준 가이드라인

 

https://www.opentext.com/ko-kr/what-is/owasp-top-10

 

OWASP Top 10이란 무엇인가요? | OpenText

보안 테스트, 취약성 관리, 맞춤형 전문 지식 및 지원을 활용하세요.

www.opentext.com

 

 

IDOR(Insecure Direct Object References)

유저가 제공하는 인풋이 객체에 직접적으로 접근하는 것을 악용해서 공격자가 자신의 권한을 초과하는 동작을 하는 행위.

Horizontal Privilege Escalation는 공격자가 동일한 수준의 권한을 가진 다른 사용자의 데이터에 접근하는 상황.

예를 들어서 다른 페이지에 접근하는 URL에 사용자 ID를 직접 참조할 때, 이 부분을 변경해 다른 사용자의 페이지에 접근 

Vertical Privilege Escalation은 공격자가 더 높은 권한 수준을 가진 사용자의 정보에 접근하거나 조작한다.

 

ex) test.com/userinfo?uid=103이 내 계정인데 test.com/userinfo?uid=105로 다른 유저 계정에 접근하는 식

숫자 외에도 사용자 이름, HTTP 메소드 변경, 콘텐츠 타입 변경 방식도 있다

 

XSS(Cross-Site Scripting)

https://eggsmong.tistory.com/88

 

[웹해킹] XSS 공격의 원리와 종류 | Reflected XSS 실습

XSS란?XSS (Cross-Site Scripting)는 웹 애플리케이션의 취약점을 악용하여 악성 스크립트를 다른 사용자의 브라우저에서 반환해 실행하게 만드는 공격 기법이다. XSS는 웹 페이지에 신뢰할 수 없는 입력

eggsmong.tistory.com

xss는 저번 포스팅에서 다뤘으므로 이론적인 부분을 생략하겠음

 

 

CSRF

 

피해자가 자신이 의도하지 않은 행위를 하도록 유도하는 공격이다. 로그인을 하면 웹 서버에서 세션 아이디를 부여하고 브라우저에 보관되어 요청을 할 때마다 쿠키로 사용자의 신원을 확인한다.

예를 들어 우리가 은행 웹사이트에 로그인했는데 공격자에게 악성 URL 포함 메일을 클릭하면, 로그인 상태가 유지되어 계좌로 돈이 빠져나가는 상황이 생기는 방식이다.

 

 

SQL injection

 

SQL 인젝션은 앱에서 데이터베이스로 보내는 쿼리를 공격자가 변조하는 취약점이다. 권한이 없는 데이터를 보거나 수정, 삭제를 할 수 있다. SQL 구문에 따옴표나 백슬래시 같은 특수문자들이 포함해서 정보유출을 유도함

예시로 살펴보자

SELECT * FROM accounts WHERE user_id='user'-- - and user_pw='1234'

 

이 쿼리문을 보면 user라는 ID 뒤에 작은 따옴표를 붙임으로써 하이픈 -- 문자로 뒷부분을 주석 처리한다

이렇게 해서 비밀번호 검사 부분을 제거해 아이디만으로 쿼리문이 실행된다

  • Boolean-based blind SQL injection: 1=1는 항상 참이고 1=0 구문으로는 아무런 정보가 조회되지 X
  • Error-based SQL injection: 일부러 유효하지 않은 쿼리로 오류 메시지 반환 유도
  • Union based SQL injection: union 으로 두 쿼리를 합쳐 실행하는 것
  • Time based blind SQL injection: sleep, wait 함수를 사용해 조건에 따라 시간을 이용한 쿼리 실행

 

File Inclusion

동적으로 파일을 읽거나 include 기능을 악용해 시스템 파일을 탈취하거나 임의의 소스코드를 포함하도록 유도

 

Local File Inclusion(LFI) vs RFI(Remote File Inclusion)

LFI: Local에 있는 파일을 읽는 공격, 공격자가 시스템 파일이나 소스코드를 인클루드 시켜 코드를 실행할 수 있다. 파일에 PHP 시스템 함수를 이용해서 실행 코드를 삽입. Apache 웹 서버의 경우 요청 정보를 access.log 파일에 기록하는데 User-Agent에 php 코드를 삽입하면 요청할 때마다 access.log에 기록되고 로그파일에 기록된 PHP 코드가 실행된다.

RFI: 공격자가 웹 서버에서 자신이 원격으로 제어하는 파일을 포함하는 방식의 공격, 예를 들어 공격자가 원격서버에 악성 쉘코드를 미리 두고 취약한 웹 서버에 이 파일을 포함하도록 하면 웹 서버에서 악성 코드가 실행됨. 

 

RFI이 LFI과 다른점은 원격 서버에서 호스팅 되는 파일이 웹 애플리케이션에서 포함된다는 것

 

 

SSRF

공격자가 서버로 하여금 임의의 외부 요청을 전송하도록 유도하는 방식으로, HTTP 요청에만 국한되지 않지 않음. 주로 포트 스캔이나 내부 망 서비스 접근을 용도로 생각할 수 있는데 AWS Credentials 유출을 예시로 들 수 있다. AWS 시크릿 액세스 키를 얻어내 그에 해당하는 AWS 버킷에 접근하거나 파일을 다운로드할 수 있음.

 

이미 다루었기 때문에 자세한 설명은 생략

https://eggsmong.tistory.com/85

 

웹해킹 :: SSRF 취약점/ Lab: Basic SSRF against the local server

SSRF이란? 공격자가 서버사이드에서 의도하지 않은 지점으로 요청을 하도록 만드는 행위이다.일반적으로 서버가 조직의 인프라 내에 내부망 서비스에 연결을 하도록 하거나, 외부 시스템에 연

eggsmong.tistory.com

 

최근에는 SSRF 단독이 아니라 XSS과 연계되어 내부 파일 탈취 사례도 보고되고 있어 각 취약점들을 이해하는 것이 중요함