Study/Web 25

SQL(Structured Query Language)

SQL이란? 데이터베이스 시스템에서 자료를 처리하는 용도로 사용되는 구조적 데이터 질의 언어 RDBMS(관계형 데이터베이스)에 저장된 데이터와 통신하기 위해 필요한 프로그래밍 언어 명령어 DDL: 데이터베이스 스키마와 설명을 처리하는 정의하는 언어 CREATE, ALTER, DROP … DML: 데이터 검색, 삽입, 변경, 삭제를 수행하여 조작하는 언어 SELECT, INSERT, UPDATE … DCL: 데이터에 접근할 수 있는 권한을 관리하는 언어 GRANT, REVOKE TCL: 트랜잭션을 다루는 언어 COMMIT, ROLLBACK, SAVEPOINT … 연산자 산술 연산자 +, - ... 비교 연산자 >, >=, , != 논리 연산자 우선 순위 : NOT > AND > OR 비트 논리 연산자 &(..

Study/Web 2021.06.14

[DVWA] File Upload

File Upload Low view source) $target_path 를 통해 저장할 경로를 지정 $target_path 에 업로드한 파일 저장하는 조건문을 확인 Step 1) 사진 파일 업로드(테스트용) 업로드된 경로가 노출됨 해당 경로로 이동하면 업로드한 이미지 파일이 존재 Step 2) 간단한 웹쉘 작성 Step 3) 웹쉘 업로드 후 해당 경로로 이동 cd 명령어가 실행됨 Medium view source) low에서 추가된 부분 업로드한 파일의 이름, 형식, 크기를 받아옴 조건문을 통해 형식을 image의 jpeg, png만 허용하고 파일의 크기가 100000미만이도록 설정 Step 1) 웹쉘(php) 업로드 jpeg나 php가 아니라서 업로드 할 수 없다고 뜸 Step 2) request ..

Study/Web 2021.06.14

File Upload(파일 업로드) 취약점

File Upload(파일 업로드) 취약점이란? 웹 서버가 제공하는 파일 업로드 기능을 이용하여 악성 스크립트를 업로드하는 공격 악성 스크립트가 업로드 된 후, 서버상에서 스크립트를 실행하여 쉘을 획득하는 등의 행위로 서버를 장악할 수 있음 적절한 검증 없이 파일 업로드 기능을 제공할 때 발생 언어 파일 확장자 PHP php, php3, php4, php5, phtml, inc JSP jsp, jsf ASP Asp, asa, cds, cer 등 ASP.NET aspx, asax, ascx, ashx, asmx, axd, config, cs, csproj, licx, rem, resources, resx, soap, vb, vbproj, vsdisco, webinfo 등 보안 - 대소문자를 구분하지 않고 ..

Study/Web 2021.06.14

[DVWA] CSP Bypass

CSP Bypass Low view source) script-src: 스크립트 관련 권한 집합을 제어 -> self 혹은 다른 몇몇 사이트들을 허용하고 있음 Step 1) js 파일 작성 Step 2) js 파일 위치를 입력 Step 3) 해당 js 파일이 실행됨 Medium view source) unsafe-inline: inline javascript 사용 금지 nonce-(암호화된 문자): 암호화된 문자로된 inline 값은 허용 *인라인 방식은 이벤트를 이벤트 대상의 태그 속성으로 지정하는 것 X-XSS-Protection: XSS 공격을 감지할 때 페이지 로드를 중지(0: 비활성화, 1: 활성화) Step 1) 스크립트 구문 삽입 High view source) 코드 하단에 high.js를 ..

Study/Web 2021.06.14

CSP(Content Security Policy)

CSP(Content Security Policy)란? 신뢰된 웹 페이지 콘텍스트에서 악의적인 콘텐츠를 실행하세 하는 XSS, 클릭재킹, 그리고 기타 코드 인젝션 공격을 예방하기 위해 도입된 컴퓨터 보안 표준 주로 헤더에 내용이 삽입되며 특정 리소스가 어디서 왔는지 검사하고 허용된 범위에 포함되었는지 검토함 인라인 스크립트를 금지하는 것을 요구 CSP 지시문 default-src 디폴트 설정 connect-src 연결할 수 있는 URL을 제한 script-src 스크립트 관련 권한 집합을 제어 child-src iframe 태그에서 사용 style-src 스타일시트 관련 권한 집합을 제어 font-src 웹 글꼴을 제공할 수 있는 출처를 지정 img-src 이미지 관련 권한 집합을 제어 report-ur..

