Web hacking (13) 썸네일형 리스트형 Insecure deserialization 해당 포스팅은 아래 포트스위거의 web-security를 기반으로 진행되었습니다.▶ https://portswigger.net/web-security/deserialization Serialization vs deserialization 직렬화는 객체와 같은 복잡한 데이터 구조를 순차적인 바이트 스트림으로 변환하는 과정이다. 이를 통해 데이터를 파일로 저장하거나 네트워크를 통해 전송할 수 있다. 역직렬화는 직렬화된 바이트 스트림을 원래의 객체로 복원하는 과정이다. 즉, 직렬화의 반대 과정이며, 이 과정을 통해 원래의 데이터 구조와 상태를 되찾을 수 있다. What is insecure deserialization? Insecure deserialization 이란 웹사이트에서 사용자가 제어할 수 있는 .. Prototype pollution 대응 방안 해당 포스팅은 학습목적이며, PortSwigger의 web-security 를 기반으로 작성되었습니다. ▶https://portswigger.net/web-security/prototype-pollution/preventing Preventing prototype pollution vulnerabilities exploit 가능한 가젯과 결합되어 있는지 여부에 관계 없이 웹 사이트에서 발견된 프로토타입 오염 취약점은 모두 패치를 적용하는 것이 좋다. 취약점을 놓치지 않았다고 확신하더라도 향후 코드나 사용하는 라이브러리의 업데이트가 새로운 가젯을 도입하여 실행 가능한 익스플로잇의 가능성을 주지 않을 것이라는 보장은 없다. ( 그동안 prototype pollution Lab을 통해 학습한 기법에 대한 조.. Server-side prototype pollution 지난번까지는 Client-side prototype pollution에 대해 학습을 진행했었다. 이번에는 Server-side prototype pollution에 대해 학습해 보도록 한다. 먼저, 해당 포스팅은 아래 포트스위거의 web-security를 기반으로 진행된다.▶ https://portswigger.net/web-security/prototype-pollution/server-side JavaScript는 원래 브라우저에서 실행되도록 설계된 클라이언트 측 언어였지만, Node.js 와 같은 서버 측 런타임의 출현으로 인해 이제 JavScript는 서버,API 및 기타 백엔드 애플리케이션을 구축하는데 널리 사용된다. 논리적으로 이는 프로토타입 오염 취약성이 서버 측 컨텍스트에서 발생될 수도 .. 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".. Subdomain Takeover 취약점 Subdomain Takeover의 기본 전제는 현재 사용되지 않는 특정 서비스를 가리키는 호스트가 존재해야 하며, 공격자는 타사 서비스에 계정을 설정하여 취약한 subdomain을 탈취하여, 콘텐츠를 제공하는 데 사용할 수 있다. ( 요약하자면, subdomain에 매핑된 서버가 제거(삭제) 되었을 경우, 공격자가 해당 IP, 설정 등을 점유하여 인수할 수 있는 공격 방법이다. S3, Github Page, Heroku 등 서비스에서 발생가능성이 높다. ) example.com 이 target 서버일 때, 해커가 example.com에 속한 모든 하위 도메인을 열거하는 과정에서 특정 GitHub 페이지를 가리키는 하위 도메인인 subdomain.example.com을 발견한다. ( 아래에서 subdom.. DNS Record 간단 정리 Subdomain Takeover 취약점을 이해하기 위해서는 DNS Record에 대한 이해가 필요해 간단하게 정리하게 되었다. 우리가 커스텀 도메인을 사용하기 위해서는 DNS Record 설정이 필요하다. 대표적으로 CNAME과 A 레코드와 같은 정보를 설정해줘야 한다. ( DNS Record 의 다른 타입들은 https://en.wikipedia.org/wiki/List_of_DNS_record_types 에서 확인이 가능하다. ) 먼저 A 레코드에 대한 설명을 하도록 한다. A 레코드는 도메인 주소와 IP 주소를 직접 매핑시키는 방법이다. 아래 그림 1을 예로 살펴본다. 첫 번째 컬럼은 도메인 이름을 나타내고, 두 번째 컬럼은 매핑 주소(IPv4)를 나타낸다. 사용자가 example.com 도메인 .. XSS 정리 XSS 공격은 동적처리가 이루어지는 웹 애플리케이션에 대해 악의적인 스크립트( 클라이언트 사이드 스크립트 중 JavaScript )를 삽입하여, 사용자에게 비정상적인 행위를 강제적으로 유도하는 공격이다. XSS에 대한 구분은 아래와 같다. ( Universal XSS는 이번 정리를 통해 처음 알게되었다. https://github.com/Metnew/uxss-db?tab=readme-ov-file ) DOM-based XSSXSS에 사용되는 악성 스크립트가 URL Fragment에 삽입되는 XSS ( Fragment는 서버 요청/응답 에 포함되지 않는다. )Reflected XSSXSS에 사용되는 악성 스크립트가 URL에 삽입되고 서버의 응답에 담겨오는 XSSStored XSSXSS에 사용되는 악성 .. 이전 1 2 다음