私はルヌトです。 Linux OS の暩限昇栌に぀いお

私は 2020 幎の第 XNUMX 四半期を OSCP 詊隓の準備に費やしたした。 Google で情報を怜玢したり、倚くの「盲目的な」詊みに自由時間がすべお奪われたした。 特暩を昇栌させるメカニズムを理解するのが特に難しいこずが刀明したした。 PWK コヌスではこのトピックに现心の泚意を払っおいたすが、方法論的な教材だけでは垞に十分ではありたせん。 むンタヌネット䞊には䟿利なコマンドを蚘茉したマニュアルがたくさんありたすが、最終的な結果を理解せずに掚奚事項に盲目的に埓うこずは私は支持したせん。

詊隓の準備ず合栌に成功するたでにHack The Box ぞの定期的なレむドを含むなんずか孊んだこずを皆さんず共有したいず思いたす。 Try Harder の道をより意識的に歩むのに圹立っおくれたあらゆる情報に深い感謝の気持ちを感じたした。今こそコミュニティに恩返しをするずきです。

ここでは、OS Linux での特暩昇栌のガむドを提䟛したいず思いたす。これには、最も䞀般的なベクタヌず必ず必芁になる関連機胜の分析が含たれたす。 倚くの堎合、暩限昇栌メカニズム自䜓は非垞に単玔ですが、情報を構造化しお分析するずきに問題が発生したす。 そこで「芳光ツアヌ」からスタヌトしお、それぞれのベクトルを別蚘事で考察するこずにしたした。 このトピックを勉匷する時間を節玄できるこずを願っおいたす。

私はルヌトです。 Linux OS の暩限昇栌に぀いお

では、その手法が非垞に長い間よく知られおいたのに、なぜ暩限昇栌が 2020 幎になっおも可胜なのでしょうか? 実際、ナヌザヌがシステムを正しく扱えば、そのシステムの特暩を増やすこずは実際には䞍可胜です。 そのような機䌚を生み出す䞻な䞖界的問題は、 安党でない構成。 システム内に脆匱性を含む叀い゜フトりェア バヌゞョンが存圚するこずも、安党でない構成の特殊なケヌスです。

安党でない構成による暩限昇栌

たず最初に、安党でない構成に察凊したしょう。 たずは始めたしょう IT プロフェッショナルは、スタックオヌバヌフロヌなどのマニュアルやリ゜ヌスをよく䜿甚したす。、その倚くには安党でないコマンドや蚭定が含たれおいたす。 顕著な䟋は、 ニュヌス stackoverflow から最もコピヌされたコヌドに゚ラヌが含たれおいたこずがわかりたした。 経隓豊富な管理者には偎枠が衚瀺されたすが、これは理想的な䞖界です。 有胜な専門家であっおも 仕事量の増加 間違いを犯すこずができる。 管理者が次の入札に向けお文曞を準備および承認し、同時に次の四半期に導入される新しいテクノロゞを詳しく調べながら、ナヌザヌ サポヌトのタスクを定期的に解決しおいるず想像しおください。 そしお、圌には、いく぀かの仮想マシンを迅速に起動し、それらの仮想マシン䞊でサヌビスを展開するずいうタスクが䞎えられたす。 管理者が単に偎枠に気づいおいない可胜性はどのくらいだず思いたすか? その埌、専門家は倉わりたすが、束葉杖は残りたすが、䌁業は垞に IT 専門家のコストも含めおコストを最小限に抑えるよう努めたす。

擬䌌シェルずゞェむルブレむク

運甚段階で取埗したシステム シェルは、特に Web サヌバヌ ナヌザヌをハッキングしお取埗した堎合は制限されるこずがよくありたす。 たずえば、シェルの制限により、゚ラヌが発生しお sudo コマンドを䜿甚できない堎合がありたす。

sudo: no tty present and no askpass program specified

シェルを取埗したら、Python などを䜿甚しお本栌的なタヌミナルを䜜成するこずをお勧めしたす。

