본문 바로가기

전체 글

(128)
OWASP 취약점 정리(1/10) OS injection 웹 취약점 종류(OWASP TOP 10)1. 어떤 상황에서 이 취약점이 발생하는지2. 어떻게 공격 해야하는지 3. 취약점이 미치는 영향 1. OWASP란?Open Web Application Security Project의 약자이다.OWASP란 오픈소스 웹 애플리케이션 보안 프로젝트로, 주로 웹에 관한 정보노출,악성 파일 및 스크립트, 보안 취약점 등을 연구한다. 1. Injection (인젝션)인젝션 취약점은 SQL, OS, LDAP 등에 해당되며 신뢰할 수 없는 데이터를 명령어나 질의문의 일부분으로서 보내질 때 발생하는데, 공격자의 데이터는 개발자가 의도하지 않은 명령을 실행하거나 적절한 권한 없이 데이터에 접근하도록 인터프리터를 속일 수 있습니다. 1-1) OS 인젝션 (command injecti..
PHP 비교 연산자 취약점 (magic hash) 안녕하십니까 오늘은 php의 비교 연산자 취약점에 대해서 알아보겠습니다. 비교연산자란 ?컴퓨터 언어인 FORTRAN, COBOL 등의 두 변수, 값, 주소의 비교에 사용되는 기호로 관계 연산자의 일종. 라고 설명이 나와 있습니다. php의 공식 홈페이지에서 설명하는 비교 연산자의 설명입니다. 간단한 사용방법과 동작 원리가 설명 되어 있습니다. 여기서 중요한 것은 문자열이 수로 변환 된다. 두개의 수 문자열을 비교하면, 정수로 비교 된다. 라고 나와 있습니다. 비교연산자는 정수의 형태로 비교된다라는 것을 이용한 취약점이라고 생각하시면 될 것 같습니다. 일단 취약점을 간단하게 소개해 보면 아래와 같은 php 코드를 실행시켜 보면 0e123456과 0e88888888이 다르지만, 코드를 실행키며 보면, tru..
directory listing 취약점 막기(apache2) 안녕하세요 이번에는 directory listing 취약점을 방지하는 apache2설정에 대해서 설명하겠습니다. directory listing이란 디렉토리 브라우져를 통해 디렉토리의 하위 폴더와 파일들을 볼 수 있는 취약점 입니다. 아래와 같이 나타납니다.공격 방법은 폴더명이 노출 되었을 때 폴더명만 입력합니다.예를들어 /var/www/html/ 이 기본 웹 폴더 일때 하위 폴더에 static 폴더가 있다면 localhost/static/ 이렇게 입력해주시면 디렉토리 리스팅이 되는지 확인 할 수 있습니다. 패치 법 vi 혹은 eidter 프로그램으로 /etc/apache2/apache2.conf를 열어 줍니다. 아래로 쭉 내리다 보면 아래와 같은 설정 들을 볼 수 있습니다. 여기서 Indexes를 지우..
giant 이번 문제는 공백을 어떻게 우회하는지에 대한 문제입니다. 저한테는 재미있는 문제여서 기억에 많이 남습니다. 1글자로 공백을 우회해야 합니다. 아래는 아스키코드표에 있는 일부분 입니다. 파란색으로 표시된 부분은 공백을 나타내는 아스키 코드입니다. 즉 우리가 and를 우회하기 위해 &(%26)을 사용하는 것과 같이 사용하는 거라고 보시면 됩니다. 이번 문제에서는 %0b와 %0c로 공백을 우회 할 수 있었습니다.
los bugbear los bugbear 풀이를 하겠습니다. 일단 소스코드는 아래와 같습니다. 인자값으로는 pw 와 no 두개가 있는데요일단 pw 에는 싱글쿼터를 필터링 해서 pw를 이용하여 injection을 하는 것을 불가능 할 것 같습니다. no도 싱글쿼터를 필터링 해서 pw에 \로 우회 시킨다고 해도 싱글쿼터를 사용하지 못하므로 최종적으로 pw는 사용하지 못합니다. 그러면 no를 이용하여 injection을 해야합니다. or and 는 || 와 %26(&)으로 우회를 하면 됩니다.공백도 필터링이 걸려있습니다. 그러면 %0a~%0d 를 이용해서 우회를 해도 되고 /**/를 이용해서 우회 해도 됩니다. substr을 막아 놨네요마지막 if문을 보면 blind입니다. 비밀번호를 알아내야하므로 left,right를 이용하여..
los darkknight los darkknight 풀이 필터를 보면은 일단 pw 와 id 에는 싱글 쿼터를 사용하지 못합니다. 그러므로 쉽게 no 에서 injection을 수행 할 것입니다. no의 필터링을 보면 싱글쿼터가 필터링 되어 있지만. "을 사용하여 싱글 쿼터를 대신 할 수 있습니다. 블라인드 인젝션이므로 like를 사용 하겠습니다.like 에 대한 설명은 golem 글에서 적어 놨습니다. 예를 들어 no= 1 or id like "admin" and pw like "1%" 비밀번호의 글자의 길이는 8입니다. python 으로 간단하게 툴을 짜서 쉽게 비밀번호를 추출 할 수 있습니다.이번 경우에는 비밀번호가 숫자와 영어의 조합입니다. 그러므로 손으로 직접 해도 상관 없습니다. python3 입니다.제가 직접 작성한거라..
los golem GOLEM 풀이 입니다. 쿼리를 보면 pw 에 = 와 or and substr 필터링이 걸려있습니다.or은 || 를 이용해서 우회 and 는 && 를 이요하면 되는데 url 에서 & 는 다른 get 을 넘길 때 사용하므로 %26으로 바꾸셔서 우회하시면 됩니다.%26은 쿼리 단으로 들어가서 mysql 에서 핵스를 자동적으로 해석 하기 때문에 상관 없습니다. ?pw=1' || id like 'admin' # ?pw=1' || id like 'admin' %26%26 pw like '8%' # like 함수를 이용해서 블라인드 인젝션을 수행할 것입니다.like 함수는 특별하게 정규식이 사용 가능합니다. 예를 들면 pw like '1%' 이런 식으로 사용하면 pw 에서 1글자만 비교합니다. 계속 해서 '1a%'..
여수 여행, 이야기를 담은 라멘, 일상 안녕하세요 오랜만에 일상 글을 올립니다.겨울 방학 동안 탐탐혹은 랩실 혹은 자취방에서거주 했던 제가 여행을 다녀왔습니다. 1. 여수 1박 2일 여행 이번에 가족여행으로 여수를 다녀왔어요여수 아쿠아리움이에요 그냥 아무 생각 없이 찍었어요 이것도 아무 생각 없이 이빨이 무서워서 찍었습니다. 이것은 오동도인가에서 케이블카를 타고 가다이뻐서 한장 찍었습니다. 이것도 케이블카에서 찍었습니다. 아 그리고 여수에 "유명 횟집"이라고 엄청 블로그로 잘 홍보된 횟집이 있습니다. 절대 가지마세요회는 먹을 만한데 서비스가 정말 너무 안좋아요제가 오후 6시 정도에 갔는데 일단 우럭이 없다고 주문을 안받더라구요 다른 반찬도 별로 안나와요.. " 블로그에서 보고 왔는데 반찬이 왜이렇게 없나요 ?? "라고 하니깐그건 저흰 모르겠어..