网络攻防学什么语言 最稳定安全的编程语言( 七 )


取证很重要 。时间、地点、IP、拨号账户、截屏、URL 地址等一定要有 。
可以跟劫持区域的电信运营商进行投诉反馈 。
如果投诉反馈无效 。直接去工信部投诉 。一般来说会加白你的域名 。
HTTP 劫持HTTP 劫持您可以这么理解 。「你打了一辆车想去商场吃饭 。结果司机跟你一路给你递小作坊的广告」 。HTTP 劫持主要是当用户访问某个站点的时候会经过运营商网络 。而不法运营商和黑产勾结能够截获 HTTP 请求返回内容 。并且能够篡改内容 。然后再返回给用户 。从而实现劫持页面 。轻则插入小广告 。重则直接篡改成钓鱼网站页面骗用户隐私 。能够实施流量劫持的根本原因 。是 HTTP 协议没有办法对通信对方的身份进行校验以及对数据完整性进行校验 。如果能解决这个问题 。则流量劫持将无法轻易发生 。所以防止 HTTP 劫持的方法只有将内容加密 。让劫持者无法破解篡改 。这样就可以防止 HTTP 劫持了 。
HTTPS 协议就是一种基于 SSL 协议的安全加密网络应用层协议 。可以很好的防止 HTTP 劫持 。这里有篇 文章 讲的不错 。HTTPS 在这就不深讲了 。后面有机会我会单独好好讲讲 HTTPS 。如果不想站点被 HTTP 劫持 。赶紧将你的站点全站改造成 HTTPS 吧 。
服务器漏洞服务器除了以上提到的那些大名鼎鼎的漏洞和臭名昭著的攻击以外 。其实还有很多其他的漏洞 。往往也很容易被忽视 。在这个小节也稍微介绍几种 。
越权操作漏洞如果你的系统是有登录控制的 。那就要格外小心了 。因为很有可能你的系统越权操作漏洞 。越权操作漏洞可以简单的总结为 「A 用户能看到或者操作 B 用户的隐私内容」 。如果你的系统中还有权限控制就更加需要小心了 。所以每一个请求都需要做 userid 的判断
以下是一段有漏洞的后端示意代码:
1 2 3 4 5 6 7// ctx 为请求的 context 上下文 let msgId = ctx.params.msgId; mysql.query( 'SELECT * FROM msg_table WHERE msg_id = ?', [msgId] );以上代码是任何人都可以查询到任何用户的消息 。只要有 msg_id 就可以 。这就是比较典型的越权漏洞 。需要如下这么改进一下:
1 2 3 4 5 6 7 8// ctx 为请求的 context 上下文 let msgId = ctx.params.msgId; let userId = ctx.session.userId; // 从会话中取出当前登陆的 userId mysql.query( 'SELECT * FROM msg_table WHERE msg_id = ? AND user_id = ?', [msgId, userId] );嗯 。大概就是这个意思 。如果有更严格的权限控制 。那在每个请求中凡是涉及到数据库的操作都需要先进行严格的验证 。并且在设计数据库表的时候需要考虑进 userId 的账号关联以及权限关联 。
目录遍历漏洞目录遍历漏洞指通过在 URL 或参数中构造 ../ 。./ 和类似的跨父目录字符串的 ASCII 编码、unicode 编码等 。完成目录跳转 。读取操作系统各个目录下的敏感文件 。也可以称作「任意文件读取漏洞」 。
目录遍历漏洞原理:程序没有充分过滤用户输入的 ../ 之类的目录跳转符 。导致用户可以通过提交目录跳转来遍历服务器上的任意文件 。使用多个.. 符号 。不断向上跳转 。最终停留在根 / 。通过绝对路径去读取任意文件 。
目录遍历漏洞几个示例和测试 。一般构造 URL 然后使用浏览器直接访问 。或者使用 Web 漏洞扫描工具检测 。当然也可以自写程序测试 。
1 2 3 4 5 6 7 8http://somehost.com/../../../../../../../../../etc/passwd http://somehost.com/some/path?file=../../Windows/system.ini # 借助 %00 空字符截断是一个比较经典的攻击手法 http://somehost.com/some/path?file=../../Windows/system.ini%00.js # 使用了 IIS 的脚本目录来移动目录并执行指令 http://somehost.com/scripts/..%5c../Windows/System32/cmd.exe?/c+dir+c:防御 方法就是需要对 URL 或者参数进行 ../ 。./ 等字符的转义过滤 。
物理路径泄漏物理路径泄露属于低风险等级缺陷 。它的危害一般被描述为「攻击者可以利用此漏洞得到信息 。来对系统进一步地攻击」 。通常都是系统报错 500 的错误信息直接返回到页面可见导致的漏洞 。得到物理路径有些时候它能给攻击者带来一些有用的信息 。比如说:可以大致了解系统的文件目录结构;可以看出系统所使用的第三方软件;也说不定会得到一个合法的用户名(因为很多人把自己的用户名作为网站的目录名) 。
防止这种泄漏的方法就是做好后端程序的出错处理 。定制特殊的 500 报错页面 。
源码暴露漏洞和物理路径泄露类似 。就是攻击者可以通过请求直接获取到你站点的后端源代码 。然后就可以对系统进一步研究攻击 。那么导致源代码暴露的原因是什么呢?基本上就是发生在服务器配置上了 。服务器可以设置哪些路径的文件才可以被直接访问的 。这里给一个 koa 服务器的例子 。正常的 koa 服务器可以通过 koa-static 中间件去指定静态资源的目录 。好让静态资源可以通过路径的路由访问 。比如你的系统源代码目录是这样的:

推荐阅读