首发于先知社区

https://xz.aliyun.com/t/8054

前言:

无论是CTF赛题还是渗透测试,有很多时候拿到WebShell的权限并不高,没有办法继续深入,所以需要进行提权操作,方便下一步的进行。

基础知识

0x00:什么是提权

提高自己在服务器中的权限,主要针对网站入侵过程中,当入侵某一网站时,通过各种漏洞提升WEBSHELL权限以夺得该服务器权限。

简单的一句话就是权限提升。例如:

Windows:User >> System
Linux:User >> Root

0x01:什么情况下使用提权

一般会产生提权的原因是因为当前权限无法做到某些我们需要做到的事情


以下这几种会产生提权

1.Webshell权限
2.数据库权限(如拿到数据库的user权限)
3.普通用户权限

因为服务器有Linux的,也有Windows的,所以要先进行提权首先要先了解各个系统权限高低的划分。

0x02:Windows下的权限划分

Windows是一个支持多用户、多任务的操作系统,这是权限设置的基础,一切权限设置都是基于用户和进程而言的,不同的用户在访问这台计算机时,将会有不同的权限。

WindowsNT用户组:

  • Administrators:管理员组,默认情况下,Administrators中的用户对计算机/域有不受限制的完全访问权。
  • Power Users:高级用户组,Power Users 可以执行除了为 Administrators 组保留的任务外的其他任何操作系统任务。
  • Users:普通用户组,这个组的用户无法进行有意或无意的改动。
  • Guests:来宾组,来宾跟普通Users的成员有同等访问权,但来宾帐户的限制更多
  • Everyone:所有的用户,这个计算机上的所有用户都属于这个组。

0x03:Linux下的权限划分

在Linux系统中,用户是分角色的,角色不同,对应权限不同。用户角色通过UID和GID识别。特别是UID,一个UID是唯一标识一个系统用户的账号。

  • 超级用户(0):默认是root用户,其UID和GID都是0。root用户在每台Unix和Linux系统中都是唯一且真是存在的,通过它可以登陆系统,操作系统中任何文件执行系统中任何命令,拥有最高管理权限。
  • 普通用户(1~499):系统中大多数用户都是普通用户,实际中也一般使用普通用户操作,需要权限是用sudo命令提升权限。
  • 虚拟用户(500~65535):与真实的普通用户区分开来,这类用户最大特点是安装系统后默认就会存在,且默认情况大多数不能登陆系统,其在/etc/passwd文件中,最后字段为/sbin/nologin。是系统正常运行不可缺少的,主要是方便系统管理,满足相应的系统进程对文件属主的要求

0x04:Windows基础命令

query user //查看用户登陆情况
whoami //当前用户权限
systeminfo //查看当前系统版本与补丁信息(利用系统较老,没有打对应补丁来进行提权)
ver //查看当前服务器操作系统版本
Net start //查看当前计算机开启服务名称#添加管理员用户
net user username(用户名) password(密码) /add
(先添加一个普通用户)
net localgroup adminstrators username /add
(把这个普通用户添加到管理员用户的组中)
如果远程桌面连接不上可以添加远程桌面组
net localgroup "Remote Desktop Users" username /addnetstat -ano //查看端口情况
tasklist //查看所有进程占用的端口
taskkil /im 映像名称.exe /f //强制结束指定进程
taskkil -PID pid号 //结束某个pid号的进程

0x05:Linux基础命令

