亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么實現Apache Tomcat樣例目錄session操縱漏洞

發布時間:2021-12-17 17:03:21 來源:億速云 閱讀:962 作者:柒染 欄目:安全技術

這期內容當中小編將會給大家帶來有關怎么實現Apache Tomcat樣例目錄session操縱漏洞,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

0x00   背景

前段時間掃到的漏洞,研究了下,感覺挺有意思的,發出來和大家分享下,有啥不對的地方還請各位拍磚指正。

Apache Tomcat默認安裝包含”/examples”目錄,里面存著眾多的樣例,其中session樣例(/examples/servlets/servlet/SessionExample)允許用戶對session進行操縱。因為session是全局通用的,所以用戶可以通過操縱session獲取管理員權限。

0x01   漏洞分析演示

       首先,我們先來看看SessionExample的部分源碼

       //表單代碼

       out.println("<P>");

       out.print("<form action=\"");

       out.print(response.encodeURL("SessionExample"));

       out.print("\" ");

       out.println("method=POST>");

       out.println(rb.getString("sessions.dataname"));

       out.println("<input type=text size=20 name=dataname>");

       out.println("<br>");

       out.println(rb.getString("sessions.datavalue"));

       out.println("<input type=text size=20 name=datavalue>");

       out.println("<br>");

       out.println("<input type=submit>");

       out.println("</form>");

       //核心代碼

       HttpSession session = request.getSession(true);

       out.println(rb.getString("sessions.id") + " " +session.getId());

       out.println("<br>");

       out.println(rb.getString("sessions.created") + " ");

       out.println(new Date(session.getCreationTime()) +"<br>");

       out.println(rb.getString("sessions.lastaccessed") + "");

       out.println(new Date(session.getLastAccessedTime()));

       String dataName = request.getParameter("dataname");//獲取dataname參數的值

       String dataValue = request.getParameter("datavalue");//獲取datavalue參數的值

       if (dataName != null && dataValue != null) {

           session.setAttribute(dataName, dataValue);//將dataname和datavalue寫入session

       }

       用戶通過表單提交dataname和datavalue參數,然后通過request.getParameter()函數獲取這兩個參數的值,再通過session.setAttribute()函數將dataname和datavalue的值寫入session。因為session全局通用的特性,所以可以通過操縱session參數的值來獲取網站管理員權限的目的。

       舉個例子:

       我們先來編寫login.jsp,login2.jsp,index.jsp這三個頁面,通過這三個頁面來模擬一般網站身份驗證的過程。

      login.jsp

      <formaction=login2.jsp method="POST" >  

      用戶名: <input type="text"name="username"><br> 

      密碼: <input type="text" name="password"><br> 

      <inputtype="submit" value="登錄"><br> 

      <form>

      login2.jsp

      <% 

      if(request.getParameter("username") != null && 

      request.getParameter("password")!= null) {  

      String username =request.getParameter("username"); 

      String password =request.getParameter("password"); 

      //驗證身份 

      if (username.equals("admin")&& password.equals("admin")) {  

        session.setAttribute("login","admin"); 

        response.sendRedirect("index.jsp"); 

        }else { 

           response.sendRedirect("login.jsp"); 

        }  

         } 

      %>

     index.jsp

     <% 

     if(session.getAttribute("login")!= null &&

     ((String)session.getAttribute("login")).equals("admin")){ 

        out.println("Login"); 

      } else{

       response.sendRedirect("login.jsp");

       }

      %>

我們直接打開網站后臺,即index.jsp

http://127.0.0.1:8080/examples/index.jsp

怎么實現Apache Tomcat樣例目錄session操縱漏洞

發現被重定向到login.jsp了,而且在不知道密碼的前提下,我們是無法登陸進去的。接下將演示如何通過操縱session進入網站后臺

打開SessionExample

http://127.0.0.1:8080/examples/servlets/servlet/SessionExample

在Name of Session Attribute: 里輸入login

在Value of Session Attribute:里輸入admin

怎么實現Apache Tomcat樣例目錄session操縱漏洞

提交后顯示login=admin已經寫入session

怎么實現Apache Tomcat樣例目錄session操縱漏洞

再次打開index.jsp,顯示成功登錄

怎么實現Apache Tomcat樣例目錄session操縱漏洞

0x02 修復建議

0x03 題外話

       不覺得這個挺適合做后門的嗎?

       <%setAttribute("request.getParameter("u")", " request.getParameter("a")%>

       “u”和”a”的值看后臺源碼

上述就是小編為大家分享的怎么實現Apache Tomcat樣例目錄session操縱漏洞了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

来凤县| 富阳市| 连江县| 木兰县| 繁昌县| 沛县| 积石山| 榆树市| 汝州市| 浮山县| 山东| 西峡县| 丹东市| 威远县| 卢湾区| 平乐县| 永善县| 牡丹江市| 从化市| 承德县| 安陆市| 长治县| 焦作市| 乐昌市| 大新县| 南召县| 东乡县| 磐安县| 鸡泽县| 新和县| 大邑县| 中方县| 集贤县| 石景山区| 霸州市| 得荣县| 明光市| 商都县| 永德县| 利川市| 车险|