## 2 Přístup k API ### 2.1 Nastavení shellu Získejte API token ve webovém rozhraní na stránce uživatelského profilu (__User > Profile > API key > Generate__). Nastavte shell prostředí pro přístup k API: export APIKEY="" export URL="https://sner-hub.flab.cesnet.cz" alias snerapi='curl -s -H "X-API-KEY: $APIKEY"' ### 2.2 Dotaz na jednoho hostitele Žádná služba **by neměla** být viditelná z veřejného Internetu na hlavních IdP nebo Directory serverech. snerapi -XPOST \ "$URL/api/v2/public/storage/host" \ --json '{"address": "203.0.113.50"}' | jq { "address": "203.0.113.50", "hostname": "dc1.example.org", "services": [ { "info": "extrainfo: Anonymous bind OK", "notes": [ { "data": "[\"cpe:/a:openldap:openldap\"]", "xtype": "cpe" }, { "data": "{\"product\": \"OpenLDAP\", \"version\": \"2.2.X - 2.3.X\"}" "xtype": "nmap.banner_dict" } ], "port": 636, "proto": "tcp", "state": "open:syn-ack" } ] } ### 2.3 Dotaz na více hostitelů Zkontrolujte služby dostupné v segmentu sítě katedry. snerapi -XPOST \ "$URL/api/v2/public/storage/range" \ --json '{"cidr": "203.0.113.0/26"}' | jq [ { "address": "203.0.113.3", "hostname": "dhcp-wk1.dept.example.org", "services": [ { "info": "product: OpenSSH version: 8.4p1 Debian 5+deb11u1 extrainfo: protocol 2.0 ostype: Linux", "port": 443, "proto": "tcp", "state": "open:syn-ack" }, { "port": 22, "proto": "tcp", "state": "open:syn-ack" } ] }, { "address": "203.0.113.1", "hostname": "gw.dept.example.org", "services": [ { "port": 179, "proto": "tcp", "state": "open:syn-ack" } ] } ] ### 2.4 Seznam služeb s filtrováním Záložní infrastruktura **by neměla** být dostupná z veřejného Internetu. Podrobnou syntaxi filtru najdete ve [[https://github.com/snerstack/sner-monorepo/blob/main/server/sner/server/sqlafilter.py|specifikaci filtru]]. snerapi -XPOST \ "$URL/api/v2/public/storage/servicelist" \ --json '{"filter": "Service.port==\"445\" AND Service.state ilike \"open:%\""}' | jq [ { "address": "2001:db8::71", "info": "product: Samba smbd version: 3.X - 4.X extrainfo: workgroup: UCN hostname: BACKUP-EXAMPLE", "port": 445, "proto": "tcp", "state": "open:syn-ack" } ] ### 2.5 Výpis endpointů s konkrétním produktem Seznam populárních databázových systémů vystavených do veřejného Internetu. snerapi -XPOST \ "$URL/api/v2/public/storage/versioninfo" \ --json '{"product":"mariadb"}' | jq [ { "host_address": "203.0.113.30", "host_hostname": "serverx.example.org", "service_port": 3306, "service_proto": "tcp", "product": "mariadb", "version": "10.3.38", "extra": { "full_version": "5.5.5-10.3.38-MariaDB-1:10.3.38+maria~ubu2004-log" } } ] ### 2.6 Přehled produktů podle hostitelů snerapi -XPOST \ "$URL/api/v2/public/storage/versioninfo" | jq -s \ '.[] | map({product,host_address}) | group_by(.product) | map({product: .[0].product, host_address: map(.host_address)})' [ { "product": "mariadb", "host_address": [ "203.0.113.30" ] }, { "product": "zookeeper", "host_address": [ "203.0.113.30", "2001:db8::30" ] } ] ### 2.7 Dotaz na zranitelnosti s filtrováním Podrobnou syntaxi filtru najdete ve [[https://github.com/snerstack/sner-monorepo/blob/main/server/sner/server/sqlafilter.py|specifikaci filtru]]. Získejte všechny zranitelnosti s alespoň střední závažností: snerapi -XPOST \ "$URL/api/v2/public/storage/vulnlist" \ --json '{"filter": "Vuln.severity not_in [\"info\", \"low\"]"}' | jq [ { "address": "203.0.113.30", "data": "{\"template-id\": \"ftp-anonymous-login\", ... }", "descr": "## Popis\n\nAnonymní FTP přístup umožňuje komukoliv ...", "hostname": "example.scanned.test", "name": "FTP Anonymous Login", "port": 21, "proto": "tcp", "refs": [ "URL-https://tools.ietf.org/html/rfc2577" ], "severity": "medium", "xtype": "nuclei.ftp-anonymous-login" } ] Získejte všechny zranitelnosti na hostitelích v síti X: snerapi -XPOST \ "$URL/api/v2/public/storage/vulnlist" \ --json '{"filter": "Host.address inet_in \"203.0.113.0/26\""}' | jq [ { "address": "203.0.113.11", "data": "{\"template-id\": \"openssh-detect\", ...", "descr": "## Popis\n\nDetekována služba OpenSSH...", "hostname": "example.scanned.test", "name": "OpenSSH Service - Detect", "port": 22, "proto": "tcp", "refs": [ "URL-http://www.openwall.com/lists/oss-security/2016/08/01/2", "URL-http://www.openwall.com/lists/oss-security/2018/08/15/5", "URL-http://seclists.org/fulldisclosure/2016/Jul/51", "URL-https://nvd.nist.gov/vuln/detail/CVE-2016-6210", "URL-https://nvd.nist.gov/vuln/detail/CVE-2018-15473" ], "severity": "info", "via_target": "203.0.113.11", "xtype": "nuclei.openssh-detect" } ]