当前位置: 首页 > news >正文

Web渗透之系统入侵与提权维权

渗透测试步骤

信息收集
搜集一些IP地址以及对应的端口开放情况,看看是否有80、3306、22等等端口开放,以及操作系统和版本号,同时也要扫描可能存在的漏洞
漏洞利用
建立据点
漏洞利用成功后,通常会在目标机上获得一个webshell,虽然webshell可以执行命令和管理文件,但毕竟不是真正的shell,而且也不稳定,因此就需要反弹shell到一个稳定的环境
反弹shell会遇到的问题:
反弹命令不存在
禁止出口流量
限定向外访问端口
流量审查
权限提升和维持

反弹shell:

攻击机在自己的主机上开启一个监听端口,然后诱使受害者去执行一个反向连接的命令,连接回攻击者的机器

常用的反弹shell命令
nc、telnet、awk、exec

基于编程语言反弹shell
PHP、Java、Ruby、Perl、Python

加密反弹shell
在攻击机上生成证书
然后在攻击机上进行监听
最后在目标机上执行反弹

正向连接脚本
首先在目标主机创建一个python文件,里面代码的功能就是正向连接攻击机
其次在目标主机上执行这个python文件
最后在攻击机上进行监听,实现正向连接

对于lampiao靶机的入侵实战:

首先进行信息搜集,获取其IP地址以及对应的端口开放情况,操作系统以及版本号
当然也可以使用Nessus进行扫描
扫描出来的端口为22,80,1898
对于22端口来说的话,我们可以使用工具进行爆破
当然也可以使用御剑对后台文件进行扫描
接着我们基于搜集出来的信息去msf看一下是否有存在的已知漏洞可以利用

MsfVenom木马制作

第一种方法就是直接制作一个木马上传到目标主机上
第二种方法就是进程注入,使用msfvenom将木马注入到一个进程中,然后上传到目标机器上
第三种方法就是程序捆绑,就是将制作的木马与一个应用程序进行捆绑,当应用程序上线的时候,木马也会上线,比如使用putty.exe进行实验

如何制作一个免杀的木马
可以适用编码或代码混淆来生成木马

同时msfvenom也只支持生成很多格式的可执行文件
比如asp、aspx,dll等

使用shellcode生成木马

1、利用python执行shellcode
我们可以使用msfvenom来生成shellcode,然后将shellcode和加载器代码放到一个python文件当中去,然后去执行这个python文件,然后就能够上线了
当然也可以使用pyinstaller工具将其打包为exe文件,上传至杀毒软件看其能否免杀
2、python加载器实现免杀
也就是使用Shellcode Loader这个工具
将我们生成的shellcode使用这个工具的加密程序进行加密,输出一个加密过后的Shellcode,然后将这个加密过后的shellcode复制到Shellcode.py的密文那里,然后运行这个文件,使其上线成功,然后使用pyinstaller生成exe,看看是否免杀

免杀基础与加解密

免杀的概念:能使病毒木马被杀毒软件查杀的技术
杀毒的原理:
静态查杀
动态查杀
云查杀

免杀的方法:
1、对Shellcode进行加密处理
2、对加载器代码进行加密或编码处理
3、分离免杀
4、使用进程注入或使用傀儡进程
5、通过加壳的方式对木马进行混淆

Linux系统提权

1、工具的使用
使用linux-exploit- suggester或者Nessus进行主机漏洞扫描,结合扫描出来的漏洞进行提权

2、SUDO提权(内核漏洞导致的提权)
使用命令sudoedit -s /看看系统回显内容,如果是not a regular file,则说明存在SUDO这个漏洞,如果是其他的话就没有了
我们就当存在这个漏洞,使用sudo -l看看该登录有没有root权限,如果有的话直接提权成功

3、SUID命令提权
如果该用户有s的权限,那么它允许用户执行的文件以文件拥有者的身份去运行,也就是越权执行命令
我们可以执行find命令去看哪个文件具有s的权限,但并不是所有文件具有s权限就能够实现提权了,比如说是/bin/bash、/bin/cat、/bin/find、/bin/env、/bin/vi等等

