Portswigger-Authentication bypass via information disclosure

problem link

풀이

admin 페이지가 있고 인증을 요구하는데, 인증을 우회할 수 있다. 인증을 우회해 admin 페이지에 접근하고 carlos 계정을 삭제하라. wiener:peter 계정을 사용할 수 있다.

/admin 경로에 접속하면 local 유저만 admin 페이지에 접근할 수 있다는 에러메시지를 띄운다.

TRACE 메소드로 요청해보니 X-Custom-IP-Authorization: 217.138.252.190 헤더가 끼워져있다. 이는 내가 사용하는 VPN의 IP로, 요청한 IP에 해당했다.

X-Custom-IP-Authorization: 127.0.0.1 헤더를 끼워넣고 TRACE를 해보니 127.0.0.1이 그대로 유지되었다. 더이상 중간에 끼워넣지 않았다.

X-Custom-IP-Authorization: 127.0.0.1 헤더를 포함하여 GET /admin 하니 admin 페이지에 접근이 가능했다. carlos를 삭제할 수 있는 링크도 발견했다.

마찬가지로 X-Custom-IP-Authorization: 127.0.0.1 헤더를 포함하여 carlos 삭제 링크에 접속하면 성공한다.

이 취약점은 TRACE를 통해 접근 제어에 이용되는 헤더를 알아낼 수 있어 발생했다. 또한 리버스 프록시가 붙이는 헤더에만 의존하여 인증을 처리하고, 헤더의 내용이 암호화되지 않아 임의로 조작할 수 있었기에 발생했다.


tags: writeup, information disclosure vulnerability, access control vulnerability, wstg-athz-02, wstg-athz-03, wstg-conf-06, business-logic-vul, wstg-busl-02, web hacking