Web,Mobile 14

Burp Suite에서 Custom 필터링: Bambdas 사용하기

Burp Suite의 History 및 Logger 탭에서는 다양한 필터링 기능을 제공하지만, 문자열 검색 범위를 response로 제한하거나, 특정 헤더가 포함된 request로 필터링하고 싶을 때 아쉬운 부분이 있다.이런 경우에 유용한 기능이 Bambdas. Fiddler Classic의 커스텀 스크립트와 같이 정교한 필터링을 구현이 가능하다. Bambdas 예시Proxy > HTTP history > Filter settings에서 Bambda mode 를 선택하면 커스텀 필터를 작성할 수 있다. Montoya API를 기반으로 작성하고, 메소드 등은 공식 홈페이지 문서 페이지에서 확인 가능하다. 예시로 response에서만 특정 문자열을 검색하려면 다음과 같은 코드를 작성할 수 있다. if (re..

Web,Mobile/Tool 2024.06.20

eval()과 Function 생성자의 Scope

eval을 절대 사용하지 말 것! eval() - JavaScript | MDN**eval()**은 문자로 표현된 JavaScript 코드를 실행하는 함수입니다.developer.mozilla.org eval()은 인자로 받은 코드를 caller의 권한으로 수행하는 위험한 함수입니다. Function으로는 실현할 수 없는 공격이 가능합니다. 라고 작성되어있는데 정확히 이게 무슨 소린가 싶다. 그래서 좀 찾아봤다. 자바스크립트에는 스코프(Scope)라는게 있는데 전역 스코프, 블록 스코프, 함수 스코프가 존재한다. JavaScript ScopeW3Schools offers free online tutorials, references and exercises in all the major languages ..

Web,Mobile/Tech 2024.01.12

String, Number형 변수를 이용한 XSS Bypass

1. 문제 사용자의 입력 값을 script 태그 안의 변수에 선언하는 경우가 있다. // Request https://test_page.xyz/test?code=CODE&mode=ACD&value=test&count=1&dept=0&name=%ED%85%8C%EC%8A%A4%ED%8A%B8 // Response 필터링이 미흡할 경우 사용자 입력 값에 악의적인 스크립트를 넣어 실행할 수 있다. 그래서 필터링을 적용해보았다. 탐지하는 문자는 다음과 같고 탐지하는 문자를 사용 시 페이지 자체가 차단되도록 했다. ' " ` %0d %0a ; %20 () [] {} . + - string href concat document script alert confirm prompt console.log eval ..

Web,Mobile/Tech 2023.08.08

JSFuck과 Function 객체 생성자를 이용한 XSS Bypass

0. 서론 스크립트 태그 영역 안에서 별도의 태그나 이벤트 핸들러를 사용하지 않고 XSS 취약점을 터트리는 경우 서버에서 XSS 스크립트 실행에 사용해야 할 함수(여기서는 'alert' 를 예시로 든다.) 값 자체를 필터링하고 있다면 이를 우회하기가 쉽지가 않다. 필터링되어 있지 않은 비슷한 함수 confirm, prompt 등으로 대체하거나 서비스 자체의 필터링을 이용한 방법*을 이용하는게 아니라면 alert 자체를 우회하긴 어렵다. * 페이지를 불러오기 전 백엔드에서 "abc"를 공백으로 치환하는 서비스 자체의 시큐어코딩이 되어있을 경우 "alabcert"를 입력하여 우회 등등 그러나 해당 스크립트를 문자열을 실행할 수 있다면 이런 제한에서 비교적 자유로워 질 수 있다. 우회 예시 => 문자열 합치기..

Web,Mobile/Tech 2023.07.19

XSS Bypass in window.location

사용자의 입력 값이 window.location의 속성이나 메소드에 반영되는 서비스들이 종종 있다. 보통 XSS가 발생하는 공격 벡터인데 XSS 방지를 위해 싱글쿼터 또는 더블쿼터를 escape 처리를 해두기도 한다. 이것은 간단한 페이로드로 우회가 가능하다. 사용자의 입력 값이 javascript 단의 location.href 속성 값에 반영된다고 가정. - https://test.com?url=test';alert(1)// 싱글쿼터가 escape처리되어 원하는 스크립트 실행이 힘들어 보인다. - https://test.com?url=javascript:alert(1) 싱글쿼터 혹은 더블쿼터 escape 우회없이 스크립트 실행이 가능하다. window.location.href 속성 외 일부 메소드에서도..

Web,Mobile/Tech 2022.05.03

Log4shell(CVE-2021-44228) + JNDI Injection

- log4shell log4j는 자바 로깅 프레임워크 중 하나인데 넘겨받은 값을 문자열 그대로 저장하는 것이 아니라 lookups 기능에서 해석할 수 있는 형태면 해당 문자열을 실행한다. CVE-2021-44228에서는 JNDI Lookup을 이용해서 공격자의 서버에 있는 악성 페이로드를 요청한다. - JNDI Injection 피해자의 서버에 익스플로잇을 하기 위해 사용하는 JNDI Injection도 이해할 필요가 있다. 공격자의 LDAP(또는 rmi) 서버에서 JNDI Naming Reference를 반환하고 피해자의 서버는 Reference Object의 Codebase URL이 가르키는 신뢰되지 않는 악성 클래스 파일을 인스턴스화한다. (log4shell exploit flow 참조) 위 JN..

Web,Mobile/Tech 2021.12.17

[Vulhub] 설치 및 실행 방법

1. 개요 1-day 취약점 분석 시 취약한 버전의 어플리케이션, 환경설정 등이 구성되어야 함. Vulhub는 docker를 이용하여 환경 구성의 번거로움을 해결해준다. 해당 문서는 Vulhub 를 이용해 취약점 환경 테스트를 구성하는 방법을 기술한다. 단, Vulhub는 모든 CVE를 지원하지는 않음. 2. Vulhub 설치 1) 가상머신 설치(optional) Ubuntu 64bit iso 설치 (link) VMWare Workstation 설치 (link) VMWare에 Ubuntu 설치 2) docker, docker-compose 설치 terminal 실행 관리자 권한 상승 limelee@ubuntu:~$ sudo su [sudo] password for limelee: root@ubuntu:/..

