taikif's blog:)

its just a blog:)

PT0-002: CompTIA Pentest+に合格した

目次

CompTIA Pentest+とは

CompTIA PenTest +は、ネットワーク上の脆弱性を特定、報告、管理するための実践的なペネトレーションテストを行うサイバーセキュリティプロフェッショナル向けの認定資格です。様々なIT環境での攻撃対象領域がカバーされており、クラウド、ハイブリッド、Webアプリケーション、IoT、オンプレミスなどに関連するペネトレーションテストのスキルとそれぞれの実施計画、報告などのスキルを評価します。

https://www.comptia.jp/certif/cybersecurity/comptia_pentest/#certification

受験の背景

ペンテストに興味があったのでCEH、OSCPなどを取得する前に入門で取得しておこうと思ったことがきっかけです。

筆者のレベル感

23卒SOC Analyst
登録セキスペ、SG、SEA/J、CompTIA CySA+、SC-200などを所有。
RED系の業務経験はなく、一人でHTB Easy問のrootフラグをとれる自信があるくらいです。

難易度

比較的易しかったです。 単一/複数選択というのが難易度を下げている大きな要因ですが、問われる内容も捻ったものはごくわずかで回答しやすい内容だったので易しいと思います。

勉強時間

1か月前から開始して、合計30時間くらい。

勉強法

Exam TopicsとUdemyのCompTIA PenTest+ (PT0-002) Practice Certification Examsというコースをひたすら続けました。わからない単語はNotionにメモって隙間時間に覚える程度。

さいごに

簡単な内容とは言え、初めて聞くツールや攻撃手法・法律などがあったので今回試験を受けるために勉強してよかったなという印象です。
この資格を取っただけではペンテスターとは名乗れないかなぁという感じなのでやはりCEH, OSCPにも挑戦したいですね。SANSは受講費用が高すぎるので尻込みしちゃいますね。
ペンテスターの入門として皆さんもぜひ!

ASC Wargames 2023 [Web] Writeup

4つの問題を解きました。6時間ほどかかり、体力がなくなってギブアップしました。

N1 [easy]

Search deep inside to get the flag. There is no need to brute forcing.

らしいので、ディレクトリを漁る系だろうという感じです。 ../tmp, ../etcで、../を増やしていっても404になるので、robots.txtを見に行ったところ

User-Agent: *
Disallow: /tmp/ASCWG/flag.txt

ということで、ここにあるのはわかりました。愚直に/tmp/ASCWG/flag.txtを指定しても404になります。 とりあえずクエリ変数に入れ込もうと思い、file, filename, name, urlとか試してると、?url=hogeしたタイミングで

Nooooob!!!! Hacking Attempt

と煽られました。どうやらurl変数を見ているようです。?url=/tmp/ASCWG/flag.txtしてやると

Nooooob!!!! Hacking Attempt

これも同じ結果。うーん、url変数はダミーなのかなと思いガチャガチャ手動で他のクエリ変数を試すも成果はないので、url変数を信じることにします。 ?ur%00l=/tmp/ASCWG/flag.txtとか、NULL文字入れてみても、?URL=/tmp/ASCWG/flag.txtとかしても同じ。HPP(HTTP Parameter Polution)しても同じ。 ダブルエンコーディングしてやろと思い、?url=%252Ftmp%252FASCWG%252Fflag.txtしてやるとビンゴでした。

ASCWG{Lf1_V3rY_EssssY_AND_Plz_B3_P@ti3nt}

Iniectio [easy]

X hac septimana infirmata est et ad valetudinarium ivit et nutrix ei injectionem seri deditet nunc bene valet.

DeepLで翻訳すると

X年7月、病気で入院している患者を治療するために、注射を打ち、その注射の栄養を補給した。

??? 早速やっていきます。
サイトはbackground-urlで大きな画像の上に、Hello !!!という文字が。URLが/xchal.phpなので、phpで動いている模様です。 問題名がインジェクションっぽい、かつ、Hello !!!が、入力値をフロントに表示しているっぽいのでSSTIかなと推測。ただクエリ変数が分からないので先ほどの問題同様ガチャガチャすると?nameを見ていることが判明。?name={{7*7}}とすると

oooooooooooh hacker !

と返ってきた。ソースコードが見たかったのでエラーを吐かせてから開発者ツールでトライすると見れました。どうやら

