四流/四留/4ryu

ただのメモです.Writeupなら他のブログ見たほうがいいと思います.

TryHackMe Pickle Rick Writeup

THMのPickle Rickに挑戦しました。解法はほかの方を見たほうがいいと思います。

 

0.どこまで試行したか

 まずNmapを用いて開かれているポートを検索。するとssh(port:22)とHTTP(port:80)が開いている状態であった。まずはサイトのほうにアクセスしてみる。

 サイト自体は入力欄もない普通のサイト。まずはソースコードを使用して何か情報がないか見てみると下部にusernameが書かれていた。ここで先ほどのsshが頭に浮かび、先ほどのuserで接続してみる。しかしpublickeyエラーが出て接続することができない。

 この辺りで20分が経過しBoxの寿命もあるのでここで断念。フラグを得ることはできなかった。

 

1.First Flag

HTB Academyで学習したことをすっかり忘れていたが、ターゲットがWebアプリケーションやサイトである場合、まずgobuster/dirbuster/niktoを用いて他のページがないかチェックするのを優先すべきだった。

 教訓:ターゲットはサイト? → gobuster/dirbuster/nikto !

 

 dirbuster/niktoの結果を見ると、assets/login.php/robots.txtにアクセスできるようだ。まずrobots.txtを見ると何かよくわからない文字列がある。おそらくこれがパスワードだろう。login.phpソースコードのuserと先ほどのパスワードを入力すると無事ログインできた。

 ログインすると検索欄があるページに飛ばされた。見た感じどうやらコマンドを入力するらしい。まずlsを入力するとflagっぽいtxtファイルがある。試しにcatで見ようとすると変なgifが出てきてはじかれる。そこでURLにそのtxt名を入力すると無事表示された。もしくはlessを使うと同様にみられる。

 

余談:lessはディレクトリの指定が必要

 

2.Second Flag

 コマンドを入力できるならリバースシェルができるはず。writeupによってコマンドは違うが、payloadsAllTheThigsやpentestmonkeyやGTFObinsからいくつか拾ってきて入力すると無事に接続できた。筆者はperlスクリプトを用いた。

  教訓:リバースシェルはいろいろ試してみるべき

 

 侵入後/homeをlsしてみるとubuntuとrickのフォルダがある。rickフォルダのなかにフラグが用意されているので、これをcatで見ると2つ目のフラグ入手.

 教訓:システムを見る場合、まず他のuserを見てみる 

 余談:ファイルに空白がある場合、「¥」を使うと空白を表現できる

    もしくは' 'を使ってみる

 

3.Final Flag

 最後のフラグはrootフォルダの中にある。これまた忘れていたが侵入後sudo -l をして今の権限で何を入力できるかを調べるべきだった。sudo -l するとNO PASSWD つまりrootでなくても全コマンド権限を持っている。

 あとはお好きな方法でrootに昇格できる。

 (sudo su , sudo bash -i ,sudo ls /root → sudo less /root/<target>)

 教訓:侵入したらまず特権昇格できないかを考える

 

4.結論

・ターゲットIPが何者か調べる

・何らかのwebアプリかサイトの可能性あり dirb/nikto/gobusterでファジング

・結果からページにアクセスしてみる

・何らかの方法でリバースシェルできないか試みる

 (ターゲットでperl/pythonが使えないか調べる等)

・接続出来たら権限を見てみる 昇格できないか試みる

・他ユーザーのディレクトリやrootディレクトリを見てみる

 

 

 

Hacker101 CTF : Micro CMS v1 Writeup

 Hacker101CTFのMicro CMS v1に挑戦しました。後のためのメモとして残します。なお筆者は全然知識ないので見るならほかの人のwriteupを推奨します。

0.どこまで試行できたか

 ターゲットを見てみると、Testing・Markdown_Test・Create a new pageを発見。まず全ページのソースコードを見てみるがめぼしい情報はなし。Markdownのページにあった画像から情報を探し出そうとしたがこれもなし。

 URLを見ると<ターゲットIP>/page/のように管理されているので、適当にadminと入力してみても無理。試しにIPだけで表示してみてもめぼしい情報はなし。

 次に新しいページができるっぽいのでとりあえず作ってみる。すると新しくできたページはなぜか<IP>/page/6となっていた。確か元あったページは順に1,2となっていたはず。なので3,4,5とやってみると、ちょうど4の時にForbiddenがでる。おそらくここにフラグがあるだろう。

 そのあととりあえずeditで反応を期待してechoを入力してみたが、これといって解決の糸口はつかめず、ヒントを見てもいまいちわからなかったのでここでギブアップ。

 

1,Flag0

 上述したように新しいページを作ると、(人によってはページが違うらしいが)今回の場合6となる。そして4のときにForbiddenが出ることから何かしらの手段で入る必要がある。例えば最初のページを編集してみると<IP>/page/edit/1となる。つまりページ4も同等の手段で入れる可能性がある。実際にやってみるとフラグが表示された。

 教訓:すべてのページのURLをチェックしてみる

 

2.Flag1

 正直これは納得いってないが記入する。ヒントによるとXSSSQLであり、フォーム送信以外の方法で送り、ユーザーからの予期しない入力で引き起こされるものっぽい。<IP>/page/edit/に’(シングルクォーテーション)を追加するとフラグが表示される。

 そもそもなぜeditのページなのかがいまいち納得いかない。

 教訓:SQL Injectionを探すときはあらゆるページにあらゆる不正な値を入れてみる

   (例えば " , && ,' , ; , : , \ みたいな)

 

3,Flag2

 何かしら投稿できることから、おそらくこれを使うのだろうと考えていたが結局できなかった。ヒントによると何かしら手を加えると別ページに影響が起きるようだ。XSS攻撃かと思ったがいまいち何を入力していいかわからない。ほかの方のwriteupを参考に新しいページを作成しタイトルに、<p>edit</p>と入力してもページに変化は起こらない。しかしホームに戻るとアラートがでてフラグが表示される。なんでやねん。

 教訓:投稿できる場合なにかしらのHTMLを注入してみる

   (それ以前にHTMLの知識が欠けているのを何とかしないと)

 

4.Flag3

 ヒントによればHTMLのscript以外を使えばよさそう。まったく知識がないので別の人が使ったHTMLを注入してみる。一見変化がないがソースコードを見てみるとフラグが表示されている。いやなんでやねん。

 教訓:HTMLの知識