## 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"
}
]