官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
DC-5靶机通关笔记
这是DC-5的描述,从中得到一些关键信息。
开始
nmap扫描
确定IP地址后端口扫描
发现80端口
使用kali自带工具dirbuster遍历目录
发现只有以下这个界面存在交互
访问footer.php页面时发现了描述中会随着页面刷新改变的东西
我们猜测thankyou.php中include()包含了footer.php
这里就可能存在文件包含漏洞
什么是文件包含漏洞?
严格来说,文件包含漏洞是“代码注入”的一种。在“注入攻击”一章中,曾经提到过“代码注入”这种攻击,其原理就是注入一段用户能控制的脚本或代码,并让服务器端执行。“代码注入”的典型代表就是文件包含(File Inclusion)。文件包含可能会出现在JSP、PHP、ASP等语言中,常见的导致文件包含的函数如下。
PHP:include(), include_once(), require(), re-quire_once(), fopen(), readfile(), ...
JSP/Servlet:ava.io.File(), java.io.Fil-eReader(), ...
ASP:include file, include virtual, ...
在互联网的安全历史中,PHP的文件包含漏洞已经臭名昭著了,因为黑客们在各种各样的PHP应用中挖出了数不胜数的文件包含漏洞,且后果都非常严重。
文件包含是PHP的一种常见用法,主要由4个函数完成:
include()
require()
include_once()
require_once()
当使用这4个函数包含一个新的文件时,该文件将作为PHP代码执行,PHP内核并不会在意该被包含的文件是什么类型。所以如果被包含的是txt文件、图片文件、远程URL,也都将作为PHP代码执行。这一特性,在实施攻击时将非常有用。比如以下代码:
<?php
include($_GET[test]);
?>
要想成功利用文件包含漏洞,需要满足下面两个条件:
(1)include()等函数通过动态变量的方式引入需要包含的文件;
(2)用户能够控制该动态变量。
我们用burpsuite遍历一下代码中动态变量名
选择攻击字典
得知是file
验证过确实存在LFI
下面获取shell,前面得知服务nginx,
access.log
访问日志主要记录客户端的请求。客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。
利用日志写入一句话小马
什么是一句话小马?
一句话木马就是只需要一行代码的木马,短短一行代码,就能做到和大马相当的功能。为了绕过waf的检测,一句话木马出现了无数中变形,但本质是不变的:木马的函数执行了我们发送的命令。
打开蚁剑
添加数据
URL地址中内容是include本地包含Nginx日志,其中有我们写入的一句话小马,这样就触发了我们的一句话,就能成功连接了。
使用蚁剑进行连接
写入反弹shell
右击弹出菜单
利用NC工具反向连接我们kali
kali端监听端口
得到交互式shell
python -c 'import pty;pty.spawn("/bin/bash")'
提权
find / -perm /4000 2>/dev/null
/ 根目录
-perm /4000 查找SUID权限
2> 错误输出到空文件
查找具有SUID权限的命令
将文件复制一份
查看文件
按照脚本将红框内内容保存为/tmp/libhax.c的文件
然后gcc编译为libhax.so文件
文件下半部分保存为/tmp/rootshell.c
gcc编译为rootshell
然后把编译过(两个)的文件上传到受害者/tmp/目录下
执行脚本中以下的命令
提权成功
完结撒花!