반응형

WEB hacking/비박스(bWAPP) 12

자바 역직렬화 취약점 공격

자바 역직렬화 취약점 공격 자바 역직렬화 취약점은 OWASP Top 10 2017에서 새롭게 선정되었다. 자바 역직렬화 취약점은 공격자가 원격에서 코드를 실행할 수 있느 RCE(Remote Code Execution) 공격으로 이어지기 때문에 매우 심각한 영향을 줄 수 있는 취약점이다!! 자바 프로그램상에서 어떤 객체가 생성되면 그 객체는 메모리에 상주하게되고, 프로그램이 실행되는 동안 필요에 따라 사용된다. 하지만 프로그램이 종료되면 메모리에 있던 객체는 사라지게된다. 객체는 지금까지 프로그램이 사용하면서 저장한 데이터가 있는데, 그 데이터를 다음 번 프로그램 실행시에도 계속 사용하여야 한다면 메모리에 있는 객체와 데이터를 파일이나 DB에 저장해야 할 것이다. 이때 저장을 하기위해 객체를 바이트 스트림..

[비박스(bWAPP)] - PHP-CGI 취약점 공격(metasploit)

PHP 버전 5.3.12와 5.4.2 이전 버전에서 소스코드가 노출되거나 공격자가 임의의 코드를 실행할 수 있는 취약점(CVE-2012-1823)이 존재한다. 이 취약점은 요청 URL의 쿼리스트링 부분을 잘못 처리해서 발생하는 취약점이다. PHP-CGI 취약점 공격 비박스의 php환경은 그림 1에서 보는 것처럼 5.2.4버전인 것을 알 수 있다. 따라서 PHP-CGI 취약점 공격이 가능하다. 비박스의 /admin/ 경로에서 공격을 실습하도록 하겠다. 웹 브라우저 주소창에서 경로 뒤에 ?-s를 입력을 하면 PHP의 소스코드를 읽을 수 있다. 이 취약점을 이용하여 임의의 코드 실행도 가능하다!! msfconsole으로 메타스플로잇을 실행한다. 공격과정 1. search 명령어로 공격 모듈 검색 2. use ..

[비박스(bWAPP)] - 쉘쇼크 취약점

쉘쇼크 취약점 쉘쇼크(shellshock)는 bash쉘의 취약점이다. CVE id는 CVE-2014-6271이다. 쉘쇼크는 시스템 환경변수에 다음과 같이 특정 패턴의 문자열과 함께 임의의 명령어가 저장되어 있으면 쉘이 실행될 때 해당 명령어가 실행되는 취약점이다. () { :;}; 쉘쇼크 취약 여부 테스트 스크립트 env x='() { :;}; echo DANGER' bash -c 'echo test' 이 명령문은 x 환경 변수에 쉘쇼크 공격 패턴과 명령어를 지정한 뒤 bash 쉘을 실행하여 지정한 명령어가 실행되는지 확인한다. 쉘쇼크에 취약한 버전일 경우 echo 명령어가 실행되어 DANGER가 출력이된다. 쉘쇼크에 취약하지 않은 버전은 DANGER 문자열이 출력되지 않는다. 쉘쇼크 취약점은 CGI로 ..

[비박스(bWAPP)] - 하트블리드 취약점

하트블리드 취약점 하트블리드 취약점은 지금까지 알려진 취약점 중에서도 가장 유명하다고 할 수 있는 취약점이다. 2014년에 공개되었으면 SSL/TLS 프로토콜을 구현한 OpenSSL 라이브러리 중 1.0.1 ~ 1.0.1f 버전에 존재하는 취약점이다. 원래 HTTPS로 구현된 웹사이트들은 안전하다고 알려져있지만 하트블리드 취약점으로 인해 민감한 정보가 노출될 수 있다. 취약점이 SSL/TLS 하트비트라는 확장 기능에서 발견되었기 때문에, 하트블리드라는 이름이 생겼다. 하트 블리드 취약점을 이용하면 공격자는 웹 서버 호스트의 메모리를 읽을 수 있게 되어 사용자의 로그인 정보 및 그 밖에 노출되면 안되는 민감한 정보들을 탈취 할 수 있다. Nginx 웹 서버가 취약한 OpenSSL 저번을 사용하고 있다. 힌..

[비박스(bWAPP)] - XML External Entity Attacks(XXE)

XXE 취약점 XXE(XML eXternal Entity) 취약점은 XML 타입의 데이터가 웹 요청을 통해 전송되고, 서버에서 XML 외부 엔티티를 처리할 수 있도록 설정된 경우 나타날 수 있다. 사용자가 웹 애플리케이션으로 전달되는 XML 데이터를 직접 업로드하거나 수정할 수 있는 경우, 공격자는 외부 엔티티를 참조하는 XML 데이터를 전송하여 파일과 같은 서버 내부의 정보를 탈취하거나 서비스 거부 공격, SSRF 등의 공격을 수행할 수 있다. 실습 페이지에 Any bug?라는 버튼이 존재한다. 이 버튼을 누르면 secert이 버튼에 표시된 문자열로 초기화 된다. Content-type 헤더가 text/xml로 설정되어있고 바디에서 XML 형태의 데이터가 전송되고 있다. XXE 취약점 공격은 이와같이 ..

