이번에는 POST 요청 메소드를 이용하여 HTML 인젝션을 해볼 것이다.
POST로 하기 때문에 서버로 전송하는 변수값이 URL창에 노출되지 않는다.
[난이도 하]
프록시 서버를 설정하거나 버프 슈트의 proxy 탭에 open browser를 눌러 버프슈트용 브라우저를 연뒤 bWAPP으로 이동한다.
bWAPP으로 이동 시에는 intercept is on 을 off로 바꿔놔야한다. on은 상태를 얻을 때에만 잠깐 틀어둬야한다.
이동 후 post로 가서 인터셉트 on 시킨 뒤 Go 버튼을 눌러보면 Content-type, User-agent 등 HTTP 요청 정보가 나온다.
여기서 밑의 firstname 부분에 전에 입력했던 html 태그를 입력한 뒤 Forward를 눌러서 POST로 요청을 보내보자.
그러면 정상적으로 html 태그가 적용되게 된다.
[난이도 중]
전 문제와 똑같이 해보겠다.
<>가 필터링 되는 거라면 각각 %3C와 %3E로 URL 인코딩하여 보내준다.
%3Ch1%3EHelloWorld%3C%2Fh1%3E 와
%3Ch2%3EHIHI%3C%2Fh2%3E 를 넣어보았다.
그런데 이번에는 문자열이 출력되었다.
그 이유를 확인하기 위해서 Firstname 입력칸에 태그를 입력한 뒤 그걸 인터셉트 해보았다.
firstname에 넣은 값이 인터셉트 했을때 다른 값으로 잡힌다면 서버가 어떠한 방식으로 인코딩 하는 것인지 볼 수 있다.
확인해 보았는데 버프슈트에 뜬 firstname값이 뭔가 이상하다.
난 분명 %3C를 넣었는데 %253C 가 되어있다.
이는 서버가 %3C 에서 %를 %25로 인코딩시키는 더블 인코딩이다.
그러니 %253C로 변경해서 넣으면 아마 정상적으로 동작할 것이다.
%253Ch1%253EHelloWorld%253C%252Fh1%253E 를 first name에
%253Ch2%253EHIHI%253C%252Fh2%253E 를 last name에 넣고 post 요청해보자.
그랬더니 성공적으로 적용된 것을 볼 수 있다.
[난이도 상]
이번에는 %3Ch1%3EHelloWorld%3C%2Fh1%3E 구문을 넣고 인터셉트를 해보았다.
그랬더니 %3C가 %253C로 변해있었다. 그래서 전에 사용했던 구문을 사용했더니 이번에는 %25253C가 되어있었다.
이는 특수문자 자체를 모두 필터링해버리는 htmlspecialchars를 사용하고 있다고 볼 수 있다.
GET 문제와 똑같이 htmlspecialchars를 사용하고 있어서 html 인젝션으로는 풀이하기 어렵다고 볼 수 있다.
'3. 웹 애플리케이션 취약점 진단 > 비박스를 활용한 웹 애플리케이션 취약점 진단' 카테고리의 다른 글
[비박스를 활용한 웹 취약점 진단] 1-5. 인젝션 [OS 커맨드 인젝션] (0) | 2023.12.11 |
---|---|
[비박스를 활용한 웹 취약점 진단] 1-4. 인젝션 [iFrame 인젝션] (1) | 2023.12.11 |
[비박스를 활용한 웹 취약점 진단] 1-3. 인젝션 [HTML 인젝션 (BLOG)] (0) | 2023.12.11 |
[비박스를 활용한 웹 취약점 진단] 1-1. 인젝션 [HTML 인젝션(GET)] (0) | 2023.12.11 |
[비박스를 활용한 웹 취약점 진단] 0. 환경 구성 (0) | 2023.12.11 |