분류 전체보기 74

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

Github Actions로 push 이벤트 발생 시 내 서버로 배포 자동화하기

Github에 만든 리포지토리를 보면 Actions라는 탭이 존재한다. Github Actions은 CI/CD 플랫폼으로 빌드, 테스트, 배포 등을 자동화할 수 있다. 공식 문서 이 Actions 기능을 이용해 브랜치에 push하는 이벤트가 발생할 경우, 설정해 놓은 서버에 배포하는 작업을 자동화해보기로 한다. workflow 파일의 Syntax 문서 를 참고하여 작성 Workflow syntax for GitHub Actions - GitHub Docs A workflow is a configurable automated process made up of one or more jobs. You must create a YAML file to define your workflow configuration..

Server 2023.09.05

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

Raspberry Pi 3 안전하게 종료하기

라즈베리파이는 전원 소켓에 플러그를 꼽으면 바로 부팅이 되게 된다. 그렇다면 종료를 할 땐 전원 소켓을 뽑으면 되는건가? 하고 뽑게 되면 최악의 경우 부트 영역이 손상되어 부팅이 되지 않는 경우가 발생한다. reboot 명령어와 동일하게 안전하게 종료하는 명령어가 있다. $ sudo poweroff 반드시 해당 명령어를 통해 종료하도록 하자. 서버를 이전 다해놓고 '아 이제 기존 서버 뽑고 서랍에 넣어놔야지' 하고 뽑았다가 주말 내내 작업하던거 다 날려버렸다. 기존 라즈베리파이도 자주 플러그를 바로 뽑아 종료하곤 했는데 운이 좋았나보다.

Raspberry Pi 2023.04.17

Raspberry Pi 3 메일서버(sendmail) 구축

간단한 메일서버를 구축해보고자 한다. 아래 명령어를 통해 sendmail을 설치한다. apt-get install sendmail sendmail-cf sendmail 설치 도중 "Creating SSL certificates for sendmail."이라는 부분에서 아무리 기다려도 진행이 안되면 Ctrl+C를 통해 설치를 중단한 뒤 아래 명령어를 실행한다. cd /etc/mail/tls sudo openssl dsaparam -out sendmail-common.prm 2048 sudo chown root:smmsp sendmail-common.prm sudo chmod 0640 sendmail-common.prm sudo dpkg --configure -a https://askubuntu.com/qu..

Raspberry Pi 2022.07.25

Raspberry Pi 3 하드디스크 마운트 및 파일 서버 구축

로컬이나 용량이 작은 여러 usb에 분산해서 저장해놓으니까 막상 원하는 파일이 어디에 있는지 몰라서 이 usb, 저 usb 뒤적거리다 결국은 못찾는 경우가 여럿있었다. 그래서 어차피 라즈베리파이는 웹 서버 때문에 24시간 구동도 하겠다. 파일서버 하나 구축하면 접근성도 쉽고 어떤 파일을 찾고 있는지도 용이할 것 같다. 라즈베리파이 3 에서 부팅을 위한 sd card는 아무래도 용량이 기대한 만큼 크지가 않기에 하드디스크를 하나 구매한 뒤 마운트 해서 사용해보자. 라즈베리파이 3는 이동을 자주하는게 아니므로 외장용 하드디스크 말고 그냥 일반 하드디스크를 구매했다. 용량은 4TB. SATA-USB 변환 케이블로 하드디스크에 전력 공급 및 라즈베리 파이에 연결 시켜줬다. $ sudo lsblk lsblk를 이..

Raspberry Pi 2022.05.27

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

아파치 HTTP 인증(Basic/Digest authentication) 적용

files 디렉토리는 HTTP 파일 서버를 위해 일부러 인덱싱이 허용되어있다. 이 중 test 디렉토리는 모두가 접근 가능하게 만들되, public(/home/Tools/)이라는 디렉토리는 접근 가능한 사용자를 제한하고 싶다. 이를 위해 아파치 HTTP 인증을 서버에 적용해보고자 한다. 1. HTTP 인증을 하고 싶은 디렉터리에 .htaccess 파일 생성 2. HTTP 인증 사용자 생성 Basic 인증을 사용할 시 1), Digest 인증을 사용할 시엔 2)을 수행한다. 1) Basic 인증 시 $ htpasswd -c .htpasswd [사용자 ID] 2) Digest 인증 시 $ htdigest -c .htdigest '[Auth Name]' [사용자 ID] 사용자 ID, 2번의 PW 입력 후 .h..

Server 2022.04.28