본문 바로가기
BugBounty

[BB] OWASP TOP 10 - 2021

by snwo 2021. 12. 25.
A01:2021-Broken Access Control 
A02:2021-Cryptographic Failures 
A03:2021-Injection 
A04:2021-Insecure Design 
A05:2021-Security Misconfiguration 
A06:2021-Vulnerable and Outdated Components 
A07:2021-Identification and Authentication Failures 
A08:2021-Software and Data Integrity Failures 
A09:2021-Security Logging and Monitoring Failures 
A10:2021-Server Side Request Forgery (SSRF)

 

https://owasp.org/Top10/

여기서 가져온 글을 번역해서 정리해보는 글입니다.

대충 뭔지 예제는 어떻게되는지 간단하게 알아봅시다.

A01:2021-Broken Access Control


Access Control → 사용자가 주어진 권한 외에 일을 할 수 없도록 한다.

하지만 Broken Acces Control 는 유저가 권한 밖의 일을 할 수 있어서

  • 권한 밖 정보 유출, 수정, 삭제
  • 로그인없이 활동
  • 관리자권한 이용

이런 일들을 할 수 있습니다. LPE 느낌

 

공격 방식
  • URL, parameter temtpering, html 소스 수정 등으로 API 리퀘스트 수정,
  • 다른 사용자의 정보를 보거나 수정 (IDOR) [Insecure Direct Object References)
  • 다양한 메소드에대해 권한을 제대로 통제하지 못하는 API 사용
    • → CTF 시작하지도 않았는데, CTF 문제불러오는 API 에 다른 메소드로 요청하면 문제가 받아와진적이 있다. 이와 비슷한듯
  • 관리자페이지 노출 등

A02:2021-Cryptographic Failures


원래는 민감한 데이터 노출로 알려졌지만, 더 광범위하게 보면, 암호화되지 않은 데이터 노출로도 볼 수 있다.

CWE 의 hard code password, risky crypto algorithm 등을 포함한다.

 

공격 방식
  • 데이터베이스에 암호화되어 저장되지만, 조회할 때 자동으로 복호화 된다면, sqli 를 통해 정보를 노출시킬 수 있다.
  • 취약한 해쉬함수를 통해 암호화한다면, 레인보우테이블로 공격

 

A03:2021-Injection


CWE 중 xss, sql injection, external control of filename or path 를 포함한다.

 

공격 방식
  • 여기저기 막 넣어본다. 입력값이 필터링되지 않거나 대충 필터링될 때 발생한다.

 

한줄평

가장 흔한 취약점으로 많이 발견된다.

개별적으로 코딩을 하다가 테스트해보면 터지는 경우가 있던데

그만큼 실수하기 쉬워서 많이 발견되는 것 같다.

A04:2021-Insecure Design


2021 년에 새롭게 추가된 카테고리로,

부적절한 접근설계라고 할 수 있다. 다른 범주의 위협에 대한 원인으로 볼 수 없다.

안전하지 않은 설계와 구현은 근본 원인과 해결방법이 다르다.

안전한 디자인이여도 구현이 잘못되면 익스플로잇 될 수 있지만

안전하지 않은 설계는 정의상, 보안제어가 특정공격에 대해 만들어지지 않았기때문에 완벽한 구현으로도 막을 수 없다.

분리를 잘 해놔야한다고 하네요

 

예시

질의응답식 비밀번호찾기 ( 키우는 애완동물의 이름은? ) 은 시큐어 디자인이 필요하다.

단체할인 최대 15명 제한이지만 600석을 예약해 영화관에 손실을 입히는 것

BOT protection 이 없는 사이트에서 그래픽카드를 마구 사는 것

 

한줄평

잘 모르겠지만 예제를 보면, Logical Bug 같은 취약점 같다.

 

A05:2021-Security Misconfiguration


잘못된 보안설정으로 발생하는 취약점으로, XXE 가 포함된다.

