본문 바로가기

전체 글

(79)
[T0M4TO] 개발과 보안의 괴리 1탄 (Authentication) 오늘 알아볼 것은, 늘 고민하고 있는 개발과 보안의 괴리에 관련한 것이다. 모두 알겠지만, 개발 기술은 정말 빠르게 진화하고 변화하고 있다. 대표적으로 몇년전에만 해도 쓰던 인증 방식인 쿠키 + 세션 조합을 이제는 잘 사용하지 않고, 토큰 + Storage를 쓴다던가... tistory는 TSSESSION이라는 쿠키에 세션을 저장하여 사용하는 전형적인 쿠키 + 세션 조합의 인증 방식을 선택하고 있다. 물론 WAS에서 직접 제공해주는 Session같은 경우에는 AutoScaling되는 환경에서는 세션이 공유가 안된다는 치명적인 문제도 발생할 수 있고, 세션이라는 방법 특성상 서버에서 인증에 걸리는 부하가 있을수 밖에 없다. 하지만 확실히 보안면에서는 안전한 편이라고 말할 수 있다. 먼저 쿠키에 저장되지만,..
[Root-me] LDAP injection - Authentication 풀이 보호되어 있는 글입니다.
[T0M4TO] Heavy Query Time based SQL Injection ※ Query는 Mysql을 기반으로 작성했다. 0. 개요 Time based SQL Injection은 말 그대로 시간을 기반으로 한 SQL Injection이다. SQL Injection이 가능한것 같으나 Error 내용이 눈에 띄지도 않고, Response 데이터를 통해 참 거짓을 판별할 수 없는경우 주로 사용하게 되는데, 주로 Sleep과 Benchmark를 사용하는 것이 대부분이다. 하지만 Sleep과 Benchmark는 너무 유명하다보니 waf에서 막힌다거나, 키워드로 필터링 당할때도 있다. 또 sleep과 benchmark는 조건문을 이용해야 데이터를 추출해내기 용이한데, 조건문인 if문이나 case when문도 역시나 너무 유명해서 같이 필터링 당하는 경우가 많다. 마지막으로 이건 뇌피셜이..
[T0M4TO] OWASP Top 10 - 2021 한글 리뷰 드디어 OWASP Top 10이 업데이트 되었다!!! 내 기억이 맞다면 2017년도 이래로 4년만에 업데이트 된 것이다. 내용의 변화가 무척 흥미롭다. 얼른 알아보자. (원문 : https://owasp.org/Top10/) 우선 2017년도와 비교했을때의 큰 변화는 아래와 같다. Injection이 왕좌를 내려놓고 3위로 물러났으며 왕좌는 Broken Access Control이 차지했다. XSS가 단일항목에서 Injection으로 흡수되었다. XXE가 단일항목에서 Security Misconfiguration으로 흡수되었다. Insecure Deserialization이 단일항목에서 Software and Data Integrity Failure로 흡수되었다. 자 하나씩 순서대로 보도록 하자. 1. ..
[OverTheWire Bandit] Level 5 → 6 문제 풀이 Level 5 → 6 문제 풀이 드가자. 문제를 보면, inhere 디렉토리 하위 어딘가에 다음 레벨로 갈 수 있는 패스워드가 적힌 파일이 저장되어 있다. 그리고 그 파일은 아래 3가지 특징을 가지고 있다. 사람이 읽을 수 있는 형태이다. 크기가 1033byte 이다. 실행할 수 없다 즉 주어진 조건 3개를 이용하여 파일을 찾으면 된다. ls를 통해 inhere 디렉토리는 홈디렉토리 하위에 있음을 확인했고, inhere 디렉토리 하위에는 20개의 디렉토리가 존재하고 있다. 모든 디렉토리에 전부 들어가서 일일히 파일을 열고 확인하는 방법도 있겠지만, 문제풀이의 의미가 없어지기 때문에명령어를 통해 문제를 풀어보도록 하겠다. 우선 find의 -size 옵션을 이용하여 inhere 디렉토리 내 1033byte인..
[OverTheWire Bandit] Level 4 → 5 문제 풀이 Level 4 → 5 문제 풀이 드가자. 문제를 보면 inhere 디렉토리 하위에 사람이 읽을 수 있는 파일이 1개 있다고 한다. 이 파일에 다음레벨로 갈 수 있는 패스워드가 있다. ls를 통해 inhere 디렉토리는 홈디렉토리 밑에 있음을 확인하였고, inhere 디렉토리 하위에는 10개의 파일이 존재했다. 물론 일일히 다 열어봐도 문제는 풀리겠지만, 문제의 취지에 맞지않기 때문에 명령어를 통해 풀어보도록 하겠다. 우선 inhere 디렉토리 안에 있는 파일들의 종류를 확인하기 위해 find와 file 명령어를 사용하였다. find의 -exec 옵션을 이용하여 file 명령어를 실행시켰고, 그 결과 -file07만 ASCII문자로 된 텍스트 파일임을 확인할 수 있었다. 즉 -file07 파일만이 사람이 ..
[OverTheWire Bandit] Level 3 → 4 문제 풀이 Level 3 → 4 문제 풀이 드가자 문제를 보면 inhere 디레고리 안에 숨겨진 파일을 보면 다음 레벨로 갈 수 있는 패스워드를 알 수 있다고 한다. ls를 통해 inhere 디렉토리는 홈디렉토리 하위에 있음을 확인할 수 있다. inhere 디렉토리 내 숨김파일까지 확인하기 위해 ls에 -a 옵션을 붙여 명령을 실행한다. ls -a 명령을 통해 hidden 파일이 숨겨져 있음을 확인할 수 있다. 읽어보자 패스워드를 확인할 수 있다. 끝!
[OverTheWire Bandit] Level 2 → 3 문제 풀이] Level 2 → 3 풀이 드가자 문제를 보면 홈디렉토리에 있는 'spaces in this filename'이라는 파일에 다음 레벨로 갈 수 있는 패스워드가 있다는 것을 알 수 있다. 근데 명령어는 공백을 기준으로 명령어, 옵션, 인자 등을 구분하기 때문에 파일 이름을 그대로 입력할 경우 정상적으로 읽히지 않는다. 즉 이문제의 핵심은 공백이 포함된 파일이름을 하나의 문자열로 사용할 수 있도록 하는것에 있다. 방법은 크게 2가지가 있다. 따옴표를 이용하여 문자열임을 표현한다. 역슬래쉬를 이용하여 공백을 구분자가 아닌 일반 문자로 처리한다. 우선 ls를 통해 파일을 확인해보면 파일이름에 공백이 포함되어 있음을 확인할 수 있다. 첫번째 방법은 따옴표를 이용해서 파일명을 감싸는 것이다. 따옴표로 깜싸진 문자열..