오늘은 DreamHacker의 웹 해킹 워게임 중 하나인 csrf-1를 함께 풀어볼 예정이다. csrf-1 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. CSRF 취약점을 이용해 플래그를 획득하세요. Reference Client-side Basic dreamhack.io ## 문제 설명: 문제 정보를 살펴보면 CSRF 취약점을 활용하여 flag를 획득하면 되는 것으로 보인다. ## 문제 풀이 사이트에 접속해보니 다음과 화면이 보인다. 소스 코드를 확인해보면 다음과 같다. 로직을 요청하는 쪽이 서버이면서 userid가 admin인 경우, memo_text라는 변수에 FLAG가 추가되어 출력된다는 것을 확인할 수 있다. flag 버튼을 클릭하면 다음과 같이 파라미터를 통해 값을 전송할 ..
이번 포스트에서는 DVWA의 CSP Bypass 문제를 실습해보겠다. ## 공격 정의 Content Security Policy (CSP)를 우회하여 악성 스크립트를 실행시키는 공격 방법 참고 : CSP는 웹사이트에서 발생할 수 있는 XSS 공격 등의 보안 취약점을 막기 위한 기술 중 하나로, 웹사이트에서 허용하는 리소스들을 명시하여 악성 스크립트 실행을 방지하는 역할을 함 ## 공격 다이어그램 정책에서 허용된 도메인의 이름을 악용하여, 악성 스크립트를 실행시키는 방법 정책에서 허용된 리소스에 취약점이 존재하여, 해당 취약점을 악용하여 악성 스크립트를 실행시키는 방법 CSP 헤더를 무시하도록 브라우저를 조작하여 악성 스크립트를 실행시키는 방법 ## 실습 DVWA의 CSP Bypass항목을 선택하면 아래와..
이번 포스트에서는 DVWA의 XSS 문제를 실습해보겠다. ## 공격 정의 웹사이트에서 사용자가 입력한 데이터를 출력할 때, 입력된 데이터에 악성 스크립트를 삽입하여, 사용자의 브라우저에서 악의적인 행동을 수행하도록 유도하는 공격 방법 ## 공격 유형 Reflect XSS : 악성 스크립트가 URL 매개변수 등을 통해 전송되어, 해당 페이지를 방문한 특정 사용자에게만 악의적인 행동을 유도하는 공격 Stored XSS : 악성 스크립트가 서버에 저장되어, 해당 페이지를 방문한 모든 사용자에게 악의적인 행동을 유도하는 공격 Dom-Based XSS : 사이트에서 JavaScript를 사용하여 동적으로 생성된 DOM(Document Object Model) 요소에 악성 스크립트를 삽입하여, 해당 웹페이지를 방문..
이번 포스트에서는 XSS game의 Level 6 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 웹 사이트가 외부 파일을 요청해서 alert()을 실행하게 하면 된다. ## 문제 풀이 : 코드를 먼저 확인해보겠다. 43번째 코드를 확인해면 #뒤에 오는 값이 그대로 gadget의 경로로 활용된다고 한다. 그럼 바로 한 번 확인해보겠다. ### 공격 코드 : https://xss-game.appspot.com/level6/frame#GOTYOU ### 실행 결과 : GOTYOU가 화면에 출력된 것을 확인할 수 있다. 그럼 Data Url Schema라는 기법을 통해 공격을 시도해보겠다. Data Url Schema : 데이터를 URL 표현으로 바꾼다. 사용법은 d..
이번 포스트에서는 XSS game의 Level 5 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 사진 하단에 표시된 웹 사이트에 간단하게 alert()만 띄우면 된다. ## 문제 풀이 : Sign up을 누르면 다음과 같은 화면이 나온다. 이메일을 입력하고 Next 버튼을 누르면 다음과 같은 화면이 나온다. 5초 뒤에 다시 초기화면으로 돌아간다. 이어서 코드를 확인해보겠다. next 파라미터 값이 그대로 활용되어 next 변수값에 들어간 것을 확인할 수 있다. 즉, 우리는 next 변수를 통해 자바스크립트를 전달할 수 있다. 그러나 URL을 모르기 때문에 URL을 알아내보도록 하겠다. 13번째 코드를 확인해보면 url을 알 수 있다. 이제 url와 next 파..
이번 포스트에서는 XSS game의 Level 4 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 사진 하단에 표시된 웹 사이트에 간단하게 alert()만 띄우면 된다. ## 문제 풀이 : 우선 해당 웹 사이트에 alert()를 바로 삽입해서 공격해보겠다. ### 공격 코드 : ### 실행 결과 : 제대로 작동하지 않고 있다. 이어서 코드를 분석해보겠다. 분석한 결과, 우리가 삽입한 값이 23번째 줄의 timer에 들어간다는 것을 알 수 있다. 그러나 우리가 입력한 값이 parseInt() 함수를 통해 디코딩 되고 있다. 그럼 23번째 코드의 형식에 맞게 공격문을 삽입해보겠다. ### 공격 코드 : 1');alert('GOTYOU ### 실행 결과 : 공격에 성..
이번 포스트에서는 XSS game의 Level 3 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 사진 하단에 표시된 웹 사이트에 간단하게 alert()만 띄우면 된다. 단 이번 문제는 애플리케이션 상이 아닌 URL 주소란을 활용해야 한다. ## 문제 풀이 : 우선 해당 웹 사이트에 XSS 공격이 적용되는지를 확인해 보겠다. ### 공격 코드 : 가 출력된 것을 확인할 수 있다. 여기서는 사진의 확장자인 jpg가 출력되었으므로 img태그가 활용되고 있다는 것을 추측해낼 수 있다. 또한 "'" 작은 따옴표로 끝나는 것을 알 수 있다. 그럼 img 태그라고 가정하여 onerror 핸들러를 활용하여 끼워맞추면서 공격을 실행해보곘다. ### 공격 코드 : ' onerr..
이번 포스트에서는 XSS game의 Level 2 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 사진 하단에 표시된 웹 사이트에 간단하게 alert()만 띄우면 된다. ## 문제 풀이 : script 태그를 사용해서 alert() 함수를 삽입해보겠다. ### 공격 코드 : ### 실행 결과 : script 문을 삽입해보니 제대로 실행되지 않다는 것을 알 수 있다. 힌트를 확인해보니 다음과 같다. script 태그가 동작하지 않다고 한다. 아마 필터링 처리되었을 것 같다. 또한 그 대신 i, m, g와 onerror가 동작한다고 한다. 그럼 img 태그의 onerror 핸들러를 활용해서 공격을 실행해보겠다. ### 공격 코드 : ### 실행 결과 : 공격에 성공..
이번 포스트에서는 XSS game의 Level 1 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 사진 하단에 표시된 웹 사이트에 간단하게 alert()만 띄우면 된다. ## 문제 풀이 : script 태그를 사용해서 alert() 함수를 삽입해보겠다. ### 공격 코드 : ### 실행 결과 : 공격에 성공한 것을 확인할 수 있다.
오늘은 DreamHacker의 웹 해킹 워게임 중 하나인 xss-2를 함께 풀어볼 예정입니다. xss-2 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. Reference ClientSide: XSS dreamhack.io 문제 정보를 살펴보면 해당 워게임은 XSS(Cross-Site Scripting)취약점을 이용하면 된다고 합니다. 워게임 사이트에 접속해 보면 아래와 같은 페이지가 로딩될 겁니다. 메인 화면에 vuln(xss) page, memo, flag 이렇게 총 3개의 링크가 있는데 하나 씩 클릭해서 확인해보면 각각 다음과 같습니다. vuln 페이지를 확인해보면 아무것도 출력이 안..