Web site의 취약점을 공격하는 기술적 위협
Web page를 통해 권한이 없는 시스템에 접근 or 데이터 유출 및 파괴 등
일반적으로 Web application hacking의미
Web application? web app은 web browser+web기술 이용해 사용자와 대화하는 방식으로 인터넷을 이용하는 응용 소프트웨어
ex) web mail, online전자상거래, 인터넷게시판, 블로그, 게임 등
web hakking을 통해 web server를 공격하거나 web server를 경유하여 또 다른 server 공격 가능
Web site의 취약점을 점검해주는 프로그램+ 문제에 대한 해결방안도 제시
ex) OpenVAS, Retina CS Community, MBSA(Microsoft Baseline Security Analyzer) /Acunetix
The Open Web Application Security Project
비영리 국제 단체이자 web server 보안과 관련하여 공신력 있는 기관
Access Control (접근제어, 인가)
로그인에 성공한 사용자가 어떤 행위를 할 때 허용할지 결정하는 것
(=사용자의 자원에 대한 접근 또는 사용을 허가하는 과정)
Broken Access Control?
적절한 인가 점검 (Access Control) 없이 비즈니스 로직 수행
ex)인증된 사용자가 수행할 수 있는 작업에 대한 권한 관리 등
=>이를 악용해 다른 사용자 계정 접근, 중요 파일 열람, 다른 사용자 데이터 수정, 액세스 권한 변경 등과 같은 악의적 행위 가능
관리자 페이지의 접근 권한이 제대로 되어있지 않다? 공격자의 루트가 되기 쉽상 !
SSH, FTP처럼 server에 액세스 할 수 있는 서비스도 공격자에게 악용될 수 있음.
*보안대책: authorization 체크 후 로직 수행
(인가 점검 로직 호출->비즈니스 로직 호출)
민감 데이터 노출(개인 식별 정보 or 신용 정보 등)
저장된 데이터 or 전송중인 데이터 노출
중요 정보를 평문으로 저장 or 전송
취약한 암호화 알고리즘 사용
=>Cryptographic Failures
*보안대책: file, database, memory등에 중요 데이터를 저장하는 경우 반드시 암호화해서 저장 / 인터넷 등과 같은 통신 채널을 통한 민감 정보 정소의 경우 반드시 암호화해서 전송
공격자가 web application으로 비정상적 명령어, query를 보내 시스템에 접근할 수 있는 취약점
개발자의 의도와 다른 접근을 통해 시스템 데이터 변조,수정,유출 가능
전송받는 인수에 포함된 특정 명령을 실행하는 코드를 적절히 필터링하지 못하면 injection공격에 대한 취약점 발생 (' or '1'='1)
SQL injection :
web server에서 database로 전송되는 SQL query에 사용되는 id, password, 검색어 등 여러 가지 인수에 추가 실행 코드를 넣는것
database와 관련된 보안 취약점: 사용자가 입력하는 입력 값에 대한 유효성을 검증하지 않고 그대로 사용할 때 발생 가능
SQL query가 악의적으로 변조(악용)
->사용자 인증을 우회하거나 database에 저장된 데이터가 변조되거나 파괴될 수 있음
알아 두면 좋은 조건값
'or "='
'or '1'='1
web에서 사용자 입력 값을 받아 database에 SQL문으로 데이터를 요청하는 모든 곳에 사용 가능, 인증 뿐만 아니라 다양한 형태의 SQL문 실행 가능,
게시판, 우편번호 검색처럼 대량의 정보를 검색하는 부분에서 web server와 database연동이 일어나므로 SQL injection 공격 가능
*보안대책: 매개변수 바인딩 기법사용, 입력 값에 대한 특수문자 검증
-매개변수 바인딩 기법사용
1.Database로 static SQL query전달
2.query 변조가 발생하지 않음
3.Database에서는 static query와 파라미터가 binding되어 실제 query 실행
->사용자가 입력한 ID와 PW같은 값은 별도의 매개변수로 전달
-입력 값에 대한 특수문자 검증
1.사용자 입력에서 특수문자가 포함되어 있는지 검사
2.허용되지 않은 문자열이나 문자가 포함된 경우에는 제거
MS SQL Server, Oracle 주석문: --
MySQL의 주석문: #
Cross-Site Scripting(XSS):
공격자가 피해자의 브라우저에 악의적인 script를 넣는 공격
web browser에 사용자가 입력하는 값에 대한 유효성을 검증하지 않고 그대로 web server로 전송했을 때 발생할 수 있는 보안 취약점
악성 스크립트를 web server에 저장하여 같은 web server에 접속한 다른 사용자들에게 배포되도록 하여 추가 보안 사고 발생
피해자의 browser에서 스크립트를 실행하여 사용자 세션 탈취, web site변조, 악의적 site로의 이동 등의 공격 실행
->web browser가 download한 HTML 문서를 출력할 때 문서에 포함된 java script 코드가 자동으로 실행되므로 매우 위협적
일반적으로 java script에서 주로 발생
VB script, ActiveX 등 client에서 실행되는 모든 언어(dynamic data를 생성하는 언어)에서 발생 가능
*보안대책: 사용자의 입력값에 대한 특수문자 검증(script 사용을 막기 위해),사용자의 입력값에 대한 검증은 반드시 server측에서 수행
설계과정에서 발생하는 보안적 결함
->설계과정부터 잘 설계해라 ~
시스템 기획 단계와 애플리케이션 설계 과정에서의 보안사항 준수는 매우 중료
설계가 잘못된 애플리케이션은 추후의 보안테스트로 발견한 사항을 쉽게 조치할 수 없거나 위험성을 가지고 운영해야하는 경우 많음
-Configuration이 잘못된 경우
안전하지 않은 기본 구성, 불완전한 구성 또는 임시 구성, 개방된 cloud storage, 잘못 구성된 HTTP 헤더 및 민감한 정보가 포함된 자세한 error message 등
불필요한 기능(port, service, page, account)등이 활성화 되어있으면 공격자의 공격루트가 됨
불필요하게 자세한 오류 메세지는 Blind SQL injection과 같은 공격에 사용될 수 있음
시스템을 업그레이드한 경우 최신 보안 기능이 비활성화되어 있을 수도 있음.
XXE(XML External Entities):Query를 날려서 따로 분리되어 있는 XML에 접근할 수 o
-오류 메세지를 통한 정보 노출
->너무 구체적으로 오류 메세지 적지마
Component: system에 있는 component(library, framework, software module 등) 이미 만들어져있는거 가져다 쓰기
Component는 application과 같은 권한으로 실행
취약한 component가 악용된 경우 심각한 데이터 손실을 일으키거나 server가 장악될 수 있으므로 component의 취약점에 대해 충분한 검토 필요
Authentication(인증):
요청을 보낸 사용자가 시스템의 사용자가 맞는지 확인하는 과정
인증 및 세션 관리와 관련된 web application의 기능이 잘못 구현되어 공격자가 암호, 키 또는 세션 토큰을 위험에 노출시키거나, 일시적/영구적으로 다른 사용자의 권한 획득을 위해 악용하도록 허용할 수 있는 취약점
적절한 인증 없는 비즈니스 로직 수행 등 중요 기능 허용하면 안됨
취약한 인증은 web에서 자주 발견되며 다양한 유형 존재
취약한 인증의 예)brute force 공격 허용, 약한 암호화를 사용, 세션 ID 관리 소홀 등
*보안대책: 계정 관리를 통해 인증 수행
인증 점검 로직 먼저 호출 후 비즈니스 로직 호출
Code나 Infrastructure이 integrity violation(무결성 위반)에 적절히 대응하지 못할 때 발생
-Update without singing : 무결성을 증명하지 않은 소프트웨어 업데이트, 중요 데이터 등
-Insecure Deserialization
serialization? 객체를 직렬화해 전송 가능한 형태로 만드는 것 (자바에 존재)
Deserialization? 저장된 파일을 읽거나 전송된 스트림 데이터를 읽어 원래 객체의 형태로 복원하는 것 -> 이 과정에서 원격코드 실행이나 권한 상승 등의 취약점이 발생할 수 있음
로깅 및 모니터링이 불충분한 경우 사고 대응이 비효율적으로 통합되거나 누락됨
공격자는 시스템을 추가로 공격하고 지속성을 유지하며 더 많은 시스템을 중심으로 공격할 수 있게 되고 데이터를 변조, 추출, 파괴함
https://blog.naver.com/wltjs1238/222934876862
ㅎㅎ.. 내가 작년에 한 !! 참고해도 좋을 것 같아서 첨부해봤다.. 더 나은 실력을 가지고 있겠지..?
공격자가 서버를 속여 서버 측에서 위조된 요청을 보내도록 하는 취약점
일반적으로 client가 server system 내부 DB에 직접적인 접근이 불가하므로 server가 중간 역할을 수행함
SSRF 취약점을 이용해 공격자는 일반적으로 사용자들이 접근할 수 없었던 서버 내부 자원에 접근해서 API key와 같은 중요 데이터 유출, 내부 네트워크 스캔, 임의 코드 실행이나 임의 파일 쓰기 등의 허가받지 않은 행위 가능
서버가 사용자의 입력값으로 URL을 받아 처리하는 서비스의 경우 잠재적으로 SSRF 취약점 존재
*대응방안: 사용자로부터 입력 최소로 받기, 입력값에 대한 철저한 검증
-경로조작
사용자가 입력하는 입력 값에 대한 유효성을 검증하지 않고 그대로 사용할 때 발생할 수 있는 server시스템 자원 접근에 대한 보안 취약점
사용자가 접근해서는 안되는 server의 중요 파일을 내려받거나 혹은 삭제
*보안 대책: 입력값 특수문자 검사, 해당 문자 제거
-위험한 형식 파일 업로드
유효성 점검의 대상이 사용자가 입력하는 값이 아니라 업로드하려는 파일인 경우
웹 셸: 사용자가 올린 파일이 웹 서버에서 실행되면서 보안 공격자가 외부에서 웹 서버를 통해 서버를 원격 조종하게 하는 파일
파일 확장자: .asp,.jsp.php등의 server side script
*보안대책: 화이트 리스트 방식의 허용된 확장자만 업로드 허용, server에 upload된 파일 저장할 때 파일 이름과 경로를 임의의 문자열로 변경하여 저장(외부에서 직접 호출 어렵도록), 파일이 서버에서 실행될 수 없도록 실행 속성 제거(유닉스일경우)
-특수문자 filtering
web해킹의 가장 기본적인 형태 중 하나는 인수 조작으로 예외적인 실행을 유발하기 위해 특수문자를 포함하는 것
-server 통제 작용
File upload filtering이나 특수문자 filtering의 경우 CSS기반의 언어로 filtering하는 경우에는 공격자가 로직만 파악하면 필터링이 쉽게 무력화되므로 ASP, JSP 등과 같은 SSS로 filtering 로직을 수행해야 함
-지속적인 세션 관리
모든 web 페이지에 일관성 있는 인증 로직을 적용하려면 기업 또는 web 사이트 단위에서 세션 인증 로직을 표준화하고, 표준을 준수해서 웹페이지를 개발해야함