web渗透

一、SQL注入

1、定义:用户可以在输入数据中插入sql命令,并且得到执行。

2、产生原因:开发的时候对用户可控的输入过滤不够充分。

3、类型:查询注入、报错注入、盲注、宽字节。。。

每种类型漏洞的形成原理,利用的payload

4、常用的payload:

or 1=1 #
and 1=2 #
or 12312=12312 #
and sleep(3) #
union select 1,2,3,4#
order by 1 #

5、利用方式

获取数据
1、获取数据库名称
2、获取数据库的表
3、获取表的字段名
4、获取数据

6、绕过WAF

双写,针对:WAF将关键字替换成空,不是空格。
大小写绕过,针对:开发工程师在替换关键字的时候,使用了大小写区分。
空格绕过:开发将字符串中的空格替换成空
TAB键绕过:字符串中的%09
块注释绕过:/**/
逻辑运算符绕过:and && ,or || ,not ! ,xor |
编码绕过:url编码,base64,二次解码
函数绕过: hex()、char()、@@user、@@datadir

7、相应防御措施

预编译执行
转成真实的html字符串或MySQL字符串
针对性的防护:比如针对函数绕过

8、工具:sqlmap

--time-sec 设定延时,默认是5秒

--thread 设定线程数,默认1,最大10

--tamper 使用绕过脚本

二、XSS

1、定义:XSS,跨站脚本攻击(Cross Site Scripting,以下简称XSS),网页中使用Java script,js可以在浏览器中解释并执行,如果js代码中嵌入了恶意代码,也是会被执行。

2、产生原因:浏览器从服务器获取到的页面中包含了js,浏览器对服务器发过来的数据无条件信任。攻击者将恶意代码注入到目标服务器,用户访问这个页面,这个恶意代码就会被执行,用户就会被攻击。

3、漏洞危害:窃取账号或cookie;挂马;打广告,发垃圾信息

4、XSS分类:

    反射型 XSS:
    存储位置:不存储在服务器(仅存在于单次请求/响应中);
    触发方式:攻击者构造含恶意JS的url,诱导用户点击,服务器将恶意JS“反射”回浏览器执行
    存储型 XSS:
    存储位置:永久存储在服务器(如数据库、文件);
    触发方式:用户访问包含恶意 JS 的页面(如论坛帖子、评论)时,服务器从数据库读取恶意 JS 并返回,所有访问该页面的用户都会触发(持续性攻击)。
    DOM 型 XSS: 
    存储位置:无服务器存储(恶意 JS 仅在客户端 DOM 层面操作);
    触发方式:浏览器解析页面时,通过 JS 修改 DOM(如document.write、location.href),将用户输入的恶意代码注入到页面中执行(全程不经过服务器解析,仅客户端触发)。

5、利用方式:钓鱼邮件、钓鱼链接、伪装站点

6、防御方式:编写过滤的函数(WAF函数),利用WAF设备

7、绕过方式:

伪协议绕过:

绕过方式示例:<a href="javascript:alert(1)">点击替换为点击或利用date:伪协议;

适用场景:不是“仅DOM型”,核心时防护逻辑屏蔽了onclick/onload等事件属性,但未过滤<a>标签的href属性,攻击者通过伪协议(javascript:/date:)在href中执行JS。

大小写绕过
绕过方式示例:JaVaScRiPr:alert(1)、<ScRiPt>aleart(1)</ScRiPt>;

适用场景:防护逻辑仅过滤小写关键字(如只替换script、javascript,未做大小写不敏感匹配)比如开发者用str_replace("script", "",$input)(并非preg_replace("/script/i","",$input))大小写混合可绕过

双写绕过

绕过方式示例scriscriptpt(将script双写,过滤后会还原为script)、javascscriptript:alert(1)

适用场景:防护逻辑仅单次替换敏感关键字(如str_replace("script", "", $input)),攻击者通过双写关键字,使过滤后仍保留有效恶意代码。

实体标签绕过

绕过方式示例<a href="javascript:alert(1)">点击</a>(将javascript编码为 HTML 实体)

适用场景:防护逻辑仅对明文关键字进行过滤,未对 HTML 实体编码进行解码检测,攻击者通过编码恶意代码绕过检测。

头注绕过

绕过方式示例Content-Security-Policy: default-src 'self' 'unsafe-inline'(错误配置 CSP 头,允许内联脚本执行);或利用X-XSS-Protection: 0禁用浏览器内置 XSS 防护