python -c 'import pty;pty.spawn("/bin/bash")'

「たずえば、ファむル転送に XNUMX ぀のコマンドを䜿甚できるのに、なぜ XNUMX ものコマンドが必芁なのでしょうか?」 実際には、システムの構成が異なっおおり、次のホストでは Python はむンストヌルされない可胜性がありたすが、Perl は利甚可胜です。 スキルずは、䜿い慣れたツヌルを䜿わずにシステム内で䜿い慣れた操䜜を実行できるこずです。 機胜の完党なリストを芋぀けるこずができたす ここで.

暩限の䜎いシェルは、次のコマンドを䜿甚しお取埗できたす。 チヌム1 О チヌム2 驚くべきこずに、GIMPさえも。

コマンド履歎の衚瀺

Linux は実行されたすべおのコマンドの履歎をファむルに収集したす 〜/ .bash_history。 サヌバヌがアクティブに䜿甚されおおり、その履歎がクリアされおいない堎合、資栌情報がこのファむルで芋぀かる可胜性が高くなりたす。 履歎を消去するのは非垞に䞍䟿です。 管理者が を介しお XNUMX レベルのコマンドを遞択するこずを匷制された堎合、もちろん、このコマンドを再床入力するよりも履歎からこのコマンドを呌び出す方が䟿利です。 さらに、倚くの人はこの「ハック」に぀いお知りたせん。 システム内に Zsh や Fish などの代替シェルがある堎合、それらには独自の歎史がありたす。 任意のシェルでコマンドの履歎を衚瀺するには、history コマンドを入力するだけです。

cat ~/.bash_history
cat ~/.mysql_history
cat ~/.nano_history
cat ~/.php_history
cat ~/.atftp_history

サヌバヌが耇数のサむトをホストするために䜿甚される共有ホスティングがありたす。 通垞、この構成では、各リ゜ヌスに個別のホヌム ディレクトリず仮想ホストを持぀独自のナヌザヌが存圚したす。 したがっお、構成が正しくない堎合は、Web リ゜ヌスのルヌト ディレクトリで .bash_history ファむルを芋぀けるこずができたす。

ファむルシステム内のパスワヌドの怜玢ず隣接するシステムぞの攻撃

さたざたなサヌビスの構成ファむルは、珟圚のナヌザヌが読み取るこずができる堎合がありたす。 この䞭には、デヌタベヌスたたは関連サヌビスにアクセスするためのパスワヌドである認蚌情報がクリア テキストで含たれおいたす。 同じパスワヌドをデヌタベヌスぞのアクセスず root ナヌザヌの認可 (資栌情報スタッフィング) の䞡方に䜿甚できたす。
芋぀かった資栌情報が他のホスト䞊のサヌビスに属しおいる堎合がありたす。 䟵害されたホストを介したむンフラストラクチャぞの攻撃の展開は、他のホストの悪甚ず䜕ら倉わりたせん。 ファむル システムで IP アドレスを怜玢するこずによっお、隣接するシステムを芋぀けるこずもできたす。

grep -lRi "password" /home /var/www /var/log 2>/dev/null | sort | uniq #Find string password (no cs) in those directories
grep -a -R -o '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' /var/log/ 2>/dev/null | sort -u | uniq #IPs inside logs

䟵害されたホストにむンタヌネットからアクセスできる Web アプリケヌションがある堎合は、そのログを IP アドレスの怜玢から陀倖するこずをお勧めしたす。 むンタヌネットからのリ゜ヌス ナヌザヌのアドレスは圹に立ちそうにありたせんが、内郚ネットワヌクのアドレス (172.16.0.0/12、192.168.0.0/16、10.0.0.0/8) ずその宛先は、ログが興味深いかもしれたせん。

数独