4、Cron定时任务
使用crontab -l或者cat /var/spood/cron/root
如果找到可以有权限修改的计划任务脚本,就可以去修改脚本实现提权,本质上就是文件配置不当
基本原理:借助root用户的定时任务,去修改其运行的脚本,用关键命令授予SUID权限

5、环境变量提权
开发一段C程序进行执行,里面包含命令执行,包括cat、vi等等,然后进行编译成新的文件,然后为编译的程序授予S权限
假如说C程序里的命令是cat,我们就进入到系统的临时目录中,将/bin/bash复制到临时目录的cat文件里,然后为其添加新的环境变量,然后去执行这个文件就能实现提权,前提是用户得有权限写文件和添加新的环境变量

Linux权限维持

1、创建账户

1.1 修改/etc/passwd,创建拥有root权限的用户
1.2 创建拥有sudo权限的账号
先创建一个普通用户,而后在/etc/passwd文件中为该用户添加sudo权限
1.3 普通用户➕SUID shell
先将/bin/bash复制到/bin/.shell目录里,是为了能够让.shell文件隐藏起来,不容易被发现,然后使用普通用户去执行这个文件即可实现提权

2、文件属性修改

2.1 修改文件创建时间
2.2 创建隐藏文件
2.3 文件上锁,防止用户直接删除文件

3、SSH后门

3.1 软连接后门
建立一个软连接,然后通过5555端口扫描访问ssh服务
3.2 SSH隐身登录
隐身登录系统,不会被last who w等指令检测到
3.3 上传公钥,ssh免密登录
客户端生成对应的公钥和私钥,然后在服务端/root的目录下创建一个.ssh目录,上传公钥到此目录下,并修改文件名为authorized_keys,上传方式有很多种,比如使用scp上传,接着去检查服务器的ssh配置,要将允许使用公钥登录的设置打开
3.4 ssh warpper后门

4、Crontab定时任务

创建一个Crontab定时任务,但很容易被发现,我们可以利用cat隐藏将一部分内容隐藏起来,再添加no crontab for whoami,让用户以为没有定时任务
原理就是cat打开文件时会遇到一些特殊的符号,比如\r,\n,\f,输出内容换页换行导致隐藏前面的部分内容

5、自启动脚本

只要执行了这些脚本,在条件触发的时候会进行任意提权命令

6、其他方式

6.1 cat隐藏
可以隐藏php一句话木马
6.2 隐藏进程

基于Redis实战

Redis : 缓存服务器,数据都保存到内存中,所有的I/O操作全部都在内存中进行,如果断电或者停止服务,数据就会消失,而内存型数据库恰好可以弥补类似于MySQL等关系数据库在硬盘当中进行I/O操作的速度上的局限

如何利用Redis来实现提权甚至入侵
第一种方案就是使用Redis写定时任务
第二种方案就是直接写我们的后门文件、shell、一句话木马

第一种方案:
为什么Redis可以进行写文件的操作?
因为Redis有一个持久化的操作,默认情况下Redis写的数据是写到了后缀名为aof或者rdb的文件下,我们可以去配置这个路径,使其写到一个我们比较熟悉的目录下,写入进去之后就去访问

第二种方案:写定时任务
比如说就写一个创建一个具有root权限的普通用户的定时任务,然后使用该用户去远程登录

SSRF+Redis内网渗透

基于SSRF来进行内网渗透
需要用到伪协议,dict和gopher
dict适用于Redis没有密码进行登录的,因为它不支持维持session
gopher适用于Redis有密码的,因为gopher可以构造各种TCP层面的请求包
然后我们就能通过gopher来写入一句话木马

第四个方法就是使用Python去进行连接并发送数据
其核心在于data值的构建,data里面要输入一些参数,也就是说要将数据包构造出来,构造出来之后就可以进内网进行操作了
dict只支持Redis的单条命令,而gopher可以很好的处理批命令
对于gopher来说,遇见回车换行就要用%0d%0a进行一个替换,同时要将data数据进行url编码,让%替换%25

