Security

정의인증/인가된 사용자가 접근 가능한 페이지에 대해 접근 제한이 존재하지 않거나 우회 포인트가 존재하여 접근 가능한 것 인증과 인가인증 Authentication인증된 사용자인지 확인하는 과정인가 Authorization특정 사용자가 해당 권한이 있는지 확인하는 과정 공격원리파라미터 변조와 동일특정 페이지에 접근만 하면 됨(→ 공격인지 분별하기 어려움)페이지명(URL)을 유추해야함(수동적, 자동화 도구 이용(사전식 대입))일반적으로 관리자 페이지를 유출하고자 함네이밍 패턴을 통해 유추 대응 방안접근제한 설정세션이 있는지, 있다면 id가 admin인지 확인
말 그대로 파라미터 변조 취약점 주의할 점폼 페이지 → 액션 페이지일때폼 페이지에서 검증하면 안됨넘어갈때 버프스위트에서 파라미터를 변조할 수 있기 때문에 폼페이지에서 하면 의미가 없어짐(둘 다 하면 더 좋음) 공격 범위무단 수정/삭제/열람 취약점 확인 방법파라미터를 없는 값으로 줘서  id 값이 더미값으로 처리되는지 확인 유형별 공격 위험성1. 사용자 id값을 받는 경우(id=admin)id를 유추해야하므로 2에 비해 피해 작음2. seq값을 입력 받는 경우(idx=300)개인정보 노출 피해가 굉장이 큼 대응방안1. 사용자 입력값에 대한 검증사용자 입력값을 받아야하는 경우2. 세션을 통한 처리굳이 사용자 입력값을 받지 않아도 되는 경우
파일 업로드 취약점이란정의파일 업로드 기능에 대해 발생하는 취약점비정상 코드의 기준서버 사이드 스크립트로 작성된 웹쉘 코드냐 아니냐(악성 코드냐 아니냐)공격공격 원리- 업로드 기능에 악성스크립트 업로드 시도    파일명을 받음 -> 기존 경로와 파일명 조합 -> 파일 출력 -> 웹쉘 접근 및 실행- 조건    1. server side script로 작성되어야한다    2. 웹 디렉토리에 업로드되어야 한다 웹쉘이란쉘: 사용자와 커널간 대화를 위한 인터페이스웹쉘: 웹페이지 상에서 원격지 서버의 시스템 명령어를 실행할 수 잇는 도구(공격용 악성스크립트)시스템 명령을 실행할 수 있는 함수를 없애지 못한 이유: 개발자 편의 때문에 삭제하지 못함
파일 업로드 취약점이란정의서버에 있는 파일을 다운로드 받는 과정에서 비정상적인 파일을 받는 것공격 대상파일 다운로드 기능 (다운로드 기존 경로의 강제 변조)파일의 정상/비정상 구분: 파일 다운로드 기능에서 지정되어 있는 경로에서 파일을 다운로드 받느냐가 정상 파일의 기준 공격공격원리 분석사용자로부터 파일명을 입력 받음이때 공격자는 경로 이동문자가 삽입된 중요 파일 다운 시도`../`는 개수를 맞추지 않아도 됨(서버 경로 모르니까 무작정 넣음)해당 파일을 읽어서 불러오게 됨 공격 방법1. 파일명만 받는 경우(소~중규모 웹 서비스)    경로 이동 문자 삽입2. 일부경로 및 파일명 받음(중~대규모 웹 서비스)    1) 일부 경로 입력 받는 곳에 ../ 넣기    2) 파일명에 ../ 넣기3. 전체 경로가 ..
CSRF란정의: Cross-Site Request Forgery, 사이트간 요청 위조사용자가 의도하지 않은 작업을 수행하도록 사용자 요청 위조공격을 통해 할 수 있는 것- 사용자 정보 수정- pw 변경- 탈퇴- 게시글 작성/수정/삭제 등XSS와 CSRF의 차이 XSSCSRF공격 유형공격자가 의도한 서버로 이동사용자가 의도하지 않은 요청으로 악의적인 행위를 함최종 공격대상사용자웹 서버목표사용자에게 악의적인 행위 공격공격자에 의해 스크립트가 발생하여(client side script) 자기가 뜻하지 않은 요청이 수행됨(ex. 게시글을 읽으려고만 했는데 정보가 수정됨)공격원리 분석유형1. 하나의 웹서비스에서 발생1. pw 변경 스크립트를 특정 게시글에 작성(stored)2. 인증된 사용자가 1의 게시글을 읽고..
XSS란: Cross-Site Scripting, 동적으로 출력하는 페이지에 대해 클라이언트 언어로 작성된 악의적인 스크립트를 삽입하여 비정상적 행위를 하는 공격- 클라이언트측 공격- 사이트가 a에서 b로 이동(그래서 Cross) 공격대상1. 기능적인 공격 대상   - 웹 사이트에서 어떤 기능에 대해 공격을 진행할지 선택 필요  - 입력을 받아 동적인 웹페이지를 구성하는 모든 곳에서 발생 가능, 잠재적 위협 노출  - 웹페이지 내에 출력되지 않아도 어딘가에 입력이 된다면 무조건 공격 가능2. 엔드 포인트 단의 공격 대상  - 공격대상이 사용자로 고정  - 공격 유형 중 세션 하이재킹을 통해 서버를 속일 수 있다(이를 위해 ip 검증을 하기도)  - 스크립트를 클라이언트 언어로 작성하여 서버에선 공격이 일..
XXE와 XMLXXE: XML Exeternal Entity(XML 외부 개체 주입)XML: 데이터를 효율적으로 주고 받기 위한 마크업 언어(요즘은 json을 많이 사용)XXE를 통해 서버 내 자원 무단 열람 가능 공격 대상- XML을 파싱하는 기능이 있는 어플을 공격(XML 형태로 데이터 전송할 때)   기존의 시스템(레거시 시스템) 중 XML을 주고 받는 것이 많음 원리- 앱에서 파서 기능을 수행하는데 xml이 외부 파일을 참조하도록 하여 어플에 뿌림   여기서 외부 파일을 참조 가능하도록 하는게 DTD(Document Type Definition, 문서 타입 정의)- DTD란?  : XML 문서의 구조 및 해당 문서에서 사용할 수 있는 적법한 요소와 속성을 정의  •   • Root: XML 파서(..
OS Command Injection(운영체제 명령어 주입): 사용자 입력값에 운영체제 명령어를 주입하여 원격 시스템 명령어를 실행할 수 있는 공격- 원격 서버에 대한 시스템 취약점 발생   → 제어권 탈취(서버 설정 파일 접근, 중요 소스 삭제 및 수정 가능)        = 웹 서버 가용성 침해, 데이터 침해 , 랜섬웨어 경유지/유포지 활용, 개인정보 탈취 등           운영중인 서비스에 영향 O(모든 해킹은 결론적으로 시스템 명령 실행을 목표로 진행되므로 해킹의 관점에서 매우 강력) 공격 대상- 사용자 입력값을 통해 시스템 명령을 실행하는 기능엔 잠재적으로 발생 가능 (= 일반 기능에선 필요 X)- 웹 서비스의 관리자 콘솔에 가끔 존재, 일반적으론 찾기 어려움 vs SQL Injection어..
>1. SQL injection이란? : Web App에서의 정상적인 값이 아닌 RDMS에서 사용되는 구조화된 질의 언어인 SQL을 주입하는 공격 ex) /endpoint?idx=100이 아니라 /endpoint?idx={sql} 위험도, 파급력, OWASP 1순위로 계속 1순위로 분류될만큼 영향력 있는 공격 2. 취약점 발생 원인 공격 원리 공격자는 취약한 웹앱을 대상으로 sql 구문 주입 → 미완성된 sql 구문이 사용자 입력 값을 통해 완성, 검증 없이 조합될때 취약점 발생 → 이 완성된, 변조된 sql 구문이 데베에 질의 요청 그게 왜 가능한가? WAS와 DB는 신뢰 관계이기 때문에 변조된 질의가 오더라도 대답을 해줌 = 공격자 악의적인 질의를 해도 이를 반환함 결국엔 입력값 검증 미흡으로 인해 ..
이 글은 '웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩'을 보고 정리한 글입니다. 0. 웹 해킹 개요 웹해킹은 왜 알아야하는가? 웹서비스는 계속 만들어지며 유지보수가 되고 있음 방어만 알 것이 아니라 공격을 알아야 적절한 보안을 할 수 있음 APM Apache - WS PHP server side script MySQL apmSetup(세개를 한번에 다운) 맥은 MAMP(나중에 MAMP 사용법 정리하기) 1. 웹해킹이란 : 웹 서비스 상에서 발생될 수 있는 모든 보안 허점을 이용해 악의적인 행위를 하는 것 2. 방화벽과 웹 해킹 방화벽: ip, port 기반으로 패킷 필터링(4계층) ssh, telnet, ftp와 같이 외부 접속이 필요없는 서비스 말고 대외 서비스가 필요한 것만..
Jayde
'Security' 카테고리의 글 목록