이 글은 해킹을 유도하는 글이 아닌 해킹으로 인한 웹 취약점을 보완하기 위해 쓴 글이며
Burp Suite Community Edition v2022.2.5를 기준으로 작성하였음을 알린다.
어떻게 하면 해킹이 가능하며, 이 해킹을 대응하려면 어떻게 해야하는지 내가 사용하는 방법을 토대로 서술하겠다.
1. Burp Suite 다운로드 및 실행
https://portswigger.net/burp/communitydownload
Community Edition 다운로드 링크다.
Burp Suite는 여러 버전이 있는데 현재 내가 협업하고 있는 모 대기업도 Community Edition을 사용하더라.
사실 그 대기업이 외주를 맡긴걸수도 있다..😅
아마 전반적인 부분의 해킹은 될것이라 추측한다.
다운로드가 끝난 후 Burp Suite Community Edition을 실행한다.
상단의 Note: Disk-based projects are only supported on Burp Suite Professional. 을 보면 알 수 있듯이, 디스크 에 있는 프로젝트로 하는건 community버전에서 지원을 하지 않는다. 그러므로 community버전에서는 선택지가 없다 ㅎ
Next 클릭
Load from configuration file은 미리 저장해놓은 설정파일로 프로그램을 사용하겠다는것이다.
우리는 막 설치했으니 있을리가 없다.
그러므로 Use Burp defaults 클릭후 Start Burp 클릭
그러고나면 위와 같은 창이 뜰 것이다.
내가 주로 사용하는 탭은 Proxy, Repeater이며, 이 글에서는 Proxy와 Repeater사용법을 서술하도록 하겠다.
그 외의 탭은 차차...
2. 프록시 설정
Proxy>Options에 들어가면 프록시 서버 포트를 몇번으로 입력할지, request및 response는 어떻게 처리할지 등이 나온다.
앞서 우리는 프록시 설정을 default로 해놓았기 때문에 많은 부분을 건드릴 필요는 없다.
상단의 Proxy Listeners만 수정을 하겠다.
내가 해킹을 하려는 서버가 보안취약점을 보완하려고 하는 웹 서버라면 아마 local에 있을것이다.
그 웹페이지의 포트와 충돌하지 않도록 포트 설정을 해주면 된다.
Proxy Listeners 하단 좌측에 Add버튼을 누른다.
개발중인 로컬 서버의 포트가 8080이라면
8081혹은 다른포트번호를 기입한 뒤 OK버튼을 누르면 된다.
내가 몇개를 등록했는지에 따라 table에 리스트업 되는데, 사용하려는 포트만 Running을 체크한다.
3. Intercept
이제 진짜 본격적인 해킹의 시작이다.
Proxy>Intercept탭에 가서 Intercept is off를 클릭한다.
Intercept is on이 나온다면 준비가 끝난 것이다.
open browser를 클릭한다.
그렇게 하면 위와 같은 화면이 나온다.
이거 read me아닌가? 하고 당황하지 말고, 검색창에 해킹하려는 Url을 검색한다.
url을 쳤는데 여기서 넘어가지 않고 일정 시간이 지나면 session out이 뜰것이다.
그 이유는 클라이언트에서 서버로 넘어가기 전에 burp suite가 intercept했기 때문이다.
클라이언트쪽에서는 서버에서 응답이 안오기 때문에 session out처리를 한다.
위와 같은 그림처럼 된다고 보면 된다.
이제 화면이 나오도록 처리를 해보자.
상단의 Forward버튼을 누르면 된다.
그러면 아래와 같은 화면이 뜰것이다.
톰캣실행, 혹은 스프링부트 실행 등했을 때 뜨는 화면이
그럼이제 자주 쓰는 해킹방법을 보겠다.
① 사용자 계정 정보 유출
로그인 후 프록시 도구의 Raw화면을 보면
아래와 같이 나와있다
id와 pw를 다른 사람이 확인할 수도 있다는것이다.
이렇게 되면 로그인시 중요한 정보인 id, passwd가 평문으로 전송되어 계정 정보 유출 가능성이 존재한다.
그러므로 중요한 정보는 암호화 되어 전송하도록 해야한다.
② XSS 공격
검색창 혹은 게시글에서 자주 보이는 공격 패턴이다.
스크립트를 넣는 공격으로 자바스크립트를 사용한 공격이 많다.
get방식으로 검색을 하는 경우에는
경로?search=%22+onmouseover=alert(document.domain)
이렇게 하면 확인할 수 있다.
티스토리를 예로 살펴보겠다.
으로 접속 한 뒤 하단의 검색창에 아무 문자 입력 후 검색 버튼을 눌러보겠다.
burp suite에는 아래와 같이 뜬다.
그럼 &q=test의 부분으로 XSS공격을 해보겠다.
위와 같이 입력 후 Forward버튼을 누른다.
검색을 안한것으로 처리가 되어 페이지가 보이게 된다.
이런식으로 XSS공격을 방지해야 한다.
만약 XSS공격 대응처리를 코드적으로 하지 못했다면 악성 스크립팅을 사용했을 경우에 그 코드가 삽입된 페이지에 방문하는 사람은 누구나 악성 스크립팅의 피해자가 될 수 있다.
그러므로 url, 혹은 게시글에 악성 스크립팅을 사용하지 못하도록 조취가 필요하다.
③ 허용하지 않은 파일 업로드
모든 개발자들이 파일 업로드시 프론트단, 서버단에서 체크를 하지만, 확장자를 우회하여 저장시키는 방법도 있다.
만약 내가 파일 업로드시 프론트와 서버단에서 이중으로 체크를 하지 않는다면.....개발자라고 밖에서 소개하지 않기를 바란다.
Intercept를 이용하여 xxxxx.jsp 혹은 xxx.js파일을 xxxxx.jsp;.png xxx.js;.jpg등으로 변환하여 업로드를 할 수 있다.
위의 XSS공격과 같은 방법으로 파일이름을 서버측에 전송할 때, filename="파일명.확장자;.허용확장자" 의 방법으로 전송시 확인할 수 있다.
저장이 된다면 개발한 프로젝트는 보안이 취약하므로 수정할 필요가 있다.
이렇게되면 만약 다른 방법으로 서버에 접근이 가능 할 경우(파일이름과 경로를 알고, 파일 실행이 가능한 경우), 악성 파일 실행을 통해 피해가 발생할 수 있다.
그러므로 확장자를 우회하여 첨부파일 업로드를 못하도록 조취를 취해야한다.
도움이 되셨다면 공감버튼을 눌러주세요.🥰
'개발일지 > 기타' 카테고리의 다른 글
[Install shield] 실행 파일 없는 프로젝트 인스톨 파일 만들기 (0) | 2022.04.29 |
---|---|
[JAVA/JQuery/JS] 중요 정보 암호화 하여 전송하기/복호화하여 저장하기 (0) | 2022.04.28 |
[Laravel] 라라벨 디버그 바, 디버그 페이지 정리 (0) | 2022.04.20 |
[Laravel] 라라벨 설치 방법(원하는 버전으로 설치하기) (0) | 2022.04.18 |
[Linux] JAVA 환경변수 설정(Web Applicaion) (0) | 2022.04.15 |
댓글