XML External Entitiy Attack (XEE) 은 취약하게 설정된 XML parser에 의해 공격자가 XML 문서에서 외부 엔티티를 이용하여 공격자가 의도하는 외부 URL 을 실행시킨 뒤, 서버의 로컬파일 정보 등을 출력하거나 DOS 공격을 수행할 수 있는 취약점이다. bee-box 환경에서 실습해보자! Level - low Any bugs? 버튼 요청을 burf suite 로 잡아보면 위와 같다. 이 body 부분에 XXE 스크립트를 작성해보자. 위의 빨간 네모 부분처럼 xxe 라는 외부 엔티티를 선언한다. 선언된 외부 엔티티는 &엔티티이름; 형식으로 사용하면 된다. burf suite 의 Repeater 기능을 통해 response 를 보면 위와 같이 etc/passwd 파일의 내용을 ..
Cross-Site Request Forgery(CSRF) 는 공격자가 서버에서 실행되는 악의적인 스크립트/파일을 업로드하면, 사용자가 이를 실행하면 공격자 대신 웹 서버에게 악의적인 요청을 전송하는 취약점이다. CSRF 를 통해 계좌 송금 내역을 변경해보자. bee-box 환경에서 실습해보자! Level - low 송금 요청 패킷을 잡아 url 을 복사한다. 위와 같이 img 태그를 이용하여 게시판에 글을 작성한다. 해당 글은 height 과 width 를 0 으로 설정했기 때문에 내용이 보이지 않는다. 해당 글을 열람한 뒤 계좌 정보를 가보니 100 EUR 가 감소한 것을 볼 수 있다. Level - medium, high token 값을 받아와 같이 전달하고 있다. 때문에 CSRF 공격이 불가능하다..
Cross-Site Request Forgery(CSRF) 는 공격자가 서버에서 실행되는 악의적인 스크립트/파일을 업로드하면, 사용자가 이를 실행하면 공격자 대신 웹 서버에게 악의적인 요청을 전송하는 취약점이다. CSRF 를 통해 패스워드 힌트를 변경해보자. bee-box 환경에서 실습해보자! Level - low 패스워드 힌트 변경 요청을 burf suite 로 잡은 뒤, 위와 같이 url 을 복사한다. post 방식으로 데이터를 보내고 있어 아래의 Body 부분도 같이 복사해준다. 복사한 내용을 위와 같이 게시판에 img 태그를 이용하여 글을 작성해준다. 해당 글은 height 과 width 를 0 으로 설정했기 때문에 내용이 보이지 않는다. 글을 열람한 뒤, 패스워드 힌트를 조회해보면 위와 같이 p..
Cross-Site Request Forgery(CSRF) 는 공격자가 서버에서 실행되는 악의적인 스크립트/파일을 업로드하면, 사용자가 이를 실행하면 공격자 대신 웹 서버에게 악의적인 요청을 전송하는 취약점이다. CSRF 를 통해 악의적인 패스워드 변경을 수행해보자. bee-box 환경에서 실습해보자! Level - low 패스워드 변경 요청을 burf suite 를 통해 잡아보자, 그 다음 해당 패킷에서 url 을 복사한 뒤, 아래와 같이 게시판에 img 태그를 통해 글을 작성한다. img 태그를 이용하여 height 과 width 를 0 으로 설정했기 때문에 내용은 보이지 않는다. 로그인 페이지로 가서 확인해보자. 기존의 test/1234 조합으로는 로그인이 실패하고 CSRF 로 변경된 test/12..
인증 수준이 낮은 로그인 페이지에서는 Brute Force 나 Dictionary 공격 등을 통해 로그인 정보를 획득할 수 있다. 이 때, 로그인 수행 시 출력되는 메시지를 이용하는데 CAPTCHA Bypass 실습 때도 사용했던 Burf suite 의 Intruder 를 이용하여 공격을 수행해보겠다. Intruder 를 사용해보지 않았다면 아래의 실습을 먼저 보고오길 바란다. # Burf suite 의 Intruder 을 이용한 CAPTCHA Bypass : https://binwalk.tistory.com/87 bee-box 환경에서 실습해보자! Level - low bee/bug 가 로그인 정보로 나와있고 이 조합으로 로그인 시, "Successful login!" 이라는 메시지가 출력된다. 잘못된..
이번에는 비밀번호 찾기 페이지의 취약점에 대해서 알아보겠다. bee-box 환경에서 실습해보자! Level - low 이메일을 입력하여 비밀번호를 찾는 페이지인 듯 하다. low level 같은 경우는 이메일만 입력해도 바로 비밀번호를 알려주고 있다. 요즘에 이런 페이지는 존재하지 않을 것이다. Level - medium 이메일을 입력하면 해당 이메일로 현재 비밀번호를 보내주고 있다. Level - high 이메일을 입력하면 해당 이메일로 리셋 코드를 보내주고 있다. 이 리셋 코드를 통해 비밀번호를 변경하는 구조인 듯 하다. 소스코드 분석 ba_forgotten.php 에서 각 level 의 처리과정을 찾아보았다. medium level 일 때는 입력한 이메일로 현재 비밀번호를 그대로 보내고 있었다. h..
CAPTCHA 는 사람과 컴퓨터를 구별하기 위한 절차를 수행한다. 이번에는 이 CAPTCHA 가 포함되어 있는 로그인 페이지에서 아이디/패스워드를 크랙하는 공격을 수행해보겠다. bee-box 환경에서 실습해보자! Level - low, medium, high 로그인 페이지에서 로그인에 성공하면 위와 같은 메시지를 출력해준다. CAPTCHA 문자는 제대로 입력했지만 아이디/패스워드를 잘못 입력했을 경우는 위와 같은 메시지를 출력해준다. 이제 이 출력 메시지를 이용하여 공격을 수행해보겠다. Burp suite 의 Intruder 기능을 이용하면 Brute Force 공격이나 사전 공격을 자동화하여 수행할 수 있다. CAPTCHA 문자만 정확히 입력한 뒤 burf suite 를 통해 패킷을 잡고 Intrude..
이번에는 비밀번호를 변경하는 부분에서 XSS 공격을 수행해보겠다. bee-box 환경에서 실습해보자! Level - low 새로운 비밀번호를 설정한 뒤, SQL Injection (Login Form/User) 페이지로 가서 로그인을 시도해보았다. 그 결과, 위와 같이 비밀번호 정보가 출력되는 것을 볼 수 있다. 이제 이를 이용해서 xss 공격을 시도해보자. 위와 같이 비밀번호를 변경한 뒤, 다시 SQL Injection (Login Form/User) 페이지로 가서 로그인을 시도해보았다. 그 결과, 입력한 스크립트 문이 수행되어 저장된 것을 볼 수 있었다. Level - medium, high medium, high level 에서는 스크립트 문이 태그 그대로 출력되었다. 소스코드 분석 medium, ..
Reflected 방식이 공격자가 공격 대상자에게 스크립트가 포함된 URL 을 노출시키는 방식이라면, Stored 방식은 웹 페이지에 스크립트를 삽입하여 공격자가 접근했을 때 스크립트가 수행되는 방식이다. bee-box 환경에서 실습해보자. Level - low, medium 게시판의 입력창에 스크립트 문을 입력하면 아래와 같이 페이지에 스크립트 실행 결과가 출력되는 것을 확인할 수 있다. 이를 이용할 수 있는 공격 시나리오는 다음과 같다. 1. 게시판에 공격자의 서버로 클라이언트의 쿠키값을 보내는 스크립트를 포함한 글 작성 2. 클라이언트가 해당 글에 접근 시, 공격자의 서버로 클라이언트 쿠키 값 전송 3. 공격자가 쿠키를 이용하여 해당 클라이언트로 로그인 4. 악위적 행위 수행 Level - high..
User-Agent 는 HTTP 요청 헤더에서 Client OS 정보, 웹 브라우저 정보를 보여준다. 이 부분에서 XSS 공격을 수행해보자! bee-box 환경에서 실습해보자. Level - low, medium 현재 페이지의 패킷을 burf suite 를 통해 잡아보면 위와 같이 User-Agent 를 확인할 수 있다. 이 부분을 스크립트 문으로 변경해보자. User-Agent 부분을 위와 같이 스크립트 문으로 변경한 뒤 요청을 보내보았다. 그 결과, 스크립트 문을 실행할 수 있었다. Level - high User-Agent 값을 변경해도 스크립트 문이 실행되지 않았다. burf suite 의 Repeater 기능을 이용하여 넘어간 값을 확인해보았다. 가 로 변경되어 있었다. 필터링이 되어..
Referer 은 현재 요청된 페이지의 링크 이전의 웹 페이지 주소를 나타내는 헤더이다. 웹 프록시를 통해 이 값을 변경하여 XSS 공격을 수행해보자. bee-box 환경에서 실습해보자! Level - low, medium 위와 같이 웹 프록시로 Referer 헤더에 이전 페이지가 들어가 있는 것을 볼 수 있다. 이 내용을 스크립트 문으로 변경하여 요청해보자. 그 결과, 아래와 같이 스크립트 문이 실행되는 것을 볼 수 있다. Level - high high level 에서는 스크립트 문이 실행되지 않는다. burf suite 의 Repeater 를 통해 전달된 값을 보니, 가 로 변환되고 있었다. htmlspecialchars() 함수가 사용되고 있는 것 같다. 소스코드 분석 각 level 의..
이번에는 로그인 폼에서의 XSS 공격에 대해서 알아보겠다. 로그인하면 SQL Injection 이 가장 먼저 생각나는데 이를 이용하여 XSS 를 수행할 수 있다. bee-box 환경에서 실습해보자! Level - low 로그인 폼에서 ' or 1=1 # 을 통해 조건을 참으로 만들 수 있는 것을 확인하였다. 이를 이용하여 참이 되는 조건에서 스크립트 문을 삽입해보았다. 스크립트 문이 성공적으로 실행되었다. Level - medium, high SQL Injection 을 통해 조건을 참으로 만들 수 없었다. 인젝션 필터링이 되어 있다. 소스코드 분석 medium 과 high level 에 각각 SQL 과 관련된 함수로 입력값을 체크하고 있다. medium level 에서는 addslashes() 함수를 ..