Burp Suite
프록시(Proxy)를 이용해 패킷을 가로채 사용자가 원하는 분석, 조작, 확인 등을 할 수 있게 도와주는 툴.
아래 링크에서 설치 가능하다. 다운로드 후 쭉 Next를 눌러서 설치한다.
https://portswigger.net/burp/communitydownload
설치가 완료되면 위 화면과 같이 뜬다. Proxy 버튼을 누르고 Setting을 누른다.
다다음과 같이 체크표시를 진행한다. 그다음 프록시 설정을 킨 뒤 intercept is off를 눌러서 진행하면 burp suite를 사용할 수 있다. beebox의 ip 주소를 입력해서 접속해주면 된다.
HTML injection - Reflected(POST)
low 단계
burp suite에서 proxy 값을 보기위해 Intercept is on으로 바꿔주고 proxy 서버를 연다.
그뒤 beebox 페이지에서 값을 입력하면 저렇게 값이 넘어가는 것을 확인할 수 있는데,
여기서 html injection-reflected (get)과 마찬가지로 html 값을 입력해주면 된다.
medium 단계
위 소스코드를 보면 입력받은 값이 htmli_post.php로 이동하는 것을 볼 수 있다.
왼쪽은 htmli_post.php 내부이다. 위 php 파일들 중 직접적으로 내용에 관여하는 functions_external.php 파일을 살펴보자.
medium 단계에서는 xss_check_1 함수가 동작한다. str_replace 함수로 인해 값이 필터링되는데 이 함수는 <, > 문자를 각 html 엔티티로 변경하는 함수로, html 태그를 그대로 보여준다.
따라서 이전에 입력해주었던 %3Ch1%3E%3C%2Fh1%3E을 이용해 작성해주면 다음과 같이 태그의 모습이 그대로 나타나게 된다.
이를 자세히 확인하기 위해 직접 값을 입력해보았다.
다음과 같이 더블인코딩이 사용된 것을 확인할 수 있다.
더블 인코딩
인코딩에 사용된 % 문자도 인코딩을 하는 방식으로 % -> %25로 인코딩된다.
(ex) < -> %3C -> %253C
따라서 다음과 같이 더블인코딩을 이용하여 값을 넘겨주게 되면 성공할 수 있다.
high 단계
다음중 high 단계에서 동작하는 함수는 xss_check_3인데, 여기서 return 값에 htmlspecialchars()라는 인코딩 함수를 사용하고 있다.
htmlspecialchars 함수
php에서 사용되는 특수문자를 HTML 엔티티로 변환하는 함수이다. 구조는 아래와 같다.
htmlspecialchars(html 엔티티로 변환할 문자열, 홑따옴표와 겉따옴표의 처리방식, 이미 존재하는 html 엔티티의 encode 여부)
다음과 같이 UTF-8로 인코딩을 하게되면 html 태그로 인식되지 않도록 하여 HTML Injection을 막을 수 있다. 따라서 이 문제를 풀 수 없다.
HTML injection - Stored(Blog)
HTML Injection Stored
reflected 방식과 달리 공격자가 서버에 HTML 태그를 저장시키고, 이후 사용자가 해당 태그가 저장된 페이지를 열람할 경우 공격자의 태그가 실행된다. stored는 저장형으로 url로 유입되는 것이 아닌 서버 db에 스크립트를 저장하여 게시글을 불러올 때마다 실행이 된다는 차이점이 있다.
low 단계
게시물 형태로 html 태그 입력방지가 되어있지 않다. 따라서 힌트에 나와있는 form 태그를 이용하여 다음과 같이 post 페이지로 이동하고, 값을 넘기도록 작성해주었다. 오른쪽 사진과 같이 h1태그를 이용해서 success를 출력해주었다.
Medium 단계
해결이 불가능하다. 이유는 아래와 같다.
다음은 security level이 medium 이상일 경우 동작한다. 이때 xss_check_3 함수가 동작하여 entry에 들어가는 내용에 영향을 미친다는 것을 알 수 있다.
위에서 언급했던 htmlspecialchars() 함수가 보인다. 보이다시피 xss 방지용으로 사용되는 함수이기 때문에 문제를 해결할 수 없다.
'정리 > web hacking' 카테고리의 다른 글
[Natas] Level 2 > 3, 3>4 (0) | 2023.09.20 |
---|---|
[NATAS] Natas 0 level, 0 level>1 level, 1 level > 2 level (0) | 2023.09.17 |
[beebox] 설치 및 html injection (0) | 2023.07.16 |
[XSS game] level 3, 4, 5 (0) | 2023.07.09 |
[XSS game] Level 1, Level 2 (0) | 2023.07.02 |
댓글