CSRF-SSRF-XML-XXE
- 目录:
CSRF
XML 基础知识
XML 外部实体注入(XXE)
SSRF
CSRF
从新人角度来区分:
- XSS: 利用用户对站点的新人
- CSRF: 利用站点对已经认证用户的信任
常见攻击方式:
结合社工在身份认证会话过程中实现攻击 修改账号密码、个人信息、(email、收货地址)发送伪造的业务请求(网银,购物,投票) 关注他人社交帐号,推送博文 在用户非自愿,不知情的情况下提交请求
业务逻辑漏洞
对关键操作缺少确认机制 自动扫描程序无法发现此类漏洞
漏洞利用条件
被害用户已经完成身份认证
新请求的提交不需要重新身份认证或确认机制
攻击者必须了解web app请求的参数构造
诱使客户触发攻击的指 令
Burp suite CSRF PoC generator
Post / Get 方法
自动扫描程序检测CSRF漏洞方法
在请求和响应过程中检查是否存在anti-CSRF token
检测服务器是否验证anti-CSRF token
检测referrer头是否可以伪造
CSRF 漏洞防御
- Captcha
- anti-CSRF token
- Referrer头
- 降低会话超时时间
XML 简介
XML 指可扩展标记语言 (extensible Markup Language) 。
XML被设计用来传输和存储数据。(HTML被设计用来显示数据。)
XML是-种很像HTML的标记语言。
XML标签没有被预定义。需要自行定义标签。
XML被设计为具有自我描述性。
Xml是W3C的推荐标准。
XML作用
- XML 把数据从HTML分离
- XML简化数据共享
- XML简化数据传输
- XML简化平台变更
XML树结构
XML文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"。
XML文档使用简单的具有自我描述性的语法:
<?xml version="1.0" encoding="UTF-8"\?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
第一行是XML声明。它定义XML的版本(1.O)和所使用的编码下一行描述文档的根元素<note>
接下来4行描述根的4个子元素(to, from, heading 以及body)最后一行定义根元素的结尾: </note>
- XML文档必须包含根元素。该元素是所有其他元素的父元素。XML文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。
- 所有的元素都可以有子元素。
- 父、子以 及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。
- 所有的元素都可以有文本内容和属性(类似HTML中) 。
XML语法规则
1.XML文档必须有根元素
2.XML声明文件的可选部分,如果存在需要放在文档的第一行
<?xml version="1.0" encoding="utf-8"?>3.所有的XML元素都必须有一个关闭标签
</>4.XML 标签对大小写敏感
5.XML必须正确嵌套
6.XML属性值必须加引号
7.用实体引用来代替
"<"等特殊字符在XML中,有5个预定义的实体引用:  (空格)  ;
< < less than <
> > greater than >
& & ampersand &
' ' apostrophe '
" " quotation mark "8.在XML中编写注释的语法与HTML的语法很相似。
9.在XML中,文档中的空格不会被删减。
XML元素
XML元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
一个元素可以包含:
- 其他元素
- 文本
- 属性
- 或混合以上所有...
XML命名规则
XML元素必须遵循以下命名规则:
- 名称可以包含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字母xml(或者XML、Xml等等)开始
- 名称不能包含空格
- 可使用任何名称,没有保留的字词。
命名习惯:
1.使名称具有描述性。使用下划线的名称也很不错:<first_name> ,<last_name>
2.名称应简短 和 简单,比如 : <book_title> ,而不是∶<the_title_of_the_book>。
3.避免"-"字符。如果按照这样的方式进行命名: "first-name",一些软件会认为想要从first里边减去name。
4.避免"."字符。如果按照这样的方式进行命名: "first.name",一些软件会认为"name"是对象"first"的属性。
5.避免":"字符。冒号会被转换为命名空间来使用。
6.xml文档经常有一个对应的数据库,其中的字段会对应xml文档中的元素。有一个实用的经验,即使用数据库的命名规则来命名xml文档中的元素.
7.在xml中,éoa等非英语字母是完全合法的,不过需要留意,软件供应商如不支持这些字符时可能出现的问题.