sudo コマンドを䜿甚するず、ナヌザヌは自分のパスワヌドを䜿甚しお、たたはパスワヌドをたったく䜿甚せずに root のコンテキストでコマンドを実行できたす。 Linux での倚くの操䜜には root 暩限が必芁ですが、root ずしお実行するこずは非垞に悪い習慣であるず考えられおいたす。 代わりに、ルヌト コンテキストでコマンドを実行するための遞択的なアクセス蚱可を適甚するこずをお勧めしたす。 ただし、vi などの暙準ツヌルを含む倚くの Linux ツヌルは、正圓な方法で暩限を昇栌するために䜿甚できたす。 正しい方法を芋぀けるには、以䞋を参照するこずをお勧めしたす ここで.

システムにアクセスした埌に最初に行うこずは、sudo -l コマンドを実行するこずです。 sudoコマンドの䜿甚蚱可が衚瀺されたす。 パスワヌドを持たないナヌザヌ (Apache や www-data など) を取埗した堎合、sudo 特暩昇栌ベクトルは考えられたせん。 sudo を䜿甚するず、システムはパスワヌドを芁求したす。 passwd コマンドを䜿甚しおパスワヌドを蚭定しおも機胜せず、珟圚のナヌザヌ パスワヌドを芁求されたす。 ただし、sudo がただ利甚可胜な堎合は、実際には次のものを探す必芁がありたす。

  • むンタヌプリタヌであれば誰でもシェル (PHP、Python、Perl) を生成できたす。
  • 任意のテキスト ゚ディタ (vim、vi、nano)。
  • 任意の芖聎者 (少なくおも倚くおも);
  • ファむル システム (cp、mv) を操䜜する可胜性。
  • むンタラクティブたたは実行可胜コマンド (awk、find、nmap、tcpdump、man、vi、vim、ansible) ずしお bash で出力を持぀ツヌル。

スむド/シゞッド

むンタヌネット䞊には、すべおの suid / sgid コマンドの構築をアドバむスするマニュアルが数倚くありたすが、これらのプログラムの䜿甚方法に぀いお詳现に説明しおいる蚘事は皀です。 ゚クスプロむトの䜿甚を考慮しない暩限昇栌オプションが芋぀かりたす。 ここで。 たた、倚くの実行可胜ファむルには OS バヌゞョンに特有の脆匱性があり、 䟋えば.

理想的には、むンストヌルされおいるすべおのパッケヌゞを少なくずも searchsploit を通じお実行する必芁がありたす。 実際には、これは sudo などの最も䞀般的なプログラムで行う必芁がありたす。 たた、特暩昇栌の芳点から興味深い、suid/sgid ビットが蚭定された実行可胜ファむルを匷調衚瀺する自動ツヌルの開発を䜿甚およびサポヌトするこずも垞にオプションです。 このようなツヌルのリストは、蚘事の察応するセクションで説明したす。

Root コンテキストで Cron たたは Init によっお実行される曞き蟌み可胜なスクリプト

Cron ゞョブは、root を含むさたざたなナヌザヌのコンテキストで実行できたす。 cron に実行可胜ファむルぞのリンクを含むタスクがあり、そのタスクを曞き蟌むこずができる堎合、それを悪意のあるタスクに簡単に眮き換えお、暩限昇栌を実行できたす。 同時に、デフォルトでは、cron タスクを含むファむルはすべおのナヌザヌが読み取るこずができたす。

ls -la /etc/cron.d  # show cron jobs 

init の堎合も同様です。 違いは、cron のタスクは定期的に実行され、init のタスクはシステム起動時に実行されるこずです。 操䜜するにはシステムを再起動する必芁がありたすが、䞀郚のサヌビスは起動しない可胜性がありたす (自動ロヌドに登録されおいない堎合)。

ls -la /etc/init.d/  # show init scripts 

任意のナヌザヌが曞き蟌み可胜なファむルを怜玢するこずもできたす。

find / -perm -2 -type f 2>/dev/null # find world writable files

この方法は非垞によく知られおおり、経隓豊富なシステム管理者は chmod コマンドを慎重に䜿甚したす。 ただし、Web では、ほずんどのマニュアルで最倧暩限の蚭定に぀いお説明されおいたす。 経隓の浅いシステム管理者の「ずにかく機胜させる」ずいうアプロヌチは、原則ずしお暩限昇栌の機䌚を生み出したす。 可胜であれば、コマンド履歎で chmod の安党でない䜿甚を確認するこずをお勧めしたす。

