本系列侧重方法论,各工具只是实现目标的载体。
命令与工具只做简单介绍,其使用另见《安全工具录》。
靶场参考:XSS-Labs,pikachu,DVWS,XXE-Lab,WebGoat。

XSS(Cross-Site Scripting),跨站脚本攻击。它允许攻击者向网页注入恶意脚本代码,然后在用户的浏览器上执行这些恶意脚本。
危害:
分类:
Webshell 后门中的后门:
通过在 webshell 程序中植入后门,形成 “ 黑吃黑 ”,用有后门的木马入侵的网站也可以被木马制造者利用。webshell 的后门就可以利用 XSS 实现。
HttpOnly:如果 HTTP 响应头中包含 HttpOnly 标志,只要浏览器支持,客户端脚本就无法访问 cookie。因此,即使存在 XSS 缺陷,且用户意外访问利用此漏洞的链接,浏览器也不会向第三方透露 cookie。
如果浏览器不支持 HttpOnly,浏览器会忽略 HttpOnly 标志,从而创建一个传统的,脚本可访问的 cookie。
HttpOnly 属性只能防止 cookie 被盗取,不能防止 xss 漏洞。
绕过 httponly:
常规 WAF 绕过思路:
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
CSRF,或 XSRF(Cross-Site Request Forgery),跨站请求伪造。利用用户已经通过身份验证的会话来执行未经用户许可的操作,通过欺骗用户在不知情的情况下执行恶意请求。
也被称为 “One Click Attack” 或 “Session Riding”。
XSS:利用用户对指定网站的信任。
CSRF:利用网站对用户网页浏览器的信任。

漏洞攻击两个条件:
如果遇到 POST 型,则需要构造一个表单提交按钮欺骗用户点击。
防御方案:

SSRF(Server-Side Request Forgery),服务器端请求伪造。攻击者通过受害者服务器发起网络请求,从而操纵和滥用服务器的资源,甚至访问服务器相关的内网。
SSRF 攻击的目标一般是从外网无法访问的内部系统。

SSRF 形成的原因大都是服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
SSRF 利用手段:
参考资料:
《SSRF漏洞(原理&绕过姿势)》:
https://www.t00ls.com/articles-41070.html

RCE(Remote Command/Code Execution),远程命令/代码执行。指攻击者能够成功地在远程目标计算机上执行自己的恶意代码或命令。
出现这种漏洞,一般是因为应用从设计上需要给用户提供远程命令操作的接口。
危害:
参考资料:
《PHP远程代码执行漏洞复现(CVE-2019-11043)》:
http://blog.leanote.com/post/snowming/9da184ef24bd

XML(Extensible Markup Language,可拓展标记语言),是用于存储和传输数据的标记语言。
HTML 也是标记语言。
XML 与 HTML 的区别:
XML 作用:
XML 文档结构:
示例,表示书籍的信息:
<bookstore>
<book>
<title>XML Basicstitle>
<author>John Doeauthor>
<price>29.99price>
book>
<book>
<title>Web Development with XMLtitle>
<author>Jane Smithauthor>
<price>39.95price>
book>
bookstore>
DTD(Document Type Definition,文档类型定义),用于定义 XML 文档结构和验证 XML 文档合法性的规范。
DTD 指定了 XML 文档中可以包含哪些元素、元素的顺序、元素的数据类型以及其他结构相关的信息。
DTD 可声明于 XML 文档中,也可作为一个外部引用。
示例:
DOCTYPE note [
<!ELEMENT note (to, from, heading, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Daveto>
<from>Tomfrom>
<heading>Reminderheading>
<body>You are a good manbody>
note>
Entity(实体)是 XML 文档中的一种结构元素,用于定义和引用可重用的文本片段或数据块。
实体可以理解为变量,必须在 DTD 中定义申明,可以在文档中的其他位置引用该变量的值。
按类型分类:
按引用方式分类:
示例:
内部实体的定义使用 声明,如下所示:
<!ENTITY entityName "entityValue">
引用内部实体时,使用 &entityName; 的语法。
外部实体通常用于引用包含大量数据或配置信息的外部文件。
外部实体的定义如下所示:
<!ENTITY entityName SYSTEM "systemIdentifier">
DOCTYPE example [
<!ELEMENT example ANY>
<!ENTITY internalEntity "This is an internal entity.">
]>
<example>
<data>
Internal Entity: &internalEntity;
data>
<external-data>
External Entity: &externalEntity;
external-data>
example>
XXE(XML External Entity Injection,XML 外部实体注入),应用程序解析用户返回的 XML 数据时,没有禁止外部实体的加载,导致攻击者可以在 XML 文档中引入恶意的外部实体进行攻击。
漏洞发现:
Content-Type:text/xml 或 application/xml。
如果没有也可以手动修改,并将数据更改为 XXE 语句看回显。
因为数据包中虽然没有写接收信息类型,但是不一定不存在。
基本检测:
DOCTYPE ANY [
<!ENTITY words "Hello XXE!">
]>
<root>&words;root>
若数据包或页面中存在 “ Hello XXE ” 字样,则表明实体被解析。
检测是否支持 DTD 引用外部实体:
DOCTYPE ANY [
%name;
]>
通过查看自己服务器上的日志判断,看目标服务器是否向自己的服务器发了一条请求。如果发送了请求说明很可能存在 XXE。
通用利用方法之读取文件:
DOCTYPE xxe [
<!ELEMENT name ANY>
]>
<root>
<name>&xxe;name>
root>
过滤绕过:
漏洞修复与防御方案:
《XML基础(只管能看懂XML文件)》:
https://blog.csdn.net/lalala_dxf/article/details/121034427
《XML教程(一文彻底搞懂XML)》:
https://blog.csdn.net/m0_58859743/article/details/125113744
《DTD语法(元素、属性、实体声明)》:
https://blog.csdn.net/treblez/article/details/102069499
《CTF-XXE》:
https://www.cnblogs.com/20175211lyz/p/11413335.html
《XXE知识总结,有这篇就够了》:
https://blog.csdn.net/weixin_44420143/article/details/118721145
《XXEinjector:一款功能强大的自动化XXE注射工具》:
https://www.cnblogs.com/bmjoker/p/9614990.html
XXEinjector:
https://github.com/enjoiz/XXEinjector
明月直入,无心可猜。
——《独漉篇》(唐)李白