목록전체 글 (82)
'll Hacker
1. GET 방식으로 데이터 보내기(데이터가 쿼리스트링 형태로 포함됨) 클라이언트의 데이터를 URL 뒤에 붙여서 보냄 쿼리 스트링 => URL?데이터이름=값& 데이터이름=값&.... => '&' 구분자 사용 활용 : 데이터 조회 -> 검색, 페이지 이동, 쿠키와 같은 작은 데이터 전송 https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=hello 2. POST방식으로 데이터 보내기(URL에 데이터가 포함되어있지 않음) GET과 달리 데이터는 HTTP 요청의 body에 포함되어 전송됨 POST로 데이터를 전송할때에는 Body영역 데이터 타입을 Header Content-Type에 명시를 해줘야 함. 이때, 데..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/c7n9Wo/btsEF7lXh9R/Cn2qfgMG9E7nG24tXjYlx1/img.png)
1) 코드 분석 (출처:챗쥐피티) 엔드포인트1 : /vuln @app.route("/vuln") # Flask 애플리케이션에서 /vuln 엔드포인트에 대한 라우팅을 정의 # 사용자의 입력을 ㅂ다는 목적으로 보임 def vuln():#핸들러 함수인 vuln을 정의 param = request.args.get("param", "") # Flask에서 제공하는 request 객체를 사용하여 쿼리 매개변수 중 "param"값을 가져오고 있음 # param 이라는 매개변수가 없으면 빈 문자열을 기본값으로 사용 param = xss_filter(param) #가져온 "param"값을 'xss_filter' 함수에 전달하여 XSS(Cross Site Scripting) 공격을 방지하기 위한 필터링 수행 return ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b5Mj0A/btsEDhOPfwP/fxaeVtsVWd0NXPKpXOMs90/img.png)
1) 불충분한 XSS 필터링 1-1) Unicode escape sequence를 통한 우회 -> 자바스크립트 Unicode escape sequence 지원 참고 : https://dencode.com/string/unicode-escape Unicode Escape (\u %u \x &#x U+ 0x \N) Encoder / Decoder Online - DenCode Unicode Escape encoder / decoder. (e.g. "Hello, world!" "\u0048\u0065\u006c\u006c\u006f\u002c\u0020\u0077\u006f\u0072\u006c\u0064\u0021") dencode.com var foo = "\u0063ookie"; // cookie var..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cTDHQR/btsEy2ZCp55/H8QsniL6NcqJwmfskzN3uK/img.png)
XSS 방어 필터링 우회 기법을 공부해보자 다음 언급된 필터링은 잘못된 방식으로 XSS 취약점을 근본적으로 제거하기 위해서는 태그 삽입이 되지 않도록 처음부터 원인을 제거하는 것이 중요 ‼️ 1) 불충분한 XSS 필터링 1-1) 이벤트 핸들러 속성 -> on으로 시작하는 속성 잠.깐.만🖐️ ! 이벤트 핸들러가 뭘까? 특정 요소에서 발생하는 이벤트를 처리하기 위해 존재하는 콜백 형태의 핸들러 함수 이벤트 핸들러 내에 XSS 공격 코드를 삽입해두면 해당 이벤트가 발생했을 때 XSS 공격 코드가 실행됨 태그의 속성 값으로 들어가는 이벤트 핸드러의 종류는 굉장히 다양하며 각 이벤트가 발생하는 원리가 다양함 참고 : https://developer.mozilla.org/en-US/docs/Web/Events Ev..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/wp4GR/btsEyrFc5BN/KT934AFYJogRjdDvch4lOK/img.png)
클라이언트 사이드 취약점 공격자가 웹 리소스에 악성 스크립트를 삽입해 이용자의 웹 브라우저에서 해당 스크립트를 실행가능 해당 취약점을 통해 특정 계정의 세션 정보를 탈취하고 해당 계정으로 임의의 기능 수행 요즘 SOP 보안 정책 등장하면서 서로 다른 오리진에서는 정보를 읽는 행위가 힘들어짐 => 우회 기법 존재 💡웹 리소스 (출처 : ChatGPT) 웹 리소스(Web Resource)는 웹에서 사용되는 모든 종류의 자원이나 자료를 말합니다. 이는 텍스트, 그림, 동영상, 스타일 시트, 스크립트 파일, 데이터 파일 등과 같은 다양한 형태의 정보를 포함할 수 있습니다. 웹 리소스는 웹 페이지의 내용과 디자인을 형성하며, 웹 개발에서는 이러한 리소스들을 효과적으로 관리하여 웹 페이지의 성능을 향상시키는 것이 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bHimQT/btsEyt2qmj3/rzETnp93HWc8IF5x32WnPK/img.png)
실습을 통해 익히기 https://dreamhack.io/wargame/challenges/75/ web-ssrf flask로 작성된 image viewer 서비스 입니다. SSRF 취약점을 이용해 플래그를 획득하세요. 플래그는 /app/flag.txt에 있습니다. 문제 수정 내역 2023.07.17 css, html 제공 Reference Server-side Basic dreamhack.io url 입력창에 나와있는 경로대로 버튼 클릭했더니 위와 같이 나옴 1) 코드 분석 /img_viewer @app.route("/img_viewer", methods=["GET", "POST"]) # Flask 애플리케이션에서 /img_viwer 경로로 들어오는 GET 및 POST 요청을 처리하는 라우트를 정의 d..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/0qzgq/btsEonDdnSV/ok8Ytpo0kT4c0nWp5l4Lm1/img.png)
HTTP 요청을 전송하는 라이브러리를 제공-> HTTP 요청을 보낼 클라이언트뿐만 아니라 서버와 서버간 통신을 위해 사용됨. 다른 웹 애플리케이션에 존재하는 리소스를 사용하기 위한 목적으로 통신 ex) 마이크로서비스 간 통신, 외부 API 호출, 외부 웹 리소스 다운로드 등 PHP -> php-curl NodeJS -> http 파이썬 -> urlib, requests 관리 및 코드의 복잡도를 낮추기 위해 마이크로서비스들로 웹 서비스 구현 마이크로서비스는 주로 HTTP, GRPC 등을 사용해 API 통신함 💡마이크로서비스란? 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식. 이러한 서비스는 독립적인 소규모..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Tp2dh/btsEonXo6sz/k6l5GxE6y0YxBlkZTtBm81/img.png)
실습을 통해 개념 익히기(로드맵 강의자료 정리) https://dreamhack.io/wargame/challenges/38/ image-storage php로 작성된 파일 저장 서비스입니다. 파일 업로드 취약점을 이용해 플래그를 획득하세요. 플래그는 /flag.txt에 있습니다. Reference Server-side Basic dreamhack.io 1) 코드 분석 1-1. index.php Home List Upload ▶️ list.php와 upload.php로 이동하는 메뉴 출력 1-2. list.php ▶️ 이용자가 업로드한 파일을 uploads 폴더에 복사하며, 이용자는 http://host1.dreamhack.games:[PORT]/uploads/[FILENAME] URL을 을 통해 접근가..