提权学习之旅—基础篇
2020-07-30 11:36:00 Author: xz.aliyun.com(查看原文) 阅读量:402 收藏

前言:

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

基础知识

0x00:什么是提权

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

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

WindowsUser >> System
LinuxUser >> Root

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

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


以下这几种会产生提权

Webshell权限
数据库权限(如拿到数据库的user权限
普通用户权限

因为服务器有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 /add


netstat -ano //查看端口情况
tasklist //查看所有进程占用的端口
taskkil /im 映像名称.exe /f //强制结束指定进程
taskkil -PID pid号 //结束某个pid号的进程

0x05:Linux基础命令

查看发行版
cat /etc/issue
cat /etc/*-release

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

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

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

0x04:Windows明文密码抓取

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

  1. 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


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

横向渗透与纵向渗透

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

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

纵向渗透简单理解就是

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


文章来源: http://xz.aliyun.com/t/8054
如有侵权请联系:admin#unsafe.sh