$dangerousFunctions = array('GET','POST','print','exec', 'shell_exec', 'popen', 'system', 'touch', 'echo', 'mv', 'cp', 'sed','``', 'passthru', 'proc_open', 'while', 'read ', '>', '<', 'nano', 'vi', 'vim', 'fopen', 'fgets', 'fgetc', 'file_get_contents', 'fwrite', 'file_put_contents', 'curl_exec', 'curl_multi_exec', 'parse_ini_file', 'sleep', 'rm', 'mkdir', '}', 'show_source', 'symlink', 'apache_child_terminate', 'apache_setenv', 'define_syslog_variables', 'escapeshellarg', 'escapeshellcmd', 'eval', 'pcntl_exec', 'posix_kill', 'posix_mkfifo', 'posix_setpgid', 'posix_setsid', 'posix_setuid', 'posix_uname', 'proc_close', 'proc_get_status', 'proc_nice', 'proc_terminate', 'putenv', 'register_shutdown_function', 'register_tick_function', 'ini_set', 'set_time_limit', 'set_include_path', 'header', 'mail', 'readfile', 'file_get_contents', 'file_put_contents', 'unlink', 'cat', 'tail', 'head', 'more', 'less', 'dd', 'od', 'xxd', 'tac', 'hexdump', 'file', 'awk', 'nano', 'vim', 'iconv', 'strings', 'rev', '|');

これらの文字列が含まれていると弾かれるらしいのでうまく回避しながらSSTIしていきたい。

  <?php
    
   $str = "echo \"<div style='position: fixed; top: 0; left: 0;'><p style='font-size: x-large; color: white;'>Hello " . $name . "!!!</p></div>\";";

    eval($str);
  ?>

フロントがこうなっているので、もろSSTI刺さりそうですね。?name=".`ls`."でディレクトリを確認すると、flag.phpがありました。txtファイルじゃないので嫌気がさしましたがとりあえず見てみます。ただ、cat, less, more, head, revコマンドが使えないのでどうやってファイルの中身を見ようかなと考えます。
cutコマンド(cut -b 1000 flag.php)で取り出せました。多分cut -f 2 -d "ASCWG" flag.phpでも行けると思いますがwriteup書きながら思いついたので知りません。

<?php ASCWG{yeah_mrx_come_her!!!!!!!!!!!!!!!!} ?>

SadQL [Medium]

I do not know whether I should say that or not, but you must bypass the login in any way, but remember that forcing does not always work. (Make Your Choice)

SQLiかな。
とりあえずadminでログイン試行します

email=admin&password=password&submit=Login

リクエストボディは上記の形式をとっているみたいです。特に情報もないので、エラーを吐かせて開発者ツールでソースコードを見ます。 バックエンドはphpで実装されており、エラーの箇所はaddslashes関数を使用している模様です。このaddslashes関数をバイパスしてSQLiをするんだなと推測。

www.php.net

これによるとシングルクォート (') ダブルクォート (") バックスラッシュ () NUL (null バイト) という文字の前に、" / "を付加してエスケープ処理とするみたいです。

www.aure.jp

ここで詳しく書かれているのでとても興味深いです。ただ、この話題すら10数年前の話なのでもうレガシーテクノロジー感ありますね。
少し脱線しましたが、payloadはemail=%bf%5c'oorr/**/1=1%23&password=password&submit=Loginです。 補足ですが、これはorとspaceがaddslashes関数とは別に、手書きのエスケープ処理により削除されるのでorはoorrとし、spaceは/**/を代用した結果です。

adminASCWG{SqL_1Nj3ct1on_1s_V3Ry_Esay_ANd_Funyyyyyy!}}

father's light [Medium]

Enter the enigmatic realm of "Father of Light" Unleash your skills, explore hidden paths, and uncover the depths of mysteriouscreations. Will you emerge as the champion? Dare to unravel the enigma.

???早速やっていきます。
とりあえずログイン機能とユーザ作成機能があります。とりあえずログインしてみると

WELCOME TO THE REGULAR USER PAGE
You are loggedin as a regular user

と表示されます。これまたログインするときにusernameとかにSSTIかなと思いソースコードが見たかったのでエラーを吐かせてから開発者ツールでソースコードを見ます。

• File "/app/app.py", line 28, in login
@app.route('/login', methods=['GET', 'POST'])
@limiter.limit("20 per minute")
def login():
if request.method == 'POST':
username =
request.form['username']
password = request.form['password']
ΑΛΛΛΛΛΛΛΛΛΛΛΛΛΛΛΛΛΛΛΛΛΛΑ
pattern = r'select union |\' | " | or | and | #|--|=| |1=1'
if re.search(pattern, username):
flash('Do You think you can Hack My Applicationnnnnnnn!!!', 'error')
return render_template('login.html', error=True)
elif username == 'admin' and password== 'password' : 

