SSRF(Server-Side Request forgery)
·
보안/웹·모바일
CSRF는 클라이언트 사이드임. 공격자가 사용자의 권한으로 악의적인 요청을 하도록 하는 것. ex) 사용자가 게시글 클릭 시 사용자의 패스워드를 '1234'로 변경하는 요청을 하도록 함. SSRF는 서버 사이드. 서버 측에서 요청을 위조하면서 발생한다. 주로 공격의 목표가 파괴보다는.. 정보 수집이다. Example. 내가 A서버의 내부네트워크 내에 있는 다른 서버 B에 접속하려고 하면, 당연히 못함. 그 서버의 내부주소를 알더라도.. URL에 검색하면 아무것도 안뜨지? 그런데 나와 통신하느 서버인 A는 B서버에 접근할 수 있단말이야. 그러니까 A서버를 통해 B서버의 정보를 수집할 수 있다.
파일 다운로드 공격 실습
·
보안/웹·모바일
업로드 기능이 있다면? 당연히 다운로드 기능도 있다. 다운로드 기능이 있다면? 당연히 업로드 기능도 있다. 실습 페이지의 다운로드 페이지는 shop_download.asp이다. strFileName으로 파일이름을 주고, f_path로 upload_file이라는 업로드 파일이 저장되는 경로가 주어진다. ../를 이용해서 상위 디렉토리에 있는 파일을 다운로드 할 수도 있다. 쿠키.asp 받아쳐먹기
파일 업로드 취약점 실습
·
보안/웹·모바일
파일 업로드 취약점 거의 웹쉘을 업로드하는게 목표임. 실습 페이지는 .asp로 작성되어 있다. active server page [실습] webshell.asp를 게시판에 업로드 업로드 하려니까 첨부파일 확장자필터링이 걸려있다. jpg, hwp, pdf, jpeg, txt 만 가능하다고 함. 파일업로드 확장자 우회 방법에 대해서 알아보자. ⓐ 종단 문자 우회 파일명.asp%00.jpg %00은 null byte. 문자열의 끝을 의미 파일명.asp로 업로드된다. ⓑ html encoding 통한 우회 파일명.as%112 %112 = html encoding 으로 p를 의미 ⓒ burpsuite로 Content-type 을 수정해서 포워딩 ⓓ 시그니처 수정 확장자가 아니라 파일 시그니처로 확인하는 경우 시작..
XSS (Cross Site Script) 실습
·
보안/웹·모바일
XSS (Cross Site Script) - OWASP '인젝션' 항목에 포함됨 - Reflected 방식과 Stored 방식으로 나뉜다. 1. Reflected (반사형) 구문을 입력하면 반사하듯이 바로 보여지는 것 (query) 이게 안먹힌다? (query) "> 스크립트로 돌아가는 페이지인가? 생각하고 있으면 시간만 오래걸림. 걍 두개다 해보셈. TIP. 반사형 점검할 때는 후자와 같이 그냥 막아주자. 저장형은 안막아도 ㄱㅊ 그래도 둘다 하는게 점검할 때 마음이 편하다.^^ 아무튼 여러 쿼리를 질의할 수 있음. "> "> ">
Blind SQL Injection 실습
·
보안/웹·모바일
Blind SQL Injection 실습 - DB 에러 페이지가 노출되지 않거나, 취약점 존재를 판단하기 어려운 경우. 방법: 참/거짓 쿼리의 반응이 서로 다름을 확인. 참 쿼리 대상의 반응, 거짓 쿼리의 대상의 반응이 다를 때. EX) Oyesmall 데이터베이스라고 치면.. DB_NAME()의 첫번째 글자가 'a'니? 점검 방법 True query: ' and 1=1 -- False query: ' and 1=2 -- [db_name] - DB 이름 확인(error_based): 'and db_name() > 1 -- - DB 이름 확인(blind_based): db_name()의 첫 글자 (a~z). substring 함수를 이용한다. ※ substring(원하는 문자열, 시작점, 글자수): 문자열..
특수문자 필터링, 정규표현식 for JavaScript
·
보안/웹·모바일
특수문자 필터링 for JavaScript 정규표현식 표현방법 1. 정규 표현식 리터럴 const match = /pattern/flag 2. RegExp 호출 const match = new RegExp(pattern) 검색패턴 [^문자] Not 문자 ^문자열 특정 문자열로 시작 문자열$ 특정 문자열로 끝남 | OR [] 괄호 내 문자열들 중 하나 {} 반복 횟수 () 괄호로 감싼 부분과 일치하는 부분 문자열을 기억. 나중에 불러와서 사용가능. 반복패턴 ? 최대 한번 반복 ( 0 or 1) * 0회 이상 반복 + 1회 이상 반복 . 정확히 1개 문자 매칭 {n} N번 반복 {n,} 최소 n번 반복 {n,m} 최소 n번 최대 m번 반복 확장문자 \s 공백 문자(스페이스,탭, FF, LF) \S 공백이 아..
Load of SQLInjection 문제풀이
·
보안/웹·모바일
Load of SQLInjection 홈페이지 3. goblin GET방식으로 no에 입력값을 넘겨주어야 하는 상태이다. 2번문제에서 필터링이 추가로 존재한다. 싱글쿼터, 더블쿼터, 백틱 사용 불가능. 나이제 이정도는 껌이다. 정규표현식 공부했거든 아무튼 필터링이 없다면 그냥 no=0 or id='admin' 넘겨주면 되는데.. admin을 문자열로 묶어줄 친구가 없다. 이럴 때 사용할 수 있는 건 바로 admin 문자열에 해당하는 아스키코드 값을 전달해주는 것이다. 바이너리값 or 헥스값 or 옥텟값 옥텟은 안되더라 ㅋ 0x61646d696e를 id로 전달하면 된다. 즉, no=0 or id=0x61646d696e 이 문제에서 배워갈 점: 싱글쿼터 백틱 더블쿼터 등이 필터링 되어 있어서 내가 원하는 문..
Union SQL Injection 실습
·
보안/웹·모바일
Union SQL Injection 이번 실습은 회원가입 > 주소 입력창에서 이루어진다. Union - A 테이블에서 필요한 데이터와 B 테이블에서 필요한 데이터를 합친다. - 여기서 데이터는 칼럼으로 합치는 듯함. - 단, 합치려는 두 SELECT 문의 칼럼의 수는 같아야 한다. [예시] table = login, class SELECT id,pw FROM login union SELECT eng, kor FROM class; (o) SELECT id,pw ,email FROM login union SELECT eng, kor FROM class; (x) 주소 찾기 페이지에서는 칼럼 수 5개까지 입력 가능하다. 즉, 사용되는 칼럼은 5개라는 의미. 추측이 가능하다. 띄어쓰기 기준으로 5개 우편번호 / ..