Google : une nouvelle faille de sécurité

News, Google, Securité Aucun commentaire »

Une nouvelle faille de sécurité a été reportée hier , la faille touche Google service et plus précisément l’outil de demande de suppression de page Web “the removal of websites tool” .

Il s’agit d’un simple listing d’un dossier non protégé et de toute son arborescence, le risque est faible mais le dossier peut contenir des informations utiles pour un black hat .

A mon avis s’il ne s’agit pas d’une faille dans le serveur lui même, cela ne va pas être intéressant pour un pirate, sinon les failles dans les sites et les services web ne permettent pas vraiment de faire grand chose ,

Et voici un exemple de fichier trouvé dans leur serveur nommé config.txt

# Properties file for urlremover application
# Copyright 2000 and onwards, Google, Inc.
# Maintained by sanjeev@google
#
# Note: development settings are maintained in config.txt, remember to
# update that file in conjunction with this one.# General App settings
# Front door name (needed for embedding urls in emails)
frontDoor=http://services.google.com:8882/urlconsole/controller
# How long we wait before timing out the session
# e.g. so if a user stays on a single page longer
# then this amount of time he will be sent to the login
# page again.
SESSION_timeout_minutes = 5
# Client IP Blacklist file
bannedNetworks = /apps/com/google/urlremover/badip.txt
# Proxy settings
proxySet = true
proxyHost = proxy
proxyPort = 80
userAgent = googlebot-urlconsole
# Database stuff
DBDriver = org.gjt.mm.mysql.Driver
DBUrl = jdbc:mysql://localhost/dbRemoveUrl
DBLogin = root
# put password in before the push
DBPassword = k00k00
# Publisher stuff
# ackQueue and outputQueue must already exist. Use
# google/setup/pcqueue.py create
pathofqueue> 128
# to create them. Also,
# //depot/ops/production/master/files/etc/cron.hourly/dynamic_gws_data_push>
# must agree with us on where the queues are located. ackQueue = /apps/publish/publish_ack_queue
ackDir = /apps/publish/publish_ack
outputDir = /apps/publish/current
outputQueue = /apps/publish/publish_queue
BadAll = badurls_autonoreturn
BadSnippet = badurls_autonosnippet
BadCache = badurls_autonocache
BadMsgids = autobadmsgids
Porn = badurls_autoporn
BadImages = badurls_autoimage
ImageTweak = badurls_autoimagetweak
BadOdp = badurls_autonoodp
BadDemoteGws = badurls_autodemotegws
BadSpam = badurls_autospam
BadSupplemental = badurls_autosupplemental
maxChecks = 15
lastPushFile = TIMESTAMP
sendEmailDelayMillis = 3000
# warn if no push within last 400 minutes
noPushWarning = 24000000
# If this is > 0, then no database changes are made, no urls are fetched,
# and no emails are sent.
readOnly = 0
# Where to store the Publisher’s temporary disk maps
diskMapDir = /export/hda3/tmp
# I18N
i18nText = com.google.urlremover.I18N.text
langSupport = en-us,fr,de,it,ja
# Hit Rate Warnings
# The settings below will cause a warning email to be generated
# if we encounter >200 page hits in a 30 minute window.
# Note: the window does not slide
rateCheckIntervalMillis = 1800000
rateMaxHitsPerInterval = 800
# Request Status Display
RequestStatusCutoff = 10
# General limits
maxUrlLength = 511
maxRobotsLines = 100
# We give people 24 hours to verify their email or we expire their accounts
oldestUnverifiedMillis = 86400000
# New user email stuff
NewUserEmailFrom = url-remove@google.com
# Publisher email stuff
publisher.EmailFrom = url-remove@google.com
# Error emails stuff
# Note these are sent to internal engineers, no users see these
EMAIL_error = mstanton@google.com
# General email stuff
EMAIL_smtp = smtp
EMAIL_from = url-remove@google.com
EMAIL_name = url remover application
# General request expiry time = 180 days = 180 * 24 * 60 * 60 * 1000
expiryOffsetMillis = 15552000000
# Max time we’re going to wait before getting a response from a site
# for the site down authentication method
# currently 360 secs, since Squid might take that long to time out DNS
maxWaitMillis = 360000
# max number of outstanding fetches (in parallel)
fetchParallelism = 50
# Authenticator config
robots.shellCommand = /apps/bin/robots_unittest –patterns –agents=Googlebot,Google
robots.shellCommandImage = /apps/bin/robots_unittest –patterns –agents=Googlebot-Image
metaTags.shellCommand = /apps/bin/ripper
–datadir=/apps/smallcrawl-data
–cjk_config=/apps/BasisTech
–logtostderr –stdin –robotsmeta
# patterns that should not be removed via robots.txt
robots.noremove = /home/google/googlebot/bypass_robots.pat

