利用 multipart boundary 绕过 WAF 漕河泾小黑屋 3 years 9 months ago 通过 RFC 2231 协议自身绕过 WAF 的防护。本质上是利用了 WAF 和 服务端 的协议解析差异。
别想偷我源码:通用的针对源码泄露利用程序的反制(常见工具集体沦陷) Driver Tom's Blog 3 years 9 months ago 0x00 关于本文 是的没错我又去蹂躏安全工具了,和以前我单个单个地欺负不同,这次发现的攻击手段是通用的,可以通杀大部分源码泄露漏洞利用程序。 本文会包含常见泄露漏洞的原理介绍(Git/Svn),利用工具自身的安全风险分析,简单易懂的POC制作方式,针对常见工具的攻击测试,以及提升反制威力的方法及展望。0x01Git泄露:漏洞原理介绍 Git是什么大家应该都很清楚(不知道Git是啥的人多半是不肯来光临这个博客的) 有些开发人员直接把代码clone到服务器的web目录来部署,但是开发人员或许不知道的是,clone下来的不只是代码,还有一个.git目录,这个目录被叫做版本库。攻击者可以通过访问这个目录,解析其中的文件,dump整站源码。 想要更深入地理解Git泄露漏洞,了解攻击流程,就需要了解.git目录的结构 tree一下这个目录,发现内容如下 index文件中包含了这个项目中的各个文件的信息,包括文件路径和Git对象的对应的40位哈希值。在这里我们不需要对Git对象理解的很深入,只需要知道里面包含了文件内容,是让攻击者垂涎欲滴的东西就可以了。 想要拿到Git对象,就需要转去objects目录。objects目录存放了所有的git对象,对于一个git对象,40位哈希的前两位会作为目录名,而后面的38位会作为文件名,存在objects下面。举个例子,一个Git对象那个的hash是cb75d8439f004f41d5f85ffa5f8d017df395651a,那么它就会被存在cb/75d8439f004f41d5f85ffa5f8d017df395651a。 知道了这些信息之后,就可以知道Git泄露攻击是如何进行的了,首先攻击者访问index文件,解析后得到文件名和对象哈希。接着按着对象哈希一个一个去objects目录获取到Git对象,解析后得到文件。0x02 Git泄露利用工具的安全风险 显而易见的,手动解析index文件并去下载然后再去解析Git对象是一项烦人又重复的活,因此有大量的工具被开发出来解放黑客们的双手。这些工具可以将整个攻击流程自动化,自动下载项目的所有文件,并且重建整个项目的目录结构。 但是在这个过程中存在一个严重的安全风险,这些工具在重建项目的目录结构的时候,往往没有考虑到路径穿越风险,而是直接将目录连接起来,因此通过创建恶意的git目录可以在攻击者的磁盘中写入任意文件,实现远程代码执行!0x03 简单易懂的POC制作方式 直接用git工具制作POC是不可行的,它会提示文件在仓库之外 好在有个叫做GitPython的库不关心这个问题,因此可以用GitPython来生成POC。 首先在仓库外的某个目录放一个文件,该文件会写入到攻击者的电脑上的相同路径。 接着打开python,用GitPython将其加入项目中然后commit,注意,要用../../../(很多个../)加上文件的绝对路径的方式来加入。 在下图生成的POC中,POC只是为了证明可以写到非预期目录,只加了一个../ 在执行完了后,整个git项目的文件夹就成了蜜罐0x04 对常见工具的测试 为了试验该手段的通用性,使用常见工具对蜜罐进行测试,以文件是否成功写入到非预定目录为判断标准。 一个成功的例子如图,dumpall工具将tohacker.txt写到了预期目录192.168.208.190_None之外。 测试结果如下表所示工具名称工具地址攻击是否成功GitHackhttps://github.com/lijiejie/GitHack是GitHackhttps://github.com/BugScanTeam/GitHack是dumpallhttps://github.com/0xHJK/dumpall是GitHackerhttps://github.com/WangYihang/GitHacker是dvcs-ripperhttps://github.com/kost/dvcs-ripper否git-dumperhttps://github.com/arthaud/git-dumper是 在测试的工具中,除了dvcs-ripper外全部攻击成功(dvcs-ripper失败原因还没分析),证明了该反制手段的通用性0x05 Svn泄露原理 Svn和Git类似,也是一种版本管理工具。 有些开发人员在部署的时候偷懒,没有通过”export“的方式将代码导出,而是直接拷贝目录,导致下面的.svn文件夹也被拷贝了。(嗯,和Git泄露如出一辙啊) 和Git不同,Svn的泄露有两种可能的情况。 当Svn版本小于1.6的情况下(也有说1.7的,没试),.svn文件夹中的entries会以明文存储目录和文件信息。其中包含了文件名,这个时候访问/.svn/text-base/文件名-.svn-base就可以拿到文件。 当Svn版本更高的情况下,.svn文件夹中的entries不会包含目录和文件信息,攻击者首先需要访问/.svn/wc.db文件,这个文件是个sqlite3数据库,其中的Node表中包含了文件的信息,包括文件名和哈希等。在获取到这些信息后,访问/.svn/pristine/哈希的前两位/哈希.svn-base即可访问到文件。举个例子,有一个文件对应的哈希是a94a8fe5ccb19ba61c4c0873d391e982fbbd3,那其路径为/.svn/pristine/a9/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3.svn-base。0x06 简单易懂的POC制作方式 针对低版本的Svn,我抄袭了这里的格式,使得POC如下图所示。首先entries的开头为"10",表示自己是个低版本的Svn的文件,接着按照之前写Git的POC的方式写个恶意的文件路径,然后空行写个"file",以此表明上面写的路径是个文件,最后把文件放在对应的Web目录以便于扫描器去下载。 高版本的Svn有些复杂,于是我找了个网站来生成Svn项目,并用TortoiseSVN添加文件再checkout到目录中,这个时候就可以看到.svn目录了。接着再用SQLite编辑工具编辑目录中的wc.db中的Node表,更改文件目录为恶意路径。最后再如法炮制放置文件即可 0x07 对常见工具的测试 测试的方式和标准与测试Git泄露利用工具的标准一致,但是优先测试低版本的泄露,如果低版本的泄露无效再测试高版本的(人都是懒惰的),测试结果如下表所示 工具名称工具地址攻击是否成功svnExploithttps://github.com/admintony/svnExploit是SvnHackhttps://github.com/callmefeifei/SvnHack/是(必须放在根目录)Seay-Svnhttps://github.com/Introspelliam/tools/是dumpallhttps://github.com/0xHJK/dumpall是(只支持高版本)svn-extractorhttps://github.com/anantshri/svn-extractor是 (只支持高版本)dvcs-ripperhttps://github.com/kost/dvcs-ripper否(跑不起来且不想跑,perl写的东西没一个用着省心的) 在测试的工具中,除了dvcs-ripper外全部攻击成功(这玩意跑都跑不起来),证明了该反制手段的通用性0x08如何提升杀伤力的 如果只是在非预期的目录写一个文件的话并不能达成反制效果,因此有如下几种方法可以参考使用(未经测试仅供参考):对于类unix系统可以写入crontab,增加定时任务,反弹shell回来对于Windows系统可以写入开始菜单启动项,或者dll劫持可以把攻击工具的脚本给替换掉,下次执行就能上线 除此之外,可以通过发来的包的TTL值判断操作系统(Windows默认是128,Linux是64或者255),实现更精准的反制0x09展望 很显然,这种手法不只适用于Git/Svn泄露的利用程序,什么DS_STORE,Java任意文件下载利用,估计都跑不了。 DriverTom
再谈GPU的内存带宽 宋宝华 3 years 9 months ago 在先前的文章中《近距离看GPU计算(2)》,我们谈到GPU相比CPU有更大的内存带宽,此言不虚,这也是众核GPU有源源不断数据弹药供给,能够发挥强大算力的主要原因。如下表所示(GDDR和H... 21cnbao
Linux内核网络udp数据包发送(二)——UDP协议层分析 宋宝华 3 years 9 months ago 1. 前言本文分享了Linux内核网络数据包发送在UDP协议层的处理,主要分析了udp_sendmsg和udp_send_skb函数,并分享了UDP层的数据统计和监控以及socket发送队... 21cnbao
Linux内核网络UDP数据包发送(四)——Linux netdevice 子系统 宋宝华 3 years 9 months ago Linux内核网络UDP数据包发送系列:Linux内核网络UDP数据包发送(一)Linux内核网络UDP数据包发送(二)——UDP协议层分析Linux内核网络UDP数据包发送(三)——IP... 21cnbao
Linux内核网络UDP数据包发送(三)——IP协议层分析 宋宝华 3 years 9 months ago 1. 前言Linux内核网络 UDP 协议层通过调用ip_send_skb将 skb 交给 IP 协议层,本文通过分析内核 IP 协议层的关键函数来分享内核数据包发送在 IP 协议层的... 21cnbao
Linux内核网络udp数据包发送(一) 宋宝华 3 years 9 months ago 本系列文章1-4,来源于陈莉君老师公众号“Linux内核之旅”1. 前言本文首先从宏观上概述了数据包发送的流程,接着分析了协议层注册进内核以及被socket的过程,最后介绍了通过 sock... 21cnbao
一张A4纸攻破某AI人脸识别产品 - 我是小三 我是小三 3 years 9 months ago 一、人脸识别简介与应用场景 二、人脸识别框架分析 三、人脸识别的攻击面 四、攻击流程分析 五、总结 一、人脸识别简介与应用场景 1.1、什么是人脸识别 人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测 我是小三
exchagne默认配置缺陷,域内任意新增域用户 甲方安全建设 3 years 9 months ago 最近看AD一哥有讨论ex的默认配置错误的,还以为是acl提权。 早上测试了下,发现不是,还是很强的。任意 domain user 添加。应该还有其他组合拳玩法.
一张A4纸攻破某AI人脸识别产品 矛和盾的故事 3 years 9 months ago 人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术,通常也叫做人像识别、面部识别。
一张A4纸攻破某AI人脸识别产品 矛和盾的故事 3 years 9 months ago 人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术,通常也叫做人像识别、面部识别。
Akamai's Commitment to Reliability The Akamai Blog 3 years 9 months ago For more than 20 years, Akamai has worked very hard to earn the trust and confidence of our customers and partners by developing services that can be relied upon to be available and secure at all times. Tom Leighton