pythonで実装されており、r'select union |\' | " | or | and | #|--|=| |1=1'パターンマッチングでSQLiを弾いてるみたいですね。SSTIではないみたいです。SQLiでも厳しいみたいですね。こういったログイン機能のあるCTFではAdmin権限を取得するのがゴールだったりするので、AdminとしてSQLiするのがゴールではないのなら、AdminのCookieの取得かなと推測しました。
ログインした後、しっかりCookieが付与されていました。FlaskのセッションCookieといえば暗号化ではなく署名といった特徴がありますね。

github.com このツールを使うことでCookieの暗号化/復号が可能です。 AdminのCookieを作るために、まずUserのCookieの形式を確認します。 {'is_admin' : False, 'user_id' : 'hogehoge', 'username' : 'hogehoge'}ということがわかりました。is_adminをTrueにすればいいだけなので、{'is_admin' : True, 'user_id' : 'hogehoge', 'username' : 'hogehoge'}をencodeします。そのCookieをログイン後のCookieに張り付けて、Admin権限取得できました。しかし、Flagはどこにも表示されないので、ここからSSTIすると推測。
ログイン後にプロフィールを更新できる/dashbordパスが存在するので、ここで{{7*7}}するとNameに入力したフォームが49を出力してくれました。
{{config}}と入力すると

"Againnn ?? Do You think you can Hack My Applicationnnnnnnn!!!"

と表示されました。{{}}この文字列は弾かれないようなので、どうやらconfigが弾かれているのかなと思いconfigと入力しても弾かれない。多分 "{{config}}"とか、"{{config"とか"config}}"で見ていると思うので、"{{ config }}"を入力するとFlag取得できました。

&#39;ASCWG{H0la_@ck3r5_Th1s_a_S3m6le_55TI}&#39;,

趣味を見つけようと思った話

学生の頃は趣味をサイバーセキュリティで通してたのですが、社会人になって趣味が仕事と同じ領域って正直趣味と呼べるんだろうか(半分仕事じゃんw)と思ってきました。
なので趣味を見つけよう!と思いました。
21年間生きてきて、趣味の見つけ方を考えるの初めてなんですよねw趣味って衝動的に始めたものが継続的に続いてたりしたものが趣味たり得ると思ってるので、 ”趣味を見つけよう!=>趣味になる” って因果関係がちょっと歪かなと思ってたりもします。
そんなこと言ってる場合じゃないんですけどね・・・。

趣味の見つけ方

①趣味を作る目的を考える


スキルアップ/暇つぶし/話題作り/人脈づくり, とかあると思いますが、自分はスキルアップです。

②自分の興味あるモノ/好きなモノを考える


英語/サイバーセキュリティ/Webアプリ開発/運動/楽器演奏/絵/
結構ありますねwちなみに社内ではCTF部(仮)とランニング部(仮)と軽音部に所属してるので、プライベートなものを趣味にするとしたら、 英語/サイバーセキュリティWebアプリ開発運動楽器演奏/絵/ こんな感じになりますね・・・。

③習慣化できるかを考える


一寸先は闇ってことわざがあるくらいなので、これは自分次第な感じありますよね~

④実現可能かを考える


環境/予算/能力/これらをクリアできるモノじゃないとそもそも難しいですよね。

最終的に何をするか

英語学習を趣味にしようかなと思います。
目標はTOEIC900点台とか、海外旅行できるレベルとかに設定しておきます。
来年は恐らく会社負担で海外のカンファレンスに参加できるのでそのためにも語学力向上させておきたいなと思った感じです。
とりあえずDuolingoとかやろうかな?と思います。良くも悪くも今の時代英語を学べる環境がありすぎてベストプラクティスがわからないですねw

さいごに

月一くらいで報告のブログ書けたらなあと思ってます。
Duolingoはアプリなので毎日できると思うので毎日学習したいですね。
TOEICは来年度のBlack Hat USAに間に合うように受けようと思います。
それでは!!!

3か月の新人研修で学んだこと

新人研修が終わって