Reste à savoir qu’il n’existe que deux ordinateurs qui est impossible de pirater : 1 - un ordinateur éteint, 2 - un ordinateur sans carte éseau !

Partager cet article : Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Technorati
  • Digg
  • del.icio.us
  • blogmarks
  • Scoopeo
  • BlinkList
  • Furl
  • Reddit
  • Ma.gnolia
  • Slashdot
  • YahooMyWeb
  • Bumpzee
  • Spurl
  • Netscape
  • Book.mark.hu

Utilisation des sockets avec python

Python, Securité Aucun commentaire »

Python n’est pas seulement un langage pour faire des traitements sur les chaînes de caractères, mais aussi pour construire des applications beaucoup plus intéressantes.

Dans cet article je vais essayer d’ullistrer l’utilisation des socket avec python à travers quelques lignes de code.

Avec un minimum de bagage en TCP/IP, tout le monde sais que pour établir une connexion entre deux machines ils nous faut d’abord un protocole de transfert de donnée, puis une trame qui va envoyer notre information et bien sur l’adresse des deux machines, chacune de ces deux machines doit impérativement avoir un port ouvert pour établir la communication.

Dans cet exemple on va utiliser python pour faire un script simple avec deux fonctions la première va scanner les ports ouverts d’une ip donnée et les afficher, la deuxième va essayer d’établir une connexion avec un serveur Web et de nous renvoyer son ‘Header’.

Dans ce script le protocole utilisé est TCP, si vous souhaiter utiliser l’UDP vous n’avez qu’à remplacer SOCK_STREAM par SOCK_DGRAM .
Je vous laisse examiner le code et j’espère qu’il est suffisamment commenté.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import httplib, socket #l'import de module necessaires
 
from socket import error
maxp = 100 #le numero de port maximum => de 0 jusqu'a 1000
timeout = 2. #si notre trame n'a pas pu etablir
#une connexion dans 2 secondes , donc le port est fermé
def scan(h):
    print "Starting Scann ...nOpen Ports In %s Are :" % (h)
    print '< Port >'
    p = 0
    while p <= maxp:
        try:
	    #creation de notre socket en TCP
		s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	    s.settimeout(timeout) #definition du timeout
            s.connect((h,p)) #ici la trame va essayer de se connecter
            print ' ', p
	    s.close()
	    p+= 1
	#exception levée quand la trame n'arrive pas a se connecté
	except socket.error:
            s.close()
	    p+= 1
    print "Scan Complete For : [%s]" %(h)
 
#deuxième fonction qui va nous retourner le HEADER d'un server web
def scansrv(h):
	#connexion avec le serveur
    con = httplib.HTTPConnection(h, 80)
    print "Trying To Scan : %s" %(h)
    try:
        con.request('HEAD', '/') #on essaye d'avoir le HEADER
	#exception levée quand le port 80 est fermé ou quand l'IP est down
    except error:
        print "Can't Connect To : %s" %(h)
    else:
		#sinon si tout marche bien , on recupère la réponse
        response = con.getresponse()
		con.close
		#puis on recupere le HEADER et on l'affiche
        server = response.getheader('Server', 'Version du serveur inconnu')
        print "[%s], Is Running : %s" %(h,server)

Ces deux fonctions sont extraites de Perfect-Scanner, un scanner de port que j’avais codé ça fait un bout de temps, vous pouvez télécharger le script complet ici et vaux mieux le tester dans une machine linux, car sous Windows ça peut planter sauf si vous spécifier un intervalle de ports pas supérieur à 1000 avec un timeout d’une demi seconde.

Ce problème sous Windows peut être facilement réglé si on utilise les Threads d’exécution, sinon sous linux ça marche déjà bien !

le script est en GPL et il est là pour des raisons purement educatives.

Et voici ce que ça donne sous Windows

Starting Scann ...
Open Ports In 127.0.0.1 Are :
< Port >
  80
Scan Complete For : [127.0.0.1]
>>>
Trying To Scan : 127.0.0.1
[127.0.0.1], Is Running : Apache/1.3.33 (Win32) PHP/4.3.10

Voila !

Partager cet article : Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Technorati
  • Digg
  • del.icio.us
  • blogmarks
  • Scoopeo
  • BlinkList
  • Furl
  • Reddit
  • Ma.gnolia
  • Slashdot
  • YahooMyWeb
  • Bumpzee
  • Spurl
  • Netscape
  • Book.mark.hu