适用场景:防护依赖 HTTP 响应头(如 CSP、X-XSS-Protection),但配置错误或被攻击者通过其他手段篡改,导致防护失效。

文件绕过

绕过方式示例:上传包含 XSS 代码的 SVG 文件(如<svg onload="alert(1)"></svg>),并通过文件上传功能执行代码

适用场景:应用允许上传文件但未对文件内容 / 类型严格校验,攻击者上传包含恶意脚本的文件,诱导用户访问触发执行。

空格绕过

绕过方式示例:<scr ipt>alert(1)</scr ipt>(在标签名中插入空格)、java script:alert(1)(在伪协议中插入空格)

适用场景:防护逻辑仅匹配连续的关键字字符串,未忽略关键字中的空格、换行等空白字符,攻击者通过插入空白字符拆分关键字绕过检测。

三、CSRF

1、定义:CSRF (Cross-Site Request Forgery) 跨站请求伪造,也可称为一键式攻击 (one-click-attack),通常缩写为 CSRF 或者 XSRF。

CSRF 攻击是一种挟持用户在当前已登录的浏览器上发送恶意请求的攻击方法。 相对于XSS利用用户对指定网站的信任,CSRF则是利用网站对用户网页浏览器的信任

2、产生原因:因为服务器对来访的客户没有二次校验。修改用户密码的接口,不需要old password。

3、利用方式:攻击者要去伪造一个页面,页面内包含接口的请求,然后攻击者需要引诱被攻击者点击。

4、利用前提:被攻击者要处于登录状态;被攻击者必须使用同一个浏览器;服务器未作跨域审查。

5、防御方法:敏感接口都需要进行二次校验;跨域审查;使用token

四、文件相关

1、文件包含

产生的原因:为了复用代码或者文档,直接引入到当前的文件中,但是没有进行充分过滤和校验,导致被利用包含了非法的文件

分类:本地包含;远程包含;

利用方式:挂马;泄露信息;

防御方式:白名单,黑名单,使用前缀后缀,不让被包含文件的url带参数,关闭文件包含

2、文件上传

产生原因:服务端对上传的文件没有做类型,大小,内容的校验,如果文件中存在恶意代码也会被接收。

形成条件:文件能够通过前后端过滤;文件内容不会被改变;存储位置可控的;具有访问和执行权限。

绕过方式:图片马,禁用JS,修改Content-type,针对黑名单可以使用大小写,.php4进行绕过

防御方式:类型白名单,扩展名白名单,内容检查(静态特征检查)

3、文件下载

产生原因:攻击者绕过了程序的限制,直接的读取或下载程序之外的文件。归根结底:后端程序的检查机制不完善

漏洞类型:任意文件下载;路径遍历

防御方式:替换../ ; 前缀和后缀;白名单;使用数据库存在文件路径,然后使用id来下载

绕过方式:绝对路径;

五、XXE

1、定义:XXE(XML External Entity Injection)也就是XML外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,XML文件的解析依赖libxml 库,而 libxml2.9 以前的版本默认支持并开启了对外部实体的引用,服务端解析用户提交的XML文件时,未对XML文件引用的外部实体(含外部一般实体和外部参数实体)做合适的处理,并且实体的URL支持 file:// 和 ftp:// 等协议,导致可加载恶意外部文件和代码,造成任意文件读取、命令执行、内网ip地址扫描、攻击内网网站、发起DOS攻击等危害。

2、防御方式:对于关键属性禁用DTD和外部实体;实体白名单;使用WAF

六、SSRF

1、定义:SSRF(Server-Side Request Forgery,服务器端请求伪造) 是一种由攻击者构造请求,由服务端发起请求的安全漏洞。可以理解为:攻击者通过漏洞,让服务器帮忙去访问攻击者原本无法访问的资源

2、产生原因:服务器提供从其他的服务器获取数据的功能,但是没有目标地址进行校验,过滤。

3、利用方式:对内探测与攻击;对外进行穿透和绕过

4、防御方法:白名单;将访问的内容写死;限制协议和端口;内网黑名单;网络隔离

七、逻辑漏洞

1、定义:设计的时候产生的逻辑缺陷

2、常见逻辑漏洞

  • 账号遍历

  • 邮箱轰炸

  • 水平越权

  • 响应劫持

  • 垂直越权

  • 弱口令

  • 支付漏洞

  • 四舍五入精度

八、其他

1、信息泄露

2、社工

3、安全意识

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