hacking study/모의 해킹 프로젝트

정보보안 스터디 - 14주차 1일 - 보고서 작성시 유의사항

wonder12 2023. 1. 13. 01:21

취약점 점검과정은

그냥 막연히 주통기반을 가지고 체크리스트로 간단하게 살펴보고 끝내는 것이 아니라

세부적인 공부도 필요하므로

소목표를가지고 이게 왜 그런지 질문을 해가며 해야 재미도 있고, 실력도 늡니다.

내가 생각하는 주요 취약점 부분을 먼저 점검 후에 이제 놓친부분이 없는지 체크리스트를 다시 확인합니다.

 

 

☞ 보고서 쓸 때 주의할 점

 

 

보고서라는 것은 딱 봤을 때 심각하다는 것을 알아야하고, 이해할 수 있어야 하며

개발자의 입장에서 봤을 때 상세 과정만 보고도 해결이 가능해야합니다. 그정도로 디테일 하게 해주고, 어떤점을 보완해야하는지 작성해야합니다.

담당자 입장에서도 개념에 대해 이해하거나 왜 심각한지 이해해야합니다.

 

 

처음 부분에는 인삿말처럼 ~ 커뮤니티에서 ~항목으로 ~개의 취약점을 발견했습니다. 라는 말을 남깁니다.

말투는 통일감을 줍니다. 

 

총평이 가장 중요한 부분입니다.

그림을 넣거나 도표 정리를 넣거나, 자유롭게 전체적인 문제점과 본인 이 생각하는 문제점을 작성하면 되지만

확실히 담당자가 보고 한눈에 이해하고 심각성을 느낄 수 있도록 자세하게 작성합니다.

 

 

항목에 대해서 쓸 때는

일단 stored xss의 경우에는 form페이지와 실질적 작동하는 process 페이지로 나눠 URL을 작성하고 파라미터를 남깁니다.

또한 reflected xss의 경우도 마찬가지이지만 alert가 발생하는 POC 코드도 넣어줘야 클릭해서 진짜 발생하는지 확인이 가능합니다. 

 

XSS의 경우에는

Stored

Reflected 

DOM based 

로 카테고리를 나누고 

항목당 많이 발견하더라도 하나씩만 올립니다.(여기서 개수는 페이지 별 취약점갯수입니다.)

그 이유는 모두 쓰면 복잡해지고, 정리된 느낌이 없기 때문입니다.

Reflected 2개를 발견했다고 한다면 하나만 과정을 올립니다.

 

취약점 점검을 할 때 바로 한번에 검사를하고 스크린샷을 찍어둡니다.

점검 디렉토리를 만들어 직관적으로 알 수 있도록 관리합니다.

또한 파라미터, URL, POC 코드 링크를 txt파일에 첨부합니다.

다음에 다시 까먹어서 공격을 시도할 필요없이 한번에 끝낼 수 있는 방법입니다.

 

 

 

 주통기반에 따른 취약점 종류

 

LDAP

XPATH

등등은

모두 인젝션 공격입니다. 개념은 같습니다.

예측을 해서 괄호안에 임의의 공격코드를 삽입하는 개념입니다.

LDAP 관련 쿼리를 이해하고 있어야겠죠.

LDAP은 디렉토리에 데이터를 넣고 디렉토리 관리해주는 서비스로

DB와 개념이 비슷하지만 수정목적으로 만들어지지는 않았고, select를 전문적으로 합니다.

 

php로 대ㅐ부분의 웹기능을 만들 수는 있지만 정말 못만들 것 같다 하는 것은 외부 API, 명령어 등으로 제작합니다. 

예를 들어 dns lookup 기능이있습니다. 이경우 에는 OS명령어가 가능할 수도 있습니다. 하지만 이것도 실무에서는 발견된적이 거의 없습니다.

 

평문 노출 취약점

암호화를 하지 않은 http 사이트의 평문 노출 취약점은 wireshark 캡쳐를 하여 평문을 확인합니다.

burp suite의 경우는 암호화를 하여도 버프스위트에서 자체적으로 풀어서 평문처럼 읽기 때문입니다. 

 

 

버퍼 오버 플로우란

C언어로 되어진 웹서버가 거의 없기 때문에 생각하지 않아도 되는 취약점이지만

개념을 알도록합니다.

C언어로 만들어져 윈도우 dll파일 의 경우 일어날 수 있습니다.

개발자가 만든 욜야보다 큰 사이즈를 넣습니다.

변수id와 사이즈(8바이트)를 미리 정하고 프로그램을 실행시키면 그만큼 마련해둡니다.

 

실행할 때는 메모리 영역(주소) 부분이 있습니다.

공격자는 악의적으로 그 부분에 코드를 보냅니다.

 

하지만 그 바이트를 초과하여 10바이트를 보냈다고 했을 때 두글자가 초과 되어 다른 영역에 침범하는 것입니다.

작으면 괜찮지만 악의적으로 많이 보내는 경우 주소부분까지 침범하여 서버는 읽을 수 없는 부분이라고 판단하여 에러를 출력할 새도 없이 뻗어버립니다.(어플일 경우 강제 종료됩니다.) DOS공격과는 다른 개념입니다.

결국 이 공격의 목적은 RCE(remote code execution) 원격 명령어 실행, 즉 쉘을 따내려는 것입니다.

 

 

정보누출(노출) 취약점

404 에러 페이지가 뜨더라도 취약점입니다.

