OWASP[Open Web Application Security Project] - 오픈소스 웹 어플리케이션 보안 프로젝트
3~4년마다 갱신되는 10대 웹 애플리케이션의 취약점 Top 10
Injection
- SQL, OS, NoSQL, LDAP 인젝션 취약점은 신뢰할 수 없는 데이터가 명령어나 쿼리문의 일부분이 인터프리터로 보내질 때 발생
- 공격자의 악의적인 데이터는 예상하지 못하는 명령을 실행하거나 적절한 권한 없이 데이터에 접근하도록 인터프리터를 속일 수 있음
SQL injection
- 매우 일반적으로 발견되는 취약점
- SQL 스트링 입력에 대한 사용자의 입력이 올바른 지를 검증하지 않는 데서 비롯
- SQL의 특수문자를 사용해서 공격
=> DB에 대한 사용자 입력을 검증하고 유효하지 않은 입력은 거절
=> 해당 IP주소를 블랙 리스트에 추가
Broken Authentication
- 인증과 세션관리에 관련된 애플리케이션의 비정상적인 동작으로 인해 패스워드, 키, 세션 토큰 및 사용자 도용과 같은 취약점을 발생시킨다
Sensitive Data Exposure
- 민감한 정보 노출, 많은 웹 애플리케이션 및 API가 의료 및 건강정보, 금융정보 등 민감정보를 제대로 보호하지 않기 때문에 개인정보 유출이 발생
- 추가적인 보호 없이 중요한 데이터가 손상될 수 있음
XML External Entities(XXE)
- 외부 개체는 파일 URI 핸들러, 내부 파일 공유, 포트 검색, 원격 코드 실행 및 서비스 거부 공격을 사용하여 내부 파일 노출
Broken Access Control
- 인증된 사용자가 수행할 수 있는 작업에 대한 제한이 제대로 적용되지 않는 경우 발생.
- 공격자는 결함을 이용해 다른 사용자의 계정에 엑세스하거나 중요한 파일을 보거나, 데이터를 수정하고 접근 권한을 변경할 수 있음
Security Misconfiguration
- 가장 흔한 이슈, 민감한 정보가 안전하지 않은 디폴트 설정이나 불안정하거나 ad hoc 설정, 잘못된 HTTP 헤더 설정 등의 결과로 이 오류가 나타남
- 기본 설정은 안전하지 않기 때문에 항상 최적화가 되어야 하고 최신 버전으로 관리되어야 한다
Cross-Site Scripting(XSS)
- 신뢰할 수 없는 외부값을 적절한 검증 없이 웹 브라우저로 전송하는 경우 발생되는 취약점
- 사용자 세션을 가로채거나 홈페이지 변조, 악의적인 사이트 이동 등의 공격 수행 가능
- JavaScript 코드를 외부 소스에서 안전하지 않은 웹사이트로 주입
- 다른 클라이언트가 해당 코드를 서버에서 받아 실행시 공격이 수행
- 클라이언트가 주 공격 대상
- Cross-site request forgery (CSRF)
- XSS와 유사하지만 서버를 공격 대상으로 하는 것이 다름
- 브라우저 대신 기능을 수행
- 목표 브라우저가 외부 웹사이트에 요청을 보내도록 함
- 클라이언트를 이용해 서버 또는 외부 사이트가 공격 대상
Insecure Deserialization
- 불안전한 역직렬화는 종종 원격코드 실행의 결과를 만듦.
- 원격코드 실행의 결과를 못만들더라도 재생, 인젝션, 권한상승 공격을 수행하는데 사용 가능
Using Components with Known Vulnerabilities
- 취약한 컴포넌트를 이용해 공격하는 경우 심각한 데이터 손실이 발생하거나 서버가 장악 됨
- 알려진 취약점이 있는 구성요소를 사용하는 애플리케이션과 API는 애플리케이션을 약화시키고 다양한 공격과 영향을 줌
Insufficient Logging & Monitoring
- 불충분한 로깅 및 모니터링은 사고 대응의 누락 또는 비효율적인 통합과 함께 공격자가 시스템을 더 공격할 수 있다.
- 지속적으로 유지되면 더 많은 시스템으로 피봇하고 데이터를 변조, 추출 또는 파괴할 수 있다.
Information Leagkage
- 민감한 정보가 Web을 통해 유출 될 수 있음
- Web directory에서 접속 가능한 모든 파일들은 GET 메소드를 통해 다운로드 가능
ex 1)
- http://www.website.com/secret.jpg | 직접 접속 가능
- http://www.website.com/index.html | 그림 파일에 대한 직접적인 링크가 없음
ex 2) searching online for "proprietary confidential" information
- Google Hacking: 웹 사이트 구성 정보 및 컴퓨터 보안 취약점 분석을 위해 구글 검색 및 기타 응용 프로그램을 사용
- Google Search Operators, hacking databaes
Misleading Websites
- Cybersquatters(도메인사냥)들이 유명한 도메인을 미리 등록해 사용자들에게 혼란을 줌
- ex)www.google.com vs www.gogle.com
피싱
- 위장된 홈페이지로 접속하도록 유도
- 스팸메일, 스팸 문자 등 이용자들의 금융 정보 등 개인정보를 빼내는 기법
파밍 (새로운 피싱 기법)
- 인터넷 주소창에 방문하고자 하는 URL을 입력할 때 가짜 사이트로 이동시키는 기법
- DNS Spoofing
- 공공기관 DNS를 탈취해 사용자가 기관에 접속한 것 같은 착각에 빠지게 만들어 개인정보 탈취
-> 둘다 가짜 사이트를 개설하는 방식을 사용
Malicious Shellcode
- Shellcode는 완전하지 않은 실행 가능한 이진 코드
- 실행중인 프로세스의 가상 주소 공간으로 주입된 후에 실행 가능
- 대부분의 Shellcode는 Intel IA-assembly(x86)언어로 쓰여짐
- JS코드로 주입되었을 때 Shellcode는 다음을 실행할 수 있음
- 브라우저 프로세스 Hijacks
- 목표 프로세스나 시스템 제어
- Shellcode는 목표 시스템에서 악성 코드가 실행되는 공격 매개체가 될 수 있음
- 보통 브라우저가 Shellcode를 포함한 JS코드를 다운로드
- 외부에 있는 사이트에서 메인바디를 불러옴(짧기 때문에 자세한 내용을 넣긴 힘듬)

