내 잡다한 노트
웹 애플리케이션 취약점을 통한 해킹 본문
웹 서버의 취약점보단 웹 애플리케이션의 취약점에서 웹 해킹 사고가 발생하는 경우가 가장 많다.
대표적인 것을 써본다.
# SQL 인젝션 공격
대표적인 취약점으로, 웹 애플리케이션이 데이터베이스와 연동하여 SQL을 질의하는 과정에서 이뤄진다.
이를 이용해 주로 인증 과정을 우회하여 원하는 계정에 접근하거나 특정 명령어를 실행시킬 수 있다.
ID에 admin, password에 1234를 넣으면 질의문은 다음과 같다
select id, pw, name, level from member WHERE id = 'admin' and pw='1234'
그런데, password에 ' or ''=' 를 넣고 하면 성공한다.
왜 그럴까? 바로 false AND false OR true 라는 논리연산이 돼서 최종적으로 true가 되어 성공한다.
# XSS (Cross Site Scripting)
보통 웹 사이트의 게시판에 글을 작성할 때 사용자가 입력한 값을 검사하지 않은 경우에 발생한다.
공격자는 정상적인 글이 아닌 악성적인 스크립트를 삽입하여 비정상적인 방법으로 사용자의 인증 정보인 쿠키, 세션 정보
등을 탈취할 수 있다.
그래서 입력 값에 자카스크립트나 html 태그 등을 쓰지 못하게 막아야 한다.
# 파일 업로드
대부분 파일을 업로드할 때 파일 유형을 검증하지 않아 발생한다.
공격자는 공격 대상인 웹 서버에 .asp, .php, .jsp 등의 웹 언어를 업로드할 수 있다면 파일 업로드 취약점이 존재하는 것으로 보고, 웹 셸을 업로드하여 서버에 악의적인 기능이나 악성 코드를 배포하는 데 활용한다.
# 파일 다운로드
다운로드하려는 파일의 위치나 경로가 노출되거나 추측할 수 있는 경우에 발생할 수 있다.
이런 상황이라면 공격자는 추측이 가능한 정보를 이용해 파라미터 변조와 같이 비정상적으로 접근하여 원하는
경로로 접근하거나 특정 파일을 다운로드할 수 있다. 이를 통해 실제 다운로드 권한이 없어도 파일을
다운로드 할 수 있다.
예를 들어 2022-닭다리업체선정결과.docx 파일이 작년에 있었다면 올해엔 2023-닭다리업체선정결과.docx 파일이
존재할 것이라고 추측할 수 있다. 공격자는 추측한 파일의 다운로드를 시도하여 파일이 유출될 수 있다.
흔히 발생하는 사례니 이를 막기 위해선 파일을 업로드할 때 파일명 그대로 올리지 말고 실제 서버에는 MD5 해시 값으로 파일을 저장하고, 저장된 파일명은 별도의 파일 DB 테이블을 운영하여 다운로드 시 원래 파일명으로 변환해야 한다.
# 무차별 대입
단순하게 특정 계정에 대해 로그인을 수없이 시도하는 것이다.
칼리 리눅스의 비밀번호 크랙 도구인 Hydra로 작업하기 전에, 웹 브라우저로 공격 대상의 로그인 과정과 구조를 알아내야한다. 웹 페이지의 f12를 눌러 개발자 모드에서 로그인을 어떻게 처리하는지 볼 수 있다.
'보안' 카테고리의 다른 글
정보보호 정책 (0) | 2024.09.25 |
---|---|
CORS(Cross-Origin Resource Sharing) (0) | 2023.11.30 |
아파치 웹 서버 기초적인 보안 설정 (0) | 2023.09.03 |
[보안] 웹 서버 취약점을 통한 해킹 (0) | 2023.09.03 |