维持访问 WebShell

一般大马在管理员发现后后会被删除,上传一些隐蔽的一句话,或者功能简单的脚本。
如果有旁站的话,插入WebShell到旁站。一句话可以插入到某些重要文件中。
插入的时候最好加上判断,可防止报错

ASP

后缀名

绕过检测的方式

如果wscript.xxxxxx不能使用,可以使用classID调用,这里classID各个版本各有不同

一句话

一般一句话

编码一句话,不过还是没有去掉eval

使用JS编码

使用ScriptControl,这个没有仔细测试

url中输入

或者菜刀配置中写入

遍历目录

下载文件

执行命令

自己上传cmd的话这样写

删除文件

重命名文件

移动文件

复制文件

上传文件Scripting.FileSystemObject

上传文件ADODB.Stream

JSP

绕过检测的方式

一句话

这个JSP的一句话比较恐怖

遍历目录

读取文件

执行命令

上传文件

上传的本地页面

PHP

后缀名

一句话

普通一句话

容错一句话,@是容错符,这里注意一点,使用assert的时候最好使用@,不然会爆一个Warning

变量名做函数一句话
编码后的一句话,这是使用php变量可以做函数名这个特性,eval是不可变函数,不过assert可以

简单的形式

复杂的形式,大括号括起来代表变量的意思,里面的1-2-5做了运算其实是-6

这里就会有各种自由发挥了,大胆发挥想象力各种各样的shell就出现了

比如这种

另一种变形,不过这个菜刀连接的话需要在配置中写入a=assert

不使用<?的一句话

使用可执行函数的函数的一句话
php中有一些函数可以吧一个自定义函数当做回调函数比如array_map()

把函数名当做字符串参数传递的时候,自然就可以随意编码

文件包含伪装一句话

首先可以使用文件包含对一句话进行伪装

也利用了apche服务器的错误日志文件,当访问一个不存在的连接时,日志中会记录下这样的一句话。

先在文件中插入

然后使用一句话当做地址访问页面,让浏览器在log中保存一句话,注意这里浏览器会自动将一句话进行编码再提交,这样的话时不能执行的

使用curl来达成访问

之后吧log的地址当做参数传入即可,这里log位置须自行查找。

这样会吧log文件全部包含并显示,比较明显,如果文件比较大会很慢。

而且如果第一次插入的PHP语句有错,那么后面再插入的便都不能执行了。

极度变态的一句话

有一些走极端的外国人,非要弄不包含字母和数字写shell极度自虐。

主要技术就是php中array被强转成string的时候会变成“array”,

字符之间可以进行位运算。

+””会被解析成0,猜测是php遇到加号会把结果转成int型,undefine value会被解析成0

这样这位外国大神就得到了一个没有字符的shell

经过另一位大神的改进去掉了数字

上面的太复杂?这是概念版

命令执行

php能执行命令的函数有不少,在 安全模式下,只有在特定目录中的外部程序才可以被执行,对其它程序的调用将被拒绝。这个目录可以在php.ini文件中用 safe_mode_exec_dir指令
system()

可以直接输出命令执行结果

exec()

只返回命令的最后一行,可以重载两个函数分别是结果和执行状态。

passthru()

和system差不多的用法,直接输出

popen()

这个函数可以可以建立一个可以互交的命令,把命令当做一个文件句柄打开,往里面读写

点号执行命令大法

波浪线下面那个键括起来的字符串可以当命令执行。

ASPX

一句话

普通一句话

编码一句话,此方法可能不靠谱

上传文件

后门

下载者

JS脚本写的下载者,需要执行命令的权限

VPN

SSH

突破内网

端口转发与反弹连接

这里还有各种环境下的方法,非常牛逼

Windows LCX端口转发

windows下的端口转发比较简单,只需要lcx就可以了。

Linux反弹连接

Linux下有自带的NC,可是做了功能的阉割没有 -e的选项

不能直接使用

不过可以这样利用

mknod只有在root权限下才可以使用,如果权限不够的话可以换成

Linux端口映射

使用SSH应该可以,不过没有仔细研究

收集信息与开启服务

Windows

开启服务

3389

允许3389外连

修改3389端

系统信息

查看系统版本信息

查看系统详细信息,包括补丁版本

查看账户登录情况

敏感目录

Linux

开启服务

判断SSH

版本信息

查看内核版本

查看系统版本

管理员密码

获取管理员HasH

痕迹清理

Windows

日志和警报

开始 – 程序 – 管理工具 – 计算机管理 – 系统工具-事件查看器

开始 – 程序 – 管理工具 – 计算机管理 – 系统工具-性能日志和警报

文件日志

清除这些日志时,要停掉相应的服务,要不然会出现文件在被另一个程序使用的情况。

比如

不过守护安全日志和系统日志的服务是停不掉的,我们可以通过计算机管理-连接一台远程计算机来删除它们

安全日志文件

系统日志文件

应用程序日志文件

Internet信息服务FTP日志默认位置,默认每天一个日志

Internet信息服务WWW日志默认位置,默认每天一个日志

Scheduler服务日志默认位置

注册表日志

日志存放的目录,可以手动修改,路径存放于注册表中。

防火墙软件日志

这个见仁见智,逮住一通猛删就好。

MSSQL日志

这样可以查到数据库文件以及其备份文件存放的地方

每个数据库都有一个同名LDF文件,查看方法是这样,可查看到数据库具体操作的记录

1 – 更多信息plus flags, tags, row length
2 – 非常详细的信息plus object name, index name,page id, slot id
3 – 每种操作的全部信息
4 – 每种操作的全部信息加上该事务的16进制信息
删除这个LDF方法,就是把这个数据库分离,然后删除LDF文件,再附加回来就好了。
有风险,慎用。

MySQL日志

Mysql的Log文件是以二进制方式存储的,不能直接打开。
查看需借助mysqlbinlog这个工具。

删除的话很简单的执行一下,即可

Apache日志

Apache的日志分为两种,访问日志和错误日志,分别叫做access.log error.log

存放位置不固定,路径定义在httpd.conf文件里,其中可以设置记录的等级

httpd.conf文件一般在,这两个地方

Linux

history

其他

 

作者:wangyi_lin