1. 程式人生 > >看好你的門-攻擊服務端(1)-注入XML內部實體

看好你的門-攻擊服務端(1)-注入XML內部實體

首先需要宣告,本文純屬一個毫無遠見和真才實學的小小開發人員的愚昧見解,僅供用於web系統安全方面的參考。

1、XML注入

在我們經常開發、使用、運維的系統中,XML的使用頻率是非常的高的。我們給伺服器提供資料可能是XML(對使用者而言不是,對系統和服務之間是),伺服器返回給客戶端的可能也是XML。

2、 XML注入實體的案例

百度上好像發現了某個功能被XML注入實體 的漏洞;

2014-05-07: 細節已通知廠商並且等待廠商處理中
2014-05-07: 廠商已經確認,細節僅向廠商公開
2014-05-17: 細節向核心白帽子及相關領域專家公開
2014-05-27: 細節向普通白帽子公開
2014-06-06: 細節向實習白帽子公開
2014-06-21: 細節向公眾公開      

3、 XML注入實體的樣例(頁面部分)

僅用於示例和說明:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>阿飯同學的測試</title>
</head>
<body>
    <form action="aXmlQuery.action"
method="post" name="form1">
<table width="492" border="1"> <tr><td>輸入XML</td></tr> <tr> <td height="35"> <textarea name="infos" cols="60" rows="4" ></textarea> </td
>
</tr> <tr align="center"> <td colspan="2" bgcolor="#FFCC00"><input type="submit" value="查詢" /> </td> </tr> <tr><td>歡迎您:<%=(String)request.getAttribute("username")%> </td> </tr> </table> </form> </body> </html>

4、 XML注入實體的樣例(JAVA實現部分)

package com.safe;
import java.io.ByteArrayInputStream;
import java.io.InputStream;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.lang.xwork.StringUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class EasyXmlQueryAction extends ActionSupport {
    private static final long serialVersionUID = 1931829246016041219L;

    public String execute() throws Exception {
        HttpServletRequest request = ServletActionContext.getRequest();
        String infos = request.getParameter("infos");
        String username = "";


        XMLConfiguration config = new XMLConfiguration();
        InputStream in = new ByteArrayInputStream(infos.getBytes());  
        try{
            config.load(in);        
            username = config.getString("username");        
        }catch(Exception e){
            e.printStackTrace();
        }
        request.setAttribute("username", username);
        System.out.println("獲得的資訊為:" + infos);
        return "success";
    }
}

5、執行

我們在頁面上輸入一個正常的XML:

<?xml version="1.0" encoding="UTF-8" ?>
<widgets>
<username>NAME</username>
<sex>man</sex>
</widgets>
頁面上顯示:歡迎您:NAME

我們對XML注入一個內部實體(XML功能非常強大,能夠進行內部實體引用和外部實體應用,這就導致了兩種著名的攻擊:XML內部實體攻擊,XML外部實體攻擊)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE foo [ <!ENTITY name "superAdmin" >] >
<widgets>
<username>&name;</username>
<sex>man</sex>
</widgets>
執行後,頁面顯示:歡迎您:superAdmin

我輸入的明明的是&name;,怎麼變成了superAdmin,又被攻擊了…

相關推薦

看好-攻擊服務(1)-注入XML內部實體

