Privatebin » Historique » Version 17
sacha, 11/10/2021 19:48
1 | 1 | sacha | # Privatebin |
---|---|---|---|
2 | |||
3 | |||
4 | 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. |
5 | 13 | sacha | |
6 | 14 | sacha | --- |
7 | 13 | sacha | |
8 | 14 | sacha | màj 20211011 |
9 | 1 | sacha | |
10 | 14 | sacha | On avait fait un patch pour pouvoir log les posts |
11 | |||
12 | 13 | sacha | ~~~ |
13 | diff --git a/lib/Controller.php b/lib/Controller.php |
||
14 | index 2df522a..e8b688a 100644 |
||
15 | --- a/lib/Controller.php |
||
16 | +++ b/lib/Controller.php |
||
17 | @@ -262,6 +262,7 @@ class Controller |
||
18 | } catch (Exception $e) { |
||
19 | return $this->_return_message(1, $e->getMessage()); |
||
20 | } |
||
21 | + syslog(LOG_INFO, "[newPaste] $_SERVER['REMOTE_ADDR'] $paste->getId()"); |
||
22 | 15 | sacha | syslog(LOG_INFO, "[newPaste] {$_SERVER['REMOTE_ADDR']} {$paste->getId()}"); |
23 | 13 | sacha | $this->_return_message(0, $paste->getId(), array('deletetoken' => $paste->getDeleteToken())); |
24 | } |
||
25 | } |
||
26 | |||
27 | 1 | sacha | ~~~ |
28 | 15 | sacha | C'est dans /var/log/messages sous la forme: |
29 | 13 | sacha | |
30 | 17 | sacha | $Date gaia php: [newPaste] $IP $ASH |
31 | 14 | sacha | --- |
32 | 1 | sacha | |
33 | Pour retirer un contenu je vous propose d'utiliser le script sur le serveur qui héberge le Privatebin: gaia:/root/pedokill.sh |
||
34 | |||
35 | Les url de privatebin ressemblent à: https://pastebin.aquilenet.fr/?ASH#PASSWORD |
||
36 | 4 | sacha | exemple: https://pastebin.aquilenet.fr/?abe546d271f749b1#E8Zu84zJUPjFLmzgC3Hg5iJL38WDRfGcAJLxW6XC6DG6 |
37 | 14 | sacha | |
38 | |||
39 | |||
40 | 1 | sacha | |
41 | 2 | sacha | Pour utiliser le script il suffit de l’exécuter avec en paramètre le ASH#PASSWORD. |
42 | Exemple: /root/pedokill 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 | ``` |
||
71 | 9 | sacha | tail -F /var/log/apache2/pastebin.aqln.access.log |grep 4ox.fun |awk '{if ($9 =="200") print $7} ' |
72 | 8 | sacha | ``` |
73 | 2 | sacha | |
74 | |||
75 | ## /root/pedokill.sh |
||
76 | |||
77 | |||
78 | ``` |
||
79 | #!/bin/bash |
||
80 | 7 | sacha | |
81 | 6 | sacha | # pedokill.sh |
82 | 7 | sacha | # ------------ |
83 | 6 | sacha | # Sacha@Aquilenet 20210115 |
84 | # Archive et supression d'un lien Privatebin |
||
85 | 2 | sacha | |
86 | privatebinpath="/srv/www/aquilenet.fr/PrivateBin/data" |
||
87 | |||
88 | if [ -z "$1" ]; then |
||
89 | echo "Entrer le hash après \"https://pastebin.aquilenet.fr/?\" " |
||
90 | exit 1 |
||
91 | fi |
||
92 | |||
93 | ash=$(echo $1|cut -d# -f1) |
||
94 | pass=$(echo $1|cut -d# -f2) |
||
95 | pagepath="$privatebinpath/${ash:0:2}/${ash:2:2}/$ash.php" |
||
96 | |||
97 | 4 | sacha | if [ -f $pagepath ]; then |
98 | 2 | sacha | echo "Archive du lien et logs d'accès" |
99 | archivepath="$privatebinpath/archive/$ash" |
||
100 | mkdir -p $archivepath/{logs,privatebin_file} |
||
101 | cp $pagepath $archivepath/privatebin_file |
||
102 | echo $pass > $archivepath/privatebin_file/pass |
||
103 | zgrep $ash /var/log/apache2/pastebin.aqln.access.log* > $archivepath/logs/$ash.log |
||
104 | cd $archivepath/logs/ && tar czvf $(date +"%Y%m%d-%H%M")_$ash.tar.gz $archivepath/logs/$ash.log |
||
105 | 1 | sacha | rm -f $archivepath/logs/$ash.log |
106 | |||
107 | 2 | sacha | echo "Efface le lien PasteBin: \"https://pastebin.aquilenet.fr/?$ash\"" |
108 | 6 | sacha | rm -f $pagepath && rdmdir $privatebinpath/${ash:0:2}/${ash:2:2} |
109 | else |
||
110 | echo "Mauvais lien !" |
||
111 | 4 | sacha | fi |
112 | 2 | sacha | ``` |
113 | 12 | sacha | |
114 | ## Bonux: surveiller les référents |
||
115 | |||
116 | On peut surveiller de temps en temps le top des "referer" |
||
117 | |||
118 | awk '{print $11}' /var/log/apache2/pastebin.aqln.access.log|sort |uniq -c|sort -n |