web
- 1:XSS
- 1.1:简介
- 1.2:防护与绕过
- 1.2.1:HttpOnly
- 1.2.2:WAF 绕过
- 1.3:相关资源
- 2:CSRF
- 3:SSRF
- 4:RCE
本系列侧重方法论,各工具只是实现目标的载体。
命令与工具只做简单介绍,其使用另见《安全工具录》。
靶场参考:XSS-Labs,pikachu,DVWS。
1:XSS
1.1:简介
XSS(Cross-Site Scripting),跨站脚本攻击。它允许攻击者向网页注入恶意脚本代码,然后在用户的浏览器上执行这些恶意脚本。
危害:
- 钓鱼欺骗
- 网站挂马
- 身份盗用
- 盗取网站用户信息
- 垃圾信息发送
- 劫持用户 Web 行为
- XSS 蠕虫
分类:
- 反射型(非持久型)
一般把可以执行的 js 代码放到 URL 里,可通过邮件诱导用户点击。
攻击过程:发包 h=123 -> x.php -> 返回浏览器执行。 - 存储型(持久型)
恶意代码被后台存储之后,用户打开相应页面的时候就会执行脚本。
攻击过程:发包 h=123 -> x.php -> 写到数据库 -> x.php -> 返回浏览器执行。 - DOM 型
攻击过程:发包 h=123 -> 本地浏览器静态前端代码 -> x.php -> 返回浏览器执行。
Webshell 后门中的后门:
通过在 webshell 程序中植入后门,形成 “ 黑吃黑 ”,用有后门的木马入侵的网站也可以被木马制造者利用。webshell 的后门就可以利用 XSS 实现。
1.2:防护与绕过
1.2.1:HttpOnly
HttpOnly:如果 HTTP 响应头中包含 HttpOnly 标志,只要浏览器支持,客户端脚本就无法访问 cookie。因此,即使存在 XSS 缺陷,且用户意外访问利用此漏洞的链接,浏览器也不会向第三方透露 cookie。
如果浏览器不支持 HttpOnly,浏览器会忽略 HttpOnly 标志,从而创建一个传统的,脚本可访问的 cookie。
HttpOnly 属性只能防止 cookie 被盗取,不能防止 xss 漏洞。
绕过 httponly:
- 若浏览器保存帐号密码:从浏览器读取帐号密码。
- 若浏览器未保存帐号密码:需要使用 xss 跳转登录地址,再利用表单劫持。
1.2.2:WAF 绕过
常规 WAF 绕过思路:
- 标签语法替换
- 特殊符号干扰
- 提交方式更改
- 垃圾数据溢出
- 加密解密算法
- 结合其他漏洞绕过
1.3:相关资源
XSS 平台:
https://xss.yt
webshell 收集:
https://github.com/tennc/webshell
工具 XSStrike:
https://github.com/s0md3v/XSStrike
工具 Xwaf:
https://github.com/3xp10it/xwaf
关于 XSS 漏洞修复:
https://www.cnblogs.com/baixiansheng/p/9001522.html
绕过 XSS 检测机制:
https://bbs.kanxue.com/thread-250852.htm
Fuzz 字典:
https://github.com/TheKingOfDuck/fuzzDicts
2:CSRF
CSRF,或 XSRF(Cross-Site Request Forgery),跨站请求伪造。利用用户已经通过身份验证的会话来执行未经用户许可的操作,通过欺骗用户在不知情的情况下执行恶意请求。
也被称为 “One Click Attack” 或 “Session Riding”。
XSS:利用用户对指定网站的信任。
CSRF:利用网站对用户网页浏览器的信任。
漏洞攻击两个条件:
- 用户登录受信任网站 A,并在本地生成 Cookie。
- 在不注销 A 的情况下,访问危险网站 B。
如果遇到 POST 型,则需要构造一个表单提交按钮欺骗用户点击。
防御方案:
- 当用户发送重要的请求时需要输入原始密码
- 设置随机 Token
- 检验 referer 来源
- 设置验证码
3:SSRF
SSRF(Server-Side Request Forgery),服务器端请求伪造。攻击者通过受害者服务器发起网络请求,从而操纵和滥用服务器的资源,甚至访问服务器相关的内网。
SSRF 攻击的目标一般是从外网无法访问的内部系统。
SSRF 形成的原因大都是服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
SSRF 利用手段:
- 可以对外网、内网、本地进行端口扫描
- 攻击运行在内网或本地的有漏洞程序(比如溢出)
- 可以对内网 Web 应用进行指纹识别(通过请求默认的文件得到特定的指纹)
- 使用 file:/// 协议或其他协议读取本地文件
SSRF漏洞(原理&绕过姿势):
https://www.t00ls.com/articles-41070.html
4:RCE
RCE(Remote Command/Code Execution),远程命令/代码执行。指攻击者能够成功地在远程目标计算机上执行自己的恶意代码或命令。
出现这种漏洞,一般是因为应用从设计上需要给用户提供远程命令操作的接口。
危害:
- 可能导致系统被完全控制
- 窃取敏感数据
- 修改文件
- 操纵系统配置
PHP远程代码执行漏洞复现(CVE-2019-11043):
http://blog.leanote.com/post/snowming/9da184ef24bd
明月直入,无心可猜。
——《独漉篇》(唐)李白