首先需要宣告,本文純屬一個毫無遠見和真才實學的小小開發人員的愚昧見解,僅供用於web系統安全方面的參考。 1、XML注入 在我們經常開發、使用、運維的系統中,XML的使用頻率是非常的高的。我們給伺服器提供資料可能是XML(對使用者而言不是,對系統和服務之

看好-攻擊服務(6)-對SMTP注入攻擊 操縱郵件傳送

首先需要宣告,本文純屬一個毫無遠見和真才實學的小小開發人員的愚昧見解,僅供用於web系統安全方面的參考。 1、SMTP命令注入 就目前的網際網路的發展情況,大多數的人都會使用網際網路通過郵件Email的方式和他人進行通訊。因此大多數網站允許他們的使用者聯絡他

服務模版注入漏洞檢測payload整理

服務端模版注入漏洞產生的根源是將使用者輸入的資料被模版引擎解析渲染可能導致程式碼執行漏洞 下表涵蓋了java,php,python,javascript語言中可能使用到的模版引擎,如果網站存在服務端模版注入在能回顯的情況下會將驗證欄的資料當模版執行,利用引擎提供的功能進行了計算大部分執行結果都會變成15227

Axis2客戶呼叫服務報org.xml.sax.SAXException

org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deseriali

XXE注入--XML外部實體注入(XML External Entity)

前言 很早就聽說過這個漏洞,但是在實際的環境中很少遇見,最近碰到過XXE注入漏洞,於是就來研究一下XXE注入。 XXE Injection即XML External Entity Inje

看好-攻擊資料儲存區(4)-XPath注入攻擊

首先需要宣告,本文純屬一個毫無遠見和真才實學的小小開發人員的愚昧見解,僅供用於web系統安全方面的參考。 1、一些多餘的話 XPath注入和SQL注入,原理上非常相似 但是XPath注入的物件主要是XML,相對來說,危害性更加大 2、儲存使用者資

Atitit 前後互動模式 目錄 1.1. Ajax 1 1.2. Fetch api 1 1.3. 服務指令碼模式(簡單快速) 1 1.4. 瀏覽器注入物件、函式 1 1.5. 瀏覽器外掛模式

Atitit 前後端互動模式   目錄 1.1. Ajax 1 1.2. Fetch api 1 1.3. 服務端指令碼模式(簡單快速) 1 1.4. 瀏覽器注入物件、函式 1 1.5. 瀏覽器外掛模式 1 1.6. other 1   &

看好-客戶傳資料(5)-用java修改referer

首先需要宣告,本文純屬一個毫無遠見和真才實學的小小開發人員的愚昧見解,僅供用於web系統安全方面的參考。 1、 簡單說明 Referer用來表明,瀏覽器向 WEB 伺服器表明自己來自哪裡。 但是就它本身而言,並非完全安全。 寫一個例子,可以任意修改ht

OAuth2.0學習(3-1服務實現

other cti info ase service packages artifacts ace ews 開源 http://oltu.apache.org/ 其他 http://www.oschina.net/project/tag/307/oauth?lang=19&

如何實現微信小程序與.net core應用服務的無狀態身份驗證

做的 動圖 ef7 服務端 apt 是我 分布 .net service 隨著.net core2的發布,越來越多人使用.net core2開發各種應用服務端,下面我就結合自己最近開發的一款小程序,給大家分享下,怎麽使用小程序登錄後,小程序與服務端交互的權限控制。

14.1 NFS介紹 14.2 NFS服務安裝配置 14.3 NFS配置選項

14.1 nfs介紹 14.2 nfs服務端安裝配置 14.3 nfs配置選項14.1 NFS介紹NFS是Network File System的縮寫NFS最早由Sun公司開發,分2,3,4三個版本,2和3由Sun起草開發,4.0開始Netapp公司參與並主導開發,最新為4.1版本NFS數據傳輸基於RPC協議

2018-3-26 14周1次課 NFS服務安裝、配置

NFS14.1 NFS介紹·NFS是Network File System的縮寫·NFS最早由Sun公司開發,分2,3,4三個版本,2和3由Sun起草開發,4.0開始Netapp公司參與並主導開發,最新為4.1版本·NFS數據傳輸基於RPC協議,RPC為Remote Procedure Call的簡寫。·NF

14.1 NFS介紹;14.2 NFS服務安裝配置;14.3 NFS配置選項

NFS服務端安裝配置14.1 NFS介紹1. NFS是Network File System的縮寫2. NFS最早由Sun公司開發,分2,3,4三個版本,2和3由Sun起草開發,4.0開始Netapp公司參與並主導開發,最新為4.1版本3. NFS數據傳輸基於RPC協議,RPC為Remote Procedur

14.1 NFS介紹14.2 NFS服務安裝配置14.3 NFS配置選項

十四周一次課(3月26日)14.1 NFS介紹centos6之前的版本叫portmap 之後的版本叫rpcbind14.2 NFS服務端安裝配置首先要準備2臺機器,一臺是服務端ip:192.168.133.130,一臺是客戶端ip:192.168.133.131在服務端安裝yum install -y nf

NFS(1)NFS介紹、 NFS服務安裝配置、配置選項、exportfs命令、NFS客戶問題

NFS服務端安裝配置 NFS介紹NFS服務常常用到,用於在網絡上共享存儲NFS工作原理(在centos版本5及之前的版本,RPC服務叫portmap,之後就叫:rpcbind)NFS服務需要借助RPC協議進行通信。 NFS服務端安裝配置先準

14.1-14.3 NFS介紹,服務安裝,客戶掛載NFS

NFS NFS客戶端掛載 NFS服務端安裝 14.1 NFS介紹NFS是Network File System的縮寫NFS最早由Sun公司開發,分2,3,4三個版本,2和3由Sun起草開發,4.0開始Netapp公司參與並主導開發,最新為4.1版本NFS數據傳輸基於RPC協議,RPC為Remote

輕松搭建CAS系列(1)-使用cas overlay搭建SSO SERVER服務

連接 登錄 mage pla class TP build 基礎上 解壓 概要說明 cas的服務端搭建有兩種常用的方式: 1. 基於源碼的基礎上構建出來的 2. 使用WAR overlay的方式來安裝 官方推薦使用第二種,配置管理方便,以後升級也容易。本文就是使用

Python學習筆記1:簡單實現ssh客戶服務

bsp dev bre 客戶端 break 基於 bin listen 客戶 實現基於python 3.6。 server端: 1 __author__ = "PyDev2018" 2 3 import socket,os 4 server = socket.s

使用多線程實現多個客戶服務通信1

runnable system 處理異常 封裝 端口被占用 直接 客戶端連接 i++ 應用程序 Server.java package socket; import java.io.BufferedReader;import java.io.IOException;impo

如何修改服務器的賬號密碼和

超過 開會 計算 軟件 必須 出現 中毒 安裝 設置密碼 相信很多人租到服務器都會面臨的一個問題就是,怎樣才比較安全,怕被***,但是又怕亂安裝軟件會導致中毒。其實,比較簡單的可以先把默認的用戶名,密碼,端口先改掉,盡量的避免不安全因素。那麽現在簡單的說下更改流程改用戶名: