전체 글 (1196) 썸네일형 리스트형 [Webhacking] PHP PHP - Include # short echo tag; php코드의 결과가 출력됩니다. 위와 같은 구문은 php 구문으로 해석됨. include 함수는 인자로 전달된 파일을 읽은 후 해당 파일의 내용을 출력함. 소스 구성이 위와 같을 때, /index.php?page=register.php 로 요청하면 register.php 로드해 보여줄 수 있음. include 는 파일에 php 코드가 있다면 파일 확장자와 상관없이 php코드가 실행됨. include 파일 조작 가능하다면 /index.php?page=/etc/passwd 과 같이 요청하여 서버 내 정보 출력 가능. 서버 로컬 파일을 include하는 취약점 => Local File Inclusion (LFI) 외부 자원을 include하는 취약점 =.. [Webhacking] language specific vulnerability 언어만의 특성, 함수에서 발생할 수 있는 취약점에 대해 다룸. Common 웹 어플리케이션 언어에서 공통적으로 조심해야 하는 함수 및 패턴 eval : 인자로 들어온 string을 그대로 실행시키는 함수. x를 인자로 받아 eval 인풋으로 주는 경우, 프로그램 코드로 실행가능. x = str(input(">> input some text for mathematical expression : ") print eval(x) >> input some text for mathematical expression: __import__('os').system('ls /') ApplicationsVolumeshometmp Developerbininstaller.failurerequestsusr Librarycores.. [Webhacking] business logic vulnerability Business logic은 규칙에 따라데이터를 생성.표시.저장.변경하는 로직, 알고리즘 등을 말함. 비즈니스 로직 취약점은 서비스의 기능에서 적용되어야 할 로직이 없거나 잘못 설계된 경우 발생. Injection, File vulnerability는 악의적인 데이터가 서버의 시스템 상에서 악영향을 미치는 공격을 수행. 1. 사용자가 게시물 수정을 요청한다. 2. 로그인된 사용자인지 확인한다. 3. 수정을 요청한 사용자가 해당 게시물을 수정 할 수 있는 권한인지 확인한다. 4. 2,3번 과정이 확인되면 데이터베이스에 사용자가 입력한 정보로 수정한다 3번 과정 누락 시에 공격자가 다른 사용자의 게시물 수정 가능. Business Logic Vulnerability 어플리케이션의 검증 부재 또는 미흡의 이유.. [wargame] xss-2 https://dreamhack.io/wargame/challenges/268/writeups xss-2 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. Reference ClientSide: XSS dreamhack.io #!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver import urllib import os app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open("./flag.txt",.. [wargame] xss-1 https://dreamhack.io/wargame/challenges/28/ xss-1 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. Reference Client-side Basic dreamhack.io #!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver import urllib import os app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open("./flag.txt", "r").r.. [wargame] csrf-2 https://dreamhack.io/wargame/challenges/269/ csrf-2 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. CSRF 취약점을 이용해 플래그를 획득하세요. Reference Client-side Basic dreamhack.io #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for from selenium import webdriver import urllib import os app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open("./flag.txt",.. [Webhacking] file vulnerability 파일 업로드 / 다운로드 하는 기능에서 발생할 수 있는취약점들과 취약점으로부터 안전하게 구현할 수 있는 방법. 파일 업로드 취야점 서버의 파일 시스템에 사용자가 원하는 경로 또는 파일 명 등으로 업로드가 가능하여 악영향을 미칠 수 있는 파일이 업로드 되는 취약점 파일 다운로드 취약점 서버의 기능구현 상의도하지 않은파일을 다운로드할 수 있는 취약점 file upload code from flask import Flask, request app = Flask(__name__) @app.route('/fileUpload', methods = ['GET', 'POST']) def upload_file(): if request.method == 'POST': f = request.files['file'] f.sa.. [Webhacking] server side request forgery (SSRF) 웹 어플리케이션에서 사용자가 입력한 URL에 요청을 보내는 기능이 구현되어야 하는 경우도 존재. URL을 통해 사용자가 입력한 사진을 업로드하는 기능을 구현하면 사용자가 입력한 URL을 웹 어플리케이션에서 접근해야 함. CSRF와 차이점은 변조된 요청을 보내는 대상의 차이. CSRF는 변조된 요청을 웹 클라이언트(브라우저)가 보내며, SSRF는 웹 어플리케이션에서 보냄. 웹 어플리케이션에서 요청을 보내기 때문에 웹 어플리케이션이 작동하고 있는 포트, 서버와 연결된 내부망에 요청 보낼 수 있음 External from flask import Flask, render_template, request import requests from dreambank import imgcheckFunc, adminFunc.. [Webhacking] path traversal URL에서 해석되는 구분문자 / Path identifier .. Parent directory * /tmp/test/../1234 => /tmp/1234 ? Query identifier * ? 뒤는 query로 해석 # Fragment identifier * # 뒤의 값은 Server로 전달되지 않음 & Parameter separator * key1=value&key2=value... 형식으로 사용 내부 API가 Path variable로 입력 데이터를 받는 형태로 구현되어 URL의 Path로 데이터가 입력되는 경우도 존재. dream이라는 user의 정보를 가져오기 위해 http://internal.dreamhack.io/api/user/dream 이렇게 입력이 들어가기도 함. URL 구분문자 사.. [Webhacking] server side template injection (SSTI) 웹 어플리케이션에 동적인 내용을 HTML로 출력할때 미리 정의한 Template에 동적인 값을 넣어 출력하는 Template Engine을 사용하기도 함. 사용자 입력이 Template source에 들어가게 된다면 악의적인 입력으로 개발자가 의도하지 않은 임의의 Template 기능 실행 가능. 대부분의 Template Engine에서 {{2*3}}, ${2*3} 과 같은 문법을 지원. ... class Secret(object): def __init__(self, username, password): self.username = username self.password = password secret = Secret('admin', secret_password) ... @app.route('/boar.. [Webhacking] Command Injection 웹 어플리케이션은 OS Command를 위한 PHP(system), Node JS(child_process), Python(os.system)과 같은 함수가 존재. 일반적으로 웹 어플리케이션에서 OS Command를 사용하는 이유는 이미 기능을 구현한 OS 실행 파일이 존재할 때 코드 상에서 다시 구현하지 않고 이를 실행하면 더 편리하기 때문. OS Command는 내부적으로 shell 사용하고, shell은 한 줄에 여러 명령어를 실행하는 특수 문자가 존재. 만약 사용자가 OS Command의 입력 값을 검증하지 않고 함수의 인자로 전달 시에 특수 문자를 통해 사용자가 원하는 명령어를 함께 실행 가능. `` 명령어 치환 ``안에 들어있는 명령어를 실행한 결과로 치환됩니다. $ echo `echo the.. [Webhacking] SQL Injection 사용자의 입력 값이 어플리케이션의 처리 과정에서 구조나 문법적인 데이터로 해석돼 발생하는 취약점. SQL Injection SQL을 사용할 때 공격자의 값이 정상적인 요청에 영향을 주는 취약점 Command Injection OS Command를 사용 시 사용자의 입력 데이터에 의해 실행되는 Command를 변조할 수 있는 취약점. Server Side Template Injection (SSTI) 템플릿 변환 도중 사용자의 입력 데이터가 템플릿으로 사용돼 발생하는 취약점 Path Traversal (순회) URL / File Path 사용 시 사용자의 입력 데이터에 의해 임의의 경로에 접근하는 취약점. Server Side Request Forgery (SSRF) 서버에 위조된 요청 보내는 취약점 SQ.. 이전 1 ··· 3 4 5 6 7 8 9 ··· 100 다음