自分は23卒のエンジニアとして入社し、4月から6月にかけて様々な研修を受けました。
エンジニア採用でしたが、ビジネスライクなところから営業の研修、基礎的な技術まで幅広く研修を受けさせていただきました。
研修を通して内省できたし、社会性が身についたかなと思います。同期とワイワイ学ぶこともできて楽しかったです。
自分は専門上がりなので、同期は年上の方が多かったです。そのおかげで同期からの学びもとても多かったです。おいしい飲み屋とか( 一一)
自分は過酷な環境が好きなタイプなので、もっと難しい研修内容だと嬉しかったですね。ただのわがままですが。

学んだこと

ネットワーク/クラウド/DB/セキュリティ/プログラミングなどを基礎的なレベルで網羅的に学びました。プログラミング周りに1か月ほどかけていたので、ここの比重は大きかったかなと思います。
すでに知っていることが多かったので、他社の公開されているエンジニア向け新卒研修の資料を閲覧したり、周りの方のフォローをしたり、与えられた課題に付加価値をつけて消化する。みたいなことをやってました。
実はCTFの作問をして同期に解いてもらうなどしていました。(小声)

気を付けたいこと

報連相をしっかりすること。
3か月の研修での学びが少なく少し焦っていて、そこで当日の朝に欠勤の連絡をして自宅で自己研鑽しようとしましたが、このような急な連絡は良くないなと思いましたし、実際止められました。
もっと事前に研修内容について思っていることを講師や人事の方に相談するべきだったなと思ってます。自戒の意を込めて書き記しておきます。。。

どう活かしていくか

大人数の場でのリーダーシップとか、少人数のディスカッションでのコンセンサスの取り方とか、そういう対人のことはとても多くの学びがあったし、知識をビジネスにどう昇華するかみたいなところもとても学びがあったので、これを業務でも沢山活かしていきたいですね。

これから

新卒という権限を行使できるのは1年目だけなので、どんどん挑戦していきたいなと思います。
同期との繋がりを良い形で活かしていけたらなとも思います。実際、同期とCTFのチームを組んでCTFに出たりもしているのでこんな感じで刺激を与え合いたいなと思います。
報連相はしっかりします。
業務の中でも手持無沙汰になる瞬間って必ずあると思うので、そういう時に何をするか、ベストな立ち回りができるように頭を回していきたいです。

さいごに

大人数で受ける研修って自分に深く刺さることがあまりないと思うんですが、もし研修に何かしら思うことがあれば積極的に相談するのが良いと思います。すぐに調整するのが難しくても後々その意見は後輩たちのためにもなるはずなので。
自分に投資してくれる時期って新人の時だけなので、積極的に研修は受けたほうがいいとは思いますね。何か一つでも学びになることがあればいいと思うので。

デジタル名刺を作った(プレーリーカード)

プレーリーカードとは

デジタル名刺です。NFC技術を採用したICカードで、携帯をかざすだけで自分の設定したWebサイト(ポートフォリオなど)にアクセスできます。
設定するサイトはいつでも変更できるので、プロフィールは使いまわせます。紙ベースの名刺より環境にいいですね。

カードについて

実際に使ってみました。デザインは自分で行い、作成をプレーリーカードさんにお願いしました。
1.印刷に際してグラデーションを利かせたつもりが、黒塗りになってしまいました。
2.黒の上にグレーのテキストを載せたが、黒塗りになってしまいました。(学習しました)
3.86mm×54mm で、クレジットカードとほぼ同等です。
4,分厚さはクレジットカードよりもわずかに分厚く、少し高級感があります。(約0.9mm)

プロフィールページについて

1.独自ドメイン(taikif.dev)を取得してポートフォリオに紐づけることができるので、エンジニアっぽい~~!となりました。使っていて楽しいです。
2.自分のサイトを持っていなくても、デフォルトのテンプレがあるので、情報入力するだけで立派なサイトが出来上がります。
3.全世界に公開されますが、カードを読み取った場合と、直接アクセスしてきた場合で公開する情報の切り分けが可能です!(連絡先はパブリックにしない等)

感想

1.名刺を数十枚、数百枚も刷るよりもカード1枚で沢山の方へ自分の情報をリーチできるのはコスパいいです。
2.ICカードの名刺なので、紙の名刺と比べてラグジュアリーな感じがします。
3.ビジネスシーンの利用を考えましたが、お堅い方々には受け入れられづらいかもしれないなぁという懸念点があり、今はひとまず個人として利用しています。

さいごに

