Раскрытие внутреннего адреса CVE-2000-0649
Описание уязвимости
Что по этому поводу говорят в https://www.pcisecuritystandards.org/
PCI DSS Requirement 1.3.7 на Youtube
TL;DR раскрытие внутренней адресации в вашей айти системе довольно опасно.
Нормальный ответ сервера выглядит так
HTTP/1.1 302 Moved Temporarily ... Location: https://foobar.com/amazing/
Ответ сервера с раскрытием внутреннего адреса
HTTP/1.1 302 Moved Temporarily ... Location: https://10.10.13.37/foobar/
Я скопировал для наглядности примеры request/response из статьи на LinkedIn. Он всё ещё заблокирован на территории РФ, что несомненно сильно подрывает веру в адекватность людей причастных к законотворчеству.
Нормальный запрос
Здесь мы видим внутренний IP
Как проверить
Проверка через curl
curl -v -I --http1.0 http[s]://foobar.com/index.php -k -H 'Host:'
Проверка через openssl
openssl s_client -host foobar.com -port 443 GET / HTTP/1.0
Проверка через telnet
telnet foobar.com 443 GET / HTTP/1.0
Проверка через nmap (http-internal-ip-disclosure)
nmap --script http-internal-ip-disclosure foobar.com
Проверка с помощью скрипта на python (см. ниже)
++++ Показать/Скрыть |
#!/usr/bin/env python3 # Written by Rafe Hart (@rafael_hart) """ Test an IP address (port 443) for CVE-2000-0649 """ import ssl import socket import re import sys def main(): if len(sys.argv) == 1: print("\nUsage: cve-2000-0643.py <example.com> or <IP>\n") sys.exit(1) target = sys.argv[1] s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect((target, 443)) s = ssl.wrap_socket(s, keyfile=None, certfile=None, server_side=False, cert_reqs=ssl.CERT_NONE, ssl_version=ssl.PROTOCOL_SSLv23) s.sendall(b'GET / HTTP/1.0\r\n\r\nConnection: close\r\n\r\n') except socket.error as exc: print("Did't work: %s" % exc) while True: new = s.recv(4096) if not new: s.close() break try: response = new.decode() pattern = re.compile(r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})') if pattern.search(response): print(target, "->", pattern.search(response).group()) except: sys.exit(1) if __name__ == '__main__': main()
++++