作为网络安全方面的技术人员,大家对HW行动、重保工作都有切身的体验。作为蓝队或防护方,我们最害怕出什么问题?自己的系统有漏洞,而且被红队或攻击方攻击渗透,进入到我们的系统内。
我们先大概描述一下我们自己网络和系统的拓扑结构,如下图所示。
一般而言,DMZ 区通常放置一些不含机密信息的公用服务器,比如 WEB 服务器、FTP 服务器等。外网的访问者只可以访问 DMZ 中的服务,但不可能接触到存放在内网中的信息系统。第二、三层网络部署我们的对外提供服务的“外网系统”和内部办公的“内网系统”。这只是从共性的角度大概描述网络的拓扑结构。每层网络中还有按照网络安全等级保护要求进行分级、分域、网络隔离等等很多具体的要求,在这里我就不展开了。
回到我们今天的渗透学习的轨道上来。对于前面描述的三层网络,我们要想从渗透DMZ区网络到·最终渗透到第三层“内网“,中间的过程中需要闯几关后才能触及到”内网系统“。
那么问题来了:我们不像打靶一样,所有靶机摆在面前,一个接一个“打“过去。三层网络是串联的,我们必须要一个接着一个的”打“。
呵呵,那么问题又来了:我们不可能每拿下一个“肉鸡“就把一大堆渗透工具部署其中,把”肉鸡“当成自己的攻击电脑使用吧?一方面被拿下的”肉鸡“本身可能就缺少必要的渗透工具运行环境,另一方面,我们把“笨重“的渗透工具通过网络”拷贝“到”肉鸡“上,效率很低,而且现实中这样做也是不可能的!渗透过程中尽量在”肉鸡“上少留痕迹。
二、 漏洞搜索****
漏洞搜索工具有很多。各位老师在之前的课程中也介绍了一些。在这里我就不多介绍,直接用nmap对指定的服务器进行扫描。
我们已经找到了此次CTF目标计算机IP。下面,我们开始漏洞扫测和渗透利用。我们可以使用nmap扫描目标靶机,寻找目标靶机上开放端口和服务。
三、 漏洞利用****
通过前面的扫描,我们发现该主机开放了22和1337端口,并且知道他们分别用作ssh和http。我们从这两个端口入手,寻找可以攻击渗透的位置。Ssh需要账户和密码或者密钥才能登录,这条路先放弃,我们选择从1337端口的http服务入手,先看看这个web服务是什么。
****
打开网页后,就一张图,检查源代码,没有找到有用信息。再查看下robots.txt文件,发现一些线索。强调一下:在渗透任何系统时,都要查看下robots.txt文件(先看有没有,再看其内容)。
****
找到base64值HprM09ETTBOVEl4TUM5cGJtUmxlQzV3YUhBPSBDbG9zZXIh,找个工具或者到网上去解密。这里推荐尽量使用自己机器上的现有工具去解密。这里我使用Burpsuite的decoder模块进行解密。第一次解密后,发现结果还是一串字符串Lzk3ODM0NTIxMC9pbmRleC5waHA= Closer!,可能仍是base64值,再二次解码Lzk3ODM0NTIxMC9pbmRleC5waHA=看看结果。
****
****
我们还可以在kali中直接解密。下图显示在Kali中使用命令行进行解密的过程。
****
第二次输出结果:/978345210/index.php,一看就知道是目录,访问该网页。在靶场或实际系统中,为了增加系统安全性,往往不是简单的加密。
****
********看到上图,我们第一反应是什么?数据库,SQL啊!不知道账户和密码,SQL注入是不是可以试一试? 我们可以使用SQLMAP进行基于登录表单的注入查看,检索数据库名称和登录凭据。
1.使用SQLMAP进行基于登录表单的注入查看,检索数据库名称和登录凭据
sqlmap -o -u “http://192.168.1.108:1337/978345210/index.php” --forms --dbs
2.继续获取webapp数据表信息
sqlmap -o -u "http://192.168. 1.108:1337/978345210/index.php" --forms -D Webapp –tables
3.继续查看数据表信息
这里可以看到Users数据表,我们继续查看数据表信息,弄清数据表结构。
sqlmap -o -u "http://192.168.1.108:1337/978345210/index.php" --forms -D Webapp -T Users --columns
4.转储选出最终结果
在上一步我们已经看到了数据表结构,我们再进行转储选出最终结果。
sqlmap -o -u "http://192.168.1.108:1337/978345210/index.php" --forms -D Webapp -T Users -C id,username,password --dump
到这里,我们找到了用户名和密码,逐一验证即可。不过,我们有时候遇到用户名和密码不匹配的情况,手工使用排列组合的办法尝试很耗时。在这种情况下,我们可以借助工具进行密码破解。将这些用户名和密码保存在两个不同的文本中,使用hydra来破解SSH正确的账号密码,如下图所示:login: smeagol password: MyPreciousR00t。
hydra -L userid.txt -P passwd.txt -vV -o ssh.log -e ns 192.168.1.108 ssh
我们可以使用爆破得到的SSH账号登录到靶机系统上,到目前为止,我们仅仅只是获得一个普通用户权限,下一步是如何ROOT提权。
要ROOT提权,先收集靶机信息。如下图,到系统是ubuntu 14.04 的版本。
该版本存在系统漏洞,提权方式如下图所示。