当前位置: 首页 > news >正文

简单建网站网站开发 硬件环境

简单建网站,网站开发 硬件环境,centos nginx wordpress,手机app如何开发制作JSON#xff08;JavaScript Object Notation#xff09;是一种轻量级的数据交换格式#xff0c;常用于Web应用程序中的数据传输。在HTTP数据包信息传递时#xff0c;JSON扮演着非常正常的角色#xff0c;因为它是一种通用的数据格式#xff0c;可以被多种编程语言和应用程… JSONJavaScript Object Notation是一种轻量级的数据交换格式常用于Web应用程序中的数据传输。在HTTP数据包信息传递时JSON扮演着非常正常的角色因为它是一种通用的数据格式可以被多种编程语言和应用程序所支持。 当客户端向服务器发送HTTP请求时请求头中可以指定请求体的数据格式为JSON。服务器在接收到请求后可以解析JSON数据并进行相应的处理。同样地当服务器向客户端返回HTTP响应时响应头中可以指定响应体的数据格式为JSON。客户端可以解析JSON数据并进行相应的处理。 背景 我们平时遇到的 JSON 接口非常多但是 JSON 中的各种字段测试以及不同深度的 JSON 测试其实非常难自动化测试。在安全服务测试和漏洞挖掘中遇到这种情况大多数可能只能手动测试或者只测试少数几层。当然这个问题其实由来已久在一些场景下这种情况大多数通过堆人力来解决我们如何解决这个问题或者我们有没有一些更优秀的解决方案 我们以一个很经典的实际案例来说明这种情况如果一个数据包长这个样子GET / HTTP/1.1Host: www.example.comContent-Type: application/json; charsetUTF-8User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36{“abc”: 123,“foo”: “bar”,“obj”: {“deep1”: 1,“deep2”: “deepStr”,“depth3”: {“ccc”: 1,“ddd”: 1}}} 那么我们如何对这个数据包进行测试呢比如说我们的 payload 是{{payload}}那么我们希望获得如下结果{“abc”: {{payload}},“foo”: “bar”,“obj”: {“deep1”: 1,“deep2”: “deepStr”,“depth3”: {“ccc”: 1,“ddd”: 1}}} 甚至{“abc”: 123,“foo”: “bar”,“obj”: {“deep1”: {{payload}},“deep2”: “deepStr”,“depth3”: {“ccc”: 1,“ddd”: 1}}} 基础方法 先说结论吧我们在 Yaklang 的 fuzz 模块中实现了这样的变换可以递归深度遍历 JSON 的 Key/Value并且同时实现替换的功能。很简单地我们可以编写一段 Yaklang 代码很简单地实现这个功能 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YzJha1X9-1690876785375)(https://image.3001.net/images/20230616/1686898189_648c060dec98aafe4b582.png!small)] 熟悉 Yaklang Fuzz 模块的同学对上述的结果其实并不陌生实际上这个问题已经得到了很好的解决。但是往往渗透测试中遇到的 JSON 可并不是这么简单。 难度升级如果 JSON 内容是在 GET/POST 参数中呢 如果本身参数是a123b123keyvalue1obj{abc: 123, keyInQuery: ccc}这种情况呢我们再来看另一个数据包GET /file.php?a123b123keyvalue1obj%7B%22abc%22%3A123%2C%22keyInQuery%22%3A%22ccc%22%7D HTTP/1.1Host: www.example.comUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) … Chrome/83.0.4103.116那么这种情况其实就非常令人恐惧了。我们这个数据包中包含 4 个 GET 参数虽然表面上包含四个参数但是参数中有一个obj其实非常复杂他是被编码的并且还包含了abc和keyInQuery这两个隐藏参数。 也就是说上面这个数据包实际包含了 6 个参数1. GET 参数a2. GET 参数b3. GET 参数key4. GET 参数obj5. GET 参数嵌套 JSON 参数obj.abc6. GET 参数嵌套 JSON 参数obj.keyInQuery 一般来说我们可能只能测试到a, b, key, obj这四个参数并不能测试到obj.abc和obj.keyInQuery参数。如果遇到这种情况原有的方法可能就无法生效了那么我们如何解决呢 Show Me the CODEfreq fuzz.HTTPRequest(GET /file.php?a123b123keyvalue1obj%7B%22abc%22%3A123%2C%22keyInQuery%22%3A%22ccc%22%7D HTTP/1.1Host: www.example.comContent-Type: application/json; charsetUTF-8User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36)~for param in freq.GetGetQueryParams() {req param.Fuzz(““).GetFirstFuzzHTTPRequest()println(codec.DecodeUrl(req.GetRequestURI()))}/*/file.php?a123b123keyvalue1obj{“abc”:””,“keyInQuery”:“ccc”}/file.php?a123b123keyvalue1obj{“abc”:123,“keyInQuery”:}/file.php?a123b123keyvalue1obj/file.php?ab123keyvalue1obj{“abc”: 123, “keyInQuery”: “ccc”}/file.php?a123bkeyvalue1obj{“abc”: 123, “keyInQuery”: “ccc”}/file.php?a123b123key___________obj{“abc”: 123, “keyInQuery”: “ccc”}*/ 我们按上面描述的内容如果可以进行 payload 替换的话我们应该有 6 个参数需要替换通过fuzz模块中HTTPRequest构造一个模糊测试模版然后通过内置的获取GetQueryParams方法。使用获取到的参数调用 Fuzz 方法在每次 Fuzzing 后使用 GetFirstFuzzHTTPRequest 方法获取第一个 Fuzzing 后的 HTTP 请求并使用 DecodeUrl 方法解码请求 URI。最终使用 println 方法将解码后的请求 URI 打印出来。 最后我们获取到的结果非常明显 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yLKlVdEb-1690876785376)(https://image.3001.net/images/20230616/1686898494_648c073ebd20b26ca7f75.png!small)] 这两个参数已经可以成功被我们手动覆盖了因此我们可以尝试对这类的所有数据包进行很精密的测试了。 仿真测试 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0o8lSu3y-1690876785376)(https://image.3001.net/images/20230616/1686898522_648c075a503ac758af0ea.png!small)] 我们首先手造了一个/expr/injection的路由其中有三个参数我们把 b 参数中的内容作为 JSON 进行反序列化并且把 JSON 后对象的 “a” 参数取出来。然后把 “a” 的内容作为一个沙箱表达式进行执行。 我们对刚刚编写的靶场进行简单的测试 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nksx5xRF-1690876785376)(https://image.3001.net/images/20230616/1686898545_648c07718dcd9b8728283.png!small)] 发现只要有 b-json 参数的内容中的 a 为数值表达式的时候他的结果为运算结果。这种漏洞如何进行自动发现呢 全自动化测试 我们编写一个表达式注入的通用测试脚本freq fuzz.HTTPRequest(GET /expr/injection?b{a:1} HTTP/1.1Host: 127.0.0.1:8787)~for param in freq.GetGetQueryParams() {try {exprParams fuzz.FuzzCalcExpr()result : param.Fuzz(exprParams.expr).ExecFirst()~if exprParams.result in string(result.ResponseRaw) {println(“----------------------------------”)println(“----------------------------------”)println(“--------------表达式执行------------”)println(“----------------------------------”)println(“----------------------------------”)}} catch err {dump(err)}} 我们在这个脚本中需要测试表达式通过fuzz.FuzzCalcExpr生成一个减法(加性)表达式为了让表达式更加简单我们认为他是一个“日期表达式”类似2012-12-21这样的减法这样他的计算结果为1979。如果表达式执行了页面应该会有 1979 的字样。 我们执行上述内容[INFO] 2023-05-15 14:25:56 [http_pool:612] start to send to http://127.0.0.1:8787/expr/injection?b%7B%22a%22%3A%222011-03-9%22%7D(:0) (packet mode)----------------------------------------------------------------------------------表达式执行--------------------------------------------------------------------------------HTTP/1.1 200 OKDate: Mon, 15 May 2023 06:25:56 GMTContent-Type: text/plain; charsetutf-8Content-Length: 282-----------------ORIGIN PACKET---------------GET /expr/injection?b%7B%22a%22%3A%222011-03-9%22%7D HTTP/1.1Host: 127.0.0.1:8787-----------------Handled---------------a[]: last Stack Value is nil/undefinedb[{“a”:“2011-03-9”}]: 1999c[]: last Stack Value is nil/undefined[INFO] 2023-05-15 14:25:56 [http_pool:612] start to send to http://127.0.0.1:8787/expr/injection?b2018-05-9(:0) (packet mode)确实我们发送的数据包参数部分为b%7B%22a%22%3A%222011-03-9%22%7D解码后为b{a:2011-03-9}并且数据包中也有 “1999” 作为测试结果这很符合我们的测试要求。 我们的代码最精彩的部分在于没有写明测试的路径仅仅是写明了测试的原始数据包当然这个原始数据包的来源可以是任何地方比如 Yakit MITM 模块中。 当然选取了一个 JSON 中的表达式注入作为测试案例这个案例其实是非常具有代表性的他很难被正常的扫描器甚至启发式扫描算法检测到并且甚至作为手动测试的时候如果测试者忽略了这个小点也会漏掉甚至很多通用框架型的漏洞也具有这个特征。 核心原理 这个算法看起来非常 amazing但是他的核心原理其实并不复杂代码部分开源在 https://github.com/yaklang/yaklang 仓库中的如下位置1. common/mutate/…2. common/jsonpath/… 我们先用 JSON 对象的递归方法构建出它每个字段的 JSONPATH然后我们使用构造出的一组 JSONPATH 对数据进行 Replace。因为递归构建参数的原因并且 JSON 本身的数据是不存在环结构的因此我们只要递归结束就可以构建出所有的字段的 JSONPath 标记位置。 当每一个位置都可以被精确定位只需要每个位置依次替换就可以对任何位置的 JSON 进行替换了。 JSONPath 是一种用于在 JSON 数据中进行数据查询的语言。它类似于 XPath但是针对 JSON 格式的数据。使用 JSONPath 可以方便地从 JSON 数据中提取出所需要的数据非常适合用于 API 开发和数据分析等场景。例如可以使用 JSONPath 从 JSON 数据中提取出特定字段的值或者根据条件过滤出符合要求的数据。JSONPath 语法简洁易懂可以通过点号和方括号来访问 JSON 对象和数组中的元素。 在fuzz.HTTPRequest我们设计了一套链式 API 以达到模糊测试的目的这种模糊测试可以自动提取所有的参数我们寻找到 GET/POST 中参数的时候可以检查它参数中的值是否是 JSON如果是 JSON 的话可以采用上面提到的 JSONPath 标记法生成对应的可模糊测试的模版对象。这样就接入了我们已有的基础设施中。 我们把上面提到的所有技术实现开放在 YakVM 中就可以在 Yaklang 中直接使用到这一套组合算法并且它可以完美融合进 MITM 的测试过程和任何爬虫过程。 最后 分享一个快速学习【网络安全】的方法「也许是」最全面的学习方法 1、网络安全理论知识2天 ①了解行业相关背景前景确定发展方向。 ②学习网络安全相关法律法规。 ③网络安全运营的概念。 ④等保简介、等保规定、流程和规范。非常重要 2、渗透测试基础一周 ①渗透测试的流程、分类、标准 ②信息收集技术主动/被动信息搜集、Nmap工具、Google Hacking ③漏洞扫描、漏洞利用、原理利用方法、工具MSF、绕过IDS和反病毒侦察 ④主机攻防演练MS17-010、MS08-067、MS10-046、MS12-20等 3、操作系统基础一周 ①Windows系统常见功能和命令 ②Kali Linux系统常见功能和命令 ③操作系统安全系统入侵排查/系统加固基础 4、计算机网络基础一周 ①计算机网络基础、协议和架构 ②网络通信原理、OSI模型、数据转发流程 ③常见协议解析HTTP、TCP/IP、ARP等 ④网络攻击技术与网络安全防御技术 ⑤Web漏洞原理与防御主动/被动攻击、DDOS攻击、CVE漏洞复现 5、数据库基础操作2天 ①数据库基础 ②SQL语言基础 ③数据库安全加固 6、Web渗透1周 ①HTML、CSS和JavaScript简介 ②OWASP Top10 ③Web漏洞扫描工具 ④Web渗透工具Nmap、BurpSuite、SQLMap、其他菜刀、漏扫等 恭喜你如果学到这里你基本可以从事一份网络安全相关的工作比如渗透测试、Web 渗透、安全服务、安全分析等岗位如果等保模块学的好还可以从事等保工程师。薪资区间6k-15k。 到此为止大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗 想要入坑黑客网络安全的朋友给大家准备了一份282G全网最全的网络安全资料包免费领取 扫下方二维码免费领取 有了这些基础如果你要深入学习可以参考下方这个超详细学习路线图按照这个路线学习完全够支撑你成为一名优秀的中高级网络安全工程师 高清学习路线图或XMIND文件点击下载原文件 还有一些学习中收集的视频、文档资源有需要的可以自取 每个成长路线对应板块的配套视频 当然除了有配套的视频同时也为大家整理了各种文档和书籍资料工具并且已经帮大家分好类了。 因篇幅有限仅展示部分资料需要的可以【扫下方二维码免费领取】
http://www.hkea.cn/news/14552649/

