본문 바로가기

Security

(80)
[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..
[Webhacking] server-side basic 서버에서는 사용자가 요청 한 데이터를 해석하고 처리한 후 사용자에게 응답함. 그 과정에서 웹 어플리케이션이나 데이터베이스와 같은 서버의 자원을 사용해 처리하기도 함. 이 과정에서 사용자의 요청 데이터에 의해 발생하는 취약점을 서버 사이드 취약점이라고 함. nc나 telnet과 같은 네트워크 프로그램을 통해 브라우저에서는 조작하지 못하는 메소드나 요청 헤더를 조작할 수 있음. $ echo -ne "POST /index.html HTTP/1.1\r\nHost: example.com\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\nfoo=bar&hello=world" | nc example.com 80 HTTP/1.1 200 OK Content-Lengt..
[Webhacking] click jacking Click jacking은 웹 브라우저 화면에 출력되는 내용에 HTML, CSS , JS등과 같이 화면 출력에 영향을 미치는 요소들을 이용하여 사용자의 눈을 속여 사용자의 클릭을 유도하는 공격 방법. 외부 페이지 리소스를 불러올 수 있는 태그 엘리먼트 (, , , , )를 사용. 사용자 클릭을 유도하는 페이지 구성 후에 그 페이지 위에 iframe등의 태그로 누르게 할 페이지를 로드. 그리고 CSS opacity(투명도 조절) 등의 방법을 통해 숨겨놓음. iframe 태그가 웹 브라우상에서 더 앞에 위치. ex ) 광고 끄기 버튼 앞으로 송금 버튼 iframe으로 숨겨놓음. Mitigation 부모 페이지의 URL을 제한 X-Frame-Options HTTP 응답 헤더를 통해 DENY, SAMEORIGI..
[Webhacking] open redirect Redirect(리다이렉트)는 사용자의 Location(위치)를 이동시키기 위해 사용하는 기능 중 하나. 이동하는 주소가 공격자에 의해 변조될 경우 오픈 리다이렉트 취약점이 발생. 피싱 사이트로 접속을 유도할 수 있음. Mitigation 허용된 주소에 대해서만 이동하게끔 함. from urllib.parse import urlparse from flask import Flask, request, redirect app = Flask(__name__) @app.route('/redirect') def index(): userUrl = request.args.get('url') parseResult = urlparse(userUrl) if parseResult.scheme in ['http', 'https..
[Webhacking] CSRF (cross site request forgery) 웹 브라우저는 기본적으로 Same Origin Policy에 위반되지 않은 모든 요청에 쿠키 포함해 전송함. 비정상적으로 사용자의 의도와 무관하게 다른 사이트에 HTTP 요청 보내는 것을 CSRF 공격이라 한다. CSRF 공격을 통해 공격자는 해당 세션 쿠키를 가진 사람만 사용할 수 있는 기능을 요청할 수 있음. 권한을 갖고 있는 사용자가 의도하지 않은 요청을 보내서 이득취할 수 있음. 금액을 송금하게 하기. 사용자 패스워드를 변경하기. 관리자 권한으로 공지사항 작성. CSRF 공격을 위한 두 가지 조건 해당 웹 사이트가 쿠키를 이용한 인증 방식을 사용. (세션 아이디가 쿠키에 저장) 공격자가 사전에 사전에 알 수 없는 파라미터가 존재해서는 안됨. 자동 입력 방지 문자를 넣어야 하는 요청은 공격자가 미리..
[Webhacking] XSS (cross site scripting) 서버의 응답에 공격자가 삽입한 악성 스크립트가 포함되어 사용자의 웹 브라우저에서 해당 스크립트가 실행되는 취약점. 임의의 악성 스크립트를 실행할 수 있으며 이를 통해 해당 웹 사이트의 사용자 쿠키 또는 세션을 탈취해 사용자 권한 얻거나 페이지 조작이 가능. XSS를 수행하기 위한 조건. 입력 데이터에 대한 충분한 검증 과정이 없어야 한다. (악성 스크립트가 삽입될 수 있어야 함.) 서버의 응답데이터가 웹 브라우저 내 페이지에 출력 시 충분한 검증 과정이 없어야 한다. (응답 데이터 출력 시 악성 스크립트가 웹 브라우저 렌더링 과정에 성공적으로 포함되어야 함.) XSS with JS Javascript(자바스크립트)는 사용자의 웹 브라우저에서 화면을 동적으로 보여줄 수 있도록 자동으로 버튼을 누르거나 화면..
[Webhacking] client-side basic 보호되어 있는 글입니다.
[wargame] strcmp http://wargame.kr:8080/strcmp/ php strcmp()의 취약점 인자로 배열이 들어온 경우 NULL을 반환 NULL== 0은 두 비교 인자가 같다는 True로 처리되어 인증 우회됨. HTML input element는 name에 의해 array-ready php 같은 경우 name에 배열 값을 주면 $_POST['education'] Please enter your most recent education Please enter any previous education Please enter any previous education 같은 name의 여러 input value를 배열로 받아올 수 있음. https://stackoverflow.com/questions/4688880/ht..