XXE 는 간단하게 XML Parser 에서 외부개체 참조로 내부정보를 leak 할 수 있는 취약점이다.

 

  • 클라우드 서버의 잘못된 권한설정
  • 안쓰는 포트, 서비스, 페이지, 권한 개방
  • 기본계정이 비번변경없이 활성화 ( 공유기, ip 카메라, 웹사이트 플랫폼 등 )
  • stack trace error message 노출 ( 사용하는 라이브러리, 서버 ... 의 버전 등 노출 )
  • 서버, 프레임워크, 라이브러리, 데이터베이스 보안설정 미흡 ( directory listing, database access ... )
  • 오래되거나 취약한 컴포넌트 사용 ( One-day attack )

 

한줄평

테스트페이지나 어드민 페이지를 포트스캔이나, sublist3r 같은걸로 찾아서 간단한 sqli 로 우회하거나 디폴트 계정 찾아서 로그인 할 수도 있고

snap chat Kubernetes api 노출로 rce 한 것처럼

대상 서비스를 여러 방면에서 잘 탐색해보면 잘못 설정된게 나올 수 있지 않을까 생각

 

문서 잘 읽어보면서 보안설정 해주면 될 것같다.

A06:2021-Vulnerable and Outdated Components


서드파티 프로그램같은 컴포넌트들을 사용할 때

취약하거나, 더이상 지원하지 않거나, 오래된거 사용하면 안된대요

A07:2021-Identification and Authentication Feilures


사용자 ID 체크, 인증, 세션관리는 인증기반 공격을 막는데 중요하다.

 

취약점 목록
  • usename, password 노출되었을 때, 신원정보추출 자동화공격 가능
  • 브루트포스 허용
  • well-known / guessable password
  • store plain text, week hash in database, ( A02:2021-Cryptographic Failures)
  • n 차 인증이 없거나 비효율적
  • session id 재사용, session replay 라는 공격기법이 있다. 사용자의 session id 를 훔친 뒤 사용자의 권한을 사용할 수 있는 공격인데, 세션만료가 없거나, 세션이 암호화되지 않고 저장되고, 사용자를 재인증하지 않아 old session 을 재사용 할 수 있을 때 발생한다.
  • session id, authentication token 을 로그아웃이나 계정 비활성기간에 적절하게 무효화하지 않을 때 발생, 주로 sso token 을 사용할 때 발생한다고 한다.

 

SSO token

SSO → Single Sign-On

sso 는 통합인증시스템의 인증과 관련이 있다. 사용자 신원을 확립하고 그 정보를 필요로하는 서브시스템과 공유하는 역할을 한다.

 

서로 다른 도메인이 있을 때, 한 도메인에서만 로그인해도,

같은 로그인정보를 가지고 있는 다른 도메인에서도 세션이 유지되는 기술이다.

 

하지만 세션정보는 대부분 쿠키에 저장되는데, 브라우저에서 사용되는 SOP 때문에 다른 도메인의 쿠키에 접근할 수 없다.

그래서 중앙 도메인을 통해 인증이 수행되면 도메인간 세션이 공유된다.

 

  1. 접속하려는 도메인에 접속한 뒤, 세션이 없으면 중앙도메인으로 redirect
  1. 중앙도메인에서 로그인을 진행
  1. 정상로그인이면 token 과 함께 원래 도메인으로 redirect
  1. 다른 도메인에 접속후, 중앙도메인으로 redirect
  1. session 이 valid 하면 서비스를 제공받음

 

대충 이런식으로 진행이 되는 것 같다.

sso token 이 탈취당하면 다른 서비스 또한 피해자의 신원으로 이용할 수 있겠죠?

물론 user agent, ip address 를 확인한다던지 방어방법이 있다고합니다.

 

https://auth0.com/blog/what-is-and-how-does-single-sign-on-work/

https://brunch.co.kr/@sangjinkang/36

 

A08:2021-Software and Data Integrity Failures


소프트웨어나 데이터의 무결성오류라고 하는데요