[비박스(bWAPP)] - Directory Traversal - Files

리눅스에서 ../ 문자열은 파일의 경로를 지정할 때 사용되면 상위 디렉터리의 경로를 지정한다. 디렉터리 트레버설 취약점은 파일 경로를 지정하는 파라미터의 값으로 이러한 ../ 문자열의 입력을 허용함으로써 발생하는 취약점이다. ../../../etc/와 같은 방법으로 추트 디렉터리를 거쳐 다른 디렉터리를 지정할 수 있게 되므로 호스트 내부의 모든 파일에 접근하는 것이 가능하다. bWAPP의 A7 Directory Traversal - Files을 선택하여 실습을 진행한다. Directory Traversal - Files 실습 실습 페이지의 URL을 보면 page 파라미터에 message.txt가 지정되어 전달되고 있다. 이 실습 페이지는 page 파라미터에 저장된 파일인 message.txt 파일의 내용..

[비박스(bWAPP)] - 관리자 페이지 인증 우회

관리자 페이지는 종종 admin, admin.php, admin.jsp 등과 같은 URL로 되어 있어 쉽게 추측할 수 있다. DirBuster와 같은 자동화 툴을 이용하여 이러한 URL을 쉽게 찾을 수 있다. 그림 1은 dirbuster을 사용하여 URL을 알아냈다. 사용 명령어 gobuster dir -u http://192.168.60.136/bWAPP -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -t 100 gobuster을 사용하여 디렉토리 스캔을 진행하였다. /admin이라는 디렉토리가 발견이 되었고 이 디렉토리가 관리자의 URL이라고 생각을 하고 접속을 진행하였다. 단순히 URL을 추측하여 입력함으로써 관리자 페이지에 접근하..

[비박스(bWAPP)] - Insecure DOR (Order Tickets)

취약한 접근 통제 리스크의 사례 - URL이나 파라미터를 조작하여 다른 사용자의 리소스에 접근하거나 허용되지 않은 기능을 실행할 수 있는 경우 - 적절한 인증 및 인가 과정을 거치지 않고 관리자 페이지에 접근할 수 있는 경우 - 디렉터리 트래버설 취약점과 같이 웹 디렉터리 경로를 벗어난 호스트 내부 경로의 리소스에 접근할 수 있는 경우 안전하지 않은 직접 객체 참조(IDOR 공격) 실습 IDOR공격은 공격자가 요청 메시지의 URL이나 파라미터를 변경하여 정상적으로는 허용되지 않은 기능을 실행하거나 다른 사용자의 리소스에 접근할 수 있는 공격이다. bWAPP A4 항목에 Insecure DOR (Order Tickets)를 선택하여 실습을 진행한다. 이 실습 페이지는 사용자가 티켓의 수를 입력하여 입력한 ..

[비박스(bWAPP)] - Base64 인코딩

Base64 인코딩이란? base64 인코딩이란 이진 테이터를 아스키 텍스트 문자열로 변환하는 방법이다. base64 인코딩은 대표적으로 전자우편 또는 HTTP 메시지를 전송할 때 사용하는데, 파일 전송과 같이 텍스트로 표현할 수 없는 바이너리 데이터를 전송할 때 base64로 인코딩 하여 전송한다. base64인코딩 과정은 각각 8비트로 구성된 3개의 바이트를 6비트씩 쪼개어 4로 나누는 방식으로 진행된다. 디코딩 과정은 인코딩 과정과 반대로 6비트로 구성된 4개의 바이트를 8비트씩 쪼개어 3등분한다. 비박스에서 base64에 관련한 문제를 풀어보도록 하겠다. 문제 풀이 해당 페이지 내용은 secret은 암호화된 쿠키로 저장되어 있다고 한다. 힌트에는 암호화된 쿠키를 복호화하라는 것 같다. 그림 2와 ..

[비박스(bWAPP)] - Text Files (Accounts)

이 페이지는 회원가입 페이지이다. id와 password를 입력하고 Insert 버튼을 누른다. id와 password를 hello로 설정을 하였다. 이 페이지는 실습 페이지 이므로 계정정보가 담겨져있는 파일을 다운로드 받을 수 있다. 한번 다운로드 받아 보겠다. 그림 3번 처럼 패스워드가 평문으로 저장되어있다. 만약 패스워드가 평문으로 저장되어 있을 경우 해커한테 공격을 당했을 때 평문으로 된 패스워드에 접근이 가능하게 된다. 따라서 패스워드를 평문으로 저장할것이 아니라 해시로 저장을 해야한다.

반응형