实习day6

任务一:总结CSRF和XSS区别

1.原理不同

CSRF:CSRF是一种依赖web浏览器的代理人攻击(deutyattack)。攻击者通过伪造受害者的请求来冒充用户在站内的正常操作。这通常是通过诱导用户点击恶意链接或访问恶意网站来实现的,这些链接或网站会向受害者已登录的网站发送伪造请求。

XSS:XSS是一种代码注入攻击,攻击者将恶意脚本(通常是JavaScrit)注入到目标网站中。当其他用户浏览这些被注入恶意脚本的页面时,恶意脚本会在用户的浏览器上执行,从而达到攻击用户的目的。

2.目标不同

CSRF:CSRF的目标主要是利用受害者在受信任网站上的身份(如通过cookie等方式获得的授权),执行未经授权的操作,如转账、发送消息等。

XSS:XSS的目标则是用户的浏览器,通过执行恶意脚本攻击用户,可能窃取用户的敏感信息(如cookie、会话令牌等)、进行会话劫持、发起钓鱼攻击等。

3.实现方式不同

CSRF:CSRF攻击通常不需要用户登录目标网站,而是利用用户已经登录的cookie等身份验证信息。攻击者通过构造恶意链接或表单,诱导用户点击或提交,从而向目标网站发送伪造请求。

XSS:XSS攻击则需要攻击者将恶意脚本注入到目标网站中。这通常是通过在网站的输入字段(如搜索框、留言板等)中提交包含恶意脚本的内容来实现的。当这些内容被网站不加过滤地显示给其他用户时,恶意脚本就会在用户的浏览器上执行。

4.防御策略不同

CSRF:为了防御CSRF攻击,网站可以采取以下措施:

在请求中添加令牌(token)验证,确保请求的真实性。

使用HTTS协议来保护请求的传输安全。

对敏感操作进行二次验证。

XSS:为了防御XSS攻击,网站可以采取以下措施:

对用户的输入进行严格的过滤和转义,防止恶意脚本的注入。

使用HTT头指定内容类型,避免内容被错误地解析为HTML。

实施内容安全策略(CS),限制外部资源的加载和执行。

任务二:总结CSRF攻击步骤

1.用户登录受信任网站:用户C打开浏览器,访问受信任的网站A(如银行网站),并输入用户名和密码进行登录。网站A验证用户信息后,生成Cookie信息并返回给浏览器,用户C成功登录网站A,并可以在该网站上进行正常操作。

2.用户访问恶意网站:在用户C未退出网站A之前,在同一浏览器中,用户C打开一个新的标签页(Tab)访问恶意网站B。此时,用户的浏览器依然保存着网站A的Cookie信息。

3.恶意网站发送攻击请求:恶意网站B在用户不知情的情况下,通过嵌入的攻击性代码(如JavaScrit、HTML表单等)向网站A发送请求。这些请求可能伪装成用户C的正常操作请求,如转账、发送消息等。

4.浏览器携带Cookie信息发起请求:由于浏览器之前已经认证过网站A,并保存了相应的Cookie信息,因此浏览器会自动携带这些Cookie信息向网站A发起请求。

结果:网站A接收到请求后,根据Cookie信息认为这是用户C的合法请求,并按照请求内容执行相应的操作。

5.恶意代码被执行,用户遭受损失:由于网站A无法区分这些请求是否真正来自用户C,因此会按照请求内容执行相应的操作,导致恶意代码被执行。

任务三:总结CSRF手工构造OST型页面方法

1.确定目标URL和请求参数

目标URL:首先需要确定目标Web应用程序的URL,即用户想要伪造的POST请求将要发送到的地址。

请求参数:通过抓包工具(如BurpSuite)捕获目标网站的正常POST请求,并分析这些请求所需的参数。这些参数将用于构造攻击表单。

2.构造HTML表单

表单结构:使用HTML语言构造一个表单(<form>),设置其action属性为目标URL,method属性为POST。

输入字段:在表单内部,根据捕获的请求参数,添加相应的输入字段(<input>)。这些字段的name属性应与请求参数相匹配,value属性则设置为攻击者希望提交的值。

示例代码

html

<!DOCTYPEhtml>

<htmllang="en">

<head>

<metacharset="UTF-8">

<title>CSRFPOSTAttackForm</title>

</head>

<body>

<h2>CSRFPOSTAttackForm</h2>

<formaction="http://example.com/target/url"method="POST"style="display:none;">

<inputtype="hidden"name="param1"value="attackervalue1">

<inputtype="hidden"name="param2"value="attackervalue2">

<!--添加更多隐藏输入字段以匹配POST请求的所有参数-->

<inputtype="submit"value="SubmitForm"style="display:none;">

</form>

<script>

document.forms[0].submit();//页面加载时自动提交表单

</script>

</body>

</html>

3.隐藏表单元素

为了使用户不易察觉,可以将表单和表单内的输入字段都设置为隐藏(通过CSS样式或直接在HTML中使用hidden属性)。