Study/Web 2021.06.14

[DVWA] CSRF

CSRF Low Step 1) 패스워드 '1234'로 변경 Step 2) response를 통해 password 값의 폼 데이터 확인 Step 3) html 작성 Step 4) 해당 html 접속 Test Credentials에서 확인해보면 변경된 것을 확인할 수 있음 Medium view source) referer 확인 -> 같은 서버에서 요청이 올 경우 referer이 같음 Step 1) 정상 변경 시 referer 확인 Step 2) csrf_low.html 접속 referer 값이 일부 생략됨 Step 3) html 작성 브라우저 정책으로 인해 url path, query string에 포함된 개인정보가 유출되는 것을 방지 -> referer에서 origin이 동일하지 않다면 수집 불가능 ref..

Study/Web 2021.06.13

[WebGoat] CSRF

WebGoat(CSRF) CSRF -> 3 Step 1) 제출버튼을 클릭 request를 확인 Step 2) html 작성 request 값을 보고 html 작성 Step 3) 로그인한 상태에서 해당 html 접근 CSRF -> 4 Step 1) request 확인 Step 2) html 작성 Step 3) 로그인한 상태에서 해당 html 접근 CSRF -> 7 Step 1) 정상 실행 Step 2) json 형식으로 보내기 위한 html 작성 그냥 보내면 값이 url 인코딩되어 서베 에러 발생 -> enctype 속성 사용하여 데이터를 인코딩하지 않고 request *enctype: 폼 데이터가 서버로 제출될 때 해당 데이터가 인코딩되는 방법을 명시 =이 붙으면서 또 에러 발생 -> value로 잘라주..

Study/Web 2021.06.13

CSRF(Cross Site Request Forgery)

CSRF란? 사이트간 요청 위조 웹 애플리케이션 취약점 중 하나 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격방법 패스워드 변경, 게시글 작성, 삭제 등의 작업을 할 수 있음 공격자는 게시판에 CSRF 스크립트가 포함된 게시글을 등록 관리자나 사용자가 해당 게시글을 열람 관리자나 사용자의 권한으로 CSRF 스크립트 요청이 발생하며 공격을 당함 메일 전송으로도 가능 사용자가 웹 사이트에 로그인한 상태에서 CSRF가 삽입된 페이지를 열면, 웹 사이트는 위조된 공격 명령이 믿을 수 있는 사용자로부터 발송된 것으로 판단하게 되어 공격에 노출 XSS와 CSRF 비슷한 점: 클라이언트, 스크립트 언어를 이용함 차이점 ..

Study/Web 2021.06.13

[DVWA] DOM Based XSS

DOM based XSS Low view source) Step 1) 아무 값이나 입력 url의 내용을 추출한 뒤 decode하여 html에 write Step 2) url에 스크립트 구문 삽입 Step 3) 스크립트 구문으로 인식된 것을 확인 Medium view source) stripos()를 통해 필터링 *stripos(): 대상 문자열을 앞에서부터 검색하여 찾고자 하는 문자열이 몇 번째 위치에 있는지를 리턴하는 함수 Step 1) 이미지 태그를 사용 Step 2) 스크립트 구문으로 인식된 것을 확인 를 꼭 해줘야 함 -> 코드를 보면 앞에 가 열려있다. 안에 이미지 태그가 들어갈 수 없기에 닫아준 다음에 삽입 High view source) switch문을 통해 case에 있는 값만 받아주는 방..

Study/Web 2021.06.13

[DVWA] Stored XSS

Stored XSS Low view source) *stripslashes(): 백슬래시를 제거 *mysqli_real_escape_string(): 특수문자 이스케이프 XSS를 막기 위한 코드는 보이지 않음 Step 1-1)Name에 스크립트 구문 삽입 Step 1-2) 스크립트 구문으로 인식된 것을 확인 Step 2-1) Message에 스크립트 구문 삽입 Step 2-2) 스크립트 구문으로 인식된 것을 확인 Medium view source) message에서 strip_tags()와 htmlspecialchars()를 통해 태그를 필터링 name에서는 str_replace()를 통해 ''를 공백으로 필터링 Step 1) 스크립트 태그안에 태그를 넣어 필터링을 우회 Step 2) 스크립트 구문으로 ..

Study/Web 2021.06.13