<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JSP安全幾個(gè)小問題

    記得還是去年,剛到據(jù)說是高手云集的威威公司上班的時(shí)候,一個(gè)新到的同事給我講他花了半天的時(shí)間寫,并做了很長(zhǎng)時(shí)間的實(shí)踐,寫了個(gè)關(guān)于攻擊.jsp頁面的程序。下面我把具體的實(shí)現(xiàn)過程和大家分享一下。測(cè)試平臺(tái)是Tomcat,當(dāng)然,版本有點(diǎn)低,他的目的只是想證實(shí)一下他的某些想法。首先,他在Tomcat的WEB目錄下建立了一個(gè)Hello.jsp文件,內(nèi)容是:

    <%out.print(hello);%>

    通過IE的正常請(qǐng)求地址為:http://localhost:8080/examples/jsp/hello.jsp,顯示結(jié)果為:hello。然后開始具體的攻擊測(cè)試。測(cè)試時(shí),發(fā)出的請(qǐng)求地址為:http://localhost:8080/examples/jsp/////////hello.jsp?,瀏覽器上顯示編譯錯(cuò)誤,錯(cuò)誤的原因是500?java.lang.NullPointerException。這個(gè)應(yīng)該是比較常見的錯(cuò)誤了。現(xiàn)在,恢復(fù)正常的請(qǐng)求http://localhost:8080/examples/jsp/hello.jsp,問題就出現(xiàn)了,即出錯(cuò),而且所報(bào)的錯(cuò)誤和剛才造成它錯(cuò)誤的請(qǐng)求是一樣的:“500?java.lang.NullPointerException”。難道是緩存在瀏覽器里了嗎?換臺(tái)機(jī)器訪問http://192.168.10.188/examples/jsp/hello.jsp。問題依然如故,哎!可憐的Hello.jsp呀!

      雖然這個(gè)問題有些弱智,不過,他的目的也達(dá)到了,即找出“.jsp”流程中存在的一些問題。所以,JSP程序同ASP一樣,還是存在著很多安全上的問題的。因此,對(duì)于一心研究論壇或者其他安全信息的朋友來說,要想發(fā)現(xiàn)JSP的BUG,了解一些JSP的工作原理是十分重要的。

      需要指出的是,雖然是一門網(wǎng)絡(luò)編程語言,JSP和PHP、ASP的工作機(jī)制還存在很大的區(qū)別,首次調(diào)用JSP文件時(shí),JSP頁面在執(zhí)行時(shí)是編譯式,而不是解釋式的。首次調(diào)用JSP文件其實(shí)是執(zhí)行一個(gè)編譯為Servlet的過程。當(dāng)瀏覽器向服務(wù)器請(qǐng)求這一個(gè)JSP文件的時(shí)候,服務(wù)器將檢查自上次編譯后JSP文件是否有改變,如果沒有改變,就直接執(zhí)行Servlet,而不用再重新編譯,這樣,工作效率得到了明顯提高。這也是目前JSP論壇開始逐漸風(fēng)靡的一個(gè)重要原因。

      小提示:Servlet是用Java編寫的Server端程序,它與協(xié)議和平臺(tái)無關(guān);Servlet運(yùn)行于Java-enabled?WEB?Server中;Java?Servlet可以動(dòng)態(tài)地?cái)U(kuò)展Server的能力,并采用請(qǐng)求-響應(yīng)模式提供WEB服務(wù);最早支持Servlet技術(shù)的是JavaSoft的Java?WEB?Server;Servlet的主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài)WEB內(nèi)容。

      說到這里,我們自然就會(huì)關(guān)心一些JSP的安全問題。一般來說,常見的JSP安全問題有源代碼暴露(包括程序源代碼以明文的方式返回給訪問者,如添加特殊后綴引起jsp源代碼暴露;插入特殊字符串引起Jsp源代碼暴露;路徑權(quán)限引起的文件Jsp源代碼暴露;文件不存在引起的絕對(duì)路徑暴露問題等)、遠(yuǎn)程程序執(zhí)行類、數(shù)據(jù)庫如SQL?Server、Oracle?、DB2等的漏洞,操作系統(tǒng)漏洞等。不過,為了突出Jsp的安全問題,本文將結(jié)合目前的一些比較流行的Jsp論壇分類闡述和提出解決的建議。為了講解方便,本文還采用一些公開了原代碼的論壇實(shí)例代碼,至于安裝軟件版本、操作系統(tǒng)等,可以查看安裝提示。

      論壇用戶管理缺陷

      為了加強(qiáng)實(shí)戰(zhàn)效果,我們可以到http://down.chinaz.com/S/5819.asp這個(gè)地址下載一個(gè)典型的論壇代碼,根據(jù)提示,數(shù)據(jù)源名稱為yyForum,用戶名為xyworker,密碼:999。到baidu、Google等網(wǎng)站搜索一下,我們可以看到,安裝這個(gè)代碼的論壇不少。仔細(xì)分析后,可以發(fā)現(xiàn),用戶管理的頁面是user_manager.jsp文件。首先,我們看看這個(gè)系統(tǒng)是如何加強(qiáng)它的代碼安全性的。其中,在代碼的開始部分有一個(gè)if限制條件,代碼的第三行到第十行具體如下:

    <%
    if?((session.getValue(UserName)==null)||(session.getValue(UserClass)==null)||(!session.getValue(UserClass).equals(系統(tǒng)管理員)))

    %>

      其中,Session.getValue表示檢索出Session的值;sendRedirect()執(zhí)行后,地址欄鏈接會(huì)改變,相當(dāng)于客戶端又重新發(fā)了一個(gè)get請(qǐng)求,要服務(wù)器傳輸另一個(gè)文件過來。

      下面,我們?cè)賮砜纯葱薷挠脩粜畔⒌奈募odifyuser_manager.jsp。典型代碼如下:

    <%@page?contentType=text/html;?charset=gb2312?language=java?import=java.sql.*,java.util.*??%>
    <jsp:useBean?id=yy?scope=page?class=yy.jdbc/>
    <%!String?User_Name,User_Password,sql,?User_Sign;%>
    <%
    User_Name=request.getParameter(name);

    //out.println(User_Name);
    User_Password=request.getParameter(password);
    User_Password=yy.ex_chinese(User_Password);
    ……
    User_Sign=request.getParameter(sign);
    User_Sign=yy.ex_chinese(User_Sign);

    Connection?con=yy.getConn();
    Statement??stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    sql=update?用戶表?set?用戶密碼='+User_Password+',用戶性別='+User_Sex+',用戶郵箱='+User_Email+',居住地址='+User_Address+',手機(jī)號(hào)碼='+User_Mobile+',Oicq='+User_Oicq+',出生日期='+User_Birthay+',用戶等級(jí)='+User_Class+',簽名='+User_Sign+'?where?用戶名='+User_Name+';
    //out.println(sql);
    stmt.executeUpdate(sql);
    out.println(<font?size=2?color=blue>正在處理你的用戶信息,請(qǐng)稍后...</font><meta?http-equiv='refresh'?content='2;url=user_manager.jsp'>);
    %>
    <jsp:include?page=inc/online.jsp?flush=true/>

      看看這個(gè)文件,我們就好像看到了一個(gè)簡(jiǎn)單的教學(xué)文件。現(xiàn)在,假設(shè)管理員提交如下地址,即http://www.51dz.net/bbs/modifyuser_manager.jsp?modifyid=51,需要查看、修改ID為51的用戶的資料(管理員默認(rèn)的用戶ID為51)。問題就出來了。同樣的,我們可以通過搜索引擎得到如下地址

    很明顯,這個(gè)用戶管理文件缺乏認(rèn)證,即使是普通的用戶,甚至包括我們這些搭不上邊的“游客”,也可以直接提交上述請(qǐng)求,從而將其資料一覽無余,更讓人動(dòng)心的是,密碼也是明文存儲(chǔ)的。
      
      http://www.51dz.net/bbs/modifyuser_manager.jsp同樣是大開山門,直到惡意用戶把數(shù)據(jù)更新的操作執(zhí)行完畢,重定向到user_manager.jsp的時(shí)候,管理員才會(huì)看見那個(gè)顯示錯(cuò)誤的頁面,但這個(gè)時(shí)候?yàn)闀r(shí)已晚,更談不上“亡羊補(bǔ)牢”了。類似的錯(cuò)誤存在于很多JSP的站點(diǎn)上,面對(duì)這樣的論壇,我們能夠放心的說“安全”嗎?解決之道有很多,不過,最基本的要求是為每個(gè)需要加身份認(rèn)證的地方加上身份認(rèn)證,如果借用別人的代碼,一定要對(duì)涉及到用戶管理、密碼認(rèn)證等重要文件修改一下,照搬雖然省事,但代碼毫無安全性可言。

      再就是SQL注入的問題。比如,這個(gè)典型的問題:“昨天公司的數(shù)據(jù)庫被人SQL注入,9萬條記錄都被update了,同事寫了個(gè)JSP程序來把他改回來,可是這JSP沒有一點(diǎn)信息返回,看不到進(jìn)度,在運(yùn)行些什么都不知道。”不過,這和JSP程序沒有什么必然的聯(lián)系,根據(jù)國情,國內(nèi)的網(wǎng)站用ASP+Access或SQLServer的占70%以上,PHP+MySQL占20%,其它的不足10%。因此,ASP的SQL注入比較常見也不足為怪。不過,SQL注入漏洞可謂是“千里之堤,潰于蟻穴”,這種漏洞在網(wǎng)上極為普遍,即使是JSP程序也不能幸免。歸根結(jié)底,通常是由于程序員對(duì)注入不了解,或者程序過濾不嚴(yán)格,或者某個(gè)參數(shù)忘記檢查導(dǎo)致。看看這個(gè)教材式的JSP程序就可以窺見一般:

    Statement?stmt?=?conn.createStatement();?
    String?checkUser?=?select?*?from?login?where?username?=?'?+?userName?+?'?and?userpassword?=?'?+?userPassword?+?';?
    ResultSet?rs?=?stmt.executeQuery(checkUser);?
    if(rs.next())?
     response.sendRedirect(SuccessLogin.jsp);?
    else?
     response.sendRedirect(FailureLogin.jsp);

      針對(duì)這種情況,如果數(shù)據(jù)庫里存在一個(gè)名叫“Tom”的用戶,那么在不知道密碼的情況下至少有下面幾種方法可以登錄:?
    用戶名:Tom????????????密碼:'?or?'a'='a
    用戶名:Tom????????????密碼:'?or?1=1/*
    用戶名:Tom'?or?1=1/*?????密碼:(任意)

    posted on 2008-05-23 18:20 金家寶 閱讀(1250) 評(píng)論(0)  編輯  收藏 所屬分類: 網(wǎng)絡(luò)轉(zhuǎn)載


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲gay片在线gv网站| 国产一级a毛一级a看免费视频 | 国产精品成人观看视频免费| 免费观看男人免费桶女人视频| 免费人成网站7777视频| 亚洲一区免费观看| 十八禁的黄污污免费网站| 亚洲高清视频免费| 国产亚洲精品不卡在线| 亚洲粉嫩美白在线| 无码人妻AV免费一区二区三区| 国产国产人免费视频成69大陆| 亚洲精品无码久久久久去q| 亚洲人成网站18禁止| 免费无码毛片一区二区APP| 亚洲精品成a人在线观看| 久久乐国产综合亚洲精品| 久久久久久国产精品免费免费| 香蕉蕉亚亚洲aav综合| 一区在线免费观看| 性做久久久久免费看| 亚洲专区一路线二| 久久成人免费大片| 亚洲国产婷婷六月丁香| 久久久久久久99精品免费| 亚洲日韩中文字幕| 亚洲最大免费视频网| 午夜在线a亚洲v天堂网2019| 国产免费人人看大香伊| 亚洲精品国产高清在线观看| 日韩精品成人亚洲专区| 国产亚洲福利精品一区二区| 亚洲欧洲免费无码| 亚洲啪啪免费视频| 嫖丰满老熟妇AAAA片免费看| 亚洲熟妇无码爱v在线观看| 在线美女免费观看网站h| 亚洲国产精久久久久久久| 国产精品99久久免费观看| 久久精品国产亚洲av麻豆图片 | 亚洲一区二区三区免费观看 |