Projet

Général

Profil

Privatebin » Historique » Version 39

mathias.bert-barbedienne, 26/12/2022 14:36

1 1 sacha
# Privatebin
2
3 37 sacha
https://pastebin.aquilenet.fr
4
5 1 sacha
Github : https://github.com/PrivateBin/PrivateBin/blob/master/INSTALL.md#installation
6 34 mathias.bert-barbedienne
7 14 sacha
A la mode du moment (janvier 2021) on a des liens de contenus pédophiles postés sur le Privatebin/Pastebin/Paste, j'ai fait un petit script pour gérer le problème.
8 13 sacha
9 14 sacha
---
10 13 sacha
11 14 sacha
màj 20211011
12 1 sacha
13 14 sacha
On avait fait un patch pour pouvoir log les posts
14
15 13 sacha
~~~
16
diff --git a/lib/Controller.php b/lib/Controller.php
17
index 2df522a..e8b688a 100644
18
--- a/lib/Controller.php
19
+++ b/lib/Controller.php
20
@@ -262,6 +262,7 @@ class Controller
21
             } catch (Exception $e) {
22
                 return $this->_return_message(1, $e->getMessage());
23
             }
24 18 sacha
+            syslog(LOG_INFO, "[newPaste] {$_SERVER['REMOTE_ADDR']} {$paste->getId()}");
25 13 sacha
             $this->_return_message(0, $paste->getId(), array('deletetoken' => $paste->getDeleteToken()));
26
         }
27
     }
28 1 sacha
29 15 sacha
~~~
30 13 sacha
C'est dans /var/log/messages sous la forme:
31 1 sacha
32 34 mathias.bert-barbedienne
    $Date gaia php: [newpaste] $IP $ASH
33 1 sacha
---
34
35
Pour retirer un contenu je vous propose d'utiliser le script sur le serveur qui héberge le Privatebin: gaia:/root/pedokill.sh
36 37 sacha
https://forge.aquilenet.fr/sacha/scripts/src/branch/main/pedokill.sh
37 1 sacha
38 14 sacha
Les url de privatebin ressemblent à: https://pastebin.aquilenet.fr/?ASH#PASSWORD
39 1 sacha
40
41 2 sacha
Pour utiliser le script il suffit de l’exécuter avec en paramètre le ASH#PASSWORD.
42 34 mathias.bert-barbedienne
Exemple: /root/pedokill.sh abe546d271f749b1#E8Zu84zJUPjFLmzgC3Hg5iJL38WDRfGcAJLxW6XC6DG6
43 1 sacha
44
N'hésitez pas à me (Sacha) tenir au jus des améliorations ;)
45 2 sacha
46
Une idée est de dégager la première ligne de log qui est celle de l'émetteur du contenu.
47
48
J'ai identifiée un motif identique qui est le referer 4ox.fun (je ne vous conseille pas de visiter le site) et ajouté dans l'apache du privatebin (en espérant que ça bloquera bien ce referer):
49
50
51
```
52 5 sacha
        # Block pedosite
53
        RewriteEngine on
54 11 pierre.bousquie
        # Selection par referer (header HTTP) ici 4ox.fun, on peut en rajouter d’autres avec un | ie 4ox.fun|unautrerefererabloque.xyz|.*nowhere
55 5 sacha
        RewriteCond %{HTTP_REFERER} 4ox.fun|.*nowhere [NC]
56 11 pierre.bousquie
        # Apache répondra 405 Forbidden --> [F] sans réécrire le path  
57 5 sacha
        RewriteRule .* - [F]
58
59 2 sacha
```
60
61
62
J'ai fait le ménage en utilisant ce referer:
63
64
```
65 4 sacha
for i in $(zgrep 4ox.fun /var/log/apache2/pastebin.aqln.access.log* |awk '{print $7}'|sort|uniq); do /root/pedokill.sh $i;done
66 2 sacha
```
67 8 sacha
(c'est bugé il y a des réponses qui n'ont pas le chemin mais du coup le pad ne sera pas effacé puisqu'il n'existe pas, le script vérifie que le chemin existe)
68 2 sacha
69 8 sacha
et vérifie s'il y en a de nouveaux:
70 6 sacha
```
71 1 sacha
tail -F /var/log/apache2/pastebin.aqln.access.log |grep 4ox.fun |awk '{if ($9 =="200") print $7} '
72 36 sacha
```
73 12 sacha
74
## Bonux: surveiller les référents
75 1 sacha
76
 On peut surveiller de temps en temps le top des "referer"