基于Redis提权实战

对于修复建议,我们不仅要对Redis设置密码,而且还要设置成复杂的密码,然后将配置文件的r的那个权限给拿掉,不能够o+r,只能让root用户去读,其他任何账号都不能读取这个文件,还有一个,最好不要用root去启动Redis,最好是新建一个账号去启动redis服务,这样就不会像root一样去处理了,这样的话其他用户就没有权限往root根目录那里去写文件了

Windows系统提权

1、UDF提权
即用户自定义函数
本提权适用于MySQL 5.5.59以下版本
先通过爆破获取MySQL的账号,如果能够爆破出来密码的话,就直接登录到数据库当中,然后使用navicat进行连接
连接上需要进行的操作是先确认MySQL的写文件权限,看看师傅拥有任意路径的写文件
,然后再去确认MySQL的插件目录,并由此推断HTTP的主目录,接着需要确认系统中是否存在sys_exec的函数,如果不存在的话需要使用UDF进行自行定义
然后进入到MSF中进行漏洞利用,使用的模块是multi/mysql/mysql_udf_payload,run之后会将dll文件复制到plugin的目录下,同时exec函数也会创建成功
exec只会返回一个指令,0和非0,0代表成功,非0代表失败,而eval会返回结果
我们也可以运行以下脚本来创建用户自定义函数eval,如果执行成功的话,我们就可以使用eval函数了,接着我们去看看该系统正在登录的用户有啥权限,如果权限高的话,可以通过创建一个角色将其放入到本地管理员组中,这样我们就可以进行远程登录了,并且还是超级管理员的权限

2、MOF提权
MOF指的是托管对象格式,是一种文件类型,每隔一段时间就会以System权限执行一次,我们可以通过root权限下的mysql将该文件写入到路径下,以达到提权的目的,提权条件:
1、mysql允许远程连接
2、secure_priv_file的值为空
接着我们使用漏洞模块exploit/windows/mysql/mysql_mof进行入侵提权

相关文章:

  • 第十六周蓝桥杯2025网络安全赛道
  • Docker化HBase排错实录:从Master hflush启动失败到Snappy算法未支持解决
  • 求解,如何控制三相无刷电机?欢迎到访评论
  • 5G助力智慧城市的崛起——从概念到落地的技术实践
  • Pygame跨平台打包:将游戏发布到Windows、Mac和Linux
  • 【C++】stack、queue和priority_queue的模拟实现
  • 精益数据分析(28/126):解读商业模式拼图与关键指标
  • Ubuntu20.04部署Dify(Docker方式)
  • STL中emplace实现原理是什么?
  • tigase源码学习杂记-IO处理的线程模型
  • 如何导出1寸分辨率为300及以上的照片?
  • TC3xx学习笔记-UCB BMHD使用详解(一)
  • 如何给GitHub项目提PR(踩坑记录
  • 【Linux网络】构建HTTP响应与请求处理系统 - HttpResponse从理解到实现
  • 目标检测原理简介
  • Linux系统编程之内存映射
  • AI编程方法第六弹:高效编码离不开编程者经验引导
  • 设计看似完美却测不过? Intra-Pair Skew 是「讯号完整性(Signal Integrity)」里最隐形的杀手
  • venv环境基础指令以及常见问题汇总(持续更新)
  • 《AI大模型趣味实战》智能Agent和MCP协议的应用实例:搭建一个能阅读DOC文件并实时显示润色改写过程的Python Flask应用
  • “中国游”带火“中国购”,“即买即退”让外国游客购物更丝滑
  • 热点问答|第三轮间接谈判结束,美伊分歧还有多大?
  • 湖州通告13批次不合格食品,盒马1批次多宝鱼甲硝唑超标
  • 湖南小伙“朱雀玄武敕令”提交申请改名为“朱咸宁”
  • 俄罗斯称已收复库尔斯克州,普京发表讲话
  • 韩国检方重启调查金建希操纵股价案