渗透测试学习之靶机DC-2

Posted 小豆饼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了渗透测试学习之靶机DC-2相关的知识,希望对你有一定的参考价值。

1.下载靶机

本篇文章是DC靶机系列的第二个篇,针对DC-2,建议感兴趣的读者从DC-1开始练习((26条消息) 渗透测试学习之靶机DC-1_xdbzdgx的博客-CSDN博客)。

DC-2的下载地址为DC: 2 ~ VulnHub。三个地址建议使用磁力下载,比较快。下载后解压为.ova文件,该格式可直接在VMware上打开,如果显示打开失败,点击重试即可成功,如果仍无法成功可百度、谷歌解决。

在VMware加载成功之后显示如下界面:

默认状态我们是打不开该系统的,也不知道账号密码的,毕竟我们的目的就是在不知道账号密码的情况下拿到root权限,找到flag。注意,这里建议把DC-2靶机的网络链接模式改为NAT模式。本文使用的攻击机为kali(安装在VMware上,IP为:192.168.179.128)。

2.收集靶机信息

由于本文的攻击机和靶机在同一个网络下,因此在kali上输入命令: arp-scan -l,显示如下

 

可判断出靶机的ip为192.168.179.130.接着使用nmap对该ip进行扫描,输入命令:nmap -sV -p- 192.168.179.130

 

这里有个点要注意,我扫描的习惯操作是nmap IP,但是从本题可以看出,该靶机故意更改了ssh的默认端口,这样使用nmap ip就扫描不出来了,所以建议以后做nmap扫描一定要对全端口进行扫描,尽可能地仔细。

同时我们看到靶机开放了80端口,那么我们使用浏览器去登陆http://192.168.179.130:80看看有没有什么有效信息。登陆发现了浏览器将其解析成http://dc-2并且访问失败,这说明是本题解析dc-2失败,因此需要在本题host文件上添加192.168.179.130 dc-2

vim /etc/hosts

此时登陆,页面为

 

观察一下页面,发现flag,点击可得到第一个flag文件,并且发现网站左下角Proudly powered by WordPress ,说明该网站的CMS是wordpress。

这里有三个提示,一个是需要登陆(又用户名肯定需要登陆呀),一个是使用cewl,另一个是暗示我们可能获得不止一个用户,但是不是所有的用户都有用(如果访问失败不妨试试另一个,又暗示了两个用户权限可能不同)。

此外我们可以看到此时的url为http://dc-2/index.php/flag/,这个时候就考验大家的好奇心了,可以在url后面试试加admin,passwd,includes之类的,看看有没有其他页面,然后就发现了竟然还有意外惊喜。发现在url后面加任何名词都会显示如下界面

然后我们在好奇心地随便搜搜(这里好奇心是开玩笑啦,一般来说,面对网站一定要尽可能地熟悉和点击,尽可能地挖掘有效信息,虽然99.99%的试探都是徒劳无功,但是万一呢)。然后就发现了第二个flag,提示

再一次暗示WordPress。接下来我们利用这些线索进行漏洞挖掘。

3.漏洞挖掘

1.找到登陆页面

本人翻看了网站,发现没有看到登陆页面,所以这里需要我们自己思考一下,又两种方式可以找到:

第一,我们已知该网站是使用wordpress,则在网上搜搜发现默认登陆页面为wp-admin,测试一下,果然发现了登陆页面。

 

第二,使用网站目录暴力猜解工具,如gobuster 、dirb、metasploit等,我们这里使用dirb.

输入命令行:dirb http://dc-2,可以通过猜解得到wp-admin可以访问成功。

2.生成该网站的密码破解字典

输入命令行:cewl http://dc-2 -w dc-2-password.txt ,利用cewl针对该网站生成密码字典,并将密码存储在txt文件中。

3.爆破该网站登录名

WPScan是一款针对wordpress的安全扫描软件;WPScan可以扫描出wordpress的版本,主题,插件,后台用户以及爆破后台用户密码等。当然也可以使用其他扫描网站目录的工具。

输入命令行:wpscan --url http://dc-2 -e u,其中-e表示枚举,u表示要扫描的目标:用户名

