본문 바로가기

보안 공부17

[Web] URL 필터링 취약점 및 SQL 문법 우회 정리 URL 필터 취약점 빈칸 우회 : || + /**/ 주석 우회 : -- # %00; 인라인 주석 처리 : 느낌표로 시작하면 실제 SQL과 같이 동작함. 예시 : /*!32302 and 1=0*/ 특수문자 우회 : URL 인코딩, 유니코드 인코딩 숫자 데이터 취약점 : ASCII('A') ASCII(1) 문자열 우회 : 대소문자 변경 , 빈칸 넣기 , ASCII 코드 삽입(CHAR(115)) , SQL 문법 우회 1. MySQL - ASCII 함수 - SUBSTRING 함수 - Sleep 함수 - select @@version - select database() - select concat(table_name, ',column_name) from information_schema.columns - sele.. 2021. 11. 11.
[Web] SQL 쿼리 취약점 정리 SQL 쿼리문 별 우회 방법 SELECT 문 : WHERE 조건문을 통해 쿼리를 조작함. INSERT 문 : VALUES 안에 동일한 형태의 데이터 개수와 타입이 필요함. -> 개수는 점차 늘려가면서 시도함. -> 정수형에서 문자형으로 묵시적 형 변환 -> 1 값을 이용 -> 20000 값을 이용 UPDATE 문 : WHERE 조건문을 포함하면서, INSERT와 거의 동일하게 동작함. DELETE 문 : WHERE 절에서 사용자의 입력 값을 받아 처리함. ORDER BY 문 : UNION/WHERE/OR/AND 키워드를 받아들이지 않기 때문에 중첩 쿼리(SELECT 1 WHERE )를 이용해야함. UNION 문 : 두 개 이상의 SELECT문을 하나의 결과로 합칠 때 사용됨. -> 앞 뒤 SELECT가 .. 2021. 11. 11.
[Web] 웹 인코딩 종류 1. URL 인코딩 : 확장된 아스키 문자 내에서 문제가 있는 문자들을 인코딩할 때 사용된다. - 반드시 수행되는 URL 인코딩 : 공백(%20) %(%25) &(%26) =(%3D) +(%2B) #(%23) 2. 유니코드 인코딩 : 16비트에서 유니코드 인코딩은 URL 인코딩과 비슷하게 동작한다. 입력 값을 처리할 때 유니코드 인코딩을 원래 값으로 최종적으로 변경하기 때문에 입력에서 필터링을 우회할 수 있다. 3. HTML 인코딩 : HTML 안에서 특별한 의미를 지니고 그 내용을 처리하는 데 사용하는 인코딩이다. 일반 HTML 인코딩 이외에도 10진법, 16진법 HTML 인코딩으로 변환할 수 있다. " " &apos; ' & & < 10진법 HTML 인코딩 " " &#39; ' 16진법 HTML 인코.. 2021. 11. 11.
SSRF(Server-Side Request Forgery) 취약점 SSRF(Server-Side Request Forgery) 취약점 "PHP Warpper를 사용한 LFI" 라고 생각하면 되려나? 잘 모르겠다. PHP는 Wrapper(래퍼)를 이용하여 파일에 대한 액세스를 추상화하는 취약점을 발생시킬 수 있다. 여러 종류의 PHP Wrapper 방법이 있지만, 가장 많이 시도되는 것은 php://를 사용한 base64 인코딩 방법이다. PHP 5.0.0 이상 버전에서 사용이 가능하고, 우리가 흔히 브라우저에 접속할 때 http:// 를 사용하는 것도 http 프로토콜을 통해 파일이나 리소스에 접근하기 위한 url-syntax 형식의 wrapper라고 한다. (URL scheme 종류) - php:// 다양한 입출력 스트림에 대한 접근 - file:// 로컬 파일 시스.. 2020. 9. 1.
LFI(Local File Inclusion) 취약점 LFI(Local File Inclusion) : 공격 대상 서버에 위치한 파일을 포함시켜 읽어오는 공격 쉽게 이야기해서, 공격 대상 서버에 있는 디렉터리로 접근하여 원하는 파일을 열어볼 수 있다는 것이다. 예를 들어, 아래와 같이 파일 이름을 url 파라미터로 넘겨주어 파일을 불러오는 코드가 있다고 하자. 이러한 부분에서 특수문자 필터링 혹은 적절한 디렉터리 권한 설정을 안 해줄 경우에 LFI 취약점이 발생할 수 있는데, filename을 ../../../../etc/passwd와 같이 넘겨주면 파일을 include 하는데 아무런 제약이 없기 때문에 서버 내에 있는 계정의 모든 패스워드를 훔칠 수 있다. include() 함수 이외에도, include_once(), require(), require_o.. 2020. 9. 1.
PHP 비교 연산자 취약점, 매직 해쉬 매직 해쉬, 0e로 시작하는 문자열에 뒤에가 모두 숫자일 경우 php에서는 float형태로 인식한다는 것이다. 매직 해쉬가 취약점이 될 수 있는데, 먼저 php.net 공식 홈페이지에서 가져온 연산자 정의를 봐보자. == 연산자 : $a와 $b가 같으면 true === 연산자 : $a와 $b가 같고, 동일한 자료형일 시에 true 이 둘을 비교했을 때, ==연산자가 갖는 취약점이 무엇인지 감이 잡히지 않는가? 두 비교 대상의 자료형을 검사하지 않는 것이다. (==연산자는 문자열과 정수를 비교했을 때, 문자열이 정수(int 혹은 float)로 바뀐다.) 결과적으로 매직해쉬(0e로 시작하는 문자열 뒤에가 모두 숫자면 float형태로 인식한다)와 ==연산자(두 비교 대상의 연산자의 자료형이 동일한지 검사하지 .. 2020. 7. 31.