Web,Mobile/Tool 2021.09.01

[Burp Suite] 업데이트 후 Render 기능 사용 시 Embedded browser initialization failed 에러

버프스위트 커뮤니티를 쓰다 어느 순간 Render 기능을 사용할 수 없게 되었다. 오른쪽 상단에 업데이트 메시지창을 보고 업데이트 했던 게 의심스럽다. 증상은 Embedded browser initialization failed 라는 에러 메시지가 출력된다. 자세한 에러 메시지가 필요할 듯 하다. Help > Embedded Browser Health Check 에서 확인 가능하다. manifest.properties 파일이 없다고 한다. 그래서 해당 디렉터리로 이동하려고 했더니 이동이 안된다. 뭔가 싶어 디렉터리를 하나하나 따라가니 manifest.properties 파일이 있는 디렉터리 명이 변경되었다. 90.0.4430.212을 91.0.4472.101로 변경해준 뒤 버프스위트를 재실행했다. 디렉터..

Web,Mobile/Tool 2021.06.23

[Python] requests 라이브러리 프록시 툴로 패킷 캡쳐하기

Python version 3.9.4 Package 'requests' version 2.25.1 예전엔 알아서 패킷을 잡았던 거 같은데 최근에 다시 돌리려 하니 프록시 설정을 킨 상태에서 요청하면 에러가 발생한다. 기존 GET 방식으로 요청 보내는 코드 import requests URL = 'https://limelee.xyz' res = requests.get(URL) print(res) 실행 시 이렇게 오류가 난다. 그래서 proxies 옵션을 추가해주었다. import requests proxies = {'http' : 'http://127.0.0.1:8080', 'https' : 'http://127.0.0.1:8080'} URL = 'https://limelee.xyz' res = reque..

Web,Mobile/Tool 2021.04.19