본문 바로가기

WEB HACK9

[VUE JS] source map 파일을 통한 Frontend 소스 코드 획득 일반적으로 vue.js 애플리케이션을 빌드하면, 코드가 압축되어 사용자에게 제공됩니다. 이때 원래 코드의 흐름과 파일 구조가 왜곡될 수 있어, 브라우저에서 발생한 오류를 추적하기가 어려울 수 있습니다. 이러한 상황에서 디버깅을 쉽게 하기 위해 source map 파일을 제공하고 있는데, 해당 파일을 이용하여 압축된 코드를 원래의 코드로 디코딩할 수 있습니다. 그런데 만약, 실제 운영 환경에서 source map 파일이 존재할 경우 Frontend의 소스 코드를 획득할 수 있는 등의 취약점이 발생할 수 있습니다. Source Map 파일 찾기 개발자 도구 > "SourceMappingURL" 검색 > app.*.js 파일 찾기 app.*.js 경로에 .map을 붙여서 접속 시도 (app.*.js.map) .. 2023. 2. 21.
[Kotlin] Use-Site Target이 존재하지 않을 경우 검증 우회 가능 Data Class의 경우 NotBlank와 같은 검증 Annotation을 Use-Site Target과 같이 사용하지 않을 경우, 생성자 구문에 검증 코드가 작성되는 문제가 있음 // 생성자에 NotEmpty와 NotBlank가 적용되는 잘못된 코드 data class UserInfoDto ( @NotEmpty(message="값이 비어있으면 안됩니다.") @NotBlank @Email(message="이메일 주소를 입력해주세요.") var email : String?, var password : String?, ) 반드시 Use-Site Target을 명시하여 필드 변수에 대한 검증을 수행하도록 해야 함 // 변수에 NotEmpty와 NotBlank가 적용되는 올바른 코드 data class Use.. 2023. 2. 21.
CSP(Content-Security-Policy) Bypass CSP(Contnet-Security-Policy)란 CSP(Contnet-Security-Policy)는 웹에서 사용되는 콘텐츠(이미지 태그, 스크립트 등)에 대한 정책으로 XSS와 같은 특정 유형의 공격을 감지하고 완화하는데 도움이 되는 보안 정책 입니다. XSS 공격은 서버에서 받은 콘텐츠를 무조건적으로 신뢰하는 브라우저의 특성을 악용하여 악성 스크립트가 피해자의 브라우저에서 실행되도록 하는 공격입니다. 그런데 CSP를 사용하게 되면 브라우저가 신뢰할 수 있는 출처를 설정할 수 있어 신뢰되는 출처에서 수신받은 스크립트만을 실행하도록 하여 일부 XSS 공격을 방지할 수 있습니다. 또한, 모든 콘텐츠가 HTTPS를 이용하여 로드하도록 지정할 수도 있습니다. 과거에는 CSP로 사용되는 헤더들이 여러 개 .. 2022. 6. 15.
인증(Authentication)과 인가(Authorization)의 차이 전자금융기반시설 취약점 분석.평가 및 ISMS-P 인증을 위해 모의해킹 프로젝트를 나가다보면, 인증(불충분한 이용자 인증)과 인가(부적절한 인가 여부)가 헷갈리는 경우가 많아 이를 정리하기 위해 포스팅을 하게 되었습니다. 인증 (Authentication) 인증은 어떤 개체(사용자 또는 장치)의 신원을 확인하는 과정을 나타내며, 보통 특정 인증 요소(아이디, 패스워드, 핸드폰 인증)를 증거로 제시하여 자신을 인증합니다. 인가 (Authorization) 인가는 어떤 리소스에 접근하거나 동작을 수행할 수 있는지 검증하는 과정을 나타내며, 접근 권한을 확인하는 과정이라고 이해하시면 좋습니다. 상황 별 정답 (답이 틀릴 수 있음) 1. 원래 접근은 가능하나 인증이 필요한 페이지에 강제 접근 시 해당 페이지 접.. 2022. 6. 2.
Server Side XSS (Dynamic generated PDF) 개요 특정 페이지 내 코드가 HTML로 렌더링 되어 PDF로 반환되는 페이지가 있습니다. 만약 사용자 입력 값을 해당 페이지에 삽입할 수 있고 HTML 코드로 인식된다면 해당 취약점은 XSS이면서 SSRF(Sever Side Request Forgery)가 될 수 있습니다. 그리고 이러한 취약점을 Server Side XSS라고 부릅니다. ※ PDF로 반환되는 기능에서만 발생하는 건 아니지만 제일 많이 발생하는 유형이라 PDF를 기준으로 설명하겠습니다. Cheat Sheet Confirm Server Side XSS Code Confirm Server Side Blind XSS Code Leaked Server URL LFI(Local File Inclusion) - When the server url .. 2022. 5. 18.
[CVE-2017-5487] WordPress REST API 1-Day 취약점 취약 환경 Wordpress 4.4.0 ~ 4.7.1 조치 방법 Wordpress 4.7.2 이상 버전으로 업데이트 취약점 설명 CVE-2017-5487은 비로그인 상태에서 글을 작성한 작성자들의 리스트를 확인할 수 있는 취약점입니다. 위험도는 크지 않지만 로그인 가능한 아이디를 획득할 수 있어 Brute Force와 같은 공격에 활용될 수 있습니다. PoC 해당 취약점은 /wp-json/wp/v2/users 경로에 접근하면 발생하는 취약점으로 공격 방법이 매우 간단합니다. 취약 파일 위치 : /wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php import requests import json url = "http://localhost/.. 2022. 5. 17.
postman을 활용한 API 진단 시 유용한 스크립트.zip Response 내 Access Token 및 Refresh Token 저장 var jsonData = JSON.parse(responseBody); if(jsonData){ pm.environment.set("accessToken",jsonData.accessToken); pm.environment.set("refreshToken",jsonData.refreshToken); } 2022. 5. 11.
Cross Site Request Forgery(CSRF) payload XSS가 발생하는 환경에서 CSRF 보호 기법(csrf token)이 적용되어 있지 않으면 당연히 CSRF를 확인해야 합니다. CSRF Payload by multipart/form-data CSRF Paylod by json 요새는 많은 서버에서 Content-type을 applicaiton/json으로 보내는데, 이런 경우 가장 기본중의 기본인 form tag를 이용하여 CSRF를 확인하기는 어렵습니다. 이런 경우 XMLHttpRequest()를 이용하여 CSRF를 확인하면 쉽게 확인할 수 있습니다. var xhr = new XMLHttpRequest(); var url = "/admin/pwd_chg.do"; xhr.open("POST", url, true); xhr.setRequestHeader(.. 2022. 5. 6.
[Chrome] 시크릿 모드에서 확장 플러그인 사용 방법 크롬에서 시크릿 모드를 실행할 경우 아래 사진과 같이 확장 플러그인이 빠진 채로 켜지게 됩니다. 시크릿 모드 실행 시 확장 플러그인을 포함시키기 위해 먼저 "설정 > 도구 더보기 > 확장 프로그램"을 클릭합니다. 시크릿 모드 실행 시 포함시킬 확장 프로그램의 "세부정보" 버튼을 클릭합니다. 설정 화면에서 "시크릿 모드에서 허용"을 활성화 합니다. 기능 활성화 후 시크릿 모드를 키게 되면 확장 프로그램이 포함되어 있는 것을 확인할 수 있습니다. 2022. 4. 26.