보안 74

[SQL Injection #1] Simple Injection, Blind Injection

SQL InjectionDBMS의 SQL 쿼리에 임의의 입력값을 넣어 쿼리를 조작하여, 인증을 우회하거나 데이터베이스 정보를 유출하는 공격- SQL을 이해하고 있다면, 모든 RDBMS에 대해 SQL Injection 가능SQLDBMS에 데이터를 질의하는 언어Injection이용자의 악의적인 입력값이 애플리케이션의 처리 과정에서 구조나 문법적인 데이터로 해석되어 발생하는 취약점 예시 상황웹 서비스 내에,로그인을 위해 아이디와 비밀번호를 입력받고, 이를 DBMS에 조회하기 위한 쿼리에 포함하여 쿼리를 실행하는 페이지가 있다 하자.  이때 user_table은 아래와 같다. 정상적인 쿼리아이디와 비밀번호 칸에 정상적으로 각각 dreamhack, password를 입력하면 쿼리는 아래와 같이 생성된다. 쿼리 설..

보안/웹 보안 2024.06.08

[Cross Site Request Forgery (CSRF)]

CSRF는 임의 이용자의 권한으로 임의 주소에 HTTP 요청을 보낼 수 있는 클라이언트 측 취약점이다.  웹 서비스 예시 소스 코드이용자로부터 예금주와 금액을 입력받고 송금을 수행한다. 이때 계좌 비밀번호, OTP 등을 사용하지 않기 때문에,로그인한 이용자는 추가 인증 정보 없이 해당 기능을 이용할 수 있다. 송금 요청이 담긴 request는 아래와 같다.  1.attacker는 페이지에 악성 스크립트를 심고, 여기에 victim(정상 이용자)이 접속하도록 / 값을 입력하도록 유도한다.  eg) 악성 스크립트가 담긴 글을 게시판에 작성 악성 스크립트: HTTP request를 보내는 코드- HTML 또는 Javascript를 통해 작성할 수 있음 HTML을 통한 공격 코드 예시태그를 사용해 HTTP 요청..

보안/웹 보안 2024.06.08

[Cross-Site-Scripting (XSS)]

💡XSS- 클라이언트 사이드 취약점 - 영향: 공격할 사이트의 오리진에서 스크립트를 실행시킴 - 과정공격자: 게시글 작성을 통해 웹 리소스에 오리진 권한으로 악성 스크립트를 삽입하고, 이 페이지에 피해자가 접속하도록 유도피해자: 웹 브라우저는 해당 페이지에 방문하면 본래 사이트가 명령한 것으로 해석하여 악성 스크립트 실행(웹 브라우저는 HTTP 형식으로 웹 서버에 리소스를 요청하고,서버로부터 받은 응답(HTML, CSS, JS 등의 웹 리소스)를 시각화하여 피해자에게 보여줌이 과정에서 변조된 페이지를 보거나 스크립트가 실행됨)공격자: 특정 계정의 쿠키 및 세션 정보를 탈취하고, 해당 계정으로 임의의 기능을 수행 - 자바스크립트 많이 이용됨:자바스크립트는 웹 문서의 동작(버튼 클릭 시, 데이터 입력 시에..

보안/웹 보안 2024.06.08

[Heartbleed Attack] TLS Record Protocol, Heartbeat Protocol, Heartbleed Attack

TLS▶TLS layer• Application layer→TLS: unprotected data 전송됨• TLS: handles encryption, decryption, integrity checks 수행• TLS→Transport layer: protected data 전송됨 ▶TLS Record ProtocolTLS handshake가 끝나면 client와 server는 header와 payload로 구성된 record를 이용해 데이터를 교환한다. Record Sending Data Receiving Data ▶Hearbeat protocol in OpenSSLclient와 server가 일정 기간 이상 서로에게 데이터를 보내지 않으면 통신을 막음으로써,TLS의 keep-alive feature을..

[Cache Side-channel Attacks] Cache, Flush+Reload, Prime+Probe, Countermeasure

배경지식: Cache Locality: 프로그램이 실행되는 동안 주소 공간의 일부분만을 집중적으로 접근하는 경향▶Temporal locality: 최근에 access된 것은 곧 다시 access될 확률이 높다- 따라서 최근에 접근된 데이터를 프로세서 가까이에 유지하면 성능 향상됨 eg. 반복문 안에서는 동일한 명령어가 반복적으로 실행되기 때문에, 해당 명령어는 다시 접근될 확률이 높다.▶Spatial locality: 최근에 access된 것 가까이에 있는 것은 곧 access될 확률이 높다 메모리의 연속적인 주소 공간이 자주 함께 사용되는 경우가 많기 때문 - 따라서 연속된 데이터 블록을 메모리의 상위 수준으로 옮기면 성능 향상됨eg. 배열은 메모리에 연속적으로 저장되며, 배열의 요소들이 순차적으로 접..

[Shellshock attack] environment variable, bash, parse_and_execute()

Shell function을 child process에게 전달하는 방법▶Shell function 예시 ▶방법 1. parent shell에서 "함수" 형태를 가진 환경 변수를 정의한다.(정말 함수로서 정의됐는지 보려고 declare -f로 확인해 보았을때 정상적으로 함수 코드가 보이며, 함수를 실행하면 제대로 작동한다.) 이제 export -f로 함수를 export하고, child shell을 실행하면, child shell은 함수를 잘 전달받았다. (정말 잘 전달받은지 보려고 다시 declare -f로 확인해 보았을 때 정상적으로 함수 코드가 보이며,함수를 실행하면 제대로 작동함) ▶방법 2.parent에서 (이 방법에서는 parent가 꼭 shell이 아니어도 된다.) 단순히 "string" 형태의..

[System Hacking] fho ㅡ Hook overwrite

Hook Overwrite란 malloc, free, realloc 함수는 각각 훅 변수가 존재하며,이 함수들은 시작할 때 해당 훅 변수가 존재하는지 검사하고, 존재하면 이를 호출한다.이때, 이 변수들은 libc의 bss 섹션에 위치하여 쓰기 가능하므로, 실행 중에 덮어쓰는 것이 가능하며,이에 성공하면, malloc/free/realloc 함수를 호출할 때 조작되어버린 훅을 호출하여, 조작된 주소로 jump하게 되므로, 실행 흐름이 조작되는 것이다.게다가, 훅을 실행할 때는 기존 malloc/free/realloc 함수에 전달한 인자를 같이 전달해 주기 때문에,   예를 들어 __malloc_hook를 system 함수의 주소로 덮고, malloc(“/bin/sh”) 을 호출하면,"/bin/sh"이 sy..

보안/Wargame 2024.05.17