So recently I moved my blog, this very page you’re reading right now, onto CloudFlare Pages.

And I love it. Apart from the part where their hugo version is super old.

But Hey! they let ME define an own command to run and look at that; I’m even allowed to download things!

So this made me happy because now my blog can be served by CloudFlare’s edge network instead of my gentoo-raspberry-pi.

But what if I run something else?

Something more… Continuous…

I quickly hacked up this:

#!/bin/bash

set -ex

wget -c https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 -O gitlab-runner-linux-amd64
wget -c https://gitlab-runner-downloads.s3.amazonaws.com/latest/release.sha256 -O release.sha256

sed -i 's;binaries/;./;g' release.sha256
sha256sum --ignore-missing -c release.sha256

chmod +x ./gitlab-runner-linux-amd64

{
  RUNNER_NAME="$(hostname)" RUNNER_EXECUTOR=shell ./gitlab-runner-linux-amd64 register -n
  sed -i "s/concurrent = 1/concurrent = $(nproc)/" $HOME/.gitlab-runner/config.toml
  timeout 900 ./gitlab-runner-linux-amd64 run || true
  ./gitlab-runner-linux-amd64 unregister --all-runners || true
} &> null/index.html

true

and defined $CI_SERVER_URL and $REGISTRATION_TOKEN as Env-Vars in CloudFlare Pages.

Guess what - It actually works!

It happily accepts loads of CI/CD jobs and builds & ships them!

I can fully utilize it like any other GitLab Runner out there with one catch.

CloudFlare will stop the job after about 20 minutes of total runtime from what I saw.

That’s roughly 15 minutes of build-time tho!

And you can just run a cronjob on your gitlab-server to keep pushing empty-commits to GitHub in order to trigger new builds at CloudFlare every 18-20 minutes to keep the ball rolling :)

$ crontab -l
*/20 * * * * cd $HOME/src/cloudflare-runners && git commit --allow-empty -m "$(date)" && git push

See cloudflare-please-dont-sue-me.pages.dev for an updated view of my runner’s jobs etc.


But where is all the juicy stuff about that runner?

(Un)Fortunately they did a great job at securing their Env.

Luckily they left us with a decent C and Go toolchain (along with Ruby, NodeJS and other languages)

Interestingly enough, they seem to let me run in my own little Azure DevOps Pipeline!

With a 2 Core Xeon E5-2674v3 and 7GB of Memory it’s really not that shabby!

It also comes with mounted /run/docker.sock that one could try to probe around with.

Sadly it’s owned by 0:121 and doesnt allow anyone else to read/write to it - So that’s a bust without priv-elevation.

However the Network Stack is well isolated, no information from the path or surroundings are leaked.

Anyone knows what the fv-az[0-9]+-[0-9]+ hostnames stand for? Would be nice to decode them :)

The fact that they let you run nmap is a bit dangerous since it’s quite easy to make a matrix build to split up targets to scan and return artifacts.

And according to Ookla speedtest-cli it could do ~10Gbps - That could be abused for DDoS…

   Speedtest by Ookla
     Server: Ziply Fiber - Seattle, WA (id = 35180)
        ISP: Microsoft Corporation
    Latency:     4.74 ms   (0.04 ms jitter)
   Download:  8373.06 Mbps (data used: 10.4 GB)                               
     Upload:  1373.36 Mbps (data used: 669.9 MB)                               
Packet Loss: Not available.
 Result URL: https://www.speedtest.net/result/c/57850d40-0e6b-44e8-8c02-d6a7413c0a42

Other than that it’s not much to say about the runners to be honest. They’re quite handy little machines if you need free compute.


Appendix

