サーバー構成をダウンロードするためのPDF生成

素晴らしいhiqpdfプロジェクトがあります。



HTML品質のPDFを作成したり、画像を変換したりできます



ただし、デフォルトでは、js / iframeをhtmlに挿入できるという事実は考慮されておらず、これは他の目的に使用できます。



まあ、ためらうことなく自分のサイトで試しました。



これは、ブラウザコンソールでフレームを生成する方法です。



var str = ""; for (var i = 8000; i <= 9000; i++) { str += "#" + i; str += "<iframe src='http://localhost:" + i + "' height='60' width='300'></iframe><br/>"; } str;
      
      





このようなことが判明しました




これが港のサモスカンです。



スプラッシュが見つかりました(もちろんnmapは落ち着いて、さらに-p [8000-9000] -T4 -A -v hiqpdf.comを見つけましたが 、それも興味深いものです)。







しかし、最終的には他の人を例として脆弱性を実証し、プロセスの仕組みを理解するために独自の小さなデモを作成したため、すぐにはうまくいきませんでした。



.netにはAPIがあります。これは単に文字列を返し、すべてに+このサーバーでpdfを生成できるコードがあります。 コードは、不必要なジェスチャーなしでhiqpdf.comから直接取得されます。







4 iframe localhost / api / def / get







OK、これがWindows上の.netになっていることを確認してください



localhost / api / con.aspx-わからない場合は、con / auxおよびその他の種類のWindowsという名前のファイルは禁止されています。 脚はこれらが特定のデバイスであったときのdosの古代から成長ます。



たとえば、私はこのサイトが本当に気に入っています 。特に、手元に電話しかなく、コードを入力したい場合は特にそうです。



dotnetfiddle.net/con1.asmx-処理されたエラーと対応する404ページ

dotnetfiddle.net/con.asmx-これは、プール内のマネージコードに到達する運命ではなくなりました

dotnetfiddle.net/con.txt-これは、ディレクトリへのパスを取得する方法です(物理パスE:\ sitesroot \ 0 \ con.txt)







実際、なぜ私がバージョンを必要とするのかについての手がかりはありませんが、それが古く、あなたがそれらのゼロデイ脆弱性を知っていれば、理論的には役立ちます。 Lan、今最も興味深いのは、ローカルホストによると、ディレクトリを見つけることです。404エラーは閉じられておらず、そのまま取得します。







これは.netサイトであるため、web.config構成ファイルはルートにあります。







実際、それは軽量のデモでした。



そして今、実際のデータに基づいて(誰かの製品、彼らはすでに店をカバーしました;)







ああ、そこにはconnections.configファイルのセクションが含まれています。これは便利で、非標準で、ダウンロードが便利です。







さらにいくつかのデータ:







ここではすべてが明確であり、スクリーンショットを流し続けても意味がないと思います。

データベース全体が外部で閉じられているのは残念です。

そして、JSからはまだその方法がわかりません(はい、iframeだけでなくjsも使用できます)。



hiqpdfはそれとは何の関係もない、アプリケーション構成の問題、pdfデータで印刷するためのコードの送信(明確なhtmlがあることがわかっている場合はhtmlencodeを行う必要がある)、および他のライブラリ(標準のWebBrowserコンポーネントなど)も関係ないとすぐに言います。



実際、続き-PDFではなく、HTMLでさえなく、画像、たとえばpngが好きな人がいることがわかります。 また、WebBrowserコンポーネントを使用して画像を取得します(彼らは親切にコードを私と共有しましたが、使用されている製品の名前を公開しないように頼みました)。



結論-デフォルトのSystem.Windows.Forms.WebBrowserコンポーネントで実行されたjsを書くことができます:







ここにソース自体があります
 using (WebBrowser br = new WebBrowser()) { AutoResetEvent loadingWaiter = new AutoResetEvent(false); br.AllowNavigation = true; br.ScrollBarsEnabled = false; br.ScriptErrorsSuppressed = true; br.DocumentText = "0"; br.Width = 1024; br.Document.OpenNew(true); br.Document.Write(htmlCode); br.Refresh(); br.DocumentCompleted += (a, b) => loadingWaiter.Set(); loadingWaiter.WaitOne(590); br.Height = (int)(br.Document.Body.ScrollRectangle.Height * scale + 1); using (Bitmap bmp = new Bitmap(br.Width, br.Height)) { br.DrawToBitmap(bmp, new Rectangle(0, 0, br.Width, br.Height)); bmp.Save(stream, ImageFormat.Png); } }
      
      







htmlから任意の画像を作成する問題に興味がなかったので、彼の狂気については何も言えません。



発見の時点で、1kのリクエストをAPIに送信するだけで十分でした(もちろん、IISとアラートで発生しました。もちろん、プールが開始されたアカウントでログインしていない限り、同じサーバーに存在していました)。



修正方法-WebBrowserはIEであり、JS Windowsサーバーで無効にする必要があります。 私の経験では、これはすでにデフォルトに設定されており、異なる結果になったことは非常に幸運でした。



しかし、これは最悪であり、良い方法で-もちろん、そのようなコンポーネントにデータをそのまま挿入することはできません。 同様のコンポーネントを使用していることがわかっており、クライアントに制御文字が含まれている場合は、エスケープする必要があります。



HTML / JSの場合は、 HtmlEncodeを作成するだけです。



しかし、何かがあれば、 htmlToPdfConverter.RunJavaScript = falseを介したHiqPdfは、 JSを完全に禁止することできます。



これらはすべて前回ほど壮観ではありませんが、ご覧のとおり、サーバー構成の取得にも役立ちます。



All Articles