当前位置: 首页 > 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进行入侵提权

http://www.xdnf.cn/news/161101.html

相关文章:

  • 100个节点的部署,整合Docker、Kubernetes和Jenkins的详细设计
  • setup语法糖
  • JVM知识点(一)---内存管理
  • EXPLAIN使用教程EXPLAIN命令分析MySQL查询性能
  • LIDC-IDRI数据集切割代码教程【pylidc库】
  • 【Linux】web服务器的部署和优化
  • 大规模数据同步后数据总条数对不上的系统性解决方案:从字段映射到全链路一致性保障
  • dav_pg12_表膨胀系列一 优化
  • Android学习总结之自定义View绘制源码理解
  • 正确应对监管部门的数据安全审查
  • AI算法优化建筑形态与能耗管理 实现方案和技术架构
  • RT-Thread学习笔记(四)
  • 财务管理域——经营决策支持系统
  • Day102 | 灵神 | 二叉树 合并二叉树
  • 开发首个Spring Boot应用
  • 访问Redis时遇到 unknown command ‘FT.INFO‘, with args beginning with 错误的解决方案
  • MATLAB中调用CPLEX求解工具箱
  • Python + Playwright:如何在Docker 容器运行测试?
  • 0x27 A* + 0x28 IDA*
  • Adobe Photoshop(PS)2022 版安装与下载教程
  • 前端开发本地配置 HTTPS 全面详细教程
  • HackMyVM - Chromee靶机
  • 人工智能:入门阶段学习路径
  • per-task affinity 是什么?
  • 30天通过软考高项-第四天
  • Python循环语句-for循环(基础语法,range语句,临时变量作用域,嵌套应用)
  • 【计算机视觉】CV实战项目- DFace: 基于深度学习的高性能人脸识别
  • leetcode201.数字范围按位与
  • S参数的含义
  • 如何搭建和管理 FTP 服务器