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.mzph.cn/pingmian/78312.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数论分块】数论分块算法模板及真题

1.数论分块的含义 数论分块算法,就是枚举出使得取整函数发生变化的地方。 例如,对表达式 ⌊ n i ⌋ \lfloor \frac{n}{i} \rfloor ⌊in​⌋使用数论分块算法,就可以在 O ( n ) O(\sqrt n) O(n ​)的时间复杂度下枚举所有满足 ⌊ n i − 1 ⌋…

SpringBoot 常用注解通俗解释

SpringBoot 常用注解通俗解释 一、启动类相关 1. SpringBootApplication • 作用:这是SpringBoot项目的"总开关",放在主类上 • 通俗理解:相当于对电脑说:"开机!我要用SpringBoot了!…

栈应用:括号匹配

1&#xff1a;普通字符串括号匹配 #include <iostream> #include <stack> #include <string> using namespace std; bool mat(char,char); int if_match(string); int main(){string a;cin>>a;cout<<if_match(a)<<endl;return 0; } bool m…

某东h5st_5.1(补环境)

JS逆向实战——某东h5st_5.1&#xff08;补环境&#xff09; 声明网站流程分析结果展示总结 声明 本文章中所有内容仅供学习交流&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无…

新增Webhook通知功能,文档目录树展示性能优化,zyplayer-doc 2.5.1 发布啦!

zyplayer-doc是一款适合企业和个人使用的WIKI知识库管理工具&#xff0c;支持在线编辑富文本、Markdown、表格、Office文档、API接口、思维导图、Drawio以及任意的文本文件&#xff0c;支持基于知识库的AI问答&#xff0c;专为私有化部署而设计&#xff0c;最大程度上保证企业或…

macOS安全隐私最佳实践分析

1. 引言 随着数字世界的不断扩展&#xff0c;个人和组织面临的安全与隐私威胁也日益增加。作为专业的安全合规与隐私保护研究团队&#xff0c;Kaamel 对 macOS 系统的安全隐私现状进行了全面分析&#xff0c;并提出了一系列最佳实践建议&#xff0c;旨在帮助用户更好地保护自己…

架构设计之异地多活与单元化(Set化)

公司的业务到达一定规模后,往往会考虑做多数据中心。一方面是面临业务增长带来的挑战,单个数据中心变得难以支撑;另一方面出于对业务容灾的考量,也可能在多个城市建立数据中心达到容灾目的。单元化(Set化)是作为异地多活的一个解决方案。 一、什么是异地多活 异地多活是…

Kettle学习

一、Kettle 简介 Kettle(现称为 Pentaho Data Integration)是一款开源ETL工具,支持从多种数据源抽取、转换和加载数据,广泛应用于数据仓库构建、数据迁移和清洗。其核心优势包括: 可视化操作:通过拖拽组件设计数据处理流程(转换和作业)。多数据源支持:数据库(MySQL/…

苹果计划2026年底前实现美版iPhone“印度造”,以减轻关税及地缘政治风险

基于 6 个来源 据多家媒体报道&#xff0c;苹果公司计划在2026年底前&#xff0c;实现在印度组装销往美国的大部分或全部iPhone手机&#xff0c;以减轻关税和地缘政治紧张局势带来的风险。这一目标意味着苹果需将印度的iPhone产量增加一倍以上&#xff0c;凸显其供应链多元化战…

【C++】googletest_TEST/TEST_F

在 Google Test 框架中&#xff0c;TEST 和 TEST_F 是定义测试用例的两个核心宏&#xff0c;它们的区别主要体现在 测试上下文的管理方式 上。以下是二者的详细对比&#xff1a; 1. TEST 宏 定义方式 TEST(TestSuiteName, TestName) {// 测试逻辑 }特点 独立上下文&#xff…

14-DevOps-快速部署Kubernetes

在学习阶段&#xff0c;为了能快速部署Kubernetes&#xff0c;这里用一个快速安装工具&#xff1a;Kubeode&#xff0c;来完成Kubernetes的部署。 接下来部署一个单机&#xff0c;一主一从的Kubernetes。一主一从都部署在同一台服务器上。 在虚拟机新开一个服务器&#xff0c…

Java 异常处理全解析:从基础到自定义异常的实战指南

Java 异常处理全解析&#xff1a;从基础到自定义异常的实战指南 一、Java 异常体系&#xff1a;Error 与 Exception 的本质区别 1. 异常体系核心架构 Java把异常当作对象来处理&#xff0c;并定义一个基类java.lang.Throwable作为所有异常的超类。 在Java API中已经定义了许…

redis 数据类型新手练习系列——string类型

redis 数据类型 Redis 主要支持以下几种数据类型&#xff1a; &#xff08;1&#xff09;string&#xff08;字符串&#xff09;: 基本的数据存储单元&#xff0c;可以存储字符串、整数或者浮点数。 &#xff08;2&#xff09;hash&#xff08;哈希&#xff09;:一个键值对集…

Android12源码编译及刷机

由于google的AOSP源码拉取经常失败&#xff0c;编译还经常出现各种问题。这里根据香橙派Orange Pi 5 Plus&#xff08;Android12电视镜像&#xff09;源码进行编译演示。 RK芯片的开发板可玩性很高&#xff0c;这里以电视版本android系统为例子&#xff0c;学习的同时还可以当…

从零实现 registry.k8s.io/pause:3.8 镜像的导出与导入

以下是为 registry.k8s.io/pause:3.8 镜像的导出与导入操作定制的完整教程&#xff0c;适用于 Kubernetes 集群中使用 containerd 作为容器运行时的场景。本教程包含详细步骤、常见问题解析及注意事项。 从零实现 registry.k8s.io/pause:3.8 镜像的导出与导入 背景说明 Kuber…

Redis和MQ的区别

redis是一个高性能的key-value数据库&#xff0c;支持消息推送功能&#xff0c;可以当做一个轻量级的队列服务器使用。 redis只是提供一个高性能的、原子操作内存键值队&#xff0c;具有高速访问能力&#xff0c;虽然可以做消息队列的存储&#xff0c;但不具备消息队列的任何功…

Centos7系统防火墙使用教程

CentOS 7是一种常见的Linux操作系统&#xff0c;防火墙作为网络安全的第一道防线&#xff0c;对于服务器的安全至关重要。本文将介绍CentOS 7系统中防火墙的使用教程&#xff0c;包括如何开启、关闭、配置以及防火墙规则的添加和删除。 一、查看防火墙状态 在开始操作之前&am…

Uniapp:navigator(页面跳转)

目录 一、基本概述二、属性说明三、具体使用一、基本概述 页面跳转。该组件类似HTML中的<a>组件,但只能跳转本地页面。目标页面必须在pages.json中注册。 二、属性说明 属性名类型默认值说明平台差异说明urlString应用内的跳转链接,值为相对路径或绝对路径,如:“……

大疆机场及无人机上云(航线规划、指令飞行...)

系统操作预览&#xff1a; 包含一键起飞、指令飞行、云台控制、变焦、航线规划、空域规划、成果数据展示、实时飞行模拟、任务派发等 大疆无人机飞控平台&#xff08;航线规划、机场3、私有化部署&#xff09;_哔哩哔哩_bilibili 2025-04-02 更新 start、 已支持大疆机场3。…