Another Login Challenge
·
Alpacahack
문제설명Topic: Login분야: Web난이도: MediumLogin!, login!, and login!문제 URL: https://alpacahack.com/daily/challenges/alert-my-flag코드 분석let users = { admin: { password: crypto.randomBytes(32).toString("base64"), },};users는 사용자 정보를 저장한 객체현재 admin 한 명만 있음password는 랜덤한 비밀번호 생성app.get("/", (req, res) => { res.send(` Login Login `);});GET / 요청 시 로그인 폼 HTML을 보여줌브라우..
1주차
·
[Security First] web 기초교육
보호되어 있는 글입니다.
Alert my Flag
·
Alpacahack
문제설명Topic: XSS분야: Web난이도: MediumRun alert(flag) to win!코드분석if(type === "alert" && message === FLAG) { successful = true; } await dialog.accept(); });visit 함수 일부분alert의 메시지가 FLAG와 같으면 성공app.get("/", async (req, res) => { const flag = req.cookies.flag ?? "fake_flag"; const username = req.query.username ?? "guest"; let result; if(username.includes("flag") || username.include..
Directory Listing
·
Web Study
Directory Listing웹 서버가 특정 디렉터리(폴더)에 대해 기본 문서(index.html, index.php 등)을 찾지 못했을 때, 그 폴더 안에 있는 파일/하위 디렉터리 목록을 그대로 보여주는 기능 발생원인주된 원인은 서버 설정 때문이다. 대표적으로해당 디렉터리에 index 파일이 없음웹 서버에서 자동 인덱싱(autoindex) 기능이 켜져 있음접근 제어가 제대로 설정되지 않음개발/테스트용 디렉터리를 운영 환경에 그대로 둠즉, 서버가 보여줄 메인 문서가 없으니, 대신 폴더 안 목록이라도 보여주자 라고 동작하는 것이다.어떤 서버에서 보이나Apache: Apache에서는 Options Indexs 설정이 있으면 디렉터리 목록이 보일 수 있다. Nginx: Nginx에서는 autoindex on..
Host Split Attack
·
Web Study
Host Split AttackURL 안의 호스트명(Hostname)을 처리하는 과정에서, 일부 Unicode 문자가 정규화(normalization)/IDN 처리 과정에서. / : @ # 같은 URL 구조를 바꾸는 문자처럼 변형되면서, 프로그램이 처음 이해한 호스트의 실제 전송 이동 시점의 호스트가 달라지는 취약점이다. 핵심은 보안 판단은 원래 문자열 기준으로 했는데, 나중에 정규화 후 URL 구조가 바뀌어 다른 도메인으로 해석된다는 것이다. 쉽게 말해,trusted.example 안의 하위 도메인이라고 믿었는데, Unicode/IDNA 변환 뒤에는 evil.example/path.trusted.example 같은 전혀 다른 구조로 바뀌어 오픈 리다이렉트 우회, OAuth 토큰 탈취, 도메인 검증 우회..
HTTP Session Hijacking
·
Web Study
HTTP Session HijackingHTTP Session Hijacking은 공격자가 다른 사용자의 유효한 세션을 탈취해서, 그 사용자로 가장하는 공격이다. 웹 애플리케이션은 보통 세션 ID를 통해 사용자 인증 상태를 유지한다. 이 세션ID가 노출/예측/고정/재사용되면 공격자는 피해자 비밀번호를 몰라도 로그인된 상태를 그대로 가로채서 행동할 수 있다.SessionHTTP는 기본적으로 stateless이다.즉, 요청 1번과 요청 2번이 같은 사용자인지 자체적으로 기억하지 못한다.그래서 서버는 사용자가 로그인하면 서버 측에 세션 상태를 만들고, 클라이언트에게는 그 세션을 식별할 세션 식별자(session identifier)를 내려준다.이 값은 일반적으로 Set-Cookie 헤더를 통해 쿠키로 저장되고..
Parameter Tampering Attack
·
Web Study
Parameter Tempering Attack공격자가 클라이언트와 서버 사이에서 전달되는 파라미터를 임의로 수정해서, 애플리케이션 데이터나 동작을 바꾸는 공격이다. URL query string, hidden form field, cookie 등으로 전달되는 값을 조작으로, 예시로는 사용자 자격, 권한, 상품 가격, 수량 같은 값 변경이 있다. 핵심은 서버가 사용자가 보낸 값을 믿으면 안되는데 믿었을 때 생기는 문제 CWE-472: hidden field, parameter, cookie, URL값이 변조되지 않을 것이라고 잘못 가정하는 문제를 설명CWE-20: 개발자가 쿠키나 hidden field가 수정 불가능하다고 믿으면 입력 검증 자체를 생략할 수 있다고 설명 ☞ 단순히 "값이 바뀐다"가 아니라..
JS Obfuscation
·
Web Study
JS Obfuscation란?JavaScript Obfuscation(난독화)로, 코드를 원래 기능은 유지한 채 사람이 읽고 분석하기 어렵게 변형시키는 기술이다. 핵심은 **이해를 어렵게 만든다** int a = 1int a = ((123+34+350-34-350)*0)+1 위의 코드는 쉽게 볼 수 있지만, 다양한 함수 또는 방식을 이용해 코드가 눈에 잘 들어오지 않도록 만들 수 있다.대표 기법1. 식별자 변경가장 기본적인 기법으로, 의미 있는 변수명/함수명을 전부 무의미한 이름으로 바꾼다.chechPassword userToken isAdmin위 코드처럼 이름만 봐도 역할이 보이는데 이를 _0x12ab, _0x9f3c 처럼 의미 없는 이름으로 바꾼다. ☞ 사람은 코드를 읽을 때 이름을 많이 본다. de..