相关文章:

  • 品牌产品网站怎么做济宁网站建设哪家好
  • 让别人做的网站不给源代码云南系统开发
  • 网站 成功因素品牌衣服商标图案大全
  • 做网店有哪些网站百度安装免费下载
  • 搜索引擎 网站推广做个人网页
  • 网站如何做用户的实名认证深圳最乱最穷的地方
  • 长沙网站建设论坛设计师招聘网站
  • 做网站530元wordpress 只搜索标题
  • 佛山顺德容桂做网站的公司传媒网站建设网
  • 腐女喜欢做的网站营销网站结构
  • 做网站的语言叫什么app网站开发协议
  • 做网站需要多少兆专线慧聪网
  • 建行业网站的必要性怎样看一个网站的信息吗
  • 网站快速排名优化报价微信 网站模板
  • 网站301在哪里做韩国电信 网站
  • wordpress主题整站wordpress get_categories
  • 重庆网站设计公司排名郑州网站建设中国建设建设银行
  • 福建网站建设制作wordpress 统计页面 来路域名
  • 龙岗网站建设百度推广竞价是什么意思
  • 电商网站建设实训报告淘宝店铺怎么引流推广
  • 贵阳网站建设建站系统可信赖的南昌网站制作
  • wordpress 直接拖拽式建站如何优化网站速度
  • 专门做网站的公司与外包公司网页设计与网站建设完全实用手册
  • 怎么建设一个响应式网站杭州百度百家号seo优化排名
  • 县区网站集约化建设公司注册地址变更需要多长时间
  • 网站设计有哪些html静态网页制作
  • wordpress视频网站模板下载wordpress 淘宝客排行榜主题
  • 校园网站网络文明建设有哪些网站是可以做会计题目的
  • 能免费建设网站吗文山做网站的地方
  • 网站的整体风格包括wordpress表结构写入不全