A-A+

python 原生socket发送HTTPS数据包 或 http数据包

2020年11月27日 17:30 汪洋大海 暂无评论 阅读 164 views 次

分享一个写扫描器和POC时的小技巧。

有时候有的漏洞需要一些特殊的数据包,比如说畸形的HTTP头、畸形的Multipart、畸形的chunk包等,此时用编程语言自己的HTTP库可能构造不出这种数据包,此时通常我们需要用原生socket发包,比如:

1
2
3
4
5
6
7
8
9
10
import socket
 
p = b'''GET /get?a=1 HTTP/1.1
Host: httpbin.org
User-Agent: raw-socket\x00\x01aaa
 
'''.replace(b'\n', b'\r\n')
with socket.create_connection(('52.22.188.80', '80'), timeout=5) as conn:
    conn.send(p)
    print(conn.recv(10240).decode())

实际情况下你还需要解析HTTP包,但我这里只是一个demo,运行后成功获取结果:

原生HTTP返回包


可见,httpbin.org忽略了User-Agent中\0后的内容。这样,我们用原生socket编写代码,发送了畸形数据包。

那么,如果对方使用了HTTPS,我们又如何发送原生数据包呢?

其实也很简单,HTTPS实际上就是原生socket外面套一层TLS,所以我们改改代码,访问badssl.com试试:

1
2
3
4
5
6
7
8
9
10
11
12
13
import ssl
import socket
 
context = ssl.create_default_context()
p = b'''GET / HTTP/1.1
Host: sha512.badssl.com
User-Agent: raw-socket
 
'''.replace(b'\n', b'\r\n')
with socket.create_connection(('sha512.badssl.com', 443), timeout=5) as conn:
    with context.wrap_socket(conn, server_hostname='sha512.badssl.com') as sconn:
        sconn.send(p)
        print(sconn.recv(10240).decode())

没有任何问题:

原生HTTPS返回包

之前经常看到网上很多人使用socket,还在使用最原始的方式,实际上Python包装了很多有价值的高层API,多多探索,提升你的编程能力。

还可以参考:
https://github.com/BugScanTeam/hackhttp
https://github.com/chaitin/xray

文章来源:https://mp.weixin.qq.com/s?__biz=MzA4MDU0NzY4Ng==&mid=2459419388&idx=1&sn=e444f48fa7cea5e3d54c4c63076ccac0&chksm=88c1f8f5bfb671e35f894ee107840e906f2b1d0202b845c5cfd01783b9fc597ce461f04db07d&mpshare=1&scene=1&srcid=1127FTHI3jEjdjIRGqrL7tgE&sharer_sharetime=1606467865856&sharer_shareid=7157c2b669dc895a73d61a5ef4df014e&key=5ecfa8a65e08b20772c3c9afec5ddb755ebf33c85386be832532ad043e74ff9d5e56462004b5f4afc3b5dacc07da1c311d564d91f4c9f76d61eb7b23f5adee77ec95c3f7d22dfaf1d05d71c4c64f6058192342217ef0f957769d3b14e281745af4f2ea8ee123afb27abaa59975187472a397fa5c733767c32a3ab14c9a460d43&ascene=1&uin=MjI3NjA4NTkyMQ%3D%3D&devicetype=Windows+10&version=62080079&lang=zh_CN&exportkey=ATIAAiSe%2BeSiYIelOHz3eRY%3D&pass_ticket=JkU1T1PU2EFsBPsT1Lg%2BwvEjKEWMGrQd9qcyuOkFMy2glimVrvFCfGPxo%2F50NA3u&wx_header=0

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

给我留言