Skip to content

No data in the dashboard after running "docker compose run --rm amass enum -d owasp.org" successfully on clean build #4

@Columbus-droid

Description

@Columbus-droid

Setup

Ubuntu 24.04.1 LTS

Docker Desktop 4.37.1 (please note that there seems to be an issue where Docker Desktop won't run on my current LTS. Therefore, I use this workaround: https://askubuntu.com/a/1512215)

I have to use bash since I get an error when using zsh.

I deleted all containers, images and volumes prior to this test.

I pulled the latest version of the repository (64069de)

Since I ran into unexpected behavior when following the instructions in the "Configure the Conpose Enviroment" as per the docs I omitted this step. It is all marked as a recommendation and as far as I can tell, it should default to the passwords set in the config files if not specifically set here. This did not help to fix the errors, but I hope it will at least make it easier to trace the source of the error

Expected Behavior

When running the command

docker compose run --rm amass enum -d owasp.org

in bash from the folder amass-docker-compose created by pulling the repository, docker should pull all nececary images, build and run them and execute

amass enum -d owasp.org

The results of this should be available through the graphana dashboard on the dashboard on: https://localhost:3000 as per this video: Attack Surface Mapping with Jeff Foley from OWASP Amass

Actual Behavior

Docker succsessfully pulls and builds all containers and runns the provided command. When opening "localhost:3000" however there is no data available in graphana. When opening the developer tools and looking at the network tab I see that all queries made to: http://localhost:3000/api/ds/query return a Status Code 400.
Here is a sample response of such a query:

{
    "results": {
        "domains": {
            "error": "db query error: pq: no PostgreSQL user name specified in startup packet",
            "errorSource": "",
            "status": 500,
            "frames": [
                {
                    "schema": {
                        "refId": "domains",
                        "meta": {
                            "typeVersion": [
                                0,
                                0
                            ],
                            "executedQueryString": "SELECT DISTINCT substring(zone.name from '(([a-zA-Z0-9]{1}|[_a-zA-Z0-9]{1}[_a-zA-Z0-9-]{0,61}[a-zA-Z0-9]{1})[.]{1}[a-zA-Z]{2,61}$)') AS name FROM ((SELECT entity_id, content-\u003e\u003e'name' as name FROM entities WHERE etype = 'FQDN' \nAND entity_id IN (SELECT from_entity_id FROM edges WHERE etype = 'SimpleRelation' AND content-\u003e\u003e'label' = 'node')) as zone \nINNER JOIN edges ON zone.entity_id = edges.from_entity_id) \nWHERE edges.etype = 'PrefDNSRelation' AND edges.content-\u003e\u003e'label' = 'dns_record' AND edges.content-\u003e'header'-\u003e'rr_type' = '15'"
                        },
                        "fields": []
                    },
                    "data": {
                        "values": []
                    }
                }
            ]
        }
    }
}

I can successfully log in to the database created using:

Host: localhost:55432
User: grafana
PW: grafana

As specified in config/grafana/grafana.ini in the section: [database].
This leads me to believe that the database has been set up correctly.


EDIT 1:

After checking to see if any tables were created using DataGrip, I cannot see any tables in the "Default schema"


START EDIT 2:

After running the same command against a different URL. I first checked the logs of the container "postal". Here I can see active logs that I assume relate to the query I ran:

IVACY++REDACTED+FOR+PRIVACY+CH resp_time=0.296973 ser_name=postal_server status=200
2025-01-13 15:20:05 2025-01-13T14:20:05Z INF Request client_ip=172.xx.x.x method=GET path=/parse?address=infomaniak+network+societe+anonyme+redacted+for+privacy+redacted+for+privacy+redacted+for+privacy+chemin resp_time=0.357176 ser_name=postal_server status=200
2025-01-13 15:20:05 2025-01-13T14:20:05Z INF Request client_ip=172.xx.x.x  method=GET path=/expand?address=Infomaniak+Network+SA+REDACTED+FOR+PRIVACY+REDACTED+FOR+PRIVACY++REDACTED+FOR+PRIVACY+CH resp_time=0.306961 ser_name=postal_server status=200
2025-01-13 15:20:05 2025-01-13T14:20:05Z INF Request client_ip=172.xx.x.x  method=GET path=/parse?address=infomaniak+network+societe+anonyme+redacted+for+privacy+redacted+for+privacy+redacted+for+privacy+chemin resp_time=0.356319 ser_name=postal_server status=200

(I redacted the IP addresses queried)

Then I looked at the logs of "assetdb". After the command I ran had finished executing as per the status bar in the CLI, the following logs were printed:

2025-01-13 04:38:41 2025-01-13 03:38:41.874 UTC [103] LOG:  checkpoint starting: time
2025-01-13 04:38:42 2025-01-13 03:38:42.368 UTC [103] LOG:  checkpoint complete: wrote 5 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.415 s, sync=0.026 s, total=0.494 s; sync files=5, longest=0.009 s, average=0.006 s; distance=4 kB, estimate=7004 kB; lsn=0/33C2FB0, redo lsn=0/33C2F58

Now when I once again checked the DB using DataGrip I could see the database "assetdb" had been created, and it contained five tables in its public schema. When I tried fetching these, I got an error:

[42501] ERROR: permission denied for table entity_tags

Changing from:
User: grafana
PW: grafana

to

User: amass
PS: amass4OWASP

I can now query the contents of the tables. As far as I can tell, they look much like what can be seen in this video: Attack Surface Mapping with Jeff Foley from OWASP Amass at about 1h30min.

Despite this, the dashboard still shows the same behavior as before.

END EDIT 2


When checking the logs of the container: "assetdb" I can see a series of entries like the following, every time I manually reload the dashboard, or when the dashboard queries the db:

2025-01-13 03:51:25 2025-01-13 02:51:25.607 UTC [1087] FATAL:  no PostgreSQL user name specified in startup packet

This seems to indicate that the frontend is trying to connect to the db but that there is a problem in how that happens. Sadly, I am not savvy enough with docker to troubleshoot the exact root cause of this.

Inspecting the logs of the "grafana" container yields a series of entries like this:

2025-01-13 03:57:17 logger=context userId=0 orgId=1 uname= t=2025-01-13T02:57:17.010285072Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=172.18.0.1 time_ms=4 duration=4.232089ms size=381 referer="http://localhost:3000/?from=now-7d&orgId=1&refresh=1m&timezone=browser&to=now&var-addresses=%24__all&var-domains=google.com&var-geocity=&var-geoips=%24__all&var-geolist=%24__all&var-organizations=Google+LLC&var-subs=%24__all" handler=/api/ds/query status_source=downstream

Any help in resolving this would be greatly appreciated.
Thank you

Steps to Reproduce the Problem

  1. Start with a "clean slate" (remove all old images, containers and volumes from previous attempts. Use an unmodified version of, 64069de)

  2. Navigate to the repository root ("amass-docker-compose" if name left unchanged)

  3. Using bash run

docker compose run --rm amass enum -d owasp.org
  1. Wait for all containers to download, build and execution to finish.

  2. Open https://localhost:3000

  3. There should be a warning in several tiles saying: "No data"

  4. Open the DevTools and navigate to the "Network" tab

  5. Inspect the queries returning an error (status 400)

  6. Open Docker Desktop and inspect the logs of the container: "assetdb"

Disclaimer

It is absolutely possible that I simply did not read / misunderstood the documentation, and this is totally my fault. If so, I would be grateful for anyone to point this out to me and kindly reference the correct part of the documentation to read. I am fairly new to this, but I am willing to learn if given the chance.
Thanks

Changelog

13.01.24

  • Corrected minor spelling mistakes
  • Added an EDIT 1 under "Actual Behavior"
  • Added an EDIT 2 under "Actual Behavior"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions