инфраструктура 20165229 NetSec Exp9 веб-безопасности
Во-первых, обзор эксперимента
0.WebGoat подготовка
(а) SQL - инъекция атак
1. командных инъекций (Инъекция Command)
2. Числовой инъекции SQL (SQL Injection Числовой)
3. Журнал спуфинг (Записывать Подмена)
4. впрыскивание строки (String SQL Injection)
. 5 .LAB: инъекция SQL
6. Спинка база двери (бэкдоры базы данных)
7. цифровой Тип слепой инъекции (слепой числовая инъекции SQL)
8. слепой строка инъекции (строка слепой инъекции SQL)
(два) XSS нападение
1.Phishing с XSS
2. XSS атаки хранимой
атаки 3.Reflected XSS
(три) CSRF атаки
1.Cross Site Request подлог (CSRF)
2.CSRF Запрашивать обводной
Во-вторых, экспериментальное содержание
препараты 0.WebGoat
- Поскольку загрузка слишком медленно, я искал студентов, чтобы скопировать
webgoat-container-7.0.1-war-exec.jar
- Введите каталог файла, введите команду
java -jar webgoat-container-7.0.1-war-exec.jar
для запускаWebgoat
, в конце сообщения появляется:Starting ProtocolHandler ["http-bio-8080"]
Описание Open, вы можете просматриватьwebgoat
занять порт 8080. Примечание: Во время эксперимента терминал не может быть закрыт.
- Во входном браузере
http://localhost:8080/WebGoat
в интерфейсе Webgoat входа непосредственно с именем пользователя и пароль по умолчанию войти в систему .
(A) атаки инъекции SQL
- SQL-инъекций являются распространенным средством одного из хакеров базы данных для атаки. С развитием разработки приложений / B режиме S, использование этой модели программистам писать приложения все больше и больше. Однако, из-за уровень и опыт работы программиста неравномерно, значительная часть программистов, пишущих коды, нет легитимности ввода данных пользователя, чтобы определить риск безопасности приложения. Пользователи могут обращаться к базе данных коды, в соответствии с результатами возвращения программ, доступ к некоторым данным, он хочет знать, что называется SQL Injection, что инъекции SQL.
1. Команда впрыска (Command Injection)
- Цель: способность выполнять любые системные команды на целевом узле
Нажмите левую панель
Injection Flaws
->Command Injection
, щелкните правой кнопкой мыши флажок и выберите Проверить элементные обзор элементов страницы , чтобы изменить исходный код, нажмите на правую стрелку в синем ниже, отображается содержимое, дважды щелкнитеAccessControlMatrix.help
, добавляется в конце"& netstat -an & ipconfig"
.
Нажмите на верхней правой стороне коробки View, см использование сетевого порта и IP-адрес, атака была успешным.
2. Числовой инъекции SQL (Числовой SQL Injection)
- Цель: показать погодные условия.
- Нажмите
Injection Flaws
->Numeric SQL Injection
,
щелкните правой кнопкой мыши флажокColumbia
, выберитеInspect Element
элементы обзора страницы к значению исходного кода = «101» будет изменен, добавлен после того, как город номером 101or 1=1
. - идти успешную атаку
3. Вход обманывать (Log Подмена)
- Цель: Использовать имя пользователя для пользователя администратора успешно вошедшего на дисплее в журнале.
- Нажмите
Injection Flaws
->Log Spoofing
,
вUser Name
заливке сwebgoat%0d%0aLogin Succeeded for username: zkj20165229
помощью возврата каретки и перевода строки% 0A 0D% позволило две строки в журнале. - Пароль для значения по умолчанию, нажмите кнопку Login, вы можете увидеть Webgoat в строчных дисплеев Войти терпят неудачу, добавить свое собственное заявление zkj201652296 на следующей строке дисплея.
4. Строка впрыска (String SQL Injection)
- 目标:基于查询语句构造自己的SQL注入字符串,将所有信用卡信息显示出来。
- 点击
Injection Flaws
->String SQL Injection
,输入查询的用户名zkj' or 1=1--
,使用'
提前闭合""
,插入永真式1=1
,且--
注释掉后面的内容,这样就能select表里面的所有数据。
5.LAB: SQL Injection
- 目标:使用SQL注入绕过认证。
点击
Injection Flaws
->LAB:SQL Injection
,在密码框输入' or 1=1 --
,登录失败,会发现密码只有一部分输入,说明密码长度有限制。
右击
Password
,选择nspect Element
审查网页元素对可输入密码长度进行修改。
重新输入' or 1=1 --,登录成功。
(二)XSS攻击
Stored XSS Attacks
常见于论坛等留言、用户留言创建非法的消息内容,输入一段JavaScript脚本,其被保存在数据库中,任何用户在打开网页的时候,这个脚本就会被从数据库中取出来而运行,可以导致其他用户访问非预期的页面或内容。
点击
XSS
- >Stored XSS Attacks
,在Title中输入20165229
,留言板Message中输入<script>alert("20165229 attack succeed hhhhh!");</script>
。
(三)CSRF攻击
Cross Site Request Forgery(CSRF)
- CSRF通过伪装来自受信任用户的请求来利用受信任的网站。目标:向一个新闻组发送一封邮件,邮件中包含一张图片,这个图像的URL指向一个恶意请求。
点击
XSS
->Cross Site Request Forgery(CSRF)
,查看下方Parameters
中的scr
和menu
值为330
和900
。在
Message
框中输入
,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。其中语句中的&transferFunds=5229即转走的受害人的金额,宽高设置成1像素的目的是隐藏该图片。
- 点击Submit提交,在Message List中生成以Title命名的链接。点击该链接,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。
三、回答问题
(1)SQL注入攻击原理,如何防御
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
sql注入攻击是利用是指利用设计上的漏洞,在目标服务器上运行Sql语句以及进行其他方式的攻击,动态生成Sql语句时没有对用户输入的数据进行验证是Sql注入攻击得逞的主要原因。
比如登录过程,SQL语句一般为select id from users where username = '"+username +"' and password = '" + password +"'
,这里的username
和password
都是我们存取从web表单获得的数据。如果我们在表单中username
的输入框中输入' or 1=1--
,此时我们所要执行的sql语句就变成了select id from users where username = '' or 1=1-- and password = ''
。
对SQL注入攻击的防御,主要有:
关闭或删除不必要的交互式提交表单页面;
对漏洞注入点相关代码进行代码及SQL注入关键字的过滤,以规范代码安全性;
不要在服务器端放置备份的文件以免受到感染,或备份的文件含有漏洞,造成切入点
(2)XSS攻击的原理,如何防御
览器自身可以识别简单的XSS攻击字符串,从而阻止简单的XSS攻击;从根本上说,解决办法是消除网站的XSS漏洞,这就需要网站开发者运用转义安全字符等手段。
一个原则:不相信用户输入的任何数据!
(3)CSRF攻击原理,如何防御
改良站内 API 的设计。对于发布帖子这一类创建资源的操作,应该只接受 POST 请求,而 GET 请求应该只浏览而不改变服务器端资源。
使用“请求令牌”。首先服务器端要以某种策略生成随机字符串,作为令牌(token),保存在Session里。然后在发出请求的页面,把该令牌以隐藏域一类的形式,与其他信息一并发出。在接收请求的页面,把接收到的信息中的令牌与Session中的令牌比较,只有一致的时候才处理请求,否则返回 HTTP 403 拒绝请求或者要求用户重新登陆验证身份。