4.诱使用户提交表单

攻击者需要创建一个诱饵,如一个看似无害的链接或按钮,当用户点击这个诱饵时,通过JavaScript自动提交隐藏的表单。

例如,可以设置一个链接或按钮,并在点击事件中使用JavaScript代码document.forms[0].submit();来提交表单。

5.验证和测试

在实际部署前,应在安全的环境中测试构造的CSRF页面,确保它能够成功地向目标网站发送POST请求并达到预期的效果。

同时,应关注任何可能的安全措施(如Token验证、Referer检查等),并尝试绕过这些防御机制。

任务四:说明token类CSRF利用方法

一、Token类CSRF防御的基本原理

1.生成Token:服务器在用户登录或进行某些敏感操作前,生成一个唯一的、难以预测的Token,并将其发送给客户端(通常是通过Cookie或者表单的隐藏字段)。

2.发送Token:客户端在发起请求时,将这个Token包含在内,通常是通过HTTP请求的头部(如X-CSRF-TOKEN)或者表单字段(如<inputtype="hidden"name="csrf_token"value="...">)发送。

3.验证Token:服务器接收到请求后,会从请求中提取Token,并与服务器存储的或根据请求的其他部分(如用户的会话信息)生成的Token进行比较。如果Token匹配,则认为请求是合法的;如果不匹配,则拒绝请求。

二、Token类CSRF的利用方法:

1.窃取Token:如果Token被存储在客户端的某个地方(如Cookie),并且没有通过HTTPS加密传输,那么攻击者可能通过跨站脚本(XSS)攻击窃取Token。

预测Token:如果Token的生成算法不够复杂或不够随机,攻击者可能通过暴力破解或预测算法来猜测Token。

2.利用会话固定:攻击者可能先与服务器建立一个有效的会话并获得Token,然后诱导用户(通过钓鱼网站等)使用这个已存在的会话(即Token)来执行攻击。

防御措施

3.使用HTTPS:确保所有Token都是通过HTTPS加密传输的,以防止中间人攻击。

Token复杂性:确保Token是足够随机且难以预测的。使用安全的随机数生成器,并考虑将用户会话信息或其他不可预测的数据纳入Token的生成算法中。

设置适当的Cookie属性:对于存储在Cookie中的Token,确保设置了HttpOnly和Secure属性,以减少XSS攻击的风险。

4.定期更换Token:在用户会话期间定期更换Token,以降低会话固定攻击的风险。

实施双重验证:对于特别敏感的操作,除了Token验证外,还可以实施其他形式的验证(如手机验证码、指纹识别等)

任务五:SSRF常用伪协议

1.file协议

功能:从文件系统中获取文件内容。

格式:file://[文件路径]

示例:

file:///etc/passwd:读取/etc/passwd文件内容,该文件通常包含系统用户信息。

file:///etc/hosts:显示当前操作系统网卡的IP地址。

file:///proc/net/arp:显示ARP缓存表,有助于寻找内网其他主机。

2.http/https协议

功能:向目标服务器发送HTTP/HTTPS请求。

说明:由于HTTP请求的URL参数通常直接附加在URL中,因此可以利用这一特性来探测内网中那些通过GET请求即可访问的应用。虽然HTTP协议本身不是伪协议,但在SSRF的上下文中,它常被用于构造指向内网资源的请求。

3.dict协议

功能:字典服务协议,用于从远程服务器上查询词典或字典内容。

示例:dict://ip:6739/info

用途:可用于扫描端口、获取内网信息、爆破密码等。例如,通过扫描不同端口的响应来判断哪些端口是开放的。

4.ftp协议

功能:文件传输协议,用于在网络上传输文件。

用途:虽然ftp协议在SSRF中的利用效率相对较低(因为连接成功但请求内容识别不到可能不会回复),但它仍可用于网络端口扫描等目的。

5.gopher协议

功能:早期互联网上的一种文档检索协议,类似于HTTP但更简单和结构化。

用途:gopher协议在SSRF中的利用范围很广,包括GET提交、POST提交、与Redis等服务的交互等。它允许攻击者构造复杂的请求来攻击内网中的服务。

注意:gopher协议会吃掉请求中的第一个字符,因此通常需要在URL的开头添加一个无用的字符(如下划线)。此外,回车换行符(\r\n)在URL中需要被编码为%0d%0a,但直接编码可能会遇到问题,有时需要进行二次URL编码。

任务六:SSRFikachu靶场通关

1.SSRF(curl)

打开pikaqiu


点击“读诗”

尝试修改url访问百度

可以看到成功访问

2.SSRF(file_get_content)

点击“读诗”

修改url参数,再次访问第一关

访问成功:

还可以修改url参数访问本地D盘的文件,可以看到显示文本文件的内容:Thisisfilea000.txt,显示成功:

任务七:SSRF靶场通关时根据源代码说明漏洞成因(加分项)

  • 25
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值