新しい技術やサービスは大好きなので、今回プレーリーカードを作成して本当に良かったです。
SDGsの一環にもなると思いますし、上手くいけば社会に浸透していくなぁと思っています。
何かしらのイベントで活用するとウケがいいと思います!
それでは!!!

SC-200: Microsoft Security Operations Analystに合格した

目次

SC-200とは

  • 合格することで、Microsoft Certified: Security Operations Analyst Associateの認定資格が与えられる試験です。
  • 組織のITシステムをセキュリティで保護するため、Microsoft Sentinel、Microsoft Defender for Cloud、Microsoft 365 Defender、サードパーティのセキュリティ ソリューションを使用することができることを証明する資格です。

受験の背景


あまり詳細に書くとアレなので避けますが、一言で言うと、業務で役に立つかなと思ったからです。
あと、資格取得の奨励金が出るからです。新卒にとってはデカイ!

筆者のレベル感

23卒、保有資格(セキュリティ系)はSEA/J, SG, CySA+, RISSです。
Azureはハニーポットたてるときにジャカジャカしてたくらいです。

難易度

難しかったです。というのも、自分自身は実務経験ゼロなので全体像を掴むのに苦労しました。
試験でも、MS製品を使ってどのように技術的要件(セキュリティ要件)を満たすか、ひたすらに問われたので、推測が難しかったです。
業務でMS製品を触っている方は簡単なのかな?と思いました。

勉強時間

3週間(約60時間ほど)です。
社会人になって平日の夜の時間の有難みを実感しました・・・。
休日は10時間前後勉強して、平日は3時間前後勉強してました。(3週間の中で、SC-200に触れない日もありました。(同期と飲みに行ってました))

勉強法

1.まずはMS Learnすべてに目を通しました。

2.プラクティスアセスメントを消化しました。

プラクティス評価 | Microsoft Learn

3回ほど正答率100%とって、なぜ解答がそうなるのかロジカルに説明できるようになるまでこなします。

3.ExamTopicsをこなしました。

Free Exam Prep By IT Professionals | ExamTopics

これは無料会員として使用しました。(有料会員になるとサンプル問題増えるみたいです)

注意点として、解答がすべて正しいとは限らない(ユーザの議論や公式Docを参照しないといけない)です。


上記の2, 3は強くお勧めしたいです。是非。

感想

勉強法についてですが、一番最初にMS Learnのすべてに目を通すのは、試験合格においては勉強効率悪いです。
もし過去に戻れるなら、プラクティスアセスメントやりつつ、公式Doc参照します。(網羅性は低いけれど、点数は伸びると思います。)
ただ、一番最初にMS Learnに目を通してたからこそ体系的に学ぶことができたし、初見の問題でも推測が捗りました。(どっちがいいんだろう・・・ちょうどいいポイントが未だにわかりません・・・すみません・・・。)

さいごに

次はCISSP取ります。
と言いつつも、軽音部に入ったのでギター練習しないといけないですし、CTFやKaggleもサボっちゃいけないのでタスクに押し潰されそうです。
そういえばSecHack365の選考、落ちてしまったので最近は放心状態です。
それでは!!!

ヨルシカ LIVE 2023「月と猫のダンス」参加記

初!ヨルシカLIVE参戦!

ツアー初日の仙台に参加してきました。
死ぬほど良かったです。多分あの後トラックに轢かれて死んでもちゃんと成仏できましたね。
感動のあまり、後日アコースティックギター買いました。

スケジュール

昼頃に家を出て、東京→埼玉→仙台という感じで行きました。
帰りは夜行バスに揺られながら早朝に東京に帰ってきました。
ちなみに、その4時間後にネットワークスペシャリスト試験受けてきました。余韻が一瞬で消えましたね。悲しい。

感想

やっぱり自分の想像するアーティストのLIVEではなく、n-bunaさんとsuisさんの芸術的かつ独創的なLIVEでした。これにハマると抜け出せないです。
世界観が確立されていて、引き込まれる感じです。多分あの瞬間だけパラレルワールドしちゃってますね。皆さんも是非ヨルシカLIVEへ。
あと、牛タンと大福と、日本一のナポリタン食べました。牛タンのコスパえぐいですね。日本一だと思います。

さいごに

社会人になって時間を作りやすくなったので、今後もずっとヨルシカのLIVEに行くんじゃないかなと思ってます。
あと、隣の男の子がn-bunaさんに心酔していて面白かったです。もうちょっと静かにしてほしかったけど可愛かったのでOKです。
それでは!!!!