近期对平台安全渗透测试中遇到有JAVA + mysql架构的网站,针对此架构我们正弦安全渗透工程师整理了下具体的漏洞检测方法和防护修复方法,很多像执行框架漏洞获取到系统权限,以及跨权限写入木马后门等等操作,希望大家在渗透测试的道路中发现更多的知识和经验。
在Python中,有两种格式化字符串的方式,在Python2的较低版本中,格式化字符串的方式为“这是一个% s"%,test",之后增加了格式的方式,语法为“这是一个{}“.format(& # 39;测试# 39;)或者,这是一个测试{}“.format(测试=& # 39;测试# 39;)
当格式化字符串由用户输入时,则可能会造成一些问题,下面是一个最简单的例子
,祝辞祝辞的在& # 39;类的{0}{0. __class__进行}& # 39;.format (42)
“类42 & lt;类& # 39;int # 39;在“
从上面这个简单的例子不难知道,当我们可以控制要格式的字符串时,则可以使用__init__/__globals__等属性读取一些比较敏感的值,甚至任意执行代码。
,
祝辞祝辞的在类(对象):
…一个=1
…b=2
…def __reduce__(自我):
…返回(子流程。Popen((& # 39;用于cmd . exe # 39;,),))
,祝辞祝辞的在cPickle.dumps (())
“csubprocess \ nPopen \ np1 \ n((& # 39;用于cmd . exe # 39; \ np2 \ ntp3 \ ntp4 \ nRp5 \ n !”
-
<李> PyYAML李>
<李> 李>元帅
<李>搁置李>
-
<李> eval/执行/编译李>
<李> dir/类型李>
<李>全局/当地人/var李>
<李> getattr/setattr李>
-
<李>最简单的思路是在已有的模块中导入,如果那个模块中已经进口可以利用的模块就可以使用了李>
<李>在父类中寻找可用的模块,最常见载荷是().__class__.__bases__ [0] .__subclasses__()或者用魔术方法获取全局作用域__init__.__func__.__globals__李>
<李>有些网站没有过滤泡模块,可以使用泡菜实现任意代码执行,生成有效载荷可以使用李>
<李>有的沙箱把相关的模块代码都被删除了,则可以使用libc中的函数,Python中调用一般可以使用ctypes或者cffi。李>
<李>“A"“B"==癆B"李>
Python官方给出了一些防御的建议
-
<李>使用Jython并尝试使用Java平台来锁定程序的权限李>
<李>使用fakeroot来避免李>
<李>使用一些rootjail的技术李>
-
<李> cve - 2016 - 7401 CSRF绕过李>
<李> cve - 2017 7233/7234开放重定向脆弱性李>
<李> cve - 2017 - 12794调试页面XSS 李>
-
<李> Nginx在为Django做反向代理时,静态文件目录配置错误会导致源码泄露。访问/静态. .会301年重定向到静态. .//李>
瓶默认使用客户端会话,使得会话可以被伪造
-
<李> os.popen李>
<李> os.system李>
<李> os.spawn李>
<李> os.fork李>
<李> os.exec李>
<李> popen2李>
<李> 李>命令
<李>子流程李>
<李>执行李>
<李> execfile李>
<李> eval李>
<李> timeit.sys李>
<李> timeit.timeit李>
<李> platform.os李>
<李> platform.sys李>
<李>平台。李>
<李> popen李>
<李> pty.spawn李>
<李> pty.os李>
<李> bdb.os李>
<李> cgi.sys李>
<李>…李>
-
<李> 李>模板
<李> subprocess32 李>
-
<李> 李>元帅
<李> PyYAML李>
<李>泡菜李>
<李> cPickle李>
<李>搁置李>
<李>公益诉讼李>
Java JVM是平台的核心,以机器代码来实现,为程序执行提供了所需的所有基本功能,例如字节码解析器,JIT编译器,垃圾收集器等。由于它是机器代码实现的,其同样受到二进制文件受到的攻击。
JCL是JVM自带的一个标准库,含有数百个系统类。默认情况下,所有系统类都是可信任的,且拥有所有的特权。