发现扫描出三个用户名,admin,jerry,tom.

并将其保存为dc-2-user.txt 文件

4.爆破登录名及对应密码

仍利用wpscan工具,输入命令行:wpscan --url http://dc-2 -P dc-2-password.txt -U dc-2-user.txt

结果发现只破解出两个账号密码

Username: jerry, Password: adipiscing Username: tom, Password: parturient

5.登陆

利用账号密码登陆,翻遍网页发现了flag(哈哈,好奇心已经让我们提前拿到了)

 

4.渗透利用

根据flag2的提示,这条路可能无法再挖掘出更多信息了,并建议我们试试其他的注入点。从开头nmap我们知道,除了80还有ssh的7744端口,接下来我们尝试来连接shh。

1.登陆ssh

此时我们有两个账号,可以分别测试一下,发现jerry登陆失败,tom访问成功

输入命令行 ssh tom@192.168.179.130 -p 7744

然后我们随机查看一下

 

发现有flag3.txt,但是我们打不开,此时发现了-rbash,rbash(restricted bash),即受限制的 bash。常常仅使用 ssh 来访问网页。这就说明了我们要提权或者绕过。这里先讲绕过,本题的解决方式有两种。

第一,使用vi,less,more,git等可提权的命令测试。该靶机可使用vi flag3.txt,发现可以访问。

第二,绕过,关于绕过有几种方式,详细参考RBash - 受限的Bash绕过 - 云+社区 - 腾讯云 (tencent.com)

(1)本人使用的是输入命令行

vi 4.txt  #随便打开一个txt文件(文件名随意填)
然后再末端输入(就是按一下esc):set shell=/bin/bash
再按一下esc,接着输入 :shell
注意,上面两行的冒号也要输入。

(2)很多博主使用的如下方法

输入如下命令行

BASH_CMDS[a]=/bin/sh ; a  #调用/bin/sh命令解释器
/bin/bash   #使用bash命令解释器

无论使用哪一种方式,紧接着都要创建一个环境变量

export PATH=$PATH:/bin/

看到这里,大家不妨思考为什么要创建环境变量?大佬请绕行。其实再进行上面操作之前,查看当前的变量

输入命令行 echo $PATH

原来是因为我们的当前环境变量 /home/tom/usr/bin 下面!所以我们的 shell 被限制了,这导致我们不能执行一些命令。

而(1)方法则是通过转义环境变量的方式,(2)方法是定义一个环境变量,然后再添加我们新的环境变量,这样才能得到一个不受限的shell。

然后cat flag3.txt 查看flag信息。

该信息提示使用su ,并切换用户

我们输入命令: su jerry,然后输入密码,进入jerry的目录。

这个时候jerry对/home/tom肯定是没有权限的,因此 cd /home/jerry

此时找到了第四个flag,提示我们可以使用git

5.提权

接着我们查看查看可以使用root权限无密码的命令,输入 sudo -l

发现git命令可以使用root权限,并且提示利用git提权。可以在网络上搜索如何利用git提权

发现有两种方式

1、sudo git help config #在末行命令模式输入 
!/bin/bash 或 !'sh' #完成提权 
2、sudo git -p help 
!/bin/bash #输入!/bin/bash,即可打开一个用户为root的shell

这两种方式的前提是把shell窗口变小,使得不能在一页全部显示,才可以输入。

![(C:\\Users\\Lin\\AppData\\Roaming\\Typora\\typora-user-images\\image-20211108173501687.png)

如果不能输入,说明你的shell窗口不够小。

 

获得root权限,输入命令行,查找

find / -name "*flag*"

最后一行为final-flag.txt,

 

最后一个flag成功到手!

以上是关于渗透测试学习之靶机DC-2的主要内容,如果未能解决你的问题,请参考以下文章

渗透测试入门学习之信息收集篇

vulnhub渗透记录1(DC-1&DC-2)

Vulnhub靶机渗透测试实战:入门DC-1靶机完全渗透

网络安全必学渗透测试流程

靶机渗透测试-Lazysysadmin

渗透测试-靶机打靶思路与方法