MENU

后渗透基础-从上传WebShell到执行命令(复现)

August 7, 2019 • Read: 2467 • 记录,Web阅读设置

0x00 前言

首先,入侵服务器属于内网渗透的一种,是黑客在通过前端渗透过程中获取到WebShell以后进行的更高层次的入侵。

在明白了这个前提之后,开始今天的复现。

环境:phpstudy2018

CMS:dedecmsV57_UTF8_SP2

0x01 操作

dedecms后台默认可以上传文件,可以通过传一个PHP类型的一句话小马或者大马对Web服务器进行操作。

第一步,我们要将准备好的木马通过网站后台上传到服务器内部,然后通过访问木马,来对服务器进行操作。在后台寻找上传点,或者通过修改后台配置上传的文件类型,对于其他的cms适用同样的思路。

直接进入木马上传环节。

2.png

如图,这里在靶机传了一个大马,此时已经成功的将PHP大马上传到了服务器里,接下来,只需要点开就可以进入到大马操控界面。

PS:然后就是在这个过程中犯了一个比较低级的错误hhh,就是上传文件名中有中文,导致无法正确访问。以此为戒,以后谨记。

3.png

进入到大马操控界面之后,尝试查询当前用户的权限。

利用命令:

whoami  # 查看当前有效用户名

1565088273699.png

这里查看下当前服务器中所有用户命令如下:

net user # 查看当前服务器中所有用户

4.png

因为靶机是我自己搭建的,所以服务器里面现在只有内置的Administrator账户,以及我创建的两个用户。

这一步之后,为了达到入侵的目的,我们要做的就是在服务器中创建一个新的用户。

利用命令:

net user username password /add # 在服务器中创建新用户

5.png

6.png

这里,要注意一点,在服务器中创建新用户的前提条件。是当前的用户权限必须是users权限以上的用户才可以做到。

我们知道,在一个服务器中,用户的权限大体分为:systemadministratorsusersguests四种。而在这四种权限中,只有users权限以上的用户,才可以在服务器中创建用户。

这里phpstudy2018搭建的网站所有的权限是administrators

在这里要注意,虽然我们用户已经创建完成,但是我们现在创建的用户,却并不是管理员权限的用户。

而想要通过入侵靶机获得服务器权限,目的是在服务器中,获取一个管理员账户密码或者是修改一个管理员账户密码再或者是创建一个新的管理员账户。

那么,我们应该如何查看一个用户现在到底是什么权限呢。

利用命令:

net user username # username替换为想要查询的用户名

7.png

由上图,我们可以看到,现在我们创建的用户的权限,是users并非administrators。也就是说,我们虽然刚新建了一个用户,但是这个用户却并非管理员。

那如何将我们这个用户的权限提升到管理员权限呢?

利用命令:

net localgroup administrators cs /add 
# administrators(想要提升到的用户组) cs(想要提升到指定用户组的账户)

8.png

这里要注意一点,因为我们利用这条命令是讲指定用户转移到另外一个指定的用户组,所以,用户组的后面一定要加上s,不然,这串命令是无法被成功执行的。

在做完了这些操作之后,我们重新利用net user命令来查询一下我们创建的测试账户到底是什么权限。

9.png

从上图可以看到,现在我们创建的测试账户的权限,已经被成功的提升到了administrators也就是管理员权限。

在这个时候,我们就可以通过远程连接,并且利用我们创建的用户去登录这个服务器了。

而到这里,一次简单的webshell到命令执行再到远程桌面连接,就已经结束了。

10.png

11.png

最后,在这里给大家列总一下在这次入侵服务器中,我所使用的指令,以及另外的两个比较常用的命令。

net user # 查询当前服务器所有的账户

net user username # 查询指定用户的具体信息

net user username password /add # 创建一个新的账户,注意,密码设置最好选择数字+字母+特殊符号。

net localgroup administrators cs /add 
# administrators(想要提升到的用户组) cs(想要提升到指定用户组的账户)

net user user /del # 删除指定用户

quser # 查看当前服务器用户连接状态

logoff num # num指代标识符注销指定用户和服务器之间的连接,如果标识符为空,则注销当前连接,标识符可通过quser命令查看。

以下,是另外三种并没有在本次复现中用到的命令的效果图。

删除指定用户:

net user user /del # 删除指定用户

12.png

查看当前服务器用户连接状态:

quser # 查看当前服务器用户连接状态

14.png

注销指定用户和服务器之间的连接:

logoff num # num指代标识符注销指定用户和服务器之间的连接,如果标识符为空,则注销当前连接,标识符可通过quser命令查看。

15.png

0x02 总结

主要是记录一下学的情况,这次是在以了解服务器用户组权限为目的的必要基础命令和操作,欢迎指正,谢谢!

原文作者:Keefe

原文链接:后渗透基础-从上传WebShell到执行命令(复现)

版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可

Last Modified: August 11, 2019