본 멘토 특강의 내용은 AhnLab의 박수현 멘토님에 의해 진행되었습니다
SM 프로젝트 진행
시AWS 해킹
으로과금을 지불
하는 경우가 매년 있음
3명의 프로젝트 지원금
은총 720만원
업체를 중간에 끼고 비용처리
가 되기 때문에AWS측
에물러달라고 할 수 없음
(보통학생들을 대상
으로1회 물러주기 때문
)
- 해킹 시도
AWS 인스턴스
는 만든지1시간
정도만 되도높은 확률
로해킹 시도가 시작
도메인 없이 IP만 할당
받은 상태여도해킹될 수 있음
정체 불명의 수 많은 인스턴스
들이 생성되어채굴기
가 될 수 있다
- 예방 방법
인스턴스
의password
를쉬운 것으로 설정하지 말자
(admin/admin
orroot/1234
등)github
에키
를노출하지 말자
(.gitignore 반드시 사용
)- 이미
github
에 올라갔다면key
를비활성화
하고재발급
받자
(git reset 명령어
로 되돌릴 수 있지만, 아직각 로컬에 있는 팀원이 있다면 환경이 충돌
날 수 있어서재발급이 제일 깔끔
)
last
명령어
:로그인 기록
과재부팅 기록
을 확인하는 명령어
(linux
에서/var/log/wtmp
에저장
되어 있는 기록을 보여줌)
lastb
명령어
:로그인 실패 기록
을 보여주는 명령어
(linux
에서/var/log/btmp
에저장
되어 있는 기록을 보여줌)
- iplocation
웹 사이트
를 통해어디 소속 ip
인지 찾을 수 있다SSH
를 통한brute-force 공격
은 거의항상 있다고 생각
하면 된다
--> 뚫리면root권한을 탈취
당하고정보를 뺏기거나 zombie-PC
가 될 수 있다
Wappalyzer
http header
에포함
되어 있는사용 기술 스택의 정보
를 보여주는플러그인
서버 시그니처 설정
을 통해특정 기술 스택 정보
를 숨길 수 있도 있어서모든 웹페이지
에서스택을 확인
할 수 있는것은아님
korean barbecue
vs"korean barbecue"
korean barbecue
:korean
+barbecue
단어로각각 searching
"korean barbecue"
:하나의 단어
로searching
(함께 사용되는 단어를 검색
할 때원하는 정보를 찾을 확률이 높다
)
apple -mackbook -watch
:-
를이용
해서특정 키워드가 제외된 검색 결과
를 확인할 수 있다
"how * you"
:*
를사용
해서중간에 다양한 단어가 오는 검색
을 할 수 있다
intitle : 키워드
:제목
에키워드
가 오는 것을 검색할 수 있다
intext : 키워드
:내용
에키워드
가 오는 것을 검색할 수 있다
intitle : "index of"
index of
가취약한 페이지
를 검색하는 것인데 실제로조금 민감한 정보
가 보이는 경우도 많다intext : 이력서
이력서를 내용으로 포함한 검색
을 하는 것인데실제 개인정보
가 나오기도 함
- 이처럼
intitle / intext
로데이터가 유출
되는 것은 보통구버전 웹서비스
에서directory listing 설정
이enable
로 되어있기 때문
과거에는 이 설정
의default
가enable
이었다
(보안
보다는개발자의 편의
가우선
이었기 때문)현재에는 대부분 disable로 기본 설정
이 되어있어서 걱정하지 않아도 됨
site : "http://www.motiiv.site"
:site 키워드
로특정 사이트 내에서 검색
을 할 수 있다
(내 웹페이지를 대상
으로검색
해서유출 데이터가 있는지 확인
할 수도 있다)
exploit-db
처럼유출된 정보를 모아두는 사이트
트 왜 있는 것일까?
정보가 유출되었음을 알려서
보안 취약점을 패치
하도록 하는공익적 목적
이 매우 크기 때문유출된 정보
를악용할 사람들은 어차피 어떻게든 악용
한다
Naver
/Daum
처럼검색엔진을 가진 사이트
에는검색엔진 봇(bot)
이자동
으로웹사이트의 정보를 수집
하게 된다
Naver
의Yeti
Googlebot
robots.txt
는 이렇게검색엔진 봇이 수집하는 정보 범위를 설정
하는국제 권고안
robots.txt
가없으면
자연스럽게 모든 데이터를 수집
할 수 있는 것으로 간주
- 설정
/* yeti만 즉, naver의 검색엔진만 모든 페이지의 수집을 허락 */ User-agent: * Disallow: / User-agent: Yeti Allow: /
/* 모든 검색엔진에 대해 수집을 불허하는 설정 - 권장하지 X */ User-agent : * Disallow : /
웹 서버
의버전 정보
를웹 브라우저에게 노출하는 지
에 대한설정
:OFF 로 설정
해서웹 서버 버전 정보를 노출하지 말자
-serverSignature On // 웹 브라우저에 버전 정보를 노출 -serverSignature Off // 웹 브라우어저에 버전 정보를 노출하지 않음
서버의 설정파일
을클라이언트에게 얼마나 보여줄지
에 대한 설정
:Prod로 설정
해서최소한의 정보
만 주자/* Apache의 경우 기본 OS로 되어있는데 Prod로 최소한의 정보만 줘도 됨 */ 1. Prod : 웹서버의 이름만 알려준다. (Apache) 2. Major : 웹서버의 이름과 Major 버전번호만 알려준다. (Apache2) 3. Minor : 웹서버의 이름과 Minor 버전까지 알려준다. (Apache2.4) 4. Min : 웹서버 이름과 Minimum 버전까지 알려준다. (Apache2.4.6) 5. OS : 웹서버의 이름과 버전, OS 정보를 알려준다. (Apache2.4.6 (Unix)) 6. Full : 최대한의 정보를 모두 알려준다. (Apache2.4.6 (Unix) Resin/4.x.x)
- Open Web Application Security Project 의 약자
오픈소스 웹 애플리케이션 보안 프로젝트
이다. 주로웹
에 관한정보노출
,악성 파일 및 스크립트
,보안 취약점
등을연구
10대 웹 애플리케이션의 취약점
(OWASP TOP 10)
을주기적으로 발표
(3~4년의 주기로 발표
함최근 2020
)
2020에 발표된 웹 애플리케이션 취약점 Top 10
(자세한 내용
은 참조 https://pr0vervbi0rum.tistory.com/30)
인젝션 (Injection)
인증 취약점 (Broken Authentication)
민감한 데이터 노출(Sensitive Data Exposure)
XML 외부 엔티티 (XXE)
취약한 접근 제어 (Broken Access Control)
보안 구성 오류 (Security Misconfigurations)
크로스 사이트 스크립팅 (Cross-Site Scripting = XSS)
안전하지 않은 직렬화 (Insecure Desrialization)
알려진 취약점과 구성 요소 사용(Using Components with Known vulnerabilities)
불충분한 로깅 및 모니터링 (Insufficient logging ans monitoring)