Environment

  • Kernel
    Linux f65e59b6fa44 5.8.0-1036-azure #38~20.04.1-Ubuntu SMP Thu Jun 17 14:14:18 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
    
  • Distribution
    NAME="Ubuntu"
    VERSION="16.04.6 LTS (Xenial Xerus)"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 16.04.6 LTS"
    VERSION_ID="16.04"
    HOME_URL="http://www.ubuntu.com/"
    SUPPORT_URL="http://help.ubuntu.com/"
    BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
    VERSION_CODENAME=xenial
    UBUNTU_CODENAME=xenial
    
  • CPU/Memory/Disk
    $ lscpu
    Architecture:          x86_64
    CPU op-mode(s):        32-bit, 64-bit
    Byte Order:            Little Endian
    CPU(s):                2
    On-line CPU(s) list:   0,1
    Thread(s) per core:    1
    Core(s) per socket:    2
    Socket(s):             1
    NUMA node(s):          1
    Vendor ID:             GenuineIntel
    CPU family:            6
    Model:                 79
    Model name:            Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
    Stepping:              1
    CPU MHz:               2294.686
    BogoMIPS:              4589.37
    Hypervisor vendor:     Microsoft
    Virtualization type:   full
    L1d cache:             32K
    L1i cache:             32K
    L2 cache:              256K
    L3 cache:              51200K
    NUMA node0 CPU(s):     0,1
    Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt md_clear
    $ free -m
                  total        used        free      shared  buff/cache   available
    Mem:           6953         604         132           7        6216        5999
    Swap:          4095           7        4088
    $ df -h
    Filesystem      Size  Used Avail Use% Mounted on
    overlay          84G   51G   34G  61% /
    tmpfs            64M     0   64M   0% /dev
    tmpfs           3.4G     0  3.4G   0% /sys/fs/cgroup
    shm              64M     0   64M   0% /dev/shm
    /dev/root        84G   51G   34G  61% /__t                <-- Just the language tools
    tmpfs           696M  1.2M  695M   1% /run/docker.sock    <-- <3
    tmpfs           3.4G     0  3.4G   0% /proc/acpi
    tmpfs           3.4G     0  3.4G   0% /proc/scsi
    tmpfs           3.4G     0  3.4G   0% /sys/firmware
    
  • Variables
    NVM_INC=/opt/buildhome/.nvm/versions/node/v12.18.0/include/node
    NODE_VERSION=v12.18.0
    GIMME_CGO_ENABLED=true
    WASMER_CACHE_DIR=/opt/buildhome/.wasmer/cache
    rvm_bin_path=/opt/buildhome/.rvm/bin
    NF_IMAGE_TAG=v3.4.0
    WASMER_DIR=/opt/buildhome/.wasmer
    GEM_HOME=/opt/buildhome/.rvm/gems/ruby-2.7.1
    NVM_CD_FLAGS=
    SWIFTENV_ROOT=/opt/buildhome/.swiftenv
    TERM=unknown
    SHELL=/bin/bash
    NF_IMAGE_VERSION=68f5e4d1306f77b1959f42795d4901c8974b4fd8
    IRBRC=/opt/buildhome/.rvm/rubies/ruby-2.7.1/.irbrc
    PIPENV_VENV_IN_PROJECT=1
    GIMME_TYPE=binary
    LZ4_VERSION=1.8.0
    OLDPWD=/opt/buildhome/repo
    MY_RUBY_HOME=/opt/buildhome/.rvm/rubies/ruby-2.7.1
    LC_ALL=en_US.UTF-8
    GIT_TERMINAL_PROMPT=0
    NVM_DIR=/opt/buildhome/.nvm
    USER=buildbot
    SUDO_USER=pages
    CUSTOM_RUBY=0
    SUDO_UID=2501
    rvm_path=/opt/buildhome/.rvm
    RVM_DIR=/opt/buildhome/.rvm
    USERNAME=buildbot
    VIRTUAL_ENV=/opt/buildhome/python2.7
    GIMME_NO_ENV_ALIAS=true
    rvm_prefix=/opt/buildhome
    PATH=/opt/buildhome/.wasmer/bin:/opt/buildhome/.yarn/bin:/opt/buildhome/.config/yarn/global/node_modules/.bin:/opt/buildhome/.wasmer/bin:/opt/buildhome/.gimme/versions/go1.14.4.linux.amd64/bin:/opt/buildhome/cache/.binrc-a5679f71f5966d1b3450c8dcd52d4743ec08e632/binaries/gohugoio/hugo/v0.54.0:/opt/buildhome/.rvm/gems/ruby-2.7.1/bin:/opt/buildhome/.rvm/gems/ruby-2.7.1@global/bin:/opt/buildhome/.rvm/rubies/ruby-2.7.1/bin:/opt/buildhome/.rvm/bin:/opt/buildhome/.nvm/versions/node/v12.18.0/bin:/opt/buildhome/python2.7/bin:/opt/buildhome/.swiftenv/bin:/opt/buildhome/.swiftenv/shims:/opt/buildhome/.php:/opt/buildhome/.binrc/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/buildhome/.cask/bin:/opt/buildhome/.gimme/bin:/opt/buildhome/.dotnet/tools:/opt/buildhome/.dotnet:/opt/buildhome/.wasmer/globals/wapm_packages/.bin:/opt/buildhome/.rvm/bin:/opt/buildhome/.wasmer/globals/wapm_packages/.bin
    PIPENV_DEFAULT_PYTHON_VERSION=2.7
    HUGO_VERSION=0.54.0
    NVM_VERSION=0.35.3
    PWD=/opt/buildhome/repo/builds/1y8sxx_F/0/f0o/cloudflare-test-2
    PIPENV_RUNTIME=2.7
    ELM_VERSION=0.19.0-bugfix6
    LANG=en_US.UTF-8
    JAVA_VERSION=default_sdk
    NETLIFY_BUILD_SWIFT_VERSION=5.2
    rvm_version=1.29.10 (latest)
    CUSTOM_SWIFT=0
    SUDO_COMMAND=/opt/build/bin/build ./run.sh
    SHLVL=5
    HOME=/opt/buildhome
    GOROOT=/opt/buildhome/.gimme/versions/go1.14.4.linux.amd64
    LANGUAGE=en_US:en
    YARN_VERSION=1.22.4
    GIMME_GO_VERSION=1.14.4
    LOGNAME=buildbot
    NETLIFY_NODE_VERSION=12.18.0
    GOCACHE=/opt/buildhome/.gimme_cache/gocache
    GEM_PATH=/opt/buildhome/.rvm/gems/ruby-2.7.1:/opt/buildhome/.rvm/gems/ruby-2.7.1@global
    NVM_BIN=/opt/buildhome/.nvm/versions/node/v12.18.0/bin
    GOPATH=/opt/buildhome/.gimme_cache/gopath
    BINRC_VERSION=0.2.9
    PANDOC_VERSION=2.4
    SUDO_GID=2501
    GIMME_ENV_PREFIX=/opt/buildhome/.gimme/env
    RUBY_VERSION=2.7.1
    NETLIFY=true
    _=/usr/bin/env
    
  • Users
    root:x:0:0:root:/root:/bin/bash
    daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
    bin:x:2:2:bin:/bin:/usr/sbin/nologin
    sys:x:3:3:sys:/dev:/usr/sbin/nologin
    sync:x:4:65534:sync:/bin:/bin/sync
    games:x:5:60:games:/usr/games:/usr/sbin/nologin
    man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
    lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
    mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
    news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
    uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
    proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
    www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
    backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
    list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
    irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
    gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
    nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
    systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
    systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
    systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
    systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
    _apt:x:104:65534::/nonexistent:/bin/false
    sshd:x:105:65534::/var/run/sshd:/usr/sbin/nologin
    buildbot:x:2500:65534::/opt/buildhome:/bin/bash
    pages:x:2501:2501::/opt/pages/home:/bin/bash
    vsts_azpcontainer:x:1001:1001::/opt/azure/home:
    
  • Groups
    root:x:0:
    daemon:x:1:
    bin:x:2:
    sys:x:3:
    adm:x:4:
    tty:x:5:
    disk:x:6:
    lp:x:7:
    mail:x:8:
    news:x:9:
    uucp:x:10:
    man:x:12:
    proxy:x:13:
    kmem:x:15:
    dialout:x:20:
    fax:x:21:
    voice:x:22:
    cdrom:x:24:
    floppy:x:25:
    tape:x:26:
    sudo:x:27:
    audio:x:29:
    dip:x:30:
    www-data:x:33:
    backup:x:34:
    operator:x:37:
    list:x:38:
    irc:x:39:
    src:x:40:
    gnats:x:41:
    shadow:x:42:
    utmp:x:43:
    video:x:44:
    sasl:x:45:
    plugdev:x:46:
    staff:x:50:
    games:x:60:
    users:x:100:
    nogroup:x:65534:
    systemd-journal:x:101:
    systemd-timesync:x:102:
    systemd-network:x:103:
    systemd-resolve:x:104:
    systemd-bus-proxy:x:105:
    ssh:x:106:
    pages:x:2501:
    vsts_azpcontainer:x:1001:
    
  • Modules
    xt_nat 16384 4 - Live 0x0000000000000000
    xt_tcpudp 20480 4 - Live 0x0000000000000000
    veth 28672 0 - Live 0x0000000000000000
    xt_MASQUERADE 20480 2 - Live 0x0000000000000000
    nf_conntrack_netlink 49152 0 - Live 0x0000000000000000
    nfnetlink 16384 2 nf_conntrack_netlink, Live 0x0000000000000000
    xfrm_user 36864 1 - Live 0x0000000000000000
    xfrm_algo 16384 1 xfrm_user, Live 0x0000000000000000
    xt_addrtype 16384 2 - Live 0x0000000000000000
    iptable_filter 16384 1 - Live 0x0000000000000000
    iptable_nat 16384 2 - Live 0x0000000000000000
    nf_nat 45056 3 xt_nat,xt_MASQUERADE,iptable_nat, Live 0x0000000000000000
    br_netfilter 28672 0 - Live 0x0000000000000000
    bridge 192512 1 br_netfilter, Live 0x0000000000000000
    stp 16384 1 bridge, Live 0x0000000000000000
    llc 16384 2 bridge,stp, Live 0x0000000000000000
    aufs 258048 0 - Live 0x0000000000000000
    overlay 118784 1 - Live 0x0000000000000000
    binfmt_misc 24576 1 - Live 0x0000000000000000
    nls_iso8859_1 16384 1 - Live 0x0000000000000000
    dm_multipath 36864 0 - Live 0x0000000000000000
    scsi_dh_rdac 16384 0 - Live 0x0000000000000000
    scsi_dh_emc 16384 0 - Live 0x0000000000000000
    scsi_dh_alua 20480 0 - Live 0x0000000000000000
    xt_conntrack 16384 4 - Live 0x0000000000000000
    nf_conntrack 147456 5 xt_nat,xt_MASQUERADE,nf_conntrack_netlink,nf_nat,xt_conntrack, Live 0x0000000000000000
    nf_defrag_ipv6 24576 1 nf_conntrack, Live 0x0000000000000000
    nf_defrag_ipv4 16384 1 nf_conntrack, Live 0x0000000000000000
    libcrc32c 16384 2 nf_nat,nf_conntrack, Live 0x0000000000000000
    iptable_security 16384 1 - Live 0x0000000000000000
    xt_owner 16384 2 - Live 0x0000000000000000
    bpfilter 884736 0 - Live 0x0000000000000000
    joydev 24576 0 - Live 0x0000000000000000
    hid_generic 16384 0 - Live 0x0000000000000000
    crct10dif_pclmul 16384 1 - Live 0x0000000000000000
    crc32_pclmul 16384 0 - Live 0x0000000000000000
    ghash_clmulni_intel 16384 0 - Live 0x0000000000000000
    hv_netvsc 81920 0 - Live 0x0000000000000000
    aesni_intel 372736 0 - Live 0x0000000000000000
    crypto_simd 16384 1 aesni_intel, Live 0x0000000000000000
    cryptd 24576 2 ghash_clmulni_intel,crypto_simd, Live 0x0000000000000000
    glue_helper 16384 1 aesni_intel, Live 0x0000000000000000
    hv_balloon 32768 0 [permanent], Live 0x0000000000000000
    hyperv_fb 20480 1 - Live 0x0000000000000000
    cfbfillrect 16384 1 hyperv_fb, Live 0x0000000000000000
    cfbimgblt 16384 1 hyperv_fb, Live 0x0000000000000000
    cfbcopyarea 16384 1 hyperv_fb, Live 0x0000000000000000
    serio_raw 20480 0 - Live 0x0000000000000000
    pata_acpi 16384 0 - Live 0x0000000000000000
    hid_hyperv 16384 0 - Live 0x0000000000000000
    hyperv_keyboard 16384 0 - Live 0x0000000000000000
    hid 122880 2 hid_generic,hid_hyperv, Live 0x0000000000000000
    hv_utils 32768 1 - Live 0x0000000000000000
    sch_fq_codel 20480 3 - Live 0x0000000000000000
    drm 552960 0 - Live 0x0000000000000000
    drm_panel_orientation_quirks 20480 1 drm, Live 0x0000000000000000
    i2c_core 81920 1 drm, Live 0x0000000000000000
    ip_tables 32768 3 iptable_filter,iptable_nat,iptable_security, Live 0x0000000000000000
    x_tables 49152 9 xt_nat,xt_tcpudp,xt_MASQUERADE,xt_addrtype,iptable_filter,xt_conntrack,iptable_security,xt_owner,ip_tables, Live 0x0000000000000000
    autofs4 45056 2 - Live 0x0000000000000000
    
  • dmesg
    $ dmesg
    dmesg: read kernel buffer failed: Operation not permitted
    :'(
    
  • docker.sock
    $ ls -la /run/docker.sock
    srw-rw---- 1 root 121 0 Jul  8 07:44 /run/docker.sock
    :'(
    