=> 쉘코드 대응 방법
- Content Analysis [Static Analysis, Dynamic Analysis]
- 사용하기 전 objects의 내용을 검사
- 내용을 Instruction으로 디코딩 한 후 악성 루틴이 있는지 검사
Static Analysis
- 코드의 Siginatures 값을 사용
- 이미 알고 있는 값을 사용하기 때문에 빠름
- 새로운 코드 패턴은 걸러지지 않음
Dynamic Analysis [*self-contained shellcodes를 가정]
*self-contained: 쉘 코드 안에 악의적인 행동이나 필요한 모든게 담겨있는 코드
- 가상화를 통해 많이 사용
- 난독화가 소용이 없음(실행되면 똑같음, 다만 가상화라 안전), 새로운 형태도 검출이 가능해서 완전한 검출이 가능
- 느림(강조)
- GetPC(Program Counter) code로 사용되어 지는지,
- Hijack Prevention
- Shellcode가 완전히 실행되는 것을 방지하는데 초점
- Object의 내용 중간에 특수 바이트를 랜덤하게 삽입하여 실행되는 경우 예외를 발생
- 여러 개의 짧게 연결된 shell code를 사용해서 회피 가능
HTTP Authentication
- 알 필요가 없는 사람들에게 Content 보호
- 특정 URL에 접근하기 전 ID/PASSWD를 사용해서 인증하도록 함
- HTTP/1.1은 사용자가 보호된 자원을 요청할 때 서버가 authentication request 헤더로 응답하도록 함
- WWW-Authenticate 는 사용자와 서버 사이에 "challenge-response" 세션을 수행하기에 충분히 적절한 정보를 포함 한다.
WWW-Authenticate
브라우저가 받게 되는 Authentication request는 다음과 같음
- WWW-Authenticate=Basic realm="defaultRealm"
- Basic = HTTP Basic authentication이 요청
- realm = login 상황을 나타냄
- realms에는 모든 종류의 security puzzle이 포함
- User
- Groups
- ACLs (Access Control Lists)
- Basic Authentication
- Userid and password는 Base64 인코딩이 되어 전송(보통 평문)
- Hacker는 디코딩할 필요도 없이 해당 정보를 가로채 저장한 뒤 계속해서 사용하는 Replay Attack 가능
- Digest(해시 값) Authentication
- Basic 문제를 극복하고자 함
- WWW-Authenticate = Digest realm = "defaultRealm" nonce="Server SpecificString"
- Nonce는 일회용 랜덤 값으로 매번 달라짐
- Nonce는 일방향 함수(MD5, SHA1)를 사용해서 사용자 ID와 패스워드를 인코딩해 서버로 보낼 때 사용
- 이를 통해 패스워드를 일회용으로 만들 수 있음
'정보보안 > 정보보안 기사' 카테고리의 다른 글
| 정보보안기사 - 전자상거래(2) SET (0) | 2022.06.14 |
|---|---|
| 정보보안 기사 - 전자 상거래 보안(1) (0) | 2022.06.14 |
| 이메일 보안 기술 (0) | 2022.04.15 |
| Network - Transfer Layer (0) | 2022.04.13 |
| FTP 보안 위협 및 대책 (0) | 2022.04.13 |