traversal

WebページのURLと、以下のファイルが与えられた。

An URL of a web page and these files were given:

web-traversal |-- docker-compose.yml |-- lb | |-- Dockerfile | `-- conf | |-- default.conf | `-- nginx.conf `-- web |-- Dockerfile `-- httpd.conf

また、問題文より、/flag.txt の存在が示唆されていた。

web-traversal/lb/conf/default.conf を読むと、merge_slashes off; という行があった。
「merge_slashes off」でググると、以下のページが見つかった。

Also, the challenge descryption suggested that there is a file /flag.txt.

Reading web-traversal/lb/conf/default.conf, I found a line merge_slashes off;.
I googled "merge_slashes off" and found this page:

ALB配下のApache HTTP Serverに対して脆弱性(CVE-2021-41733)の再現ができない理由をNGINXの挙動から考えてみた | DevelopersIO

このページを参考に Firefox でリクエストを試みたが、URL中の %2e%2e/ が勝手に消えてしまい、うまくリクエストを送れなかった。
また、問題で指定されているWebページはHTTPSでしかアクセスできず、HTTPでアクセスしようとしてもリダイレクトされてしまうようだった。

そこで、OpenSSL 1.1.1l の s_client で指定のWebページのサーバの443番ポートに接続し、以下の内容を送信した。

Referring this page, I tried to send requests from Firefox, but %2e%2e/ in the URL vanished and I failed to send proper requests.
Also, the web page specified for this challenge looked available only via HTTPS (HTTP requests are redirected).

Seeing this, I connected to the port 443 of the server for the specified web page using s_client of OpenSSL 1.1.1l and sent this:

GET ///////cgi-bin/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/flag.txt HTTP/1.0 Host: traversal.web.wanictf.org Connection: close

(Connection: close の後に空行 (改行文字だけの行) を1行入れる)

すると、flagが得られた。

(Put an empty line (a line that contains only a newline character) after Connection: close)

As a result, I obtained the flag.

FLAG{n61nx_w34k_c0nf16_m3r63_5l45h35}

WaniCTF 2021