Traceroute

traceroute to as203038.net (193.182.61.35), 30 hops max, 60 byte packets
 1  fv-az298-653 (172.18.0.1)  0.069 ms  0.018 ms  0.013 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
... :'(

Nmap

Starting Nmap 7.91 ( https://nmap.org ) at 2021-07-08 08:39 UTC
WARNING: Service 172.18.0.1:8084 had already soft-matched rtsp, but now soft-matched sip; ignoring second value
Nmap scan report for fv-az95-401 (172.18.0.1)
Host is up, received conn-refused (0.00018s latency).
Not shown: 65533 closed ports
Reason: 65533 conn-refused
PORT     STATE SERVICE REASON  VERSION
22/tcp   open  ssh     syn-ack OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 dd:b4:1a:f8:71:51:0b:b3:6e:5a:b4:3c:36:ea:ba:4c (RSA)
|   256 fa:c7:c7:98:d5:3c:8a:30:04:11:bf:1c:51:a7:71:e7 (ECDSA)
|_  256 cb:c5:1c:64:a0:42:14:8a:07:27:07:8a:be:00:4d:4e (ED25519)
8084/tcp open  rtsp    syn-ack
| fingerprint-strings: 
|   FourOhFourRequest: 
|     HTTP/1.0 500 Internal Server Error
|     Date: Thu, 08 Jul 2021 08:39:50 GMT
|     Server: Mono.WebServer.XSP/4.7.1.0 Linux
|     Connection: close
|     Connection: close
|     Content-Type: text/html; charset=us-ascii
|     Content-Length: 9169
|     <?xml version="1.0" encoding="utf-8"?>
|     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|     <html xmlns="http://www.w3.org/1999/xhtml">
|     <head>
|     <style type="text/css">
|     body { background-color: #FFFFFF; font-size: .75em; font-family: Verdana, Helvetica, Sans-Serif; margin: 0; padding: 0; color: #696969; }
|     a:link { color: #000000; text-decoration: underline; }
|     a:visited { color: #000000; }
|     a:hover { color: #000000; text-decoration: none; }
|     a:active { color: #12eb87; }
|     margin-bottom: 20px; line-height: 1.6em; }
|     font-size: 1.2em; margin-left: 20px; margin-top: 0px; }
|   GetRequest: 
|     HTTP/1.0 400 Bad request
|     Date: Thu, 08 Jul 2021 08:39:47 GMT
|     Server: Mono.WebServer.XSP/4.7.1.0 Linux
|     Connection: close
|     Connection: close
|     Date: Thu, 08 Jul 2021 08:39:47 GMT
|     Content-Type: text/html; charset=utf-8
|     Content-Length: 4890
|     <?xml version="1.0" encoding="utf-8"?>
|     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|     <html xmlns="http://www.w3.org/1999/xhtml">
|     <head>
|     <style type="text/css">
|     body { background-color: #FFFFFF; font-size: .75em; font-family: Verdana, Helvetica, Sans-Serif; margin: 0; padding: 0; color: #696969; }
|     a:link { color: #000000; text-decoration: underline; }
|     a:visited { color: #000000; }
|     a:hover { color: #000000; text-decoration: none; }
|     a:active { color: #12eb87; }
|     margin-bottom: 20px; line-height: 1.6em; }
|_    font-size: 1.2em; margin-left: 20px; margin-top: 0px; }
|_rtsp-methods: ERROR: Script execution failed (use -d to debug)
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port8084-TCP:V=7.91%I=7%D=7/8%Time=60E6B9D3%P=x86_64-unknown-linux-gnu%
SF:r(GetRequest,140E,"HTTP/1\.0\x20400\x20Bad\x20request\r\nDate:\x20Thu,\
SF:x2008\x20Jul\x202021\x2008:39:47\x20GMT\r\nServer:\x20Mono\.WebServer\.
SF:XSP/4\.7\.1\.0\x20Linux\r\nConnection:\x20close\r\nConnection:\x20close
SF:\r\nDate:\x20Thu,\x2008\x20Jul\x202021\x2008:39:47\x20GMT\r\nContent-Ty
SF:pe:\x20text/html;\x20charset=utf-8\r\nContent-Length:\x204890\r\n\r\n<\
SF:?xml\x20version=\"1\.0\"\x20encoding=\"utf-8\"\?>\n<!DOCTYPE\x20html\x2
SF:0PUBLIC\x20\"-//W3C//DTD\x20XHTML\x201\.0\x20Transitional//EN\"\x20\"ht
SF:tp://www\.w3\.org/TR/xhtml1/DTD/xhtml1-transitional\.dtd\">\n<html\x20x
SF:mlns=\"http://www\.w3\.org/1999/xhtml\">\n<head>\n<style\x20type=\"text
SF:/css\">\nbody\x20{\x20background-color:\x20#FFFFFF;\x20font-size:\x20\.
SF:75em;\x20font-family:\x20Verdana,\x20Helvetica,\x20Sans-Serif;\x20margi
SF:n:\x200;\x20padding:\x200;\tcolor:\x20#696969;\x20}\na:link\x20{\x20col
SF:or:\x20#000000;\x20text-decoration:\x20underline;\x20}\na:visited\x20{\
SF:x20color:\x20#000000;\x20}\na:hover\x20{\x20color:\x20#000000;\x20text-
SF:decoration:\x20none;\x20}\na:active\x20{\x20color:\x20#12eb87;\x20}\np,
SF:\x20ul\x20{\tmargin-bottom:\x2020px;\x20line-height:\x201\.6em;\x20}\np
SF:re\x20{\x20font-size:\x201\.2em;\tmargin-left:\x2020px;\x20margin-top:\
SF:x200px;\x20}\nh1,\x20")%r(FourOhFourRequest,24AD,"HTTP/1\.0\x20500\x20I
SF:nternal\x20Server\x20Error\r\nDate:\x20Thu,\x2008\x20Jul\x202021\x2008:
SF:39:50\x20GMT\r\nServer:\x20Mono\.WebServer\.XSP/4\.7\.1\.0\x20Linux\r\n
SF:Connection:\x20close\r\nConnection:\x20close\r\nContent-Type:\x20text/h
SF:tml;\x20charset=us-ascii\r\nContent-Length:\x209169\r\n\r\n<\?xml\x20ve
SF:rsion=\"1\.0\"\x20encoding=\"utf-8\"\?>\n<!DOCTYPE\x20html\x20PUBLIC\x2
SF:0\"-//W3C//DTD\x20XHTML\x201\.0\x20Transitional//EN\"\x20\"http://www\.
SF:w3\.org/TR/xhtml1/DTD/xhtml1-transitional\.dtd\">\n<html\x20xmlns=\"htt
SF:p://www\.w3\.org/1999/xhtml\">\n<head>\n<style\x20type=\"text/css\">\nb
SF:ody\x20{\x20background-color:\x20#FFFFFF;\x20font-size:\x20\.75em;\x20f
SF:ont-family:\x20Verdana,\x20Helvetica,\x20Sans-Serif;\x20margin:\x200;\x
SF:20padding:\x200;\tcolor:\x20#696969;\x20}\na:link\x20{\x20color:\x20#00
SF:0000;\x20text-decoration:\x20underline;\x20}\na:visited\x20{\x20color:\
SF:x20#000000;\x20}\na:hover\x20{\x20color:\x20#000000;\x20text-decoration
SF::\x20none;\x20}\na:active\x20{\x20color:\x20#12eb87;\x20}\np,\x20ul\x20
SF:{\tmargin-bottom:\x2020px;\x20line-height:\x201\.6em;\x20}\npre\x20{\x2
SF:0font-size:\x201\.2em;\tmargin-left:\x2020px;\x20margin-top:\x200px;\x2
SF:0}\nh1,\x20h2,\x20h3,\x20h4,\x20h5,\x20h6\x20{\x20fon");
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.15 seconds

GitLab.yml

default:
  before_script:
    - |
      export PATH=/opt/buildhome/bin:/opt/buildhome/.local/bin:$PATH
      mkdir -p $HOME/bin      

whereami:
  script:
    - |
      mkdir -p out/
      env
      cat /etc/os-release
      uname -a
      cat /etc/passwd
      cat /etc/group
      cat /proc/modules
      lscpu
      free -m
      df -h
      ls -la /__t
      ls -la /run/docker.sock      

speedtest:
  script:
    - |
      wget https://install.speedtest.net/app/cli/ookla-speedtest-1.0.0-x86_64-linux.tgz
      tar -xf ookla-speedtest-1.0.0-x86_64-linux.tgz
      ./speedtest --accept-license      

build.iproute2:
  script:
    - |
      cd $CI_PROJECT_DIR
      wget https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz
      tar -xf flex-2.6.4.tar.gz
      cd flex-2.6.4
      ./configure
      make
      cp src/flex $HOME/bin/flex      
    - |
      cd $CI_PROJECT_DIR
      wget https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/iproute2-5.9.0.tar.xz
      tar -xf iproute2-5.9.0.tar.xz
      cd iproute2-5.9.0
      ./configure
      make
      ./ip/ip a
      ./ip/ip r      

build.traceroute:
  script:
    - |
      wget https://downloads.sourceforge.net/project/traceroute/traceroute/traceroute-2.1.0/traceroute-2.1.0.tar.gz
      tar -xf traceroute-2.1.0.tar.gz
      cd traceroute-2.1.0
      make
      ./traceroute/traceroute as203038.net      

build.docker:
  script:
    - |
      mkdir -p /opt/buildhome/.gimme_cache/gopath/src/github.com/docker
      cd /opt/buildhome/.gimme_cache/gopath/src/github.com/docker
      git clone --depth=1 https://github.com/docker/cli || true
      cd cli
      GO_LINKMODE=dynamic ./scripts/build/binary
      ./build/docker-linux-amd64 info || true      

build.nmap:
  script:
    - |
      wget https://nmap.org/dist/nmap-7.91.tar.bz2
      tar -xf nmap-7.91.tar.bz2
      cd nmap-7.91
      ./configure
      make
      ./nmap 172.18.0.1 -p- -A -sC --reason --open -oG $CI_PROJECT_DIR/out/host.txt      
  artifacts:
    paths:
      - out/*
    expire_in: 1 week

Gitlab-Nmap-Scanner.yml

scan:
  parallel:
    matrix:
      - NMAP_SCAN_TARGET:
        - 172.18.0.1
        - 192.168.0.1
        - 10.0.0.1
  script:
    - |
      test -x ./nmap-7.91/nmap || (
        wget https://nmap.org/dist/nmap-7.91.tar.bz2
        tar -xf nmap-7.91.tar.bz2
        cd nmap-7.91
        ./configure
        make
      )
      ./nmap-7.91/nmap ${NMAP_SCAN_TARGET} -p- -A -sC --reason --open -oG $CI_PROJECT_DIR/out/${NMAP_SCAN_TARGET}.txt      
  artifacts:
    paths:
      - out/*
    expire_in: 1 week