대표적인 cwe 는 유명한 Deserialization of Untrust Data 가 있습니다.

 

CI/CD 파이프라인, 중요 데이터, 소프트웨어 업데이트에서 무결성검사를 하지 않을 때 발생한다.

소프트웨어 업데이트에서의 공격방법은 공급망 공격이 있다.

대표적으로 SolarWindsOrion 공격을 예시를 들 수 있는데

해커가 개발환경에 침투하여 업데이트에 백도어를 포함해 프로그램이 배포되었는데,

이 네트워크솔루션은 광범위하게 이용되어 미 국방부까지 공격의 영향을 끼쳤다.

 

데이터에서의 공격방법은 사용자의 입력값이 아무런 검증 없이 deserialize 되거나, 사용자에 의해 변조될 수 있는 데이터가 deserialize 될 때 RCE 할 수 있다.

A09:2021-Security Logging and Monitoring Failures


보안관제나 로그를 잘 해야 한다.

 

  • 서버에서의 검증실패 ( ‘ or 1=1 #’ 이런거 떄려박았을 때 )
  • 로그인실패
  • 자동화 툴 탐지
  • 경고나 에러로그
  • ... 등

 

위 같은 증상들을 로그파일에 잘 저장해두고, 필요에 따라 경고를 뜨게 해서

주기적인 모니터링과 적절한 대처로 서버를 보호해야한다.

이러한 위협 탐지를 못하면 서버가 털려도 모릅니다.

북한에서 국내 국가기관을 터는걸 보면 보안관제도 중요하다고 생각합니다

 

예를들자면 개인클라우드 서버에서 테스트용 웹 하나 deploy 한 상태에서

자동화된 툴로 공격자가 서버에서 rce 해도, 눈에 띄지 않는 이상

소스코드나 비밀키가 털려도 저는 로그파일 주기적으로 안보기떄문에 모릅니다

w 명령어 쳤는데 다른사람도 접속해있으면 무섭겠죠?

 

기업같은 곳에서는 솔루션 적용해서 로그파일도 잘 기록하고

비정상행위에 대해서 ( xss, sqli 같은거 박아보는거 또는 서버 털릴때 ) 경고도 잘 띄우겠죠?

 

이런 것을 효과적으로 관리하는 툴도 인터넷에 많이 있다는데,

OWASP ModSecurity Core Rule Set, Elasticsearch, Logstash, Kibana stack 등이 있다고 하네요

A10:2021-Server-Side Request Forgery


웹 응용프로그램에서 미약한 검증으로 사용자의 url 을 통해 원격 리소스를 가져올 때 발생한다.

방화벽, vpn, ACL (access control list) 에 구애받지않고 요청을 보낼 수 있다.

요즘녀석들은 클라우드를 많이 써서 중요도가 높아지고있다고하네요

 

네트워크 layer

원격 리소스 엑세스기능을 별도의 네트워크에서 진행

방화벽에서 deny by default 설정

 

애플리케이션 layer

url schema, port, destination 화이트리스트기반 필터링

클라이언트로 raw response 보내지 않기

http redirections 비활성화

 

이런식으로 막을 수 있다고하네요

또한 TOCTOU (time of check, time of use) 레이스컨디션을 이용한 dns rebinding attack 에 유의해야합니다.

 

몇주 전에 모 ctf 에 이런식으로 풀 수 있는 문제가 나온적이 있는데,

dns rebinding attack 툴을 이용해 TTL 을 짧게 줘서

URL 을 검증할 때와 URL 을 사용할 때의 ip 주소를 다르게 매칭시켜 SSRF 를 발생시킬 수 있었습니다

 

aws 서버를 사용할 때, SSRF 응답값을 확인할 수 있으면

서버 토큰, 키 같은걸 leak 해서 RCE 로 연계할 수 있습니다


 

여기까지 owasp top 10 간단하게 알아보았고요

모두 버그많이찾으세요 끝