[IT@Security] Web 취약점 5. SQL Injection
·
Hacking/Web Hacking
SQL Injection이란? 사용자의 입력 값으로 웹 사이트 SQL 쿼리가 완성되는 약점을 이용하며, 입력 값을 변조하여 비정상적인 SQL 쿼리를 조합하거나 실행하는 공격을 말한다. 개발자가 생각지 못한 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작 가능하다. SQL Injection 점검 점검 내용 웹페이지 내 SQL 인젝션 취약점 존재 여부 점검 점검 목적 대화형 웹 사이트에 비정상적인 사용자 입력 값 허용을 차단하여 악의적인 데이터베이스 접근 및 조작을 방지하기 위함 점검 대상 웹 애플리케이션 소스코드, 웹 방화벽 1. 사용자 입력 값에 특수문자나 임의의 SQL 쿼리를 삽입하여 DB 에러 페이지가 반환되는지 확인 임이의 SQL 쿼리를 전달하여 DB 에러페이지가 반환되는지 확인했다. ..
[IT@Security] Web 취약점 4. 운영체제 명령 실행
·
Hacking/Web Hacking
운영체제 명령 실행이란? 적절한 검증절차를 거치지 않은 사용자 입력값이 운영체제 명령어의 일부 또는 전부로 구성되어 실행 되는 경우, 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 악영향을 미칠 수 있다. 일반적으로 명령어 라인의 파라미터나 스트림 입력 등 외부 입력을 사용하여 시스템 명령어를 생성하는 프로그램이 많이 있다. 하지만 이러한 경우 외부 입력 문자열은 신뢰할 수 없기 때문에 적절한 처리를 해주지 않으면, 공격자가 원하는 명령어 실행이 가능하게 된다. 운영체제 명령 실행 점검 점검 내용 웹 사이트 내 운영체제 명령 실행 취약점 존재 여부 점검 점검 목적 적절한 검증절차를 거치지 않은 사용자 입력 값에 의해 의도하지 않은 시스템 명령어가 실행되는 것을..
[IT@Security] Web 취약점 3. LDAP 인젝션
·
Hacking/Web Hacking
LDAP 인젝션이란? LDAP(Lightweight Directory Access Protocol) : 조직이나 기업에서 내부 자원(파일, 장치 등) 등의 위치를 찾고 조작할 수 있게 하는 소프트웨어 프로토콜 공격자가 외부 입력으로 의도하지 않은 LDAP 명령어를 수행할 수 있다. 응용 프로그램이 사용자 입력 값에 대한 적절한 필터링 및 유효성 검증을 하지 않아 공격자는 로컬 프록시를 사용함으로 LDAP 문의 변조가 가능하다. 공격 성공 시 승인되지 않은 쿼리에 권한을 부여하고, LDAP 트리 내의 내용 수정이나 임의의 명령 실행을 가능하게 하므로 적절한 필터링 로직을 구현하여야 한다. LDAP 인젝션 점검 점검 내용 웹페이지 내 LDAP 인젝션 취약점 점검 점검 목적 취약한 시스템에 신뢰할 수 없는 L..
[IT@Security] Web 취약점 2. 포맷 스트링
·
Hacking/Web Hacking
포맷 스트링이란? 외부로부터 입력된 값을 검증하지 않고 입·출력 함수의 포맷 문자열로 그대로 사용하는 경우 발생할 수 있는 보안 약점이다. 공격자는 포맷 문자열을 이용하여 취약한 프로세스를 공격하거나 메모리 내용을 읽거나 쓸 수 있다. 그 결과, 공격자는 취약한 프로세스의 권한을 취득하여 임의의 코드를 실행할 수 있다. 포맷 스트링의 종류에는 여러 가지가 있으며 그 중 C언어에서 일반적으로 변수를 입·출력문에서 일정한 형태로 받아들이거나 출력하기 위하여 사용하는 기호로는 다음과 같은 것들이 있다. 포맷 스트링 설명 %d 정수형 10진수 상수 %f 실수형 상수 %lf 실수형 상수 %c 문자값 %s 문자 스트링 %u 양의 정수(10진수) %o 양의 정수(8진수) %x 양의 정수(16진수) %n 쓰인 총 바이..
[IT@Security] Web 취약점 1. 버퍼 오버플로우
·
Hacking/Web Hacking
버퍼 오버플로우란? 버퍼 오버플로우 : 메모리에 할당된 버퍼의 양을 초과하는 데이터를 입력하여 프로그램의 복귀 주소(return address)를 조작하는 공격 버퍼(buffer) : 프로그램 처리 과정에 필요한 데이터가 일시적으로 저장되는 공간 메모리의 스택(stack) 영역과 힙(heap) 영역이 버퍼에 속하며 스택 오버플로우와 힙 오버플로우로 나누어진다. 하나의 프로그램은 수많은 서브 루틴들로 구성되는데 이런 서브 루틴이 프로그램에 의해 호출될 때, 함수 변수와 서브 루틴의 복귀 주소(return address) 포인터를 스택(stack)이라는 논리적 데이터 구조에 저장하게 된다. 스택은 실행중인 프로그램이 필요로 하는 정보를 저장하는 메모리 영역이다. 서브 루틴이 종료될 때 운영체제는 그것을 호출..
[IT@Security] 그누보드 5.0 리눅스 설치
·
Hacking/Web Hacking
그누보드를 리눅스에 설치하는 것이 파일 저장이든 테스트든 여러 모로 편할 것 같아서 로컬 환경에서 리눅스에 그누보드5 최초 정식 출시 버전을 다운로드 받았다. 잘못 건드리거나 악성코드 배포해도 스냅샷으로 돌릴 수 있으니까... 최초 정식 출시 버전을 다운받은 이유는 취약점이 많을 것 같아서 기본적으로 다음 글을 참고했다. https://ffoorreeuunn.tistory.com/289 [ Gnuboard ] Ubuntu 20.04 에서 그누보드 설치하기 (근데 망했어요) 우선 APM 부터 설치하도록 하겠습니다. 1. apache 설치하기 sudo apt install apache2 2. mysql 설치하기 sudo apt install mysql 3. php 설치하기 sudo apt install ph..
[파이썬 기초 암호 해킹] 서론
·
Hacking/Crypto
학습에 이용한 책은 '암호 해킹으로 배우는 파이썬의 기초' (알 스웨이가트 저, 신진철 역)이다. https://product.kyobobook.co.kr/detail/S000001804859 암호 해킹으로 배우는 파이썬의 기초 | 알 스웨이가트 - 교보문고 암호 해킹으로 배우는 파이썬의 기초 | 암호 해킹과 파이썬 코딩을 모두 맨땅에서 시작하는 책이다. 암호학도 파이썬도 모르는 사람뿐만 아니라, 프로그래밍 경험이 거의 없는 사람도 볼 수 있 product.kyobobook.co.kr 소스 코드 소스 코드는 https://nostarch.com/crackingcodes/ Cracking Codes with Python Cracking Codes with Python teaches you how to pr..
[Dreamhack] Cryptography STAGE 2 - 고전 암호와 현대 암호 : 현대 암호
·
Hacking/Crypto
서론 많은 고전 암호에서는 송신자와 수신자가 같은 키를 가지고 있어야 했다. 카이사르 암호에서는 두 사람이 알파벳을 미는 칸의 수를 공유하고 있어야 했고, 비제네르 암호에서는 키워드를 공유하고 있어야 했다. 이렇게 송신자와 수신자가 같은 키를 공유해야하는 암호 시스템을 대칭키 암호 시스템(Symmetric Key Cryptosystem)이라고 부른다. 같은 키를 갖고 있어야 하는 특성상, 대칭키 암호 시스템은 사전에 서로 키를 공유하는 과정이 반드시 필요하다. 그런데 현대에 많은 데이터가 오가는 네트워크는 도청에 매우 취약하므로 키를 평문으로 공유하기는 부적절하다. 그래서 학자들은 외부인이 키가 공유되는 과정을 도청해도, 공유되는 키는 알지 못하게 하는 키 공유 알고리즘(Key-Sharing Algori..
[Dreamhack] Cryptography STAGE 2 - 고전 암호와 현대 암호 : 고전 암호
·
Hacking/Crypto
서론 고전 암호는 컴퓨터와 같은 고성능 연산 장치가 발명되기 전에, 비교적 간단한 기계와 손 등으로 암복호화를 수행하던 암호를 말한다. 대부분 컴퓨터를 사용하면 쉽게 복호화되기 때문에 현대에는 사용되지 않는다. 고전 암호는 일반적으로 치환(Substitution)과 전치(Transposition)의 방법으로 설계된다. 치환은 평문의 문자를 다른 문자로 바꾸는 것을 말하며, 전치는 평문 문자들의 위치를 바꾸는 것을 말한다. 단순한 고전 암호는 한 가지 원리만을 사용하는 치환 암호(Substitution Cipher) 또는 전치 암호(Transposition Cipher)이고, 복잡한 고전 암호는 두 원리를 모두 사용한다. 치환 암호는 단일 문자 치환 암호(Monoalphabetic Substitution ..
[Docker] Docker 입문수업 - 5. 네트워크
·
카테고리 없음
도커로 동작하는 많은 소프트웨어들이 네트워크를 사용하기 때문에 도커를 사용하기 위해서는 네트워크에 대한 지식이 있어야 한다. 선수강의 WEB1 https://youtube.com/playlist?list=PLuHgQVnccGMDZP7FJ_ZsUrdCGH68ppvPb WEB1- HTML & Internet www.youtube.com Home server https://youtube.com/playlist?list=PLuHgQVnccGMA52uRBmSwqcvtI5IMoFclJ WEB2-Home server www.youtube.com 웹 서버를 사용하기 위해서는 웹 브라우저가 설치된 컴퓨터와 웹 서버가 설치된 컴퓨터, 총 2대가 필요하다. 웹 페이지를 파일로 만들어서 저장 장치의 특정 디렉토리에 위치시켜야..
[Docker] Docker 입문수업 - 4. 컨테이너 run
·
카테고리 없음
1. Docker Desktop docker desktop에서 httpd 이미지에 마우스를 올리면 오른쪽에 run 버튼이 생긴다. 이때 run 버튼을 눌러 그냥 만들어도 되겠지만 이름 등의 정보를 지정하여 저장하면 더욱 정리하기 용이하다. 이름을 ws1으로 지정한 뒤에 run을 누르면 이름대로 컨테이너를 만들 수 있고, 컨테이너를 클릭해서 컨테이너에서 실행되는 로그를 확인할 수 있다. 실행되는 컨테이너는 stop 명령어를 통해 끌 수 있고, sratr 명령어로 시작할 수 있으며 delete 명령어로 컨테이너를 삭제할 수 있다. 2. 리눅스 docker run httpd를 통해 httpd 컨테이너를 실행하려 하였으나 에러가 발생했다. 검색해보니 서버 네임 이슈인 것 같다. 지금 지식으로는 해결할 수 없고,..
[Docker] Docker 입문수업 - 3. 이미지 pull
·
카테고리 없음
도커 사용을 위한 용어 프로그램 검색 : 앱스토어 = 도커 허브(레지스트리) 설치한 프로그램 : 프로그램 = 이미지 실행되는 프로그램 : 프로세스 = 컨테이너 pull : 이미지를 다운받는 행위 run : 이미지를 실행하는 행위, 이미지가 컨테이너가 되어 실행되면서 컨테이너 안에 포함된 프로그램이 실행된다. 이미지 다운로드 받기 https://hub.docker.com Docker hub.docker.com 해당 사이트에 접속하면 원하는 컨테이너를 검색하여 다운받을 수 있다 이번에는 apache 웹서버를 설치해 보겠다. apache 웹서버는 httpd라는 이름으로 도커 허브에 등록되어 있다. docker official image는 도커에서 공식적으로 관리하는 믿을 수 있는 이미지라는 표시이다. http..