1. 程式人生 > >跨站腳本

跨站腳本

onload public 跳轉 aid h+ file 客戶端 base 需要

實驗

一、 xss跨站腳本實驗

XSS全稱(cross site scripting)跨站腳本攻擊,是web程序最常見的漏洞。指攻擊者在網頁嵌入客戶端腳本如javascript,當用戶瀏覽網頁時,腳本就會在用戶的瀏覽器上執行,從而達到攻擊者的目的。比如獲取cookkie,導航到惡意網站等,主要原因就是頁面輸入的數據變成了代碼導致的攻擊。

本次實驗使用javaweb編寫的簡單程序測試一下代碼如下:

java頁面:

package servlet;

import java.io.IOException;

import java.util.Map;

import java.util.Set;

import

javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class XSSServlet extends HttpServlet {

private static final long serialVersionUID = -8953308985918560500L;

@Override

protected

void service(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

Map<String, String[]> map = request.getParameterMap();

Set<String> keySet = map.keySet();

// 將接收參數一一傳遞到頁面

for(String key : keySet){

Object obj = map.get(key);

if(obj instanceof String[]){

String[] strs = (String[])obj;

if(strs.length >= 1){

request.setAttribute(key, strs[0]);

}

}

}

request.getRequestDispatcher("/xss.jsp").forward(request, response);

}

}

Jsp頁面:

<%@ page pageEncoding="UTF-8"%>

<%String path = request.getContextPath(); String basePath = request.getScheme()+"://"

+request.getServerName()+":"+request.getServerPort()+path+"/";%>

<!DOCTYPE HTML><html> <head> <base href="<%=basePath%>">

<title>XSS跨站腳本測試</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

</head>

<body style="${bodyStyle }">

<form action="<%=path %>/xss.do" method="post">

背景顏色:<input name="bodyStyle" type="input" value="${bodyStyle }" />

<br />

<input type="submit" value="改變" />

</form>

</body>

</html>

Web.xml:

</welcome-file-list>

<servlet>

<servlet-name>action</servlet-name>

<servlet-class>servlet.XSSServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>action</servlet-name>

<url-pattern>/xss.do</url-pattern>

</servlet-mapping>

測試如下:

訪問地址:http://localhost:8080/class/xss.do 填寫參數:background:red

效果:點擊按鈕之後頁面背景會變成紅色

如圖:

訪問地址:http://127.0.0.1:8080/class/xss.do?bodyStyle=background:blue

效果:頁面直接變成藍色,不需要點擊按鈕

如圖:

攻擊測試:在文本框輸入:" onload=‘alert(/hello/)‘ "

效果:頁面彈出對話框

測試輸入:" onload="window.location.href=‘http://www.baidu.com‘ " "

效果:直接跳轉到百度首頁

使用掃描器掃描結果如下:

跨站腳本