W tym poście chciałbym opisać sposób rozwiązania zadania picoCTF Read my Cert z działu Cryptography.
W zadaniu trzeba odczytać certyfikat i standardowo znaleźć flagę. Do zadaniu dołączony certyfikat (readmycert.csr), który po odczytaniu np. w programie Notepad++ wygląda następująco:
- -----BEGIN CERTIFICATE REQUEST-----
- MIICpzCCAY8CAQAwPDEmMCQGA1UEAwwdcGljb0NURntyZWFkX215Y2VydF8zYWE4
- MDA5MH0xEjAQBgNVBCkMCWN0ZlBsYXllcjCCASIwDQYJKoZIhvcNAQEBBQADggEP
- ADCCAQoCggEBAN1PdpW4sKum7AhFubDl86sflki20dWKkZ/iZBYYX/RYqZIWm9ve
- pdfwkeiDdz7KriPzM9tTDuJm1kWv8/3AxHrYwliFHK0lsmUYdOcPfrvlh6SIuZwH
- vxhrR0DJ0+W5vU+4j9G/hk2+JLMURh8WZadwBhRcfIxk97OXujjvHS9KplMAs5ul
- cSSQcv77QkIcxVg1OSDVZoEjTr131g+/Jox3T+uFPEvzF9iq03JMU39oqfGaFL02
- EQTaTl8efLIDkGxrKCc+Jhn4e1mD+9UlUmIn9nsOBCYNrnfq4usAL10ZPMDty2Sx
- yVTl0171trvCA9DF5PRG6eMYirJOmF18oSUCAwEAAaAmMCQGCSqGSIb3DQEJDjEX
- MBUwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAMa7s/l3
- mAwJi7LsosPS6/VlZwfTdiJAv+WOKN9T1q2JRHsAGRrW9Gz5p7nSBKJxevRaOMwn
- XWK0HqmN3y2/lor50jWzqLhM4TnbKsakXnEIo90XgHoy+n0DL0296Lg/xoXrRgrh
- 2o3rtZTc+irqUzTRM7Q1F76LNmgtEXqvbOm6Gx2dASPhVAAfylRBCTyz2dYwg2vM
- kwt4e5bTvpze/xyTyI8Pydq09YYJe0+a2cHSgcoyGoWXjIK4CUxjBNXAFxSPCcS3
- 5JRkBnyGo+KL+XtuK9yCX7xBFkwLybK7Mj4TeGiwDsR/0SwqyWGb7Q2m58ay8RVm
- pmAIEs21M3236Z4=
- -----END CERTIFICATE REQUEST-----
Certyfikat jest zapisany w formacie PEM, ponieważ znajduje się w standardowych nagłówkach dla tego typu certyfikatów:
- -----BEGIN CERTIFICATE REQUEST-----
- //Base64
- -----END CERTIFICATE REQUEST-----
Certificate request oznacza, że jest to CSR (ang. Certificate Signing Request). Co też widać po rozszerzeniu pliku.
CSR jest to żądanie podpisania certyfikatu, czyli specjalnie sformatowany plik, który zawiera dane jakie są przesyłane do urzędu certyfikacji w celu wygenerowania certyfikatu SSL/TLS.
W skład CSR wchodzi
- Nazwa podmiotu - np. CN (nawa domeny), O, OU, L ,ST, C (inne dane organizacyjne)
- Klucz publiczny
- Algorytm i długość klucza,
- Podpis cyfrowy - wykonany z wykorzystaniem klucza prywatnego, aby potwierdzić autentyczność CSR.
Inne typy nagłówków jakie można spotkać to np.
- -----BEGIN CERTIFICATE----- //certyfikat (X.509)
- -----BEGIN RSA PRIVATE KEY----- //klucz prywatny
- -----BEGIN PUBLIC KEY----- //klucz publiczny
- -----BEGIN X509 CRL----- //lista unieważnionych certyfikatów
Aby zdekodować certyfikat można posłużyć się biblioteką openssl:
- openssl req -in readmycert.csr -noout -text
Gdzie:
- noout - nie będzie wypisywana zawartość pliku CSR w formacie base64
-text - wyświetl zawartość CSR w postaci tekstu, w formacie łatwym do odzczytania.
Innym sposobem jest skorzystanie z stony internetowej, która pozwoli na zdekodowanie danych np. SSLShopper - CSR Decoder.
Brak komentarzy:
Nowe komentarze są niedozwolone.