77
78
    awk '{print $11}' /var/log/apache2/pastebin.aqln.access.log|sort |uniq -c|sort -n
79 34 mathias.bert-barbedienne
80
## Mise à jour
81
82
Une tâche CRON est exécutée tous les jours à 7h30 pour vérifier la présence d'une nouvelle version publiée sur le github et la télécharger automatiquement dans /srv/www/aquilenet.fr.
83
84
## Installation automatisée par script.
85
`cd /srv/www/aquilenet.fr
86
sudo ./Install_PrivateBin_Lastest_Version.sh`
87
88
Si tout s'est bien passé, supprimer l'ancien répertoire et l'archive téléchargée.
89
90
## Installation manuelle, en cas d'échec du script.
91
Se positionner au bon endroit sur gaia.
92
user@gaia:$ `cd /srv/www/aquilenet.fr/`
93
94
Normalement l'archive de la dernière version publiée devrait déjà être présente.
95
`ls *.zip`
96
97
Sinon.
98
Voir https://github.com/PrivateBin/PrivateBin/releases/latest
99
Copier l'adresse de l'archive .zip du code source en bas de page puis la télécharger (wget).
100
Ex : user@gaia:$ `wget https://github.com/PrivateBin/PrivateBin/archive/refs/tags/1.4.0.zip`
101
102
L'extraire l'archive téléchargée.
103
Ex :`sudo unzip -q 1.4.0.zip`
104
105
Renseigner une variable d'environnement.
106
Ex: `VERSION="-1.4.0"` (oui, **AVEC**  le tiret).
107
108 39 mathias.bert-barbedienne
Importer la config depuis la version actuelle.
109
`sudo cp /srv/www/aquilenet.fr/PrivateBin{,$VERSION}/cfg/conf.php`
110
111 34 mathias.bert-barbedienne
Sauvegarder le nouveau fichier /srv/www/aquilenet.fr/PrivateBin-$VERSION/lib/Controller.php.
112
`cd PrivateBin${VERSION}/lib/ && sudo cp Controller.php{,.ori}`
113
114
Vérifier que le patch est toujours nécessaire.
115
`sudo grep -B 3 -A 2 -E "array\('deletetoken'" Controller.php`
116
~~~
117
            } catch (Exception $e) {
118
                return $this->_return_message(1, $e->getMessage());
119
	    }
120
            $this->_return_message(0, $paste->getId(), array('deletetoken' => $paste->getDeleteToken()));
121
        }
122
    }
123
~~~
124
Appliquer le patch.
125
`sudo patch -o Controller.php.new Controller.php /root/PrivateBin_lib_Controller.php.patch`
126
127
Vérifier que le patch a bien été appliqué au bon endroit.
128
`sudo grep -A 2 -B 2 "syslog" Controller.php.new | md5sum
129
391ee59c9d3e09edcfead854a513a172  -`
130
131
Si le hash n'est pas le même, supprimer le nouveau fichier (`sudo rm Controller.php.new`) et patcher à la main.
132
Éditer le fichier puis y chercher la chaîne `array('deletetoken'` modifier en suivant le modèle en début de cette page, puis régénérer le fichier .patch (`diff file.ori file.new > file.patch`).
133
Si le hash correspond, on peut renommer le fichier avec `sudo mv Controller.php{.new,}` (confirmer l'écrasement).
134
135
Modifier le lien symbolique /srv/www/aquilenet.fr/PrivateBin pour le faire pointer vers le nouveau répertoire.
136
`sudo ln -s /srv/www/aquilenet.fr/PrivateBin${VERSION} /srv/www/aquilenet.fr/PrivateBin`
137
138
Changer le propriétaire du répertoire.
139
`sudo chown -R www-data:www-data /srv/www/aquilenet.fr/PrivateBin${VERSION}`
140
141
Relancer apache, `sudo systemctl reload apache2.service`
142
143
Vérifier que le patch fonctionne comme attendu en créant un nouveau paste sur https://paste.aquilenet.fr/
144
`sudo tail -f /var/log/messages | grep newpaste` devrait monter votre adresse IP.
145
146
Si tout s'est bien passé, supprimer l'ancien répertoire et l'archive téléchargée.