또 뭐하지
[기초] 웹 해킹 개념 간략 정리 본문
728x90
1. OWASP TOP 10
OWASP TOP 10 : OWASP에서 발표하는 가장 중요한 웹 애플리케이션 보안 위협 목록
OWASP TOP 10 (2024)
- 부적절한 자격 증명 사용(Improper Credential Usage)
- 불충분한 공급망 보안(Inadequate Supply Chain Security)
- 보안에 취약한 인증 및 권한 부여(Insecure Authentication/Authorization)
- 부족한 입력/출력 검증(Insufficient Input/Output Validation)
- 안전하지 않은 통신(Insecure Communication)
- 불충분한 개인 정보 보호 제어(Inadequate Privacy Controls)
- 부족한 바이너리 보호(Insufficient Binary Protections)
- 잘못된 보안 구성(Security Misconfiguration)
- 안전하지 않은 데이터 저장소(Insecure Data Storage)
- 불충분한 암호화(Insufficient Cryptography)
2. SQL Injection
SQL Injection
악의적인 사용자가 웹 응용 프로그램의 입력 매개 변수를 통해 SQL 쿼리를 삽입하여 데이터베이스 시스템을 공격하는 기술
SQL 문법
- 데이터 정의 언어 (DDL) :
CREATE
,ALTER
,DROP
- 데이터 조작어 (DML) : DB에 있는 데이터를 검색, 삽입, 수정, 삭제하는 데 사용 (=쿼리)
SELECT
: 데이터 조회INSERT
: 데이터 삽입UPDATE
: 데이터 수정DELETE
: 데이터 삭제
- 데이터 제어 언어 (DCL) :
GRANT
,REVOKE
- 트랜잭션 제어 언어 (TCL) :
COMMIT
,ROLLBACK
논리연산
SQL문의 WHERE 절을 항상 참으로 만드는 공격을 수행하는데 이용
기본적으로 논리 연산이 여러 개가 나열되면 NOT-AND-OR 순서로 계산
SQL Injection 종류
- Error based SQL Injection : 논리적 에러를 이용하는 공격. 논리 연산을 이용하는 것이 일반적이며 인증 우회가 목적.
- UNION based SQL Injection : 여러 SQL문을 합쳐 실행할 수 있는 UNION을 이용하는 공격. 데이터 노출이 목적.
- Blind SQL Injection : 데이터베이스 메시지가 공격자에게 보이지 않는 경우에 사용하는 공격. 데이터베이스 서버의 응답을 통해 데이터베이스에 대한 정보를 추측.
- Boolean based SQL Injection : 쿼리가 참일 때와 거짓일 때의 서버 반응으로 데이터를 얻어내는 공격.
- Time based SQL Injection : 쿼리의 참과 거짓을 판별할 수 없는 경우 사용하는 공격. 시간 지연시키는 쿼리를 주입하여 응답 시간 차로 참과 거짓 여부 판별.
방어 방법
- 입력값 검증 : /,-,'," 등의 의도하지 않은 입력을 검증
- Prepared statement 사용 : 쿼리를 사전에 컴파일하고 입력 변수 값만 삽입하는 방법. 사용자 입력이 매개변수로 전달되므로, 입력 값이 직접 SQL 쿼리에 삽입되지 않음.
3. File Upload Vulnerability
File Upload Vulnerability
파일 업로드 취약점 : 악성 스크립트를 업로드하여 원격 코드를 실행할 수 있는 취약점
공격 목적
- 웹 서버를 통해 DB 정보 획득 : DB에 직접 접근할 수 없기 때문에 서버에 먼저 접근
- 근접 네트워크 침투 : 내부 포탈 서버, 로그 서버 등 내부 시스템을 대상으로 포트포워딩, 터널링 기법 등을 통해 네트워크에 침투
공격 원리
- 확장자 제한 및 파일 접근/실행 권한이 있는지 확인
- 파일 접근/실행이 가능하고 확장자 제한만 있는 취약한 웹 사이트의 경우 Proxy 툴을 이용한 파일 타입 변조하거나 Null 이용하여 확장자를 숨김
방어 방법
- 시큐어 코딩을 통한 확장자 검증
- 화이트리스트(허용 리스트) 허용으로 확장자 검증
- 시스템 보안 레벨 상승
- 서버를 분리해 관리하거나, 실행 권한 삭제
- 지속적인 모니터링
4. XXS
XSS(Cross Site Scripting)
클라이언트 사이드 취약점. 특정 계정의 세션 정보를 탈취하고 해당 계정으로 임의의 기능 수행 가능.
공격자는 웹 리소스에 악성 스크립트를 삽입하여 이용자 웹 브라우저에서 해당 스크립트 실행 가능.
Java Script
웹 문서의 동작을 정의.
웹 브라우저의 저장된 세션 및 쿠키를 JS로 이용자와의 상호 작용 없이 조회하거나 변경할 수 있음.
다양한 동작을 정의할 수 있기 때문에 XSS 공격에 주로 사용.
XSS 종류
- Stored XSS : 악성 스크립트가 서버에 저장되고 서버의 응답에 담겨오는 XSS. 서버의 데이터베이스 또는 파일 등의 형태로 저장된 악성 스크립트를 조회할 때 발생.
- Reflected XSS : XSS에 사용되는 악성 스크립트가 URL에 삽입되고 서버의 응답에 담겨오는 XSS. 서버가 악성 스크립트가 담긴 요청을 출력할 때 발생.
- DOM 기반 XSS : XSS에 사용되는 악성 스크립트가 URL Fragment에 삽입되는 XSS
방어 기법
- 입력 값 제한
- 입력 값 치환 : 태그 문자(<,>) 등 위험한 문자 입력 시 문자 참조로 필터링하고, 서버에서 브라우저로 전송 시 문자 인코딩
- 스크립트 영역에 출력 자제
5. CSRF
CSRF (Cross-Site Request Forgery)
사이트 간 요청 위조. 공격자가 공격 대상 브라우저에 다른 웹 사이트로 HTTP 요청을 보내 서버에 대한 공격을 함.
취약한 웹 사이트에서 이미 인증을 완료한 공격 대상이 전혀 인지하지 못한 상황에서 요청을 보냄
웹 사이트에서 요청을 인증하는 절차상의 약점을 악용하여 서버 측 정보를 수정하고 사용자 계정을 장악함.
HTTP Request Method
- GET method : 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메소드. 대표적으로 URL에 Parameter를 붙여 전송.
- POST method : 리소스를 생성/업데이트하기 위해 서버에 데이터를 보내는데 사용되는 메소드. GET과 달리 전송할 데이터를 HTTP 메시지 body 부분에 담아서 서버로 전송.
공격기법
- GET 요청 기반 CSRF 공격 : 공격자가 악의적인 링크에 접속하도록 유도하는 것
- POST 요청 기반 CSRF 공격 : 공격자가 피해자의 브라우저를 통해 악의적인 폼을 자동으로 제출하도록 하는 것
- 히든 폼 기법 : 악의적인 웹 페이지에 웹 애플리케이션에 대한 요청을 생성하는 히든 폼을 포함하는 것
방어 기법
- CSRF 토큰
- CORS(Cross-Origin Request Sharing) 사용
- HTTP 요청과 함께 제출된 Origin이나, Referer 헤더의 값을 확인하고 예측값이 포함되어 있지 확인
'I.sly() > 9기 기초 - 공통' 카테고리의 다른 글
[기초] 리버싱 기초 문제 (Linux) (0) | 2024.05.09 |
---|---|
[기초] 리버싱 개념 간략 정리 (0) | 2024.05.09 |
[기초] 웹 개념 간략 정리 (0) | 2024.03.28 |
[기초] OverTheWire:Bandit - level 0~level 6 (0) | 2024.03.28 |
[기초] 리눅스 개념 간략 정리 (0) | 2024.03.28 |