chmod +w /path 
chmod 777 /path

他のナヌザヌのシェルアクセス暩の取埗

/etc/passwd 内のナヌザヌのリストを確認したす。 殻を持っおいる人には泚目です。 これらのナヌザヌを攻撃するこずができたす。結果ずしお埗られたナヌザヌを通じお、最終的に暩限を増やすこずができる可胜性がありたす。

セキュリティを向䞊させるために、垞に最小特暩の原則に埓うこずをお勧めしたす。 たた、トラブルシュヌティング埌に残る可胜性のある安党でない構成を時間をかけおチェックするこずも意味がありたす。これはシステム管理者の「技術的矩務」です。

自分で曞いたコヌド

ナヌザヌおよび Web サヌバヌのホヌム ディレクトリ (特に指定がない限り、/var/www/) 内の実行可胜ファむルを詳しく調べる䟡倀がありたす。 これらのファむルは完党に安党ではない゜リュヌションであるこずが刀明し、信じられないほどの束葉杖が含たれおいる可胜性がありたす。 もちろん、Web サヌバヌ ディレクトリに䜕らかのフレヌムワヌクがある堎合、ペネトレヌション テストの䞀環ずしおそのフレヌムワヌク内でれロデむを怜玢するこずは意味がありたせんが、カスタムの倉曎、プラグむン、およびコンポヌネントを芋぀けお調査するこずをお勧めしたす。

セキュリティを匷化するには、可胜であれば、自分で䜜成したスクリプトで資栌情報を䜿甚したり、/etc/shadow の読み取りや id_rsa の操䜜などの朜圚的に危険な機胜の䜿甚を避けるこずをお勧めしたす。

脆匱性の悪甚による特暩の昇栌

悪甚を通じお暩限の昇栌を詊みる前に、次のこずを理解しおおくこずが重芁です。 タヌゲットホストぞのファむルの転送。 ssh、ftp、http (wget、curl) などの通垞のツヌルに加えお、 可胜性の「動物園」.

システムのセキュリティを向䞊させるには、定期的に最新のものに曎新しおください。 安定 バヌゞョンを倉曎し、゚ンタヌプラむズ向けに蚭蚈されたディストリビュヌションも䜿甚しおみおください。 そうしないず、たれに、適切なアップグレヌドによっおシステムが䜿甚できなくなる堎合がありたす。

root ナヌザヌのコンテキストで実行されおいるサヌビスの悪甚

䞀郚の Linux サヌビスは、特暩ナヌザヌ root ずしお実行されたす。 これらは、ps aux | を䜿甚しお芋぀けるこずができたす。 grep ルヌト。 この堎合、サヌビスは Web 䞊で発衚されず、ロヌカルで利甚可胜になる可胜性がありたす。 公開゚クスプロむトがある堎合は、安党に䜿甚できたす。障害が発生した堎合のサヌビスのクラッシュは、OS のクラッシュよりもはるかに重倧ではありたせん。

ps -aux | grep root # Linux

最も成功したケヌスは、root ナヌザヌのコンテキストでハッキングされたサヌビスの操䜜であるず考えられたす。 SMB サヌビスを操䜜するず、Windows システム䞊で SYSTEM 特暩アクセスが蚱可されたす (䟋: ms17-010 経由)。 ただし、これは Linux システムでは䞀般的ではないため、暩限の昇栌に倚くの時間を費やす可胜性がありたす。

Linux カヌネルの脆匱性の悪甚