查看发行版
cat /etc/issue
cat /etc/*-release
查看内核版本
uname -a

0x06:常用提权方法


如果拿到Webshell权限,可以从以下几个方面进行提权

如果拿到的是数据库权限,可以使用下面方法进行提权

拿到的如果是普通用户权限,可以从这几个方面入手

实践—基于密码破解的提权

0x01:环境准备

实验环境:
Windows Server 2003

0x02:Windows密码原理

Windows使用使用两种方法对用户密码进行哈希处理

  1. LAN Manager(LM)哈希
  2. NTLAN Manager(NTLM)哈希

Windows的系统密码hash默认情况下由两部分组成

  1. 第一部分:LM-hash
  2. 第二部分:NTLM-hash

格式为:

用户名:RID:LM-HASH值:NT-HASH值

如果已知HASH值,可以通过在线查询得到密码明文

http://cracker.offensive-security.com/index.php

https://www.objectif-securite.ch/ophcrack

如果得到对应的hash值,便可以利用上面的网站进行破解,但要怎样抓取想要的hash值哪?可以通过以下的方法:

  1. 导出导入SAM、system文件
  2. gethashs导出
  3. Pwdump导出
  4. Wce导出

0x03:抓取hash及暴力破解

C:\windows\system32目录下,如果直接去移动SAM文件会出现

必须使用工具进行导出操作(需管理员运行才行)


除此之外,还可以使用其他方法获取到该文件

Quarks PwDump

Quarks PwDump -dh1        // 导出本地哈希值
Quarks PwDump -dhdc      // 导出内存中域账户哈希值
Quarks PwDump -dhd       // 导出域哈希值(指定NTDS文件)

WCE

wce -a //获取所有账户哈希值

获取到了hash,便可以利用以下工具进行暴力破解

Saminside字典破解
Ophcrack加载彩虹表破解

0x04:Windows明文密码抓取

  1. Wce明文密码获取
  2. Mimikatz明文密码获取
privilege::debug
sekurlsa::logonpasswords


3. Getpass明文密码获取

0x04:Linux密码原理

在Linux系统中,涉及系统登陆密码的重要文件有两个:

/etc/passwd
#用户信息
/etc/shadow
#密码信息

Linux密码文件存放位置

Linux:/etc/shadow
AIX3:/etc/security/passwd
HP-UX:/.secure/etc/passwd

Linux操作系统采用5中常用的加密算法,主要通过账号后面的$x进行判断

$1:Md5加密算法
$2:Blowfish加密算法
$5:sha-256加密算法
$6:sha-512加密算法
其他均为标准DES加密算法

0x05:Linux密码破解

使用工具john进行破解,具体步骤如下:

首先使用unshadow命令结合/etc/passwd的数据和/etc/shadow的数据,创建1个含有用户名和密码详细信息的文件。

unshadow /etc/passwd /etc/shadow > shadow

生成一个名为shadow的密码文件,接下来使用john自带的密码字典进步暴力破解
(密码字典位于/usr/share/john/password.lst

john --wordlist=/usr/share/john/password.lst --rules shadow


破解成功,如果需要想要查看结果,也可以使用如下命令

john --show shadow

横向渗透与纵向渗透

密码破解的提权主要作用是方便在内网做渗透,而内网渗透又涉及到两个名词,一个是横向渗透,一个是纵向渗透

横向渗透就是已经拿到了目标内网中的部分主机,即已经进入对方的内网环境。利用最先得到的主机,以及之后新得到的主机,会成为突破口、跳板,进一步攻击内网中其他的主机。密码的破解主要就运用在横向渗透中。

纵向渗透简单理解就是

1.匿名访问
2.进入后台
3.拿到webshell
4.最终拿到系统权限
(以一台主机为例)

总结

基础知识掌握后,下次就来学习下Windows操作系统提权和Linux操作系统提权

参考博客

https://www.cnblogs.com/y0umer/archive/2011/03/23/3839041.html
https://blog.csdn.net/FunkyPants/article/details/78648109

提权学习之旅——基础篇相关推荐

  1. 提权学习之旅——Linux操作系统提权

    首发于先知社区 https://xz.aliyun.com/t/8139 前言: 上次学习了Windows操作系统的提权以及相关工具的利用,这次就来学习一下Linux操作系统的提权 Linux提权基础 ...

  2. 提权学习之旅——利用Metasploit提权

    Metasploit基础 0x00:简介 Metasploit是一个漏洞利用框架,简称msf.是一个免费的.可下载的框架,通过它可以很容易地获取.开发并对计算机软件漏洞实施攻击,,而且本身附带数百个已 ...

  3. Python学习之旅 —— 基础篇(二)数据类型、运算、while循环

    本篇要点: 常量定义 数据类型(重点是字符串的各种操作.列表和字典) 各种运算 while 循环 一.常量定义 虽然叫做常量,但是python中的常量是可修改的.(c语言中的常量不可修改.)常量的定义 ...

  4. WCF学习之旅----基础篇之EnterpriseServices

    2019独角兽企业重金招聘Python工程师标准>>> server using System; using System.Collections.Generic; using Sy ...

  5. ESP8266 Non-OS SDK 开发之旅 基础篇① 初识 Non-OS SDK,史上超级详细手把手教小白20分钟快速搭建SDK软件开发环境,完成第一个例子Hello World!

    文章目录 1.前言 2. SDK概述 2.1 SDK使用流程 2.2 ESP8266 HDK -- 硬件开发工具 2.3 ESP8266 SDK -- 软件开发工具包 2.3.1 Non-OS SDK ...

  6. Python学习日记-day1基础篇 字符 输出 注释

    Python学习日记-day1基础篇 字符 输出 注释 by北栀一刺 # -*- coding: utf-8 -*- """ Spyder EditorThis is a ...

  7. Java学习---Day16_IO流基础篇

    Java学习-Day16_IO流基础篇 文件操作 操作磁盘上的某一个文件或某一个文件夹,可以对他们进行创建或删除.移动.属性获取.属性设置等操作.但是,不包含读取文件的内容.拷贝文件 ps:java中 ...

  8. PHP学习文档——基础篇

    PHP学习文档--基础篇 PHP学习文档--基础篇 标记 短标记 脚本标记 标准标记(常用) PHP注释 行注释 块注释 PHP语句分隔符 变量 变量命名规则 预定义变量 可变变量 变量传值 常量 定 ...

  9. jqGrid 学习笔记整理——基础篇

    jqGrid 学习笔记整理--基础篇 jqGrid 实例中文版网址:http://blog.mn886.net/jqGrid/ 国外官网:http://www.trirand.com/blog/ 本人 ...

最新文章

  1. 文巾解题 981. 基于时间的键值存储
  2. Java基础03 构造器与方法重载
  3. tomcat jsvc java_opts_Tomcat 学习笔记(2) - 使用 jsvc 启动tomcat
  4. 新一代Spring Web框架WebFlux!
  5. 【HTML5】网页元素的拖放操作
  6. 【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA Matrix Factorization
  7. 一个树杈y图片_鬼脸纹:黄花梨树上一个树杈,反映到主干上时,会形成一个疖痕...
  8. 小作坊的大道理——读《走出软件作坊》有感
  9. html视频直播源码,用HTML5开发简单的视频播放器,附源码
  10. 关于软件项目管理的一些问题
  11. python 多线程爬取网络小说
  12. 快速沃尔什变换学习笔记
  13. winform怎么实现七天签到_怎么管理多个微信群?怎么提高微信群管理效率?
  14. hyperf 热重启
  15. 【GZH逸佳君】生财有术:100多位互联网赚钱高手分享的2021年5万字赚钱建议
  16. 运维工程师到底都在做些什么?
  17. 【IOS】IOS工程自动打包并发布脚本实现
  18. STM32 CubeMx教程 -- 基础知识及配置使用教程
  19. 阿里云域名备案流程分析和采坑总结
  20. 餐饮企业如何在疫情考题中渡过难关?

热门文章

  1. 五十八、如何对一个数进行分解质因数
  2. 一、为了OFFER系列 | 阿里云天池赛在线编程:移动的圆
  3. 七十九、Springboot 整合 Elasticsearch
  4. TensorBoard(一)
  5. 曝鸿蒙os手表,华为Watch GT 2曝光:第一款使用鸿蒙OS的智能手表
  6. java消费者模式_基于Java 生产者消费者模式(详细分析)
  7. 阿里灵杰:AI工程化助力产业数字升级
  8. 重磅推荐 | 11个名企NLP项目,硅谷科学家帮你转型
  9. HDU1257 最少拦截系统 贪心或动态规划
  10. 一加会搭载鸿蒙,华为P50用液态镜头,小米11于29日发布,一加9一季度发布