공격자는 웹버전과 서버의  운영체제, 버전이 나오면 해당 버전의 CVE를 확인하여 취약점을 찾습니다. 지금 취약점이 없더라도 나중에 발생될 여지가 있는 것이기 때문에 취약점입니다. 

burp suite의 경우 헤더에서 확인이 가능한 경우가 있습니다.

그 외로도 서버와 관련된 정보(모듈 정보, 플러그인, 라이브러리, 관리자 서버 및 페이지 주소 등)가 노출되었을 때 2차공격으로 이어질 수 있기 때문에 정보 노출 취약점입니다.

 

따라서 에러메세지를 유발하는 확인이 가능합니다. 어떤 파라미터입력하냐에 따라서 달라질 수 있습니다.

400 띄어쓰기를 했을 때 bad request
404 없는 페이지를 요청했을 때
403 
501 OPTION메소드 사용했을 때
PUT 방식을 사용할 때 해당 방식은 사용 제한했을 때
메소드 영역에 없는 메소드를 입력했을 때 등

결국 이런 것도 취약점으로 적을 수 있기 때문에 취약점이 없을 경우는 거의 없습니다.

 

 

 

세션 만료 기간

세션 만료 기간의 취약점의 경우에는 

현재 시간을 찍어놓고, 3시간 뒤에 와서 시간과 세션이 만료되지 않은 점을 찍어두고 내용으로 작성합니다. 

세션이 로그아웃하고도 제거되지 않는 경우가 있습니다.

해당 프로젝트에서는 평소에는 세션이 고정되는 것 같아보이지만 쿠키를 제거하고 요청을 보내거나, 세션을 수정하면 수정된 세션으로 접속이 가능합니다.

 

 

파일 다운로드 취약점이란

업로드 경로에서 다운로드 받아오는 스크립트 코드가 있어야하는데

그게 없고 그냥 php, img등 직접 서버에 요청해서 받아오는 일반적인 방법이라면 ( <a href="~" download>) 구조이며 다운로드 취약점 자체가 존재 하지 않는 것입니다. 그 이유는 다운로드 스크립트 코드가 있다면 php소스코드가 노출 될 텐데, 서버에 그냥 요청하는 접근이기 때문에 소스코드가 노출되지 않습니다.

 

 파일업로드 취약점을 점검할 때는

웹쉘을 직접 넣는 것이아니라 hello메세지를 넣어 실행시키는 것입니다.

이 프로젝트의 경우에는 디렉토리가 생성됨과 동시에 .htaccess 파일이 생성됩니다. php엔진을 끄는 설정을 작성하게 됩니다.  따라서 상위 디렉토리에서 php를 실행시키거나, php엔진을 켜는 .htaccess파일을 업로드시켜 덮어쓰기 하면됩니다.

 

위치 공개

위치 공개는 게싱 공격과 개념이 같은 것입니다.

예측하여 파일이름을 쓸 것 같다고 생각하면 주소창에 입력하여 찾아보는 것입니다.

백업파일을 unzip하고 지우지 않고 남겨놓는 경우가 있어 발견시 소스코드를 확인할 수 있는 취약점입니다.

 

 

인가/인증 차이점

불충분한 인증과 인가취약점은 애매한 경우가 있습니다. 그 때는 아무거나 씁니다.

하지만 차이점은

인가는 범위가 크게 생각해서 서버에서 유저에게 허락되지 않는 행동을 하게 한다면 인가 취약점입니다.

인증은 범위를 작게 생각해서 로그인인증, 회원가입인증,  등을 뛰어 넘을 수 있다면 인증취약점입니다.

이런 개념으로 생각하고 분류합니다.

 

 

 

응답을 변조하고 취약점이 아닌데 취약점이라고 올려놓은 경우 > 왜 취약점인지 생각해봅니다.

 

모의해킹에 대한 개발을 진행한 후에 취약점이 없어졌는지 이행 확인을 하러 다른 모의해킹 담당자가 옵니다. 그 때 작성한 보고서를 보고 바로 파라미터값과 직접적인 개발 URL이 나타나있어야 하며, 설명에도 어디에 들어가서 어떤 행동을 한다는 자세한 단계까지 나와있어야지 서로 착오가 없이  이해하기 쉽게 알 수 있습니다. 서로 전화하고 불편한 상황을 만들면 좀 그렇기 때문입니다.

 

 

 

 디테일

그리고 착오, 또는 오해를 막기 위해서 원본스크린샷 파일은 수정없이 가지고 있다가
보고서 용 편집이 필요하다면 따로 복사해 수정합니다.
수정은 강조로 빨간 박스정도가 좋습니다.
figure 캡션을 추가합니다.
취약점 항목 별로 페이지를 나눠줍니다. 작성 중에 짤리지 않도록 튀어나온 부분은 내려 맞춰줍니다.
step을 나눌 때는 취약점 페이지가 서로 달라진다면 step 구분을 합니다.
캡쳐 찍어서 디렉토리에 관리 및 저장하는 증적 사진 관리를 합니다.



 

 

주통기반을 기반으로 기본적인 취약점을 점검 할 것이기 때문에

이게 어떤 취약점인지, 어떻게 작동하는지 직접 환경을 구축해 실행해보고, 왜 취약점 기준 항목인지 얼만큼 취약한 부분인지 생각해봅니다.

 

 

다음 프로젝트는 자신감을 가지고

받았던 피드백을 가지고 수정해서 실전처럼 결과 보고서를 작성 해봅니다.