본문 바로가기

분류 전체보기322

Laravel SQL Injection ( Version < 5.8.11) 개요 Laravel Framework는 SELECT Query에서 사용할 Columns을 입력 값을 통해 지정할 수 있습니다. JSON Data의 경우 addSelect() 함수를 통하여 빠르게 변환할 수 있으며, addSelect() 함수는 json_extract() 함수로 변환되어 쿼리에 사용됩니다. Blog::query() ->addSelect('title->en'); SELECT json_extract(`title`, '$."en"') FROM blogs; 분석 addSelect() 함수의 변환 과정에서는 Escape 되지 않기 때문에 SQL Injeciton 취약점이 발생할 수 있습니다. 만약 title->en 데이터 부분에 '#를 추가할 수 있다면 공격자가 직접 json_extract 함수를 .. 2020. 9. 22.
Laravel Framework 보안 관련 내용 정리 보안 관련 내용 Public 디렉토리 노출 최소화 및 설정 파일 숨김 기존의 PHP 웹 애플리케이션들은 구동에 필요한 설정 파일을 웹 서버에 위치 시키거나 절대 경로로 읽어들이는 경우가 많았습니다. 라라벨의 경우 구동에 필요한 설정 파일을 DocumentRoot와 격리하였고, php 직접 호출이 아닌 애플리케이션 라우팅을 통해 서비스를 제공하도록 설계되었으며, public 디렉토리에 단 하나의 PHP 파일만 존재함으로써 public 디렉토리와 설정 파일의 노출 및 .php 파일 직접 호출을 통한 공격 발생 가능성을 최소화 하였습니다. public 디렉토리 (Laravel Korea 설명) public 디렉토리는 애플리케이션에 진입하는 모든 request-요청들에 대한 진입점 역할과 오토로딩을 설정하는 i.. 2020. 9. 22.
Reflected File Download 개요 사용자의 입력 데이터가 다운로드 되는 파일에 영향을 줄 경우, 이를 이용하여 정상적인 파일을 악성 파일로 변경하여 다운로드 하게 할 수 있습니다. 해당 취약점이 발생하기 위해서는 3가지의 조건이 필요합니다. 1. 파일 다운로드 Content-Disposition 헤더가 attachment로 구성되면 응답 데이터를 첨부파일로 다운로드 받을 수 있습니다. 2. 실행 가능한 확장자 및 파일 명 변경 필요 파일을 실행하는 클라이언트 측에서 실행 가능한 확장자로 다운로드 받을 수 있어야 합니다. 3. 사용자 입력 값 응답 데이터 반영 입력 값이 응답 데이터에 반영될 때 시스템 명령어를 통해 악성 코드를 생성할 수 있습니다. Windows Command의 경우 "", "\" 모두 문자열을 닫은 것으로 인식한다.. 2020. 9. 22.
Phar 파일을 이용한 PHP Unserialization 개요 Phar(PHP Archive)는 많은 코드 파일 및 기타 리소스를 단일 아카이브 파일로 사용할 수 있는 패키지 형식입니다. Phar는 Stub, Manifest, File Contents, Signature(Optional) 총 4개의 구조로 이뤄지며, Signature을 제외한 나머지 구조에 대한 설명은 다음과 같습니다. Stub 가 존재해야만 Phar 파일로 인식합니다. Manifest Phar 파일의 Meta-Data가 포함되어 있으며, 모든 직렬화 된 객체가 포함될 수 있습니다. 해당 구조에서 역직렬화 취약점이 발생합니다. File Contents Phar 내 데이터 영역입니다. 직렬화 된 Meta-Data는 Phar:// Stream Wrapper에 의해 처음 액세스될 때 역직렬화 되며,.. 2020. 9. 22.
Frida Cheat Sheet 공통 Frida attach Code import frida, sys def on_message(message, data): if message['type'] == 'send': payload = message['payload'] print(payload) print("") else: print(message) jscode = """ """ try: target = "" process = frida.get_usb_device(timeout=5).attach(target) script = process.create_script(jscode) script.on("message", on_message) script.load() sys.stdin.read() except Exception as e: print(.. 2020. 9. 21.
안드로이드 솔루션 별 Library(.so) 파일 안드로이드 솔루션 별 라이브러리 파일 표 라이브러리 명 솔루션 명 libm0vie.so 라인 에어​ 보호 솔루션 libcovault-appsec.so, (/libcovault-[A-Za-z0-9]{2,10}\.so/) 앱씰링 assets/classes.sox, libcompatible.so 잉카 앱가드 libdxbase.so DxShield libNSaferJNI.so NSHC 회사 관련 솔루션 assets/ijiami.dat ijiami assets/ATG_E.sec, libATG_L.so G-Presto libncgm.so , libncgp.so NCGuard libgabriel.so Xigncode libbmt.so blackmod libandroidrepublic.so 안드로이드 리퍼블릭 2020. 9. 21.
Python Offline Package Install 사용법 1. 먼저 다운로드 받을 폴더에서 pip download [Package Name] 명령어를 입력해줍니다. pip download requests 2. 해당 폴더에 의존성 패키지가 포함된 파일이 다운로드 된 것을 확인할 수 있습니다. 3. 해당 파일을 다운로드 할 피씨로 옮긴 뒤 pip install --no-index --find-links=[PATH] [Package Name] 명령어로 패캐지를 정상적으로 설치할 수 있습니다. pip install --no-index --find-links=. requests 2020. 9. 21.
Printer Hacking 프린터 프로토콜 보통 프린터들이 사용하는 프로토콜로는 RAW, IPP, LPD, SMB 등이 존재합니다. 다소 생소한 RAW, LPD, IPP에 대하여 간단히 알아보겠습니다. RAW JetDirect, AppSocket, PDL-DataSream이라고도 불리며 9100/TCP 포트를 사용하고 있습니다. 프린터에서 사용되는 가장 간단하고 빠르며, 일반적으로 신뢰할 수 있는 프로토콜로 간주되기 때문에 네트워크 프린터와 통신하기 위해 사용되는 기본방식 입니다. LPD lpr 명령어를 사용하여 액세스할 수 있으며, 515/TCP 포트를 사용하고 있습니다. 인쇄를 하기 위해서 클라이언트는 작업/사용자이름을 정의하는 제어 파일과 인쇄할 실제 데이터가 포함된 데이터 파일을 전송합니다. 인쇄 데이터를 처리하는 방법은 .. 2020. 9. 21.
Windows에서 Metasploit 설치 설치방법 1. Metasploit에서 Download 버튼을 클릭한 뒤 Windows용 버전을 다운로드 받습니다. 2. msi 파일을 이용하여 Metasploit Framework를 설치합니다. (설치되는 metasploit-framework 폴더를 백신에서 바이러스로 잡기 때문에 예외처리 필요) 3. C:\metasploit-framework\bin 폴더에서 msfconsole.bat을 실행하면 Windows에서도 Metasploit을 정상적으로 이용할 수 있습니다. Reference https://www.metasploit.com/ https://github.com/rapid7/metasploit-framework/wiki/Nightly-Installers 2020. 9. 21.