일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- GIT
- 자바스크립트 객체
- 카카오프로젝트
- 보안뉴스한줄요약
- php
- ES6
- 파이썬
- 자바스크립트 element api
- 자바스크립트
- 자바스크립트 jQuery
- 랜섬웨어
- numpy
- 카카오프로젝트 100
- 자바스크립트 API
- 오라클
- 자바스크립트 prototype
- 자바스크립트 node
- 카카오프로젝트100
- python
- 깃허브
- 보안뉴스 요약
- Oracle SQL
- 보안뉴스요약
- oracle
- oracle db
- 자바스크립트 기본 문법
- 다크웹
- 보안뉴스
- 보안뉴스 한줄요약
- javascript
- Today
- Total
FU11M00N
2-1. bee-box 를 사용하여 HTML Injection 알아보기! 본문
저번에는 bee-box를 배우기 위해 기본적인 OWASP TOP 10이
무엇인가에 대해 알아봤는데요,
이번에는 A1-Injection 중 에서도 html injection (GET)에 대해 알아보겠습니다.
인젝션의 공격 방법은 Reflected(반사) 기법과 Stored (저장) 기법 공격이 있습니다.
먼저 Reflected(반사) 기법의 원리는 아래의 사진과 같습니다.
이 공격은 데이터 전송을 GET 방식으로 전송할 경우 URL에 변수 이름과 값을 노출합니다.
특정 사이트에 있는 URL 주소 입력창에 직접 주소를 입력하여 공격하는 기법으로 사용됩니다.
그럼 bee-box로 실습해보겠습니다.
1. 레벨 low
먼저 First name과 Last name 필드에
html 코드를 삽입합니다.
First name: <h1> Hi!! <h1>
Last name: <img src= http://자신의 주소/bWAPP/images/bee_1.png>
결과는 first name에 썼던 html 코드와 last name에 썼던 html 코드가 출력되어 나오게 되었습니다.
여기서 이 사진의 URL의 주소를보면 입력 부분에 변수가 되었고 변수에 입력하였던 HTML의 태그가 보입니다.
저기에 있는 주소를 일반 사용자에게 유인하여 정상사이트인척 위장하여 더욱더 강한 악성 HTML 코드를 삽입하여
사용자에게 피해를 줄수있습니다.
2. 레벨 medium
그럼 이번엔 레벨을 medium으로 변경하여 시도해보겠습니다.
아까와 같이 HTML 코드를 삽입하면 공격이 실패하여 코드가 삽입이 안되었습니다.
이것이 이 페이지의 소스코드 중 일부분입니다.
난이도 medium에서는 xss_check_1으로 이동하게 되고
xss_check_1의 내용은
function xss_check_1($data)
{
// Converts only "<" and ">" to html entities
$input = str_replace("<", "<", $data);
$input = str_replace(">", ">", $input);
// Failure is an option
// Bypasses double encoding attacks
// %3 Cscript%3 Ealert%280%29% 3C%2 Fscript%3E
// %253 Cscript%253 Ealert%25280%2529% 253C%252 Fscript%253E
$input = url decode($input);
return $input;
str_replace의 함수를 사용하여 <와 >를 <는 < 치환되고 있고 >는 >로 치환되고 있습니다.
그럼 <와 >를 각각 치환해줘서
다음과 같이 작성하여 공격을 성공시킵니다.
3. 레벨 High(대응방안)
레벨 High부분에서는 < , >를 우회하여 사용하는 공격이 안됩니다.
해당 코드를 분석하면
아까의 사진 1-6과 같이 case : 2 즉 레벨 High는 xss_check_3으로 가게 됩니다.
xss_check_3는 htmlspecialchars 함수를 사용하고 이것은 PHP에서 제공하는 기본 함수입니다.
HTML에서 사용되고 있는 특수문자를 UTF-8으로 반환하고 UTF-8은 유니코드의 한 문자를
1바이트로부터 4바이트까지 인코딩하며 아스키코드도 호환이 가능합니다.
즉 html injection을 대응 하기 위해선 htmlspecialchars 함수를 사용하여 HTML에
사용되는 태그들을 인식되지 않게 해야 합니다.
Reference by 비박스 환경을 활용한 웹 모의해킹 완벽실습
'Web Hacking > bee-box' 카테고리의 다른 글
4-1. bee-box 를 사용하여 OS Command Injection 알아보기 (0) | 2020.03.18 |
---|---|
3-1. bee-box 를 사용하여 iframe Injection 공격 알아보기 (0) | 2020.03.18 |
2-3. bee-box 를 사용하여 HTML Injection 알아보기 (0) | 2020.03.16 |
2-2. bee-box 를 사용하여 HTML Injection 알아보기! (0) | 2020.03.16 |
1. bee-box 를 사용하여 OWASP TOP 10 알아보기! (1) | 2020.03.07 |