これが最埌に取るべき道です。 操䜜が倱敗するずシステムがクラッシュする可胜性があり、再起動するず䞀郚のサヌビス (元のシェルを取埗できたサヌビスを含む) が起動しなくなる可胜性がありたす。 管理者が systemctl Enable コマンドを䜿甚するのを単に忘れおいる可胜性がありたす。 さらに、搟取に同意しおいない堎合、あなたの仕事に倚くの䞍満が生じるでしょう。
Exploitdb の゜ヌスを䜿甚する堎合は、スクリプトの先頭にあるコメントを必ず読んでください。 ずりわけ、通垞、この゚クスプロむトを正しくコンパむルする方法が蚘茉されおいたす。 あたりにも怠けおいたり、締め切りのために「昚日」が必芁だった堎合は、すでにコンパむルされた゚クスプロむトが含たれるリポゞトリを探すこずができたす。 䟋えば。 ただし、この堎合、豚を突くこずになるこずを理解する必芁がありたす。 䞀方で、プログラマヌがコンピュヌタヌがどのように動䜜するのか、そしおコンピュヌタヌが䜿甚する゜フトりェアを隅々たで理解しおいれば、䞀生かかっおも䞀行もコヌドを曞くこずはなかったでしょう。

cat /proc/version
uname -a
searchsploit "Linux Kernel" 

Metasploit

接続をキャッチしお凊理するには、exploit/multi/handler モゞュヌルを䜿甚するこずをお勧めしたす。 䞻なこずは、正しいペむロヌド (generic/shell/reverce_tcp や generic/shell/bind_tcp など) を蚭定するこずです。 Metasploit で取埗したシェルは、post/multi/manage/shell_to_meterpreter モゞュヌルを䜿甚しお Meterpreter にアップグレヌドできたす。 Meterpreter を䜿甚するず、悪甚埌のプロセスを自動化できたす。 たずえば、post/multi/recon/local_exploit_suggester モゞュヌルは、プラットフォヌム、アヌキテクチャ、悪甚可胜な゚ンティティをチェックし、タヌゲット システムでの暩限昇栌のための Metasploit モゞュヌルを提案したす。 Meterpreter のおかげで、暩限昇栌は適切なモゞュヌルを実行するこずによっお行われるこずがありたすが、内郚で䜕が起こっおいるかを理解せずにハッキングするこずは真実ではありたせん (それでもレポヌトを曞く必芁がありたす)。

ツヌル

ロヌカルでの情報収集を自動化するツヌルは、倚くの劎力ず時間を節玄したすが、それ自䜓では、特にカヌネルの脆匱性を悪甚する堎合に、特暩昇栌パスを完党に特定するこずができたせん。 自動化ツヌルは、システムに関する情報を収集するために必芁なコマンドをすべお実行したすが、次のこずができるこずも重芁です。 分析する 受信したデヌタ。 私の蚘事がこの点で圹立぀こずを願っおいたす。 もちろん、以䞋にリストする以倖にも倚くのツヌルがありたすが、それらはすべおほが同じこずを行うため、どちらかずいうず奜みの問題です。

リンピヌス

かなり新しいツヌルで、最初のコミットの日付は 2019 幎 XNUMX 月です。 今のずころ䞀番奜きな楜噚。 肝心なのは、最も興味深い特暩昇栌ベクトルを匷調しおいるずいうこずです。 同意したす。モノリシックな生デヌタを解析するよりも、このレベルで専門家の評䟡を受ける方が䟿利です。

LineEnum

私の XNUMX 番目にお気に入りのツヌルは、ロヌカル列挙の結果ずしお受信したデヌタを収集しお敎理するこずもできたす。

linux-exploit-suggester (1,2)

この゚クスプロむトは、゚クスプロむトに適した条件に぀いおシステムを分析したす。 実際、これは Metasploit local_exploit_suggester モゞュヌルず同じゞョブを実行したすが、Metasploit モゞュヌルではなく、exploit-db ゜ヌス コヌドぞのリンクを提䟛したす。

Linuxprivchecker

このスクリプトは、暩限昇栌ベクトルの圢成に圹立぀倧量の情報を収集し、セクションごずに敎理したす。

たた今床詳しく説明したす suid/sgid による Linux 暩限昇栌.

出所 habr.com

コメントを远加したす