[WebGoat 5.4-01] General
1. Http Basics
브라우저와 웹어플리케이션간의 데이터 전송에 대해 이해한다.
[해답]
webscarab을 실행하고 proxy를 사용하여 request,response를 intercept하도록설정한다.
파이어폭스에서 proxy를 enable한다.
kim을입력하고 [go]버튼을 클릭한다.
webscarab에서 오고가는 데이터를 확인한다.
전달된 이름은 reverse() 되어서 응답되므로 이름이 mik로 출력된다.
2. HTTP Splitting
사용자의 입력값을 검증하지 않아 발생할 수 있는 취약점으로 사용자가 입력값 이외에 CR & LF를 추가해서 서버의 응답에 다른 응답형태를 추가하는 형태이다.
CR은 커서의 위치를 줄의 맨 처음 자리로 옮기라는 것이고, LF는 다음줄로 넘기라는 의미이다.
윈도우에서는 한라인을 넘기기위해 CR, LF를 같이 사용하지만 UNIX/LINUX에서는 LF만 사용한다.
이러한 CR/LF문들을 이용하여 임의의 제약들을 깨고 서버에서 다른 페이지를 불러 올 수 도 있고 임의의 포트를 연결해서 명령을 보낼 수 도 있다.
서버가 CR(%0d) 와 LF(%0a)을 체크하지 않는다. 이것은 공격자가 헤더와 본문을 제어할 수 있다는것을 의미한다. 뿐만 아니라 공격자가 추가적인 응답을 생성할 수 있다.
[해답]
<- 추가적인 응답을 하나 더 넣어서 서버에게 전달한다.
---- Response Splitting Attack ----
en
Content-Length: 0
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 31
<html>Hacked by kim</htm>
OWASP WebGoat: General 솔루션 비디오보기 [View | Download]
HTTP Basics, HTTP SPLITTING Size: 3.2 MB