跨站腳本
實驗
一、 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
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
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‘ " "
效果:直接跳轉到百度首頁
使用掃描器掃描結果如下:
跨站腳本