読者です 読者をやめる 読者になる 読者になる

DARK MATTER

CDI Engineer's Technical Blog

Burp Extension JSON Prettyの公開

Burp Suite Development Web

こんにちは。技術部エンジニアの石垣です。

ウェブ診断を行っていると、たまに出くわすJSON

burp suite exitension BApp Details で公開されているJsonDecoder があるんですが、Jythonを使う必要がありメモリーを大食いするのが個人的に嫌なので、GSONを利用した表示整形アプリを作りました。サクッと動くので軽いです。

以下のURLにpluginを公開しているのでダウンロードして利用下さい。

https://github.com/CyberDefenseInstitute/burp-pretty-json/releases

Happy hacking!

スマホにインストールしたBurpの証明書の確認方法

Burp Suite Android iOS

以前の記事スマホへのBurpの証明書のインストール - DARK MATTERでスマホ端末にBurpの証明書をインストールする方法を紹介しました。

インストールされる証明書は(共通のKeystoreをインポートしていない限り)そのBurp固有の証明書であるため、他のPCのBurpの証明書とは異なります。
スマホ端末にBurpの証明書をインストールしているはずなのにHTTPS通信でエラーが出る場合、実はその証明書は他のPCのBurpの証明書だったということがよくある原因の一つとして挙げられます。
一見すると適切にBurpの証明書が端末にインストールされているため、問題に気付かず解決に時間が取られることもあります。

本稿では端末にインストールされているBurpの証明書が、自身のPC上のBurpの証明書と異なっているかどうかを判定する方法を紹介します。

Burpから情報を取得

まずは自身のPC上のBurpからcacert.derを取得し、opensslコマンドを使って情報を取得します。

$ openssl x509 -in cacert.der -inform DER -text -noout -fingerprint

実行すると以下のような出力が得られます。

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1471231273 (0x57b13529)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=PortSwigger, ST=PortSwigger, L=PortSwigger, O=PortSwigger, OU=PortSwigger CA, CN=PortSwigger CA
        Validity
            Not Before: Aug 15 03:21:13 2016 GMT
            Not After : Aug 10 03:21:13 2036 GMT
        Subject: C=PortSwigger, ST=PortSwigger, L=PortSwigger, O=PortSwigger, OU=PortSwigger CA, CN=PortSwigger CA
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:c2:c5:73:ac:da:38:57:bf:5b:e1:88:3b:64:56:
                    36:40:9d:d4:1e:b0:51:f3:6d:d1:af:c5:1a:e4:82:
                    7a:ae:63:3d:95:dd:e5:c2:93:f6:ca:bf:ae:92:e4:
                    a4:70:b2:1f:98:22:76:5e:41:16:3e:73:3f:fb:b4:
                    01:47:36:86:16:4b:91:61:fe:e9:c2:30:62:fd:79:
                    69:89:26:8f:39:8f:5e:05:57:c7:45:db:8e:35:bf:
                    61:4e:bd:a3:c4:72:cd:c5:df:ad:3e:84:37:1e:12:
                    64:f7:21:ce:12:0e:33:26:f6:8d:09:ee:78:9d:6a:
                    40:cd:6e:ac:db:f2:d0:87:d1:ad:28:8c:c3:32:3c:
                    a0:88:a5:02:ea:4f:73:91:13:b5:1b:63:6a:94:91:
                    b5:19:94:5a:e7:e2:ec:4a:0d:df:8c:16:59:82:56:
                    c2:f8:16:2c:bf:7f:61:3c:4f:43:e9:0a:cc:a7:15:
                    44:88:10:aa:da:ee:4d:01:11:a3:ee:60:4f:8e:8b:
                    eb:4e:e9:ba:76:3e:84:e2:63:b0:57:df:34:80:60:
                    4c:7f:25:0e:c3:55:dc:6c:5c:0b:d8:a9:6a:81:94:
                    ee:c4:3b:84:01:d5:a0:0c:fb:98:a3:1c:d4:b6:25:
                    be:c8:aa:3a:d0:9b:6a:60:59:fd:17:6d:ae:3d:a6:
                    87:0f
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: critical
                CA:TRUE, pathlen:0
            X509v3 Subject Key Identifier: 
                1C:C9:FC:E8:08:04:AC:0E:3D:C9:08:8A:FF:DA:38:BD:E1:A9:7D:6A
    Signature Algorithm: sha256WithRSAEncryption
         9a:e7:94:c1:38:0f:16:d0:27:27:98:d0:fd:1a:72:61:71:ac:
         75:19:34:b5:e9:f5:9b:1a:e4:10:10:eb:93:2e:15:31:a1:ff:
         eb:f9:46:24:ca:7a:62:43:8e:91:84:3c:bd:a4:4b:3b:13:e4:
         58:23:7e:55:0b:de:76:7f:74:02:04:63:8d:55:1c:ae:79:5b:
         43:76:50:c5:4c:b8:15:09:cb:a7:a0:09:5c:2c:5c:d3:24:05:
         02:03:a7:70:43:c6:fe:7c:37:66:31:c1:66:33:65:0b:4d:6c:
         0a:df:a7:27:ca:fd:8f:2a:72:4c:18:9e:f3:ea:b8:3e:b0:f6:
         46:af:89:7a:89:7c:83:2f:c8:b0:2b:6e:0f:5a:54:d3:83:95:
         59:ff:1b:8a:ec:ca:0e:c9:1b:68:8b:b4:8b:72:34:9b:4c:14:
         2a:69:5f:d5:35:8e:b5:c5:05:b9:f4:8a:a3:91:fc:08:2e:be:
         ed:3a:8b:ab:87:cb:e1:c0:85:c4:7c:8f:ca:d7:39:f4:14:38:
         72:af:5a:28:e2:fd:94:39:ac:f7:78:ee:39:b5:28:ed:27:01:
         b1:d7:70:25:d2:ec:21:62:d0:c3:ba:6c:bb:9b:40:fc:d0:c4:
         cf:d9:7f:35:c4:a9:2b:c1:15:3e:44:a0:9d:86:fa:54:37:97:
         73:ab:61:3b
SHA1 Fingerprint=33:C0:60:90:27:F3:25:B0:7D:FF:48:A9:FA:F5:EF:29:7B:29:82:C8

この出力結果と比較することで異なっているかどうかを確認することが可能です。

iOSの場合

設定 > 一般 > プロファイル > 該当のプロファイルをタップ > 詳細 > 該当項目をタップ

と操作し、「署名」の値がopensslコマンドの出力下部の「Signature Algorithm」の値と異なっているかを確認します。

Androidの場合

設定 > セキュリティ > 信頼できる認証情報 > ユーザー > 該当の証明書をタップ

と操作し、表示される情報の末尾の「SHA-1指紋」の値がopensslコマンドの出力の「SHA1 Fingerprint」の値と異なっているかを確認します。

上記が異なっていたら、改めて自身のPC上のBurpの証明書をインストールし直してください。

株式会社サイバーディフェンス研究所 / Cyber Defense Institute Inc.