본문 바로가기

전체 글

(302)
Lab : DOM XSS via an alternative prototype pollution vector Write UP 이전 Lab과 같이 Prototype Pollution의 근원지를 찾기 위해 URL 쿼리 스트링을 사용해 속성 주입을 시도했다. 지난번과는 다르게 괄호 표기법으로 접근할 수는 없었고, 점 표기법을 활용하였다.   Object.prototype 명령을 통해 prototype 속성 주입에 성공함을 확인할 수 있었다.   js 소스코드 상에 eval 함수가 존재하였고, 이는 XSS 취약할 수 있다. 심지어 manager.sequence는 정의되지 않았다. 이를 활용해 위 그림 2와 같이 alert(1)- 을 Prototype Pollution을 통해 주입하였고, alert()에 성공하였다.   (그림 3) 디버깅 도중 manager 객체에 대한 속성을 확인해 보았다.
Lab : DOM XSS via client-side prototype pollution Write Up 먼저, Prototype pollution 근원지를 수동으로 탐색해 본다. 이는 많은 시도와 에러들이 동반된다. 즉 Object.prototype 이 작동하는 근원지를 찾을 때까지 임의의 속성을 추가하는 다양한 방법을 시도해야 한다.  → 쿼리 스트링, URL fragment, JSON input을 통해 임의 속성 주입을 시도해 본다.  해당 Lab에서는 쿼리 스트링을 사용해 속성 주입을 시도하였고, 성공적으로 prototype pollution 이 발생하였다.   만약, 속성이 Prototype에 추가되지 않은 경우 대괄호 표기 대신 점 표기 방식으로 전환하거나 그 반대로 전환하는 등 다양한 기술을 사용해봐야 한다. ( 해당 Lab에서는 . 표기 법으로는 prototype polluti..
[ 1-Day ] Ability to see hidden likes 본 포스팅은 학습 목적으로 작성되었으며, hackerone report를 기반으로 작성되었습니다. -분석 레포트- https://hackerone.com/reports/2140960 summary 00 프리미엄(유료) 사용자는 자신의 프로필에서 '좋아요' 타임라인을 숨길 수 있다.  그러나 인증된 사용자는  /i/api/graphql/lVf2NuhLoYVrpN4nO7uw0Q/Likes 해당 엔드포인트에 HTTP GET 요청을 보내, userid 값 내에 대상 사용자의 sns id를 지정하여 00 프리미엄 사용자의 숨겨진 마음에 들어요를 찾을 수 있다.  예를 들어,  /i/api/graphql/lVf2NuhLoYVrpN4nO7uw0Q/Likes?variables={"userId":"██████████",..
[ 1-Day ] (CSRF) vulnerability on API endpoint allows account takeovers 본 포스팅은 학습 목적으로 작성되었으며, hackerone report를 기반으로 작성되었습니다.  -분석 레포트-https://hackerone.com/reports/419891 Summary xxx.org의 /signup/email API 엔드 포인트는 CSRF 공격에 취약하여 확인되지 않은 이메일 주소와 연결된 계정의 탈취를 허용한다.  Description 취약한 엔드포인트를 사용하면 인증된 사용자가 아직 현재 주소를 확인하지 않은 경우 자신의 계정과 연결된 이메일 주소를 변경할 수 있다. 그러나 사용자가 의도적으로 요청을 수행했는지 (ex. HTTP 헤더 값 확인 및 CSRF 방지 토큰 사용)를 충분히 검증하지 못한다.  해당 보고서에 사용된 PoC는 아래와 같다.   ..
JavaScript 객체 및 prototype ( 2 ) 참조 : https://developer.mozilla.org/ko/docs/Learn/JavaScript/Objects/Object_prototypes JavaScript는 흔히 프로토타입 기반 언어라 불린다. 모든 객체들이 메소드와 속성들을 상속받기 위한 템플릿으로써 프로토 타입 객체 (prototype object)를 가진다는 의미이다. 프로토타입 객체도 또 다시 상위 프로토 타입 객체로부터 메소드와 속성을 상속받을 수도 있고 그 상위 프로토타입 객체도 마찬가지다. 이를 프로토타입 체인(prototype chain) 이라 부르며 다른 객체에 정의된 메소드와 속성을 한 객체에서 사용할 수 있도록 하는 근간이다.  정확히 말하자면 상속되는 속성과 메소드들은 각 객체가 아니라 객체의 생성자의 protot..
JavaScript 객체 및 prototype ( 1 ) prototype pollution을 공부하기 위해 JavaScript의 객체와 프로토 타입이 무엇인지 먼저 알아보도록 한다. 참조: https://developer.mozilla.org/ko/docs/Learn/JavaScript/Objects/Basics   JavaScript 객체  객체는 관련된 데이터와 함수( 객체 안에 있을 때는 프로퍼티와 메소드라 호칭)의 집합이다. 객체를 생성해 볼 것인데, 다른 요소들과 마찬가지로 변수를 정의하고, 초기화하는 것으로 시작한다.  [object Object]Object { }{ } person 객체는 빈 객체임을 console창에서 확인할 수 있다. 아래와 같이 객체를 업데이트 해본다.  const person = { name: ["Bob", "Smith"..
[ 1-Day ] Race Condition allows to redeem multiple times gift cards which leads to free "money" 본 포스팅은 학습 목적으로 작성되었으며, hackerone report를 기반으로 작성되었습니다. -분석 레포트-https://hackerone.com/reports/759247 Summary 기프트 카드를 여러 번 사용할 수 있는 RaceCondition 취약점을 발견했다. 기프트 카드 하나로 쉽게 물건을 구매하고, 반복해서 사용할 수 있는 방법이다.  Steps to reproduce 사용된 도구 : Burp Suite Pro, Turbo Intruder 1. 로그인 진행2. 기프트 카드를 구매한다. 3. sandbox.reverb.com//redeem 에서 상환을 진행한다. 4. 다음과 같은 요청을 intercept 한다. POST /fi/redeem HTTP/1.1Host: sandbox.reve..
[ 1-Day ] Race Condition when following a user 본 포스팅은 학습 목적으로 작성되었으며, hackerone report를 기반으로 작성되었습니다. -분석 레포트-https://hackerone.com/reports/927384 Summary 사용자를 팔로우 할 때, Race Condition 취약점이 존재한다. 요청을 비동기적으로 보내는 경우 Follow 오류 메시지가 표시되는 대신 사용자를 여러 번 팔로우 할 수 있다. ( 제보자는 Race Condition 공격을 시도하기 위해 Burp Suite에서 Turbo intruder 확장을 사용 ) Steps to Reproduce 1. 사용자 프로필로 이동2. Burp Suite에서 Intercept를 켜고, Follow 버튼을 클릭한다. 3. 잡은 패킷을 통해  Send to turbo intrude..