기본 콘텐츠로 건너뛰기

Juice Shop Injection [ SQL Injection ]

Juice Shop Broken Access Control [ Basket Access Tier 1 ]



이 취약점 SQL Injection 을 통해 로그인창을 우회하여 관리자 계정으로 로그인이 되는지 진단한다.


아래와 같이 ' or 1=1 --  를 통해 SQL Injection 취약점이 발생하는지 진단한다.



진단결과 다음과 같이 SQL Injection 에 성공하여 관리자 계정으로 로그인이 가능한것을 볼수있다.




SQL Injection 대응 방안

1) 입력값 검증
사용자의 입력이 DB Query에 동적으로 영향을 주는 경우 입력된 값이 개발자가 의도한 값(요효값) 인지 검증합니다.
/*, –, ‘, “, ?, #, (, ), ;, @, =, *, +, union, select, drop, update, from, where, join, substr, user_tables, user_table_columns, information_schema, sysobject, table_schema, declare, dual,…
등과 같은 의도하지 않은 입력값에 대해 검증하고 차단해야 합니다.


2) 저장 프로시저 사용
저장 프로시저는 사용하자고 하는 Query에 미리 형식을 지정하는 것을 말합니다. 지정된 형식의 데이터가 아니면 Query가 실행되지 않기 때문에 보안성을 크게 향상시킵니다.


3) 서버 보안
  1. 최소 권한 유저로 DB 운영
  2. 사용하지 않는 저장 프로시저와 내장함수 제거 또는 권한 제어
  3. 목적에 따라 Query권한 수정
  4. 공용 시스템 객체의 접근 제어
  5. 신뢰할 수 있는 네트워크, 서버에 대해서만 접근 허용
  6. 에러 메시지 노출 차단


댓글

이 블로그의 인기 게시물

HackerOne Vulnerability Analysis 1

이 문서는  HackerOne 에서  제출된 많은 보고서들을 토대로 핵심 Payload만 요약하여 직접 작성하였습니다. Link :  https://hackerone.com/ Vulnerabilities list 1. CRLF Injection 2. Open Redirection  3. Cross-Site-Scripting 4. SQL-Injection 5. Path Traversal  CRLF Injection PoC http://www.myshopify.com/xxcrlftest%0aSet-Cookie:test=test3;domain=.myshopify.com; https://www.blackfan.myshopify.com/xxx%0aSet-Cookie:test=test2;domain=.myshopify.com; HTTP Response: HTTP/1.1 302 Moved Temporarily ... Location: http://myshopify.com/xxcrlftest Set-Cookie:test=test;domain=.myshopify.com; PoC: https://engineeringblog.yelp.com/xxcrlftest%0d%0aSet-Cookie:%20test=test;domain=.yelp.com HTTP Response: HTTP/1.1 301 Moved Permanently ... Location: http://engineeringblog.yelp.com/xxcrlftest Set-Cookie: test=test;domain=.yelp.com PoC (Chrome, Internet Explorer) http://gratipay.com/%0dSet-Cookie:csrf_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; HTTP Resp...

Juice Shop XSS [ Dom based XSS ]

Juice Shop XSS [ Dom based XSS ] Search 입력란에 악성 스크립트를 넣어 XSS 취약점을 진단합니다. Payload :  <iframe src="javascript:alert(`xss`)">   다음과 같이 이는 < , > 는 &lt; , &gt; 로 특수문자를 필터링하지 않기에 XSS 에 취약합니다.

JSON Injection

JSON Injection [Description] JSON은 XML과 같이 주입공격에 취약합니다. 따라서 공격자는 JSON 엔터티에 임의의 요소나 속성을 삽입함으로써 , JSON Injection 이 가능합니다. 우리의 목표는 더 저렴한 가격으로 가격을 조작하여 물품을 구매하는것입니다. [그림1]   [그림1]   물품 가격 출력 그림. [그림1] 같이 N/A , Newark,Chicago 의 물품 가격이 존재합니다. 우리는 이러한 물품 가격을 조작하여 좀 더 저렴한 가격으로 구매가 가능한지에 대한 취약점 여부를 진단합니다.    [그림2] [그림2]  가격 조작 그림. [그림2] 와 같이 "N/A" 가격의 금액을 원래 금액인 $600 달러에서 $1달러로 변경하고 "Newark, Chicago" 가격의 금액을 원래 금액인 $300 달러에서 $1달러로 변경 후 전송하여 취약점을 진단합니다. [그림3] [그림3]  가격 조작 성공 금액 원래 금액인 가격을 $1달러로 변경 후 , 전송 시 [그림3] 과 같이 성공적으로 가격이 변경되는것을 확인할수있습니다.  [그림4] [그림4]  조작한 두 개의 물품을 모두 체크하여 구매한 그림. [그림3] 에서 조작한 금액을 모두 체크하여 전송 시 [그림4] 와 같이  성공적으로 구매가  가능합니다. [impact] 공격자는 JSON 주입 공격을 통해 물품 가격을 임의로 수정하여 원하는 금액에 구매가 가능합니다.